@strapi/content-manager 5.14.0 → 5.15.1

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.
Files changed (44) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/history/components/VersionHeader.js +6 -0
  6. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  7. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  8. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/EditViewPage.js +81 -74
  10. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  11. package/dist/admin/pages/EditView/EditViewPage.mjs +82 -75
  12. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/DocumentActions.js +24 -7
  14. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/DocumentActions.mjs +24 -7
  16. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +19 -33
  18. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +19 -33
  20. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  22. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +2 -1
  24. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormLayout.js +19 -23
  26. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormLayout.mjs +19 -23
  28. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  29. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  30. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  31. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  32. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  33. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  34. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -7
  35. package/dist/admin/translations/en.json.js +1 -0
  36. package/dist/admin/translations/en.json.js.map +1 -1
  37. package/dist/admin/translations/en.json.mjs +1 -0
  38. package/dist/admin/translations/en.json.mjs.map +1 -1
  39. package/dist/server/history/services/lifecycles.js +3 -0
  40. package/dist/server/history/services/lifecycles.js.map +1 -1
  41. package/dist/server/history/services/lifecycles.mjs +3 -0
  42. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  43. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  44. package/package.json +11 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Fields.js","sources":["../../../../admin/src/components/ConfigurationForm/Fields.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Modal,\n Box,\n Flex,\n Grid,\n IconButton,\n IconButtonComponent,\n Typography,\n useComposedRefs,\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 { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../constants/dragAndDrop';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../hooks/useDragAndDrop';\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\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\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => state.values.layout ?? []\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] : 12;\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 handleMoveField: FieldProps['onMoveField'] = (\n [newRowIndex, newFieldIndex],\n [currentRowIndex, currentFieldIndex]\n ) => {\n /**\n * Because this view has the constraint that the sum of field sizes cannot be greater\n * than 12, we don't use the form's method to move field rows, instead, we calculate\n * the new layout and set the entire form.\n */\n const newLayout = structuredClone(layout);\n\n /**\n * Remove field from the current layout space using splice so we have the item\n */\n const [field] = newLayout[currentRowIndex].children.splice(currentFieldIndex, 1);\n\n if (!field || field.name === TEMP_FIELD_NAME) {\n return;\n }\n\n const newRow = newLayout[newRowIndex].children;\n const [newFieldKey] = generateNKeysBetween(newRow, 1, currentFieldIndex, newFieldIndex);\n\n /**\n * Next we inject the field into it's new row at it's specified index, we then remove the spaces\n * if they exist and recalculate into potentially two arrays ONLY if the sizing is now over 12,\n * the row and the rest of the row that couldn't fit.\n *\n * for example, if i have a row of `[{size: 4}, {size: 6}]` and i add `{size: 8}` a index 0,\n * the new array will look like `[{size: 8}, {size: 4}, {size: 6}]` which breaks the limit of 12,\n * so instead we make two arrays for the new rows `[[{size: 8}, {size: 4}], [{size: 6}]]` which we\n * then inject at the original row point with spacers included.\n */\n newRow.splice(newFieldIndex, 0, { ...field, __temp_key__: newFieldKey });\n\n if (newLayout[newRowIndex].children.reduce((acc, curr) => acc + curr.size, 0) > 12) {\n const recalculatedRows = chunkArray(\n newLayout[newRowIndex].children.filter((field) => field.name !== TEMP_FIELD_NAME)\n );\n\n const rowKeys = generateNKeysBetween(\n newLayout,\n recalculatedRows.length,\n currentRowIndex,\n newRowIndex\n );\n\n newLayout.splice(\n newRowIndex,\n 1,\n ...recalculatedRows.map((row, index) => ({\n __temp_key__: rowKeys[index],\n children: row,\n }))\n );\n }\n\n /**\n * Now we remove our spacers from the rows so we can understand what dead rows exist:\n * - if there's only spacers left\n * - there's nothing in the row, e.g. a size 12 field left it.\n * These rows are then filtered out.\n * After that, we recalculate the spacers for the rows that need them.\n */\n const newLayoutWithSpacers = newLayout\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 < 12) {\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: 12 - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n\n onChange('layout', newLayoutWithSpacers);\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 return (\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 {layout.map((row, rowIndex) => (\n <Grid.Root gap={2} key={row.__temp_key__}>\n {row.children.map(({ size, ...field }, fieldIndex) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <Field\n attribute={attributes[field.name]}\n components={components}\n index={[rowIndex, fieldIndex]}\n name={`layout.${rowIndex}.children.${fieldIndex}`}\n onMoveField={handleMoveField}\n onRemoveField={handleRemoveField(rowIndex, fieldIndex)}\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\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 );\n};\n\n/**\n * @internal\n * @description Small abstraction to solve within an array of fields where you can\n * add a field to the beginning or start, move back and forth what it's index range\n * should be when calculating it's new temp key\n */\nconst generateNKeysBetween = <Field extends { __temp_key__: string }>(\n field: Field[],\n count: number,\n currInd: number,\n newInd: number\n) => {\n const startKey = currInd > newInd ? field[newInd - 1]?.__temp_key__ : field[newInd]?.__temp_key__;\n const endKey = currInd > newInd ? field[newInd]?.__temp_key__ : field[newInd + 1]?.__temp_key__;\n\n return generateNKeysBetweenImpl(startKey, endKey, count);\n};\n\n/**\n * @internal\n * @description chunks a row of layouts by the max size we allow, 12. It does not add the\n * spacers again, that should be added separately.\n */\nconst chunkArray = (array: FormField[]) => {\n const result: Array<FormField[]> = [];\n let temp: FormField[] = [];\n\n array.reduce((acc, field) => {\n if (acc + field.size > 12) {\n result.push(temp);\n temp = [field];\n return field.size;\n } else {\n temp.push(field);\n return acc + field.size;\n }\n }, 0);\n\n if (temp.length > 0) {\n result.push(temp);\n }\n\n return result;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n index: [row: number, index: number];\n onMoveField: UseDragAndDropOptions<number[]>['onMoveItem'];\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, index, onMoveField, onRemoveField }: FieldProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const { value } = useField<FormField>(name);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop<\n Array<number>\n >(true, {\n dropSensitivity: 'immediate',\n type: ItemTypes.EDIT_FIELD,\n item: { index, label: value?.label, name },\n index,\n onMoveItem: onMoveField,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n const composedRefs = useComposedRefs<HTMLSpanElement>(dragRef, objectRef);\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemoveField(e);\n };\n\n const onEditFieldMeta: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsModalOpen(true);\n };\n\n const tempRefs = useComposedRefs<HTMLSpanElement>(dropRef, objectRef);\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 }} ref={tempRefs} />;\n }\n\n return (\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n style={{ opacity: isDragging ? 0.5 : 1 }}\n ref={dropRef}\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n >\n <DragButton\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 onClick={(e) => e.stopPropagation()}\n ref={composedRefs}\n >\n <Drag />\n </DragButton>\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>\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 key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\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 >\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":["Fields","attributes","fieldSizes","components","metadatas","formatMessage","useIntl","layout","useForm","state","values","onChange","addFieldRow","removeFieldRow","existingFields","map","row","children","field","name","flat","remainingFields","Object","entries","reduce","acc","current","visible","includes","type","size","push","label","handleMoveField","newRowIndex","newFieldIndex","currentRowIndex","currentFieldIndex","newLayout","structuredClone","splice","TEMP_FIELD_NAME","newRow","newFieldKey","generateNKeysBetween","__temp_key__","curr","recalculatedRows","chunkArray","filter","rowKeys","length","index","newLayoutWithSpacers","totalSpaceTaken","spacerKey","generateNKeysBetweenImpl","at","undefined","handleRemoveField","rowIndex","fieldIndex","slice","handleAddField","_jsxs","Flex","paddingTop","direction","alignItems","gap","justifyContent","_jsx","Typography","fontWeight","id","getTranslation","defaultMessage","variant","textColor","Box","padding","hasRadius","borderStyle","borderWidth","borderColor","Grid","Root","Item","col","Field","attribute","onMoveField","onRemoveField","Menu","Trigger","startIcon","Plus","endIcon","disabled","fullWidth","Content","onSelect","count","currInd","newInd","startKey","endKey","array","result","temp","isModalOpen","setIsModalOpen","React","useState","value","useField","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","dropSensitivity","ItemTypes","EDIT_FIELD","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","composedRefs","useComposedRefs","e","preventDefault","stopPropagation","onEditFieldMeta","tempRefs","tag","height","style","opacity","ref","Modal","open","onOpenChange","background","cursor","onClick","DragButton","withTooltip","Drag","grow","overflow","width","ellipsis","IconButton","Pencil","Cross","paddingRight","paddingBottom","paddingLeft","component","Link","Cog","NavLink","to","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 { arrayMove, SortableContext, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useField, useForm } 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 } = useSortable({\n id,\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n height: '100%',\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.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\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 const spaceTaken = draft[overContainerIndex].children.reduce((acc, curr) => {\n if (curr.name === TEMP_FIELD_NAME) {\n return acc;\n }\n\n return acc + curr.size;\n }, 0);\n\n // Check the sizes of the children, if there is no room, exit\n if (spaceTaken + draggedItem.size > GRID_COLUMNS) {\n // Leave the item where it started\n draft[activeContainerIndex].children = containers[activeContainerIndex].children;\n return;\n }\n\n if (overItem?.name === TEMP_FIELD_NAME) {\n // We are over an invisible spacer, replace it with the dragged item\n draft[overContainerIndex].children.splice(overIndex, 1, draggedItem);\n return;\n }\n\n // There is room for the item in the container, drop it\n draft[overContainerIndex].children.splice(overIndex, 0, draggedItem);\n });\n\n setContainers(update);\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 (activeIndex !== overIndex && activeContainer === overContainer) {\n // Move items around inside their own container\n draft[activeContainer].children = arrayMove(\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 >\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 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 [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 >\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 <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>\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 key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\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","useSortable","style","CSS","Transform","toString","height","_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","update","produce","draft","spaceTaken","splice","onDragEnd","overId","activeIndex","movedContainerItems","arrayMove","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","Grid","Root","Item","col","Field","attribute","onRemoveField","DragOverlay","Menu","Trigger","startIcon","Plus","endIcon","disabled","fullWidth","Content","onSelect","isModalOpen","setIsModalOpen","value","useField","listeners","setActivatorNodeRef","e","preventDefault","stopPropagation","onEditFieldMeta","tag","opacity","Modal","open","onOpenChange","background","cursor","onClick","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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"}