@strapi/content-manager 0.0.0-next.318e33b8c2c2d8af588acb73383750664a9336e3 → 0.0.0-next.32e19446d7ac2d8eaffa53da59f933ca5716d727
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/ComponentIcon.js +3 -0
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs +3 -0
- package/dist/admin/components/ComponentIcon.mjs.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/EditFieldForm.mjs +3 -2
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
- package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +90 -48
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +92 -50
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +22 -6
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +22 -6
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/HistoryAction.js.map +1 -1
- package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +1 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -0
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js +1 -1
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs +1 -1
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/history/pages/History.js +7 -7
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +7 -7
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/history/services/historyVersion.js.map +1 -1
- package/dist/admin/history/services/historyVersion.mjs.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +24 -5
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +24 -5
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +27 -6
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +28 -7
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +7 -3
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +8 -4
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +11 -3
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +11 -3
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +92 -27
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +94 -29
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +25 -20
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +25 -20
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +1 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +0 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +18 -31
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +19 -32
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +4 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +130 -14
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs +112 -15
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.js +0 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +18 -8
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +18 -8
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +12 -10
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +14 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/services/preview.js.map +1 -1
- package/dist/admin/preview/services/preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +34 -0
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +34 -1
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.js +107 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +134 -50
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- package/dist/admin/preview/utils/previewScript.mjs +134 -50
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
- package/dist/admin/router.js.map +1 -1
- package/dist/admin/router.mjs.map +1 -1
- package/dist/admin/services/api.js +2 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +2 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +19 -3
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +19 -3
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/components/LeftMenu.d.ts +3 -1
- package/dist/admin/src/components/Widgets.d.ts +6 -2
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
- package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
- package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
- package/dist/admin/src/preview/components/InputPopover.d.ts +1 -1
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +2 -1
- package/dist/admin/src/preview/pages/Preview.d.ts +6 -2
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +35 -0
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +1 -0
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +16 -16
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/translations/en.json.js +5 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +1 -1
- package/dist/admin/translations/fr.json.mjs +1 -1
- package/dist/admin/utils/translations.js.map +1 -1
- package/dist/admin/utils/translations.mjs.map +1 -1
- package/dist/admin/utils/urls.js.map +1 -1
- package/dist/admin/utils/urls.mjs.map +1 -1
- package/dist/admin/utils/users.js.map +1 -1
- package/dist/admin/utils/users.mjs.map +1 -1
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +2 -1
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -1
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +6 -4
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +6 -4
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +3 -1
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +3 -1
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/validation/dimensions.js.map +1 -1
- package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/controllers/validation/model-configuration.js +2 -2
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +2 -2
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/history/utils.js.map +1 -1
- package/dist/server/history/utils.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +2 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +2 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/middlewares/routing.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +8 -33
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +9 -34
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/preview/utils.js.map +1 -1
- package/dist/server/preview/utils.mjs.map +1 -1
- package/dist/server/services/configuration.js.map +1 -1
- package/dist/server/services/configuration.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +23 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +23 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/field-sizes.js.map +1 -1
- package/dist/server/services/field-sizes.mjs.map +1 -1
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/uid.mjs.map +1 -1
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/services/utils/store.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/single-types.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionsList.js","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100vh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionCard","version","isCurrent","formatDate","formatMessage","useIntl","query","useQueryParams","isActive","id","toString","author","createdBy","getDisplayName","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","fontWeight","createdAt","day","month","year","hour","minute","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","isAnonymous","Boolean","b","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsList","versions","useHistoryContext","state","shrink","width","height","background","justifyContent","Box","meta","pagination","total","flex","overflow","paddingTop","textAlign","data","map","index","li","aria-label","pageCount","paddingBottom"],"mappings":";;;;;;;;;;;;;;AAeA;;AAEkG,qGAElG,MAAMA,QAAAA,GAAW,CAACC,QAAAA,iBAChBC,cAACC,CAAAA,uBAAAA,EAAAA;QAAWC,SAAU,EAAA,YAAA;QAAaC,OAAQ,EAAA,IAAA;AACxCJ,QAAAA,QAAAA,EAAAA;;AAaL,MAAMK,cAAc,CAAC,EAAEC,OAAO,EAAEC,SAAS,EAAoB,GAAA;AAC3D,IAAA,MAAM,EAAEC,UAAU,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AACtC,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,WAAWF,KAAMG,CAAAA,EAAE,KAAKR,OAAQQ,CAAAA,EAAE,CAACC,QAAQ,EAAA;AACjD,IAAA,MAAMC,SAASV,OAAQW,CAAAA,SAAS,IAAIC,oBAAAA,CAAeZ,QAAQW,SAAS,CAAA;AAEpE,IAAA,qBACEE,eAACC,CAAAA,iBAAAA,EAAAA;QACCC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,YAAA;QACXC,GAAK,EAAA,CAAA;QACLC,SAAS,EAAA,IAAA;QACTC,WAAY,EAAA,KAAA;QACZC,WAAY,EAAA,OAAA;AACZC,QAAAA,WAAAA,EAAad,WAAW,YAAe,GAAA,YAAA;QACvCe,KAAM,EAAA,YAAA;QACNC,OAAS,EAAA,CAAA;QACTC,GAAKC,EAAAA,mBAAAA;QACLC,EAAI,EAAA,CAAC,CAAC,EAAEC,YAAU,CAAA;AAAE,YAAA,GAAGtB,KAAK;AAAEG,YAAAA,EAAAA,EAAIR,QAAQQ;AAAG,SAAA,CAAA,CAAG,CAAC;QACjDoB,KAAO,EAAA;YAAEC,cAAgB,EAAA;AAAO,SAAA;;0BAEhChB,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASE,GAAK,EAAA,CAAA;gBAAGD,UAAW,EAAA,YAAA;;kCAC1CrB,cAACC,CAAAA,uBAAAA,EAAAA;wBAAW4B,GAAI,EAAA,IAAA;wBAAKM,UAAW,EAAA,UAAA;kCAC7B5B,UAAWF,CAAAA,OAAAA,CAAQ+B,SAAS,EAAE;4BAC7BC,GAAK,EAAA,SAAA;4BACLC,KAAO,EAAA,SAAA;4BACPC,IAAM,EAAA,SAAA;4BACNC,IAAM,EAAA,SAAA;4BACNC,MAAQ,EAAA;AACV,yBAAA;;kCAEFzC,cAACC,CAAAA,uBAAAA,EAAAA;wBAAW4B,GAAI,EAAA,GAAA;wBAAI1B,OAAQ,EAAA,IAAA;wBAAKD,SAAU,EAAA,YAAA;kCACxCM,aACC,CAAA;4BACEK,EAAI,EAAA,oDAAA;4BACJ6B,cACE,EAAA;yBAEJ,EAAA;AACEC,4BAAAA,aAAAA,gBAAe3C,cAAC4C,CAAAA,yBAAAA,EAAAA;gCAAaC,SAAW,EAAA,IAAIC,IAAKzC,CAAAA,OAAAA,CAAQ+B,SAAS;;AAClErB,4BAAAA,MAAAA;4BACAgC,WAAa,EAAA,CAACC,OAAQ3C,CAAAA,OAAAA,CAAQW,SAAS,CAAA;AACvCV,4BAAAA,SAAAA;4BACA2C,CAAGnD,EAAAA;AACL,yBAAA;;;;YAILO,OAAQ6C,CAAAA,MAAM,kBAAIlD,cAACmD,CAAAA,6BAAAA,EAAAA;AAAeD,gBAAAA,MAAAA,EAAQ7C,QAAQ6C,MAAM;gBAAEE,IAAK,EAAA;;;;AAGtE,CAAA;AAWA,MAAMC,mBAAmB,CAAC,EAAEC,IAAI,EAAEvD,QAAQ,EAAyB,GAAA;AACjE,IAAA,MAAM,CAAC,EAAEW,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;;;AAIpB,IAAA,MAAM,EAAEE,EAAI0C,EAAAA,GAAG,EAAE,GAAGC,WAAW,GAAG9C,KAAAA;AAElC,IAAA,qBACEV,cAAC8B,CAAAA,mBAAAA,EAAAA;QAAKC,EAAI,EAAA;AAAE0B,YAAAA,MAAAA,EAAQzB,YAAU,CAAA;AAAE,gBAAA,GAAGwB,SAAS;AAAEF,gBAAAA;AAAK,aAAA;AAAG,SAAA;QAAGrB,KAAO,EAAA;YAAEC,cAAgB,EAAA;AAAO,SAAA;AACvF,QAAA,QAAA,gBAAAlC,cAACC,CAAAA,uBAAAA,EAAAA;YAAWE,OAAQ,EAAA,OAAA;YAAQD,SAAU,EAAA,YAAA;AACnCH,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAEA;;AAEkG,2GAE5F2D,YAAe,GAAA,IAAA;IACnB,MAAM,EAAElD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEkD,QAAQ,EAAEL,IAAI,EAAE,GAAGM,yBAAkB,CAAA,cAAA,EAAgB,CAACC,KAAAA,IAAW;AACvEF,YAAAA,QAAAA,EAAUE,MAAMF,QAAQ;AACxBL,YAAAA,IAAAA,EAAMO,MAAMP;SACd,CAAA,CAAA;AAEA,IAAA,qBACEpC,eAACC,CAAAA,iBAAAA,EAAAA;QACC2C,MAAQ,EAAA,CAAA;QACR1C,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,SAAA;QACX0C,KAAM,EAAA,OAAA;QACNC,MAAO,EAAA,OAAA;QACPC,UAAW,EAAA,UAAA;QACXvC,WAAY,EAAA,YAAA;QACZF,WAAY,EAAA,WAAA;QACZC,WAAY,EAAA,OAAA;QACZI,GAAI,EAAA,OAAA;;0BAEJX,eAACC,CAAAA,iBAAAA,EAAAA;gBACCC,SAAU,EAAA,KAAA;gBACV8C,cAAe,EAAA,eAAA;gBACftC,OAAS,EAAA,CAAA;gBACTF,WAAY,EAAA,YAAA;gBACZF,WAAY,EAAA,SAAA;gBACZC,WAAY,EAAA,OAAA;gBACZI,GAAI,EAAA,QAAA;;kCAEJ7B,cAACC,CAAAA,uBAAAA,EAAAA;wBAAW4B,GAAI,EAAA,IAAA;wBAAK1B,OAAQ,EAAA,OAAA;wBAAQgC,UAAW,EAAA,UAAA;kCAC7C3B,aAAc,CAAA;4BACbK,EAAI,EAAA,uCAAA;4BACJ6B,cAAgB,EAAA;AAClB,yBAAA;;kCAEF1C,cAACmE,CAAAA,gBAAAA,EAAAA;wBAAIF,UAAW,EAAA,YAAA;wBAAa1C,SAAS,EAAA,IAAA;wBAACK,OAAS,EAAA,CAAA;AAC9C,wBAAA,QAAA,gBAAA5B,cAACC,CAAAA,uBAAAA,EAAAA;4BAAWE,OAAQ,EAAA,OAAA;4BAAQD,SAAU,EAAA,YAAA;AACnCyD,4BAAAA,QAAAA,EAAAA,QAAAA,CAASS,IAAI,CAACC,UAAU,CAACC;;;;;0BAIhCpD,eAACiD,CAAAA,gBAAAA,EAAAA;gBAAII,IAAM,EAAA,CAAA;gBAAGC,QAAS,EAAA,MAAA;;AACpBb,oBAAAA,QAAAA,CAASS,IAAI,CAACC,UAAU,CAACf,IAAI,GAAG,mBAC/BtD,cAACmE,CAAAA,gBAAAA,EAAAA;wBAAIM,UAAY,EAAA,CAAA;wBAAGC,SAAU,EAAA,QAAA;AAC5B,wBAAA,QAAA,gBAAA1E,cAACqD,CAAAA,gBAAAA,EAAAA;AAAiBC,4BAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;sCAC5B9C,aAAc,CAAA;gCACbK,EAAI,EAAA,4CAAA;gCACJ6B,cAAgB,EAAA;AAClB,6BAAA;;;kCAIN1C,cAACmB,CAAAA,iBAAAA,EAAAA;wBAAKC,SAAU,EAAA,QAAA;wBAASE,GAAK,EAAA,CAAA;wBAAGM,OAAS,EAAA,CAAA;wBAAGC,GAAI,EAAA,IAAA;wBAAKR,UAAW,EAAA,SAAA;AAC9DsC,wBAAAA,QAAAA,EAAAA,QAAAA,CAASgB,IAAI,CAACC,GAAG,CAAC,CAACvE,OAAAA,EAASwE,sBAC3B7E,cAAC8E,CAAAA,IAAAA,EAAAA;AAECC,gCAAAA,YAAAA,EAAYvE,aAAc,CAAA;oCACxBK,EAAI,EAAA,+DAAA;oCACJ6B,cAAgB,EAAA;AAClB,iCAAA,CAAA;AAEA,gCAAA,QAAA,gBAAA1C,cAACI,CAAAA,WAAAA,EAAAA;oCAAYC,OAASA,EAAAA,OAAAA;oCAASC,SAAWgD,EAAAA,IAAAA,KAAS,KAAKuB,KAAU,KAAA;;AAN7DxE,6BAAAA,EAAAA,OAAAA,CAAQQ,EAAE,CAAA;;AAUpB8C,oBAAAA,QAAAA,CAASS,IAAI,CAACC,UAAU,CAACf,IAAI,GAAGK,QAASS,CAAAA,IAAI,CAACC,UAAU,CAACW,SAAS,kBACjEhF,cAACmE,CAAAA,gBAAAA,EAAAA;wBAAIc,aAAe,EAAA,CAAA;wBAAGP,SAAU,EAAA,QAAA;AAC/B,wBAAA,QAAA,gBAAA1E,cAACqD,CAAAA,gBAAAA,EAAAA;AAAiBC,4BAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;sCAC5B9C,aAAc,CAAA;gCACbK,EAAI,EAAA,4CAAA;gCACJ6B,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAOd;;;;"}
|
|
1
|
+
{"version":3,"file":"VersionsList.js","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100dvh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionCard","version","isCurrent","formatDate","formatMessage","useIntl","query","useQueryParams","isActive","id","toString","author","createdBy","getDisplayName","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","fontWeight","createdAt","day","month","year","hour","minute","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","isAnonymous","Boolean","b","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsList","versions","useHistoryContext","state","shrink","width","height","background","justifyContent","Box","meta","pagination","total","flex","overflow","paddingTop","textAlign","data","map","index","li","aria-label","pageCount","paddingBottom"],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ const PaginationButton = ({ page, children })=>{
|
|
|
118
118
|
direction: "column",
|
|
119
119
|
alignItems: "stretch",
|
|
120
120
|
width: "320px",
|
|
121
|
-
height: "
|
|
121
|
+
height: "100dvh",
|
|
122
122
|
background: "neutral0",
|
|
123
123
|
borderColor: "neutral200",
|
|
124
124
|
borderWidth: "0 0 0 1px",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionsList.mjs","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100vh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionCard","version","isCurrent","formatDate","formatMessage","useIntl","query","useQueryParams","isActive","id","toString","author","createdBy","getDisplayName","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","fontWeight","createdAt","day","month","year","hour","minute","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","isAnonymous","Boolean","b","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsList","versions","useHistoryContext","state","shrink","width","height","background","justifyContent","Box","meta","pagination","total","flex","overflow","paddingTop","textAlign","data","map","index","li","aria-label","pageCount","paddingBottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionsList.mjs","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100dvh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionCard","version","isCurrent","formatDate","formatMessage","useIntl","query","useQueryParams","isActive","id","toString","author","createdBy","getDisplayName","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","fontWeight","createdAt","day","month","year","hour","minute","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","isAnonymous","Boolean","b","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsList","versions","useHistoryContext","state","shrink","width","height","background","justifyContent","Box","meta","pagination","total","flex","overflow","paddingTop","textAlign","data","map","index","li","aria-label","pageCount","paddingBottom"],"mappings":"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"}
|
|
@@ -147,7 +147,7 @@ const [HistoryProvider, useHistoryContext] = strapiAdmin.createContext('HistoryP
|
|
|
147
147
|
children: [
|
|
148
148
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
|
|
149
149
|
grow: 1,
|
|
150
|
-
height: "
|
|
150
|
+
height: "100dvh",
|
|
151
151
|
background: "neutral100",
|
|
152
152
|
paddingBottom: 6,
|
|
153
153
|
overflow: "auto",
|
|
@@ -179,23 +179,23 @@ const [HistoryProvider, useHistoryContext] = strapiAdmin.createContext('HistoryP
|
|
|
179
179
|
}
|
|
180
180
|
if (error || !slug) {
|
|
181
181
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
182
|
-
height: "
|
|
183
|
-
width: "
|
|
182
|
+
height: "100dvh",
|
|
183
|
+
width: "100dvw",
|
|
184
184
|
position: "fixed",
|
|
185
185
|
top: 0,
|
|
186
186
|
left: 0,
|
|
187
|
-
zIndex:
|
|
187
|
+
zIndex: 4,
|
|
188
188
|
background: "neutral0",
|
|
189
189
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {})
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
192
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
193
|
-
height: "
|
|
194
|
-
width: "
|
|
193
|
+
height: "100dvh",
|
|
194
|
+
width: "100dvw",
|
|
195
195
|
position: "fixed",
|
|
196
196
|
top: 0,
|
|
197
197
|
left: 0,
|
|
198
|
-
zIndex:
|
|
198
|
+
zIndex: 4,
|
|
199
199
|
background: "neutral0",
|
|
200
200
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Protect, {
|
|
201
201
|
permissions: permissions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"History.js","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100dvh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,MAAM,CAACA,eAAAA,EAAiBC,iBAAkB,CAAA,GAAGC,yBAAmC,CAAA,aAAA;AAEhF;;AAEkG,qGAElG,MAAMC,WAAc,GAAA,IAAA;IAClB,MAAMC,QAAAA,GAAWC,iBAAMC,KAAK,EAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EACJC,IAAI,EACJC,EAAAA,EAAIC,UAAU,EACdC,cAAc,EACf,GAAGC,wBAAAA,EAAAA;AAMJ,IAAA,MAAM,EAAEC,SAAWC,EAAAA,iBAAiB,EAAEC,MAAM,EAAE,GAAGC,uBAAY,CAAA;QAC3DL,cAAgBA,EAAAA,cAAAA;QAChBM,KAAOT,EAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAM,EACJK,SAAWK,EAAAA,eAAe,EAC1BC,IAAAA,EAAM,EACJC,MAAM,EACNC,QAAU,EAAA,EAAEC,WAAW,EAAEC,SAAS,EAAE,EACrC,EACF,GAAGC,mCAAkBhB,CAAAA,IAAAA,CAAAA;IACtB,MAAM,EAAEiB,MAAMC,aAAa,EAAEb,WAAWc,sBAAsB,EAAE,GAC9DC,gDAAoCpB,CAAAA,IAAAA,CAAAA;;AAGtC,IAAA,MAAM,CAAC,EAAEqB,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAKpB,IAAA,MAAM,EAAErB,EAAIsB,EAAAA,iBAAiB,EAAE,GAAGC,gBAAgB,GAAGH,KAAAA;AACrD,IAAA,MAAMI,4BAA4BC,oBAAiBF,CAAAA,cAAAA,CAAAA;AACnD,IAAA,MAAMG,OAAOF,yBAA0BE,CAAAA,IAAI,GAAGC,MAAOH,CAAAA,yBAAAA,CAA0BE,IAAI,CAAI,GAAA,CAAA;AAEvF,IAAA,MAAME,mBAAmBC,yCACvB,CAAA;QACEC,WAAa/B,EAAAA,IAAAA;AACb,QAAA,GAAIE,UAAa,GAAA;AAAEA,YAAAA;AAAW,SAAA,GAAI,EAAE;;AAEpC,QAAA,GAAGuB;KAEL,EAAA;QAAEO,yBAA2B,EAAA;AAAK,KAAA,CAAA;AAGpC;;;;;;;;;AASC,MACD,MAAMC,gBAAmBrC,GAAAA,gBAAAA,CAAMsC,MAAM,CAACL,iBAAiBM,SAAS,CAAA;AAChE,IAAA,MAAMC,cAAiBP,GAAAA,gBAAAA,CAAiBM,SAAS,KAAKF,iBAAiBI,OAAO;AAE9E;;;;AAIC,MACD,IAAI,CAACrC,IAAAA,IAASG,cAAmBmC,KAAAA,4BAAAA,IAAoB,CAACpC,UAAa,EAAA;AACjE,QAAA,qBAAOqC,cAACC,CAAAA,uBAAAA,EAAAA;YAASC,EAAG,EAAA;;AACtB;AAEA,IAAA,IACEnC,qBACAI,eACAmB,IAAAA,gBAAAA,CAAiBa,UAAU,IAC3BN,kBACAjB,sBACA,EAAA;QACA,qBAAOoB,cAAA,CAACI,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;;IAGA,IAAI,CAACf,iBAAiBgB,OAAO,IAAI,CAAChB,gBAAiBZ,CAAAA,IAAI,EAAEA,IAAAA,EAAM6B,MAAQ,EAAA;QACrE,qBACEP,cAAA,CAAAQ,mBAAA,EAAA;oCACER,cAAA,CAACI,iBAAKK,MAAM,EAAA;AACVC,gBAAAA,MAAAA,gBACEV,cAACW,CAAAA,iBAAAA,EAAAA;oBACCC,GAAKC,EAAAA,sBAAAA;AACLX,oBAAAA,EAAAA,EAAI,CAAC,iBAAiB,EAAEtC,cAAAA,CAAe,CAAC,EAAEH,IAAOE,CAAAA,EAAAA,UAAAA,GAAa,CAAC,CAAC,EAAEA,UAAAA,CAAAA,CAAY,GAAG,EAAI,CAAA,CAAA;8BAEpFJ,aAAc,CAAA;wBACbG,EAAI,EAAA,aAAA;wBACJoD,cAAgB,EAAA;AAClB,qBAAA;;;;AAMZ;;AAGA,IAAA,IAAIxB,iBAAiBZ,IAAI,EAAEA,IAAM6B,EAAAA,MAAAA,IAAU,CAACvB,iBAAmB,EAAA;AAC7D,QAAA,qBACEgB,cAACC,CAAAA,uBAAAA,EAAAA;YACCC,EAAI,EAAA;AAAEa,gBAAAA,MAAAA,EAAQC,YAAU,CAAA;AAAE,oBAAA,GAAGlC,KAAK;AAAEpB,oBAAAA,EAAAA,EAAI4B,iBAAiBZ,IAAI,CAACA,IAAI,CAAC,CAAA,CAAE,CAAChB;AAAG,iBAAA;AAAG,aAAA;YAC5EuD,OAAO,EAAA;;AAGb;AAEA,IAAA,MAAMC,eAAkB5B,GAAAA,gBAAAA,CAAiBZ,IAAI,EAAEA,IAAMyC,EAAAA,IAAAA,CACnD,CAACC,OAAAA,GAAYA,OAAQ1D,CAAAA,EAAE,CAAC2D,QAAQ,EAAOrC,KAAAA,iBAAAA,CAAAA;IAEzC,IACEM,gBAAAA,CAAiBgB,OAAO,IACxB,CAACjC,MAAAA,IACD,CAACL,MAAAA,IACD,CAACkD,eAAAA,IACD,CAACvC,aAAAA;IAEDW,gBAAiBZ,CAAAA,IAAI,CAAC4C,KAAK,EAC3B;QACA,qBAAOtB,cAAA,CAACI,iBAAKmB,KAAK,EAAA,EAAA,CAAA;AACpB;IAEA,qBACEC,eAAA,CAAAhB,mBAAA,EAAA;;AACE,0BAAAR,cAAA,CAACI,iBAAKqB,KAAK,EAAA;0BACRlE,aACC,CAAA;oBACEG,EAAI,EAAA,oCAAA;oBACJoD,cAAgB,EAAA;iBAElB,EAAA;oBACEtB,WAAajB,EAAAA;AACf,iBAAA;;0BAGJyB,cAAChD,CAAAA,eAAAA,EAAAA;gBACCwC,WAAa/B,EAAAA,IAAAA;gBACbC,EAAIC,EAAAA,UAAAA;gBACJK,MAAQA,EAAAA,MAAAA;gBACRK,MAAQA,EAAAA,MAAAA;gBACRM,aAAeA,EAAAA,aAAAA;gBACfuC,eAAiBA,EAAAA,eAAAA;AACjBQ,gBAAAA,QAAAA,EAAUpC,iBAAiBZ,IAAI;gBAC/BU,IAAMA,EAAAA,IAAAA;gBACNZ,SAAWA,EAAAA,SAAAA;AAEX,gBAAA,QAAA,gBAAAgD,eAACG,CAAAA,iBAAAA,EAAAA;oBAAKC,SAAU,EAAA,KAAA;oBAAMC,UAAW,EAAA,YAAA;;sCAC/BL,eAACM,CAAAA,iBAAAA,EAAAA;4BACCC,IAAM,EAAA,CAAA;4BACNC,MAAO,EAAA,QAAA;4BACPC,UAAW,EAAA,YAAA;4BACXC,aAAe,EAAA,CAAA;4BACfC,QAAS,EAAA,MAAA;4BACTC,UAAYhF,EAAAA,QAAAA;;8CAEZ4C,cAACqC,CAAAA,2BAAAA,EAAAA;oCAAcjF,QAAUA,EAAAA;;8CAEzB4C,cAACsC,CAAAA,6BAAAA,EAAAA,EAAAA;;;sCAEHtC,cAACuC,CAAAA,yBAAAA,EAAAA,EAAAA;;;;;;AAKX,CAAA;AAEA;;AAEkG,qGAElG,MAAMC,wBAA2B,GAAA,IAAA;IAC/B,MAAM,EAAE/E,IAAI,EAAE,GAAGI,wBAAAA,EAAAA;AAGjB,IAAA,MAAM,EACJ4E,WAAAA,GAAc,EAAE,EAChB3E,SAAS,EACTwD,KAAK,EACN,GAAGoB,oBAAQC,kBAAYC,CAAAA,GAAG,CAAC,CAAClC,UAAY;AAAEA,YAAAA,MAAAA;YAAQmC,OAASpF,EAAAA;SAAK,CAAA,CAAA,CAAA;AAEjE,IAAA,IAAIK,SAAW,EAAA;QACb,qBAAOkC,cAAA,CAACI,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,IAAIiB,KAAAA,IAAS,CAAC7D,IAAM,EAAA;AAClB,QAAA,qBACEuC,cAAC8C,CAAAA,gBAAAA,EAAAA;YACCd,MAAO,EAAA,QAAA;YACPe,KAAM,EAAA,QAAA;YACNC,QAAS,EAAA,OAAA;YACTC,GAAK,EAAA,CAAA;YACLC,IAAM,EAAA,CAAA;YACNC,MAAQ,EAAA,CAAA;YACRlB,UAAW,EAAA,UAAA;oCAEXjC,cAAA,CAACI,iBAAKmB,KAAK,EAAA,EAAA;;AAGjB;AAEA,IAAA,qBACEvB,cAAC8C,CAAAA,gBAAAA,EAAAA;QACCd,MAAO,EAAA,QAAA;QACPe,KAAM,EAAA,QAAA;QACNC,QAAS,EAAA,OAAA;QACTC,GAAK,EAAA,CAAA;QACLC,IAAM,EAAA,CAAA;QACNC,MAAQ,EAAA,CAAA;QACRlB,UAAW,EAAA,UAAA;gCAEXjC,cAAA,CAACI,iBAAKgD,OAAO,EAAA;YAACX,WAAaA,EAAAA,WAAAA;AACxB,YAAA,QAAA,EAAA,CAAC,EAAEA,WAAW,EAAE,iBACfzC,cAACqD,CAAAA,yBAAAA,EAAAA;oBAAaZ,WAAaA,EAAAA,WAAAA;AACzB,oBAAA,QAAA,gBAAAzC,cAAC7C,CAAAA,WAAAA,EAAAA,EAAAA;;;;AAMb,CAAA;AAEA,MAAMmG,oBAAuB,GAAA,IAAA;AAC3B,IAAA,qBACEtD,cAACuD,CAAAA,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAvD,cAACwD,CAAAA,sBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAxD,cAACwC,CAAAA,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;;;"}
|
|
@@ -126,7 +126,7 @@ const [HistoryProvider, useHistoryContext] = createContext('HistoryPage');
|
|
|
126
126
|
children: [
|
|
127
127
|
/*#__PURE__*/ jsxs(Main, {
|
|
128
128
|
grow: 1,
|
|
129
|
-
height: "
|
|
129
|
+
height: "100dvh",
|
|
130
130
|
background: "neutral100",
|
|
131
131
|
paddingBottom: 6,
|
|
132
132
|
overflow: "auto",
|
|
@@ -158,23 +158,23 @@ const [HistoryProvider, useHistoryContext] = createContext('HistoryPage');
|
|
|
158
158
|
}
|
|
159
159
|
if (error || !slug) {
|
|
160
160
|
return /*#__PURE__*/ jsx(Box, {
|
|
161
|
-
height: "
|
|
162
|
-
width: "
|
|
161
|
+
height: "100dvh",
|
|
162
|
+
width: "100dvw",
|
|
163
163
|
position: "fixed",
|
|
164
164
|
top: 0,
|
|
165
165
|
left: 0,
|
|
166
|
-
zIndex:
|
|
166
|
+
zIndex: 4,
|
|
167
167
|
background: "neutral0",
|
|
168
168
|
children: /*#__PURE__*/ jsx(Page.Error, {})
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
return /*#__PURE__*/ jsx(Box, {
|
|
172
|
-
height: "
|
|
173
|
-
width: "
|
|
172
|
+
height: "100dvh",
|
|
173
|
+
width: "100dvw",
|
|
174
174
|
position: "fixed",
|
|
175
175
|
top: 0,
|
|
176
176
|
left: 0,
|
|
177
|
-
zIndex:
|
|
177
|
+
zIndex: 4,
|
|
178
178
|
background: "neutral0",
|
|
179
179
|
children: /*#__PURE__*/ jsx(Page.Protect, {
|
|
180
180
|
permissions: permissions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.mjs","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"History.mjs","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100dvh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyVersion.js","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;;;AAcA,MAAMA,kBAAAA,GAAqBC,qBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;
|
|
1
|
+
{"version":3,"file":"historyVersion.js","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;;;AAcA,MAAMA,kBAAAA,GAAqBC,qBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;4BACNC,EACEF,EAAAA,cAAAA,KAAmBG,4BACf,GAAA,CAAA,EAAGjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyVersion.mjs","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;AAcA,MAAMA,kBAAAA,GAAqBC,iBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;
|
|
1
|
+
{"version":3,"file":"historyVersion.mjs","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;AAcA,MAAMA,kBAAAA,GAAqBC,iBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;4BACNC,EACEF,EAAAA,cAAAA,KAAmBG,gBACf,GAAA,CAAA,EAAGjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentManagerInitData.js","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContentManagerInitData.js","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
|