@strapi/content-manager 5.48.1 → 5.50.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.
- package/dist/admin/components/ActionsDrawer.js +3 -2
- package/dist/admin/components/ActionsDrawer.js.map +1 -1
- package/dist/admin/components/ComponentIcon.js +4 -3
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js +3 -2
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js +3 -2
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +7 -3
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/LeftMenu.js +3 -2
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/RelativeTime.js +3 -2
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/Widgets.js +3 -2
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/features/DocumentRBAC.js +3 -2
- package/dist/admin/features/DocumentRBAC.js.map +1 -1
- package/dist/admin/history/components/VersionContent.js +7 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +3 -2
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js +3 -2
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/pages/History.js +3 -2
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/routes.js +3 -2
- package/dist/admin/history/routes.js.map +1 -1
- package/dist/admin/hooks/useContentTypeSchema.js +3 -2
- package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
- package/dist/admin/hooks/useDocument.js +3 -2
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +3 -2
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js +3 -2
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js +3 -2
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDragAndDrop.js +3 -2
- package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useKeyboardDragAndDrop.js +3 -2
- package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useOnce.js +3 -2
- package/dist/admin/hooks/useOnce.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.js +7 -2
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/layout.js +3 -1
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +5 -3
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js +3 -2
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/EditConfigurationPage.js +3 -2
- package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +3 -2
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +238 -108
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +225 -103
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +3 -2
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +9 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +13 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +8 -4
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js +15 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +3 -2
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +3 -2
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +3 -2
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js +3 -2
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +5 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js +117 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs +109 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs.map +1 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.js +35 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs +33 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs.map +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +3 -2
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +3 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +3 -2
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +4 -3
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +3 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +3 -2
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +3 -2
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +9 -5
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +2 -2
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -2
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +4 -3
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +3 -2
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +3 -2
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/pages/Preview.js +41 -13
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +39 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/routes.js +3 -2
- package/dist/admin/preview/routes.js.map +1 -1
- package/dist/admin/preview/utils/constants.js +9 -15
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +10 -15
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +1 -2
- package/dist/admin/src/content-manager.d.ts +15 -15
- package/dist/admin/src/history/services/historyVersion.d.ts +2 -2
- package/dist/admin/src/hooks/useContentTypeSchema.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +8 -9
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +3 -3
- package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
- package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +0 -1
- package/dist/admin/src/modules/app.d.ts +5 -5
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -1
- package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +4 -4
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +19 -20
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +12 -12
- package/dist/admin/src/pages/EditView/utils/draftRelationCounts.d.ts +26 -0
- package/dist/admin/src/pages/EditView/utils/keyboardShortcuts.d.ts +18 -0
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +1 -1
- package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +1 -7
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +0 -1
- package/dist/admin/src/services/documents.d.ts +30 -70
- package/dist/admin/src/services/relations.d.ts +6 -20
- package/dist/admin/src/services/uid.d.ts +5 -5
- package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -1
- package/dist/admin/translations/cs.json.js +2 -1
- package/dist/admin/translations/cs.json.js.map +1 -1
- package/dist/admin/translations/cs.json.mjs +2 -1
- package/dist/admin/translations/cs.json.mjs.map +1 -1
- package/dist/admin/translations/de.json.js +2 -1
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +2 -1
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +7 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +7 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +2 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +2 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +2 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +2 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +262 -87
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +262 -87
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/translations/nl.json.js +2 -1
- package/dist/admin/translations/nl.json.js.map +1 -1
- package/dist/admin/translations/nl.json.mjs +2 -1
- package/dist/admin/translations/nl.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +2 -1
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +2 -1
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/sk.json.js +2 -1
- package/dist/admin/translations/sk.json.js.map +1 -1
- package/dist/admin/translations/sk.json.mjs +2 -1
- package/dist/admin/translations/sk.json.mjs.map +1 -1
- package/dist/admin/utils/objects.js +9 -4
- package/dist/admin/utils/objects.js.map +1 -1
- package/dist/admin/utils/validation.js +7 -3
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/server/controllers/collection-types.js +2 -2
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -2
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +2 -2
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +2 -2
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/utils/clone.js +5 -1
- package/dist/server/controllers/utils/clone.js.map +1 -1
- package/dist/server/controllers/utils/clone.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js +6 -2
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/homepage/services/homepage.js +6 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +6 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/mcp/handlers/collection-handlers.js +15 -18
- package/dist/server/mcp/handlers/collection-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/collection-handlers.mjs +16 -19
- package/dist/server/mcp/handlers/collection-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/single-type-handlers.js +12 -12
- package/dist/server/mcp/handlers/single-type-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/single-type-handlers.mjs +13 -13
- package/dist/server/mcp/handlers/single-type-handlers.mjs.map +1 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.js +4 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.mjs +4 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
- package/dist/server/mcp/sanitizers/shape-relations.js +108 -0
- package/dist/server/mcp/sanitizers/shape-relations.js.map +1 -0
- package/dist/server/mcp/sanitizers/shape-relations.mjs +103 -0
- package/dist/server/mcp/sanitizers/shape-relations.mjs.map +1 -0
- package/dist/server/mcp/schemas/data-schema.js +0 -3
- package/dist/server/mcp/schemas/data-schema.js.map +1 -1
- package/dist/server/mcp/schemas/data-schema.mjs +0 -3
- package/dist/server/mcp/schemas/data-schema.mjs.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.js +30 -4
- package/dist/server/mcp/schemas/output-schemas.js.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.mjs +30 -4
- package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -1
- package/dist/server/mcp/utils.js +30 -3
- package/dist/server/mcp/utils.js.map +1 -1
- package/dist/server/mcp/utils.mjs +30 -4
- package/dist/server/mcp/utils.mjs.map +1 -1
- package/dist/server/middlewares/routing.js +5 -1
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/preview/controllers/preview.js +9 -0
- package/dist/server/preview/controllers/preview.js.map +1 -1
- package/dist/server/preview/controllers/preview.mjs +9 -0
- package/dist/server/preview/controllers/preview.mjs.map +1 -1
- package/dist/server/preview/controllers/previewScript.js +1450 -0
- package/dist/server/preview/routes/preview.js +11 -0
- package/dist/server/preview/routes/preview.js.map +1 -1
- package/dist/server/preview/routes/preview.mjs +11 -0
- package/dist/server/preview/routes/preview.mjs.map +1 -1
- package/dist/server/services/document-manager.js +13 -19
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +13 -19
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/populate-builder.js.map +1 -1
- package/dist/server/services/populate-builder.mjs.map +1 -1
- package/dist/server/services/uid.js +9 -4
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.js +14 -10
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js +8 -4
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js +19 -15
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/settings.js +5 -1
- package/dist/server/services/utils/configuration/settings.js.map +1 -1
- package/dist/server/services/utils/draft-relations.js +9 -0
- package/dist/server/services/utils/draft-relations.js.map +1 -0
- package/dist/server/services/utils/draft-relations.mjs +7 -0
- package/dist/server/services/utils/draft-relations.mjs.map +1 -0
- package/dist/server/services/utils/draft.js +123 -26
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs +118 -25
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +23 -5
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +15 -1
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/services/utils/store.js +9 -5
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +5 -5
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +3 -3
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/model-configuration.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts +2 -2
- package/dist/server/src/history/controllers/history-version.d.ts +1 -7
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/controllers/index.d.ts +2 -1
- package/dist/server/src/history/controllers/index.d.ts.map +1 -1
- package/dist/server/src/history/controllers/validation/history-version.d.ts +1 -1
- package/dist/server/src/history/services/history.d.ts +0 -2
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +3 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/history/utils.d.ts +1 -18
- package/dist/server/src/history/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +0 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/index.d.ts +2 -1
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +4 -8
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +3 -4
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +4 -8
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +82 -86
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/permissions.d.ts +1 -1
- package/dist/server/src/mcp/permissions.d.ts.map +1 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +2 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts +38 -0
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -0
- package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/data-schema.d.ts +0 -3
- package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/output-schemas.d.ts +2 -2
- package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/types.d.ts +2 -2
- package/dist/server/src/mcp/types.d.ts.map +1 -1
- package/dist/server/src/mcp/utils.d.ts +19 -1
- package/dist/server/src/mcp/utils.d.ts.map +1 -1
- package/dist/server/src/middlewares/routing.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -1
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/preview.d.ts +5 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts +1 -2
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -16
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -2
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +5 -5
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts +14 -14
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +6 -6
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/field-sizes.d.ts +2 -2
- package/dist/server/src/services/field-sizes.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +81 -85
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +12 -31
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/populate-builder.d.ts +7 -5
- package/dist/server/src/services/populate-builder.d.ts.map +1 -1
- package/dist/server/src/services/uid.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attributes.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/server/src/services/utils/count.d.ts.map +1 -1
- package/dist/server/src/services/utils/draft-relations.d.ts +19 -0
- package/dist/server/src/services/utils/draft-relations.d.ts.map +1 -0
- package/dist/server/src/services/utils/draft.d.ts +8 -7
- package/dist/server/src/services/utils/draft.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts +3 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +4 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/single-types.d.ts +4 -1
- package/dist/shared/contracts/single-types.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/admin/preview/utils/previewScript.js +0 -1068
- package/dist/admin/preview/utils/previewScript.js.map +0 -1
- package/dist/admin/preview/utils/previewScript.mjs +0 -1066
- package/dist/admin/preview/utils/previewScript.mjs.map +0 -1
- package/dist/admin/src/preview/utils/previewScript.d.ts +0 -32
|
@@ -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
|
|
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__*/
|
|
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
|
|
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__*/
|
|
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":"
|
|
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
|
|
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__*/
|
|
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
|
|
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__*/
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
32
33
|
|
|
33
34
|
const SortDisplayedFields = ({ metadatas })=>{
|
|
34
35
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortDisplayedFields.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/SortDisplayedFields.tsx"],"sourcesContent":["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 { 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, 'metadatas'> {}\n\nconst SortDisplayedFields = ({ metadatas }: SortDisplayedFieldsProps) => {\n const { formatMessage } = useIntl();\n const { 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 /**\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 metadata = metadatas[name] || { label: 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 }, [metadatas, 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"],"names":["SortDisplayedFields","metadatas","formatMessage","useIntl","schema","useDoc","isDraggingSibling","setIsDraggingSibling","React","useState","lastAction","setLastAction","scrollableContainerRef","useRef","values","useForm","state","layout","addFieldRow","removeFieldRow","moveFieldRow","nonDisplayedFields","useMemo","displayedFieldNames","map","field","name","Object","entries","attributes","reduce","acc","attribute","includes","checkIfAttributeIsDisplayable","metadata","label","push","sortable","handleAddField","handleRemoveField","index","handleMoveField","dragIndex","hoverIndex","useEffect","current","scrollLeft","scrollWidth","_jsxs","Flex","alignItems","direction","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","padding","borderColor","borderStyle","borderWidth","hasRadius","Box","flex","overflow","ref","DraggableCard","onMoveField","onRemoveField","Menu","Root","Trigger","paddingLeft","paddingRight","justifyContent","endIcon","disabled","length","VisuallyHidden","Plus","aria-hidden","focusable","style","position","top","Content","Item","onSelect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SortDisplayedFields.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/SortDisplayedFields.tsx"],"sourcesContent":["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 { 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, 'metadatas'> {}\n\nconst SortDisplayedFields = ({ metadatas }: SortDisplayedFieldsProps) => {\n const { formatMessage } = useIntl();\n const { 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 /**\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 metadata = metadatas[name] || { label: 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 }, [metadatas, 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"],"names":["SortDisplayedFields","metadatas","formatMessage","useIntl","schema","useDoc","isDraggingSibling","setIsDraggingSibling","React","useState","lastAction","setLastAction","scrollableContainerRef","useRef","values","useForm","state","layout","addFieldRow","removeFieldRow","moveFieldRow","nonDisplayedFields","useMemo","displayedFieldNames","map","field","name","Object","entries","attributes","reduce","acc","attribute","includes","checkIfAttributeIsDisplayable","metadata","label","push","sortable","handleAddField","handleRemoveField","index","handleMoveField","dragIndex","hoverIndex","useEffect","current","scrollLeft","scrollWidth","_jsxs","Flex","alignItems","direction","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","padding","borderColor","borderStyle","borderWidth","hasRadius","Box","flex","overflow","ref","DraggableCard","onMoveField","onRemoveField","Menu","Root","Trigger","paddingLeft","paddingRight","justifyContent","endIcon","disabled","length","VisuallyHidden","Plus","aria-hidden","focusable","style","position","top","Content","Item","onSelect"],"mappings":"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"}
|
|
@@ -29,7 +29,8 @@ var TableActions = require('./components/TableActions.js');
|
|
|
29
29
|
var CellContent = require('./components/TableCells/CellContent.js');
|
|
30
30
|
var ViewSettingsMenu = require('./components/ViewSettingsMenu.js');
|
|
31
31
|
|
|
32
|
-
function
|
|
32
|
+
function _interopNamespace(e) {
|
|
33
|
+
if (e && e.__esModule) return e;
|
|
33
34
|
var n = Object.create(null);
|
|
34
35
|
if (e) {
|
|
35
36
|
Object.keys(e).forEach(function (k) {
|
|
@@ -46,7 +47,7 @@ function _interopNamespaceDefault(e) {
|
|
|
46
47
|
return Object.freeze(n);
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
var React__namespace = /*#__PURE__*/
|
|
50
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
50
51
|
|
|
51
52
|
const { INJECT_COLUMN_IN_TABLE } = hooks.HOOKS;
|
|
52
53
|
/* -------------------------------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListViewPage.js","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport {\n type PersistentQueryConfig,\n usePersistentPartialQueryParams,\n} from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n const { collectionType, model, schema } = useDoc();\n const { list, listViewConversionContext, isLoading: isLoadingLayout } = useDocumentLayout(model);\n\n const persistentQueryConfigs: PersistentQueryConfig = React.useMemo(\n () => ({\n [`STRAPI_LIST_VIEW_SETTINGS:${model}`]: {\n paths: ['sort', 'filters', 'pageSize'],\n scoped: true,\n },\n STRAPI_LOCALE: {\n paths: ['plugins.i18n.locale'],\n scoped: false,\n },\n }),\n [model]\n );\n const { isHydrated } = usePersistentPartialQueryParams(persistentQueryConfigs);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes ||\n !listViewConversionContext\n )\n return [];\n\n return convertListLayoutToFieldLayouts(\n displayedHeaderNames,\n schema.attributes,\n list.metadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n );\n }, [displayedHeaderNames, schema, list, listViewConversionContext]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }, setQuery] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n const hasStatusFilter = Boolean(\n (query as any)?.filters?.$and?.some((f: any) => f?.__status?.$eq != null)\n );\n\n // If a __status filter becomes active while sort=status:* is in the URL, strip the status sort.\n React.useEffect(() => {\n if (\n hasStatusFilter &&\n typeof query.sort === 'string' &&\n /(?:^|,)\\s*status:/i.test(query.sort)\n ) {\n const cleaned = query.sort\n .split(',')\n .map((s) => s.trim())\n .filter((s) => !/^status:(ASC|DESC)$/i.test(s))\n .join(',');\n setQuery({ sort: cleaned || undefined }, 'push', true);\n }\n }, [hasStatusFilter, query.sort, setQuery]);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery(\n {\n model,\n params,\n },\n { skip: isLoadingLayout || !isHydrated }\n );\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: !hasStatusFilter,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n hasStatusFilter,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoadingLayout || !isHydrated || isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema} layout={list}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","collectionType","model","schema","useDoc","list","listViewConversionContext","isLoading","isLoadingLayout","useDocumentLayout","persistentQueryConfigs","useMemo","paths","scoped","STRAPI_LOCALE","isHydrated","usePersistentPartialQueryParams","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","setQuery","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","hasStatusFilter","some","f","__status","$eq","test","cleaned","split","s","trim","join","undefined","data","error","isFetching","useGetAllDocumentsQuery","skip","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListViewPage.js","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport {\n type PersistentQueryConfig,\n usePersistentPartialQueryParams,\n} from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n const { collectionType, model, schema } = useDoc();\n const { list, listViewConversionContext, isLoading: isLoadingLayout } = useDocumentLayout(model);\n\n const persistentQueryConfigs: PersistentQueryConfig = React.useMemo(\n () => ({\n [`STRAPI_LIST_VIEW_SETTINGS:${model}`]: {\n paths: ['sort', 'filters', 'pageSize'],\n scoped: true,\n },\n STRAPI_LOCALE: {\n paths: ['plugins.i18n.locale'],\n scoped: false,\n },\n }),\n [model]\n );\n const { isHydrated } = usePersistentPartialQueryParams(persistentQueryConfigs);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes ||\n !listViewConversionContext\n )\n return [];\n\n return convertListLayoutToFieldLayouts(\n displayedHeaderNames,\n schema.attributes,\n list.metadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n );\n }, [displayedHeaderNames, schema, list, listViewConversionContext]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }, setQuery] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n const hasStatusFilter = Boolean(\n (query as any)?.filters?.$and?.some((f: any) => f?.__status?.$eq != null)\n );\n\n // If a __status filter becomes active while sort=status:* is in the URL, strip the status sort.\n React.useEffect(() => {\n if (\n hasStatusFilter &&\n typeof query.sort === 'string' &&\n /(?:^|,)\\s*status:/i.test(query.sort)\n ) {\n const cleaned = query.sort\n .split(',')\n .map((s) => s.trim())\n .filter((s) => !/^status:(ASC|DESC)$/i.test(s))\n .join(',');\n setQuery({ sort: cleaned || undefined }, 'push', true);\n }\n }, [hasStatusFilter, query.sort, setQuery]);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery(\n {\n model,\n params,\n },\n { skip: isLoadingLayout || !isHydrated }\n );\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: !hasStatusFilter,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n hasStatusFilter,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoadingLayout || !isHydrated || isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema} layout={list}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","collectionType","model","schema","useDoc","list","listViewConversionContext","isLoading","isLoadingLayout","useDocumentLayout","persistentQueryConfigs","useMemo","paths","scoped","STRAPI_LOCALE","isHydrated","usePersistentPartialQueryParams","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","setQuery","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","hasStatusFilter","some","f","__status","$eq","test","cleaned","split","s","trim","join","undefined","data","error","isFetching","useGetAllDocumentsQuery","skip","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ var translations = require('../../../../utils/translations.js');
|
|
|
15
15
|
var DocumentActions = require('../../../EditView/components/DocumentActions.js');
|
|
16
16
|
var PublishAction = require('./PublishAction.js');
|
|
17
17
|
|
|
18
|
-
function
|
|
18
|
+
function _interopNamespace(e) {
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
19
20
|
var n = Object.create(null);
|
|
20
21
|
if (e) {
|
|
21
22
|
Object.keys(e).forEach(function (k) {
|
|
@@ -32,7 +33,7 @@ function _interopNamespaceDefault(e) {
|
|
|
32
33
|
return Object.freeze(n);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
var React__namespace = /*#__PURE__*/
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
36
37
|
|
|
37
38
|
/* -------------------------------------------------------------------------------------------------
|
|
38
39
|
* BulkActionsRenderer
|