@strapi/content-manager 0.0.0-experimental.f75e3c6d67cc47c64ab37479efdbb7b43be50b78 → 0.0.0-experimental.fb442e5e12dd3f611303691bf85a249520ba348b

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 (110) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-CuWgXugY.mjs → ComponentConfigurationPage-B3yDbeU1.mjs} +3 -3
  3. package/dist/_chunks/{ComponentConfigurationPage-CuWgXugY.mjs.map → ComponentConfigurationPage-B3yDbeU1.mjs.map} +1 -1
  4. package/dist/_chunks/{ComponentConfigurationPage-by0e_kNd.js → ComponentConfigurationPage-KXSuLnQD.js} +3 -3
  5. package/dist/_chunks/{ComponentConfigurationPage-by0e_kNd.js.map → ComponentConfigurationPage-KXSuLnQD.js.map} +1 -1
  6. package/dist/_chunks/{EditConfigurationPage-CqBeCPGH.js → EditConfigurationPage-BQ17--5R.js} +3 -3
  7. package/dist/_chunks/{EditConfigurationPage-CqBeCPGH.js.map → EditConfigurationPage-BQ17--5R.js.map} +1 -1
  8. package/dist/_chunks/{EditConfigurationPage-DbI4KMyz.mjs → EditConfigurationPage-D7PrLO8j.mjs} +3 -3
  9. package/dist/_chunks/{EditConfigurationPage-DbI4KMyz.mjs.map → EditConfigurationPage-D7PrLO8j.mjs.map} +1 -1
  10. package/dist/_chunks/{EditViewPage-dFPBya9U.mjs → EditViewPage-B7VgwJaG.mjs} +57 -46
  11. package/dist/_chunks/EditViewPage-B7VgwJaG.mjs.map +1 -0
  12. package/dist/_chunks/{EditViewPage-ChgloMyO.js → EditViewPage-BgjdnGz2.js} +56 -45
  13. package/dist/_chunks/EditViewPage-BgjdnGz2.js.map +1 -0
  14. package/dist/_chunks/{Field-dLk-vgLL.js → Field-CdK7ZLmv.js} +504 -165
  15. package/dist/_chunks/Field-CdK7ZLmv.js.map +1 -0
  16. package/dist/_chunks/{Field-C1nUKcdS.mjs → Field-tHCw4lGA.mjs} +505 -166
  17. package/dist/_chunks/Field-tHCw4lGA.mjs.map +1 -0
  18. package/dist/_chunks/{Form-DOlpi7Js.mjs → Form-BJxdTv3Q.mjs} +40 -30
  19. package/dist/_chunks/Form-BJxdTv3Q.mjs.map +1 -0
  20. package/dist/_chunks/{Form-CbXtmHC_.js → Form-C_0KTVvV.js} +38 -28
  21. package/dist/_chunks/Form-C_0KTVvV.js.map +1 -0
  22. package/dist/_chunks/{History-BFNUAiGc.mjs → History-DR2txJLE.mjs} +142 -37
  23. package/dist/_chunks/History-DR2txJLE.mjs.map +1 -0
  24. package/dist/_chunks/{History-BjDfohBr.js → History-nuEzM5qm.js} +141 -36
  25. package/dist/_chunks/History-nuEzM5qm.js.map +1 -0
  26. package/dist/_chunks/{ListConfigurationPage-IQBgWTaa.js → ListConfigurationPage-CnB86Psm.js} +57 -46
  27. package/dist/_chunks/ListConfigurationPage-CnB86Psm.js.map +1 -0
  28. package/dist/_chunks/{ListConfigurationPage-DDi0KqFm.mjs → ListConfigurationPage-voFVtXu6.mjs} +58 -48
  29. package/dist/_chunks/ListConfigurationPage-voFVtXu6.mjs.map +1 -0
  30. package/dist/_chunks/{ListViewPage-BPjljUsH.mjs → ListViewPage-B_GaWgRH.mjs} +80 -71
  31. package/dist/_chunks/ListViewPage-B_GaWgRH.mjs.map +1 -0
  32. package/dist/_chunks/{ListViewPage-CZYGqlvF.js → ListViewPage-SXIXm-RM.js} +78 -69
  33. package/dist/_chunks/ListViewPage-SXIXm-RM.js.map +1 -0
  34. package/dist/_chunks/{NoContentTypePage-BOAI6VZ1.js → NoContentTypePage-BzsQ3hLZ.js} +2 -2
  35. package/dist/_chunks/{NoContentTypePage-BOAI6VZ1.js.map → NoContentTypePage-BzsQ3hLZ.js.map} +1 -1
  36. package/dist/_chunks/{NoContentTypePage-DaWw67K-.mjs → NoContentTypePage-CYiGpsbj.mjs} +2 -2
  37. package/dist/_chunks/{NoContentTypePage-DaWw67K-.mjs.map → NoContentTypePage-CYiGpsbj.mjs.map} +1 -1
  38. package/dist/_chunks/{NoPermissionsPage-CZrJH00p.mjs → NoPermissionsPage-B5baIHal.mjs} +2 -2
  39. package/dist/_chunks/{NoPermissionsPage-CZrJH00p.mjs.map → NoPermissionsPage-B5baIHal.mjs.map} +1 -1
  40. package/dist/_chunks/{NoPermissionsPage-cYEtLc_e.js → NoPermissionsPage-IGkId4C5.js} +2 -2
  41. package/dist/_chunks/{NoPermissionsPage-cYEtLc_e.js.map → NoPermissionsPage-IGkId4C5.js.map} +1 -1
  42. package/dist/_chunks/{Relations-DTowyge2.mjs → Relations-CIYDdKU-.mjs} +5 -5
  43. package/dist/_chunks/Relations-CIYDdKU-.mjs.map +1 -0
  44. package/dist/_chunks/{Relations-DU6B7irU.js → Relations-Dhuurpx2.js} +5 -5
  45. package/dist/_chunks/Relations-Dhuurpx2.js.map +1 -0
  46. package/dist/_chunks/{en-GCOTL6jR.mjs → en-BrCTWlZv.mjs} +9 -4
  47. package/dist/_chunks/{en-GCOTL6jR.mjs.map → en-BrCTWlZv.mjs.map} +1 -1
  48. package/dist/_chunks/{en-DTULi5-d.js → en-uOUIxfcQ.js} +9 -4
  49. package/dist/_chunks/{en-DTULi5-d.js.map → en-uOUIxfcQ.js.map} +1 -1
  50. package/dist/_chunks/{index-BaGHmIir.mjs → index-C9TJPyni.mjs} +1542 -1063
  51. package/dist/_chunks/index-C9TJPyni.mjs.map +1 -0
  52. package/dist/_chunks/{index-CCJeB7Rw.js → index-CdT0kHZ8.js} +1510 -1031
  53. package/dist/_chunks/index-CdT0kHZ8.js.map +1 -0
  54. package/dist/_chunks/{layout-BinjszSQ.mjs → layout-BNqvLR_b.mjs} +39 -22
  55. package/dist/_chunks/layout-BNqvLR_b.mjs.map +1 -0
  56. package/dist/_chunks/{layout-ni_L9kT1.js → layout-C6dxWYT7.js} +37 -20
  57. package/dist/_chunks/layout-C6dxWYT7.js.map +1 -0
  58. package/dist/_chunks/{relations-c91ji5eR.mjs → relations-CkKqKw65.mjs} +2 -2
  59. package/dist/_chunks/{relations-c91ji5eR.mjs.map → relations-CkKqKw65.mjs.map} +1 -1
  60. package/dist/_chunks/{relations-CeJAJc5I.js → relations-DtFaDnP1.js} +2 -2
  61. package/dist/_chunks/{relations-CeJAJc5I.js.map → relations-DtFaDnP1.js.map} +1 -1
  62. package/dist/admin/index.js +1 -1
  63. package/dist/admin/index.mjs +8 -8
  64. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +1 -1
  65. package/dist/admin/src/history/index.d.ts +3 -0
  66. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -1
  67. package/dist/admin/src/index.d.ts +1 -0
  68. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +8 -3
  69. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
  70. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  71. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  72. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  73. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +12 -32
  74. package/dist/admin/src/pages/ListView/components/BulkActions/Actions.d.ts +3 -30
  75. package/dist/admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +2 -2
  76. package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +14 -0
  77. package/dist/server/index.js +147 -93
  78. package/dist/server/index.js.map +1 -1
  79. package/dist/server/index.mjs +148 -94
  80. package/dist/server/index.mjs.map +1 -1
  81. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  82. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  83. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  84. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  85. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  86. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  87. package/dist/server/src/history/services/utils.d.ts +1 -1
  88. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  89. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  90. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  91. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  92. package/package.json +8 -8
  93. package/dist/_chunks/EditViewPage-ChgloMyO.js.map +0 -1
  94. package/dist/_chunks/EditViewPage-dFPBya9U.mjs.map +0 -1
  95. package/dist/_chunks/Field-C1nUKcdS.mjs.map +0 -1
  96. package/dist/_chunks/Field-dLk-vgLL.js.map +0 -1
  97. package/dist/_chunks/Form-CbXtmHC_.js.map +0 -1
  98. package/dist/_chunks/Form-DOlpi7Js.mjs.map +0 -1
  99. package/dist/_chunks/History-BFNUAiGc.mjs.map +0 -1
  100. package/dist/_chunks/History-BjDfohBr.js.map +0 -1
  101. package/dist/_chunks/ListConfigurationPage-DDi0KqFm.mjs.map +0 -1
  102. package/dist/_chunks/ListConfigurationPage-IQBgWTaa.js.map +0 -1
  103. package/dist/_chunks/ListViewPage-BPjljUsH.mjs.map +0 -1
  104. package/dist/_chunks/ListViewPage-CZYGqlvF.js.map +0 -1
  105. package/dist/_chunks/Relations-DTowyge2.mjs.map +0 -1
  106. package/dist/_chunks/Relations-DU6B7irU.js.map +0 -1
  107. package/dist/_chunks/index-BaGHmIir.mjs.map +0 -1
  108. package/dist/_chunks/index-CCJeB7Rw.js.map +0 -1
  109. package/dist/_chunks/layout-BinjszSQ.mjs.map +0 -1
  110. package/dist/_chunks/layout-ni_L9kT1.js.map +0 -1
@@ -1,11 +1,10 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { useId } from "react";
4
3
  import { useForm, Layouts, BackButton, InputRenderer, useNotification, useField, Form, useTracking, useAPIErrorHandler, Page } from "@strapi/admin/strapi-admin";
5
- import { Button, useCollator, Flex, Typography, Grid, GridItem, ModalLayout, ModalHeader, ModalBody, ModalFooter, Box, useComposedRefs, Menu, VisuallyHidden, Main, Divider } from "@strapi/design-system";
4
+ import { Button, useCollator, Flex, Typography, Grid, Modal, Box, useComposedRefs, Menu, VisuallyHidden, Main, Divider } from "@strapi/design-system";
6
5
  import { useIntl } from "react-intl";
7
6
  import { Navigate } from "react-router-dom";
8
- import { g as getTranslation, y as capitalise, b as useDoc, o as useGetContentTypeConfigurationQuery, v as checkIfAttributeIsDisplayable, m as useDocLayout, z as useUpdateContentTypeConfigurationMutation, S as SINGLE_TYPES } from "./index-BaGHmIir.mjs";
7
+ import { g as getTranslation, x as capitalise, c as useDoc, o as useGetContentTypeConfigurationQuery, t as checkIfAttributeIsDisplayable, n as useDocLayout, y as useUpdateContentTypeConfigurationMutation, S as SINGLE_TYPES } from "./index-C9TJPyni.mjs";
9
8
  import { u as useTypedSelector } from "./hooks-E5u1mcgM.mjs";
10
9
  import { s as setIn } from "./objects-mKMAmfec.mjs";
11
10
  import { Drag, Pencil, Cross, Plus } from "@strapi/icons";
@@ -103,8 +102,8 @@ const Settings = () => {
103
102
  id: getTranslation("containers.SettingPage.settings"),
104
103
  defaultMessage: "Settings"
105
104
  }) }),
106
- /* @__PURE__ */ jsx(Grid, { gap: 4, children: formLayout.map(
107
- (row) => row.map(({ size, ...field }) => /* @__PURE__ */ jsx(GridItem, { s: 12, col: size, children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name))
105
+ /* @__PURE__ */ jsx(Grid.Root, { gap: 4, children: formLayout.map(
106
+ (row) => row.map(({ size, ...field }) => /* @__PURE__ */ jsx(Grid.Item, { s: 12, col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name))
108
107
  ) }, "bottom")
109
108
  ] });
110
109
  };
@@ -182,7 +181,6 @@ const FIELD_SCHEMA = yup.object().shape({
182
181
  const EditFieldForm = ({ attribute, name, onClose }) => {
183
182
  const { formatMessage } = useIntl();
184
183
  const { toggleNotification } = useNotification();
185
- const id = useId();
186
184
  const { value, onChange } = useField(name);
187
185
  if (!value) {
188
186
  console.error(
@@ -201,7 +199,7 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
201
199
  if ("relation" in attribute && ["oneWay", "oneToOne", "manyToOne"].includes(attribute.relation)) {
202
200
  shouldDisplaySortToggle = true;
203
201
  }
204
- return /* @__PURE__ */ jsx(ModalLayout, { onClose, labelledBy: id, children: /* @__PURE__ */ jsxs(
202
+ return /* @__PURE__ */ jsx(Modal.Content, { children: /* @__PURE__ */ jsxs(
205
203
  Form,
206
204
  {
207
205
  method: "PUT",
@@ -212,9 +210,9 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
212
210
  onClose();
213
211
  },
214
212
  children: [
215
- /* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsxs(HeaderContainer, { children: [
213
+ /* @__PURE__ */ jsx(Modal.Header, { children: /* @__PURE__ */ jsxs(HeaderContainer, { children: [
216
214
  /* @__PURE__ */ jsx(FieldTypeIcon, { type: attribute.type }),
217
- /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", textColor: "neutral800", tag: "h2", id, children: formatMessage(
215
+ /* @__PURE__ */ jsx(Modal.Title, { children: formatMessage(
218
216
  {
219
217
  id: getTranslation("containers.list-settings.modal-form.label"),
220
218
  defaultMessage: "Edit {fieldName}"
@@ -222,7 +220,7 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
222
220
  { fieldName: capitalise(value.label) }
223
221
  ) })
224
222
  ] }) }),
225
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsx(Grid, { gap: 4, children: [
223
+ /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx(Grid.Root, { gap: 4, children: [
226
224
  {
227
225
  name: "label",
228
226
  label: formatMessage({
@@ -247,14 +245,21 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
247
245
  }
248
246
  ].filter(
249
247
  (field) => field.name !== "sortable" || field.name === "sortable" && shouldDisplaySortToggle
250
- ).map(({ size, ...field }) => /* @__PURE__ */ jsx(GridItem, { s: 12, col: size, children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name)) }) }),
251
- /* @__PURE__ */ jsx(
252
- ModalFooter,
248
+ ).map(({ size, ...field }) => /* @__PURE__ */ jsx(
249
+ Grid.Item,
253
250
  {
254
- startActions: /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }),
255
- endActions: /* @__PURE__ */ jsx(Button, { type: "submit", children: formatMessage({ id: "global.finish", defaultMessage: "Finish" }) })
256
- }
257
- )
251
+ s: 12,
252
+ col: size,
253
+ direction: "column",
254
+ alignItems: "stretch",
255
+ children: /* @__PURE__ */ jsx(InputRenderer, { ...field })
256
+ },
257
+ field.name
258
+ )) }) }),
259
+ /* @__PURE__ */ jsxs(Modal.Footer, { children: [
260
+ /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }),
261
+ /* @__PURE__ */ jsx(Button, { type: "submit", children: formatMessage({ id: "global.finish", defaultMessage: "Finish" }) })
262
+ ] })
258
263
  ]
259
264
  }
260
265
  ) });
@@ -298,8 +303,11 @@ const DraggableCard = ({
298
303
  forceRerenderAfterDnd((prev) => !prev);
299
304
  }
300
305
  }, [isDraggingSibling]);
301
- const composedRefs = useComposedRefs(dragRef, objectRef);
302
- return /* @__PURE__ */ jsxs(FieldWrapper, { ref: dropRef, children: [
306
+ const composedRefs = useComposedRefs(
307
+ dropRef,
308
+ objectRef
309
+ );
310
+ return /* @__PURE__ */ jsxs(FieldWrapper, { ref: composedRefs, children: [
303
311
  isDragging && /* @__PURE__ */ jsx(CardDragPreview, { label }),
304
312
  !isDragging && isDraggingSibling && /* @__PURE__ */ jsx(CardDragPreview, { isSibling: true, label }),
305
313
  !isDragging && !isDraggingSibling && /* @__PURE__ */ jsxs(
@@ -315,7 +323,7 @@ const DraggableCard = ({
315
323
  /* @__PURE__ */ jsx(
316
324
  DragButton,
317
325
  {
318
- tag: "span",
326
+ ref: dragRef,
319
327
  "aria-label": formatMessage(
320
328
  {
321
329
  id: getTranslation("components.DraggableCard.move.field"),
@@ -324,31 +332,41 @@ const DraggableCard = ({
324
332
  { item: label }
325
333
  ),
326
334
  onClick: (e) => e.stopPropagation(),
327
- ref: composedRefs,
328
335
  children: /* @__PURE__ */ jsx(Drag, {})
329
336
  }
330
337
  ),
331
338
  /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: label })
332
339
  ] }),
333
- /* @__PURE__ */ jsxs(Flex, { paddingLeft: 3, children: [
334
- /* @__PURE__ */ jsx(
335
- ActionButton,
336
- {
337
- onClick: (e) => {
338
- e.stopPropagation();
339
- setIsModalOpen(true);
340
- },
341
- "aria-label": formatMessage(
342
- {
343
- id: getTranslation("components.DraggableCard.edit.field"),
344
- defaultMessage: "Edit {item}"
340
+ /* @__PURE__ */ jsxs(Flex, { paddingLeft: 3, onClick: (e) => e.stopPropagation(), children: [
341
+ /* @__PURE__ */ jsxs(Modal.Root, { open: isModalOpen, onOpenChange: setIsModalOpen, children: [
342
+ /* @__PURE__ */ jsx(Modal.Trigger, { children: /* @__PURE__ */ jsx(
343
+ ActionButton,
344
+ {
345
+ onClick: (e) => {
346
+ e.stopPropagation();
345
347
  },
346
- { item: label }
347
- ),
348
- type: "button",
349
- children: /* @__PURE__ */ jsx(Pencil, { width: "1.2rem", height: "1.2rem" })
350
- }
351
- ),
348
+ "aria-label": formatMessage(
349
+ {
350
+ id: getTranslation("components.DraggableCard.edit.field"),
351
+ defaultMessage: "Edit {item}"
352
+ },
353
+ { item: label }
354
+ ),
355
+ type: "button",
356
+ children: /* @__PURE__ */ jsx(Pencil, { width: "1.2rem", height: "1.2rem" })
357
+ }
358
+ ) }),
359
+ /* @__PURE__ */ jsx(
360
+ EditFieldForm,
361
+ {
362
+ attribute,
363
+ name: `layout.${index}`,
364
+ onClose: () => {
365
+ setIsModalOpen(false);
366
+ }
367
+ }
368
+ )
369
+ ] }),
352
370
  /* @__PURE__ */ jsx(
353
371
  ActionButton,
354
372
  {
@@ -368,14 +386,6 @@ const DraggableCard = ({
368
386
  ] })
369
387
  ]
370
388
  }
371
- ),
372
- isModalOpen && /* @__PURE__ */ jsx(
373
- EditFieldForm,
374
- {
375
- attribute,
376
- name: `layout.${index}`,
377
- onClose: () => setIsModalOpen(false)
378
- }
379
389
  )
380
390
  ] });
381
391
  };
@@ -619,4 +629,4 @@ export {
619
629
  ListConfiguration,
620
630
  ProtectedListConfiguration
621
631
  };
622
- //# sourceMappingURL=ListConfigurationPage-DDi0KqFm.mjs.map
632
+ //# sourceMappingURL=ListConfigurationPage-voFVtXu6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListConfigurationPage-voFVtXu6.mjs","sources":["../../admin/src/pages/ListConfiguration/components/Header.tsx","../../admin/src/pages/ListConfiguration/components/Settings.tsx","../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx","../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx","../../admin/src/pages/ListConfiguration/components/SortDisplayedFields.tsx","../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import { useForm, BackButton, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\ninterface HeaderProps {\n collectionType: string;\n name: string;\n model: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n navigationAction={<BackButton />}\n primaryAction={\n <Button size=\"S\" disabled={!modified} type=\"submit\" loading={isSubmitting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.list-settings'),\n defaultMessage: 'Define the settings of the list view.',\n })}\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: 'Configure the view - {name}',\n },\n { name: capitalise(name) }\n )}\n />\n );\n};\n\nexport { Header };\nexport type { HeaderProps };\n","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} s={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","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 s={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","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 >\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","import * as React from 'react';\n\nimport { useForm } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden, Typography, Menu } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useGetContentTypeConfigurationQuery } from '../../../services/contentTypes';\nimport { checkIfAttributeIsDisplayable } from '../../../utils/attributes';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { DraggableCard, DraggableCardProps } from './DraggableCard';\n\nimport type { ListLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface SortDisplayedFieldsProps extends Pick<ListLayout, 'layout'> {}\n\nconst SortDisplayedFields = () => {\n const { formatMessage } = useIntl();\n const { model, schema } = useDoc();\n const [isDraggingSibling, setIsDraggingSibling] = React.useState(false);\n const [lastAction, setLastAction] = React.useState<string | null>(null);\n const scrollableContainerRef = React.useRef<HTMLDivElement>(null);\n\n const values = useForm<FormData['layout']>(\n 'SortDisplayedFields',\n (state) => state.values.layout ?? []\n );\n const addFieldRow = useForm('SortDisplayedFields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('SortDisplayedFields', (state) => state.removeFieldRow);\n const moveFieldRow = useForm('SortDisplayedFields', (state) => state.moveFieldRow);\n\n const { metadata: allMetadata } = useGetContentTypeConfigurationQuery(model, {\n selectFromResult: ({ data }) => ({ metadata: data?.contentType.metadatas ?? {} }),\n });\n\n /**\n * This is our list of fields that are not displayed in the current layout\n * so we create their default state to be added to the layout.\n */\n const nonDisplayedFields = React.useMemo(() => {\n if (!schema) {\n return [];\n }\n\n const displayedFieldNames = values.map((field) => field.name);\n\n return Object.entries(schema.attributes).reduce<Array<FormData['layout'][number]>>(\n (acc, [name, attribute]) => {\n if (!displayedFieldNames.includes(name) && checkIfAttributeIsDisplayable(attribute)) {\n const { list: metadata } = allMetadata[name];\n\n acc.push({\n name,\n label: metadata.label || name,\n sortable: metadata.sortable,\n });\n }\n\n return acc;\n },\n []\n );\n }, [allMetadata, values, schema]);\n\n const handleAddField = (field: FormData['layout'][number]) => {\n setLastAction('add');\n addFieldRow('layout', field);\n };\n\n const handleRemoveField = (index: number) => {\n setLastAction('remove');\n removeFieldRow('layout', index);\n };\n\n const handleMoveField: DraggableCardProps['onMoveField'] = (dragIndex, hoverIndex) => {\n moveFieldRow('layout', dragIndex, hoverIndex);\n };\n\n React.useEffect(() => {\n if (lastAction === 'add' && scrollableContainerRef?.current) {\n scrollableContainerRef.current.scrollLeft = scrollableContainerRef.current.scrollWidth;\n }\n }, [lastAction]);\n\n return (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n\n <Flex padding={4} borderColor=\"neutral300\" borderStyle=\"dashed\" borderWidth=\"1px\" hasRadius>\n <Box flex=\"1\" overflow=\"auto hidden\" ref={scrollableContainerRef}>\n <Flex gap={3}>\n {values.map((field, index) => (\n <DraggableCard\n key={field.name}\n index={index}\n isDraggingSibling={isDraggingSibling}\n onMoveField={handleMoveField}\n onRemoveField={() => handleRemoveField(index)}\n setIsDraggingSibling={setIsDraggingSibling}\n {...field}\n attribute={schema!.attributes[field.name]}\n label={typeof field.label === 'object' ? formatMessage(field.label) : field.label}\n />\n ))}\n </Flex>\n </Box>\n\n <Menu.Root>\n <Menu.Trigger\n paddingLeft={2}\n paddingRight={2}\n justifyContent=\"center\"\n endIcon={null}\n disabled={nonDisplayedFields.length === 0}\n variant=\"tertiary\"\n >\n <VisuallyHidden tag=\"span\">\n {formatMessage({\n id: getTranslation('components.FieldSelect.label'),\n defaultMessage: 'Add a field',\n })}\n </VisuallyHidden>\n <Plus aria-hidden focusable={false} style={{ position: 'relative', top: 2 }} />\n </Menu.Trigger>\n <Menu.Content>\n {nonDisplayedFields.map((field) => (\n <Menu.Item key={field.name} onSelect={() => handleAddField(field)}>\n {typeof field.label === 'object' ? formatMessage(field.label) : field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Flex>\n );\n};\n\nexport { SortDisplayedFields };\nexport type { SortDisplayedFieldsProps };\n","import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\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 } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport { ListFieldLayout, ListLayout, useDocLayout } 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 } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit } = useDocLayout();\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 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 return {\n layout: list.layout.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.layout, list.settings]);\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 >\n <Settings />\n <Divider />\n <SortDisplayedFields />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":[],"mappings":"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"}
@@ -1,19 +1,19 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { useTracking, useAuth, useQueryParams, useAdminUsers, Filters, useField, useRBAC, useNotification, useAPIErrorHandler, useStrapiApp, Page, Layouts, BackButton, SearchInput, Table, Pagination } from "@strapi/admin/strapi-admin";
4
- import { useCollator, Combobox, ComboboxOption, Menu, Tooltip, Typography, Badge, Avatar, Flex, AvatarGroup, useNotifyAT, Loader, IconButton, Popover, LinkButton, TextButton, BaseCheckbox, Button } from "@strapi/design-system";
3
+ import { useTracking, useAuth, useQueryParams, useAdminUsers, Filters, useField, useRBAC, Layouts, useNotification, useAPIErrorHandler, useStrapiApp, Page, BackButton, SearchInput, Table, Pagination, useTable } from "@strapi/admin/strapi-admin";
4
+ import { useCollator, Combobox, ComboboxOption, Menu, Tooltip, Typography, Badge, Avatar, Flex, useNotifyAT, Loader, Popover, IconButton, LinkButton, TextButton, Checkbox, Button } from "@strapi/design-system";
5
5
  import { Cog, ListPlus, Plus } from "@strapi/icons";
6
6
  import isEqual from "lodash/isEqual";
7
7
  import { stringify } from "qs";
8
8
  import { useIntl } from "react-intl";
9
9
  import { NavLink, useNavigate, Link, useParams } from "react-router-dom";
10
10
  import { styled } from "styled-components";
11
- import { n as useContentTypeSchema, o as useGetContentTypeConfigurationQuery, p as CREATOR_FIELDS, q as getMainField, t as getDisplayName, b as useDoc, g as getTranslation, f as useDocumentLayout, v as checkIfAttributeIsDisplayable, c as buildValidParams, w as useGetAllDocumentsQuery, e as useDocumentRBAC, I as InjectionZone, B as BulkActionsRenderer, D as DocumentStatus, T as TableActions, j as PERMISSIONS, k as DocumentRBAC, H as HOOKS, x as convertListLayoutToFieldLayouts } from "./index-BaGHmIir.mjs";
11
+ import { u as useContentTypeSchema, o as useGetContentTypeConfigurationQuery, p as CREATOR_FIELDS, q as getMainField, r as getDisplayName, c as useDoc, g as getTranslation, h as useDocumentLayout, t as checkIfAttributeIsDisplayable, d as buildValidParams, v as useGetAllDocumentsQuery, f as useDocumentRBAC, I as InjectionZone, D as DocumentStatus, T as TableActions, B as BulkActionsRenderer, k as PERMISSIONS, l as DocumentRBAC, H as HOOKS, w as convertListLayoutToFieldLayouts } from "./index-C9TJPyni.mjs";
12
12
  import { p as prefixFileUrlWithBackendUrl, u as usePrev } from "./usePrev-DH6iah0A.mjs";
13
13
  import isEmpty from "lodash/isEmpty";
14
14
  import parseISO from "date-fns/parseISO";
15
15
  import toString from "lodash/toString";
16
- import { g as getRelationLabel, u as useGetRelationsQuery } from "./relations-c91ji5eR.mjs";
16
+ import { g as getRelationLabel, u as useGetRelationsQuery } from "./relations-CkKqKw65.mjs";
17
17
  import { u as useTypedSelector } from "./hooks-E5u1mcgM.mjs";
18
18
  const NOT_ALLOWED_FILTERS = [
19
19
  "json",
@@ -121,6 +121,15 @@ const FiltersImpl = ({ disabled, schema }) => {
121
121
  }
122
122
  };
123
123
  }
124
+ if (attribute.type === "enumeration") {
125
+ filter = {
126
+ ...filter,
127
+ options: attribute.enum.map((value) => ({
128
+ label: value,
129
+ value
130
+ }))
131
+ };
132
+ }
124
133
  return filter;
125
134
  }).filter(Boolean).toSorted((a, b) => formatter.compare(a.label, b.label));
126
135
  }, [
@@ -262,7 +271,15 @@ const MediaSingle = ({ url, mime, alternativeText, name, ext, formats }) => {
262
271
  if (mime.includes("image")) {
263
272
  const thumbnail = formats?.thumbnail?.url;
264
273
  const mediaURL = prefixFileUrlWithBackendUrl(thumbnail) || fileURL;
265
- return /* @__PURE__ */ jsx(Avatar, { src: mediaURL, alt: alternativeText || name, preview: true });
274
+ return /* @__PURE__ */ jsx(
275
+ Avatar.Item,
276
+ {
277
+ src: mediaURL,
278
+ alt: alternativeText || name,
279
+ fallback: alternativeText || name,
280
+ preview: true
281
+ }
282
+ );
266
283
  }
267
284
  const fileExtension = getFileExtension(ext);
268
285
  const fileName = name.length > 100 ? `${name.substring(0, 100)}...` : name;
@@ -291,7 +308,7 @@ const FileTypography = styled(Typography)`
291
308
  line-height: 0.9rem;
292
309
  `;
293
310
  const MediaMultiple = ({ content }) => {
294
- return /* @__PURE__ */ jsx(AvatarGroup, { children: content.map((file, index) => {
311
+ return /* @__PURE__ */ jsx(Avatar.Group, { children: content.map((file, index) => {
295
312
  const key = `${file.id}${index}`;
296
313
  if (index === 3) {
297
314
  const remainingFiles = `+${content.length - 3}`;
@@ -426,8 +443,6 @@ const hasContent = (content, mainField, attribute) => {
426
443
  };
427
444
  const isSingleRelation = (type) => ["oneToOne", "manyToOne", "oneToOneMorph"].includes(type);
428
445
  const ViewSettingsMenu = (props) => {
429
- const [isVisible, setIsVisible] = React.useState(false);
430
- const cogButtonRef = React.useRef(null);
431
446
  const permissions = useTypedSelector(
432
447
  (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations ?? []
433
448
  );
@@ -436,52 +451,37 @@ const ViewSettingsMenu = (props) => {
436
451
  const {
437
452
  allowedActions: { canConfigureView }
438
453
  } = useRBAC(permissions);
439
- const handleToggle = () => {
440
- setIsVisible((prev) => !prev);
441
- };
442
- return /* @__PURE__ */ jsxs(Fragment, { children: [
443
- /* @__PURE__ */ jsx(
454
+ return /* @__PURE__ */ jsxs(Popover.Root, { children: [
455
+ /* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(
444
456
  IconButton,
445
457
  {
446
458
  label: formatMessage({
447
459
  id: "components.ViewSettings.tooltip",
448
460
  defaultMessage: "View Settings"
449
461
  }),
450
- ref: cogButtonRef,
451
- onClick: handleToggle,
452
462
  children: /* @__PURE__ */ jsx(Cog, {})
453
463
  }
454
- ),
455
- isVisible && /* @__PURE__ */ jsx(
456
- Popover,
457
- {
458
- placement: "bottom-end",
459
- source: cogButtonRef,
460
- onDismiss: handleToggle,
461
- spacing: 4,
462
- padding: 3,
463
- children: /* @__PURE__ */ jsxs(Flex, { alignItems: "stretch", direction: "column", gap: 3, children: [
464
- canConfigureView ? /* @__PURE__ */ jsx(
465
- LinkButton,
466
- {
467
- size: "S",
468
- startIcon: /* @__PURE__ */ jsx(ListPlus, {}),
469
- variant: "secondary",
470
- tag: NavLink,
471
- to: {
472
- pathname: "configurations/list",
473
- search: query.plugins ? stringify({ plugins: query.plugins }, { encode: false }) : ""
474
- },
475
- children: formatMessage({
476
- id: "app.links.configure-view",
477
- defaultMessage: "Configure the view"
478
- })
479
- }
480
- ) : null,
481
- /* @__PURE__ */ jsx(FieldPicker, { ...props })
482
- ] })
483
- }
484
- )
464
+ ) }),
465
+ /* @__PURE__ */ jsx(Popover.Content, { side: "bottom", align: "end", sideOffset: 4, children: /* @__PURE__ */ jsxs(Flex, { alignItems: "stretch", direction: "column", padding: 3, gap: 3, children: [
466
+ canConfigureView ? /* @__PURE__ */ jsx(
467
+ LinkButton,
468
+ {
469
+ size: "S",
470
+ startIcon: /* @__PURE__ */ jsx(ListPlus, {}),
471
+ variant: "secondary",
472
+ tag: NavLink,
473
+ to: {
474
+ pathname: "configurations/list",
475
+ search: query.plugins ? stringify({ plugins: query.plugins }, { encode: false }) : ""
476
+ },
477
+ children: formatMessage({
478
+ id: "app.links.configure-view",
479
+ defaultMessage: "Configure the view"
480
+ })
481
+ }
482
+ ) : null,
483
+ /* @__PURE__ */ jsx(FieldPicker, { ...props })
484
+ ] }) })
485
485
  ] });
486
486
  };
487
487
  const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
@@ -518,38 +518,33 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
518
518
  ] }),
519
519
  /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", children: columns.map((header) => {
520
520
  const isActive = headers.includes(header.name);
521
- return /* @__PURE__ */ jsxs(
522
- ChackboxWrapper,
521
+ return /* @__PURE__ */ jsx(
522
+ Flex,
523
523
  {
524
524
  wrap: "wrap",
525
525
  gap: 2,
526
- tag: "label",
527
526
  background: isActive ? "primary100" : "transparent",
528
527
  hasRadius: true,
529
528
  padding: 2,
530
- children: [
531
- /* @__PURE__ */ jsx(
532
- BaseCheckbox,
533
- {
534
- onChange: () => handleChange(header.name),
535
- value: isActive,
536
- name: header.name
537
- }
538
- ),
539
- /* @__PURE__ */ jsx(Typography, { fontSize: 1, children: header.label })
540
- ]
529
+ children: /* @__PURE__ */ jsx(
530
+ Checkbox,
531
+ {
532
+ onCheckedChange: () => handleChange(header.name),
533
+ checked: isActive,
534
+ name: header.name,
535
+ children: /* @__PURE__ */ jsx(Typography, { fontSize: 1, children: header.label })
536
+ }
537
+ )
541
538
  },
542
539
  header.name
543
540
  );
544
541
  }) })
545
542
  ] });
546
543
  };
547
- const ChackboxWrapper = styled(Flex)`
548
- :hover {
549
- background-color: ${(props) => props.theme.colors.primary100};
550
- }
551
- `;
552
544
  const { INJECT_COLUMN_IN_TABLE } = HOOKS;
545
+ const LayoutsHeaderCustom = styled(Layouts.Header)`
546
+ overflow-wrap: anywhere;
547
+ `;
553
548
  const ListViewPage = () => {
554
549
  const { trackUsage } = useTracking();
555
550
  const navigate = useNavigate();
@@ -576,7 +571,7 @@ const ListViewPage = () => {
576
571
  sort: list.settings.defaultSortBy ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}` : ""
577
572
  });
578
573
  const params = React.useMemo(() => buildValidParams(query), [query]);
579
- const { data, error, isLoading } = useGetAllDocumentsQuery({
574
+ const { data, error, isFetching } = useGetAllDocumentsQuery({
580
575
  model,
581
576
  params
582
577
  });
@@ -634,7 +629,7 @@ const ListViewPage = () => {
634
629
  }
635
630
  return formattedHeaders;
636
631
  }, [displayedHeaders, formatMessage, list, runHookWaterfall, schema?.options?.draftAndPublish]);
637
- if (isLoading) {
632
+ if (isFetching) {
638
633
  return /* @__PURE__ */ jsx(Page.Loading, {});
639
634
  }
640
635
  if (error) {
@@ -651,7 +646,7 @@ const ListViewPage = () => {
651
646
  return /* @__PURE__ */ jsxs(Page.Main, { children: [
652
647
  /* @__PURE__ */ jsx(Page.Title, { children: `${contentTypeTitle}` }),
653
648
  /* @__PURE__ */ jsx(
654
- Layouts.Header,
649
+ LayoutsHeaderCustom,
655
650
  {
656
651
  primaryAction: canCreate ? /* @__PURE__ */ jsx(CreateButton, {}) : null,
657
652
  subtitle: formatMessage(
@@ -700,8 +695,8 @@ const ListViewPage = () => {
700
695
  }
701
696
  ),
702
697
  /* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsxs(Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
703
- /* @__PURE__ */ jsxs(Table.Root, { rows: results, headers: tableHeaders, isLoading, children: [
704
- /* @__PURE__ */ jsx(Table.ActionBar, { children: /* @__PURE__ */ jsx(BulkActionsRenderer, {}) }),
698
+ /* @__PURE__ */ jsxs(Table.Root, { rows: results, headers: tableHeaders, isLoading: isFetching, children: [
699
+ /* @__PURE__ */ jsx(TableActionsBar, {}),
705
700
  /* @__PURE__ */ jsxs(Table.Content, { children: [
706
701
  /* @__PURE__ */ jsxs(Table.Head, { children: [
707
702
  /* @__PURE__ */ jsx(Table.HeaderCheckboxCell, {}),
@@ -763,6 +758,18 @@ const ActionsCell = styled(Table.Cell)`
763
758
  display: flex;
764
759
  justify-content: flex-end;
765
760
  `;
761
+ const TableActionsBar = () => {
762
+ const selectRow = useTable("TableActionsBar", (state) => state.selectRow);
763
+ const [{ query }] = useQueryParams();
764
+ const locale = query?.plugins?.i18n?.locale;
765
+ const prevLocale = usePrev(locale);
766
+ React.useEffect(() => {
767
+ if (prevLocale !== locale) {
768
+ selectRow([]);
769
+ }
770
+ }, [selectRow, prevLocale, locale]);
771
+ return /* @__PURE__ */ jsx(Table.ActionBar, { children: /* @__PURE__ */ jsx(BulkActionsRenderer, {}) });
772
+ };
766
773
  const CreateButton = ({ variant }) => {
767
774
  const { formatMessage } = useIntl();
768
775
  const { trackUsage } = useTracking();
@@ -781,6 +788,8 @@ const CreateButton = ({ variant }) => {
781
788
  pathname: "create",
782
789
  search: stringify({ plugins: query.plugins })
783
790
  },
791
+ minWidth: "max-content",
792
+ marginLeft: 2,
784
793
  children: formatMessage({
785
794
  id: getTranslation("HeaderLayout.button.label-add-entry"),
786
795
  defaultMessage: "Create new entry"
@@ -812,4 +821,4 @@ export {
812
821
  ListViewPage,
813
822
  ProtectedListViewPage
814
823
  };
815
- //# sourceMappingURL=ListViewPage-BPjljUsH.mjs.map
824
+ //# sourceMappingURL=ListViewPage-B_GaWgRH.mjs.map