@strapi/content-manager 5.35.0 → 5.36.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 (81) hide show
  1. package/dist/admin/components/ActionsDrawer.js +5 -1
  2. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  3. package/dist/admin/components/ActionsDrawer.mjs +5 -2
  4. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +1 -28
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +2 -29
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionContent.js +74 -59
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +75 -60
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionsList.js +139 -54
  14. package/dist/admin/history/components/VersionsList.js.map +1 -1
  15. package/dist/admin/history/components/VersionsList.mjs +141 -56
  16. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  17. package/dist/admin/history/pages/History.js +27 -9
  18. package/dist/admin/history/pages/History.js.map +1 -1
  19. package/dist/admin/history/pages/History.mjs +28 -10
  20. package/dist/admin/history/pages/History.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocument.js +1 -1
  22. package/dist/admin/hooks/useDocument.js.map +1 -1
  23. package/dist/admin/hooks/useDocument.mjs +1 -1
  24. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  25. package/dist/admin/hooks/usePersistentQueryParams.js +56 -0
  26. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -0
  27. package/dist/admin/hooks/usePersistentQueryParams.mjs +54 -0
  28. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -0
  29. package/dist/admin/pages/EditView/EditViewPage.js +10 -3
  30. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  31. package/dist/admin/pages/EditView/EditViewPage.mjs +11 -4
  32. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +10 -6
  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 +11 -7
  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 +8 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +8 -2
  40. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js +9 -1
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs +9 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +7 -2
  46. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +7 -2
  48. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +30 -11
  50. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +31 -12
  52. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -4
  54. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +4 -4
  56. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +4 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +4 -1
  60. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormLayout.js +6 -9
  62. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormLayout.mjs +6 -9
  64. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/Header.js +2 -0
  66. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/Header.mjs +2 -0
  68. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  69. package/dist/admin/pages/ListView/ListViewPage.js +50 -18
  70. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  71. package/dist/admin/pages/ListView/ListViewPage.mjs +51 -19
  72. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  73. package/dist/admin/src/components/ActionsDrawer.d.ts +17 -1
  74. package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +5 -0
  75. package/dist/server/preview/services/preview.js +1 -1
  76. package/dist/server/preview/services/preview.js.map +1 -1
  77. package/dist/server/preview/services/preview.mjs +1 -1
  78. package/dist/server/preview/services/preview.mjs.map +1 -1
  79. package/dist/server/src/preview/services/index.d.ts +1 -1
  80. package/dist/server/src/preview/utils.d.ts +1 -1
  81. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n createContext,\n InputProps,\n useField,\n useForm,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { AddComponentButton } from './AddComponentButton';\nimport { ComponentPicker } from './ComponentPicker';\nimport { DynamicComponent, DynamicComponentProps } from './DynamicComponent';\nimport { DynamicZoneLabel, DynamicZoneLabelProps } from './DynamicZoneLabel';\n\nimport type { InputRendererProps } from '../../InputRenderer';\nimport type { Schema } from '@strapi/types';\n\ninterface DynamicZoneContextValue {\n isInDynamicZone: boolean;\n}\n\nconst [DynamicZoneProvider, useDynamicZone] = createContext<DynamicZoneContextValue>(\n 'DynamicZone',\n {\n isInDynamicZone: false,\n }\n);\n\ninterface DynamicZoneProps\n extends Omit<Extract<EditFieldLayout, { type: 'dynamiczone' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'>,\n Pick<DynamicZoneLabelProps, 'labelAction'> {\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicZone = ({\n attribute,\n disabled: disabledProp,\n hint,\n label,\n labelAction,\n name,\n required = false,\n children,\n}: DynamicZoneProps) => {\n // We cannot use the default props here\n const { max = Infinity, min = -Infinity } = attribute ?? {};\n\n const [addComponentIsOpen, setAddComponentIsOpen] = React.useState(false);\n const [liveText, setLiveText] = React.useState('');\n\n const {\n currentDocument: { components, isLoading },\n } = useDocumentContext('DynamicZone');\n\n const disabled = disabledProp || isLoading;\n const { addFieldRow, removeFieldRow, moveFieldRow } = useForm(\n 'DynamicZone',\n ({ addFieldRow, removeFieldRow, moveFieldRow }) => ({\n addFieldRow,\n removeFieldRow,\n moveFieldRow,\n })\n );\n\n type DzWithTempKey =\n Schema.Attribute.GetDynamicZoneValue<Schema.Attribute.DynamicZone>[number] & {\n __temp_key__: number;\n };\n\n const { value = [], error } = useField<Array<DzWithTempKey>>(name);\n\n const dynamicComponentsByCategory = React.useMemo(() => {\n return attribute.components.reduce<\n NonNullable<DynamicComponentProps['dynamicComponentsByCategory']>\n >((acc, componentUid) => {\n const { category, info } = components[componentUid] ?? { info: {} };\n\n const component = { uid: componentUid, displayName: info.displayName, icon: info.icon };\n\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category] = [...acc[category], component];\n\n return acc;\n }, {});\n }, [attribute.components, components]);\n\n const { formatMessage } = useIntl();\n\n const { toggleNotification } = useNotification();\n\n const dynamicDisplayedComponentsLength = value.length;\n\n const handleAddComponent = (uid: string, position?: number) => {\n setAddComponentIsOpen(false);\n\n const schema = components[uid];\n const form = createDefaultForm(schema, components);\n const transformations = pipe(transformDocument(schema, components), (data) => ({\n ...data,\n __component: uid,\n }));\n\n const data = transformations(form);\n\n addFieldRow(name, data, position);\n };\n\n const handleClickOpenPicker = () => {\n if (dynamicDisplayedComponentsLength < max) {\n setAddComponentIsOpen((prev) => !prev);\n } else {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponent = (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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\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 handleRemoveComponent = (name: string, currentIndex: number) => () => {\n removeFieldRow(name, currentIndex);\n };\n\n const hasError = error !== undefined;\n\n const renderButtonLabel = () => {\n if (addComponentIsOpen) {\n return formatMessage({ id: 'app.utils.close-label', defaultMessage: 'Close' });\n }\n\n if (hasError && dynamicDisplayedComponentsLength > max) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.extra-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # extra components} one {is # extra component} other {are # extra components}}',\n },\n {\n number: dynamicDisplayedComponentsLength - max,\n }\n );\n }\n\n if (hasError && dynamicDisplayedComponentsLength < min) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.missing-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}',\n },\n { number: min - dynamicDisplayedComponentsLength }\n );\n }\n\n return formatMessage(\n {\n id: getTranslation('components.DynamicZone.add-component'),\n defaultMessage: 'Add a component to {componentName}',\n },\n { componentName: label || name }\n );\n };\n\n const level = useComponent('DynamicZone', (state) => state.level);\n\n const ariaDescriptionId = React.useId();\n\n return (\n <DynamicZoneProvider isInDynamicZone>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {dynamicDisplayedComponentsLength > 0 && (\n <Box>\n <DynamicZoneLabel\n hint={hint}\n label={label}\n labelAction={labelAction}\n name={name}\n numberOfComponents={dynamicDisplayedComponentsLength}\n required={required}\n />\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 <ol aria-describedby={ariaDescriptionId}>\n {value.map((field, index) => (\n <ComponentProvider\n key={field.__temp_key__}\n level={level + 1}\n uid={field.__component}\n // id is always a number in a dynamic zone.\n id={field.id as number}\n type=\"dynamiczone\"\n >\n <DynamicComponent\n disabled={disabled}\n name={name}\n index={index}\n componentUid={field.__component}\n onMoveComponent={handleMoveComponent}\n onRemoveComponentClick={handleRemoveComponent(name, index)}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n onAddComponent={handleAddComponent}\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n totalLength={dynamicDisplayedComponentsLength}\n >\n {children}\n </DynamicComponent>\n </ComponentProvider>\n ))}\n </ol>\n </Box>\n )}\n <Flex justifyContent=\"center\">\n <AddComponentButton\n hasError={hasError}\n isDisabled={disabled}\n isOpen={addComponentIsOpen}\n onClick={handleClickOpenPicker}\n >\n {renderButtonLabel()}\n </AddComponentButton>\n </Flex>\n <ComponentPicker\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n isOpen={addComponentIsOpen}\n onClickAddComponent={handleAddComponent}\n />\n </Flex>\n </DynamicZoneProvider>\n );\n};\n\nexport { DynamicZone, useDynamicZone };\nexport type { DynamicZoneProps };\n"],"names":["DynamicZoneProvider","useDynamicZone","createContext","isInDynamicZone","DynamicZone","attribute","disabled","disabledProp","hint","label","labelAction","name","required","children","max","Infinity","min","addComponentIsOpen","setAddComponentIsOpen","React","useState","liveText","setLiveText","currentDocument","components","isLoading","useDocumentContext","addFieldRow","removeFieldRow","moveFieldRow","useForm","value","error","useField","dynamicComponentsByCategory","useMemo","reduce","acc","componentUid","category","info","component","uid","displayName","icon","formatMessage","useIntl","toggleNotification","useNotification","dynamicDisplayedComponentsLength","length","handleAddComponent","position","schema","form","createDefaultForm","transformations","pipe","transformDocument","data","__component","handleClickOpenPicker","prev","type","message","id","getTranslation","handleMoveComponent","newIndex","currentIndex","defaultMessage","item","getItemPos","index","handleCancel","handleGrabItem","handleDropItem","handleRemoveComponent","hasError","undefined","renderButtonLabel","number","componentName","level","useComponent","state","ariaDescriptionId","useId","_jsx","_jsxs","Flex","direction","alignItems","gap","Box","DynamicZoneLabel","numberOfComponents","VisuallyHidden","aria-live","ol","aria-describedby","map","field","ComponentProvider","DynamicComponent","onMoveComponent","onRemoveComponentClick","onCancel","onDropItem","onGrabItem","onAddComponent","totalLength","__temp_key__","justifyContent","AddComponentButton","isDisabled","isOpen","onClick","ComponentPicker","onClickAddComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n createContext,\n InputProps,\n useField,\n useForm,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { AddComponentButton } from './AddComponentButton';\nimport { ComponentPicker } from './ComponentPicker';\nimport { DynamicComponent, DynamicComponentProps } from './DynamicComponent';\nimport { DynamicZoneLabel, DynamicZoneLabelProps } from './DynamicZoneLabel';\n\nimport type { InputRendererProps } from '../../InputRenderer';\nimport type { Schema } from '@strapi/types';\n\ninterface DynamicZoneContextValue {\n isInDynamicZone: boolean;\n}\n\nconst [DynamicZoneProvider, useDynamicZone] = createContext<DynamicZoneContextValue>(\n 'DynamicZone',\n {\n isInDynamicZone: false,\n }\n);\n\ninterface DynamicZoneProps\n extends Omit<Extract<EditFieldLayout, { type: 'dynamiczone' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'>,\n Pick<DynamicZoneLabelProps, 'labelAction'> {\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicZone = ({\n attribute,\n disabled: disabledProp,\n hint,\n label,\n labelAction,\n name,\n required = false,\n children,\n}: DynamicZoneProps) => {\n // We cannot use the default props here\n const { max = Infinity, min = -Infinity } = attribute ?? {};\n\n const [addComponentIsOpen, setAddComponentIsOpen] = React.useState(false);\n const [liveText, setLiveText] = React.useState('');\n\n const {\n currentDocument: { components, isLoading },\n } = useDocumentContext('DynamicZone');\n\n const disabled = disabledProp || isLoading;\n const { addFieldRow, removeFieldRow, moveFieldRow } = useForm(\n 'DynamicZone',\n ({ addFieldRow, removeFieldRow, moveFieldRow }) => ({\n addFieldRow,\n removeFieldRow,\n moveFieldRow,\n })\n );\n\n type DzWithTempKey =\n Schema.Attribute.GetDynamicZoneValue<Schema.Attribute.DynamicZone>[number] & {\n __temp_key__: number;\n };\n\n const { value = [], error } = useField<Array<DzWithTempKey>>(name);\n\n const dynamicComponentsByCategory = React.useMemo(() => {\n return attribute.components.reduce<\n NonNullable<DynamicComponentProps['dynamicComponentsByCategory']>\n >((acc, componentUid) => {\n const { category, info } = components[componentUid] ?? { info: {} };\n\n const component = { uid: componentUid, displayName: info.displayName, icon: info.icon };\n\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category] = [...acc[category], component];\n\n return acc;\n }, {});\n }, [attribute.components, components]);\n\n const { formatMessage } = useIntl();\n\n const { toggleNotification } = useNotification();\n\n const dynamicDisplayedComponentsLength = value.length;\n\n const handleAddComponent = (uid: string, position?: number) => {\n setAddComponentIsOpen(false);\n\n const schema = components[uid];\n const form = createDefaultForm(schema, components);\n const transformations = pipe(transformDocument(schema, components), (data) => ({\n ...data,\n __component: uid,\n }));\n\n const data = transformations(form);\n\n addFieldRow(name, data, position);\n };\n\n const handleClickOpenPicker = () => {\n if (dynamicDisplayedComponentsLength < max) {\n setAddComponentIsOpen((prev) => !prev);\n } else {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponent = (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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\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 handleRemoveComponent = (name: string, currentIndex: number) => () => {\n removeFieldRow(name, currentIndex);\n };\n\n const hasError = error !== undefined;\n\n const renderButtonLabel = () => {\n if (addComponentIsOpen) {\n return formatMessage({ id: 'app.utils.close-label', defaultMessage: 'Close' });\n }\n\n if (hasError && dynamicDisplayedComponentsLength > max) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.extra-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # extra components} one {is # extra component} other {are # extra components}}',\n },\n {\n number: dynamicDisplayedComponentsLength - max,\n }\n );\n }\n\n if (hasError && dynamicDisplayedComponentsLength < min) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.missing-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}',\n },\n { number: min - dynamicDisplayedComponentsLength }\n );\n }\n\n return formatMessage(\n {\n id: getTranslation('components.DynamicZone.add-component'),\n defaultMessage: 'Add a component to {componentName}',\n },\n { componentName: label || name }\n );\n };\n\n const level = useComponent('DynamicZone', (state) => state.level);\n\n const ariaDescriptionId = React.useId();\n\n return (\n <DynamicZoneProvider isInDynamicZone>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={{ initial: 4, medium: 6 }}>\n {dynamicDisplayedComponentsLength > 0 && (\n <Box>\n <DynamicZoneLabel\n hint={hint}\n label={label}\n labelAction={labelAction}\n name={name}\n numberOfComponents={dynamicDisplayedComponentsLength}\n required={required}\n />\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 <ol aria-describedby={ariaDescriptionId}>\n {value.map((field, index) => (\n <ComponentProvider\n key={field.__temp_key__}\n level={level + 1}\n uid={field.__component}\n // id is always a number in a dynamic zone.\n id={field.id as number}\n type=\"dynamiczone\"\n >\n <DynamicComponent\n disabled={disabled}\n name={name}\n index={index}\n componentUid={field.__component}\n onMoveComponent={handleMoveComponent}\n onRemoveComponentClick={handleRemoveComponent(name, index)}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n onAddComponent={handleAddComponent}\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n totalLength={dynamicDisplayedComponentsLength}\n >\n {children}\n </DynamicComponent>\n </ComponentProvider>\n ))}\n </ol>\n </Box>\n )}\n <Flex justifyContent=\"center\">\n <AddComponentButton\n hasError={hasError}\n isDisabled={disabled}\n isOpen={addComponentIsOpen}\n onClick={handleClickOpenPicker}\n >\n {renderButtonLabel()}\n </AddComponentButton>\n </Flex>\n <ComponentPicker\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n isOpen={addComponentIsOpen}\n onClickAddComponent={handleAddComponent}\n />\n </Flex>\n </DynamicZoneProvider>\n );\n};\n\nexport { DynamicZone, useDynamicZone };\nexport type { DynamicZoneProps };\n"],"names":["DynamicZoneProvider","useDynamicZone","createContext","isInDynamicZone","DynamicZone","attribute","disabled","disabledProp","hint","label","labelAction","name","required","children","max","Infinity","min","addComponentIsOpen","setAddComponentIsOpen","React","useState","liveText","setLiveText","currentDocument","components","isLoading","useDocumentContext","addFieldRow","removeFieldRow","moveFieldRow","useForm","value","error","useField","dynamicComponentsByCategory","useMemo","reduce","acc","componentUid","category","info","component","uid","displayName","icon","formatMessage","useIntl","toggleNotification","useNotification","dynamicDisplayedComponentsLength","length","handleAddComponent","position","schema","form","createDefaultForm","transformations","pipe","transformDocument","data","__component","handleClickOpenPicker","prev","type","message","id","getTranslation","handleMoveComponent","newIndex","currentIndex","defaultMessage","item","getItemPos","index","handleCancel","handleGrabItem","handleDropItem","handleRemoveComponent","hasError","undefined","renderButtonLabel","number","componentName","level","useComponent","state","ariaDescriptionId","useId","_jsx","_jsxs","Flex","direction","alignItems","gap","initial","medium","Box","DynamicZoneLabel","numberOfComponents","VisuallyHidden","aria-live","ol","aria-describedby","map","field","ComponentProvider","DynamicComponent","onMoveComponent","onRemoveComponentClick","onCancel","onDropItem","onGrabItem","onAddComponent","totalLength","__temp_key__","justifyContent","AddComponentButton","isDisabled","isOpen","onClick","ComponentPicker","onClickAddComponent"],"mappings":"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"}
@@ -157,7 +157,10 @@ const DynamicZone = ({ attribute, disabled: disabledProp, hint, label, labelActi
157
157
  children: /*#__PURE__*/ jsxs(Flex, {
158
158
  direction: "column",
159
159
  alignItems: "stretch",
160
- gap: 6,
160
+ gap: {
161
+ initial: 4,
162
+ medium: 6
163
+ },
161
164
  children: [
162
165
  dynamicDisplayedComponentsLength > 0 && /*#__PURE__*/ jsxs(Box, {
163
166
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"Field.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n createContext,\n InputProps,\n useField,\n useForm,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { AddComponentButton } from './AddComponentButton';\nimport { ComponentPicker } from './ComponentPicker';\nimport { DynamicComponent, DynamicComponentProps } from './DynamicComponent';\nimport { DynamicZoneLabel, DynamicZoneLabelProps } from './DynamicZoneLabel';\n\nimport type { InputRendererProps } from '../../InputRenderer';\nimport type { Schema } from '@strapi/types';\n\ninterface DynamicZoneContextValue {\n isInDynamicZone: boolean;\n}\n\nconst [DynamicZoneProvider, useDynamicZone] = createContext<DynamicZoneContextValue>(\n 'DynamicZone',\n {\n isInDynamicZone: false,\n }\n);\n\ninterface DynamicZoneProps\n extends Omit<Extract<EditFieldLayout, { type: 'dynamiczone' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'>,\n Pick<DynamicZoneLabelProps, 'labelAction'> {\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicZone = ({\n attribute,\n disabled: disabledProp,\n hint,\n label,\n labelAction,\n name,\n required = false,\n children,\n}: DynamicZoneProps) => {\n // We cannot use the default props here\n const { max = Infinity, min = -Infinity } = attribute ?? {};\n\n const [addComponentIsOpen, setAddComponentIsOpen] = React.useState(false);\n const [liveText, setLiveText] = React.useState('');\n\n const {\n currentDocument: { components, isLoading },\n } = useDocumentContext('DynamicZone');\n\n const disabled = disabledProp || isLoading;\n const { addFieldRow, removeFieldRow, moveFieldRow } = useForm(\n 'DynamicZone',\n ({ addFieldRow, removeFieldRow, moveFieldRow }) => ({\n addFieldRow,\n removeFieldRow,\n moveFieldRow,\n })\n );\n\n type DzWithTempKey =\n Schema.Attribute.GetDynamicZoneValue<Schema.Attribute.DynamicZone>[number] & {\n __temp_key__: number;\n };\n\n const { value = [], error } = useField<Array<DzWithTempKey>>(name);\n\n const dynamicComponentsByCategory = React.useMemo(() => {\n return attribute.components.reduce<\n NonNullable<DynamicComponentProps['dynamicComponentsByCategory']>\n >((acc, componentUid) => {\n const { category, info } = components[componentUid] ?? { info: {} };\n\n const component = { uid: componentUid, displayName: info.displayName, icon: info.icon };\n\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category] = [...acc[category], component];\n\n return acc;\n }, {});\n }, [attribute.components, components]);\n\n const { formatMessage } = useIntl();\n\n const { toggleNotification } = useNotification();\n\n const dynamicDisplayedComponentsLength = value.length;\n\n const handleAddComponent = (uid: string, position?: number) => {\n setAddComponentIsOpen(false);\n\n const schema = components[uid];\n const form = createDefaultForm(schema, components);\n const transformations = pipe(transformDocument(schema, components), (data) => ({\n ...data,\n __component: uid,\n }));\n\n const data = transformations(form);\n\n addFieldRow(name, data, position);\n };\n\n const handleClickOpenPicker = () => {\n if (dynamicDisplayedComponentsLength < max) {\n setAddComponentIsOpen((prev) => !prev);\n } else {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponent = (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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\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 handleRemoveComponent = (name: string, currentIndex: number) => () => {\n removeFieldRow(name, currentIndex);\n };\n\n const hasError = error !== undefined;\n\n const renderButtonLabel = () => {\n if (addComponentIsOpen) {\n return formatMessage({ id: 'app.utils.close-label', defaultMessage: 'Close' });\n }\n\n if (hasError && dynamicDisplayedComponentsLength > max) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.extra-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # extra components} one {is # extra component} other {are # extra components}}',\n },\n {\n number: dynamicDisplayedComponentsLength - max,\n }\n );\n }\n\n if (hasError && dynamicDisplayedComponentsLength < min) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.missing-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}',\n },\n { number: min - dynamicDisplayedComponentsLength }\n );\n }\n\n return formatMessage(\n {\n id: getTranslation('components.DynamicZone.add-component'),\n defaultMessage: 'Add a component to {componentName}',\n },\n { componentName: label || name }\n );\n };\n\n const level = useComponent('DynamicZone', (state) => state.level);\n\n const ariaDescriptionId = React.useId();\n\n return (\n <DynamicZoneProvider isInDynamicZone>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {dynamicDisplayedComponentsLength > 0 && (\n <Box>\n <DynamicZoneLabel\n hint={hint}\n label={label}\n labelAction={labelAction}\n name={name}\n numberOfComponents={dynamicDisplayedComponentsLength}\n required={required}\n />\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 <ol aria-describedby={ariaDescriptionId}>\n {value.map((field, index) => (\n <ComponentProvider\n key={field.__temp_key__}\n level={level + 1}\n uid={field.__component}\n // id is always a number in a dynamic zone.\n id={field.id as number}\n type=\"dynamiczone\"\n >\n <DynamicComponent\n disabled={disabled}\n name={name}\n index={index}\n componentUid={field.__component}\n onMoveComponent={handleMoveComponent}\n onRemoveComponentClick={handleRemoveComponent(name, index)}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n onAddComponent={handleAddComponent}\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n totalLength={dynamicDisplayedComponentsLength}\n >\n {children}\n </DynamicComponent>\n </ComponentProvider>\n ))}\n </ol>\n </Box>\n )}\n <Flex justifyContent=\"center\">\n <AddComponentButton\n hasError={hasError}\n isDisabled={disabled}\n isOpen={addComponentIsOpen}\n onClick={handleClickOpenPicker}\n >\n {renderButtonLabel()}\n </AddComponentButton>\n </Flex>\n <ComponentPicker\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n isOpen={addComponentIsOpen}\n onClickAddComponent={handleAddComponent}\n />\n </Flex>\n </DynamicZoneProvider>\n );\n};\n\nexport { DynamicZone, useDynamicZone };\nexport type { DynamicZoneProps };\n"],"names":["DynamicZoneProvider","useDynamicZone","createContext","isInDynamicZone","DynamicZone","attribute","disabled","disabledProp","hint","label","labelAction","name","required","children","max","Infinity","min","addComponentIsOpen","setAddComponentIsOpen","React","useState","liveText","setLiveText","currentDocument","components","isLoading","useDocumentContext","addFieldRow","removeFieldRow","moveFieldRow","useForm","value","error","useField","dynamicComponentsByCategory","useMemo","reduce","acc","componentUid","category","info","component","uid","displayName","icon","formatMessage","useIntl","toggleNotification","useNotification","dynamicDisplayedComponentsLength","length","handleAddComponent","position","schema","form","createDefaultForm","transformations","pipe","transformDocument","data","__component","handleClickOpenPicker","prev","type","message","id","getTranslation","handleMoveComponent","newIndex","currentIndex","defaultMessage","item","getItemPos","index","handleCancel","handleGrabItem","handleDropItem","handleRemoveComponent","hasError","undefined","renderButtonLabel","number","componentName","level","useComponent","state","ariaDescriptionId","useId","_jsx","_jsxs","Flex","direction","alignItems","gap","Box","DynamicZoneLabel","numberOfComponents","VisuallyHidden","aria-live","ol","aria-describedby","map","field","ComponentProvider","DynamicComponent","onMoveComponent","onRemoveComponentClick","onCancel","onDropItem","onGrabItem","onAddComponent","totalLength","__temp_key__","justifyContent","AddComponentButton","isDisabled","isOpen","onClick","ComponentPicker","onClickAddComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Field.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n createContext,\n InputProps,\n useField,\n useForm,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { AddComponentButton } from './AddComponentButton';\nimport { ComponentPicker } from './ComponentPicker';\nimport { DynamicComponent, DynamicComponentProps } from './DynamicComponent';\nimport { DynamicZoneLabel, DynamicZoneLabelProps } from './DynamicZoneLabel';\n\nimport type { InputRendererProps } from '../../InputRenderer';\nimport type { Schema } from '@strapi/types';\n\ninterface DynamicZoneContextValue {\n isInDynamicZone: boolean;\n}\n\nconst [DynamicZoneProvider, useDynamicZone] = createContext<DynamicZoneContextValue>(\n 'DynamicZone',\n {\n isInDynamicZone: false,\n }\n);\n\ninterface DynamicZoneProps\n extends Omit<Extract<EditFieldLayout, { type: 'dynamiczone' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'>,\n Pick<DynamicZoneLabelProps, 'labelAction'> {\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicZone = ({\n attribute,\n disabled: disabledProp,\n hint,\n label,\n labelAction,\n name,\n required = false,\n children,\n}: DynamicZoneProps) => {\n // We cannot use the default props here\n const { max = Infinity, min = -Infinity } = attribute ?? {};\n\n const [addComponentIsOpen, setAddComponentIsOpen] = React.useState(false);\n const [liveText, setLiveText] = React.useState('');\n\n const {\n currentDocument: { components, isLoading },\n } = useDocumentContext('DynamicZone');\n\n const disabled = disabledProp || isLoading;\n const { addFieldRow, removeFieldRow, moveFieldRow } = useForm(\n 'DynamicZone',\n ({ addFieldRow, removeFieldRow, moveFieldRow }) => ({\n addFieldRow,\n removeFieldRow,\n moveFieldRow,\n })\n );\n\n type DzWithTempKey =\n Schema.Attribute.GetDynamicZoneValue<Schema.Attribute.DynamicZone>[number] & {\n __temp_key__: number;\n };\n\n const { value = [], error } = useField<Array<DzWithTempKey>>(name);\n\n const dynamicComponentsByCategory = React.useMemo(() => {\n return attribute.components.reduce<\n NonNullable<DynamicComponentProps['dynamicComponentsByCategory']>\n >((acc, componentUid) => {\n const { category, info } = components[componentUid] ?? { info: {} };\n\n const component = { uid: componentUid, displayName: info.displayName, icon: info.icon };\n\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category] = [...acc[category], component];\n\n return acc;\n }, {});\n }, [attribute.components, components]);\n\n const { formatMessage } = useIntl();\n\n const { toggleNotification } = useNotification();\n\n const dynamicDisplayedComponentsLength = value.length;\n\n const handleAddComponent = (uid: string, position?: number) => {\n setAddComponentIsOpen(false);\n\n const schema = components[uid];\n const form = createDefaultForm(schema, components);\n const transformations = pipe(transformDocument(schema, components), (data) => ({\n ...data,\n __component: uid,\n }));\n\n const data = transformations(form);\n\n addFieldRow(name, data, position);\n };\n\n const handleClickOpenPicker = () => {\n if (dynamicDisplayedComponentsLength < max) {\n setAddComponentIsOpen((prev) => !prev);\n } else {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponent = (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: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\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 handleRemoveComponent = (name: string, currentIndex: number) => () => {\n removeFieldRow(name, currentIndex);\n };\n\n const hasError = error !== undefined;\n\n const renderButtonLabel = () => {\n if (addComponentIsOpen) {\n return formatMessage({ id: 'app.utils.close-label', defaultMessage: 'Close' });\n }\n\n if (hasError && dynamicDisplayedComponentsLength > max) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.extra-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # extra components} one {is # extra component} other {are # extra components}}',\n },\n {\n number: dynamicDisplayedComponentsLength - max,\n }\n );\n }\n\n if (hasError && dynamicDisplayedComponentsLength < min) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.missing-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}',\n },\n { number: min - dynamicDisplayedComponentsLength }\n );\n }\n\n return formatMessage(\n {\n id: getTranslation('components.DynamicZone.add-component'),\n defaultMessage: 'Add a component to {componentName}',\n },\n { componentName: label || name }\n );\n };\n\n const level = useComponent('DynamicZone', (state) => state.level);\n\n const ariaDescriptionId = React.useId();\n\n return (\n <DynamicZoneProvider isInDynamicZone>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={{ initial: 4, medium: 6 }}>\n {dynamicDisplayedComponentsLength > 0 && (\n <Box>\n <DynamicZoneLabel\n hint={hint}\n label={label}\n labelAction={labelAction}\n name={name}\n numberOfComponents={dynamicDisplayedComponentsLength}\n required={required}\n />\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 <ol aria-describedby={ariaDescriptionId}>\n {value.map((field, index) => (\n <ComponentProvider\n key={field.__temp_key__}\n level={level + 1}\n uid={field.__component}\n // id is always a number in a dynamic zone.\n id={field.id as number}\n type=\"dynamiczone\"\n >\n <DynamicComponent\n disabled={disabled}\n name={name}\n index={index}\n componentUid={field.__component}\n onMoveComponent={handleMoveComponent}\n onRemoveComponentClick={handleRemoveComponent(name, index)}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n onAddComponent={handleAddComponent}\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n totalLength={dynamicDisplayedComponentsLength}\n >\n {children}\n </DynamicComponent>\n </ComponentProvider>\n ))}\n </ol>\n </Box>\n )}\n <Flex justifyContent=\"center\">\n <AddComponentButton\n hasError={hasError}\n isDisabled={disabled}\n isOpen={addComponentIsOpen}\n onClick={handleClickOpenPicker}\n >\n {renderButtonLabel()}\n </AddComponentButton>\n </Flex>\n <ComponentPicker\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n isOpen={addComponentIsOpen}\n onClickAddComponent={handleAddComponent}\n />\n </Flex>\n </DynamicZoneProvider>\n );\n};\n\nexport { DynamicZone, useDynamicZone };\nexport type { DynamicZoneProps };\n"],"names":["DynamicZoneProvider","useDynamicZone","createContext","isInDynamicZone","DynamicZone","attribute","disabled","disabledProp","hint","label","labelAction","name","required","children","max","Infinity","min","addComponentIsOpen","setAddComponentIsOpen","React","useState","liveText","setLiveText","currentDocument","components","isLoading","useDocumentContext","addFieldRow","removeFieldRow","moveFieldRow","useForm","value","error","useField","dynamicComponentsByCategory","useMemo","reduce","acc","componentUid","category","info","component","uid","displayName","icon","formatMessage","useIntl","toggleNotification","useNotification","dynamicDisplayedComponentsLength","length","handleAddComponent","position","schema","form","createDefaultForm","transformations","pipe","transformDocument","data","__component","handleClickOpenPicker","prev","type","message","id","getTranslation","handleMoveComponent","newIndex","currentIndex","defaultMessage","item","getItemPos","index","handleCancel","handleGrabItem","handleDropItem","handleRemoveComponent","hasError","undefined","renderButtonLabel","number","componentName","level","useComponent","state","ariaDescriptionId","useId","_jsx","_jsxs","Flex","direction","alignItems","gap","initial","medium","Box","DynamicZoneLabel","numberOfComponents","VisuallyHidden","aria-live","ol","aria-describedby","map","field","ComponentProvider","DynamicComponent","onMoveComponent","onRemoveComponentClick","onCancel","onDropItem","onGrabItem","onAddComponent","totalLength","__temp_key__","justifyContent","AddComponentButton","isDisabled","isOpen","onClick","ComponentPicker","onClickAddComponent"],"mappings":"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"}
@@ -45,10 +45,7 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
45
45
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
46
46
  direction: "column",
47
47
  alignItems: "stretch",
48
- gap: {
49
- initial: 4,
50
- large: 6
51
- },
48
+ gap: 6,
52
49
  children: layout.map((panel, index)=>{
53
50
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
54
51
  const [row] = panel;
@@ -74,13 +71,13 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
74
71
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
75
72
  direction: "column",
76
73
  alignItems: "stretch",
77
- gap: {
78
- initial: 4,
79
- large: 6
80
- },
74
+ gap: 6,
81
75
  children: panel.map((row, gridRowIndex)=>{
82
76
  return /*#__PURE__*/ jsxRuntime.jsx(ResponsiveGridRoot, {
83
- gap: 4,
77
+ gap: {
78
+ initial: 6,
79
+ medium: 4
80
+ },
84
81
  children: row.map(({ size, ...field })=>{
85
82
  return /*#__PURE__*/ jsxRuntime.jsx(ResponsiveGridItem, {
86
83
  col: size,
@@ -1 +1 @@
1
- {"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\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 */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {panel.map((row, gridRowIndex) => {\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","large","map","panel","index","some","row","field","type","s","xs","InputRenderer","Box","gridRowIndex","size"],"mappings":"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"}
1
+ {"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\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 */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {row.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","s","xs","InputRenderer","Box","gridRowIndex","size"],"mappings":"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"}
@@ -43,10 +43,7 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
43
43
  return /*#__PURE__*/ jsx(Flex, {
44
44
  direction: "column",
45
45
  alignItems: "stretch",
46
- gap: {
47
- initial: 4,
48
- large: 6
49
- },
46
+ gap: 6,
50
47
  children: layout.map((panel, index)=>{
51
48
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
52
49
  const [row] = panel;
@@ -72,13 +69,13 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
72
69
  children: /*#__PURE__*/ jsx(Flex, {
73
70
  direction: "column",
74
71
  alignItems: "stretch",
75
- gap: {
76
- initial: 4,
77
- large: 6
78
- },
72
+ gap: 6,
79
73
  children: panel.map((row, gridRowIndex)=>{
80
74
  return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
81
- gap: 4,
75
+ gap: {
76
+ initial: 6,
77
+ medium: 4
78
+ },
82
79
  children: row.map(({ size, ...field })=>{
83
80
  return /*#__PURE__*/ jsx(ResponsiveGridItem, {
84
81
  col: size,
@@ -1 +1 @@
1
- {"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\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 */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {panel.map((row, gridRowIndex) => {\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","large","map","panel","index","some","row","field","type","s","xs","InputRenderer","Box","gridRowIndex","size"],"mappings":"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"}
1
+ {"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\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 */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {row.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","s","xs","InputRenderer","Box","gridRowIndex","size"],"mappings":"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"}
@@ -80,10 +80,12 @@ const Header = ({ isCreating, status, title: documentTitle = 'Untitled' })=>{
80
80
  justifyContent: "space-between",
81
81
  alignItems: "flex-start",
82
82
  width: "100%",
83
+ overflow: "hidden",
83
84
  children: [
84
85
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
85
86
  variant: "alpha",
86
87
  tag: "h1",
88
+ overflow: "hidden",
87
89
  children: title
88
90
  }),
89
91
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n useIsDesktop,\n useDebounce,\n RESPONSIVE_DEFAULT_SPACING,\n useIsMobile,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n Popover,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const isMobile = useIsMobile();\n const params = useParams<{ collectionType: string; slug: string }>();\n const [\n {\n query: { status: activeTab = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingTop={{\n initial: 4,\n medium: 6,\n }}\n paddingBottom={4}\n gap={2}\n >\n {!isMobile && (\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n )}\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n gap={{\n initial: 2,\n medium: '8rem',\n }}\n alignItems=\"flex-start\"\n direction={{\n initial: 'column-reverse',\n medium: 'row',\n }}\n >\n <Flex gap={2} justifyContent=\"space-between\" alignItems=\"flex-start\" width=\"100%\">\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <Box display={{ initial: 'block', medium: 'none' }}>\n <HeaderDocumentActions activeTab={activeTab} isCloning={isCloning} />\n </Box>\n </Flex>\n <Flex width={{ initial: '100%', medium: 'auto' }} gap={3} justifyContent=\"space-between\">\n {isMobile && (\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n )}\n <HeaderToolbar activeTab={activeTab} isCloning={isCloning} />\n </Flex>\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n /**\n * @internal\n * @description\n * Internal SelectOption renderer used to display the status of AI translation background jobs\n */\n _render?: () => React.ReactNode;\n }>;\n /**\n * @internal\n * @description\n * Internal document header action to display the status of AI translation background jobs\n */\n _status?: {\n message: React.ReactNode;\n tooltip?: React.ReactNode;\n };\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\ninterface HeaderDocumentActionsProps {\n activeTab: 'draft' | 'published';\n isCloning: boolean;\n}\n\nconst HeaderDocumentActions = ({ activeTab, isCloning }: HeaderDocumentActionsProps) => {\n const { model, id, document, meta, collectionType } = useDoc();\n const { formatMessage } = useIntl();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n return (\n <DescriptionComponentRenderer\n props={{\n activeTab,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={activeTab} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = ({ activeTab, isCloning }: HeaderDocumentActionsProps) => {\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <Box display={{ initial: 'none', medium: 'block' }}>\n <HeaderDocumentActions activeTab={activeTab} isCloning={isCloning} />\n </Box>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => {\n if (option._render) {\n return option._render();\n }\n\n return (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n } else if (action._status) {\n return (\n <HeaderActionStatus tooltip={action._status?.tooltip} key={action.id}>\n {action._status.message}\n </HeaderActionStatus>\n );\n } else {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionStatus\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionStatusProps {\n tooltip: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst HeaderActionStatus = ({ tooltip, children }: HeaderActionStatusProps) => {\n const [open, setOpen] = React.useState(false);\n // Debounce the open/close so the user can hover over the popover content before it closes\n const debouncedOpen = useDebounce(open, 100);\n\n const handleMouseEnter = () => {\n if (tooltip) {\n setOpen(true);\n }\n };\n const handleMouseLeave = () => {\n if (tooltip) {\n setOpen(false);\n }\n };\n\n return (\n <Popover.Root open={debouncedOpen} onOpenChange={setOpen}>\n <Popover.Anchor\n style={{ alignSelf: 'stretch' }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n aria-describedby=\"document-header-action-status\"\n >\n <Box height=\"100%\">{children}</Box>\n </Popover.Anchor>\n <Popover.Content\n role=\"tooltip\"\n id=\"document-header-action-status\"\n side=\"bottom\"\n align=\"center\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {tooltip}\n </Popover.Content>\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n }\n : null;\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n }\n : null;\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","isMobile","useIsMobile","params","useParams","query","activeTab","useQueryParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","paddingTop","initial","medium","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","Typography","variant","tag","Box","display","HeaderDocumentActions","HeaderToolbar","marginTop","DocumentStatus","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","documentId","descriptions","apis","getDocumentActions","actions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","getHeaderActions","length","HeaderActions","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","_render","SingleSelectOption","_status","HeaderActionStatus","tooltip","message","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","children","open","setOpen","debouncedOpen","useDebounce","handleMouseEnter","handleMouseLeave","Popover","Root","onOpenChange","Anchor","style","alignSelf","onMouseEnter","onMouseLeave","aria-describedby","height","Content","role","side","align","onCancel","content","Dialog","ConfigureTheViewAction","navigate","useNavigate","isDesktop","useIsDesktop","ListPlus","type","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","fill","textAlign","loading","onConfirm","console","error","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n useIsDesktop,\n useDebounce,\n RESPONSIVE_DEFAULT_SPACING,\n useIsMobile,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n Popover,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const isMobile = useIsMobile();\n const params = useParams<{ collectionType: string; slug: string }>();\n const [\n {\n query: { status: activeTab = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingTop={{\n initial: 4,\n medium: 6,\n }}\n paddingBottom={4}\n gap={2}\n >\n {!isMobile && (\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n )}\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n gap={{\n initial: 2,\n medium: '8rem',\n }}\n alignItems=\"flex-start\"\n direction={{\n initial: 'column-reverse',\n medium: 'row',\n }}\n >\n <Flex\n gap={2}\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n width=\"100%\"\n overflow=\"hidden\"\n >\n <Typography variant=\"alpha\" tag=\"h1\" overflow=\"hidden\">\n {title}\n </Typography>\n <Box display={{ initial: 'block', medium: 'none' }}>\n <HeaderDocumentActions activeTab={activeTab} isCloning={isCloning} />\n </Box>\n </Flex>\n <Flex width={{ initial: '100%', medium: 'auto' }} gap={3} justifyContent=\"space-between\">\n {isMobile && (\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n )}\n <HeaderToolbar activeTab={activeTab} isCloning={isCloning} />\n </Flex>\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n /**\n * @internal\n * @description\n * Internal SelectOption renderer used to display the status of AI translation background jobs\n */\n _render?: () => React.ReactNode;\n }>;\n /**\n * @internal\n * @description\n * Internal document header action to display the status of AI translation background jobs\n */\n _status?: {\n message: React.ReactNode;\n tooltip?: React.ReactNode;\n };\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\ninterface HeaderDocumentActionsProps {\n activeTab: 'draft' | 'published';\n isCloning: boolean;\n}\n\nconst HeaderDocumentActions = ({ activeTab, isCloning }: HeaderDocumentActionsProps) => {\n const { model, id, document, meta, collectionType } = useDoc();\n const { formatMessage } = useIntl();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n return (\n <DescriptionComponentRenderer\n props={{\n activeTab,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={activeTab} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = ({ activeTab, isCloning }: HeaderDocumentActionsProps) => {\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <Box display={{ initial: 'none', medium: 'block' }}>\n <HeaderDocumentActions activeTab={activeTab} isCloning={isCloning} />\n </Box>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => {\n if (option._render) {\n return option._render();\n }\n\n return (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n } else if (action._status) {\n return (\n <HeaderActionStatus tooltip={action._status?.tooltip} key={action.id}>\n {action._status.message}\n </HeaderActionStatus>\n );\n } else {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionStatus\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionStatusProps {\n tooltip: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst HeaderActionStatus = ({ tooltip, children }: HeaderActionStatusProps) => {\n const [open, setOpen] = React.useState(false);\n // Debounce the open/close so the user can hover over the popover content before it closes\n const debouncedOpen = useDebounce(open, 100);\n\n const handleMouseEnter = () => {\n if (tooltip) {\n setOpen(true);\n }\n };\n const handleMouseLeave = () => {\n if (tooltip) {\n setOpen(false);\n }\n };\n\n return (\n <Popover.Root open={debouncedOpen} onOpenChange={setOpen}>\n <Popover.Anchor\n style={{ alignSelf: 'stretch' }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n aria-describedby=\"document-header-action-status\"\n >\n <Box height=\"100%\">{children}</Box>\n </Popover.Anchor>\n <Popover.Content\n role=\"tooltip\"\n id=\"document-header-action-status\"\n side=\"bottom\"\n align=\"center\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {tooltip}\n </Popover.Content>\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n }\n : null;\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n }\n : null;\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","isMobile","useIsMobile","params","useParams","query","activeTab","useQueryParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","paddingTop","initial","medium","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","overflow","Typography","variant","tag","Box","display","HeaderDocumentActions","HeaderToolbar","marginTop","DocumentStatus","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","documentId","descriptions","apis","getDocumentActions","actions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","getHeaderActions","length","HeaderActions","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","_render","SingleSelectOption","_status","HeaderActionStatus","tooltip","message","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","children","open","setOpen","debouncedOpen","useDebounce","handleMouseEnter","handleMouseLeave","Popover","Root","onOpenChange","Anchor","style","alignSelf","onMouseEnter","onMouseLeave","aria-describedby","height","Content","role","side","align","onCancel","content","Dialog","ConfigureTheViewAction","navigate","useNavigate","isDesktop","useIsDesktop","ListPlus","type","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","fill","textAlign","loading","onConfirm","console","error","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":"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"}