@strapi/content-manager 5.57.0 → 5.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +4 -3
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +4 -3
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/RelativeTime.js +2 -1
  6. package/dist/admin/components/RelativeTime.js.map +1 -1
  7. package/dist/admin/components/RelativeTime.mjs +2 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/content-manager.js.map +1 -1
  10. package/dist/admin/content-manager.mjs.map +1 -1
  11. package/dist/admin/history/components/VersionContent.js +8 -8
  12. package/dist/admin/history/components/VersionContent.js.map +1 -1
  13. package/dist/admin/history/components/VersionContent.mjs +8 -8
  14. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  15. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  16. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  18. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  20. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  22. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -2
  24. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
  26. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +7 -6
  28. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +7 -6
  30. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +2 -1
  32. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +2 -1
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +2 -1
  38. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  40. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +4 -3
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +31 -11
  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 +32 -12
  48. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormLayout.js +4 -4
  56. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormLayout.mjs +4 -4
  58. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  60. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/utils/data.js +3 -3
  62. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  63. package/dist/admin/pages/EditView/utils/data.mjs +3 -3
  64. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  65. package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -3
  66. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  67. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +3 -3
  68. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  69. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +2 -2
  70. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  71. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs +2 -2
  72. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  73. package/dist/admin/pages/ListView/ListViewPage.js +73 -13
  74. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  75. package/dist/admin/pages/ListView/ListViewPage.mjs +74 -14
  76. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  77. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js +1 -1
  78. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  79. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs +1 -1
  80. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  81. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  82. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  83. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -1
  84. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  85. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +4 -1
  86. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  87. package/dist/admin/pages/ListView/components/Filters.js +12 -10
  88. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  89. package/dist/admin/pages/ListView/components/Filters.mjs +12 -10
  90. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  91. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  92. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  93. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +2 -1
  94. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  95. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +2 -1
  96. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  97. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js +68 -0
  98. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js.map +1 -0
  99. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs +64 -0
  100. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs.map +1 -0
  101. package/dist/admin/preview/components/PreviewHeader.js +3 -1
  102. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  103. package/dist/admin/preview/components/PreviewHeader.mjs +3 -1
  104. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  105. package/dist/admin/services/relations.js +5 -2
  106. package/dist/admin/services/relations.js.map +1 -1
  107. package/dist/admin/services/relations.mjs +5 -2
  108. package/dist/admin/services/relations.mjs.map +1 -1
  109. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +1 -1
  110. package/dist/admin/src/pages/ListView/utils/applyAttributeRenames.d.ts +12 -0
  111. package/dist/admin/translations/eu.json.js +3 -3
  112. package/dist/admin/translations/eu.json.mjs +3 -3
  113. package/dist/admin/translations/gu.json.js +4 -4
  114. package/dist/admin/translations/gu.json.mjs +4 -4
  115. package/dist/admin/translations/hi.json.js +9 -9
  116. package/dist/admin/translations/hi.json.mjs +9 -9
  117. package/dist/admin/translations/ml.json.js +6 -6
  118. package/dist/admin/translations/ml.json.mjs +6 -6
  119. package/dist/admin/translations/sa.json.js +10 -10
  120. package/dist/admin/translations/sa.json.mjs +10 -10
  121. package/dist/server/history/entitlements.js +26 -0
  122. package/dist/server/history/entitlements.js.map +1 -0
  123. package/dist/server/history/entitlements.mjs +24 -0
  124. package/dist/server/history/entitlements.mjs.map +1 -0
  125. package/dist/server/history/index.js +3 -0
  126. package/dist/server/history/index.js.map +1 -1
  127. package/dist/server/history/index.mjs +3 -0
  128. package/dist/server/history/index.mjs.map +1 -1
  129. package/dist/server/history/services/utils.js +19 -8
  130. package/dist/server/history/services/utils.js.map +1 -1
  131. package/dist/server/history/services/utils.mjs +18 -9
  132. package/dist/server/history/services/utils.mjs.map +1 -1
  133. package/dist/server/homepage/services/homepage.js.map +1 -1
  134. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  135. package/dist/server/preview/services/preview-config.js.map +1 -1
  136. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  137. package/dist/server/register.js +6 -0
  138. package/dist/server/register.js.map +1 -1
  139. package/dist/server/register.mjs +6 -0
  140. package/dist/server/register.mjs.map +1 -1
  141. package/dist/server/services/components.js.map +1 -1
  142. package/dist/server/services/components.mjs.map +1 -1
  143. package/dist/server/services/configuration/rename-fields.js +68 -0
  144. package/dist/server/services/configuration/rename-fields.js.map +1 -0
  145. package/dist/server/services/configuration/rename-fields.mjs +66 -0
  146. package/dist/server/services/configuration/rename-fields.mjs.map +1 -0
  147. package/dist/server/services/utils/configuration/attribute-renames.js +164 -0
  148. package/dist/server/services/utils/configuration/attribute-renames.js.map +1 -0
  149. package/dist/server/services/utils/configuration/attribute-renames.mjs +161 -0
  150. package/dist/server/services/utils/configuration/attribute-renames.mjs.map +1 -0
  151. package/dist/server/services/utils/configuration/attributes.js +12 -12
  152. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  153. package/dist/server/services/utils/configuration/attributes.mjs +12 -12
  154. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  155. package/dist/server/src/history/entitlements.d.ts +9 -0
  156. package/dist/server/src/history/entitlements.d.ts.map +1 -0
  157. package/dist/server/src/history/index.d.ts.map +1 -1
  158. package/dist/server/src/history/services/utils.d.ts +6 -0
  159. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  160. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  161. package/dist/server/src/index.d.ts +2 -0
  162. package/dist/server/src/index.d.ts.map +1 -1
  163. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  164. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  165. package/dist/server/src/register.d.ts.map +1 -1
  166. package/dist/server/src/services/components.d.ts +2 -0
  167. package/dist/server/src/services/components.d.ts.map +1 -1
  168. package/dist/server/src/services/configuration/rename-fields.d.ts +15 -0
  169. package/dist/server/src/services/configuration/rename-fields.d.ts.map +1 -0
  170. package/dist/server/src/services/index.d.ts +2 -0
  171. package/dist/server/src/services/index.d.ts.map +1 -1
  172. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts +57 -0
  173. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts.map +1 -0
  174. package/dist/shared/contracts/content-types.d.ts +5 -0
  175. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  176. package/dist/shared/contracts/relations.d.ts +1 -0
  177. package/dist/shared/contracts/relations.d.ts.map +1 -1
  178. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Repeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value: rawValue,\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n const value = React.useMemo(() => (Array.isArray(rawValue) ? rawValue : []), [rawValue]);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn<\n Schema.Attribute.ComponentValue<`${string}.${string}`, true>[number] & {\n __temp_key__?: string;\n }\n >(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = React.useCallback(() => {\n setCollapseToOpen('');\n }, []);\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField = React.useCallback(\n (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: `${newIndex + 1} of ${value.length}`,\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n },\n [formatMessage, moveFieldRow, name, value.length]\n );\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const handleCancel = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n },\n [formatMessage, name]\n );\n\n const handleGrabItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDropItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDeleteComponent = React.useCallback(\n (index: number) => {\n removeFieldRow(name, index);\n toggleCollapses();\n },\n [name, removeFieldRow, toggleCollapses]\n );\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map((componentValue, index) => {\n const key = componentValue.__temp_key__;\n const id = componentValue.id;\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <MemoizedComponent\n disabled={disabled}\n name={nameWithIndex}\n attributeComponent={attribute.component}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={handleDeleteComponent}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n layout={layout}\n renderField={children}\n />\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\ninterface RepeatableComponentFieldsProps\n extends Pick<RepeatableComponentProps, 'children' | 'layout'> {\n attributeComponent: string;\n nameWithIndex: string;\n}\n\nconst RepeatableComponentFields = React.memo(\n ({ attributeComponent, children, layout, nameWithIndex }: RepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attributeComponent}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </>\n );\n }\n);\n\nRepeatableComponentFields.displayName = 'RepeatableComponentFields';\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField' | 'layout'> {\n attributeComponent: string;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: (index: number) => void;\n renderField: RepeatableComponentProps['children'];\n toggleCollapses: () => void;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n attributeComponent,\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n layout,\n onDeleteComponent,\n renderField,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm<string | undefined>('RepeatableComponent', (state) => {\n return getIn<string>(state.values, [...name.split('.'), mainField.name]);\n });\n const displayedValue = typeof displayValue === 'string' ? displayValue : '';\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n id: __temp_key__,\n displayedValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n const handleDeleteClick = () => {\n onDeleteComponent?.(index);\n };\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={handleDeleteClick}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index - 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index + 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n <RepeatableComponentFields\n attributeComponent={attributeComponent}\n layout={layout}\n nameWithIndex={name}\n >\n {renderField}\n </RepeatableComponentFields>\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nconst MemoizedComponent = React.memo(Component);\nconst MemoizedRepeatableComponent = React.memo(RepeatableComponent);\n\nexport { MemoizedRepeatableComponent as RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","rawValue","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","Array","isArray","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","useCallback","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","handleValueChange","key","handleCancel","index","handleGrabItem","handleDropItem","handleDeleteComponent","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","componentValue","nameWithIndex","ComponentProvider","uid","MemoizedComponent","attributeComponent","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","renderField","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","RepeatableComponentFields","memo","_Fragment","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","displayName","Component","dragProps","isDesktop","useIsDesktop","displayValue","values","displayedValue","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","canMoveUp","canMoveDown","handleDeleteClick","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","StyledSpan","tag","primary500","MemoizedRepeatableComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Repeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\nconst DEFAULT_MAIN_FIELD: NonNullable<ComponentProps['mainField']> = {\n name: 'id',\n type: 'integer',\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value: rawValue,\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n const value = React.useMemo(() => (Array.isArray(rawValue) ? rawValue : []), [rawValue]);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn<\n Schema.Attribute.ComponentValue<`${string}.${string}`, true>[number] & {\n __temp_key__?: string;\n }\n >(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = React.useCallback(() => {\n setCollapseToOpen('');\n }, []);\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField = React.useCallback(\n (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: `${newIndex + 1} of ${value.length}`,\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n },\n [formatMessage, moveFieldRow, name, value.length]\n );\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const handleCancel = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n },\n [formatMessage, name]\n );\n\n const handleGrabItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDropItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDeleteComponent = React.useCallback(\n (index: number) => {\n removeFieldRow(name, index);\n toggleCollapses();\n },\n [name, removeFieldRow, toggleCollapses]\n );\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map((componentValue, index) => {\n const key = componentValue.__temp_key__;\n const id = componentValue.id;\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <MemoizedComponent\n disabled={disabled}\n name={nameWithIndex}\n attributeComponent={attribute.component}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={handleDeleteComponent}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n layout={layout}\n renderField={children}\n />\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\ninterface RepeatableComponentFieldsProps extends Pick<\n RepeatableComponentProps,\n 'children' | 'layout'\n> {\n attributeComponent: string;\n nameWithIndex: string;\n}\n\nconst RepeatableComponentFields = React.memo(\n ({ attributeComponent, children, layout, nameWithIndex }: RepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {layout.map((row) => {\n return (\n <ResponsiveGridRoot gap={4} key={row.map((field) => field.name).join('.')}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attributeComponent}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </>\n );\n }\n);\n\nRepeatableComponentFields.displayName = 'RepeatableComponentFields';\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends\n Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField' | 'layout'> {\n attributeComponent: string;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: (index: number) => void;\n renderField: RepeatableComponentProps['children'];\n toggleCollapses: () => void;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n attributeComponent,\n disabled,\n index,\n name,\n mainField = DEFAULT_MAIN_FIELD,\n layout,\n onDeleteComponent,\n renderField,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm<string | undefined>('RepeatableComponent', (state) => {\n return getIn<string>(state.values, [...name.split('.'), mainField.name]);\n });\n const displayedValue = typeof displayValue === 'string' ? displayValue : '';\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n id: __temp_key__,\n displayedValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n const handleDeleteClick = () => {\n onDeleteComponent?.(index);\n };\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={handleDeleteClick}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index - 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index + 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n <RepeatableComponentFields\n attributeComponent={attributeComponent}\n layout={layout}\n nameWithIndex={name}\n >\n {renderField}\n </RepeatableComponentFields>\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nconst MemoizedComponent = React.memo(Component);\nconst MemoizedRepeatableComponent = React.memo(RepeatableComponent);\n\nexport { MemoizedRepeatableComponent as RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["DEFAULT_MAIN_FIELD","name","type","RepeatableComponent","attribute","disabled","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","rawValue","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","Array","isArray","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","useCallback","handleClick","schema","component","form","createDefaultForm","data","transformDocument","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","handleValueChange","key","handleCancel","index","handleGrabItem","handleDropItem","handleDeleteComponent","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","componentValue","nameWithIndex","ComponentProvider","uid","MemoizedComponent","attributeComponent","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","renderField","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","RepeatableComponentFields","memo","_Fragment","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","join","displayName","Component","dragProps","isDesktop","useIsDesktop","displayValue","values","displayedValue","accordionRef","useRef","componentKey","slice","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","canMoveUp","canMoveDown","handleDeleteClick","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","StyledSpan","tag","primary500","MemoizedRepeatableComponent"],"mappings":"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"}
@@ -19,6 +19,10 @@ import { ResponsiveGridRoot, ResponsiveGridItem } from '../../FormLayout.mjs';
19
19
  import { useComponent, ComponentProvider } from '../ComponentContext.mjs';
20
20
  import { Initializer } from './Initializer.mjs';
21
21
 
22
+ const DEFAULT_MAIN_FIELD = {
23
+ name: 'id',
24
+ type: 'integer'
25
+ };
22
26
  const RepeatableComponent = ({ attribute, disabled, name, mainField, children, layout })=>{
23
27
  const { toggleNotification } = useNotification();
24
28
  const { formatMessage } = useIntl();
@@ -285,7 +289,7 @@ const TextButtonCustom = styled(TextButton)`
285
289
  const RepeatableComponentFields = /*#__PURE__*/ React.memo(({ attributeComponent, children, layout, nameWithIndex })=>{
286
290
  const { formatMessage } = useIntl();
287
291
  return /*#__PURE__*/ jsx(Fragment, {
288
- children: layout.map((row, index)=>{
292
+ children: layout.map((row)=>{
289
293
  return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
290
294
  gap: 4,
291
295
  children: row.map(({ size, ...field })=>{
@@ -312,15 +316,12 @@ const RepeatableComponentFields = /*#__PURE__*/ React.memo(({ attributeComponent
312
316
  })
313
317
  }, completeFieldName);
314
318
  })
315
- }, index);
319
+ }, row.map((field)=>field.name).join('.'));
316
320
  })
317
321
  });
318
322
  });
319
323
  RepeatableComponentFields.displayName = 'RepeatableComponentFields';
320
- const Component = ({ attributeComponent, disabled, index, name, mainField = {
321
- name: 'id',
322
- type: 'integer'
323
- }, layout, onDeleteComponent, renderField, toggleCollapses, __temp_key__, totalLength, onMoveItem, ...dragProps })=>{
324
+ const Component = ({ attributeComponent, disabled, index, name, mainField = DEFAULT_MAIN_FIELD, layout, onDeleteComponent, renderField, toggleCollapses, __temp_key__, totalLength, onMoveItem, ...dragProps })=>{
324
325
  const { formatMessage } = useIntl();
325
326
  const isDesktop = useIsDesktop();
326
327
  const displayValue = useForm('RepeatableComponent', (state)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"Repeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value: rawValue,\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n const value = React.useMemo(() => (Array.isArray(rawValue) ? rawValue : []), [rawValue]);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn<\n Schema.Attribute.ComponentValue<`${string}.${string}`, true>[number] & {\n __temp_key__?: string;\n }\n >(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = React.useCallback(() => {\n setCollapseToOpen('');\n }, []);\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField = React.useCallback(\n (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: `${newIndex + 1} of ${value.length}`,\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n },\n [formatMessage, moveFieldRow, name, value.length]\n );\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const handleCancel = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n },\n [formatMessage, name]\n );\n\n const handleGrabItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDropItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDeleteComponent = React.useCallback(\n (index: number) => {\n removeFieldRow(name, index);\n toggleCollapses();\n },\n [name, removeFieldRow, toggleCollapses]\n );\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map((componentValue, index) => {\n const key = componentValue.__temp_key__;\n const id = componentValue.id;\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <MemoizedComponent\n disabled={disabled}\n name={nameWithIndex}\n attributeComponent={attribute.component}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={handleDeleteComponent}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n layout={layout}\n renderField={children}\n />\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\ninterface RepeatableComponentFieldsProps\n extends Pick<RepeatableComponentProps, 'children' | 'layout'> {\n attributeComponent: string;\n nameWithIndex: string;\n}\n\nconst RepeatableComponentFields = React.memo(\n ({ attributeComponent, children, layout, nameWithIndex }: RepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attributeComponent}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </>\n );\n }\n);\n\nRepeatableComponentFields.displayName = 'RepeatableComponentFields';\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField' | 'layout'> {\n attributeComponent: string;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: (index: number) => void;\n renderField: RepeatableComponentProps['children'];\n toggleCollapses: () => void;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n attributeComponent,\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n layout,\n onDeleteComponent,\n renderField,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm<string | undefined>('RepeatableComponent', (state) => {\n return getIn<string>(state.values, [...name.split('.'), mainField.name]);\n });\n const displayedValue = typeof displayValue === 'string' ? displayValue : '';\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n id: __temp_key__,\n displayedValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n const handleDeleteClick = () => {\n onDeleteComponent?.(index);\n };\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={handleDeleteClick}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index - 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index + 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n <RepeatableComponentFields\n attributeComponent={attributeComponent}\n layout={layout}\n nameWithIndex={name}\n >\n {renderField}\n </RepeatableComponentFields>\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nconst MemoizedComponent = React.memo(Component);\nconst MemoizedRepeatableComponent = React.memo(RepeatableComponent);\n\nexport { MemoizedRepeatableComponent as RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","rawValue","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","Array","isArray","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","useCallback","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","handleValueChange","key","handleCancel","index","handleGrabItem","handleDropItem","handleDeleteComponent","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","componentValue","nameWithIndex","ComponentProvider","uid","MemoizedComponent","attributeComponent","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","renderField","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","RepeatableComponentFields","memo","_Fragment","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","displayName","Component","dragProps","isDesktop","useIsDesktop","displayValue","values","displayedValue","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","canMoveUp","canMoveDown","handleDeleteClick","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","StyledSpan","tag","primary500","MemoizedRepeatableComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Repeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\nconst DEFAULT_MAIN_FIELD: NonNullable<ComponentProps['mainField']> = {\n name: 'id',\n type: 'integer',\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value: rawValue,\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n const value = React.useMemo(() => (Array.isArray(rawValue) ? rawValue : []), [rawValue]);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn<\n Schema.Attribute.ComponentValue<`${string}.${string}`, true>[number] & {\n __temp_key__?: string;\n }\n >(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = React.useCallback(() => {\n setCollapseToOpen('');\n }, []);\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField = React.useCallback(\n (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: `${newIndex + 1} of ${value.length}`,\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n },\n [formatMessage, moveFieldRow, name, value.length]\n );\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const handleCancel = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n },\n [formatMessage, name]\n );\n\n const handleGrabItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDropItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDeleteComponent = React.useCallback(\n (index: number) => {\n removeFieldRow(name, index);\n toggleCollapses();\n },\n [name, removeFieldRow, toggleCollapses]\n );\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map((componentValue, index) => {\n const key = componentValue.__temp_key__;\n const id = componentValue.id;\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <MemoizedComponent\n disabled={disabled}\n name={nameWithIndex}\n attributeComponent={attribute.component}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={handleDeleteComponent}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n layout={layout}\n renderField={children}\n />\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\ninterface RepeatableComponentFieldsProps extends Pick<\n RepeatableComponentProps,\n 'children' | 'layout'\n> {\n attributeComponent: string;\n nameWithIndex: string;\n}\n\nconst RepeatableComponentFields = React.memo(\n ({ attributeComponent, children, layout, nameWithIndex }: RepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {layout.map((row) => {\n return (\n <ResponsiveGridRoot gap={4} key={row.map((field) => field.name).join('.')}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attributeComponent}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </>\n );\n }\n);\n\nRepeatableComponentFields.displayName = 'RepeatableComponentFields';\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends\n Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField' | 'layout'> {\n attributeComponent: string;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: (index: number) => void;\n renderField: RepeatableComponentProps['children'];\n toggleCollapses: () => void;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n attributeComponent,\n disabled,\n index,\n name,\n mainField = DEFAULT_MAIN_FIELD,\n layout,\n onDeleteComponent,\n renderField,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm<string | undefined>('RepeatableComponent', (state) => {\n return getIn<string>(state.values, [...name.split('.'), mainField.name]);\n });\n const displayedValue = typeof displayValue === 'string' ? displayValue : '';\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n id: __temp_key__,\n displayedValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n const handleDeleteClick = () => {\n onDeleteComponent?.(index);\n };\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={handleDeleteClick}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index - 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index + 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n <RepeatableComponentFields\n attributeComponent={attributeComponent}\n layout={layout}\n nameWithIndex={name}\n >\n {renderField}\n </RepeatableComponentFields>\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nconst MemoizedComponent = React.memo(Component);\nconst MemoizedRepeatableComponent = React.memo(RepeatableComponent);\n\nexport { MemoizedRepeatableComponent as RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["DEFAULT_MAIN_FIELD","name","type","RepeatableComponent","attribute","disabled","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","rawValue","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","Array","isArray","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","useCallback","handleClick","schema","component","form","createDefaultForm","data","transformDocument","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","handleValueChange","key","handleCancel","index","handleGrabItem","handleDropItem","handleDeleteComponent","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","componentValue","nameWithIndex","ComponentProvider","uid","MemoizedComponent","attributeComponent","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","renderField","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","RepeatableComponentFields","memo","_Fragment","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","join","displayName","Component","dragProps","isDesktop","useIsDesktop","displayValue","values","displayedValue","accordionRef","useRef","componentKey","slice","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","canMoveUp","canMoveDown","handleDeleteClick","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","StyledSpan","tag","primary500","MemoizedRepeatableComponent"],"mappings":"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"}
@@ -32,6 +32,7 @@ function _interopNamespace(e) {
32
32
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
33
  var upperFirst__default = /*#__PURE__*/_interopDefault(upperFirst);
34
34
 
35
+ const EMPTY_COMPONENTS = [];
35
36
  /**
36
37
  * Renders a small preview thumbnail inside the component picker tile and, on hover,
37
38
  * a larger portaled preview so authors can read the component at a glance without picking it.
@@ -104,7 +105,7 @@ var upperFirst__default = /*#__PURE__*/_interopDefault(upperFirst);
104
105
  onError: ()=>setHasLoadError(true)
105
106
  });
106
107
  };
107
- const ComponentCategory = ({ category, components = [], variant = 'primary', onAddComponent })=>{
108
+ const ComponentCategory = ({ category, components = EMPTY_COMPONENTS, variant = 'primary', onAddComponent })=>{
108
109
  const { formatMessage } = reactIntl.useIntl();
109
110
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Accordion.Item, {
110
111
  value: category,
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentCategory.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n Flex,\n FlexComponent,\n Popover,\n Tooltip,\n Typography,\n} from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ComponentIcon } from '../../../../../components/ComponentIcon';\nimport { resolvePreviewImageUrl } from '../../../../../utils/previewImage';\n\nimport type { Struct } from '@strapi/types';\n\ninterface ComponentCategoryProps {\n category: string;\n components?: Array<{\n uid: string;\n displayName: string;\n icon?: string;\n preview?: Struct.PreviewImageValue;\n }>;\n onAddComponent: (\n componentUid: string\n ) => React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n variant?: Accordion.Variant;\n}\n\ninterface ComponentPreviewImageProps {\n src: string;\n alt: string;\n onError?: React.ReactEventHandler<HTMLImageElement>;\n}\n\n/**\n * Renders a small preview thumbnail inside the component picker tile and, on hover,\n * a larger portaled preview so authors can read the component at a glance without picking it.\n * Uses a controlled Popover anchored to the thumbnail — the content is portaled, so it escapes\n * the accordion's overflow clipping.\n */\nconst ComponentPreviewImage = ({ src, alt, onError }: ComponentPreviewImageProps) => {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Anchor>\n <Box\n tag=\"img\"\n src={src}\n alt={alt}\n loading=\"lazy\"\n width=\"100%\"\n height=\"5.2rem\"\n hasRadius\n style={{ objectFit: 'cover' }}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n onError={onError}\n />\n </Popover.Anchor>\n <Popover.Content\n side=\"top\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n style={{ pointerEvents: 'none' }}\n >\n <Box padding={2}>\n <Box\n tag=\"img\"\n src={src}\n alt={alt}\n hasRadius\n style={{\n display: 'block',\n maxWidth: 'min(60rem, 90vw)',\n maxHeight: 'min(45rem, 80vh)',\n objectFit: 'contain',\n }}\n />\n </Box>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\ninterface ComponentTileVisualProps {\n previewUrl?: string;\n icon?: string;\n displayName: string;\n}\n\n/**\n * Holds per-tile load-error state: when the preview image fails to load (missing file,\n * unreachable CDN…), the tile falls back to the component icon instead of a broken image.\n */\nconst ComponentTileVisual = ({ previewUrl, icon, displayName }: ComponentTileVisualProps) => {\n const [hasLoadError, setHasLoadError] = React.useState(false);\n\n if (!previewUrl || hasLoadError) {\n return <ComponentIcon color=\"currentColor\" background=\"primary200\" icon={icon} />;\n }\n\n return (\n <ComponentPreviewImage\n src={previewUrl}\n alt={displayName}\n onError={() => setHasLoadError(true)}\n />\n );\n};\n\nconst ComponentCategory = ({\n category,\n components = [],\n variant = 'primary',\n onAddComponent,\n}: ComponentCategoryProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Accordion.Item value={category}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger>\n {formatMessage({ id: category, defaultMessage: upperFirst(category) })}\n </Accordion.Trigger>\n </Accordion.Header>\n <ResponsiveAccordionContent>\n <Grid paddingTop={4} paddingBottom={4} paddingLeft={3} paddingRight={3}>\n {components.map(({ uid, displayName, icon, preview }) => {\n const previewUrl = resolvePreviewImageUrl(preview);\n\n return (\n <ComponentBox\n key={uid}\n tag=\"button\"\n type=\"button\"\n background=\"neutral100\"\n justifyContent=\"center\"\n onClick={onAddComponent(uid)}\n hasRadius\n height=\"8.4rem\"\n shrink={0}\n borderColor=\"neutral200\"\n >\n <Flex\n direction=\"column\"\n gap={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n width=\"100%\"\n paddingLeft={2}\n paddingRight={2}\n >\n <ComponentTileVisual\n previewUrl={previewUrl}\n icon={icon}\n displayName={displayName}\n />\n\n <Tooltip label={formatMessage({ id: uid, defaultMessage: displayName ?? uid })}>\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis width=\"100%\">\n {formatMessage({ id: uid, defaultMessage: displayName ?? uid })}\n </Typography>\n </Tooltip>\n </Flex>\n </ComponentBox>\n );\n })}\n </Grid>\n </ResponsiveAccordionContent>\n </Accordion.Item>\n );\n};\n\nconst ResponsiveAccordionContent = styled(Accordion.Content)`\n container-type: inline-size;\n`;\n\n/**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\nconst Grid =\n process.env.NODE_ENV !== 'test'\n ? styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, 100%);\n grid-gap: 12px;\n\n ${({ theme }) => theme.breakpoints.medium} {\n grid-template-columns: repeat(auto-fill, 14rem);\n grid-gap: 4px;\n }\n `\n : styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, 100%);\n grid-gap: 12px;\n\n ${({ theme }) => theme.breakpoints.medium} {\n grid-gap: 4px;\n }\n `;\n\nconst ComponentBox = styled<FlexComponent<'button'>>(Flex)`\n color: ${({ theme }) => theme.colors.neutral600};\n cursor: pointer;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ComponentCategory };\nexport type { ComponentCategoryProps };\n"],"names":["ComponentPreviewImage","src","alt","onError","open","setOpen","React","useState","_jsxs","Popover","Root","onOpenChange","_jsx","Anchor","Box","tag","loading","width","height","hasRadius","style","objectFit","onMouseEnter","onMouseLeave","Content","side","sideOffset","onOpenAutoFocus","e","preventDefault","pointerEvents","padding","display","maxWidth","maxHeight","ComponentTileVisual","previewUrl","icon","displayName","hasLoadError","setHasLoadError","ComponentIcon","color","background","ComponentCategory","category","components","variant","onAddComponent","formatMessage","useIntl","Accordion","Item","value","Header","Trigger","id","defaultMessage","upperFirst","ResponsiveAccordionContent","Grid","paddingTop","paddingBottom","paddingLeft","paddingRight","map","uid","preview","resolvePreviewImageUrl","ComponentBox","type","justifyContent","onClick","shrink","borderColor","Flex","direction","gap","alignItems","Tooltip","label","Typography","fontWeight","ellipsis","styled","process","env","NODE_ENV","theme","breakpoints","medium","colors","neutral600","props","motion","easings","easeOutQuad","primary200","primary100","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"ComponentCategory.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n Flex,\n FlexComponent,\n Popover,\n Tooltip,\n Typography,\n} from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ComponentIcon } from '../../../../../components/ComponentIcon';\nimport { resolvePreviewImageUrl } from '../../../../../utils/previewImage';\n\nimport type { Struct } from '@strapi/types';\n\nconst EMPTY_COMPONENTS: NonNullable<ComponentCategoryProps['components']> = [];\n\ninterface ComponentCategoryProps {\n category: string;\n components?: Array<{\n uid: string;\n displayName: string;\n icon?: string;\n preview?: Struct.PreviewImageValue;\n }>;\n onAddComponent: (\n componentUid: string\n ) => React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n variant?: Accordion.Variant;\n}\n\ninterface ComponentPreviewImageProps {\n src: string;\n alt: string;\n onError?: React.ReactEventHandler<HTMLImageElement>;\n}\n\n/**\n * Renders a small preview thumbnail inside the component picker tile and, on hover,\n * a larger portaled preview so authors can read the component at a glance without picking it.\n * Uses a controlled Popover anchored to the thumbnail — the content is portaled, so it escapes\n * the accordion's overflow clipping.\n */\nconst ComponentPreviewImage = ({ src, alt, onError }: ComponentPreviewImageProps) => {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Anchor>\n <Box\n tag=\"img\"\n src={src}\n alt={alt}\n loading=\"lazy\"\n width=\"100%\"\n height=\"5.2rem\"\n hasRadius\n style={{ objectFit: 'cover' }}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n onError={onError}\n />\n </Popover.Anchor>\n <Popover.Content\n side=\"top\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n style={{ pointerEvents: 'none' }}\n >\n <Box padding={2}>\n <Box\n tag=\"img\"\n src={src}\n alt={alt}\n hasRadius\n style={{\n display: 'block',\n maxWidth: 'min(60rem, 90vw)',\n maxHeight: 'min(45rem, 80vh)',\n objectFit: 'contain',\n }}\n />\n </Box>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\ninterface ComponentTileVisualProps {\n previewUrl?: string;\n icon?: string;\n displayName: string;\n}\n\n/**\n * Holds per-tile load-error state: when the preview image fails to load (missing file,\n * unreachable CDN…), the tile falls back to the component icon instead of a broken image.\n */\nconst ComponentTileVisual = ({ previewUrl, icon, displayName }: ComponentTileVisualProps) => {\n const [hasLoadError, setHasLoadError] = React.useState(false);\n\n if (!previewUrl || hasLoadError) {\n return <ComponentIcon color=\"currentColor\" background=\"primary200\" icon={icon} />;\n }\n\n return (\n <ComponentPreviewImage\n src={previewUrl}\n alt={displayName}\n onError={() => setHasLoadError(true)}\n />\n );\n};\n\nconst ComponentCategory = ({\n category,\n components = EMPTY_COMPONENTS,\n variant = 'primary',\n onAddComponent,\n}: ComponentCategoryProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Accordion.Item value={category}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger>\n {formatMessage({ id: category, defaultMessage: upperFirst(category) })}\n </Accordion.Trigger>\n </Accordion.Header>\n <ResponsiveAccordionContent>\n <Grid paddingTop={4} paddingBottom={4} paddingLeft={3} paddingRight={3}>\n {components.map(({ uid, displayName, icon, preview }) => {\n const previewUrl = resolvePreviewImageUrl(preview);\n\n return (\n <ComponentBox\n key={uid}\n tag=\"button\"\n type=\"button\"\n background=\"neutral100\"\n justifyContent=\"center\"\n onClick={onAddComponent(uid)}\n hasRadius\n height=\"8.4rem\"\n shrink={0}\n borderColor=\"neutral200\"\n >\n <Flex\n direction=\"column\"\n gap={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n width=\"100%\"\n paddingLeft={2}\n paddingRight={2}\n >\n <ComponentTileVisual\n previewUrl={previewUrl}\n icon={icon}\n displayName={displayName}\n />\n\n <Tooltip label={formatMessage({ id: uid, defaultMessage: displayName ?? uid })}>\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis width=\"100%\">\n {formatMessage({ id: uid, defaultMessage: displayName ?? uid })}\n </Typography>\n </Tooltip>\n </Flex>\n </ComponentBox>\n );\n })}\n </Grid>\n </ResponsiveAccordionContent>\n </Accordion.Item>\n );\n};\n\nconst ResponsiveAccordionContent = styled(Accordion.Content)`\n container-type: inline-size;\n`;\n\n/**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\nconst Grid =\n process.env.NODE_ENV !== 'test'\n ? styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, 100%);\n grid-gap: 12px;\n\n ${({ theme }) => theme.breakpoints.medium} {\n grid-template-columns: repeat(auto-fill, 14rem);\n grid-gap: 4px;\n }\n `\n : styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, 100%);\n grid-gap: 12px;\n\n ${({ theme }) => theme.breakpoints.medium} {\n grid-gap: 4px;\n }\n `;\n\nconst ComponentBox = styled<FlexComponent<'button'>>(Flex)`\n color: ${({ theme }) => theme.colors.neutral600};\n cursor: pointer;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ComponentCategory };\nexport type { ComponentCategoryProps };\n"],"names":["EMPTY_COMPONENTS","ComponentPreviewImage","src","alt","onError","open","setOpen","React","useState","_jsxs","Popover","Root","onOpenChange","_jsx","Anchor","Box","tag","loading","width","height","hasRadius","style","objectFit","onMouseEnter","onMouseLeave","Content","side","sideOffset","onOpenAutoFocus","e","preventDefault","pointerEvents","padding","display","maxWidth","maxHeight","ComponentTileVisual","previewUrl","icon","displayName","hasLoadError","setHasLoadError","ComponentIcon","color","background","ComponentCategory","category","components","variant","onAddComponent","formatMessage","useIntl","Accordion","Item","value","Header","Trigger","id","defaultMessage","upperFirst","ResponsiveAccordionContent","Grid","paddingTop","paddingBottom","paddingLeft","paddingRight","map","uid","preview","resolvePreviewImageUrl","ComponentBox","type","justifyContent","onClick","shrink","borderColor","Flex","direction","gap","alignItems","Tooltip","label","Typography","fontWeight","ellipsis","styled","process","env","NODE_ENV","theme","breakpoints","medium","colors","neutral600","props","motion","easings","easeOutQuad","primary200","primary100","primary600"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { styled } from 'styled-components';
7
7
  import { ComponentIcon } from '../../../../../components/ComponentIcon.mjs';
8
8
  import { resolvePreviewImageUrl } from '../../../../../utils/previewImage.mjs';
9
9
 
10
+ const EMPTY_COMPONENTS = [];
10
11
  /**
11
12
  * Renders a small preview thumbnail inside the component picker tile and, on hover,
12
13
  * a larger portaled preview so authors can read the component at a glance without picking it.
@@ -79,7 +80,7 @@ import { resolvePreviewImageUrl } from '../../../../../utils/previewImage.mjs';
79
80
  onError: ()=>setHasLoadError(true)
80
81
  });
81
82
  };
82
- const ComponentCategory = ({ category, components = [], variant = 'primary', onAddComponent })=>{
83
+ const ComponentCategory = ({ category, components = EMPTY_COMPONENTS, variant = 'primary', onAddComponent })=>{
83
84
  const { formatMessage } = useIntl();
84
85
  return /*#__PURE__*/ jsxs(Accordion.Item, {
85
86
  value: category,