@strapi/content-manager 5.12.3 → 5.12.5

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 (100) hide show
  1. package/dist/admin/components/Widgets.js +161 -0
  2. package/dist/admin/components/Widgets.js.map +1 -0
  3. package/dist/admin/components/Widgets.mjs +158 -0
  4. package/dist/admin/components/Widgets.mjs.map +1 -0
  5. package/dist/admin/content-manager.js.map +1 -1
  6. package/dist/admin/content-manager.mjs.map +1 -1
  7. package/dist/admin/history/pages/History.js +1 -9
  8. package/dist/admin/history/pages/History.js.map +1 -1
  9. package/dist/admin/history/pages/History.mjs +1 -9
  10. package/dist/admin/history/pages/History.mjs.map +1 -1
  11. package/dist/admin/hooks/useDocumentActions.js +8 -1
  12. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  13. package/dist/admin/hooks/useDocumentActions.mjs +8 -1
  14. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  15. package/dist/admin/hooks/useDocumentContext.js +57 -0
  16. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  17. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  18. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  19. package/dist/admin/index.js +41 -2
  20. package/dist/admin/index.js.map +1 -1
  21. package/dist/admin/index.mjs +42 -3
  22. package/dist/admin/index.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.js +85 -93
  24. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  25. package/dist/admin/pages/EditView/EditViewPage.mjs +86 -94
  26. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.js +28 -32
  28. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/DocumentActions.mjs +32 -36
  30. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  32. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  34. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -2
  36. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -2
  40. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -2
  42. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +5 -16
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -16
  46. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  48. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  50. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +432 -344
  52. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +432 -346
  54. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +55 -37
  56. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +57 -39
  58. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/UID.js +7 -7
  60. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +7 -7
  62. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  64. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  66. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  67. package/dist/admin/preview/components/PreviewHeader.js +2 -5
  68. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  69. package/dist/admin/preview/components/PreviewHeader.mjs +2 -5
  70. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  71. package/dist/admin/preview/pages/Preview.js +94 -102
  72. package/dist/admin/preview/pages/Preview.js.map +1 -1
  73. package/dist/admin/preview/pages/Preview.mjs +94 -102
  74. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  75. package/dist/admin/services/homepage.js +26 -0
  76. package/dist/admin/services/homepage.js.map +1 -0
  77. package/dist/admin/services/homepage.mjs +24 -0
  78. package/dist/admin/services/homepage.mjs.map +1 -0
  79. package/dist/admin/src/components/Widgets.d.ts +3 -0
  80. package/dist/admin/src/content-manager.d.ts +0 -3
  81. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  82. package/dist/admin/src/history/pages/History.d.ts +1 -1
  83. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  84. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  85. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  86. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +50 -5
  87. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  88. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  89. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  90. package/dist/admin/src/services/homepage.d.ts +5 -0
  91. package/dist/server/src/services/homepage.d.ts +11 -0
  92. package/dist/server/src/services/homepage.d.ts.map +1 -0
  93. package/dist/shared/contracts/homepage.d.ts +25 -0
  94. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  95. package/package.json +8 -8
  96. package/dist/admin/features/DocumentContext.js +0 -71
  97. package/dist/admin/features/DocumentContext.js.map +0 -1
  98. package/dist/admin/features/DocumentContext.mjs +0 -49
  99. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  100. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -4,7 +4,7 @@ import { useField } from '@strapi/admin/strapi-admin';
4
4
  import { Field, Flex, IconButton } from '@strapi/design-system';
5
5
  import { Trash } from '@strapi/icons';
6
6
  import { useIntl } from 'react-intl';
7
- import { useDocumentContext } from '../../../../../features/DocumentContext.mjs';
7
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
8
8
  import { getTranslation } from '../../../../../utils/translations.mjs';
9
9
  import { transformDocument } from '../../../utils/data.mjs';
10
10
  import { createDefaultForm } from '../../../utils/forms.mjs';
@@ -16,7 +16,7 @@ const ComponentInput = ({ label, required, name, attribute, disabled, labelActio
16
16
  const { formatMessage } = useIntl();
17
17
  const field = useField(name);
18
18
  const showResetComponent = !attribute.repeatable && field.value && !disabled;
19
- const components = useDocumentContext('ComponentInput', (state)=>state.document.components);
19
+ const { currentDocument: { components } } = useDocumentContext('ComponentInput');
20
20
  const handleInitialisationClick = ()=>{
21
21
  const schema = components[attribute.component];
22
22
  const form = createDefaultForm(schema, components);
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Input.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { InputProps, useField } from '@strapi/admin/strapi-admin';\nimport { Field, Flex, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { type InputRendererProps } from '../../InputRenderer';\n\nimport { Initializer } from './Initializer';\nimport { NonRepeatableComponent } from './NonRepeatable';\nimport { RepeatableComponent } from './Repeatable';\n\ninterface ComponentInputProps\n extends Omit<Extract<EditFieldLayout, { type: 'component' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'> {\n labelAction?: React.ReactNode;\n children: (props: InputRendererProps) => React.ReactNode;\n /**\n * We need layout to come from the props, and not via a hook, because Content History needs\n * a way to modify the normal component layout to add hidden fields.\n */\n layout: EditFieldLayout[][];\n}\n\nconst ComponentInput = ({\n label,\n required,\n name,\n attribute,\n disabled,\n labelAction,\n ...props\n}: ComponentInputProps) => {\n const { formatMessage } = useIntl();\n const field = useField(name);\n\n const showResetComponent = !attribute.repeatable && field.value && !disabled;\n\n const components = useDocumentContext('ComponentInput', (state) => state.document.components);\n\n const handleInitialisationClick = () => {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n field.onChange(name, data);\n };\n\n return (\n <Field.Root error={field.error} required={required}>\n <Flex justifyContent=\"space-between\">\n <Field.Label action={labelAction}>\n {label}\n {attribute.repeatable && (\n <>&nbsp;({Array.isArray(field.value) ? field.value.length : 0})</>\n )}\n </Field.Label>\n\n {showResetComponent && (\n <IconButton\n label={formatMessage({\n id: getTranslation('components.reset-entry'),\n defaultMessage: 'Reset Entry',\n })}\n variant=\"ghost\"\n onClick={() => {\n field.onChange(name, null);\n }}\n >\n <Trash />\n </IconButton>\n )}\n </Flex>\n {/**\n * if the field isn't repeatable then we display a button to start the field\n * TODO: should this just live in the `NonRepeatableComponent`?\n */}\n {!attribute.repeatable && !field.value && (\n <Initializer disabled={disabled} name={name} onClick={handleInitialisationClick} />\n )}\n {!attribute.repeatable && field.value ? (\n <NonRepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </NonRepeatableComponent>\n ) : null}\n {attribute.repeatable && (\n <RepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </RepeatableComponent>\n )}\n <Field.Error />\n </Field.Root>\n );\n};\n\nconst MemoizedComponentInput = React.memo(ComponentInput);\n\nexport { MemoizedComponentInput as ComponentInput };\nexport type { ComponentInputProps };\n"],"names":["ComponentInput","label","required","name","attribute","disabled","labelAction","props","formatMessage","useIntl","field","useField","showResetComponent","repeatable","value","components","useDocumentContext","state","document","handleInitialisationClick","schema","component","form","createDefaultForm","data","transformDocument","onChange","_jsxs","Field","Root","error","Flex","justifyContent","Label","action","_Fragment","Array","isArray","length","_jsx","IconButton","id","getTranslation","defaultMessage","variant","onClick","Trash","Initializer","NonRepeatableComponent","children","RepeatableComponent","Error","MemoizedComponentInput","React","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Input.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Input.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { InputProps, useField } from '@strapi/admin/strapi-admin';\nimport { Field, Flex, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { type InputRendererProps } from '../../InputRenderer';\n\nimport { Initializer } from './Initializer';\nimport { NonRepeatableComponent } from './NonRepeatable';\nimport { RepeatableComponent } from './Repeatable';\n\ninterface ComponentInputProps\n extends Omit<Extract<EditFieldLayout, { type: 'component' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'> {\n labelAction?: React.ReactNode;\n children: (props: InputRendererProps) => React.ReactNode;\n /**\n * We need layout to come from the props, and not via a hook, because Content History needs\n * a way to modify the normal component layout to add hidden fields.\n */\n layout: EditFieldLayout[][];\n}\n\nconst ComponentInput = ({\n label,\n required,\n name,\n attribute,\n disabled,\n labelAction,\n ...props\n}: ComponentInputProps) => {\n const { formatMessage } = useIntl();\n const field = useField(name);\n\n const showResetComponent = !attribute.repeatable && field.value && !disabled;\n\n const {\n currentDocument: { components },\n } = useDocumentContext('ComponentInput');\n\n const handleInitialisationClick = () => {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n field.onChange(name, data);\n };\n\n return (\n <Field.Root error={field.error} required={required}>\n <Flex justifyContent=\"space-between\">\n <Field.Label action={labelAction}>\n {label}\n {attribute.repeatable && (\n <>&nbsp;({Array.isArray(field.value) ? field.value.length : 0})</>\n )}\n </Field.Label>\n\n {showResetComponent && (\n <IconButton\n label={formatMessage({\n id: getTranslation('components.reset-entry'),\n defaultMessage: 'Reset Entry',\n })}\n variant=\"ghost\"\n onClick={() => {\n field.onChange(name, null);\n }}\n >\n <Trash />\n </IconButton>\n )}\n </Flex>\n {/**\n * if the field isn't repeatable then we display a button to start the field\n * TODO: should this just live in the `NonRepeatableComponent`?\n */}\n {!attribute.repeatable && !field.value && (\n <Initializer disabled={disabled} name={name} onClick={handleInitialisationClick} />\n )}\n {!attribute.repeatable && field.value ? (\n <NonRepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </NonRepeatableComponent>\n ) : null}\n {attribute.repeatable && (\n <RepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </RepeatableComponent>\n )}\n <Field.Error />\n </Field.Root>\n );\n};\n\nconst MemoizedComponentInput = React.memo(ComponentInput);\n\nexport { MemoizedComponentInput as ComponentInput };\nexport type { ComponentInputProps };\n"],"names":["ComponentInput","label","required","name","attribute","disabled","labelAction","props","formatMessage","useIntl","field","useField","showResetComponent","repeatable","value","currentDocument","components","useDocumentContext","handleInitialisationClick","schema","component","form","createDefaultForm","data","transformDocument","onChange","_jsxs","Field","Root","error","Flex","justifyContent","Label","action","_Fragment","Array","isArray","length","_jsx","IconButton","id","getTranslation","defaultMessage","variant","onClick","Trash","Initializer","NonRepeatableComponent","children","RepeatableComponent","Error","MemoizedComponentInput","React","memo"],"mappings":"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"}
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var strapiAdmin = require('@strapi/admin/strapi-admin');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
- var DocumentContext = require('../../../../../features/DocumentContext.js');
7
+ var useDocumentContext = require('../../../../../hooks/useDocumentContext.js');
8
8
  var FormLayout = require('../../FormLayout.js');
9
9
  var ComponentContext = require('../ComponentContext.js');
10
10
 
@@ -13,7 +13,7 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
13
13
  const { value } = strapiAdmin.useField(name);
14
14
  const level = ComponentContext.useComponent('NonRepeatableComponent', (state)=>state.level);
15
15
  const isNested = level > 0;
16
- const currentDocument = DocumentContext.useDocumentContext('NonRepeatableComponent', (state)=>state.document);
16
+ const { currentDocument } = useDocumentContext.useDocumentContext('NonRepeatableComponent');
17
17
  return /*#__PURE__*/ jsxRuntime.jsx(ComponentContext.ComponentProvider, {
18
18
  id: value?.id,
19
19
  uid: attribute.component,
@@ -1 +1 @@
1
- {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const currentDocument = useDocumentContext('NonRepeatableComponent', (state) => state.document);\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","document","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs"],"mappings":";;;;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,6BAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAMI,kBAAkBC,kCAAmB,CAAA,wBAAA,EAA0B,CAACH,KAAAA,GAAUA,MAAMI,QAAQ,CAAA;AAE9F,IAAA,qBACEC,cAACC,CAAAA,kCAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIX,KAAOW,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKlB,UAAUmB,SAAS;AAAEX,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGY,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,cAACM,CAAAA,gBAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWhB,EAAAA,QAAAA;AACXiB,YAAAA,WAAAA,EAAajB,WAAW,YAAekB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,cAACe,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD9B,MAAO+B,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACErB,cAACsB,CAAAA,6BAAAA,EAAAA;wBAAmBJ,GAAK,EAAA,CAAA;AACtBE,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMC,iBAAoB,GAAA,CAAC,EAAEvC,IAAAA,CAAK,CAAC,EAAEsC,KAAAA,CAAMtC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMwC,kBAAkBrC,aAAc,CAAA;gCACpCa,EAAI,EAAA,CAAC,2BAA2B,EAAEjB,SAAUmB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMtC,IAAI,CAAC,CAAC;AACrEyC,gCAAAA,cAAAA,EAAgBH,MAAMI;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE5B,cAAC6B,CAAAA,6BAAAA,EAAAA;gCACCC,GAAKP,EAAAA,IAAAA;gCAELQ,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV9B,QAAS,CAAA;AACR,oCAAA,GAAGqC,KAAK;oCACRI,KAAOF,EAAAA,eAAAA;oCACPxC,IAAMuC,EAAAA,iBAAAA;oCACN1B,QAAUF,EAAAA;AACZ,iCAAA;AAXK4B,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BJ,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
1
+ {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":";;;;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,6BAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAM,EAAEI,eAAe,EAAE,GAAGC,qCAAmB,CAAA,wBAAA,CAAA;AAE/C,IAAA,qBACEC,cAACC,CAAAA,kCAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIV,KAAOU,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKjB,UAAUkB,SAAS;AAAEV,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGW,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,cAACM,CAAAA,gBAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWf,EAAAA,QAAAA;AACXgB,YAAAA,WAAAA,EAAahB,WAAW,YAAeiB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,cAACe,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD7B,MAAO8B,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACErB,cAACsB,CAAAA,6BAAAA,EAAAA;wBAAmBJ,GAAK,EAAA,CAAA;AACtBE,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMC,iBAAoB,GAAA,CAAC,EAAEtC,IAAAA,CAAK,CAAC,EAAEqC,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMuC,kBAAkBpC,aAAc,CAAA;gCACpCY,EAAI,EAAA,CAAC,2BAA2B,EAAEhB,SAAUkB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AACrEwC,gCAAAA,cAAAA,EAAgBH,MAAMI;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE5B,cAAC6B,CAAAA,6BAAAA,EAAAA;gCACCC,GAAKP,EAAAA,IAAAA;gCAELQ,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV7B,QAAS,CAAA;AACR,oCAAA,GAAGoC,KAAK;oCACRI,KAAOF,EAAAA,eAAAA;oCACPvC,IAAMsC,EAAAA,iBAAAA;oCACNQ,QAAUnC,EAAAA;AACZ,iCAAA;AAXK2B,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BJ,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { useField } from '@strapi/admin/strapi-admin';
3
3
  import { Box, Flex } from '@strapi/design-system';
4
4
  import { useIntl } from 'react-intl';
5
- import { useDocumentContext } from '../../../../../features/DocumentContext.mjs';
5
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
6
6
  import { ResponsiveGridRoot, ResponsiveGridItem } from '../../FormLayout.mjs';
7
7
  import { useComponent, ComponentProvider } from '../ComponentContext.mjs';
8
8
 
@@ -11,7 +11,7 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
11
11
  const { value } = useField(name);
12
12
  const level = useComponent('NonRepeatableComponent', (state)=>state.level);
13
13
  const isNested = level > 0;
14
- const currentDocument = useDocumentContext('NonRepeatableComponent', (state)=>state.document);
14
+ const { currentDocument } = useDocumentContext('NonRepeatableComponent');
15
15
  return /*#__PURE__*/ jsx(ComponentProvider, {
16
16
  id: value?.id,
17
17
  uid: attribute.component,
@@ -1 +1 @@
1
- {"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const currentDocument = useDocumentContext('NonRepeatableComponent', (state) => state.document);\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","document","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs"],"mappings":";;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,QAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,YAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAMI,kBAAkBC,kBAAmB,CAAA,wBAAA,EAA0B,CAACH,KAAAA,GAAUA,MAAMI,QAAQ,CAAA;AAE9F,IAAA,qBACEC,GAACC,CAAAA,iBAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIX,KAAOW,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKlB,UAAUmB,SAAS;AAAEX,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGY,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,GAACM,CAAAA,GAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWhB,EAAAA,QAAAA;AACXiB,YAAAA,WAAAA,EAAajB,WAAW,YAAekB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,GAACe,CAAAA,IAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD9B,MAAO+B,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACErB,GAACsB,CAAAA,kBAAAA,EAAAA;wBAAmBJ,GAAK,EAAA,CAAA;AACtBE,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMC,iBAAoB,GAAA,CAAC,EAAEvC,IAAAA,CAAK,CAAC,EAAEsC,KAAAA,CAAMtC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMwC,kBAAkBrC,aAAc,CAAA;gCACpCa,EAAI,EAAA,CAAC,2BAA2B,EAAEjB,SAAUmB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMtC,IAAI,CAAC,CAAC;AACrEyC,gCAAAA,cAAAA,EAAgBH,MAAMI;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE5B,GAAC6B,CAAAA,kBAAAA,EAAAA;gCACCC,GAAKP,EAAAA,IAAAA;gCAELQ,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV9B,QAAS,CAAA;AACR,oCAAA,GAAGqC,KAAK;oCACRI,KAAOF,EAAAA,eAAAA;oCACPxC,IAAMuC,EAAAA,iBAAAA;oCACN1B,QAAUF,EAAAA;AACZ,iCAAA;AAXK4B,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BJ,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
1
+ {"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":";;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,QAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,YAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAM,EAAEI,eAAe,EAAE,GAAGC,kBAAmB,CAAA,wBAAA,CAAA;AAE/C,IAAA,qBACEC,GAACC,CAAAA,iBAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIV,KAAOU,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKjB,UAAUkB,SAAS;AAAEV,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGW,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,GAACM,CAAAA,GAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWf,EAAAA,QAAAA;AACXgB,YAAAA,WAAAA,EAAahB,WAAW,YAAeiB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,GAACe,CAAAA,IAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD7B,MAAO8B,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACErB,GAACsB,CAAAA,kBAAAA,EAAAA;wBAAmBJ,GAAK,EAAA,CAAA;AACtBE,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMC,iBAAoB,GAAA,CAAC,EAAEtC,IAAAA,CAAK,CAAC,EAAEqC,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMuC,kBAAkBpC,aAAc,CAAA;gCACpCY,EAAI,EAAA,CAAC,2BAA2B,EAAEhB,SAAUkB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AACrEwC,gCAAAA,cAAAA,EAAgBH,MAAMI;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE5B,GAAC6B,CAAAA,kBAAAA,EAAAA;gCACCC,GAAKP,EAAAA,IAAAA;gCAELQ,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV7B,QAAS,CAAA;AACR,oCAAA,GAAGoC,KAAK;oCACRI,KAAOF,EAAAA,eAAAA;oCACPvC,IAAMsC,EAAAA,iBAAAA;oCACNQ,QAAUnC,EAAAA;AACZ,iCAAA;AAXK2B,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BJ,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
@@ -10,7 +10,7 @@ var reactIntl = require('react-intl');
10
10
  var reactRouterDom = require('react-router-dom');
11
11
  var styledComponents = require('styled-components');
12
12
  var dragAndDrop = require('../../../../../constants/dragAndDrop.js');
13
- var DocumentContext = require('../../../../../features/DocumentContext.js');
13
+ var useDocumentContext = require('../../../../../hooks/useDocumentContext.js');
14
14
  var useDragAndDrop = require('../../../../../hooks/useDragAndDrop.js');
15
15
  var usePrev = require('../../../../../hooks/usePrev.js');
16
16
  var objects = require('../../../../../utils/objects.js');
@@ -47,7 +47,7 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
47
47
  const search = React__namespace.useMemo(()=>new URLSearchParams(searchString), [
48
48
  searchString
49
49
  ]);
50
- const currentDocument = DocumentContext.useDocumentContext('RepeatableComponent', (state)=>state.document);
50
+ const { currentDocument } = useDocumentContext.useDocumentContext('RepeatableComponent');
51
51
  const components = currentDocument.components;
52
52
  const { value = [], error, rawError } = strapiAdmin.useField(name);
53
53
  const addFieldRow = strapiAdmin.useForm('RepeatableComponent', (state)=>state.addFieldRow);
@@ -1 +1 @@
1
- {"version":3,"file":"Repeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const currentDocument = useDocumentContext('RepeatableComponent', (state) => state.document);\n const components = currentDocument.components;\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id }, index) => {\n const nameWithIndex = `${name}.${index}`;\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n <IconButton\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","state","document","components","value","error","rawError","useField","addFieldRow","useForm","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","Content","Flex","background","padding","StyledSpan","tag","primary500"],"mappings":"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"}
1
+ {"version":3,"file":"Repeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id }, index) => {\n const nameWithIndex = `${name}.${index}`;\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n <IconButton\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","document","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","Content","Flex","background","padding","StyledSpan","tag","primary500"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { useIntl } from 'react-intl';
8
8
  import { useLocation } from 'react-router-dom';
9
9
  import { styled } from 'styled-components';
10
10
  import { ItemTypes } from '../../../../../constants/dragAndDrop.mjs';
11
- import { useDocumentContext } from '../../../../../features/DocumentContext.mjs';
11
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
12
12
  import { useDragAndDrop } from '../../../../../hooks/useDragAndDrop.mjs';
13
13
  import { usePrev } from '../../../../../hooks/usePrev.mjs';
14
14
  import { getIn } from '../../../../../utils/objects.mjs';
@@ -26,7 +26,7 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
26
26
  const search = React.useMemo(()=>new URLSearchParams(searchString), [
27
27
  searchString
28
28
  ]);
29
- const currentDocument = useDocumentContext('RepeatableComponent', (state)=>state.document);
29
+ const { currentDocument } = useDocumentContext('RepeatableComponent');
30
30
  const components = currentDocument.components;
31
31
  const { value = [], error, rawError } = useField(name);
32
32
  const addFieldRow = useForm('RepeatableComponent', (state)=>state.addFieldRow);
@@ -1 +1 @@
1
- {"version":3,"file":"Repeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const currentDocument = useDocumentContext('RepeatableComponent', (state) => state.document);\n const components = currentDocument.components;\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id }, index) => {\n const nameWithIndex = `${name}.${index}`;\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n <IconButton\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","state","document","components","value","error","rawError","useField","addFieldRow","useForm","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","Content","Flex","background","padding","StyledSpan","tag","primary500"],"mappings":"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"}
1
+ {"version":3,"file":"Repeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField, useNotification, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id }, index) => {\n const nameWithIndex = `${name}.${index}`;\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n <IconButton\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","document","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","Content","Flex","background","padding","StyledSpan","tag","primary500"],"mappings":"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"}
@@ -10,7 +10,7 @@ var reactIntl = require('react-intl');
10
10
  var styledComponents = require('styled-components');
11
11
  var ComponentIcon = require('../../../../../components/ComponentIcon.js');
12
12
  var dragAndDrop = require('../../../../../constants/dragAndDrop.js');
13
- var DocumentContext = require('../../../../../features/DocumentContext.js');
13
+ var useDocumentContext = require('../../../../../hooks/useDocumentContext.js');
14
14
  var useDocumentLayout = require('../../../../../hooks/useDocumentLayout.js');
15
15
  var useDragAndDrop = require('../../../../../hooks/useDragAndDrop.js');
16
16
  var objects = require('../../../../../utils/objects.js');
@@ -40,19 +40,8 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
40
40
  const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory = {}, onAddComponent, children })=>{
41
41
  const { formatMessage } = reactIntl.useIntl();
42
42
  const formValues = strapiAdmin.useForm('DynamicComponent', (state)=>state.values);
43
- const documentMeta = DocumentContext.useDocumentContext('DynamicComponent', (state)=>state.meta);
44
- const rootDocumentMeta = DocumentContext.useDocumentContext('DynamicComponent', (state)=>state.rootDocumentMeta);
45
- const { edit: { components: rootComponents } } = useDocumentLayout.useDocumentLayout(rootDocumentMeta.model);
46
- const { edit: { components: relatedComponents } } = useDocumentLayout.useDocumentLayout(documentMeta.model);
47
- // Merge the root level components and related components
48
- const components = React__namespace.useMemo(()=>({
49
- ...rootComponents,
50
- ...relatedComponents
51
- }), [
52
- rootComponents,
53
- relatedComponents
54
- ]);
55
- const document = DocumentContext.useDocumentContext('DynamicComponent', (state)=>state.document);
43
+ const { currentDocument, currentDocumentMeta } = useDocumentContext.useDocumentContext('DynamicComponent');
44
+ const { edit: { components } } = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
56
45
  const title = React__namespace.useMemo(()=>{
57
46
  const { mainField } = components[componentUid]?.settings ?? {
58
47
  mainField: 'id'
@@ -284,11 +273,11 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
284
273
  alignItems: "stretch",
285
274
  children: children ? children({
286
275
  ...fieldWithTranslatedLabel,
287
- document,
276
+ document: currentDocument,
288
277
  name: fieldName
289
278
  }) : /*#__PURE__*/ jsxRuntime.jsx(InputRenderer.InputRenderer, {
290
279
  ...fieldWithTranslatedLabel,
291
- document: document,
280
+ document: currentDocument,
292
281
  name: fieldName
293
282
  })
294
283
  }, fieldName);