@strapi/content-manager 0.0.0-next.737505a8bfb61e4f38da29a4089e66c0dc09745b → 0.0.0-next.74fd566f2af148bb8cb5f3e2b65585e0922fbefd

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 (146) 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/VersionContent.js +24 -3
  6. package/dist/admin/history/components/VersionContent.js.map +1 -1
  7. package/dist/admin/history/components/VersionContent.mjs +25 -4
  8. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  9. package/dist/admin/hooks/useDocumentActions.js +7 -3
  10. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  11. package/dist/admin/hooks/useDocumentActions.mjs +7 -3
  12. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/EditViewPage.js +92 -75
  14. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  15. package/dist/admin/pages/EditView/EditViewPage.mjs +93 -76
  16. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/DocumentActions.js +33 -47
  18. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/DocumentActions.mjs +34 -48
  20. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  22. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  26. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  28. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +2 -2
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +2 -2
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  34. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  36. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +13 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +14 -3
  40. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +153 -105
  46. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +156 -108
  48. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  50. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  52. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  58. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  60. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormLayout.js +46 -26
  62. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormLayout.mjs +46 -26
  64. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/utils/data.js +103 -0
  66. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  67. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  68. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  69. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  70. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  71. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  72. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  73. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  74. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  75. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  76. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  77. package/dist/admin/services/documents.js +2 -2
  78. package/dist/admin/services/documents.js.map +1 -1
  79. package/dist/admin/services/documents.mjs +2 -2
  80. package/dist/admin/services/documents.mjs.map +1 -1
  81. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  82. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  83. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  84. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -7
  85. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  86. package/dist/admin/src/services/documents.d.ts +7 -1
  87. package/dist/admin/src/utils/validation.d.ts +1 -0
  88. package/dist/admin/translations/fr.json.js +6 -1
  89. package/dist/admin/translations/fr.json.js.map +1 -1
  90. package/dist/admin/translations/fr.json.mjs +6 -1
  91. package/dist/admin/translations/fr.json.mjs.map +1 -1
  92. package/dist/admin/utils/validation.js +17 -6
  93. package/dist/admin/utils/validation.js.map +1 -1
  94. package/dist/admin/utils/validation.mjs +17 -6
  95. package/dist/admin/utils/validation.mjs.map +1 -1
  96. package/dist/server/controllers/content-types.js +11 -1
  97. package/dist/server/controllers/content-types.js.map +1 -1
  98. package/dist/server/controllers/content-types.mjs +11 -1
  99. package/dist/server/controllers/content-types.mjs.map +1 -1
  100. package/dist/server/controllers/relations.js +2 -2
  101. package/dist/server/controllers/relations.js.map +1 -1
  102. package/dist/server/controllers/relations.mjs +2 -2
  103. package/dist/server/controllers/relations.mjs.map +1 -1
  104. package/dist/server/controllers/validation/index.js +14 -2
  105. package/dist/server/controllers/validation/index.js.map +1 -1
  106. package/dist/server/controllers/validation/index.mjs +14 -2
  107. package/dist/server/controllers/validation/index.mjs.map +1 -1
  108. package/dist/server/services/data-mapper.js +4 -1
  109. package/dist/server/services/data-mapper.js.map +1 -1
  110. package/dist/server/services/data-mapper.mjs +4 -1
  111. package/dist/server/services/data-mapper.mjs.map +1 -1
  112. package/dist/server/services/document-manager.js +8 -1
  113. package/dist/server/services/document-manager.js.map +1 -1
  114. package/dist/server/services/document-manager.mjs +8 -1
  115. package/dist/server/services/document-manager.mjs.map +1 -1
  116. package/dist/server/services/document-metadata.js +3 -1
  117. package/dist/server/services/document-metadata.js.map +1 -1
  118. package/dist/server/services/document-metadata.mjs +3 -1
  119. package/dist/server/services/document-metadata.mjs.map +1 -1
  120. package/dist/server/services/utils/configuration/attributes.js +1 -1
  121. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  122. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  123. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  124. package/dist/server/services/utils/configuration/layouts.js +1 -1
  125. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  126. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  127. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  128. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  129. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  130. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  131. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  132. package/dist/server/services/utils/populate.js +11 -0
  133. package/dist/server/services/utils/populate.js.map +1 -1
  134. package/dist/server/services/utils/populate.mjs +11 -0
  135. package/dist/server/services/utils/populate.mjs.map +1 -1
  136. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  137. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  138. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  139. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  140. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  141. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  142. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  143. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  144. package/dist/shared/contracts/collection-types.d.ts +0 -1
  145. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  146. package/package.json +10 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Fields.mjs","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.mjs","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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"}
@@ -81,9 +81,18 @@ const createLayoutFromFields = (fields)=>{
81
81
  /* -------------------------------------------------------------------------------------------------
82
82
  * FormPanel
83
83
  * -----------------------------------------------------------------------------------------------*/ const FormPanel = ({ panel })=>{
84
+ const fieldValues = strapiAdmin.useForm('Fields', (state)=>state.values);
85
+ const rulesEngine = strapiAdmin.createRulesEngine();
84
86
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
85
87
  const [row] = panel;
86
88
  const [field] = row;
89
+ const condition = field.attribute?.conditions?.visible;
90
+ if (condition) {
91
+ const isVisible = rulesEngine.evaluate(condition, fieldValues);
92
+ if (!isVisible) {
93
+ return null; // Skip rendering the dynamic zone if the condition is not met
94
+ }
95
+ }
87
96
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
88
97
  gap: 4,
89
98
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
@@ -111,9 +120,20 @@ const createLayoutFromFields = (fields)=>{
111
120
  direction: "column",
112
121
  alignItems: "stretch",
113
122
  gap: 6,
114
- children: panel.map((row, gridRowIndex)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
123
+ children: panel.map((row, gridRowIndex)=>{
124
+ const visibleFields = row.filter((field)=>{
125
+ const condition = field.attribute?.conditions?.visible;
126
+ if (condition) {
127
+ return rulesEngine.evaluate(condition, fieldValues);
128
+ }
129
+ return true;
130
+ });
131
+ if (visibleFields.length === 0) {
132
+ return null; // Skip rendering the entire grid row
133
+ }
134
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
115
135
  gap: 4,
116
- children: row.map(({ size, ...field })=>{
136
+ children: visibleFields.map(({ size, ...field })=>{
117
137
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
118
138
  col: size,
119
139
  s: 12,
@@ -125,7 +145,8 @@ const createLayoutFromFields = (fields)=>{
125
145
  })
126
146
  }, field.name);
127
147
  })
128
- }, gridRowIndex))
148
+ }, gridRowIndex);
149
+ })
129
150
  })
130
151
  });
131
152
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <Grid.Root key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","some","_jsx","Grid","Root","gap","Item","col","s","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","shadow","paddingLeft","paddingRight","paddingTop","paddingBottom","borderColor","Flex","gridRowIndex","VersionContent","formatMessage","useIntl","useTypedSelector","state","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","_jsxs","Layouts","Content","Form","method","initialValues","position","index","_Fragment","Divider","Typography","variant","id","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","col","s","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","shadow","paddingLeft","paddingRight","paddingTop","paddingBottom","borderColor","Flex","gridRowIndex","visibleFields","filter","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","_jsxs","Layouts","Content","Form","method","initialValues","position","index","_Fragment","Divider","Typography","variant","id","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Layouts, Form } from '@strapi/admin/strapi-admin';
3
+ import { Layouts, Form, useForm, createRulesEngine } from '@strapi/admin/strapi-admin';
4
4
  import { Box, Flex, Divider, Typography, Grid } from '@strapi/design-system';
5
5
  import pipe from 'lodash/fp/pipe';
6
6
  import { useIntl } from 'react-intl';
@@ -60,9 +60,18 @@ const createLayoutFromFields = (fields)=>{
60
60
  /* -------------------------------------------------------------------------------------------------
61
61
  * FormPanel
62
62
  * -----------------------------------------------------------------------------------------------*/ const FormPanel = ({ panel })=>{
63
+ const fieldValues = useForm('Fields', (state)=>state.values);
64
+ const rulesEngine = createRulesEngine();
63
65
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
64
66
  const [row] = panel;
65
67
  const [field] = row;
68
+ const condition = field.attribute?.conditions?.visible;
69
+ if (condition) {
70
+ const isVisible = rulesEngine.evaluate(condition, fieldValues);
71
+ if (!isVisible) {
72
+ return null; // Skip rendering the dynamic zone if the condition is not met
73
+ }
74
+ }
66
75
  return /*#__PURE__*/ jsx(Grid.Root, {
67
76
  gap: 4,
68
77
  children: /*#__PURE__*/ jsx(Grid.Item, {
@@ -90,9 +99,20 @@ const createLayoutFromFields = (fields)=>{
90
99
  direction: "column",
91
100
  alignItems: "stretch",
92
101
  gap: 6,
93
- children: panel.map((row, gridRowIndex)=>/*#__PURE__*/ jsx(Grid.Root, {
102
+ children: panel.map((row, gridRowIndex)=>{
103
+ const visibleFields = row.filter((field)=>{
104
+ const condition = field.attribute?.conditions?.visible;
105
+ if (condition) {
106
+ return rulesEngine.evaluate(condition, fieldValues);
107
+ }
108
+ return true;
109
+ });
110
+ if (visibleFields.length === 0) {
111
+ return null; // Skip rendering the entire grid row
112
+ }
113
+ return /*#__PURE__*/ jsx(Grid.Root, {
94
114
  gap: 4,
95
- children: row.map(({ size, ...field })=>{
115
+ children: visibleFields.map(({ size, ...field })=>{
96
116
  return /*#__PURE__*/ jsx(Grid.Item, {
97
117
  col: size,
98
118
  s: 12,
@@ -104,7 +124,8 @@ const createLayoutFromFields = (fields)=>{
104
124
  })
105
125
  }, field.name);
106
126
  })
107
- }, gridRowIndex))
127
+ }, gridRowIndex);
128
+ })
108
129
  })
109
130
  });
110
131
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <Grid.Root key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","some","_jsx","Grid","Root","gap","Item","col","s","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","shadow","paddingLeft","paddingRight","paddingTop","paddingBottom","borderColor","Flex","gridRowIndex","VersionContent","formatMessage","useIntl","useTypedSelector","state","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","_jsxs","Layouts","Content","Form","method","initialValues","position","index","_Fragment","Divider","Typography","variant","id","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","col","s","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","shadow","paddingLeft","paddingRight","paddingTop","paddingBottom","borderColor","Flex","gridRowIndex","visibleFields","filter","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","_jsxs","Layouts","Content","Form","method","initialValues","position","index","_Fragment","Divider","Typography","variant","id","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
@@ -489,11 +489,14 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
489
489
  trackUsage
490
490
  ]);
491
491
  const [autoCloneDocument] = documents.useAutoCloneDocumentMutation();
492
- const autoClone = React__namespace.useCallback(async ({ model, sourceId })=>{
492
+ const autoClone = React__namespace.useCallback(async ({ model, sourceId, locale })=>{
493
493
  try {
494
494
  const res = await autoCloneDocument({
495
495
  model,
496
- sourceId
496
+ sourceId,
497
+ params: locale ? {
498
+ locale
499
+ } : undefined
497
500
  });
498
501
  if ('error' in res) {
499
502
  return {
@@ -523,7 +526,8 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
523
526
  const [cloneDocument] = documents.useCloneDocumentMutation();
524
527
  const clone = React__namespace.useCallback(async ({ model, documentId, params }, body, trackerProperty)=>{
525
528
  try {
526
- const { id: _id, ...restBody } = body;
529
+ // Omit id and documentId so they are not copied to the clone
530
+ const { id: _id, documentId: _documentId, ...restBody } = body;
527
531
  /**
528
532
  * If we're cloning we want to post directly to this endpoint
529
533
  * so that the relations even if they're not listed in the EditView