From cb3588782cb93e089419c6875e464a9c48da0249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20de=20Juvigny?= Date: Thu, 20 Apr 2023 12:24:55 +0200 Subject: [PATCH] Use custom field input size in admin --- .../pages/EditSettingsView/index.js | 14 +++++++++++++- .../pages/EditSettingsView/reducer.js | 10 ++++++++-- .../server/services/utils/configuration/layouts.js | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/index.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/index.js index 77c3af9a47..28e08bf15f 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/index.js @@ -9,7 +9,13 @@ import flatMap from 'lodash/flatMap'; import isEqual from 'lodash/isEqual'; import get from 'lodash/get'; import set from 'lodash/set'; -import { useNotification, useTracking, ConfirmDialog, Link } from '@strapi/helper-plugin'; +import { + useNotification, + useTracking, + useCustomFields, + ConfirmDialog, + Link, +} from '@strapi/helper-plugin'; import { useHistory } from 'react-router-dom'; import { Main, @@ -52,6 +58,11 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd const modelName = get(mainLayout, ['info', 'displayName'], ''); const attributes = get(modifiedData, ['attributes'], {}); const fieldSizes = useSelector(selectFieldSizes); + const customFieldsRegistry = useCustomFields(); + console.log('registry', customFieldsRegistry.getAll()); + + // TODO: find out why logs don't show on port 8000 + // TODO: find out why custom fields registry is empty const entryTitleOptions = Object.keys(attributes).filter((attr) => { const type = get(attributes, [attr, 'type'], ''); @@ -322,6 +333,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd type: 'ON_ADD_FIELD', name: field, fieldSizes, + getCustomField: customFieldsRegistry.get, }); }} onRemoveField={(rowId, index) => { diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js index 6b79791202..d9cad8c5f8 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js @@ -30,8 +30,14 @@ const reducer = (state = initialState, action) => } case 'ON_ADD_FIELD': { const newState = cloneDeep(state); - const type = get(newState, ['modifiedData', 'attributes', action.name, 'type'], ''); - const size = action.fieldSizes[type]?.default ?? DEFAULT_FIELD_SIZE; + const attribute = get(newState, ['modifiedData', 'attributes', action.name], {}); + + // Get the default size, checking custom fields first, then the type and generic defaults + const size = + action.fieldSizes[attribute?.customField]?.default ?? + action.fieldSizes[attribute?.type]?.default ?? + DEFAULT_FIELD_SIZE; + const listSize = get(newState, layoutPathEdit, []).length; const actualRowContentPath = [...layoutPathEdit, listSize - 1, 'rowContent']; const rowContentToSet = get(newState, actualRowContentPath, []); diff --git a/packages/core/content-manager/server/services/utils/configuration/layouts.js b/packages/core/content-manager/server/services/utils/configuration/layouts.js index 983366b162..03ce8d2854 100644 --- a/packages/core/content-manager/server/services/utils/configuration/layouts.js +++ b/packages/core/content-manager/server/services/utils/configuration/layouts.js @@ -25,7 +25,7 @@ const getDefaultFieldSize = (attribute) => { if (attribute.customField) { const customField = strapi.container.get('custom-fields').get(attribute.customField); if (customField.inputSize) { - return customField.inputSize; + return customField.inputSize.default; } }