@strapi/content-manager 5.58.0 → 5.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ConfigurationForm/Fields.js +4 -3
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +4 -3
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js +2 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs +2 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +8 -8
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +8 -8
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js +2 -1
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs +2 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +8 -6
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +8 -6
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -4
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -4
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +5 -4
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +5 -4
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +3 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +3 -3
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +3 -3
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -3
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs +3 -3
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +2 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs +2 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +73 -13
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +74 -14
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +4 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +12 -10
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +12 -10
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +2 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +2 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.js +68 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.js.map +1 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs +64 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs.map +1 -0
- package/dist/admin/preview/components/PreviewHeader.js +3 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +3 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js +2 -1
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs +2 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/utils/getPreviewUrlStatus.js +17 -0
- package/dist/admin/preview/utils/getPreviewUrlStatus.js.map +1 -0
- package/dist/admin/preview/utils/getPreviewUrlStatus.mjs +15 -0
- package/dist/admin/preview/utils/getPreviewUrlStatus.mjs.map +1 -0
- package/dist/admin/services/relations.js +2 -2
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs +2 -2
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +1 -1
- package/dist/admin/src/history/components/VersionInputRenderer.d.ts +3 -1
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -0
- package/dist/admin/src/pages/ListView/utils/applyAttributeRenames.d.ts +12 -0
- package/dist/admin/src/preview/utils/getPreviewUrlStatus.d.ts +6 -0
- package/dist/admin/translations/eu.json.js +3 -3
- package/dist/admin/translations/eu.json.mjs +3 -3
- package/dist/admin/translations/gu.json.js +4 -4
- package/dist/admin/translations/gu.json.mjs +4 -4
- package/dist/admin/translations/hi.json.js +9 -9
- package/dist/admin/translations/hi.json.mjs +9 -9
- package/dist/admin/translations/ml.json.js +6 -6
- package/dist/admin/translations/ml.json.mjs +6 -6
- package/dist/admin/translations/sa.json.js +10 -10
- package/dist/admin/translations/sa.json.mjs +10 -10
- package/dist/server/controllers/relations.js +48 -16
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +49 -17
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/history/services/history.js +1 -1
- package/dist/server/history/services/history.js.map +1 -1
- package/dist/server/history/services/history.mjs +1 -1
- package/dist/server/history/services/history.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/mcp/schemas/filters-schema.js +10 -2
- package/dist/server/mcp/schemas/filters-schema.js.map +1 -1
- package/dist/server/mcp/schemas/filters-schema.mjs +10 -2
- package/dist/server/mcp/schemas/filters-schema.mjs.map +1 -1
- package/dist/server/preview/controllers/validation/preview.js +1 -1
- package/dist/server/preview/controllers/validation/preview.js.map +1 -1
- package/dist/server/preview/controllers/validation/preview.mjs +2 -2
- package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/register.js +6 -0
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +6 -0
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/configuration/rename-fields.js +68 -0
- package/dist/server/services/configuration/rename-fields.js.map +1 -0
- package/dist/server/services/configuration/rename-fields.mjs +66 -0
- package/dist/server/services/configuration/rename-fields.mjs.map +1 -0
- package/dist/server/services/document-metadata.js +1 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +1 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/utils/configuration/attribute-renames.js +164 -0
- package/dist/server/services/utils/configuration/attribute-renames.js.map +1 -0
- package/dist/server/services/utils/configuration/attribute-renames.mjs +161 -0
- package/dist/server/services/utils/configuration/attribute-renames.mjs.map +1 -0
- package/dist/server/services/utils/configuration/attributes.js +12 -12
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs +12 -12
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -0
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration/rename-fields.d.ts +15 -0
- package/dist/server/src/services/configuration/rename-fields.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attribute-renames.d.ts +57 -0
- package/dist/server/src/services/utils/configuration/attribute-renames.d.ts.map +1 -0
- package/dist/shared/contracts/content-types.d.ts +5 -0
- package/dist/shared/contracts/content-types.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -37,6 +37,7 @@ function _interopNamespace(e) {
|
|
|
37
37
|
|
|
38
38
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
39
39
|
|
|
40
|
+
const EMPTY_METADATAS = {};
|
|
40
41
|
const GRID_COLUMNS = 12;
|
|
41
42
|
/* -------------------------------------------------------------------------------------------------
|
|
42
43
|
* Drag and Drop
|
|
@@ -86,20 +87,20 @@ const SortableItem = ({ id, children })=>{
|
|
|
86
87
|
}))
|
|
87
88
|
}));
|
|
88
89
|
};
|
|
89
|
-
const Fields = ({ attributes, fieldSizes, components, metadatas =
|
|
90
|
+
const Fields = ({ attributes, fieldSizes, components, metadatas = EMPTY_METADATAS })=>{
|
|
90
91
|
const { formatMessage } = reactIntl.useIntl();
|
|
91
92
|
const layout = strapiAdmin.useForm('Fields', (state)=>state.values.layout ?? []);
|
|
92
93
|
const onChange = strapiAdmin.useForm('Fields', (state)=>state.onChange);
|
|
93
94
|
const addFieldRow = strapiAdmin.useForm('Fields', (state)=>state.addFieldRow);
|
|
94
95
|
const removeFieldRow = strapiAdmin.useForm('Fields', (state)=>state.removeFieldRow);
|
|
95
|
-
const existingFields = layout.
|
|
96
|
+
const existingFields = new Set(layout.flatMap((row)=>row.children.map((field)=>field.name)));
|
|
96
97
|
/**
|
|
97
98
|
* Get the fields that are not already in the layout
|
|
98
99
|
* But also check that they are visible before we give users
|
|
99
100
|
* the option to display them. e.g. `id` is not visible.
|
|
100
101
|
*/ const remainingFields = Object.entries(metadatas).reduce((acc, current)=>{
|
|
101
102
|
const [name, { visible, ...field }] = current;
|
|
102
|
-
if (!existingFields.
|
|
103
|
+
if (!existingFields.has(name) && visible === true) {
|
|
103
104
|
const type = attributes[name]?.type;
|
|
104
105
|
const size = type ? fieldSizes[type] : GRID_COLUMNS;
|
|
105
106
|
acc.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fields.js","sources":["../../../../admin/src/components/ConfigurationForm/Fields.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useDroppable, DndContext, UniqueIdentifier, DragOverlay } from '@dnd-kit/core';\nimport { arraySwap, SortableContext, useSortable, rectSwappingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useField, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Modal,\n Box,\n Flex,\n Grid,\n IconButton,\n IconButtonComponent,\n Typography,\n Link,\n Menu,\n} from '@strapi/design-system';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\nconst GRID_COLUMNS = 12;\n\n/* -------------------------------------------------------------------------------------------------\n * Drag and Drop\n * -----------------------------------------------------------------------------------------------*/\n\nconst DroppableContainer = ({\n id,\n children,\n}: {\n id: string;\n children: (props: ReturnType<typeof useDroppable>) => React.ReactNode;\n}) => {\n const droppable = useDroppable({\n id,\n });\n\n return children(droppable);\n};\n\nexport const SortableItem = ({ id, children }: { id: string; children: React.ReactNode }) => {\n const { attributes, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n // Avoid any scaling animations which can visually \"squish\" or\n // \"stretch\" neighbouring cards in mixed-width grids (4/8/12 cols).\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n height: '100%',\n opacity: isDragging ? 0.6 : 1,\n outlineOffset: 2,\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n attributes: {\n [key: string]: FieldProps['attribute'];\n };\n fieldSizes: Record<string, number>;\n components: EditLayout['components'];\n}\n\n/**\n * Compute uids and formName for drag and drop items for the incoming layout\n */\nconst createDragAndDropContainersFromLayout = (layout: ConfigurationFormData['layout']) => {\n return layout.map((row, containerIndex) => ({\n ...row,\n // Use unique ids for drag and drop items\n dndId: `container-${containerIndex}`,\n children: row.children.map((child, childIndex) => ({\n ...child,\n dndId: `container-${containerIndex}-child-${childIndex}`,\n\n // The formName must be recomputed each time an item is moved\n formName: `layout.${containerIndex}.children.${childIndex}`,\n })),\n }));\n};\n\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => (state.values as ConfigurationFormData).layout ?? []\n );\n\n const onChange = useForm('Fields', (state) => state.onChange);\n const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n const existingFields = layout.map((row) => row.children.map((field) => field.name)).flat();\n\n /**\n * Get the fields that are not already in the layout\n * But also check that they are visible before we give users\n * the option to display them. e.g. `id` is not visible.\n */\n const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n const [name, { visible, ...field }] = current;\n\n if (!existingFields.includes(name) && visible === true) {\n const type = attributes[name]?.type;\n const size = type ? fieldSizes[type] : GRID_COLUMNS;\n\n acc.push({\n ...field,\n label: field.label ?? name,\n name,\n size,\n });\n }\n\n return acc;\n }, []);\n\n const handleRemoveField =\n (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n () => {\n if (layout[rowIndex].children.length === 1) {\n removeFieldRow(`layout`, rowIndex);\n } else {\n onChange(`layout.${rowIndex}.children`, [\n ...layout[rowIndex].children.slice(0, fieldIndex),\n ...layout[rowIndex].children.slice(fieldIndex + 1),\n ]);\n }\n };\n\n const handleAddField = (field: Field) => () => {\n addFieldRow('layout', { children: [field] });\n };\n\n const [containers, setContainers] = React.useState(() =>\n createDragAndDropContainersFromLayout(layout)\n );\n type Container = (typeof containers)[number];\n const [activeDragItem, setActiveDragItem] = React.useState<Container['children'][number] | null>(\n null\n );\n\n /**\n * Finds either the parent container id or the child id within a container\n */\n function findContainer(id: UniqueIdentifier, containersAsDictionary: Record<string, Container>) {\n // If the id is a key, then it is the parent container\n if (id in containersAsDictionary) {\n return id;\n }\n\n // Otherwise, it is a child inside a container\n return Object.keys(containersAsDictionary).find((key) =>\n containersAsDictionary[key].children.find((child) => child.dndId === id)\n );\n }\n\n /**\n * Gets an item from a container based on its id\n */\n const getItemFromContainer = (id: UniqueIdentifier, container: Container) => {\n return container.children.find((item) => id === item.dndId);\n };\n\n /**\n * Gets the containers as dictionary for quick lookup\n */\n const getContainersAsDictionary = () => {\n return Object.fromEntries(containers.map((container) => [container.dndId, container]));\n };\n\n /**\n * Recomputes the empty space in the grid\n */\n const createContainersWithSpacers = (layout: typeof containers) => {\n return layout\n .map((row) => ({\n ...row,\n children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n }))\n .filter((row) => row.children.length > 0)\n .map((row) => {\n const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n if (totalSpaceTaken < GRID_COLUMNS) {\n const [spacerKey] = generateNKeysBetweenImpl(\n row.children.at(-1)?.__temp_key__,\n undefined,\n 1\n );\n\n return {\n ...row,\n children: [\n ...row.children,\n {\n name: TEMP_FIELD_NAME,\n size: GRID_COLUMNS - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n };\n\n /**\n * When layout changes (e.g. when a field size is changed or the containers are reordered)\n * we need to update the ids and form names\n */\n React.useEffect(() => {\n const containers = createDragAndDropContainersFromLayout(layout);\n setContainers(containers);\n }, [layout, setContainers]);\n\n return (\n <DndContext\n onDragStart={(event) => {\n const containersAsDictionary = getContainersAsDictionary();\n\n const activeContainer = findContainer(event.active.id, containersAsDictionary);\n\n if (!activeContainer) return;\n\n const activeItem = getItemFromContainer(\n event.active.id,\n containersAsDictionary[activeContainer]\n );\n\n if (activeItem) {\n setActiveDragItem(activeItem);\n }\n }}\n onDragOver={({ active, over }) => {\n const containersAsDictionary = getContainersAsDictionary();\n const activeContainer = findContainer(active.id, containersAsDictionary);\n const overContainer = findContainer(over?.id ?? '', containersAsDictionary);\n const activeContainerIndex = containers.findIndex(\n (container) => container.dndId === activeContainer\n );\n const overContainerIndex = containers.findIndex(\n (container) => container.dndId === overContainer\n );\n\n if (!activeContainer || !overContainer) {\n return;\n }\n\n const draggedItem = getItemFromContainer(\n active.id,\n containersAsDictionary[activeContainer]\n );\n const overItem = getItemFromContainer(\n over?.id ?? '',\n containersAsDictionary[overContainer]\n );\n const overIndex = containersAsDictionary[overContainer].children.findIndex(\n (item) => item.dndId === over?.id\n );\n const activeIndex = containersAsDictionary[activeContainer].children.findIndex(\n (item) => item.dndId === active.id\n );\n\n if (!draggedItem) return;\n\n // Handle a full width field being dragged\n if (draggedItem?.size === GRID_COLUMNS) {\n // Swap the items in the containers\n const update = produce(containers, (draft) => {\n draft[activeContainerIndex].children = containers[overContainerIndex].children;\n draft[overContainerIndex].children = containers[activeContainerIndex].children;\n });\n setContainers(update);\n return;\n }\n\n /**\n * Handle an item being dragged from one container to another,\n * the item is removed from its current container, and then added to its new container\n * An item can only be added in a container if there is enough space\n */\n const update = produce(containers, (draft) => {\n draft[activeContainerIndex].children = draft[activeContainerIndex].children.filter(\n (item) => item.dndId !== active.id\n );\n\n const targetChildren = draft[overContainerIndex].children;\n const spaceTaken = targetChildren.reduce((acc, curr) => {\n if (curr.name === TEMP_FIELD_NAME) {\n return acc;\n }\n\n return acc + curr.size;\n }, 0);\n const isNotEnoughSpace = spaceTaken + draggedItem.size > GRID_COLUMNS;\n const canSwapSameSizeItem =\n overItem &&\n overItem.name !== TEMP_FIELD_NAME &&\n overItem.size === draggedItem.size &&\n activeIndex !== -1 &&\n overIndex !== -1;\n const canCreateNewRowForItem =\n activeContainerIndex !== overContainerIndex &&\n GRID_COLUMNS - spaceTaken < draggedItem.size;\n const isHoveringOverSpacer = overItem?.name === TEMP_FIELD_NAME;\n\n /**\n * Not enough space in the hovered row\n *\n * We still want:\n * - ability to swap items of the same size\n * - ability to create a single extra row to host the dragged item\n * when surrounding rows are full\n */\n if (isNotEnoughSpace) {\n // Try a simple swap when target item is of the same size\n if (canSwapSameSizeItem) {\n const sourceChildren = draft[activeContainerIndex].children;\n\n // Put the hovered item back where the dragged item came from\n sourceChildren.splice(activeIndex, 0, overItem);\n\n // Swap the hovered item with the dragged one in the target row\n const draftOverIndex = targetChildren.findIndex(\n (item) => item.dndId === overItem.dndId\n );\n\n if (draftOverIndex !== -1) {\n targetChildren.splice(draftOverIndex, 1, draggedItem);\n }\n\n return;\n }\n\n // If there is absolutely no space left in the target row and the\n // dragged item comes from a different row, add it to a new row\n if (canCreateNewRowForItem) {\n // Default: insert a new row after the row being hovered (between that row and the\n // next). For row 0, use index 0 instead so fields that are not full-width can still\n // be moved above the first row—there is no separate drop area above it in the UI.\n const insertIndex = overContainerIndex === 0 ? 0 : overContainerIndex + 1;\n\n /**\n * When inserting *after* the hovered row, reuse the following row if it only\n * contains spacers. Skip when inserting at index 0 — draft[0] is the hovered row.\n */\n if (insertIndex > overContainerIndex) {\n const existingRow = draft[insertIndex];\n\n if (existingRow) {\n const nonTempChildren = existingRow.children.filter(\n (child) => child.name !== TEMP_FIELD_NAME\n );\n const isNextRowEmpty = nonTempChildren.length === 0;\n\n // If the row directly after is empty (only spacers), reuse it\n // instead of creating yet another row.\n if (isNextRowEmpty) {\n existingRow.children = [draggedItem];\n return;\n }\n }\n }\n\n const newContainerPrototype = draft[overContainerIndex];\n\n // Using draft.length directly can collide with an existing container id\n // (e.g. after rows were removed), causing React key conflicts and flicker.\n const findFreeContainerId = (i: number): string =>\n containersAsDictionary[`container-${i}`]\n ? findFreeContainerId(i + 1)\n : `container-${i}`;\n const newContainerId = findFreeContainerId(draft.length);\n\n draft.splice(insertIndex, 0, {\n ...newContainerPrototype,\n dndId: newContainerId,\n children: [draggedItem],\n });\n\n return;\n }\n }\n\n // There is enough room in the target row\n if (isHoveringOverSpacer) {\n // We are over an invisible spacer, replace it with the dragged item\n targetChildren.splice(overIndex, 1, draggedItem);\n return;\n }\n\n // There is room for the item in the container, drop it\n targetChildren.splice(overIndex, 0, draggedItem);\n });\n\n setContainers(update.filter((container) => container.children.length > 0));\n }}\n onDragEnd={(event) => {\n const { active, over } = event;\n const { id } = active;\n const overId = over?.id;\n const containersAsDictionary = getContainersAsDictionary();\n const activeContainer = findContainer(id, containersAsDictionary);\n const overContainer = findContainer(overId!, containersAsDictionary);\n\n if (!activeContainer || !overContainer) {\n return;\n }\n\n const activeIndex = containersAsDictionary[activeContainer].children.findIndex(\n (children) => children.dndId === id\n );\n const overIndex = containersAsDictionary[overContainer].children.findIndex(\n (children) => children.dndId === overId\n );\n\n const movedContainerItems = produce(containersAsDictionary, (draft) => {\n if (\n activeIndex >= 0 &&\n overIndex >= 0 &&\n activeIndex !== overIndex &&\n activeContainer === overContainer\n ) {\n // Move items around inside their own container\n draft[activeContainer].children = arraySwap(\n draft[activeContainer].children,\n activeIndex,\n overIndex\n );\n }\n });\n\n // Remove properties the server does not expect before updating the form\n const updatedContainers = Object.values(movedContainerItems);\n const updatedContainersWithSpacers = createContainersWithSpacers(\n updatedContainers\n ) as typeof containers;\n const updatedLayout = updatedContainersWithSpacers.map(\n ({ dndId: _dndId, children, ...container }) => ({\n ...container,\n children: children.map(({ dndId: _dndId, formName: _formName, ...child }) => child),\n })\n );\n\n // Update the layout\n onChange('layout', updatedLayout);\n setActiveDragItem(null);\n }}\n >\n <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: getTranslation('containers.list.displayedFields'),\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'containers.SettingPage.editSettings.description',\n defaultMessage: 'Drag & drop the fields to build the layout',\n })}\n </Typography>\n </Flex>\n <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {containers.map((container, containerIndex) => (\n <SortableContext\n key={container.dndId}\n id={container.dndId}\n items={container.children.map((child) => ({ id: child.dndId }))}\n strategy={rectSwappingStrategy}\n >\n <DroppableContainer id={container.dndId}>\n {({ setNodeRef }) => (\n <Grid.Root key={container.dndId} ref={setNodeRef} gap={2}>\n {container.children.map((child, childIndex) => (\n <Grid.Item\n col={child.size}\n xs={12}\n key={child.dndId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <SortableItem id={child.dndId}>\n <Field\n attribute={attributes[child.name]}\n components={components}\n name={child.formName}\n onRemoveField={handleRemoveField(containerIndex, childIndex)}\n dndId={child.dndId}\n />\n </SortableItem>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </DroppableContainer>\n </SortableContext>\n ))}\n <DragOverlay>\n {activeDragItem ? (\n <Field\n attribute={attributes[activeDragItem.name]}\n components={components}\n name={activeDragItem.formName}\n dndId={activeDragItem.dndId}\n />\n ) : null}\n </DragOverlay>\n <Menu.Root>\n <Menu.Trigger\n startIcon={<Plus />}\n endIcon={null}\n disabled={remainingFields.length === 0}\n fullWidth\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTranslation('containers.SettingPage.add.field'),\n defaultMessage: 'Insert another field',\n })}\n </Menu.Trigger>\n <Menu.Content>\n {remainingFields.map((field) => (\n <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n {field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Box>\n </Flex>\n </DndContext>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n dndId: string;\n onRemoveField?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, onRemoveField, dndId }: FieldProps) => {\n const isDesktop = useIsDesktop();\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { value } = useField<FormField>(name);\n const { listeners, setActivatorNodeRef } = useSortable({\n id: dndId,\n });\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (onRemoveField) {\n onRemoveField?.(e);\n }\n };\n\n const onEditFieldMeta: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsModalOpen(true);\n };\n\n if (!value) {\n return null;\n }\n\n if (value.name === TEMP_FIELD_NAME) {\n return <Flex tag=\"span\" height=\"100%\" style={{ opacity: 0 }} />;\n }\n\n if (!attribute) {\n return null;\n }\n\n return (\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n position=\"relative\"\n >\n {isDesktop && (\n <DragButton\n ref={setActivatorNodeRef}\n tag=\"span\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: value.label }\n )}\n {...listeners}\n >\n <Drag />\n </DragButton>\n )}\n <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n <Typography ellipsis fontWeight=\"bold\">\n {value.label}\n </Typography>\n <Flex position=\"relative\">\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n background=\"transparent\"\n onClick={onEditFieldMeta}\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: value.label }\n )}\n >\n <Pencil />\n </IconButton>\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveField}\n background=\"transparent\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: value.label }\n )}\n >\n <Cross />\n </IconButton>\n </Flex>\n </Flex>\n {attribute?.type === 'component' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n direction=\"column\"\n gap={2}\n width=\"100%\"\n >\n <Grid.Root gap={4} width=\"100%\">\n {components[attribute.component].layout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Flex\n alignItems=\"center\"\n background=\"neutral0\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n hasRadius\n borderColor=\"neutral200\"\n >\n <Typography textColor=\"neutral800\">{field.name}</Typography>\n </Flex>\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n <Link\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n startIcon={<Cog />}\n tag={NavLink}\n to={`../components/${attribute.component}/configurations/edit`}\n >\n {formatMessage({\n id: getTranslation('components.FieldItem.linkToComponentLayout'),\n defaultMessage: \"Set the component's layout\",\n })}\n </Link>\n </Flex>\n ) : null}\n {attribute?.type === 'dynamiczone' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n gap={2}\n width=\"100%\"\n wrap=\"wrap\"\n >\n {attribute?.components.map((uid) => (\n <ComponentLink\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n key={uid}\n to={`../components/${uid}/configurations/edit`}\n >\n <ComponentIcon icon={components[uid].settings.icon} />\n <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n {components[uid].settings.displayName}\n </Typography>\n </ComponentLink>\n ))}\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n {value.name !== TEMP_FIELD_NAME && (\n <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n )}\n </Modal.Root>\n );\n};\n\nconst DragButton = styled<IconButtonComponent<'span'>>(IconButton)`\n height: unset;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n border-radius: 0px;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n\n svg {\n width: 1.2rem;\n height: 1.2rem;\n }\n`;\n\nconst ComponentLink = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[1]};\n padding: ${(props) => props.theme.spaces[2]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral0};\n width: 14rem;\n border-radius: ${({ theme }) => theme.borderRadius};\n text-decoration: none;\n\n &:focus,\n &:hover {\n ${({ theme }) => `\n background-color: ${theme.colors.primary100};\n border-color: ${theme.colors.primary200};\n\n ${Typography} {\n color: ${theme.colors.primary600};\n }\n `}\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n"],"names":["GRID_COLUMNS","DroppableContainer","id","children","droppable","useDroppable","SortableItem","attributes","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","Transform","toString","x","y","scaleX","scaleY","height","opacity","outlineOffset","_jsx","div","ref","createDragAndDropContainersFromLayout","layout","map","row","containerIndex","dndId","child","childIndex","formName","Fields","fieldSizes","components","metadatas","formatMessage","useIntl","useForm","state","values","onChange","addFieldRow","removeFieldRow","existingFields","field","name","flat","remainingFields","Object","entries","reduce","acc","current","visible","includes","type","size","push","label","handleRemoveField","rowIndex","fieldIndex","length","slice","handleAddField","containers","setContainers","React","useState","activeDragItem","setActiveDragItem","findContainer","containersAsDictionary","keys","find","key","getItemFromContainer","container","item","getContainersAsDictionary","fromEntries","createContainersWithSpacers","filter","TEMP_FIELD_NAME","totalSpaceTaken","curr","spacerKey","generateNKeysBetweenImpl","at","__temp_key__","undefined","useEffect","DndContext","onDragStart","event","activeContainer","active","activeItem","onDragOver","over","overContainer","activeContainerIndex","findIndex","overContainerIndex","draggedItem","overItem","overIndex","activeIndex","update","produce","draft","targetChildren","spaceTaken","isNotEnoughSpace","canSwapSameSizeItem","canCreateNewRowForItem","isHoveringOverSpacer","sourceChildren","splice","draftOverIndex","insertIndex","existingRow","nonTempChildren","isNextRowEmpty","newContainerPrototype","findFreeContainerId","i","newContainerId","onDragEnd","overId","movedContainerItems","arraySwap","updatedContainers","updatedContainersWithSpacers","updatedLayout","_dndId","_formName","_jsxs","Flex","paddingTop","direction","alignItems","gap","justifyContent","Typography","fontWeight","getTranslation","defaultMessage","variant","textColor","Box","padding","hasRadius","borderStyle","borderWidth","borderColor","SortableContext","items","strategy","rectSwappingStrategy","Grid","Root","Item","col","xs","Field","attribute","onRemoveField","DragOverlay","Menu","Trigger","startIcon","Plus","endIcon","disabled","fullWidth","Content","onSelect","isDesktop","useIsDesktop","isModalOpen","setIsModalOpen","value","useField","listeners","setActivatorNodeRef","e","preventDefault","stopPropagation","onEditFieldMeta","tag","Modal","open","onOpenChange","background","cursor","onClick","position","DragButton","withTooltip","Drag","grow","overflow","width","ellipsis","IconButton","Pencil","Cross","paddingRight","paddingBottom","paddingLeft","component","Link","Cog","NavLink","to","wrap","uid","ComponentLink","ComponentIcon","icon","settings","fontSize","displayName","EditFieldForm","onClose","styled","theme","colors","neutral150","spaces","props","neutral200","neutral0","borderRadius","primary100","primary200","primary600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Fields.js","sources":["../../../../admin/src/components/ConfigurationForm/Fields.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useDroppable, DndContext, UniqueIdentifier, DragOverlay } from '@dnd-kit/core';\nimport { arraySwap, SortableContext, useSortable, rectSwappingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useField, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Modal,\n Box,\n Flex,\n Grid,\n IconButton,\n IconButtonComponent,\n Typography,\n Link,\n Menu,\n} from '@strapi/design-system';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\nconst EMPTY_METADATAS: NonNullable<FieldsProps['metadatas']> = {};\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\nconst GRID_COLUMNS = 12;\n\n/* -------------------------------------------------------------------------------------------------\n * Drag and Drop\n * -----------------------------------------------------------------------------------------------*/\n\nconst DroppableContainer = ({\n id,\n children,\n}: {\n id: string;\n children: (props: ReturnType<typeof useDroppable>) => React.ReactNode;\n}) => {\n const droppable = useDroppable({\n id,\n });\n\n return children(droppable);\n};\n\nexport const SortableItem = ({ id, children }: { id: string; children: React.ReactNode }) => {\n const { attributes, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n // Avoid any scaling animations which can visually \"squish\" or\n // \"stretch\" neighbouring cards in mixed-width grids (4/8/12 cols).\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n height: '100%',\n opacity: isDragging ? 0.6 : 1,\n outlineOffset: 2,\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n attributes: {\n [key: string]: FieldProps['attribute'];\n };\n fieldSizes: Record<string, number>;\n components: EditLayout['components'];\n}\n\n/**\n * Compute uids and formName for drag and drop items for the incoming layout\n */\nconst createDragAndDropContainersFromLayout = (layout: ConfigurationFormData['layout']) => {\n return layout.map((row, containerIndex) => ({\n ...row,\n // Use unique ids for drag and drop items\n dndId: `container-${containerIndex}`,\n children: row.children.map((child, childIndex) => ({\n ...child,\n dndId: `container-${containerIndex}-child-${childIndex}`,\n\n // The formName must be recomputed each time an item is moved\n formName: `layout.${containerIndex}.children.${childIndex}`,\n })),\n }));\n};\n\nconst Fields = ({\n attributes,\n fieldSizes,\n components,\n metadatas = EMPTY_METADATAS,\n}: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => (state.values as ConfigurationFormData).layout ?? []\n );\n\n const onChange = useForm('Fields', (state) => state.onChange);\n const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n const existingFields = new Set(layout.flatMap((row) => row.children.map((field) => field.name)));\n\n /**\n * Get the fields that are not already in the layout\n * But also check that they are visible before we give users\n * the option to display them. e.g. `id` is not visible.\n */\n const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n const [name, { visible, ...field }] = current;\n\n if (!existingFields.has(name) && visible === true) {\n const type = attributes[name]?.type;\n const size = type ? fieldSizes[type] : GRID_COLUMNS;\n\n acc.push({\n ...field,\n label: field.label ?? name,\n name,\n size,\n });\n }\n\n return acc;\n }, []);\n\n const handleRemoveField =\n (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n () => {\n if (layout[rowIndex].children.length === 1) {\n removeFieldRow(`layout`, rowIndex);\n } else {\n onChange(`layout.${rowIndex}.children`, [\n ...layout[rowIndex].children.slice(0, fieldIndex),\n ...layout[rowIndex].children.slice(fieldIndex + 1),\n ]);\n }\n };\n\n const handleAddField = (field: Field) => () => {\n addFieldRow('layout', { children: [field] });\n };\n\n const [containers, setContainers] = React.useState(() =>\n createDragAndDropContainersFromLayout(layout)\n );\n type Container = (typeof containers)[number];\n const [activeDragItem, setActiveDragItem] = React.useState<Container['children'][number] | null>(\n null\n );\n\n /**\n * Finds either the parent container id or the child id within a container\n */\n function findContainer(id: UniqueIdentifier, containersAsDictionary: Record<string, Container>) {\n // If the id is a key, then it is the parent container\n if (id in containersAsDictionary) {\n return id;\n }\n\n // Otherwise, it is a child inside a container\n return Object.keys(containersAsDictionary).find((key) =>\n containersAsDictionary[key].children.find((child) => child.dndId === id)\n );\n }\n\n /**\n * Gets an item from a container based on its id\n */\n const getItemFromContainer = (id: UniqueIdentifier, container: Container) => {\n return container.children.find((item) => id === item.dndId);\n };\n\n /**\n * Gets the containers as dictionary for quick lookup\n */\n const getContainersAsDictionary = () => {\n return Object.fromEntries(containers.map((container) => [container.dndId, container]));\n };\n\n /**\n * Recomputes the empty space in the grid\n */\n const createContainersWithSpacers = (layout: typeof containers) => {\n return layout\n .map((row) => ({\n ...row,\n children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n }))\n .filter((row) => row.children.length > 0)\n .map((row) => {\n const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n if (totalSpaceTaken < GRID_COLUMNS) {\n const [spacerKey] = generateNKeysBetweenImpl(\n row.children.at(-1)?.__temp_key__,\n undefined,\n 1\n );\n\n return {\n ...row,\n children: [\n ...row.children,\n {\n name: TEMP_FIELD_NAME,\n size: GRID_COLUMNS - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n };\n\n /**\n * When layout changes (e.g. when a field size is changed or the containers are reordered)\n * we need to update the ids and form names\n */\n React.useEffect(() => {\n const containers = createDragAndDropContainersFromLayout(layout);\n setContainers(containers);\n }, [layout, setContainers]);\n\n return (\n <DndContext\n onDragStart={(event) => {\n const containersAsDictionary = getContainersAsDictionary();\n\n const activeContainer = findContainer(event.active.id, containersAsDictionary);\n\n if (!activeContainer) return;\n\n const activeItem = getItemFromContainer(\n event.active.id,\n containersAsDictionary[activeContainer]\n );\n\n if (activeItem) {\n setActiveDragItem(activeItem);\n }\n }}\n onDragOver={({ active, over }) => {\n const containersAsDictionary = getContainersAsDictionary();\n const activeContainer = findContainer(active.id, containersAsDictionary);\n const overContainer = findContainer(over?.id ?? '', containersAsDictionary);\n const activeContainerIndex = containers.findIndex(\n (container) => container.dndId === activeContainer\n );\n const overContainerIndex = containers.findIndex(\n (container) => container.dndId === overContainer\n );\n\n if (!activeContainer || !overContainer) {\n return;\n }\n\n const draggedItem = getItemFromContainer(\n active.id,\n containersAsDictionary[activeContainer]\n );\n const overItem = getItemFromContainer(\n over?.id ?? '',\n containersAsDictionary[overContainer]\n );\n const overIndex = containersAsDictionary[overContainer].children.findIndex(\n (item) => item.dndId === over?.id\n );\n const activeIndex = containersAsDictionary[activeContainer].children.findIndex(\n (item) => item.dndId === active.id\n );\n\n if (!draggedItem) return;\n\n // Handle a full width field being dragged\n if (draggedItem?.size === GRID_COLUMNS) {\n // Swap the items in the containers\n const update = produce(containers, (draft) => {\n draft[activeContainerIndex].children = containers[overContainerIndex].children;\n draft[overContainerIndex].children = containers[activeContainerIndex].children;\n });\n setContainers(update);\n return;\n }\n\n /**\n * Handle an item being dragged from one container to another,\n * the item is removed from its current container, and then added to its new container\n * An item can only be added in a container if there is enough space\n */\n const update = produce(containers, (draft) => {\n draft[activeContainerIndex].children = draft[activeContainerIndex].children.filter(\n (item) => item.dndId !== active.id\n );\n\n const targetChildren = draft[overContainerIndex].children;\n const spaceTaken = targetChildren.reduce((acc, curr) => {\n if (curr.name === TEMP_FIELD_NAME) {\n return acc;\n }\n\n return acc + curr.size;\n }, 0);\n const isNotEnoughSpace = spaceTaken + draggedItem.size > GRID_COLUMNS;\n const canSwapSameSizeItem =\n overItem &&\n overItem.name !== TEMP_FIELD_NAME &&\n overItem.size === draggedItem.size &&\n activeIndex !== -1 &&\n overIndex !== -1;\n const canCreateNewRowForItem =\n activeContainerIndex !== overContainerIndex &&\n GRID_COLUMNS - spaceTaken < draggedItem.size;\n const isHoveringOverSpacer = overItem?.name === TEMP_FIELD_NAME;\n\n /**\n * Not enough space in the hovered row\n *\n * We still want:\n * - ability to swap items of the same size\n * - ability to create a single extra row to host the dragged item\n * when surrounding rows are full\n */\n if (isNotEnoughSpace) {\n // Try a simple swap when target item is of the same size\n if (canSwapSameSizeItem) {\n const sourceChildren = draft[activeContainerIndex].children;\n\n // Put the hovered item back where the dragged item came from\n sourceChildren.splice(activeIndex, 0, overItem);\n\n // Swap the hovered item with the dragged one in the target row\n const draftOverIndex = targetChildren.findIndex(\n (item) => item.dndId === overItem.dndId\n );\n\n if (draftOverIndex !== -1) {\n targetChildren.splice(draftOverIndex, 1, draggedItem);\n }\n\n return;\n }\n\n // If there is absolutely no space left in the target row and the\n // dragged item comes from a different row, add it to a new row\n if (canCreateNewRowForItem) {\n // Default: insert a new row after the row being hovered (between that row and the\n // next). For row 0, use index 0 instead so fields that are not full-width can still\n // be moved above the first row—there is no separate drop area above it in the UI.\n const insertIndex = overContainerIndex === 0 ? 0 : overContainerIndex + 1;\n\n /**\n * When inserting *after* the hovered row, reuse the following row if it only\n * contains spacers. Skip when inserting at index 0 — draft[0] is the hovered row.\n */\n if (insertIndex > overContainerIndex) {\n const existingRow = draft[insertIndex];\n\n if (existingRow) {\n const nonTempChildren = existingRow.children.filter(\n (child) => child.name !== TEMP_FIELD_NAME\n );\n const isNextRowEmpty = nonTempChildren.length === 0;\n\n // If the row directly after is empty (only spacers), reuse it\n // instead of creating yet another row.\n if (isNextRowEmpty) {\n existingRow.children = [draggedItem];\n return;\n }\n }\n }\n\n const newContainerPrototype = draft[overContainerIndex];\n\n // Using draft.length directly can collide with an existing container id\n // (e.g. after rows were removed), causing React key conflicts and flicker.\n const findFreeContainerId = (i: number): string =>\n containersAsDictionary[`container-${i}`]\n ? findFreeContainerId(i + 1)\n : `container-${i}`;\n const newContainerId = findFreeContainerId(draft.length);\n\n draft.splice(insertIndex, 0, {\n ...newContainerPrototype,\n dndId: newContainerId,\n children: [draggedItem],\n });\n\n return;\n }\n }\n\n // There is enough room in the target row\n if (isHoveringOverSpacer) {\n // We are over an invisible spacer, replace it with the dragged item\n targetChildren.splice(overIndex, 1, draggedItem);\n return;\n }\n\n // There is room for the item in the container, drop it\n targetChildren.splice(overIndex, 0, draggedItem);\n });\n\n setContainers(update.filter((container) => container.children.length > 0));\n }}\n onDragEnd={(event) => {\n const { active, over } = event;\n const { id } = active;\n const overId = over?.id;\n const containersAsDictionary = getContainersAsDictionary();\n const activeContainer = findContainer(id, containersAsDictionary);\n const overContainer = findContainer(overId!, containersAsDictionary);\n\n if (!activeContainer || !overContainer) {\n return;\n }\n\n const activeIndex = containersAsDictionary[activeContainer].children.findIndex(\n (children) => children.dndId === id\n );\n const overIndex = containersAsDictionary[overContainer].children.findIndex(\n (children) => children.dndId === overId\n );\n\n const movedContainerItems = produce(containersAsDictionary, (draft) => {\n if (\n activeIndex >= 0 &&\n overIndex >= 0 &&\n activeIndex !== overIndex &&\n activeContainer === overContainer\n ) {\n // Move items around inside their own container\n draft[activeContainer].children = arraySwap(\n draft[activeContainer].children,\n activeIndex,\n overIndex\n );\n }\n });\n\n // Remove properties the server does not expect before updating the form\n const updatedContainers = Object.values(movedContainerItems);\n const updatedContainersWithSpacers = createContainersWithSpacers(\n updatedContainers\n ) as typeof containers;\n const updatedLayout = updatedContainersWithSpacers.map(\n ({ dndId: _dndId, children, ...container }) => ({\n ...container,\n children: children.map(({ dndId: _dndId, formName: _formName, ...child }) => child),\n })\n );\n\n // Update the layout\n onChange('layout', updatedLayout);\n setActiveDragItem(null);\n }}\n >\n <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: getTranslation('containers.list.displayedFields'),\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'containers.SettingPage.editSettings.description',\n defaultMessage: 'Drag & drop the fields to build the layout',\n })}\n </Typography>\n </Flex>\n <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {containers.map((container, containerIndex) => (\n <SortableContext\n key={container.dndId}\n id={container.dndId}\n items={container.children.map((child) => ({ id: child.dndId }))}\n strategy={rectSwappingStrategy}\n >\n <DroppableContainer id={container.dndId}>\n {({ setNodeRef }) => (\n <Grid.Root key={container.dndId} ref={setNodeRef} gap={2}>\n {container.children.map((child, childIndex) => (\n <Grid.Item\n col={child.size}\n xs={12}\n key={child.dndId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <SortableItem id={child.dndId}>\n <Field\n attribute={attributes[child.name]}\n components={components}\n name={child.formName}\n onRemoveField={handleRemoveField(containerIndex, childIndex)}\n dndId={child.dndId}\n />\n </SortableItem>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </DroppableContainer>\n </SortableContext>\n ))}\n <DragOverlay>\n {activeDragItem ? (\n <Field\n attribute={attributes[activeDragItem.name]}\n components={components}\n name={activeDragItem.formName}\n dndId={activeDragItem.dndId}\n />\n ) : null}\n </DragOverlay>\n <Menu.Root>\n <Menu.Trigger\n startIcon={<Plus />}\n endIcon={null}\n disabled={remainingFields.length === 0}\n fullWidth\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTranslation('containers.SettingPage.add.field'),\n defaultMessage: 'Insert another field',\n })}\n </Menu.Trigger>\n <Menu.Content>\n {remainingFields.map((field) => (\n <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n {field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Box>\n </Flex>\n </DndContext>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n dndId: string;\n onRemoveField?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, onRemoveField, dndId }: FieldProps) => {\n const isDesktop = useIsDesktop();\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { value } = useField<FormField>(name);\n const { listeners, setActivatorNodeRef } = useSortable({\n id: dndId,\n });\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (onRemoveField) {\n onRemoveField?.(e);\n }\n };\n\n const onEditFieldMeta: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsModalOpen(true);\n };\n\n if (!value) {\n return null;\n }\n\n if (value.name === TEMP_FIELD_NAME) {\n return <Flex tag=\"span\" height=\"100%\" style={{ opacity: 0 }} />;\n }\n\n if (!attribute) {\n return null;\n }\n\n return (\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n position=\"relative\"\n >\n {isDesktop && (\n <DragButton\n ref={setActivatorNodeRef}\n tag=\"span\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: value.label }\n )}\n {...listeners}\n >\n <Drag />\n </DragButton>\n )}\n <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n <Typography ellipsis fontWeight=\"bold\">\n {value.label}\n </Typography>\n <Flex position=\"relative\">\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n background=\"transparent\"\n onClick={onEditFieldMeta}\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: value.label }\n )}\n >\n <Pencil />\n </IconButton>\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveField}\n background=\"transparent\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: value.label }\n )}\n >\n <Cross />\n </IconButton>\n </Flex>\n </Flex>\n {attribute?.type === 'component' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n direction=\"column\"\n gap={2}\n width=\"100%\"\n >\n <Grid.Root gap={4} width=\"100%\">\n {components[attribute.component].layout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Flex\n alignItems=\"center\"\n background=\"neutral0\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n hasRadius\n borderColor=\"neutral200\"\n >\n <Typography textColor=\"neutral800\">{field.name}</Typography>\n </Flex>\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n <Link\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n startIcon={<Cog />}\n tag={NavLink}\n to={`../components/${attribute.component}/configurations/edit`}\n >\n {formatMessage({\n id: getTranslation('components.FieldItem.linkToComponentLayout'),\n defaultMessage: \"Set the component's layout\",\n })}\n </Link>\n </Flex>\n ) : null}\n {attribute?.type === 'dynamiczone' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n gap={2}\n width=\"100%\"\n wrap=\"wrap\"\n >\n {attribute?.components.map((uid) => (\n <ComponentLink\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n key={uid}\n to={`../components/${uid}/configurations/edit`}\n >\n <ComponentIcon icon={components[uid].settings.icon} />\n <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n {components[uid].settings.displayName}\n </Typography>\n </ComponentLink>\n ))}\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n {value.name !== TEMP_FIELD_NAME && (\n <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n )}\n </Modal.Root>\n );\n};\n\nconst DragButton = styled<IconButtonComponent<'span'>>(IconButton)`\n height: unset;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n border-radius: 0px;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n\n svg {\n width: 1.2rem;\n height: 1.2rem;\n }\n`;\n\nconst ComponentLink = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[1]};\n padding: ${(props) => props.theme.spaces[2]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral0};\n width: 14rem;\n border-radius: ${({ theme }) => theme.borderRadius};\n text-decoration: none;\n\n &:focus,\n &:hover {\n ${({ theme }) => `\n background-color: ${theme.colors.primary100};\n border-color: ${theme.colors.primary200};\n\n ${Typography} {\n color: ${theme.colors.primary600};\n }\n `}\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n"],"names":["EMPTY_METADATAS","GRID_COLUMNS","DroppableContainer","id","children","droppable","useDroppable","SortableItem","attributes","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","Transform","toString","x","y","scaleX","scaleY","height","opacity","outlineOffset","_jsx","div","ref","createDragAndDropContainersFromLayout","layout","map","row","containerIndex","dndId","child","childIndex","formName","Fields","fieldSizes","components","metadatas","formatMessage","useIntl","useForm","state","values","onChange","addFieldRow","removeFieldRow","existingFields","Set","flatMap","field","name","remainingFields","Object","entries","reduce","acc","current","visible","has","type","size","push","label","handleRemoveField","rowIndex","fieldIndex","length","slice","handleAddField","containers","setContainers","React","useState","activeDragItem","setActiveDragItem","findContainer","containersAsDictionary","keys","find","key","getItemFromContainer","container","item","getContainersAsDictionary","fromEntries","createContainersWithSpacers","filter","TEMP_FIELD_NAME","totalSpaceTaken","curr","spacerKey","generateNKeysBetweenImpl","at","__temp_key__","undefined","useEffect","DndContext","onDragStart","event","activeContainer","active","activeItem","onDragOver","over","overContainer","activeContainerIndex","findIndex","overContainerIndex","draggedItem","overItem","overIndex","activeIndex","update","produce","draft","targetChildren","spaceTaken","isNotEnoughSpace","canSwapSameSizeItem","canCreateNewRowForItem","isHoveringOverSpacer","sourceChildren","splice","draftOverIndex","insertIndex","existingRow","nonTempChildren","isNextRowEmpty","newContainerPrototype","findFreeContainerId","i","newContainerId","onDragEnd","overId","movedContainerItems","arraySwap","updatedContainers","updatedContainersWithSpacers","updatedLayout","_dndId","_formName","_jsxs","Flex","paddingTop","direction","alignItems","gap","justifyContent","Typography","fontWeight","getTranslation","defaultMessage","variant","textColor","Box","padding","hasRadius","borderStyle","borderWidth","borderColor","SortableContext","items","strategy","rectSwappingStrategy","Grid","Root","Item","col","xs","Field","attribute","onRemoveField","DragOverlay","Menu","Trigger","startIcon","Plus","endIcon","disabled","fullWidth","Content","onSelect","isDesktop","useIsDesktop","isModalOpen","setIsModalOpen","value","useField","listeners","setActivatorNodeRef","e","preventDefault","stopPropagation","onEditFieldMeta","tag","Modal","open","onOpenChange","background","cursor","onClick","position","DragButton","withTooltip","Drag","grow","overflow","width","ellipsis","IconButton","Pencil","Cross","paddingRight","paddingBottom","paddingLeft","component","Link","Cog","NavLink","to","wrap","uid","ComponentLink","ComponentIcon","icon","settings","fontSize","displayName","EditFieldForm","onClose","styled","theme","colors","neutral150","spaces","props","neutral200","neutral0","borderRadius","primary100","primary200","primary600"],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { getTranslation } from '../../utils/translations.mjs';
|
|
|
15
15
|
import { ComponentIcon } from '../ComponentIcon.mjs';
|
|
16
16
|
import { EditFieldForm } from './EditFieldForm.mjs';
|
|
17
17
|
|
|
18
|
+
const EMPTY_METADATAS = {};
|
|
18
19
|
const GRID_COLUMNS = 12;
|
|
19
20
|
/* -------------------------------------------------------------------------------------------------
|
|
20
21
|
* Drag and Drop
|
|
@@ -64,20 +65,20 @@ const SortableItem = ({ id, children })=>{
|
|
|
64
65
|
}))
|
|
65
66
|
}));
|
|
66
67
|
};
|
|
67
|
-
const Fields = ({ attributes, fieldSizes, components, metadatas =
|
|
68
|
+
const Fields = ({ attributes, fieldSizes, components, metadatas = EMPTY_METADATAS })=>{
|
|
68
69
|
const { formatMessage } = useIntl();
|
|
69
70
|
const layout = useForm('Fields', (state)=>state.values.layout ?? []);
|
|
70
71
|
const onChange = useForm('Fields', (state)=>state.onChange);
|
|
71
72
|
const addFieldRow = useForm('Fields', (state)=>state.addFieldRow);
|
|
72
73
|
const removeFieldRow = useForm('Fields', (state)=>state.removeFieldRow);
|
|
73
|
-
const existingFields = layout.
|
|
74
|
+
const existingFields = new Set(layout.flatMap((row)=>row.children.map((field)=>field.name)));
|
|
74
75
|
/**
|
|
75
76
|
* Get the fields that are not already in the layout
|
|
76
77
|
* But also check that they are visible before we give users
|
|
77
78
|
* the option to display them. e.g. `id` is not visible.
|
|
78
79
|
*/ const remainingFields = Object.entries(metadatas).reduce((acc, current)=>{
|
|
79
80
|
const [name, { visible, ...field }] = current;
|
|
80
|
-
if (!existingFields.
|
|
81
|
+
if (!existingFields.has(name) && visible === true) {
|
|
81
82
|
const type = attributes[name]?.type;
|
|
82
83
|
const size = type ? fieldSizes[type] : GRID_COLUMNS;
|
|
83
84
|
acc.push({
|