@strapi/content-manager 5.39.0 → 5.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/admin/hooks/useDocument.js +21 -5
  2. package/dist/admin/hooks/useDocument.js.map +1 -1
  3. package/dist/admin/hooks/useDocument.mjs +22 -6
  4. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/components/DocumentActions.js +1 -0
  6. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  7. package/dist/admin/pages/EditView/components/DocumentActions.mjs +3 -2
  8. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +4 -4
  10. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  11. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +71 -44
  12. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +54 -46
  14. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +107 -88
  16. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +109 -90
  18. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +91 -106
  20. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +94 -109
  22. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +43 -23
  24. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +45 -25
  26. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +2 -2
  28. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +30 -19
  29. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  30. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +34 -23
  31. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  32. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +1 -1
  34. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs +1 -1
  35. package/dist/admin/pages/EditView/components/FormLayout.js +23 -3
  36. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormLayout.mjs +4 -3
  38. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/Header.js +3 -0
  40. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/Header.mjs +3 -0
  42. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/InputRenderer.js +19 -7
  44. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -8
  46. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  47. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +11 -15
  48. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  49. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +11 -16
  50. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  51. package/dist/admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.d.ts +3 -2
  52. package/dist/admin/src/pages/EditView/components/FormInputs/Component/Repeatable.d.ts +3 -2
  53. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +3 -3
  54. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  55. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  56. package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +3 -0
  57. package/dist/admin/src/pages/ListView/components/Filters.d.ts +3 -0
  58. package/dist/server/services/utils/draft.js +8 -1
  59. package/dist/server/services/utils/draft.js.map +1 -1
  60. package/dist/server/services/utils/draft.mjs +8 -1
  61. package/dist/server/services/utils/draft.mjs.map +1 -1
  62. package/dist/server/services/utils/populate.js +16 -1
  63. package/dist/server/services/utils/populate.js.map +1 -1
  64. package/dist/server/services/utils/populate.mjs +16 -1
  65. package/dist/server/services/utils/populate.mjs.map +1 -1
  66. package/dist/server/src/services/utils/draft.d.ts.map +1 -1
  67. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  68. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useNotification, useField, useForm, createRulesEngine, useIsDesktop } from '@strapi/admin/strapi-admin';
3
+ import { useNotification, useField, useForm, useIsDesktop } from '@strapi/admin/strapi-admin';
4
4
  import { Accordion, TextButton, Box, VisuallyHidden, useComposedRefs, IconButton, Flex } from '@strapi/design-system';
5
5
  import { Plus, Trash, Drag, ArrowUp, ArrowDown } from '@strapi/icons';
6
6
  import { getEmptyImage } from 'react-dnd-html5-backend';
@@ -35,7 +35,6 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
35
35
  const { max = Infinity } = attribute;
36
36
  const [collapseToOpen, setCollapseToOpen] = React.useState('');
37
37
  const [liveText, setLiveText] = React.useState('');
38
- const rulesEngine = createRulesEngine();
39
38
  React.useEffect(()=>{
40
39
  const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;
41
40
  const hasNestedValue = value && Array.isArray(value) && value.length > 0;
@@ -96,9 +95,9 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
96
95
  }, [
97
96
  componentTmpKeyWithFocussedField
98
97
  ]);
99
- const toggleCollapses = ()=>{
98
+ const toggleCollapses = React.useCallback(()=>{
100
99
  setCollapseToOpen('');
101
- };
100
+ }, []);
102
101
  const handleClick = ()=>{
103
102
  if (value.length < max) {
104
103
  const schema = components[attribute.component];
@@ -115,46 +114,69 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
115
114
  });
116
115
  }
117
116
  };
118
- const handleMoveComponentField = (newIndex, currentIndex)=>{
117
+ const handleMoveComponentField = React.useCallback((newIndex, currentIndex)=>{
119
118
  setLiveText(formatMessage({
120
119
  id: getTranslation('dnd.reorder'),
121
120
  defaultMessage: '{item}, moved. New position in list: {position}.'
122
121
  }, {
123
122
  item: `${name}.${currentIndex}`,
124
- position: getItemPos(newIndex)
123
+ position: `${newIndex + 1} of ${value.length}`
125
124
  }));
126
125
  moveFieldRow(name, currentIndex, newIndex);
127
- };
126
+ }, [
127
+ formatMessage,
128
+ moveFieldRow,
129
+ name,
130
+ value.length
131
+ ]);
128
132
  const handleValueChange = (key)=>{
129
133
  setCollapseToOpen(key);
130
134
  };
131
- const getItemPos = (index)=>`${index + 1} of ${value.length}`;
132
- const handleCancel = (index)=>{
135
+ const handleCancel = React.useCallback((index)=>{
133
136
  setLiveText(formatMessage({
134
137
  id: getTranslation('dnd.cancel-item'),
135
138
  defaultMessage: '{item}, dropped. Re-order cancelled.'
136
139
  }, {
137
140
  item: `${name}.${index}`
138
141
  }));
139
- };
140
- const handleGrabItem = (index)=>{
142
+ }, [
143
+ formatMessage,
144
+ name
145
+ ]);
146
+ const handleGrabItem = React.useCallback((index)=>{
141
147
  setLiveText(formatMessage({
142
148
  id: getTranslation('dnd.grab-item'),
143
149
  defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`
144
150
  }, {
145
151
  item: `${name}.${index}`,
146
- position: getItemPos(index)
152
+ position: `${index + 1} of ${value.length}`
147
153
  }));
148
- };
149
- const handleDropItem = (index)=>{
154
+ }, [
155
+ formatMessage,
156
+ name,
157
+ value.length
158
+ ]);
159
+ const handleDropItem = React.useCallback((index)=>{
150
160
  setLiveText(formatMessage({
151
161
  id: getTranslation('dnd.drop-item'),
152
162
  defaultMessage: `{item}, dropped. Final position in list: {position}.`
153
163
  }, {
154
164
  item: `${name}.${index}`,
155
- position: getItemPos(index)
165
+ position: `${index + 1} of ${value.length}`
156
166
  }));
157
- };
167
+ }, [
168
+ formatMessage,
169
+ name,
170
+ value.length
171
+ ]);
172
+ const handleDeleteComponent = React.useCallback((index)=>{
173
+ removeFieldRow(name, index);
174
+ toggleCollapses();
175
+ }, [
176
+ name,
177
+ removeFieldRow,
178
+ toggleCollapses
179
+ ]);
158
180
  const ariaDescriptionId = React.useId();
159
181
  const level = useComponent('RepeatableComponent', (state)=>state.level);
160
182
  if (value.length === 0) {
@@ -184,7 +206,9 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
184
206
  onValueChange: handleValueChange,
185
207
  "aria-describedby": ariaDescriptionId,
186
208
  children: [
187
- value.map(({ __temp_key__: key, id, ...currentComponentValues }, index)=>{
209
+ value.map((componentValue, index)=>{
210
+ const key = componentValue.__temp_key__;
211
+ const id = componentValue.id;
188
212
  const nameWithIndex = `${name}.${index}`;
189
213
  return /*#__PURE__*/ jsx(ComponentProvider, {
190
214
  // id is always a number in a component
@@ -192,63 +216,22 @@ const RepeatableComponent = ({ attribute, disabled, name, mainField, children, l
192
216
  uid: attribute.component,
193
217
  level: level + 1,
194
218
  type: "repeatable",
195
- children: /*#__PURE__*/ jsx(Component, {
219
+ children: /*#__PURE__*/ jsx(MemoizedComponent, {
196
220
  disabled: disabled,
197
221
  name: nameWithIndex,
198
- attribute: attribute,
222
+ attributeComponent: attribute.component,
199
223
  index: index,
200
224
  mainField: mainField,
201
225
  onMoveItem: handleMoveComponentField,
202
- onDeleteComponent: ()=>{
203
- removeFieldRow(name, index);
204
- toggleCollapses();
205
- },
226
+ onDeleteComponent: handleDeleteComponent,
206
227
  toggleCollapses: toggleCollapses,
207
228
  onCancel: handleCancel,
208
229
  onDropItem: handleDropItem,
209
230
  onGrabItem: handleGrabItem,
210
231
  __temp_key__: key,
211
232
  totalLength: value.length,
212
- children: layout.map((row, index)=>{
213
- const visibleFields = row.filter(({ ...field })=>{
214
- const condition = field.attribute.conditions?.visible;
215
- if (condition) {
216
- return rulesEngine.evaluate(condition, currentComponentValues);
217
- }
218
- return true;
219
- });
220
- if (visibleFields.length === 0) {
221
- return null; // Skip rendering the entire grid row
222
- }
223
- return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
224
- gap: 4,
225
- children: visibleFields.map(({ size, ...field })=>{
226
- /**
227
- * Layouts are built from schemas so they don't understand the complete
228
- * schema tree, for components we append the parent name to the field name
229
- * because this is the structure for the data & permissions also understand
230
- * the nesting involved.
231
- */ const completeFieldName = `${nameWithIndex}.${field.name}`;
232
- const translatedLabel = formatMessage({
233
- id: `content-manager.components.${attribute.component}.${field.name}`,
234
- defaultMessage: field.label
235
- });
236
- return /*#__PURE__*/ jsx(ResponsiveGridItem, {
237
- col: size,
238
- s: 12,
239
- xs: 12,
240
- direction: "column",
241
- alignItems: "stretch",
242
- children: children({
243
- ...field,
244
- label: translatedLabel,
245
- name: completeFieldName,
246
- document: currentDocument
247
- })
248
- }, completeFieldName);
249
- })
250
- }, index);
251
- })
233
+ layout: layout,
234
+ renderField: children
252
235
  })
253
236
  }, key);
254
237
  }),
@@ -296,10 +279,45 @@ const TextButtonCustom = styled(TextButton)`
296
279
  transition: background-color 120ms ${(props)=>props.theme.motion.easings.easeOutQuad};
297
280
  }
298
281
  `;
299
- const Component = ({ disabled, index, name, mainField = {
282
+ const RepeatableComponentFields = /*#__PURE__*/ React.memo(({ attributeComponent, children, layout, nameWithIndex })=>{
283
+ const { formatMessage } = useIntl();
284
+ return /*#__PURE__*/ jsx(Fragment, {
285
+ children: layout.map((row, index)=>{
286
+ return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
287
+ gap: 4,
288
+ children: row.map(({ size, ...field })=>{
289
+ /**
290
+ * Layouts are built from schemas so they don't understand the complete
291
+ * schema tree, for components we append the parent name to the field name
292
+ * because this is the structure for the data & permissions also understand
293
+ * the nesting involved.
294
+ */ const completeFieldName = `${nameWithIndex}.${field.name}`;
295
+ const translatedLabel = formatMessage({
296
+ id: `content-manager.components.${attributeComponent}.${field.name}`,
297
+ defaultMessage: field.label
298
+ });
299
+ return /*#__PURE__*/ jsx(ResponsiveGridItem, {
300
+ col: size,
301
+ s: 12,
302
+ xs: 12,
303
+ direction: "column",
304
+ alignItems: "stretch",
305
+ children: children({
306
+ ...field,
307
+ label: translatedLabel,
308
+ name: completeFieldName
309
+ })
310
+ }, completeFieldName);
311
+ })
312
+ }, index);
313
+ })
314
+ });
315
+ });
316
+ RepeatableComponentFields.displayName = 'RepeatableComponentFields';
317
+ const Component = ({ attributeComponent, disabled, index, name, mainField = {
300
318
  name: 'id',
301
319
  type: 'integer'
302
- }, children, onDeleteComponent, toggleCollapses, __temp_key__, totalLength, onMoveItem, ...dragProps })=>{
320
+ }, layout, onDeleteComponent, renderField, toggleCollapses, __temp_key__, totalLength, onMoveItem, ...dragProps })=>{
303
321
  const { formatMessage } = useIntl();
304
322
  const isDesktop = useIsDesktop();
305
323
  const displayValue = useForm('RepeatableComponent', (state)=>{
@@ -339,27 +357,11 @@ const Component = ({ disabled, index, name, mainField = {
339
357
  ]);
340
358
  const composedAccordionRefs = useComposedRefs(accordionRef, dragRef);
341
359
  const composedBoxRefs = useComposedRefs(boxRef, dropRef);
342
- const handleMoveUp = React.useCallback((e)=>{
343
- e.stopPropagation();
344
- if (index > 0 && onMoveItem) {
345
- onMoveItem(index - 1, index);
346
- }
347
- }, [
348
- index,
349
- onMoveItem
350
- ]);
351
- const handleMoveDown = React.useCallback((e)=>{
352
- e.stopPropagation();
353
- if (index < totalLength - 1 && onMoveItem) {
354
- onMoveItem(index + 1, index);
355
- }
356
- }, [
357
- index,
358
- totalLength,
359
- onMoveItem
360
- ]);
361
360
  const canMoveUp = index > 0;
362
361
  const canMoveDown = index < totalLength - 1;
362
+ const handleDeleteClick = ()=>{
363
+ onDeleteComponent?.(index);
364
+ };
363
365
  return /*#__PURE__*/ jsx(Fragment, {
364
366
  children: isDragging ? /*#__PURE__*/ jsx(Preview, {}) : /*#__PURE__*/ jsxs(Accordion.Item, {
365
367
  ref: composedBoxRefs,
@@ -375,7 +377,7 @@ const Component = ({ disabled, index, name, mainField = {
375
377
  /*#__PURE__*/ jsx(IconButton, {
376
378
  disabled: disabled,
377
379
  variant: "ghost",
378
- onClick: onDeleteComponent,
380
+ onClick: handleDeleteClick,
379
381
  label: formatMessage({
380
382
  id: getTranslation('containers.Edit.delete'),
381
383
  defaultMessage: 'Delete'
@@ -400,7 +402,12 @@ const Component = ({ disabled, index, name, mainField = {
400
402
  canMoveUp && /*#__PURE__*/ jsx(IconButton, {
401
403
  disabled: disabled || !canMoveUp,
402
404
  variant: "ghost",
403
- onClick: handleMoveUp,
405
+ onClick: (e)=>{
406
+ e.stopPropagation();
407
+ if (onMoveItem) {
408
+ onMoveItem(index - 1, index);
409
+ }
410
+ },
404
411
  label: formatMessage({
405
412
  id: getTranslation('components.DynamicZone.move-up'),
406
413
  defaultMessage: 'Move up'
@@ -410,7 +417,12 @@ const Component = ({ disabled, index, name, mainField = {
410
417
  canMoveDown && /*#__PURE__*/ jsx(IconButton, {
411
418
  disabled: disabled || !canMoveDown,
412
419
  variant: "ghost",
413
- onClick: handleMoveDown,
420
+ onClick: (e)=>{
421
+ e.stopPropagation();
422
+ if (onMoveItem) {
423
+ onMoveItem(index + 1, index);
424
+ }
425
+ },
414
426
  label: formatMessage({
415
427
  id: getTranslation('components.DynamicZone.move-down'),
416
428
  defaultMessage: 'Move down'
@@ -436,7 +448,12 @@ const Component = ({ disabled, index, name, mainField = {
436
448
  initial: 3,
437
449
  medium: 4
438
450
  },
439
- children: children
451
+ children: /*#__PURE__*/ jsx(RepeatableComponentFields, {
452
+ attributeComponent: attributeComponent,
453
+ layout: layout,
454
+ nameWithIndex: name,
455
+ children: renderField
456
+ })
440
457
  })
441
458
  })
442
459
  ]
@@ -455,6 +472,8 @@ const StyledSpan = styled(Box)`
455
472
  outline: 1px dashed ${({ theme })=>theme.colors.primary500};
456
473
  outline-offset: -1px;
457
474
  `;
475
+ const MemoizedComponent = /*#__PURE__*/ React.memo(Component);
476
+ const MemoizedRepeatableComponent = /*#__PURE__*/ React.memo(RepeatableComponent);
458
477
 
459
- export { RepeatableComponent };
478
+ export { MemoizedRepeatableComponent as RepeatableComponent };
460
479
  //# sourceMappingURL=Repeatable.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Repeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useField,\n useNotification,\n useForm,\n createRulesEngine,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n const rulesEngine = createRulesEngine();\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id, ...currentComponentValues }, index) => {\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n >\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, currentComponentValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const handleMoveUp = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index > 0 && onMoveItem) {\n onMoveItem(index - 1, index);\n }\n },\n [index, onMoveItem]\n );\n\n const handleMoveDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (index < totalLength - 1 && onMoveItem) {\n onMoveItem(index + 1, index);\n }\n },\n [index, totalLength, onMoveItem]\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={handleMoveUp}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={handleMoveDown}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","error","rawError","useField","addFieldRow","useForm","state","moveFieldRow","removeFieldRow","max","Infinity","collapseToOpen","setCollapseToOpen","useState","liveText","setLiveText","rulesEngine","createRulesEngine","useEffect","hasNestedErrors","Array","isArray","length","hasNestedValue","errorOpenItems","map","_","idx","__temp_key__","filter","includes","componentTmpKeyWithFocussedField","has","fieldParam","get","undefined","path","split","getIn","subpath","prevValue","usePrev","toggleCollapses","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","getItemPos","handleValueChange","key","index","handleCancel","handleGrabItem","handleDropItem","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","currentComponentValues","nameWithIndex","ComponentProvider","uid","Component","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","row","visibleFields","field","condition","conditions","visible","evaluate","ResponsiveGridRoot","gap","size","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","document","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","dragProps","isDesktop","useIsDesktop","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","handleMoveUp","useCallback","e","stopPropagation","handleMoveDown","canMoveUp","canMoveDown","_Fragment","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","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, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { currentDocument } = useDocumentContext('RepeatableComponent');\n const components = currentDocument.components;\n\n const {\n value = [],\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 = React.useCallback(() => {\n setCollapseToOpen('');\n }, []);\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField = React.useCallback(\n (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: `${newIndex + 1} of ${value.length}`,\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n },\n [formatMessage, moveFieldRow, name, value.length]\n );\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const handleCancel = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n },\n [formatMessage, name]\n );\n\n const handleGrabItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDropItem = React.useCallback(\n (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: `${index + 1} of ${value.length}`,\n }\n )\n );\n },\n [formatMessage, name, value.length]\n );\n\n const handleDeleteComponent = React.useCallback(\n (index: number) => {\n removeFieldRow(name, index);\n toggleCollapses();\n },\n [name, removeFieldRow, toggleCollapses]\n );\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map((componentValue, index) => {\n const key = componentValue.__temp_key__;\n const id = componentValue.id;\n const nameWithIndex = `${name}.${index}`;\n\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <MemoizedComponent\n disabled={disabled}\n name={nameWithIndex}\n attributeComponent={attribute.component}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={handleDeleteComponent}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n totalLength={value.length}\n layout={layout}\n renderField={children}\n />\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\ninterface RepeatableComponentFieldsProps\n extends Pick<RepeatableComponentProps, 'children' | 'layout'> {\n attributeComponent: string;\n nameWithIndex: string;\n}\n\nconst RepeatableComponentFields = React.memo(\n ({ attributeComponent, children, layout, nameWithIndex }: RepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attributeComponent}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </>\n );\n }\n);\n\nRepeatableComponentFields.displayName = 'RepeatableComponentFields';\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField' | 'layout'> {\n attributeComponent: string;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: (index: number) => void;\n renderField: RepeatableComponentProps['children'];\n toggleCollapses: () => void;\n __temp_key__: string;\n totalLength: number;\n}\n\nconst Component = ({\n attributeComponent,\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n layout,\n onDeleteComponent,\n renderField,\n toggleCollapses,\n __temp_key__,\n totalLength,\n onMoveItem,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n onMoveItem,\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n const canMoveUp = index > 0;\n const canMoveDown = index < totalLength - 1;\n const handleDeleteClick = () => {\n onDeleteComponent?.(index);\n };\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n disabled={disabled}\n variant=\"ghost\"\n onClick={handleDeleteClick}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n disabled={disabled}\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n {!isDesktop && (\n <>\n {canMoveUp && (\n <IconButton\n disabled={disabled || !canMoveUp}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index - 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <ArrowUp />\n </IconButton>\n )}\n {canMoveDown && (\n <IconButton\n disabled={disabled || !canMoveDown}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n if (onMoveItem) {\n onMoveItem(index + 1, index);\n }\n }}\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <ArrowDown />\n </IconButton>\n )}\n </>\n )}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={{ initial: 4, medium: 6 }}\n gap={{ initial: 3, medium: 4 }}\n >\n <RepeatableComponentFields\n attributeComponent={attributeComponent}\n layout={layout}\n nameWithIndex={name}\n >\n {renderField}\n </RepeatableComponentFields>\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nconst MemoizedComponent = React.memo(Component);\nconst MemoizedRepeatableComponent = React.memo(RepeatableComponent);\n\nexport { MemoizedRepeatableComponent as RepeatableComponent };\nexport type { RepeatableComponentProps };\n"],"names":["RepeatableComponent","attribute","disabled","name","mainField","children","layout","toggleNotification","useNotification","formatMessage","useIntl","search","searchString","useLocation","React","useMemo","URLSearchParams","currentDocument","useDocumentContext","components","value","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","useCallback","handleClick","schema","component","form","createDefaultForm","data","transformDocument","type","message","id","getTranslation","handleMoveComponentField","newIndex","currentIndex","defaultMessage","item","position","handleValueChange","key","handleCancel","index","handleGrabItem","handleDropItem","handleDeleteComponent","ariaDescriptionId","useId","level","useComponent","_jsx","Initializer","onClick","_jsxs","Box","hasRadius","VisuallyHidden","aria-live","AccordionRoot","$error","onValueChange","aria-describedby","componentValue","nameWithIndex","ComponentProvider","uid","MemoizedComponent","attributeComponent","onMoveItem","onDeleteComponent","onCancel","onDropItem","onGrabItem","totalLength","renderField","TextButtonCustom","startIcon","Plus","styled","Accordion","Root","theme","colors","danger600","neutral200","TextButton","props","spaces","primary100","motion","easings","easeOutQuad","RepeatableComponentFields","memo","_Fragment","row","ResponsiveGridRoot","gap","size","field","completeFieldName","translatedLabel","label","ResponsiveGridItem","col","s","xs","direction","alignItems","displayName","Component","dragProps","isDesktop","useIsDesktop","displayValue","values","accordionRef","useRef","componentKey","slice","join","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","ItemTypes","COMPONENT","displayedValue","onStart","getEmptyImage","captureDraggingState","composedAccordionRefs","useComposedRefs","composedBoxRefs","canMoveUp","canMoveDown","handleDeleteClick","Preview","Item","ref","Header","Trigger","Actions","IconButton","variant","Trash","e","stopPropagation","data-handler-id","onKeyDown","Drag","ArrowUp","ArrowDown","Content","Flex","background","padding","initial","medium","StyledSpan","tag","primary500","MemoizedRepeatableComponent"],"mappings":"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"}