Use custom field input size in admin

This commit is contained in:
Rémi de Juvigny 2023-04-20 12:24:55 +02:00
parent 5942cce591
commit cb3588782c
3 changed files with 22 additions and 4 deletions

View File

@ -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) => {

View File

@ -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, []);

View File

@ -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;
}
}