@strapi/content-manager 5.33.3 → 5.33.4

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 (86) hide show
  1. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +23 -1
  2. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  3. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +23 -1
  4. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +14 -1
  6. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  7. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +14 -1
  8. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +157 -7
  10. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +154 -5
  12. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +28 -20
  14. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +25 -17
  16. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +6 -3
  18. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +7 -4
  20. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +12 -12
  22. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +13 -13
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +2 -2
  26. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  28. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js +4 -8
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs +4 -7
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -12
  34. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -12
  36. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +48 -1
  38. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +49 -2
  40. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +47 -13
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +49 -15
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +1 -0
  46. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +1 -0
  48. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +10 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +10 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +5 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +5 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/InputRenderer.js +6 -2
  58. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/InputRenderer.mjs +6 -2
  60. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/utils/data.js +22 -0
  62. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  63. package/dist/admin/pages/EditView/utils/data.mjs +22 -1
  64. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  65. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.d.ts +9 -1
  66. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +9 -1
  67. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.d.ts +1 -1
  68. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/types.d.ts +2 -4
  69. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +2 -1
  70. package/dist/admin/src/pages/EditView/utils/data.d.ts +6 -1
  71. package/package.json +7 -7
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.js +0 -17
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.js.map +0 -1
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.mjs +0 -15
  75. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.mjs.map +0 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.js +0 -75
  77. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.js.map +0 -1
  78. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.mjs +0 -73
  79. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.mjs.map +0 -1
  80. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +0 -88
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +0 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +0 -84
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +0 -1
  84. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts +0 -11
  85. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts +0 -9
  86. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +0 -12
@@ -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 {\n useField,\n useNotification,\n useForm,\n createRulesEngine,\n useIsDesktop,\n} 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 } 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 = [],\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\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n const rulesEngine = createRulesEngine();\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(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 = () => {\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: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (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\n const handleGrabItem = (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: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (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: getItemPos(index),\n }\n )\n );\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(({ __temp_key__: key, id, ...currentComponentValues }, index) => {\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 <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, currentComponentValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.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.${attribute.component}.${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 document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\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\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\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 displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\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 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={onDeleteComponent}\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 </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\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\nexport { 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","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","rulesEngine","createRulesEngine","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","currentComponentValues","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","row","visibleFields","field","condition","conditions","visible","evaluate","ResponsiveGridRoot","gap","size","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","document","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","isDesktop","useIsDesktop","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","Content","Flex","background","padding","StyledSpan","tag","primary500"],"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 {\n useField,\n useNotification,\n useForm,\n createRulesEngine,\n useIsDesktop,\n} 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 = [],\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\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n const rulesEngine = createRulesEngine();\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(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 = () => {\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: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (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\n const handleGrabItem = (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: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (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: getItemPos(index),\n }\n )\n );\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(({ __temp_key__: key, id, ...currentComponentValues }, index) => {\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 <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n >\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, currentComponentValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.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.${attribute.component}.${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 document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\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\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\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('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\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 displayedValue: displayValue,\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 handleMoveUp = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index > 0 && onMoveItem) {\n onMoveItem(index - 1, index);\n }\n },\n [index, onMoveItem]\n );\n\n const handleMoveDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index < totalLength - 1 && onMoveItem) {\n onMoveItem(index + 1, index);\n }\n },\n [index, totalLength, onMoveItem]\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\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={onDeleteComponent}\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={handleMoveUp}\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={handleMoveDown}\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={6}\n gap={6}\n >\n {children}\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\nexport { 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","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","rulesEngine","createRulesEngine","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","currentComponentValues","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","row","visibleFields","field","condition","conditions","visible","evaluate","ResponsiveGridRoot","gap","size","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","document","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","isDesktop","useIsDesktop","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","handleMoveUp","useCallback","e","stopPropagation","handleMoveDown","canMoveUp","canMoveDown","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","StyledSpan","tag","primary500"],"mappings":"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"}
@@ -37,11 +37,10 @@ function _interopNamespaceDefault(e) {
37
37
 
38
38
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
39
39
 
40
- const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory = {}, onAddComponent, children })=>{
40
+ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory = {}, onAddComponent, totalLength, children })=>{
41
41
  const { formatMessage } = reactIntl.useIntl();
42
42
  const formValues = strapiAdmin.useForm('DynamicComponent', (state)=>state.values);
43
43
  const { currentDocument, currentDocumentMeta } = useDocumentContext.useDocumentContext('DynamicComponent');
44
- const rulesEngine = strapiAdmin.createRulesEngine();
45
44
  const isDesktop = strapiAdmin.useIsDesktop();
46
45
  const { edit: { components } } = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
47
46
  const title = React__namespace.useMemo(()=>{
@@ -110,6 +109,27 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
110
109
  accordionValue
111
110
  ]);
112
111
  const composedBoxRefs = designSystem.useComposedRefs(boxRef, dropRef);
112
+ const handleMoveUp = React__namespace.useCallback((e)=>{
113
+ e.stopPropagation();
114
+ if (index > 0) {
115
+ onMoveComponent(index - 1, index);
116
+ }
117
+ }, [
118
+ index,
119
+ onMoveComponent
120
+ ]);
121
+ const handleMoveDown = React__namespace.useCallback((e)=>{
122
+ e.stopPropagation();
123
+ if (index < totalLength - 1) {
124
+ onMoveComponent(index + 1, index);
125
+ }
126
+ }, [
127
+ index,
128
+ totalLength,
129
+ onMoveComponent
130
+ ]);
131
+ const canMoveUp = index > 0;
132
+ const canMoveDown = index < totalLength - 1;
113
133
  const accordionActions = disabled ? null : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
114
134
  children: [
115
135
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
@@ -135,6 +155,30 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
135
155
  onKeyDown: handleKeyDown,
136
156
  children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Drag, {})
137
157
  }),
158
+ !isDesktop && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
159
+ children: [
160
+ canMoveUp && /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
161
+ variant: "ghost",
162
+ onClick: handleMoveUp,
163
+ disabled: !canMoveUp,
164
+ label: formatMessage({
165
+ id: translations.getTranslation('components.DynamicZone.move-up'),
166
+ defaultMessage: 'Move up'
167
+ }),
168
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.ArrowUp, {})
169
+ }),
170
+ canMoveDown && /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
171
+ variant: "ghost",
172
+ onClick: handleMoveDown,
173
+ disabled: !canMoveDown,
174
+ label: formatMessage({
175
+ id: translations.getTranslation('components.DynamicZone.move-down'),
176
+ defaultMessage: 'Move down'
177
+ }),
178
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.ArrowDown, {})
179
+ })
180
+ ]
181
+ }),
138
182
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
139
183
  children: [
140
184
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Trigger, {
@@ -251,16 +295,6 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
251
295
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
252
296
  gap: 4,
253
297
  children: components[componentUid]?.layout?.map((row, rowInd)=>{
254
- const visibleFields = row.filter(({ ...field })=>{
255
- const condition = field.attribute.conditions?.visible;
256
- if (condition) {
257
- return rulesEngine.evaluate(condition, value);
258
- }
259
- return true;
260
- });
261
- if (visibleFields.length === 0) {
262
- return null; // Skip rendering the entire grid row
263
- }
264
298
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
265
299
  col: 12,
266
300
  xs: 12,
@@ -268,7 +302,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
268
302
  alignItems: "stretch",
269
303
  children: /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridRoot, {
270
304
  gap: 4,
271
- children: visibleFields.map(({ size, ...field })=>{
305
+ children: row.map(({ size, ...field })=>{
272
306
  const fieldName = `${name}.${index}.${field.name}`;
273
307
  const fieldWithTranslatedLabel = {
274
308
  ...field,
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicComponent.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField, createRulesEngine, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const rulesEngine = createRulesEngine();\n const isDesktop = useIsDesktop();\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <Grid.Item\n col={12}\n key={rowInd}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","rulesEngine","createRulesEngine","isDesktop","useIsDesktop","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","e","stopPropagation","data-handler-id","ref","onKeyDown","Drag","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","Item","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","visibleFields","filter","field","condition","attribute","conditions","visible","evaluate","col","xs","direction","alignItems","ResponsiveGridRoot","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","s","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicComponent.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n totalLength: number;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n totalLength,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const isDesktop = useIsDesktop();\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const handleMoveUp = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index > 0) {\n onMoveComponent(index - 1, index);\n }\n },\n [index, onMoveComponent]\n );\n\n const handleMoveDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index < totalLength - 1) {\n onMoveComponent(index + 1, index);\n }\n },\n [index, totalLength, onMoveComponent]\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\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 variant=\"ghost\"\n onClick={handleMoveUp}\n disabled={!canMoveUp}\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 variant=\"ghost\"\n onClick={handleMoveDown}\n disabled={!canMoveDown}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => {\n return (\n <Grid.Item\n col={12}\n key={rowInd}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","totalLength","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","isDesktop","useIsDesktop","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","handleMoveUp","useCallback","e","stopPropagation","handleMoveDown","canMoveUp","canMoveDown","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","data-handler-id","ref","onKeyDown","Drag","ArrowUp","ArrowDown","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","Item","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","col","xs","direction","alignItems","ResponsiveGridRoot","field","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","s","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useForm, createRulesEngine, useIsDesktop, useField } from '@strapi/admin/strapi-admin';
3
+ import { useForm, useIsDesktop, useField } from '@strapi/admin/strapi-admin';
4
4
  import { Box, useComposedRefs, IconButton, Menu, Flex, Accordion, Grid } from '@strapi/design-system';
5
- import { Trash, Drag, More } from '@strapi/icons';
5
+ import { Trash, Drag, ArrowUp, ArrowDown, More } from '@strapi/icons';
6
6
  import { getEmptyImage } from 'react-dnd-html5-backend';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { styled } from 'styled-components';
@@ -16,11 +16,10 @@ import { getTranslation } from '../../../../../utils/translations.mjs';
16
16
  import { ResponsiveGridRoot, ResponsiveGridItem } from '../../FormLayout.mjs';
17
17
  import { InputRenderer as MemoizedInputRenderer } from '../../InputRenderer.mjs';
18
18
 
19
- const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory = {}, onAddComponent, children })=>{
19
+ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory = {}, onAddComponent, totalLength, children })=>{
20
20
  const { formatMessage } = useIntl();
21
21
  const formValues = useForm('DynamicComponent', (state)=>state.values);
22
22
  const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');
23
- const rulesEngine = createRulesEngine();
24
23
  const isDesktop = useIsDesktop();
25
24
  const { edit: { components } } = useDocumentLayout(currentDocumentMeta.model);
26
25
  const title = React.useMemo(()=>{
@@ -89,6 +88,27 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
89
88
  accordionValue
90
89
  ]);
91
90
  const composedBoxRefs = useComposedRefs(boxRef, dropRef);
91
+ const handleMoveUp = React.useCallback((e)=>{
92
+ e.stopPropagation();
93
+ if (index > 0) {
94
+ onMoveComponent(index - 1, index);
95
+ }
96
+ }, [
97
+ index,
98
+ onMoveComponent
99
+ ]);
100
+ const handleMoveDown = React.useCallback((e)=>{
101
+ e.stopPropagation();
102
+ if (index < totalLength - 1) {
103
+ onMoveComponent(index + 1, index);
104
+ }
105
+ }, [
106
+ index,
107
+ totalLength,
108
+ onMoveComponent
109
+ ]);
110
+ const canMoveUp = index > 0;
111
+ const canMoveDown = index < totalLength - 1;
92
112
  const accordionActions = disabled ? null : /*#__PURE__*/ jsxs(Fragment, {
93
113
  children: [
94
114
  /*#__PURE__*/ jsx(IconButton, {
@@ -114,6 +134,30 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
114
134
  onKeyDown: handleKeyDown,
115
135
  children: /*#__PURE__*/ jsx(Drag, {})
116
136
  }),
137
+ !isDesktop && /*#__PURE__*/ jsxs(Fragment, {
138
+ children: [
139
+ canMoveUp && /*#__PURE__*/ jsx(IconButton, {
140
+ variant: "ghost",
141
+ onClick: handleMoveUp,
142
+ disabled: !canMoveUp,
143
+ label: formatMessage({
144
+ id: getTranslation('components.DynamicZone.move-up'),
145
+ defaultMessage: 'Move up'
146
+ }),
147
+ children: /*#__PURE__*/ jsx(ArrowUp, {})
148
+ }),
149
+ canMoveDown && /*#__PURE__*/ jsx(IconButton, {
150
+ variant: "ghost",
151
+ onClick: handleMoveDown,
152
+ disabled: !canMoveDown,
153
+ label: formatMessage({
154
+ id: getTranslation('components.DynamicZone.move-down'),
155
+ defaultMessage: 'Move down'
156
+ }),
157
+ children: /*#__PURE__*/ jsx(ArrowDown, {})
158
+ })
159
+ ]
160
+ }),
117
161
  /*#__PURE__*/ jsxs(Menu.Root, {
118
162
  children: [
119
163
  /*#__PURE__*/ jsx(Menu.Trigger, {
@@ -230,16 +274,6 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
230
274
  children: /*#__PURE__*/ jsx(Grid.Root, {
231
275
  gap: 4,
232
276
  children: components[componentUid]?.layout?.map((row, rowInd)=>{
233
- const visibleFields = row.filter(({ ...field })=>{
234
- const condition = field.attribute.conditions?.visible;
235
- if (condition) {
236
- return rulesEngine.evaluate(condition, value);
237
- }
238
- return true;
239
- });
240
- if (visibleFields.length === 0) {
241
- return null; // Skip rendering the entire grid row
242
- }
243
277
  return /*#__PURE__*/ jsx(Grid.Item, {
244
278
  col: 12,
245
279
  xs: 12,
@@ -247,7 +281,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
247
281
  alignItems: "stretch",
248
282
  children: /*#__PURE__*/ jsx(ResponsiveGridRoot, {
249
283
  gap: 4,
250
- children: visibleFields.map(({ size, ...field })=>{
284
+ children: row.map(({ size, ...field })=>{
251
285
  const fieldName = `${name}.${index}.${field.name}`;
252
286
  const fieldWithTranslatedLabel = {
253
287
  ...field,