@strapi/content-manager 5.48.1 → 5.49.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 (272) hide show
  1. package/dist/admin/components/ActionsDrawer.js +3 -2
  2. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js +4 -3
  4. package/dist/admin/components/ComponentIcon.js.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +3 -2
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js +3 -2
  8. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Form.js +7 -3
  10. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  11. package/dist/admin/components/LeftMenu.js +3 -2
  12. package/dist/admin/components/LeftMenu.js.map +1 -1
  13. package/dist/admin/components/RelativeTime.js +3 -2
  14. package/dist/admin/components/RelativeTime.js.map +1 -1
  15. package/dist/admin/components/Widgets.js +3 -2
  16. package/dist/admin/components/Widgets.js.map +1 -1
  17. package/dist/admin/features/DocumentRBAC.js +3 -2
  18. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  19. package/dist/admin/history/components/VersionContent.js +7 -3
  20. package/dist/admin/history/components/VersionContent.js.map +1 -1
  21. package/dist/admin/history/components/VersionHeader.js +3 -2
  22. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  23. package/dist/admin/history/components/VersionInputRenderer.js +3 -2
  24. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  25. package/dist/admin/history/pages/History.js +3 -2
  26. package/dist/admin/history/pages/History.js.map +1 -1
  27. package/dist/admin/history/routes.js +3 -2
  28. package/dist/admin/history/routes.js.map +1 -1
  29. package/dist/admin/hooks/useContentTypeSchema.js +3 -2
  30. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  31. package/dist/admin/hooks/useDocument.js +3 -2
  32. package/dist/admin/hooks/useDocument.js.map +1 -1
  33. package/dist/admin/hooks/useDocumentActions.js +3 -2
  34. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  35. package/dist/admin/hooks/useDocumentContext.js +3 -2
  36. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  37. package/dist/admin/hooks/useDocumentLayout.js +3 -2
  38. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  39. package/dist/admin/hooks/useDragAndDrop.js +3 -2
  40. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  41. package/dist/admin/hooks/useKeyboardDragAndDrop.js +3 -2
  42. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  43. package/dist/admin/hooks/useOnce.js +3 -2
  44. package/dist/admin/hooks/useOnce.js.map +1 -1
  45. package/dist/admin/hooks/usePersistentQueryParams.js +7 -2
  46. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  47. package/dist/admin/pages/ComponentConfigurationPage.js +3 -2
  48. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  49. package/dist/admin/pages/EditConfigurationPage.js +3 -2
  50. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  51. package/dist/admin/pages/EditView/EditViewPage.js +3 -2
  52. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/DocumentActions.js +80 -39
  54. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/DocumentActions.mjs +67 -33
  56. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +3 -2
  58. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +4 -3
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +3 -2
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +3 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +3 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +3 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +3 -2
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +4 -3
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +3 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +3 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +3 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +3 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +7 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +3 -2
  84. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +7 -3
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/UID.js +3 -2
  88. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +8 -4
  90. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +3 -2
  92. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +3 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js +5 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js +15 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js +5 -1
  100. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormLayout.js +3 -2
  102. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/Header.js +3 -2
  104. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -2
  106. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/Panels.js +3 -2
  108. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  109. package/dist/admin/pages/EditView/utils/data.js +5 -1
  110. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  111. package/dist/admin/pages/EditView/utils/keyboardShortcuts.js +35 -0
  112. package/dist/admin/pages/EditView/utils/keyboardShortcuts.js.map +1 -0
  113. package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs +33 -0
  114. package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs.map +1 -0
  115. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +3 -2
  116. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  117. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +3 -2
  118. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  119. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +3 -2
  120. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  121. package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -2
  122. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  123. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +3 -2
  124. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  125. package/dist/admin/pages/ListView/ListViewPage.js +3 -2
  126. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  127. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +3 -2
  128. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +3 -2
  130. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  131. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +3 -2
  132. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  134. package/dist/admin/pages/ListView/components/Filters.js +3 -2
  135. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  136. package/dist/admin/pages/ListView/components/TableActions.js +3 -2
  137. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  138. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +7 -3
  139. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  140. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -2
  141. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  142. package/dist/admin/pages/ListView/components/TableCells/Relations.js +3 -2
  143. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  144. package/dist/admin/preview/components/InputPopover.js +3 -2
  145. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  146. package/dist/admin/preview/hooks/usePreviewInputManager.js +3 -2
  147. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  148. package/dist/admin/preview/pages/Preview.js +3 -2
  149. package/dist/admin/preview/pages/Preview.js.map +1 -1
  150. package/dist/admin/preview/routes.js +3 -2
  151. package/dist/admin/preview/routes.js.map +1 -1
  152. package/dist/admin/src/pages/EditView/utils/keyboardShortcuts.d.ts +18 -0
  153. package/dist/admin/translations/cs.json.js +2 -1
  154. package/dist/admin/translations/cs.json.js.map +1 -1
  155. package/dist/admin/translations/cs.json.mjs +2 -1
  156. package/dist/admin/translations/cs.json.mjs.map +1 -1
  157. package/dist/admin/translations/de.json.js +2 -1
  158. package/dist/admin/translations/de.json.js.map +1 -1
  159. package/dist/admin/translations/de.json.mjs +2 -1
  160. package/dist/admin/translations/de.json.mjs.map +1 -1
  161. package/dist/admin/translations/en.json.js +2 -1
  162. package/dist/admin/translations/en.json.js.map +1 -1
  163. package/dist/admin/translations/en.json.mjs +2 -1
  164. package/dist/admin/translations/en.json.mjs.map +1 -1
  165. package/dist/admin/translations/es.json.js +2 -1
  166. package/dist/admin/translations/es.json.js.map +1 -1
  167. package/dist/admin/translations/es.json.mjs +2 -1
  168. package/dist/admin/translations/es.json.mjs.map +1 -1
  169. package/dist/admin/translations/fr.json.js +2 -1
  170. package/dist/admin/translations/fr.json.js.map +1 -1
  171. package/dist/admin/translations/fr.json.mjs +2 -1
  172. package/dist/admin/translations/fr.json.mjs.map +1 -1
  173. package/dist/admin/translations/nl.json.js +2 -1
  174. package/dist/admin/translations/nl.json.js.map +1 -1
  175. package/dist/admin/translations/nl.json.mjs +2 -1
  176. package/dist/admin/translations/nl.json.mjs.map +1 -1
  177. package/dist/admin/translations/pl.json.js +2 -1
  178. package/dist/admin/translations/pl.json.js.map +1 -1
  179. package/dist/admin/translations/pl.json.mjs +2 -1
  180. package/dist/admin/translations/pl.json.mjs.map +1 -1
  181. package/dist/admin/translations/sk.json.js +2 -1
  182. package/dist/admin/translations/sk.json.js.map +1 -1
  183. package/dist/admin/translations/sk.json.mjs +2 -1
  184. package/dist/admin/translations/sk.json.mjs.map +1 -1
  185. package/dist/admin/utils/objects.js +9 -4
  186. package/dist/admin/utils/objects.js.map +1 -1
  187. package/dist/admin/utils/validation.js +7 -3
  188. package/dist/admin/utils/validation.js.map +1 -1
  189. package/dist/server/controllers/utils/clone.js +5 -1
  190. package/dist/server/controllers/utils/clone.js.map +1 -1
  191. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  192. package/dist/server/controllers/validation/index.js +6 -2
  193. package/dist/server/controllers/validation/index.js.map +1 -1
  194. package/dist/server/homepage/services/homepage.js +6 -1
  195. package/dist/server/homepage/services/homepage.js.map +1 -1
  196. package/dist/server/homepage/services/homepage.mjs +6 -1
  197. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  198. package/dist/server/mcp/handlers/collection-handlers.js +15 -18
  199. package/dist/server/mcp/handlers/collection-handlers.js.map +1 -1
  200. package/dist/server/mcp/handlers/collection-handlers.mjs +16 -19
  201. package/dist/server/mcp/handlers/collection-handlers.mjs.map +1 -1
  202. package/dist/server/mcp/handlers/single-type-handlers.js +12 -12
  203. package/dist/server/mcp/handlers/single-type-handlers.js.map +1 -1
  204. package/dist/server/mcp/handlers/single-type-handlers.mjs +13 -13
  205. package/dist/server/mcp/handlers/single-type-handlers.mjs.map +1 -1
  206. package/dist/server/mcp/register-content-manager-mcp-tools.js +4 -1
  207. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
  208. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +4 -1
  209. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
  210. package/dist/server/mcp/sanitizers/shape-relations.js +108 -0
  211. package/dist/server/mcp/sanitizers/shape-relations.js.map +1 -0
  212. package/dist/server/mcp/sanitizers/shape-relations.mjs +103 -0
  213. package/dist/server/mcp/sanitizers/shape-relations.mjs.map +1 -0
  214. package/dist/server/mcp/schemas/data-schema.js +0 -3
  215. package/dist/server/mcp/schemas/data-schema.js.map +1 -1
  216. package/dist/server/mcp/schemas/data-schema.mjs +0 -3
  217. package/dist/server/mcp/schemas/data-schema.mjs.map +1 -1
  218. package/dist/server/mcp/schemas/output-schemas.js +30 -4
  219. package/dist/server/mcp/schemas/output-schemas.js.map +1 -1
  220. package/dist/server/mcp/schemas/output-schemas.mjs +30 -4
  221. package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -1
  222. package/dist/server/mcp/utils.js +30 -3
  223. package/dist/server/mcp/utils.js.map +1 -1
  224. package/dist/server/mcp/utils.mjs +30 -4
  225. package/dist/server/mcp/utils.mjs.map +1 -1
  226. package/dist/server/middlewares/routing.js +5 -1
  227. package/dist/server/middlewares/routing.js.map +1 -1
  228. package/dist/server/services/populate-builder.js.map +1 -1
  229. package/dist/server/services/populate-builder.mjs.map +1 -1
  230. package/dist/server/services/uid.js +9 -4
  231. package/dist/server/services/uid.js.map +1 -1
  232. package/dist/server/services/utils/configuration/attributes.js +14 -10
  233. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  234. package/dist/server/services/utils/configuration/layouts.js +8 -4
  235. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  236. package/dist/server/services/utils/configuration/metadatas.js +19 -15
  237. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  238. package/dist/server/services/utils/configuration/settings.js +5 -1
  239. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  240. package/dist/server/services/utils/draft.js +5 -1
  241. package/dist/server/services/utils/draft.js.map +1 -1
  242. package/dist/server/services/utils/populate.js +8 -4
  243. package/dist/server/services/utils/populate.js.map +1 -1
  244. package/dist/server/services/utils/populate.mjs.map +1 -1
  245. package/dist/server/services/utils/store.js +9 -5
  246. package/dist/server/services/utils/store.js.map +1 -1
  247. package/dist/server/src/controllers/utils/clone.d.ts +1 -1
  248. package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
  249. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  250. package/dist/server/src/index.d.ts +3 -1
  251. package/dist/server/src/index.d.ts.map +1 -1
  252. package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
  253. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
  254. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +2 -1
  255. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
  256. package/dist/server/src/mcp/sanitizers/shape-relations.d.ts +38 -0
  257. package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -0
  258. package/dist/server/src/mcp/schemas/data-schema.d.ts +0 -3
  259. package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
  260. package/dist/server/src/mcp/schemas/output-schemas.d.ts +2 -2
  261. package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
  262. package/dist/server/src/mcp/types.d.ts +2 -2
  263. package/dist/server/src/mcp/types.d.ts.map +1 -1
  264. package/dist/server/src/mcp/utils.d.ts +19 -1
  265. package/dist/server/src/mcp/utils.d.ts.map +1 -1
  266. package/dist/server/src/services/index.d.ts +3 -1
  267. package/dist/server/src/services/index.d.ts.map +1 -1
  268. package/dist/server/src/services/populate-builder.d.ts +3 -1
  269. package/dist/server/src/services/populate-builder.d.ts.map +1 -1
  270. package/dist/server/src/services/utils/populate.d.ts +3 -1
  271. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  272. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal\n * @description Returns the direct parent object for a dot-separated path.\n */\nconst getDirectParent = (data: unknown, path: string): unknown => {\n if (!path) return undefined;\n const isNumericIndex = (value: string) => /^\\d+$/.test(value);\n const segments = path.split('.');\n const parentPath = segments.slice(0, -1);\n let current: unknown = data;\n\n for (const segment of parentPath) {\n if (current == null) return undefined;\n\n if (isNumericIndex(segment)) {\n if (!Array.isArray(current)) return undefined;\n current = current[Number(segment)];\n continue;\n }\n\n if (typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[segment];\n }\n\n return current;\n};\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't successfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n // The schema may not contain the attribute when historical data references a\n // component or field that no longer exists (e.g. a component detached from a\n // dynamic zone via the content-type-builder). Pass the value through so the\n // History view can still render the rest of the document.\n if (!attribute) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled. However, Boolean fields should preserve null values.\n */\nconst removeNullValues = (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n traverseData(\n (attribute, value) => value === null && attribute.type !== 'boolean',\n () => undefined\n )(schema, components);\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues(schema, components),\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\ntype HandleOptions = {\n schema?: Schema.ContentType | Schema.Component;\n initialValues?: AnyData;\n components?: Record<string, Schema.Component>;\n};\n\ntype RemovedFieldPath = string;\n\n/**\n * @internal\n * @description Finds the initial value for a component or dynamic zone item (based on its __temp_key__ and not its index).\n * @param initialValue - The initial values object.\n * @param item - The item to find the initial value for.\n * @returns The initial value for the item.\n */\nconst getItemInitialValue = (initialValue: AnyData, item: AnyData) => {\n if (initialValue && Array.isArray(initialValue)) {\n const matchingInitialItem = initialValue.find(\n (initialItem) => initialItem.__temp_key__ === item.__temp_key__\n );\n if (matchingInitialItem) {\n return matchingInitialItem;\n }\n }\n return {};\n};\n\n/**\n * @internal\n * @description Collects paths of attributes that should be removed based on visibility conditions.\n * This function only evaluates conditions.visible (JSON Logic), not the visible boolean property.\n *\n * @param data - The data object to evaluate\n * @param schema - The content type schema\n * @param components - Dictionary of component schemas\n * @param path - Current path in the data structure (for nested components/dynamiczones)\n * @returns Array of field paths that should be removed\n */\nconst collectInvisibleAttributes = (\n data: AnyData,\n schema: Schema.ContentType | Schema.Component | undefined,\n components: Record<string, Schema.Component>,\n path: string[] = []\n): RemovedFieldPath[] => {\n if (!schema?.attributes) return [];\n\n const rulesEngine = createRulesEngine();\n const removedPaths: RemovedFieldPath[] = [];\n const evaluatedData: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...path, attrName].join('.');\n\n // Skip fields with visible: false - they're managed by backend\n if ('visible' in attrDef && attrDef.visible === false) {\n continue;\n }\n\n const condition = attrDef?.conditions?.visible;\n const isVisible = condition\n ? rulesEngine.evaluate(condition, { ...data, ...evaluatedData })\n : true;\n\n if (!isVisible) {\n removedPaths.push(fullPath);\n continue;\n }\n\n // Track this field for future condition evaluations\n if (attrName in data) {\n evaluatedData[attrName] = data[attrName];\n }\n\n // Recursively process components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = data[attrName];\n\n if (attrDef.repeatable && Array.isArray(value)) {\n value.forEach((item) => {\n const nestedPaths = collectInvisibleAttributes(item, compSchema, components, [\n ...path,\n `${attrName}[${item.__temp_key__}]`,\n ]);\n removedPaths.push(...nestedPaths);\n });\n } else if (value && typeof value === 'object') {\n const nestedPaths = collectInvisibleAttributes(value, compSchema, components, [\n ...path,\n attrName,\n ]);\n removedPaths.push(...nestedPaths);\n }\n }\n\n // Recursively process dynamic zones\n if (attrDef.type === 'dynamiczone' && Array.isArray(data[attrName])) {\n data[attrName].forEach((dzItem: AnyData) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n const nestedPaths = collectInvisibleAttributes(dzItem, compSchema, components, [\n ...path,\n `${attrName}[${dzItem.__temp_key__}]`,\n ]);\n removedPaths.push(...nestedPaths);\n });\n }\n }\n\n return removedPaths;\n};\n\n/**\n * @internal\n * @description Removes attributes from data based on the list of paths to remove.\n * Preserves fields with visible: false from data or initialValues.\n *\n * @param data - The data object to filter\n * @param initialValues - Initial values to fall back to\n * @param schema - The content type schema\n * @param components - Dictionary of component schemas\n * @param removedPaths - Array of field paths to remove\n * @param currentPath - Current path in the data structure\n * @returns Filtered data object\n */\nconst filterDataByRemovedPaths = (\n data: AnyData,\n initialValues: AnyData,\n schema: Schema.ContentType | Schema.Component | undefined,\n components: Record<string, Schema.Component>,\n removedPaths: RemovedFieldPath[],\n currentPath: string[] = []\n): AnyData => {\n if (!schema?.attributes) return data;\n\n const result: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...currentPath, attrName].join('.');\n\n // Check if this field should be removed\n if (removedPaths.includes(fullPath)) {\n continue;\n }\n\n // Handle fields with visible: false - preserve from data or initialValues\n if ('visible' in attrDef && attrDef.visible === false) {\n const userProvided = Object.hasOwn(data, attrName);\n if (userProvided) {\n result[attrName] = data[attrName];\n } else if (attrName in initialValues) {\n result[attrName] = initialValues[attrName];\n }\n continue;\n }\n\n const userProvided = Object.hasOwn(data, attrName);\n const currentValue = userProvided ? data[attrName] : undefined;\n const initialValue = initialValues?.[attrName];\n\n // Handle components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = currentValue === undefined ? initialValue : currentValue;\n\n if (!value) {\n result[attrName] = attrDef.repeatable ? [] : null;\n continue;\n }\n\n if (attrDef.repeatable && Array.isArray(value)) {\n result[attrName] = value.map((item) => {\n const componentInitialValue = getItemInitialValue(initialValue, item);\n return filterDataByRemovedPaths(\n item,\n componentInitialValue,\n compSchema,\n components,\n removedPaths,\n [...currentPath, `${attrName}[${item.__temp_key__}]`]\n );\n });\n } else {\n result[attrName] = filterDataByRemovedPaths(\n value,\n initialValue ?? {},\n compSchema,\n components,\n removedPaths,\n [...currentPath, attrName]\n );\n }\n\n continue;\n }\n\n // Handle dynamic zones\n if (attrDef.type === 'dynamiczone') {\n if (!Array.isArray(currentValue)) {\n result[attrName] = [];\n continue;\n }\n\n result[attrName] = currentValue.map((dzItem) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n const componentInitialValue = getItemInitialValue(initialValue, dzItem);\n\n const cleaned = filterDataByRemovedPaths(\n dzItem,\n componentInitialValue,\n compSchema,\n components,\n removedPaths,\n [...currentPath, `${attrName}[${dzItem.__temp_key__}]`]\n );\n\n // For newly created components, ensure id is undefined (in case of reordering)\n const processedItem =\n dzItem.id === undefined || dzItem.id === null\n ? { __component: compUID, ...cleaned, id: undefined }\n : { __component: compUID, ...cleaned };\n\n return processedItem;\n });\n\n continue;\n }\n\n // Regular fields - preserve from data or initialValues\n if (currentValue !== undefined) {\n result[attrName] = currentValue;\n } else if (initialValue !== undefined) {\n result[attrName] = initialValue;\n }\n }\n\n // Pass through any fields from data that aren't in the schema\n for (const [key, value] of Object.entries(data)) {\n if (!(key in result) && !(key in (schema?.attributes || {}))) {\n result[key] = value;\n }\n }\n\n return result;\n};\n\n/**\n * Removes values from the data object if their corresponding attribute has a\n * visibility condition that evaluates to false.\n *\n * @param data - The data object to filter based on visibility\n * @param options - Schema, initialValues, and components\n * @returns Object with filtered data and list of removed attribute paths\n */\nconst handleInvisibleAttributes = (\n data: AnyData,\n { schema, initialValues = {}, components = {} }: HandleOptions\n): {\n data: AnyData;\n removedAttributes: RemovedFieldPath[];\n} => {\n if (!schema?.attributes) return { data, removedAttributes: [] };\n\n const removedAttributes = collectInvisibleAttributes(data, schema, components);\n\n const filteredData = filterDataByRemovedPaths(\n data,\n initialValues,\n schema,\n components,\n removedAttributes\n );\n\n return {\n data: filteredData,\n removedAttributes,\n };\n};\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n handleInvisibleAttributes,\n getDirectParent,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","getDirectParent","data","path","undefined","isNumericIndex","value","test","segments","split","parentPath","slice","current","segment","Array","isArray","Number","traverseData","predicate","transform","schema","components","traverse","datum","attributes","Object","entries","reduce","acc","key","attribute","includes","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe","getItemInitialValue","initialValue","item","matchingInitialItem","find","initialItem","collectInvisibleAttributes","rulesEngine","createRulesEngine","removedPaths","evaluatedData","attrName","attrDef","fullPath","join","visible","condition","conditions","isVisible","evaluate","push","compSchema","forEach","nestedPaths","dzItem","compUID","filterDataByRemovedPaths","initialValues","currentPath","result","userProvided","hasOwn","currentValue","componentInitialValue","cleaned","processedItem","id","handleInvisibleAttributes","removedAttributes","filteredData"],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal\n * @description Returns the direct parent object for a dot-separated path.\n */\nconst getDirectParent = (data: unknown, path: string): unknown => {\n if (!path) return undefined;\n const isNumericIndex = (value: string) => /^\\d+$/.test(value);\n const segments = path.split('.');\n const parentPath = segments.slice(0, -1);\n let current: unknown = data;\n\n for (const segment of parentPath) {\n if (current == null) return undefined;\n\n if (isNumericIndex(segment)) {\n if (!Array.isArray(current)) return undefined;\n current = current[Number(segment)];\n continue;\n }\n\n if (typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[segment];\n }\n\n return current;\n};\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't successfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n // The schema may not contain the attribute when historical data references a\n // component or field that no longer exists (e.g. a component detached from a\n // dynamic zone via the content-type-builder). Pass the value through so the\n // History view can still render the rest of the document.\n if (!attribute) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled. However, Boolean fields should preserve null values.\n */\nconst removeNullValues = (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n traverseData(\n (attribute, value) => value === null && attribute.type !== 'boolean',\n () => undefined\n )(schema, components);\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues(schema, components),\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\ntype HandleOptions = {\n schema?: Schema.ContentType | Schema.Component;\n initialValues?: AnyData;\n components?: Record<string, Schema.Component>;\n};\n\ntype RemovedFieldPath = string;\n\n/**\n * @internal\n * @description Finds the initial value for a component or dynamic zone item (based on its __temp_key__ and not its index).\n * @param initialValue - The initial values object.\n * @param item - The item to find the initial value for.\n * @returns The initial value for the item.\n */\nconst getItemInitialValue = (initialValue: AnyData, item: AnyData) => {\n if (initialValue && Array.isArray(initialValue)) {\n const matchingInitialItem = initialValue.find(\n (initialItem) => initialItem.__temp_key__ === item.__temp_key__\n );\n if (matchingInitialItem) {\n return matchingInitialItem;\n }\n }\n return {};\n};\n\n/**\n * @internal\n * @description Collects paths of attributes that should be removed based on visibility conditions.\n * This function only evaluates conditions.visible (JSON Logic), not the visible boolean property.\n *\n * @param data - The data object to evaluate\n * @param schema - The content type schema\n * @param components - Dictionary of component schemas\n * @param path - Current path in the data structure (for nested components/dynamiczones)\n * @returns Array of field paths that should be removed\n */\nconst collectInvisibleAttributes = (\n data: AnyData,\n schema: Schema.ContentType | Schema.Component | undefined,\n components: Record<string, Schema.Component>,\n path: string[] = []\n): RemovedFieldPath[] => {\n if (!schema?.attributes) return [];\n\n const rulesEngine = createRulesEngine();\n const removedPaths: RemovedFieldPath[] = [];\n const evaluatedData: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...path, attrName].join('.');\n\n // Skip fields with visible: false - they're managed by backend\n if ('visible' in attrDef && attrDef.visible === false) {\n continue;\n }\n\n const condition = attrDef?.conditions?.visible;\n const isVisible = condition\n ? rulesEngine.evaluate(condition, { ...data, ...evaluatedData })\n : true;\n\n if (!isVisible) {\n removedPaths.push(fullPath);\n continue;\n }\n\n // Track this field for future condition evaluations\n if (attrName in data) {\n evaluatedData[attrName] = data[attrName];\n }\n\n // Recursively process components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = data[attrName];\n\n if (attrDef.repeatable && Array.isArray(value)) {\n value.forEach((item) => {\n const nestedPaths = collectInvisibleAttributes(item, compSchema, components, [\n ...path,\n `${attrName}[${item.__temp_key__}]`,\n ]);\n removedPaths.push(...nestedPaths);\n });\n } else if (value && typeof value === 'object') {\n const nestedPaths = collectInvisibleAttributes(value, compSchema, components, [\n ...path,\n attrName,\n ]);\n removedPaths.push(...nestedPaths);\n }\n }\n\n // Recursively process dynamic zones\n if (attrDef.type === 'dynamiczone' && Array.isArray(data[attrName])) {\n data[attrName].forEach((dzItem: AnyData) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n const nestedPaths = collectInvisibleAttributes(dzItem, compSchema, components, [\n ...path,\n `${attrName}[${dzItem.__temp_key__}]`,\n ]);\n removedPaths.push(...nestedPaths);\n });\n }\n }\n\n return removedPaths;\n};\n\n/**\n * @internal\n * @description Removes attributes from data based on the list of paths to remove.\n * Preserves fields with visible: false from data or initialValues.\n *\n * @param data - The data object to filter\n * @param initialValues - Initial values to fall back to\n * @param schema - The content type schema\n * @param components - Dictionary of component schemas\n * @param removedPaths - Array of field paths to remove\n * @param currentPath - Current path in the data structure\n * @returns Filtered data object\n */\nconst filterDataByRemovedPaths = (\n data: AnyData,\n initialValues: AnyData,\n schema: Schema.ContentType | Schema.Component | undefined,\n components: Record<string, Schema.Component>,\n removedPaths: RemovedFieldPath[],\n currentPath: string[] = []\n): AnyData => {\n if (!schema?.attributes) return data;\n\n const result: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...currentPath, attrName].join('.');\n\n // Check if this field should be removed\n if (removedPaths.includes(fullPath)) {\n continue;\n }\n\n // Handle fields with visible: false - preserve from data or initialValues\n if ('visible' in attrDef && attrDef.visible === false) {\n const userProvided = Object.hasOwn(data, attrName);\n if (userProvided) {\n result[attrName] = data[attrName];\n } else if (attrName in initialValues) {\n result[attrName] = initialValues[attrName];\n }\n continue;\n }\n\n const userProvided = Object.hasOwn(data, attrName);\n const currentValue = userProvided ? data[attrName] : undefined;\n const initialValue = initialValues?.[attrName];\n\n // Handle components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = currentValue === undefined ? initialValue : currentValue;\n\n if (!value) {\n result[attrName] = attrDef.repeatable ? [] : null;\n continue;\n }\n\n if (attrDef.repeatable && Array.isArray(value)) {\n result[attrName] = value.map((item) => {\n const componentInitialValue = getItemInitialValue(initialValue, item);\n return filterDataByRemovedPaths(\n item,\n componentInitialValue,\n compSchema,\n components,\n removedPaths,\n [...currentPath, `${attrName}[${item.__temp_key__}]`]\n );\n });\n } else {\n result[attrName] = filterDataByRemovedPaths(\n value,\n initialValue ?? {},\n compSchema,\n components,\n removedPaths,\n [...currentPath, attrName]\n );\n }\n\n continue;\n }\n\n // Handle dynamic zones\n if (attrDef.type === 'dynamiczone') {\n if (!Array.isArray(currentValue)) {\n result[attrName] = [];\n continue;\n }\n\n result[attrName] = currentValue.map((dzItem) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n const componentInitialValue = getItemInitialValue(initialValue, dzItem);\n\n const cleaned = filterDataByRemovedPaths(\n dzItem,\n componentInitialValue,\n compSchema,\n components,\n removedPaths,\n [...currentPath, `${attrName}[${dzItem.__temp_key__}]`]\n );\n\n // For newly created components, ensure id is undefined (in case of reordering)\n const processedItem =\n dzItem.id === undefined || dzItem.id === null\n ? { __component: compUID, ...cleaned, id: undefined }\n : { __component: compUID, ...cleaned };\n\n return processedItem;\n });\n\n continue;\n }\n\n // Regular fields - preserve from data or initialValues\n if (currentValue !== undefined) {\n result[attrName] = currentValue;\n } else if (initialValue !== undefined) {\n result[attrName] = initialValue;\n }\n }\n\n // Pass through any fields from data that aren't in the schema\n for (const [key, value] of Object.entries(data)) {\n if (!(key in result) && !(key in (schema?.attributes || {}))) {\n result[key] = value;\n }\n }\n\n return result;\n};\n\n/**\n * Removes values from the data object if their corresponding attribute has a\n * visibility condition that evaluates to false.\n *\n * @param data - The data object to filter based on visibility\n * @param options - Schema, initialValues, and components\n * @returns Object with filtered data and list of removed attribute paths\n */\nconst handleInvisibleAttributes = (\n data: AnyData,\n { schema, initialValues = {}, components = {} }: HandleOptions\n): {\n data: AnyData;\n removedAttributes: RemovedFieldPath[];\n} => {\n if (!schema?.attributes) return { data, removedAttributes: [] };\n\n const removedAttributes = collectInvisibleAttributes(data, schema, components);\n\n const filteredData = filterDataByRemovedPaths(\n data,\n initialValues,\n schema,\n components,\n removedAttributes\n );\n\n return {\n data: filteredData,\n removedAttributes,\n };\n};\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n handleInvisibleAttributes,\n getDirectParent,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","getDirectParent","data","path","undefined","isNumericIndex","value","test","segments","split","parentPath","slice","current","segment","Array","isArray","Number","traverseData","predicate","transform","schema","components","traverse","datum","attributes","Object","entries","reduce","acc","key","attribute","includes","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe","getItemInitialValue","initialValue","item","matchingInitialItem","find","initialItem","collectInvisibleAttributes","rulesEngine","createRulesEngine","removedPaths","evaluatedData","attrName","attrDef","fullPath","join","visible","condition","conditions","isVisible","evaluate","push","compSchema","forEach","nestedPaths","dzItem","compUID","filterDataByRemovedPaths","initialValues","currentPath","result","userProvided","hasOwn","currentValue","componentInitialValue","cleaned","processedItem","id","handleInvisibleAttributes","removedAttributes","filteredData"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ /* -------------------------------------------------------------------------------------------------
4
+ * Edit view keyboard shortcuts
5
+ * -----------------------------------------------------------------------------------------------*/ /**
6
+ * The document actions that can be triggered with a keyboard shortcut from the edit view.
7
+ */ /**
8
+ * Resolves the document action intended by a keyboard event in the edit view.
9
+ *
10
+ * The platform modifier (`Cmd` on macOS, `Ctrl` on Windows/Linux) is always required so the
11
+ * shortcuts never collide with a plain `Enter` (new line in a textarea, native form submit in a
12
+ * single-line input).
13
+ *
14
+ * - `Cmd/Ctrl + Enter` → save (draft)
15
+ * - `Cmd/Ctrl + S` → save (draft) — common editor alias
16
+ * - `Cmd/Ctrl + Shift + Enter` → publish
17
+ *
18
+ * Returns `null` when the event does not match any shortcut.
19
+ */ const getEditViewShortcut = (event)=>{
20
+ const hasPlatformModifier = event.metaKey || event.ctrlKey;
21
+ if (!hasPlatformModifier) {
22
+ return null;
23
+ }
24
+ const key = event.key.toLowerCase();
25
+ if (key === 'enter') {
26
+ return event.shiftKey ? 'publish' : 'save';
27
+ }
28
+ if (key === 's' && !event.shiftKey) {
29
+ return 'save';
30
+ }
31
+ return null;
32
+ };
33
+
34
+ exports.getEditViewShortcut = getEditViewShortcut;
35
+ //# sourceMappingURL=keyboardShortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboardShortcuts.js","sources":["../../../../../admin/src/pages/EditView/utils/keyboardShortcuts.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * Edit view keyboard shortcuts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * The document actions that can be triggered with a keyboard shortcut from the edit view.\n */\nexport type EditViewShortcut = 'save' | 'publish';\n\n/**\n * Resolves the document action intended by a keyboard event in the edit view.\n *\n * The platform modifier (`Cmd` on macOS, `Ctrl` on Windows/Linux) is always required so the\n * shortcuts never collide with a plain `Enter` (new line in a textarea, native form submit in a\n * single-line input).\n *\n * - `Cmd/Ctrl + Enter` → save (draft)\n * - `Cmd/Ctrl + S` → save (draft) — common editor alias\n * - `Cmd/Ctrl + Shift + Enter` → publish\n *\n * Returns `null` when the event does not match any shortcut.\n */\nexport const getEditViewShortcut = (event: KeyboardEvent): EditViewShortcut | null => {\n const hasPlatformModifier = event.metaKey || event.ctrlKey;\n\n if (!hasPlatformModifier) {\n return null;\n }\n\n const key = event.key.toLowerCase();\n\n if (key === 'enter') {\n return event.shiftKey ? 'publish' : 'save';\n }\n\n if (key === 's' && !event.shiftKey) {\n return 'save';\n }\n\n return null;\n};\n"],"names":["getEditViewShortcut","event","hasPlatformModifier","metaKey","ctrlKey","key","toLowerCase","shiftKey"],"mappings":";;AAAA;;;;;;;;;;;;;;;;IAsBO,MAAMA,mBAAAA,GAAsB,CAACC,KAAAA,GAAAA;AAClC,IAAA,MAAMC,mBAAAA,GAAsBD,KAAAA,CAAME,OAAO,IAAIF,MAAMG,OAAO;AAE1D,IAAA,IAAI,CAACF,mBAAAA,EAAqB;QACxB,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMG,GAAAA,GAAMJ,KAAAA,CAAMI,GAAG,CAACC,WAAW,EAAA;AAEjC,IAAA,IAAID,QAAQ,OAAA,EAAS;QACnB,OAAOJ,KAAAA,CAAMM,QAAQ,GAAG,SAAA,GAAY,MAAA;AACtC,IAAA;AAEA,IAAA,IAAIF,GAAAA,KAAQ,GAAA,IAAO,CAACJ,KAAAA,CAAMM,QAAQ,EAAE;QAClC,OAAO,MAAA;AACT,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
@@ -0,0 +1,33 @@
1
+ /* -------------------------------------------------------------------------------------------------
2
+ * Edit view keyboard shortcuts
3
+ * -----------------------------------------------------------------------------------------------*/ /**
4
+ * The document actions that can be triggered with a keyboard shortcut from the edit view.
5
+ */ /**
6
+ * Resolves the document action intended by a keyboard event in the edit view.
7
+ *
8
+ * The platform modifier (`Cmd` on macOS, `Ctrl` on Windows/Linux) is always required so the
9
+ * shortcuts never collide with a plain `Enter` (new line in a textarea, native form submit in a
10
+ * single-line input).
11
+ *
12
+ * - `Cmd/Ctrl + Enter` → save (draft)
13
+ * - `Cmd/Ctrl + S` → save (draft) — common editor alias
14
+ * - `Cmd/Ctrl + Shift + Enter` → publish
15
+ *
16
+ * Returns `null` when the event does not match any shortcut.
17
+ */ const getEditViewShortcut = (event)=>{
18
+ const hasPlatformModifier = event.metaKey || event.ctrlKey;
19
+ if (!hasPlatformModifier) {
20
+ return null;
21
+ }
22
+ const key = event.key.toLowerCase();
23
+ if (key === 'enter') {
24
+ return event.shiftKey ? 'publish' : 'save';
25
+ }
26
+ if (key === 's' && !event.shiftKey) {
27
+ return 'save';
28
+ }
29
+ return null;
30
+ };
31
+
32
+ export { getEditViewShortcut };
33
+ //# sourceMappingURL=keyboardShortcuts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboardShortcuts.mjs","sources":["../../../../../admin/src/pages/EditView/utils/keyboardShortcuts.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * Edit view keyboard shortcuts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * The document actions that can be triggered with a keyboard shortcut from the edit view.\n */\nexport type EditViewShortcut = 'save' | 'publish';\n\n/**\n * Resolves the document action intended by a keyboard event in the edit view.\n *\n * The platform modifier (`Cmd` on macOS, `Ctrl` on Windows/Linux) is always required so the\n * shortcuts never collide with a plain `Enter` (new line in a textarea, native form submit in a\n * single-line input).\n *\n * - `Cmd/Ctrl + Enter` → save (draft)\n * - `Cmd/Ctrl + S` → save (draft) — common editor alias\n * - `Cmd/Ctrl + Shift + Enter` → publish\n *\n * Returns `null` when the event does not match any shortcut.\n */\nexport const getEditViewShortcut = (event: KeyboardEvent): EditViewShortcut | null => {\n const hasPlatformModifier = event.metaKey || event.ctrlKey;\n\n if (!hasPlatformModifier) {\n return null;\n }\n\n const key = event.key.toLowerCase();\n\n if (key === 'enter') {\n return event.shiftKey ? 'publish' : 'save';\n }\n\n if (key === 's' && !event.shiftKey) {\n return 'save';\n }\n\n return null;\n};\n"],"names":["getEditViewShortcut","event","hasPlatformModifier","metaKey","ctrlKey","key","toLowerCase","shiftKey"],"mappings":"AAAA;;;;;;;;;;;;;;;;IAsBO,MAAMA,mBAAAA,GAAsB,CAACC,KAAAA,GAAAA;AAClC,IAAA,MAAMC,mBAAAA,GAAsBD,KAAAA,CAAME,OAAO,IAAIF,MAAMG,OAAO;AAE1D,IAAA,IAAI,CAACF,mBAAAA,EAAqB;QACxB,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMG,GAAAA,GAAMJ,KAAAA,CAAMI,GAAG,CAACC,WAAW,EAAA;AAEjC,IAAA,IAAID,QAAQ,OAAA,EAAS;QACnB,OAAOJ,KAAAA,CAAMM,QAAQ,GAAG,SAAA,GAAY,MAAA;AACtC,IAAA;AAEA,IAAA,IAAIF,GAAAA,KAAQ,GAAA,IAAO,CAACJ,KAAAA,CAAMM,QAAQ,EAAE;QAClC,OAAO,MAAA;AACT,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
@@ -16,7 +16,8 @@ var Header = require('./components/Header.js');
16
16
  var Settings = require('./components/Settings.js');
17
17
  var SortDisplayedFields = require('./components/SortDisplayedFields.js');
18
18
 
19
- function _interopNamespaceDefault(e) {
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
20
21
  var n = Object.create(null);
21
22
  if (e) {
22
23
  Object.keys(e).forEach(function (k) {
@@ -33,7 +34,7 @@ function _interopNamespaceDefault(e) {
33
34
  return Object.freeze(n);
34
35
  }
35
36
 
36
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
37
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
38
 
38
39
  const ListConfiguration = ()=>{
39
40
  const { formatMessage } = reactIntl.useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"ListConfigurationPage.js","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useScopedPersistentState,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n convertListLayoutToFieldLayouts,\n type ListFieldLayout,\n type ListLayout,\n useDocLayout,\n} from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType, schema } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit, listViewConversionContext } = useDocLayout();\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n setDisplayedHeaderNames(layoutData.map((field) => field.name));\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n const headerNames =\n displayedHeaderNames && displayedHeaderNames.length > 0\n ? displayedHeaderNames\n : list.layout.map((field) => field.name);\n\n const headerMetadatas = headerNames.reduce<ListLayout['metadatas']>((acc, name) => {\n acc[name] = list.metadatas[name] ?? { label: name };\n return acc;\n }, {});\n\n /**\n * Same context as `formatListLayout` / `ListViewPage#displayedHeaders` so `getMainField`\n * can resolve component and relation list columns (see #25509, #25872).\n */\n const listFieldLayouts = listViewConversionContext\n ? convertListLayoutToFieldLayouts(\n headerNames,\n schema?.attributes,\n headerMetadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n )\n : convertListLayoutToFieldLayouts(headerNames, schema?.attributes, headerMetadatas);\n\n return {\n layout: listFieldLayouts.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list, displayedHeaderNames, schema, listViewConversionContext]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields metadatas={list.metadatas} />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration key={slug} />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","schema","useDoc","isLoading","isLoadingLayout","list","edit","listViewConversionContext","useDocLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","headerNames","length","headerMetadatas","listFieldLayouts","convertListLayoutToFieldLayouts","attributes","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","slug","useParams","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListConfigurationPage.js","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useScopedPersistentState,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n convertListLayoutToFieldLayouts,\n type ListFieldLayout,\n type ListLayout,\n useDocLayout,\n} from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType, schema } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit, listViewConversionContext } = useDocLayout();\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n setDisplayedHeaderNames(layoutData.map((field) => field.name));\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n const headerNames =\n displayedHeaderNames && displayedHeaderNames.length > 0\n ? displayedHeaderNames\n : list.layout.map((field) => field.name);\n\n const headerMetadatas = headerNames.reduce<ListLayout['metadatas']>((acc, name) => {\n acc[name] = list.metadatas[name] ?? { label: name };\n return acc;\n }, {});\n\n /**\n * Same context as `formatListLayout` / `ListViewPage#displayedHeaders` so `getMainField`\n * can resolve component and relation list columns (see #25509, #25872).\n */\n const listFieldLayouts = listViewConversionContext\n ? convertListLayoutToFieldLayouts(\n headerNames,\n schema?.attributes,\n headerMetadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n )\n : convertListLayoutToFieldLayouts(headerNames, schema?.attributes, headerMetadatas);\n\n return {\n layout: listFieldLayouts.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list, displayedHeaderNames, schema, listViewConversionContext]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields metadatas={list.metadatas} />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration key={slug} />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","schema","useDoc","isLoading","isLoadingLayout","list","edit","listViewConversionContext","useDocLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","headerNames","length","headerMetadatas","listFieldLayouts","convertListLayoutToFieldLayouts","attributes","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","slug","useParams","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
@@ -13,7 +13,8 @@ var useDragAndDrop = require('../../../hooks/useDragAndDrop.js');
13
13
  var translations = require('../../../utils/translations.js');
14
14
  var EditFieldForm = require('./EditFieldForm.js');
15
15
 
16
- function _interopNamespaceDefault(e) {
16
+ function _interopNamespace(e) {
17
+ if (e && e.__esModule) return e;
17
18
  var n = Object.create(null);
18
19
  if (e) {
19
20
  Object.keys(e).forEach(function (k) {
@@ -30,7 +31,7 @@ function _interopNamespaceDefault(e) {
30
31
  return Object.freeze(n);
31
32
  }
32
33
 
33
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
34
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
35
 
35
36
  const DraggableCard = ({ attribute, index, isDraggingSibling, label, name, onMoveField, onRemoveField, setIsDraggingSibling })=>{
36
37
  const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableCard.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":"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"}
1
+ {"version":3,"file":"DraggableCard.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":"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"}
@@ -10,7 +10,8 @@ var FieldTypeIcon = require('../../../components/FieldTypeIcon.js');
10
10
  var strings = require('../../../utils/strings.js');
11
11
  var translations = require('../../../utils/translations.js');
12
12
 
13
- function _interopNamespaceDefault(e) {
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
14
15
  var n = Object.create(null);
15
16
  if (e) {
16
17
  Object.keys(e).forEach(function (k) {
@@ -27,7 +28,7 @@ function _interopNamespaceDefault(e) {
27
28
  return Object.freeze(n);
28
29
  }
29
30
 
30
- var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
31
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
31
32
 
32
33
  const FIELD_SCHEMA = yup__namespace.object().shape({
33
34
  label: yup__namespace.string().required(),
@@ -1 +1 @@
1
- {"version":3,"file":"EditFieldForm.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
1
+ {"version":3,"file":"EditFieldForm.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
@@ -8,7 +8,8 @@ var reactIntl = require('react-intl');
8
8
  var useDocument = require('../../../hooks/useDocument.js');
9
9
  var translations = require('../../../utils/translations.js');
10
10
 
11
- function _interopNamespaceDefault(e) {
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
12
13
  var n = Object.create(null);
13
14
  if (e) {
14
15
  Object.keys(e).forEach(function (k) {
@@ -25,7 +26,7 @@ function _interopNamespaceDefault(e) {
25
26
  return Object.freeze(n);
26
27
  }
27
28
 
28
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
30
 
30
31
  const EXCLUDED_SORT_ATTRIBUTE_TYPES = [
31
32
  'media',
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, InputRenderer, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Flex, Grid, Typography, useCollator } from '@strapi/design-system';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../utils/translations';\nimport { type FormData } from '../ListConfigurationPage';\n\nimport type { DistributiveOmit } from 'react-redux';\n\nexport type InputPropsWithMessageDescriptors = DistributiveOmit<\n InputProps,\n 'hint' | 'label' | 'placeholder'\n> & {\n hint?: MessageDescriptor;\n label: MessageDescriptor;\n placeholder?: MessageDescriptor;\n};\n\n/**\n * @internal\n * @description Form inputs are always displayed in a grid, so we need\n * to use the size property to determine how many columns the input should\n * take up.\n */\nexport type FormLayoutInputProps = InputPropsWithMessageDescriptors & { size: number };\n\nconst EXCLUDED_SORT_ATTRIBUTE_TYPES = [\n 'media',\n 'richtext',\n 'dynamiczone',\n 'relation',\n 'component',\n 'json',\n 'blocks',\n];\n\ninterface SortOption {\n value: string;\n label: string;\n}\n\nconst Settings = () => {\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const { schema } = useDoc();\n\n const layout = useForm<FormData['layout']>('Settings', (state) => state.values.layout ?? []);\n const currentSortBy = useForm<FormData['settings']['defaultSortBy']>(\n 'Settings',\n (state) => state.values.settings.defaultSortBy\n );\n const onChange = useForm('Settings', (state) => state.onChange);\n\n const sortOptions = React.useMemo(\n () =>\n Object.values(layout).reduce<SortOption[]>((acc, field) => {\n if (schema && !EXCLUDED_SORT_ATTRIBUTE_TYPES.includes(schema.attributes[field.name].type)) {\n acc.push({\n value: field.name,\n label: typeof field.label !== 'string' ? formatMessage(field.label) : field.label,\n });\n }\n\n return acc;\n }, []),\n [formatMessage, layout, schema]\n );\n\n const sortOptionsSorted = sortOptions.sort((a, b) => formatter.compare(a.label, b.label));\n\n React.useEffect(() => {\n if (sortOptionsSorted.findIndex((opt) => opt.value === currentSortBy) === -1) {\n onChange('settings.defaultSortBy', sortOptionsSorted[0]?.value);\n }\n }, [currentSortBy, onChange, sortOptionsSorted]);\n\n const formLayout = React.useMemo(\n () =>\n SETTINGS_FORM_LAYOUT.map((row) =>\n row.map((field) => {\n if (field.type === 'enumeration') {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n options: field.name === 'settings.defaultSortBy' ? sortOptionsSorted : field.options,\n };\n } else {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n };\n }\n })\n ) as [top: EditFieldLayout[], bottom: EditFieldLayout[]],\n [formatMessage, sortOptionsSorted]\n );\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root key=\"bottom\" gap={4}>\n {formLayout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} col={size} direction=\"column\" alignItems=\"stretch\">\n {/* @ts-expect-error – issue with EnumerationProps conflicting with InputProps */}\n <InputRenderer {...field} />\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n </Flex>\n );\n};\n\nconst SETTINGS_FORM_LAYOUT: FormLayoutInputProps[][] = [\n [\n {\n label: {\n id: getTranslation('form.Input.search'),\n defaultMessage: 'Enable search',\n },\n name: 'settings.searchable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.filters'),\n defaultMessage: 'Enable filters',\n },\n name: 'settings.filterable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.bulkActions'),\n defaultMessage: 'Enable bulk actions',\n },\n name: 'settings.bulkable',\n size: 4,\n type: 'boolean' as const,\n },\n ],\n [\n {\n hint: {\n id: getTranslation('form.Input.pageEntries.inputDescription'),\n defaultMessage: 'Note: You can override this value in the Collection Type settings page.',\n },\n label: {\n id: getTranslation('form.Input.pageEntries'),\n defaultMessage: 'Entries per page',\n },\n name: 'settings.pageSize',\n options: ['10', '20', '50', '100'].map((value) => ({ value, label: value })),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.defaultSort'),\n defaultMessage: 'Default sort attribute',\n },\n name: 'settings.defaultSortBy',\n options: [],\n size: 3,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.sort.order'),\n defaultMessage: 'Default sort order',\n },\n name: 'settings.defaultSortOrder',\n options: ['ASC', 'DESC'].map((value) => ({ value, label: value })),\n size: 3,\n type: 'enumeration' as const,\n },\n ],\n];\n\nexport { Settings };\n"],"names":["EXCLUDED_SORT_ATTRIBUTE_TYPES","Settings","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","schema","useDoc","layout","useForm","state","values","currentSortBy","settings","defaultSortBy","onChange","sortOptions","React","useMemo","Object","reduce","acc","field","includes","attributes","name","type","push","value","label","sortOptionsSorted","sort","a","b","compare","useEffect","findIndex","opt","formLayout","SETTINGS_FORM_LAYOUT","map","row","hint","undefined","options","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","size","Item","xs","col","InputRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, InputRenderer, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Flex, Grid, Typography, useCollator } from '@strapi/design-system';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../utils/translations';\nimport { type FormData } from '../ListConfigurationPage';\n\nimport type { DistributiveOmit } from 'react-redux';\n\nexport type InputPropsWithMessageDescriptors = DistributiveOmit<\n InputProps,\n 'hint' | 'label' | 'placeholder'\n> & {\n hint?: MessageDescriptor;\n label: MessageDescriptor;\n placeholder?: MessageDescriptor;\n};\n\n/**\n * @internal\n * @description Form inputs are always displayed in a grid, so we need\n * to use the size property to determine how many columns the input should\n * take up.\n */\nexport type FormLayoutInputProps = InputPropsWithMessageDescriptors & { size: number };\n\nconst EXCLUDED_SORT_ATTRIBUTE_TYPES = [\n 'media',\n 'richtext',\n 'dynamiczone',\n 'relation',\n 'component',\n 'json',\n 'blocks',\n];\n\ninterface SortOption {\n value: string;\n label: string;\n}\n\nconst Settings = () => {\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const { schema } = useDoc();\n\n const layout = useForm<FormData['layout']>('Settings', (state) => state.values.layout ?? []);\n const currentSortBy = useForm<FormData['settings']['defaultSortBy']>(\n 'Settings',\n (state) => state.values.settings.defaultSortBy\n );\n const onChange = useForm('Settings', (state) => state.onChange);\n\n const sortOptions = React.useMemo(\n () =>\n Object.values(layout).reduce<SortOption[]>((acc, field) => {\n if (schema && !EXCLUDED_SORT_ATTRIBUTE_TYPES.includes(schema.attributes[field.name].type)) {\n acc.push({\n value: field.name,\n label: typeof field.label !== 'string' ? formatMessage(field.label) : field.label,\n });\n }\n\n return acc;\n }, []),\n [formatMessage, layout, schema]\n );\n\n const sortOptionsSorted = sortOptions.sort((a, b) => formatter.compare(a.label, b.label));\n\n React.useEffect(() => {\n if (sortOptionsSorted.findIndex((opt) => opt.value === currentSortBy) === -1) {\n onChange('settings.defaultSortBy', sortOptionsSorted[0]?.value);\n }\n }, [currentSortBy, onChange, sortOptionsSorted]);\n\n const formLayout = React.useMemo(\n () =>\n SETTINGS_FORM_LAYOUT.map((row) =>\n row.map((field) => {\n if (field.type === 'enumeration') {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n options: field.name === 'settings.defaultSortBy' ? sortOptionsSorted : field.options,\n };\n } else {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n };\n }\n })\n ) as [top: EditFieldLayout[], bottom: EditFieldLayout[]],\n [formatMessage, sortOptionsSorted]\n );\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root key=\"bottom\" gap={4}>\n {formLayout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} col={size} direction=\"column\" alignItems=\"stretch\">\n {/* @ts-expect-error – issue with EnumerationProps conflicting with InputProps */}\n <InputRenderer {...field} />\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n </Flex>\n );\n};\n\nconst SETTINGS_FORM_LAYOUT: FormLayoutInputProps[][] = [\n [\n {\n label: {\n id: getTranslation('form.Input.search'),\n defaultMessage: 'Enable search',\n },\n name: 'settings.searchable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.filters'),\n defaultMessage: 'Enable filters',\n },\n name: 'settings.filterable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.bulkActions'),\n defaultMessage: 'Enable bulk actions',\n },\n name: 'settings.bulkable',\n size: 4,\n type: 'boolean' as const,\n },\n ],\n [\n {\n hint: {\n id: getTranslation('form.Input.pageEntries.inputDescription'),\n defaultMessage: 'Note: You can override this value in the Collection Type settings page.',\n },\n label: {\n id: getTranslation('form.Input.pageEntries'),\n defaultMessage: 'Entries per page',\n },\n name: 'settings.pageSize',\n options: ['10', '20', '50', '100'].map((value) => ({ value, label: value })),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.defaultSort'),\n defaultMessage: 'Default sort attribute',\n },\n name: 'settings.defaultSortBy',\n options: [],\n size: 3,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.sort.order'),\n defaultMessage: 'Default sort order',\n },\n name: 'settings.defaultSortOrder',\n options: ['ASC', 'DESC'].map((value) => ({ value, label: value })),\n size: 3,\n type: 'enumeration' as const,\n },\n ],\n];\n\nexport { Settings };\n"],"names":["EXCLUDED_SORT_ATTRIBUTE_TYPES","Settings","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","schema","useDoc","layout","useForm","state","values","currentSortBy","settings","defaultSortBy","onChange","sortOptions","React","useMemo","Object","reduce","acc","field","includes","attributes","name","type","push","value","label","sortOptionsSorted","sort","a","b","compare","useEffect","findIndex","opt","formLayout","SETTINGS_FORM_LAYOUT","map","row","hint","undefined","options","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","size","Item","xs","col","InputRenderer"],"mappings":"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"}
@@ -11,7 +11,8 @@ var attributes = require('../../../utils/attributes.js');
11
11
  var translations = require('../../../utils/translations.js');
12
12
  var DraggableCard = require('./DraggableCard.js');
13
13
 
14
- function _interopNamespaceDefault(e) {
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
15
16
  var n = Object.create(null);
16
17
  if (e) {
17
18
  Object.keys(e).forEach(function (k) {
@@ -28,7 +29,7 @@ function _interopNamespaceDefault(e) {
28
29
  return Object.freeze(n);
29
30
  }
30
31
 
31
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
 
33
34
  const SortDisplayedFields = ({ metadatas })=>{
34
35
  const { formatMessage } = reactIntl.useIntl();