@strapi/content-manager 5.37.1 → 5.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ActionsDrawer.js.map +1 -1
- package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +62 -30
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
- package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
- package/dist/admin/components/DragLayer.js.map +1 -1
- package/dist/admin/components/DragLayer.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
- package/dist/admin/components/FieldTypeIcon.js.map +1 -1
- package/dist/admin/components/FieldTypeIcon.mjs +1 -1
- package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
- package/dist/admin/components/InjectionZone.js.map +1 -1
- package/dist/admin/components/InjectionZone.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js.map +1 -1
- 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.map +1 -1
- package/dist/admin/components/Widgets.mjs +1 -1
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/constants/attributes.js.map +1 -1
- package/dist/admin/constants/attributes.mjs.map +1 -1
- package/dist/admin/constants/collections.js.map +1 -1
- package/dist/admin/constants/collections.mjs.map +1 -1
- package/dist/admin/constants/dragAndDrop.js.map +1 -1
- package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
- package/dist/admin/constants/hooks.js.map +1 -1
- package/dist/admin/constants/hooks.mjs.map +1 -1
- package/dist/admin/constants/plugin.js.map +1 -1
- package/dist/admin/constants/plugin.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/features/DocumentRBAC.js.map +1 -1
- package/dist/admin/features/DocumentRBAC.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/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -1
- 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 +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/history/index.js.map +1 -1
- package/dist/admin/history/index.mjs.map +1 -1
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +1 -1
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/history/routes.js.map +1 -1
- package/dist/admin/history/routes.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/useContentTypeSchema.js.map +1 -1
- package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
- package/dist/admin/hooks/useDebounce.js.map +1 -1
- package/dist/admin/hooks/useDebounce.mjs.map +1 -1
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocument.mjs +1 -1
- package/dist/admin/hooks/useDocument.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js +2 -1
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
- package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
- package/dist/admin/hooks/useDragAndDrop.js +1 -3
- package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
- package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
- package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
- package/dist/admin/hooks/useLazyComponents.js.map +1 -1
- package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
- package/dist/admin/hooks/useOnce.js.map +1 -1
- package/dist/admin/hooks/useOnce.mjs.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
- package/dist/admin/hooks/usePrev.js.map +1 -1
- package/dist/admin/hooks/usePrev.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.map +1 -1
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/modules/app.js.map +1 -1
- package/dist/admin/modules/app.mjs.map +1 -1
- package/dist/admin/modules/hooks.js.map +1 -1
- package/dist/admin/modules/hooks.mjs +1 -1
- package/dist/admin/modules/hooks.mjs.map +1 -1
- package/dist/admin/modules/reducers.js.map +1 -1
- package/dist/admin/modules/reducers.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
- package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
- package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
- 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/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.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 +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/Heading.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.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/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.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 +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.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
- 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 +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.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.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.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/NotAllowed.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +46 -9
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -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.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.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/WysiwygFooter.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.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/continueList.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
- 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 +8 -6
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +2 -2
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
- package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
- 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 +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.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/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
- 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.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -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.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
- package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +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.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/pages/NoContentTypePage.js.map +1 -1
- package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
- package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
- package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
- package/dist/admin/preview/index.js.map +1 -1
- package/dist/admin/preview/index.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/routes.js.map +1 -1
- package/dist/admin/preview/routes.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 +0 -1
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +0 -1
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
- package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
- package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- 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.map +1 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/components.js.map +1 -1
- package/dist/admin/services/components.mjs.map +1 -1
- package/dist/admin/services/contentTypes.js.map +1 -1
- package/dist/admin/services/contentTypes.mjs.map +1 -1
- package/dist/admin/services/documents.js.map +1 -1
- 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/init.js.map +1 -1
- package/dist/admin/services/init.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/services/uid.js.map +1 -1
- package/dist/admin/services/uid.mjs.map +1 -1
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
- 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 +72 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +72 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/attributes.js.map +1 -1
- package/dist/admin/utils/attributes.mjs.map +1 -1
- package/dist/admin/utils/objects.js.map +1 -1
- package/dist/admin/utils/objects.mjs.map +1 -1
- package/dist/admin/utils/relations.js.map +1 -1
- package/dist/admin/utils/relations.mjs.map +1 -1
- package/dist/admin/utils/strings.js.map +1 -1
- package/dist/admin/utils/strings.mjs.map +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/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/constants/index.js.map +1 -1
- package/dist/server/constants/index.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +1 -1
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/components.js.map +1 -1
- package/dist/server/controllers/components.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +10 -10
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js +4 -4
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/init.js.map +1 -1
- package/dist/server/controllers/init.mjs.map +1 -1
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +3 -3
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +1 -1
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/uid.js.map +1 -1
- package/dist/server/controllers/uid.mjs +1 -1
- package/dist/server/controllers/uid.mjs.map +1 -1
- package/dist/server/controllers/utils/clone.js.map +1 -1
- package/dist/server/controllers/utils/clone.mjs.map +1 -1
- package/dist/server/controllers/utils/document-status.js.map +1 -1
- package/dist/server/controllers/utils/document-status.mjs.map +1 -1
- package/dist/server/controllers/utils/metadata.js.map +1 -1
- package/dist/server/controllers/utils/metadata.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 +1 -1
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/controllers/validation/model-configuration.js +6 -1
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +6 -1
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/destroy.js.map +1 -1
- package/dist/server/destroy.mjs.map +1 -1
- package/dist/server/history/constants.js.map +1 -1
- package/dist/server/history/constants.mjs.map +1 -1
- package/dist/server/history/controllers/history-version.js.map +1 -1
- package/dist/server/history/controllers/history-version.mjs.map +1 -1
- package/dist/server/history/controllers/index.js.map +1 -1
- package/dist/server/history/controllers/index.mjs.map +1 -1
- package/dist/server/history/controllers/validation/history-version.js.map +1 -1
- package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
- package/dist/server/history/index.js +4 -4
- package/dist/server/history/index.js.map +1 -1
- package/dist/server/history/index.mjs.map +1 -1
- package/dist/server/history/models/history-version.js.map +1 -1
- package/dist/server/history/models/history-version.mjs.map +1 -1
- package/dist/server/history/routes/history-version.js.map +1 -1
- package/dist/server/history/routes/history-version.mjs.map +1 -1
- package/dist/server/history/routes/index.js.map +1 -1
- package/dist/server/history/routes/index.mjs.map +1 -1
- package/dist/server/history/services/history.js.map +1 -1
- package/dist/server/history/services/history.mjs.map +1 -1
- package/dist/server/history/services/index.js.map +1 -1
- package/dist/server/history/services/index.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/history/services/utils.js.map +1 -1
- package/dist/server/history/services/utils.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/controllers/homepage.js.map +1 -1
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
- package/dist/server/homepage/controllers/index.js.map +1 -1
- package/dist/server/homepage/controllers/index.mjs.map +1 -1
- package/dist/server/homepage/index.js +6 -6
- package/dist/server/homepage/index.js.map +1 -1
- package/dist/server/homepage/index.mjs.map +1 -1
- package/dist/server/homepage/routes/homepage.js.map +1 -1
- package/dist/server/homepage/routes/homepage.mjs.map +1 -1
- package/dist/server/homepage/routes/index.js.map +1 -1
- package/dist/server/homepage/routes/index.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/homepage/services/index.js.map +1 -1
- package/dist/server/homepage/services/index.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/middlewares/routing.mjs.map +1 -1
- package/dist/server/policies/hasPermissions.js.map +1 -1
- package/dist/server/policies/hasPermissions.mjs.map +1 -1
- package/dist/server/policies/index.js.map +1 -1
- package/dist/server/policies/index.mjs.map +1 -1
- package/dist/server/preview/controllers/index.js.map +1 -1
- package/dist/server/preview/controllers/index.mjs.map +1 -1
- package/dist/server/preview/controllers/preview.js.map +1 -1
- package/dist/server/preview/controllers/preview.mjs.map +1 -1
- package/dist/server/preview/controllers/validation/preview.js.map +1 -1
- package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
- package/dist/server/preview/index.js +4 -4
- package/dist/server/preview/index.js.map +1 -1
- package/dist/server/preview/index.mjs.map +1 -1
- package/dist/server/preview/routes/index.js.map +1 -1
- package/dist/server/preview/routes/index.mjs.map +1 -1
- package/dist/server/preview/routes/preview.js.map +1 -1
- package/dist/server/preview/routes/preview.mjs.map +1 -1
- package/dist/server/preview/services/index.js.map +1 -1
- package/dist/server/preview/services/index.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +1 -1
- 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/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/index.js +4 -4
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.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/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/data-mapper.js.map +1 -1
- package/dist/server/services/data-mapper.mjs.map +1 -1
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +2 -2
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +2 -2
- 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/index.js +4 -4
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/services/permission-checker.js.map +1 -1
- package/dist/server/services/permission-checker.mjs.map +1 -1
- package/dist/server/services/permission.js.map +1 -1
- package/dist/server/services/permission.mjs.map +1 -1
- package/dist/server/services/populate-builder.js.map +1 -1
- package/dist/server/services/populate-builder.mjs +4 -4
- package/dist/server/services/populate-builder.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/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/services/utils/configuration/index.js.map +1 -1
- package/dist/server/services/utils/configuration/index.mjs +3 -3
- package/dist/server/services/utils/configuration/index.mjs.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
- package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
- package/dist/server/services/utils/configuration/settings.js +4 -2
- package/dist/server/services/utils/configuration/settings.js.map +1 -1
- package/dist/server/services/utils/configuration/settings.mjs +5 -3
- package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +1 -1
- package/dist/server/services/utils/populate.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/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/validation/policies/hasPermissions.js.map +1 -1
- package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
- package/dist/shared/contracts/content-types.d.ts +2 -0
- package/dist/shared/contracts/content-types.d.ts.map +1 -1
- package/dist/shared/contracts/relations.d.ts +1 -1
- package/dist/shared/contracts/relations.d.ts.map +1 -1
- package/package.json +7 -7
package/dist/admin/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { CheckCircle, Feather, Pencil, PuzzlePiece } from '@strapi/icons';\n\nimport { PLUGIN_ID } from './constants/plugin';\nimport { ContentManagerPlugin } from './content-manager';\nimport { historyAdmin } from './history';\nimport { reducer } from './modules/reducers';\nimport { previewAdmin } from './preview';\nimport { routes } from './router';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { WidgetArgs } from '@strapi/admin/strapi-admin';\n\n// NOTE: we have to preload it to ensure chunks will have it available as global\nimport 'prismjs';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n const cm = new ContentManagerPlugin();\n\n app.addReducers({\n [PLUGIN_ID]: reducer,\n });\n\n app.addMenuLink({\n to: PLUGIN_ID,\n icon: Feather,\n intlLabel: {\n id: `content-manager.plugin.name`,\n defaultMessage: 'Content Manager',\n },\n permissions: [],\n position: 1,\n });\n\n app.router.addRoute({\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: routes,\n });\n\n app.registerPlugin(cm.config);\n\n app.widgets.register((widgets: WidgetArgs[]) => {\n const lastEditedWidget: WidgetArgs = {\n icon: Pencil,\n title: {\n id: `${PLUGIN_ID}.widget.last-edited.title`,\n defaultMessage: 'Last edited entries',\n },\n component: async () => {\n const { LastEditedWidget } = await import('./components/Widgets');\n return LastEditedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-edited-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const lastPublishedWidget: WidgetArgs = {\n icon: CheckCircle,\n title: {\n id: `${PLUGIN_ID}.widget.last-published.title`,\n defaultMessage: 'Last published entries',\n },\n component: async () => {\n const { LastPublishedWidget } = await import('./components/Widgets');\n return LastPublishedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-published-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const entriesWidget: WidgetArgs = {\n icon: PuzzlePiece,\n title: {\n id: `${PLUGIN_ID}.widget.chart-entries.title`,\n defaultMessage: 'Entries',\n },\n component: async () => {\n const { ChartEntriesWidget } = await import('./components/Widgets');\n return ChartEntriesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'chart-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n\n const profileInfoIndex = widgets.findIndex(\n (widget) => widget.id === 'profile-info' && widget.pluginId === 'admin'\n );\n\n // Insert chart-entries after the profile-info widget\n if (profileInfoIndex !== -1) {\n const newWidgets: WidgetArgs[] = [...widgets];\n newWidgets.splice(profileInfoIndex + 1, 0, entriesWidget);\n return [lastEditedWidget, lastPublishedWidget, ...newWidgets];\n }\n\n // Fallback: add to the end if the target widget aren't found\n return [lastEditedWidget, lastPublishedWidget, ...widgets, entriesWidget];\n });\n },\n bootstrap(app: any) {\n if (typeof historyAdmin.bootstrap === 'function') {\n historyAdmin.bootstrap(app);\n }\n if (typeof previewAdmin.bootstrap === 'function') {\n previewAdmin.bootstrap(app);\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["register","app","cm","ContentManagerPlugin","addReducers","PLUGIN_ID","reducer","addMenuLink","to","icon","Feather","intlLabel","id","defaultMessage","permissions","position","router","addRoute","path","lazy","Layout","Component","children","routes","registerPlugin","config","widgets","lastEditedWidget","Pencil","title","component","LastEditedWidget","pluginId","action","lastPublishedWidget","CheckCircle","LastPublishedWidget","entriesWidget","PuzzlePiece","ChartEntriesWidget","profileInfoIndex","findIndex","widget","newWidgets","splice","bootstrap","historyAdmin","previewAdmin","registerTrads","locales","importedTrads","Promise","all","map","locale","then","default","data","prefixPluginTranslations","catch","resolve"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;AACA,YAAe;AACbA,IAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;AACf,QAAA,MAAMC,KAAK,IAAIC,oBAAAA,EAAAA;AAEfF,QAAAA,GAAAA,CAAIG,WAAW,CAAC;AACd,YAAA,CAACC,YAAYC;AACf,SAAA,CAAA;AAEAL,QAAAA,GAAAA,CAAIM,WAAW,CAAC;YACdC,EAAIH,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { CheckCircle, Feather, Pencil, PuzzlePiece } from '@strapi/icons';\n\nimport { PLUGIN_ID } from './constants/plugin';\nimport { ContentManagerPlugin } from './content-manager';\nimport { historyAdmin } from './history';\nimport { reducer } from './modules/reducers';\nimport { previewAdmin } from './preview';\nimport { routes } from './router';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { WidgetArgs } from '@strapi/admin/strapi-admin';\n\n// NOTE: we have to preload it to ensure chunks will have it available as global\nimport 'prismjs';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n const cm = new ContentManagerPlugin();\n\n app.addReducers({\n [PLUGIN_ID]: reducer,\n });\n\n app.addMenuLink({\n to: PLUGIN_ID,\n icon: Feather,\n intlLabel: {\n id: `content-manager.plugin.name`,\n defaultMessage: 'Content Manager',\n },\n permissions: [],\n position: 1,\n });\n\n app.router.addRoute({\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: routes,\n });\n\n app.registerPlugin(cm.config);\n\n app.widgets.register((widgets: WidgetArgs[]) => {\n const lastEditedWidget: WidgetArgs = {\n icon: Pencil,\n title: {\n id: `${PLUGIN_ID}.widget.last-edited.title`,\n defaultMessage: 'Last edited entries',\n },\n component: async () => {\n const { LastEditedWidget } = await import('./components/Widgets');\n return LastEditedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-edited-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const lastPublishedWidget: WidgetArgs = {\n icon: CheckCircle,\n title: {\n id: `${PLUGIN_ID}.widget.last-published.title`,\n defaultMessage: 'Last published entries',\n },\n component: async () => {\n const { LastPublishedWidget } = await import('./components/Widgets');\n return LastPublishedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-published-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const entriesWidget: WidgetArgs = {\n icon: PuzzlePiece,\n title: {\n id: `${PLUGIN_ID}.widget.chart-entries.title`,\n defaultMessage: 'Entries',\n },\n component: async () => {\n const { ChartEntriesWidget } = await import('./components/Widgets');\n return ChartEntriesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'chart-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n\n const profileInfoIndex = widgets.findIndex(\n (widget) => widget.id === 'profile-info' && widget.pluginId === 'admin'\n );\n\n // Insert chart-entries after the profile-info widget\n if (profileInfoIndex !== -1) {\n const newWidgets: WidgetArgs[] = [...widgets];\n newWidgets.splice(profileInfoIndex + 1, 0, entriesWidget);\n return [lastEditedWidget, lastPublishedWidget, ...newWidgets];\n }\n\n // Fallback: add to the end if the target widget aren't found\n return [lastEditedWidget, lastPublishedWidget, ...widgets, entriesWidget];\n });\n },\n bootstrap(app: any) {\n if (typeof historyAdmin.bootstrap === 'function') {\n historyAdmin.bootstrap(app);\n }\n if (typeof previewAdmin.bootstrap === 'function') {\n previewAdmin.bootstrap(app);\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["register","app","cm","ContentManagerPlugin","addReducers","PLUGIN_ID","reducer","addMenuLink","to","icon","Feather","intlLabel","id","defaultMessage","permissions","position","router","addRoute","path","lazy","Layout","Component","children","routes","registerPlugin","config","widgets","lastEditedWidget","Pencil","title","component","LastEditedWidget","pluginId","action","lastPublishedWidget","CheckCircle","LastPublishedWidget","entriesWidget","PuzzlePiece","ChartEntriesWidget","profileInfoIndex","findIndex","widget","newWidgets","splice","bootstrap","historyAdmin","previewAdmin","registerTrads","locales","importedTrads","Promise","all","map","locale","then","default","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
|
package/dist/admin/layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":";;;;;;;;;;;;;;;;AAgBA;;AAEkG,2GAE5FA,
|
|
1
|
+
{"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":";;;;;;;;;;;;;;AAgBA;;AAEkG,2GAE5FA,
|
|
1
|
+
{"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sources":["../../../admin/src/modules/app.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { GetInitData } from '../../../shared/contracts/init';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\ninterface AppState {\n collectionTypeLinks: ContentManagerLink[];\n components: GetInitData.Response['data']['components'];\n fieldSizes: GetInitData.Response['data']['fieldSizes'];\n models: GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState: AppState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n};\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n setInitialData(\n state,\n action: PayloadAction<{\n authorizedCollectionTypeLinks: AppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: AppState['singleTypeLinks'];\n components: AppState['components'];\n contentTypeSchemas: AppState['models'];\n fieldSizes: AppState['fieldSizes'];\n }>\n ) {\n const {\n authorizedCollectionTypeLinks,\n authorizedSingleTypeLinks,\n components,\n contentTypeSchemas,\n fieldSizes,\n } = action.payload;\n state.collectionTypeLinks = authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n state.singleTypeLinks = authorizedSingleTypeLinks.filter(({ isDisplayed }) => isDisplayed);\n state.components = components;\n state.models = contentTypeSchemas;\n state.fieldSizes = fieldSizes;\n state.isLoading = false;\n },\n },\n});\n\nconst { actions, reducer } = appSlice;\nconst { setInitialData } = actions;\n\nexport { reducer, setInitialData };\nexport type { AppState };\n"],"names":["initialState","collectionTypeLinks","components","fieldSizes","models","singleTypeLinks","isLoading","appSlice","createSlice","name","reducers","setInitialData","state","action","authorizedCollectionTypeLinks","authorizedSingleTypeLinks","contentTypeSchemas","payload","filter","isDisplayed","actions","reducer"],"mappings":";;;;AAeA,MAAMA,
|
|
1
|
+
{"version":3,"file":"app.js","sources":["../../../admin/src/modules/app.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { GetInitData } from '../../../shared/contracts/init';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\ninterface AppState {\n collectionTypeLinks: ContentManagerLink[];\n components: GetInitData.Response['data']['components'];\n fieldSizes: GetInitData.Response['data']['fieldSizes'];\n models: GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState: AppState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n};\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n setInitialData(\n state,\n action: PayloadAction<{\n authorizedCollectionTypeLinks: AppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: AppState['singleTypeLinks'];\n components: AppState['components'];\n contentTypeSchemas: AppState['models'];\n fieldSizes: AppState['fieldSizes'];\n }>\n ) {\n const {\n authorizedCollectionTypeLinks,\n authorizedSingleTypeLinks,\n components,\n contentTypeSchemas,\n fieldSizes,\n } = action.payload;\n state.collectionTypeLinks = authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n state.singleTypeLinks = authorizedSingleTypeLinks.filter(({ isDisplayed }) => isDisplayed);\n state.components = components;\n state.models = contentTypeSchemas;\n state.fieldSizes = fieldSizes;\n state.isLoading = false;\n },\n },\n});\n\nconst { actions, reducer } = appSlice;\nconst { setInitialData } = actions;\n\nexport { reducer, setInitialData };\nexport type { AppState };\n"],"names":["initialState","collectionTypeLinks","components","fieldSizes","models","singleTypeLinks","isLoading","appSlice","createSlice","name","reducers","setInitialData","state","action","authorizedCollectionTypeLinks","authorizedSingleTypeLinks","contentTypeSchemas","payload","filter","isDisplayed","actions","reducer"],"mappings":";;;;AAeA,MAAMA,YAAAA,GAAyB;AAC7BC,IAAAA,mBAAAA,EAAqB,EAAE;AACvBC,IAAAA,UAAAA,EAAY,EAAE;AACdC,IAAAA,UAAAA,EAAY,EAAC;AACbC,IAAAA,MAAAA,EAAQ,EAAE;AACVC,IAAAA,eAAAA,EAAiB,EAAE;IACnBC,SAAAA,EAAW;AACb,CAAA;AAEA,MAAMC,WAAWC,mBAAAA,CAAY;IAC3BC,IAAAA,EAAM,KAAA;AACNT,IAAAA,YAAAA;IACAU,QAAAA,EAAU;QACRC,cAAAA,CAAAA,CACEC,KAAK,EACLC,MAME,EAAA;AAEF,YAAA,MAAM,EACJC,6BAA6B,EAC7BC,yBAAyB,EACzBb,UAAU,EACVc,kBAAkB,EAClBb,UAAU,EACX,GAAGU,OAAOI,OAAO;YAClBL,KAAAA,CAAMX,mBAAmB,GAAGa,6BAAAA,CAA8BI,MAAM,CAC9D,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAAA,CAAAA;YAEvBP,KAAAA,CAAMP,eAAe,GAAGU,yBAAAA,CAA0BG,MAAM,CAAC,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAAA,CAAAA;AAC9EP,YAAAA,KAAAA,CAAMV,UAAU,GAAGA,UAAAA;AACnBU,YAAAA,KAAAA,CAAMR,MAAM,GAAGY,kBAAAA;AACfJ,YAAAA,KAAAA,CAAMT,UAAU,GAAGA,UAAAA;AACnBS,YAAAA,KAAAA,CAAMN,SAAS,GAAG,KAAA;AACpB,QAAA;AACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEc,OAAO,EAAEC,OAAO,EAAE,GAAGd;AAC7B,MAAM,EAAEI,cAAc,EAAE,GAAGS;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.mjs","sources":["../../../admin/src/modules/app.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { GetInitData } from '../../../shared/contracts/init';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\ninterface AppState {\n collectionTypeLinks: ContentManagerLink[];\n components: GetInitData.Response['data']['components'];\n fieldSizes: GetInitData.Response['data']['fieldSizes'];\n models: GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState: AppState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n};\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n setInitialData(\n state,\n action: PayloadAction<{\n authorizedCollectionTypeLinks: AppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: AppState['singleTypeLinks'];\n components: AppState['components'];\n contentTypeSchemas: AppState['models'];\n fieldSizes: AppState['fieldSizes'];\n }>\n ) {\n const {\n authorizedCollectionTypeLinks,\n authorizedSingleTypeLinks,\n components,\n contentTypeSchemas,\n fieldSizes,\n } = action.payload;\n state.collectionTypeLinks = authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n state.singleTypeLinks = authorizedSingleTypeLinks.filter(({ isDisplayed }) => isDisplayed);\n state.components = components;\n state.models = contentTypeSchemas;\n state.fieldSizes = fieldSizes;\n state.isLoading = false;\n },\n },\n});\n\nconst { actions, reducer } = appSlice;\nconst { setInitialData } = actions;\n\nexport { reducer, setInitialData };\nexport type { AppState };\n"],"names":["initialState","collectionTypeLinks","components","fieldSizes","models","singleTypeLinks","isLoading","appSlice","createSlice","name","reducers","setInitialData","state","action","authorizedCollectionTypeLinks","authorizedSingleTypeLinks","contentTypeSchemas","payload","filter","isDisplayed","actions","reducer"],"mappings":";;AAeA,MAAMA,
|
|
1
|
+
{"version":3,"file":"app.mjs","sources":["../../../admin/src/modules/app.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { GetInitData } from '../../../shared/contracts/init';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\ninterface AppState {\n collectionTypeLinks: ContentManagerLink[];\n components: GetInitData.Response['data']['components'];\n fieldSizes: GetInitData.Response['data']['fieldSizes'];\n models: GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState: AppState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n};\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n setInitialData(\n state,\n action: PayloadAction<{\n authorizedCollectionTypeLinks: AppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: AppState['singleTypeLinks'];\n components: AppState['components'];\n contentTypeSchemas: AppState['models'];\n fieldSizes: AppState['fieldSizes'];\n }>\n ) {\n const {\n authorizedCollectionTypeLinks,\n authorizedSingleTypeLinks,\n components,\n contentTypeSchemas,\n fieldSizes,\n } = action.payload;\n state.collectionTypeLinks = authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n state.singleTypeLinks = authorizedSingleTypeLinks.filter(({ isDisplayed }) => isDisplayed);\n state.components = components;\n state.models = contentTypeSchemas;\n state.fieldSizes = fieldSizes;\n state.isLoading = false;\n },\n },\n});\n\nconst { actions, reducer } = appSlice;\nconst { setInitialData } = actions;\n\nexport { reducer, setInitialData };\nexport type { AppState };\n"],"names":["initialState","collectionTypeLinks","components","fieldSizes","models","singleTypeLinks","isLoading","appSlice","createSlice","name","reducers","setInitialData","state","action","authorizedCollectionTypeLinks","authorizedSingleTypeLinks","contentTypeSchemas","payload","filter","isDisplayed","actions","reducer"],"mappings":";;AAeA,MAAMA,YAAAA,GAAyB;AAC7BC,IAAAA,mBAAAA,EAAqB,EAAE;AACvBC,IAAAA,UAAAA,EAAY,EAAE;AACdC,IAAAA,UAAAA,EAAY,EAAC;AACbC,IAAAA,MAAAA,EAAQ,EAAE;AACVC,IAAAA,eAAAA,EAAiB,EAAE;IACnBC,SAAAA,EAAW;AACb,CAAA;AAEA,MAAMC,WAAWC,WAAAA,CAAY;IAC3BC,IAAAA,EAAM,KAAA;AACNT,IAAAA,YAAAA;IACAU,QAAAA,EAAU;QACRC,cAAAA,CAAAA,CACEC,KAAK,EACLC,MAME,EAAA;AAEF,YAAA,MAAM,EACJC,6BAA6B,EAC7BC,yBAAyB,EACzBb,UAAU,EACVc,kBAAkB,EAClBb,UAAU,EACX,GAAGU,OAAOI,OAAO;YAClBL,KAAAA,CAAMX,mBAAmB,GAAGa,6BAAAA,CAA8BI,MAAM,CAC9D,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAAA,CAAAA;YAEvBP,KAAAA,CAAMP,eAAe,GAAGU,yBAAAA,CAA0BG,MAAM,CAAC,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAAA,CAAAA;AAC9EP,YAAAA,KAAAA,CAAMV,UAAU,GAAGA,UAAAA;AACnBU,YAAAA,KAAAA,CAAMR,MAAM,GAAGY,kBAAAA;AACfJ,YAAAA,KAAAA,CAAMT,UAAU,GAAGA,UAAAA;AACnBS,YAAAA,KAAAA,CAAMN,SAAS,GAAG,KAAA;AACpB,QAAA;AACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEc,OAAO,EAAEC,OAAO,EAAE,GAAGd;AAC7B,MAAM,EAAEI,cAAc,EAAE,GAAGS;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../admin/src/modules/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport { State } from './reducers';\n\nimport type { Store } from '@strapi/admin/strapi-admin';\n\ntype RootState = ReturnType<Store['getState']> & {\n ['content-manager']: State;\n};\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;;;AAWA,MAAMA,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../admin/src/modules/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport { State } from './reducers';\n\nimport type { Store } from '@strapi/admin/strapi-admin';\n\ntype RootState = ReturnType<Store['getState']> & {\n ['content-manager']: State;\n};\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;;;AAWA,MAAMA,gBAAAA,GAAmCC;AACzC,MAAMC,gBAAAA,GAAoDC;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.mjs","sources":["../../../admin/src/modules/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport { State } from './reducers';\n\nimport type { Store } from '@strapi/admin/strapi-admin';\n\ntype RootState = ReturnType<Store['getState']> & {\n ['content-manager']: State;\n};\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;AAWA,MAAMA,
|
|
1
|
+
{"version":3,"file":"hooks.mjs","sources":["../../../admin/src/modules/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport { State } from './reducers';\n\nimport type { Store } from '@strapi/admin/strapi-admin';\n\ntype RootState = ReturnType<Store['getState']> & {\n ['content-manager']: State;\n};\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;AAWA,MAAMA,gBAAAA,GAAmCC;AACzC,MAAMC,gBAAAA,GAAoDC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducers.js","sources":["../../../admin/src/modules/reducers.ts"],"sourcesContent":["import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as appReducer } from './app';\n\nconst reducer = combineReducers({\n app: appReducer,\n});\n\ntype State = ReturnType<typeof reducer>;\n\nexport { reducer };\nexport type { State };\n"],"names":["reducer","combineReducers","app","appReducer"],"mappings":";;;;;AAIA,MAAMA,UAAUC,
|
|
1
|
+
{"version":3,"file":"reducers.js","sources":["../../../admin/src/modules/reducers.ts"],"sourcesContent":["import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as appReducer } from './app';\n\nconst reducer = combineReducers({\n app: appReducer,\n});\n\ntype State = ReturnType<typeof reducer>;\n\nexport { reducer };\nexport type { State };\n"],"names":["reducer","combineReducers","app","appReducer"],"mappings":";;;;;AAIA,MAAMA,UAAUC,uBAAAA,CAAgB;IAC9BC,GAAAA,EAAKC;AACP,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducers.mjs","sources":["../../../admin/src/modules/reducers.ts"],"sourcesContent":["import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as appReducer } from './app';\n\nconst reducer = combineReducers({\n app: appReducer,\n});\n\ntype State = ReturnType<typeof reducer>;\n\nexport { reducer };\nexport type { State };\n"],"names":["reducer","combineReducers","app","appReducer"],"mappings":";;;AAIA,MAAMA,UAAUC,
|
|
1
|
+
{"version":3,"file":"reducers.mjs","sources":["../../../admin/src/modules/reducers.ts"],"sourcesContent":["import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as appReducer } from './app';\n\nconst reducer = combineReducers({\n app: appReducer,\n});\n\ntype State = ReturnType<typeof reducer>;\n\nexport { reducer };\nexport type { State };\n"],"names":["reducer","combineReducers","app","appReducer"],"mappings":";;;AAIA,MAAMA,UAAUC,eAAAA,CAAgB;IAC9BC,GAAAA,EAAKC;AACP,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentConfigurationPage.js","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Component, FindComponentConfiguration } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: FindComponentConfiguration.Response['data'],\n { schema, components }: { schema?: Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","editAttributes","convertEditLayoutToFieldLayouts","configurations","schemas","componentEditAttributes","configuration","icon","info","editMetadatas","attribute","metadata","pluginOptions","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;;AAEkG,2GAE5FA,0BAA6B,GAAA,IAAA;AACjC;;;;;AAKC,MACD,MAAM,EAAEC,IAAMC,EAAAA,KAAK,EAAE,GAAGC,wBAAAA,EAAAA;IACxB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;AAEpD,IAAA,MAAM,cACJC,YAAU,EACVC,UAAU,EACVC,MAAM,EACNC,KAAOC,EAAAA,WAAW,EAClBC,SAAAA,EAAWC,eAAe,EAC1BC,UAAAA,EAAYC,gBAAgB,EAC7B,GAAGC,4BAAuBC,SAAW,EAAA;AACpCC,QAAAA,gBAAAA,EAAkB,CAACC,GAAAA,GAAAA;YACjB,MAAMV,MAAAA,GAASU,GAAIC,CAAAA,IAAI,EAAEb,UAAAA,CAAWc,KAAK,CAACC,EAAAA,GAAOA,EAAGC,CAAAA,GAAG,KAAKzB,KAAAA,CAAAA;AAE5D,YAAA,MAAM0B,kBAAkBL,GAAIC,CAAAA,IAAI,EAAEb,UAAWkB,CAAAA,MAAAA,CAC3C,CAACC,GAAKC,EAAAA,SAAAA,GAAAA;AACJD,gBAAAA,GAAG,CAACC,SAAAA,CAAUJ,GAAG,CAAC,GAAGI,SAAAA;gBAErB,OAAOD,GAAAA;AACT,aAAA,EACA,EAAC,CAAA;YAGH,MAAMnB,UAAAA,GAAaqB,iDAA6BnB,CAAAA,MAAAA,EAAQoB,UAAYL,EAAAA,eAAAA,CAAAA;YAEpE,MAAMhB,UAAAA,GAAasB,OAAOC,OAAO,CAACZ,IAAIC,IAAI,EAAEZ,cAAc,EAAC,CAAA,CAAGiB,MAAM,CAElE,CAACC,KAAK,CAACM,aAAAA,EAAe,EAAEC,OAASC,EAAAA,IAAI,EAAE,CAAC,GAAA;gBACxCR,GAAG,CAACM,cAAc,GAAGE,IAAAA;gBAErB,OAAOR,GAAAA;AACT,aAAA,EAAG,EAAC,CAAA;YAEJ,OAAO;AACLZ,gBAAAA,UAAAA,EAAYK,IAAIL,UAAU;AAC1BF,gBAAAA,SAAAA,EAAWO,IAAIP,SAAS;AACxBF,gBAAAA,KAAAA,EAAOS,IAAIT,KAAK;AAChBH,gBAAAA,UAAAA;AACAE,gBAAAA,MAAAA;AACAD,gBAAAA;AACF,aAAA;AACF;AACF,KAAA,CAAA;AAEA2B,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIzB,WAAa,EAAA;YACfX,kBAAmB,CAAA;gBACjBqC,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASjC,cAAeM,CAAAA,WAAAA;AAC1B,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,WAAAA;AAAaN,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAEpD,IAAA,MAAM,EACJoB,IAAI,EACJR,SAAAA,EAAW2B,eAAe,EAC1BzB,UAAY0B,EAAAA,gBAAgB,EAC5B9B,KAAK,EACN,GAAG+B,6CAAkC3C,KAAS,IAAA,EAAA,CAAA;AAE/CqC,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI1B,KAAO,EAAA;YACTV,kBAAmB,CAAA;gBACjBqC,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASjC,cAAeK,CAAAA,KAAAA;AAC1B,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,KAAAA;AAAOL,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAE9C;;;AAGC,MACD,MAAMY,SAAAA,GAAY2B,eAAmB1B,IAAAA,eAAAA,IAAmB2B,gBAAoBzB,IAAAA,gBAAAA;IAE5E,MAAM2B,UAAAA,GAAaP,iBAAMQ,OAAO,CAC9B,IACEvB,IAAQ,IAAA,CAACR,SACLgC,GAAAA,gBAAAA,CAAiBxB,IAAM,EAAA;AAAEX,YAAAA,MAAAA;AAAQF,wBAAAA;SAChC,CAAA,GAAA;AACCsC,YAAAA,MAAAA,EAAQ,EAAE;AACVtC,YAAAA,UAAAA,EAAY,EAAC;AACbuC,YAAAA,SAAAA,EAAW,EAAC;AACZC,YAAAA,OAAAA,EAAS,EAAC;YACVC,QAAUC,EAAAA;SAElB,EAAA;AAAC7B,QAAAA,IAAAA;AAAMR,QAAAA,SAAAA;AAAWH,QAAAA,MAAAA;AAAQF,QAAAA;AAAW,KAAA,CAAA;IAGvC,MAAM,CAAC2C,oBAAoB,GAAGC,kDAAAA,EAAAA;AAC9B,IAAA,MAAMC,eAAmD,OAAOC,QAAAA,GAAAA;QAC9D,IAAI;AACF;;;;UAKA,MAAMC,OAAOxB,MAAOC,CAAAA,OAAO,CAACX,IAAMO,EAAAA,SAAAA,CAAUmB,aAAa,EAAC,CAAA,CAAGrB,MAAM,CACjE,CAACC,KAAK,CAAC6B,IAAAA,EAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,CAAC,GAAA;AAC1B,gBAAA,MAAM,EACJC,YAAY,EACZxB,IAAAA,EAAMyB,KAAK,EACXJ,IAAMK,EAAAA,KAAK,EACX,GAAGC,cACJ,EAAA,GAAGR,SAASR,MAAM,CAACiB,OAAO,CAAC,CAACC,GAAAA,GAAQA,GAAIC,CAAAA,QAAQ,CAAE3C,CAAAA,IAAI,CAAC,CAAC4C,KAAUA,GAAAA,KAAAA,CAAMV,IAAI,KAAKA,SAClF,EAAC;gBAED7B,GAAG,CAAC6B,KAAK,GAAG;oBACVC,IAAM,EAAA;AACJ,wBAAA,GAAGA,IAAI;AACP,wBAAA,GAAGK;AACL,qBAAA;AACAJ,oBAAAA;AACF,iBAAA;gBAEA,OAAO/B,GAAAA;AACT,aAAA,EACA,EAAC,CAAA;YAGH,MAAMP,GAAAA,GAAM,MAAM+B,mBAAoB,CAAA;gBACpCgB,OAAS,EAAA;AACPV,oBAAAA,IAAAA,EAAMH,SAASR,MAAM,CAACsB,GAAG,CAAC,CAACJ,MACzBA,GAAIC,CAAAA,QAAQ,CAACvC,MAAM,CAAwC,CAACC,GAAAA,EAAK,EAAE6B,IAAI,EAAErB,IAAI,EAAE,GAAA;AAC7E,4BAAA,IAAIqB,SAASa,sBAAiB,EAAA;gCAC5B,OAAO;AAAI1C,oCAAAA,GAAAA,GAAAA;AAAK,oCAAA;AAAE6B,wCAAAA,IAAAA;AAAMrB,wCAAAA;AAAK;AAAE,iCAAA;AACjC;4BAEA,OAAOR,GAAAA;AACT,yBAAA,EAAG,EAAE,CAAA,CAAA;oBAEP+B,IAAMrC,EAAAA,IAAAA,EAAMO,UAAUuC,OAAQT,CAAAA;AAChC,iBAAA;AACAT,gBAAAA,QAAAA,EAAUqB,aAAMhB,CAAAA,QAAAA,CAASL,QAAQ,EAAE,aAAe/B,EAAAA,SAAAA,CAAAA;gBAClD6B,SAAWQ,EAAAA,IAAAA;gBACX/B,GAAKzB,EAAAA;AACP,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUqB,GAAK,EAAA;gBACjBnB,kBAAmB,CAAA;oBACjBqC,IAAM,EAAA,SAAA;AACNC,oBAAAA,OAAAA,EAASpC,aAAc,CAAA;wBAAEoE,EAAI,EAAA,4BAAA;wBAA8BC,cAAgB,EAAA;AAAQ,qBAAA;AACrF,iBAAA,CAAA;aACK,MAAA;gBACLvE,kBAAmB,CAAA;oBACjBqC,IAAM,EAAA,QAAA;oBACNC,OAASjC,EAAAA,cAAAA,CAAec,IAAIT,KAAK;AACnC,iBAAA,CAAA;AACF;AACF,SAAA,CAAE,OAAM;YACNV,kBAAmB,CAAA;gBACjBqC,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASpC,aAAc,CAAA;oBAAEoE,EAAI,EAAA,oBAAA;oBAAsBC,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,IAAI3D,SAAW,EAAA;QACb,qBAAO4D,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,IAAIhE,KAAAA,IAASC,WAAe,IAAA,CAACF,MAAQ,EAAA;QACnC,qBAAO+D,cAAA,CAACC,iBAAKE,KAAK,EAAA,EAAA,CAAA;AACpB;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAL,cAAA,CAACC,iBAAKK,KAAK,EAAA;0BAAE,CAAC,UAAU,EAAEpC,UAAWM,CAAAA,QAAQ,CAAC+B,WAAW,CAAC,UAAU;;0BACpEP,cAACQ,CAAAA,sBAAAA,EAAAA;gBACCC,QAAU7B,EAAAA,YAAAA;AACVvB,gBAAAA,UAAAA,EAAYpB,OAAOoB,UAAU;gBAC7BrB,UAAYA,EAAAA,UAAAA;gBACZqC,MAAQH,EAAAA;;;;AAIhB;AAEA;;qGAIA,MAAME,mBAAmB,CACvBxB,IAAAA,EACA,EAAEX,MAAM,EAAEF,UAAU,EAA4D,GAAA;AAEhF,IAAA,MAAM2E,cAAiBC,GAAAA,iDAAAA,CACrB/D,IAAKO,CAAAA,SAAS,CAACuC,OAAO,CAACV,IAAI,EAC3B/C,QAAQoB,UACRT,EAAAA,IAAAA,CAAKO,SAAS,CAACmB,SAAS,EACxB;AAAEsC,QAAAA,cAAAA,EAAgBhE,KAAKb,UAAU;QAAE8E,OAAS9E,EAAAA;AAAW,KAAA,CAAA;AAGzD,IAAA,MAAM+E,uBAA0BxD,GAAAA,MAAAA,CAAOC,OAAO,CAACX,IAAKb,CAAAA,UAAU,CAAEkB,CAAAA,MAAM,CACpE,CAACC,GAAK,EAAA,CAACH,KAAKgE,aAAc,CAAA,GAAA;QACxB7D,GAAG,CAACH,IAAI,GAAG;AACTsB,YAAAA,MAAAA,EAAQsC,iDACNI,CAAAA,aAAAA,CAAcrB,OAAO,CAACV,IAAI,EAC1BjD,UAAU,CAACgB,GAAI,CAAA,CAACM,UAAU,EAC1B0D,cAAczC,SAAS,CAAA;YAEzBE,QAAU,EAAA;AACR,gBAAA,GAAGuC,cAAcvC,QAAQ;AACzBwC,gBAAAA,IAAAA,EAAMjF,UAAU,CAACgB,GAAAA,CAAI,CAACkE,IAAI,CAACD,IAAI;AAC/BT,gBAAAA,WAAAA,EAAaxE,UAAU,CAACgB,GAAAA,CAAI,CAACkE,IAAI,CAACV;AACpC;AACF,SAAA;QACA,OAAOrD,GAAAA;AACT,KAAA,EACA,EAAC,CAAA;AAGH,IAAA,MAAMgE,aAAgB5D,GAAAA,MAAAA,CAAOC,OAAO,CAACX,KAAKO,SAAS,CAACmB,SAAS,CAAA,CAAErB,MAAM,CACnE,CAACC,GAAK,EAAA,CAACiE,WAAWC,QAAS,CAAA,GAAA;QACzB,OAAO;AACL,YAAA,GAAGlE,GAAG;YACN,CAACiE,SAAAA,GAAYC,QAAAA,CAASpC;AACxB,SAAA;AACF,KAAA,EACA,EAAC,CAAA;IAGH,OAAO;QACLX,MAAQ,EAAA;AAACqC,YAAAA;AAAe,SAAA;QACxB3E,UAAY+E,EAAAA,uBAAAA;QACZxC,SAAW4C,EAAAA,aAAAA;QACX3C,OAAS,EAAA;AACP,YAAA,GAAGtC,QAAQsC,OAAO;AAClB,YAAA,GAAGtC,QAAQoF;AACb,SAAA;QACA7C,QAAU,EAAA;YACR,GAAG5B,IAAAA,CAAKO,SAAS,CAACqB,QAAQ;AAC1B+B,YAAAA,WAAAA,EAAatE,QAAQgF,IAAKV,CAAAA;AAC5B;AACF,KAAA;AACF,CAAA;AAEA;;AAEkG,2GAE5Fe,mCAAsC,GAAA,IAAA;IAC1C,MAAMC,WAAAA,GAAcC,sBAClB,CAAA,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAACI,cAAc,EAAEC,wBAAAA,CAAAA;IAGzD,qBACE5B,cAAA,CAACC,iBAAK4B,OAAO,EAAA;QAACN,WAAaA,EAAAA,WAAAA;AACzB,QAAA,QAAA,gBAAAvB,cAAC5E,CAAAA,0BAAAA,EAAAA,EAAAA;;AAGP;;;;;"}
|
|
1
|
+
{"version":3,"file":"ComponentConfigurationPage.js","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Component, FindComponentConfiguration } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: FindComponentConfiguration.Response['data'],\n { schema, components }: { schema?: Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","editAttributes","convertEditLayoutToFieldLayouts","configurations","schemas","componentEditAttributes","configuration","icon","info","editMetadatas","attribute","metadata","pluginOptions","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useNotification, useAPIErrorHandler
|
|
3
|
+
import { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { useParams } from 'react-router-dom';
|
|
6
6
|
import { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentConfigurationPage.mjs","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Component, FindComponentConfiguration } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: FindComponentConfiguration.Response['data'],\n { schema, components }: { schema?: Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","editAttributes","convertEditLayoutToFieldLayouts","configurations","schemas","componentEditAttributes","configuration","icon","info","editMetadatas","attribute","metadata","pluginOptions","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComponentConfigurationPage.mjs","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Component, FindComponentConfiguration } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: FindComponentConfiguration.Response['data'],\n { schema, components }: { schema?: Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","editAttributes","convertEditLayoutToFieldLayouts","configurations","schemas","componentEditAttributes","configuration","icon","info","editMetadatas","attribute","metadata","pluginOptions","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":";;;;;;;;;;;;;;AAyBA;;AAEkG,2GAE5FA,0BAAAA,GAA6B,IAAA;AACjC;;;;;AAKC,MACD,MAAM,EAAEC,IAAAA,EAAMC,KAAK,EAAE,GAAGC,SAAAA,EAAAA;IACxB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;AAEpD,IAAA,MAAM,EACJC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,KAAAA,EAAOC,WAAW,EAClBC,SAAAA,EAAWC,eAAe,EAC1BC,UAAAA,EAAYC,gBAAgB,EAC7B,GAAGC,uBAAuBC,SAAAA,EAAW;AACpCC,QAAAA,gBAAAA,EAAkB,CAACC,GAAAA,GAAAA;YACjB,MAAMV,MAAAA,GAASU,GAAAA,CAAIC,IAAI,EAAEb,UAAAA,CAAWc,KAAK,CAACC,EAAAA,GAAOA,EAAAA,CAAGC,GAAG,KAAKzB,KAAAA,CAAAA;AAE5D,YAAA,MAAM0B,kBAAkBL,GAAAA,CAAIC,IAAI,EAAEb,UAAAA,CAAWkB,MAAAA,CAC3C,CAACC,GAAAA,EAAKC,SAAAA,GAAAA;AACJD,gBAAAA,GAAG,CAACC,SAAAA,CAAUJ,GAAG,CAAC,GAAGI,SAAAA;gBAErB,OAAOD,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,MAAMnB,UAAAA,GAAaqB,4BAAAA,CAA6BnB,MAAAA,EAAQoB,UAAAA,EAAYL,eAAAA,CAAAA;YAEpE,MAAMhB,UAAAA,GAAasB,OAAOC,OAAO,CAACZ,IAAIC,IAAI,EAAEZ,cAAc,EAAC,CAAA,CAAGiB,MAAM,CAElE,CAACC,KAAK,CAACM,aAAAA,EAAe,EAAEC,OAAAA,EAASC,IAAI,EAAE,CAAC,GAAA;gBACxCR,GAAG,CAACM,cAAc,GAAGE,IAAAA;gBAErB,OAAOR,GAAAA;AACT,YAAA,CAAA,EAAG,EAAC,CAAA;YAEJ,OAAO;AACLZ,gBAAAA,UAAAA,EAAYK,IAAIL,UAAU;AAC1BF,gBAAAA,SAAAA,EAAWO,IAAIP,SAAS;AACxBF,gBAAAA,KAAAA,EAAOS,IAAIT,KAAK;AAChBH,gBAAAA,UAAAA;AACAE,gBAAAA,MAAAA;AACAD,gBAAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAA;AAEA2B,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIzB,WAAAA,EAAa;YACfX,kBAAAA,CAAmB;gBACjBqC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASjC,cAAAA,CAAeM,WAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,WAAAA;AAAaN,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAEpD,IAAA,MAAM,EACJoB,IAAI,EACJR,SAAAA,EAAW2B,eAAe,EAC1BzB,UAAAA,EAAY0B,gBAAgB,EAC5B9B,KAAK,EACN,GAAG+B,kCAAkC3C,KAAAA,IAAS,EAAA,CAAA;AAE/CqC,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI1B,KAAAA,EAAO;YACTV,kBAAAA,CAAmB;gBACjBqC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASjC,cAAAA,CAAeK,KAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,KAAAA;AAAOL,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAE9C;;;AAGC,MACD,MAAMY,SAAAA,GAAY2B,eAAAA,IAAmB1B,eAAAA,IAAmB2B,gBAAAA,IAAoBzB,gBAAAA;IAE5E,MAAM2B,UAAAA,GAAaP,MAAMQ,OAAO,CAC9B,IACEvB,IAAAA,IAAQ,CAACR,SAAAA,GACLgC,gBAAAA,CAAiBxB,IAAAA,EAAM;AAAEX,YAAAA,MAAAA;AAAQF,YAAAA;SAAW,CAAA,GAC3C;AACCsC,YAAAA,MAAAA,EAAQ,EAAE;AACVtC,YAAAA,UAAAA,EAAY,EAAC;AACbuC,YAAAA,SAAAA,EAAW,EAAC;AACZC,YAAAA,OAAAA,EAAS,EAAC;YACVC,QAAAA,EAAUC;SACZ,EACN;AAAC7B,QAAAA,IAAAA;AAAMR,QAAAA,SAAAA;AAAWH,QAAAA,MAAAA;AAAQF,QAAAA;AAAW,KAAA,CAAA;IAGvC,MAAM,CAAC2C,oBAAoB,GAAGC,uCAAAA,EAAAA;AAC9B,IAAA,MAAMC,eAAmD,OAAOC,QAAAA,GAAAA;QAC9D,IAAI;AACF;;;;UAKA,MAAMC,OAAOxB,MAAAA,CAAOC,OAAO,CAACX,IAAAA,EAAMO,SAAAA,CAAUmB,aAAa,EAAC,CAAA,CAAGrB,MAAM,CACjE,CAACC,KAAK,CAAC6B,IAAAA,EAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,CAAC,GAAA;AAC1B,gBAAA,MAAM,EACJC,YAAY,EACZxB,IAAAA,EAAMyB,KAAK,EACXJ,IAAAA,EAAMK,KAAK,EACX,GAAGC,cAAAA,EACJ,GAAGR,SAASR,MAAM,CAACiB,OAAO,CAAC,CAACC,GAAAA,GAAQA,GAAAA,CAAIC,QAAQ,CAAA,CAAE3C,IAAI,CAAC,CAAC4C,KAAAA,GAAUA,KAAAA,CAAMV,IAAI,KAAKA,SAClF,EAAC;gBAED7B,GAAG,CAAC6B,KAAK,GAAG;oBACVC,IAAAA,EAAM;AACJ,wBAAA,GAAGA,IAAI;AACP,wBAAA,GAAGK;AACL,qBAAA;AACAJ,oBAAAA;AACF,iBAAA;gBAEA,OAAO/B,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,MAAMP,GAAAA,GAAM,MAAM+B,mBAAAA,CAAoB;gBACpCgB,OAAAA,EAAS;AACPV,oBAAAA,IAAAA,EAAMH,SAASR,MAAM,CAACsB,GAAG,CAAC,CAACJ,MACzBA,GAAAA,CAAIC,QAAQ,CAACvC,MAAM,CAAwC,CAACC,GAAAA,EAAK,EAAE6B,IAAI,EAAErB,IAAI,EAAE,GAAA;AAC7E,4BAAA,IAAIqB,SAASa,eAAAA,EAAiB;gCAC5B,OAAO;AAAI1C,oCAAAA,GAAAA,GAAAA;AAAK,oCAAA;AAAE6B,wCAAAA,IAAAA;AAAMrB,wCAAAA;AAAK;AAAE,iCAAA;AACjC,4BAAA;4BAEA,OAAOR,GAAAA;AACT,wBAAA,CAAA,EAAG,EAAE,CAAA,CAAA;oBAEP+B,IAAAA,EAAMrC,IAAAA,EAAMO,UAAUuC,OAAAA,CAAQT;AAChC,iBAAA;AACAT,gBAAAA,QAAAA,EAAUqB,KAAAA,CAAMhB,QAAAA,CAASL,QAAQ,EAAE,aAAA,EAAe/B,SAAAA,CAAAA;gBAClD6B,SAAAA,EAAWQ,IAAAA;gBACX/B,GAAAA,EAAKzB;AACP,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUqB,GAAAA,EAAK;gBACjBnB,kBAAAA,CAAmB;oBACjBqC,IAAAA,EAAM,SAAA;AACNC,oBAAAA,OAAAA,EAASpC,aAAAA,CAAc;wBAAEoE,EAAAA,EAAI,4BAAA;wBAA8BC,cAAAA,EAAgB;AAAQ,qBAAA;AACrF,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLvE,kBAAAA,CAAmB;oBACjBqC,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASjC,cAAAA,CAAec,IAAIT,KAAK;AACnC,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACNV,kBAAAA,CAAmB;gBACjBqC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASpC,aAAAA,CAAc;oBAAEoE,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAI3D,SAAAA,EAAW;QACb,qBAAO4D,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIhE,KAAAA,IAASC,WAAAA,IAAe,CAACF,MAAAA,EAAQ;QACnC,qBAAO+D,GAAA,CAACC,KAAKE,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;IAEA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAL,GAAA,CAACC,KAAKK,KAAK,EAAA;0BAAE,CAAC,UAAU,EAAEpC,UAAAA,CAAWM,QAAQ,CAAC+B,WAAW,CAAC,UAAU;;0BACpEP,GAAA,CAACQ,iBAAAA,EAAAA;gBACCC,QAAAA,EAAU7B,YAAAA;AACVvB,gBAAAA,UAAAA,EAAYpB,OAAOoB,UAAU;gBAC7BrB,UAAAA,EAAYA,UAAAA;gBACZqC,MAAAA,EAAQH;;;;AAIhB;AAEA;;qGAIA,MAAME,mBAAmB,CACvBxB,IAAAA,EACA,EAAEX,MAAM,EAAEF,UAAU,EAA4D,GAAA;AAEhF,IAAA,MAAM2E,cAAAA,GAAiBC,+BAAAA,CACrB/D,IAAAA,CAAKO,SAAS,CAACuC,OAAO,CAACV,IAAI,EAC3B/C,QAAQoB,UAAAA,EACRT,IAAAA,CAAKO,SAAS,CAACmB,SAAS,EACxB;AAAEsC,QAAAA,cAAAA,EAAgBhE,KAAKb,UAAU;QAAE8E,OAAAA,EAAS9E;AAAW,KAAA,CAAA;AAGzD,IAAA,MAAM+E,uBAAAA,GAA0BxD,MAAAA,CAAOC,OAAO,CAACX,IAAAA,CAAKb,UAAU,CAAA,CAAEkB,MAAM,CACpE,CAACC,GAAAA,EAAK,CAACH,KAAKgE,aAAAA,CAAc,GAAA;QACxB7D,GAAG,CAACH,IAAI,GAAG;AACTsB,YAAAA,MAAAA,EAAQsC,+BAAAA,CACNI,aAAAA,CAAcrB,OAAO,CAACV,IAAI,EAC1BjD,UAAU,CAACgB,GAAAA,CAAI,CAACM,UAAU,EAC1B0D,cAAczC,SAAS,CAAA;YAEzBE,QAAAA,EAAU;AACR,gBAAA,GAAGuC,cAAcvC,QAAQ;AACzBwC,gBAAAA,IAAAA,EAAMjF,UAAU,CAACgB,GAAAA,CAAI,CAACkE,IAAI,CAACD,IAAI;AAC/BT,gBAAAA,WAAAA,EAAaxE,UAAU,CAACgB,GAAAA,CAAI,CAACkE,IAAI,CAACV;AACpC;AACF,SAAA;QACA,OAAOrD,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;AAGH,IAAA,MAAMgE,aAAAA,GAAgB5D,MAAAA,CAAOC,OAAO,CAACX,KAAKO,SAAS,CAACmB,SAAS,CAAA,CAAErB,MAAM,CACnE,CAACC,GAAAA,EAAK,CAACiE,WAAWC,QAAAA,CAAS,GAAA;QACzB,OAAO;AACL,YAAA,GAAGlE,GAAG;YACN,CAACiE,SAAAA,GAAYC,QAAAA,CAASpC;AACxB,SAAA;AACF,IAAA,CAAA,EACA,EAAC,CAAA;IAGH,OAAO;QACLX,MAAAA,EAAQ;AAACqC,YAAAA;AAAe,SAAA;QACxB3E,UAAAA,EAAY+E,uBAAAA;QACZxC,SAAAA,EAAW4C,aAAAA;QACX3C,OAAAA,EAAS;AACP,YAAA,GAAGtC,QAAQsC,OAAO;AAClB,YAAA,GAAGtC,QAAQoF;AACb,SAAA;QACA7C,QAAAA,EAAU;YACR,GAAG5B,IAAAA,CAAKO,SAAS,CAACqB,QAAQ;AAC1B+B,YAAAA,WAAAA,EAAatE,QAAQgF,IAAAA,CAAKV;AAC5B;AACF,KAAA;AACF,CAAA;AAEA;;AAEkG,2GAE5Fe,mCAAAA,GAAsC,IAAA;IAC1C,MAAMC,WAAAA,GAAcC,gBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAACI,cAAc,EAAEC,wBAAAA,CAAAA;IAGzD,qBACE5B,GAAA,CAACC,KAAK4B,OAAO,EAAA;QAACN,WAAAA,EAAaA,WAAAA;AACzB,QAAA,QAAA,gBAAAvB,GAAA,CAAC5E,0BAAAA,EAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditConfigurationPage.js","sources":["../../../admin/src/pages/EditConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useTracking, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { useDoc } from '../hooks/useDocument';\nimport { useDocLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\nconst EditConfigurationPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchema, schema, model } = useDoc();\n const { isLoading: isLoadingLayout, error, list, edit } = useDocLayout();\n\n const {\n fieldSizes,\n error: errorFieldSizes,\n isLoading: isLoadingFieldSizes,\n isFetching: isFetchingFieldSizes,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorFieldSizes) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorFieldSizes),\n });\n }\n }, [errorFieldSizes, formatAPIError, toggleNotification]);\n\n const isLoading =\n isLoadingSchema || isLoadingLayout || isLoadingFieldSizes || isFetchingFieldSizes;\n\n const [updateConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(list.metadatas).reduce<Metadatas>(\n (acc, [name, { mainField: _mainField, ...listMeta }]) => {\n const existingEditMeta = edit.metadatas[name];\n\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = data.layout.flatMap((row) => row.children).find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: {\n ...existingEditMeta,\n ...editedMetadata,\n },\n list: listMeta,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: data.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: list.layout.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditEditSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (errorFieldSizes || error || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${edit.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={edit}\n />\n </>\n );\n};\n\nconst ProtectedEditConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditConfigurationPage, EditConfigurationPage };\n"],"names":["EditConfigurationPage","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","isLoadingSchema","schema","model","useDoc","isLoadingLayout","error","list","edit","useDocLayout","fieldSizes","errorFieldSizes","isLoadingFieldSizes","isFetching","isFetchingFieldSizes","useGetInitialDataQuery","undefined","selectFromResult","res","Object","entries","data","reduce","acc","attributeName","default","size","React","useEffect","type","message","updateConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","meta","metadatas","name","mainField","_mainField","listMeta","existingEditMeta","__temp_key__","_size","_name","editedMetadata","layout","flatMap","row","children","find","field","layouts","map","TEMP_FIELD_NAME","settings","setIn","uid","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","attributes","ProtectedEditConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditConfigurationPage.js","sources":["../../../admin/src/pages/EditConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useTracking, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { useDoc } from '../hooks/useDocument';\nimport { useDocLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\nconst EditConfigurationPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchema, schema, model } = useDoc();\n const { isLoading: isLoadingLayout, error, list, edit } = useDocLayout();\n\n const {\n fieldSizes,\n error: errorFieldSizes,\n isLoading: isLoadingFieldSizes,\n isFetching: isFetchingFieldSizes,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorFieldSizes) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorFieldSizes),\n });\n }\n }, [errorFieldSizes, formatAPIError, toggleNotification]);\n\n const isLoading =\n isLoadingSchema || isLoadingLayout || isLoadingFieldSizes || isFetchingFieldSizes;\n\n const [updateConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(list.metadatas).reduce<Metadatas>(\n (acc, [name, { mainField: _mainField, ...listMeta }]) => {\n const existingEditMeta = edit.metadatas[name];\n\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = data.layout.flatMap((row) => row.children).find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: {\n ...existingEditMeta,\n ...editedMetadata,\n },\n list: listMeta,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: data.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: list.layout.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditEditSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (errorFieldSizes || error || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${edit.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={edit}\n />\n </>\n );\n};\n\nconst ProtectedEditConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditConfigurationPage, EditConfigurationPage };\n"],"names":["EditConfigurationPage","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","isLoadingSchema","schema","model","useDoc","isLoadingLayout","error","list","edit","useDocLayout","fieldSizes","errorFieldSizes","isLoadingFieldSizes","isFetching","isFetchingFieldSizes","useGetInitialDataQuery","undefined","selectFromResult","res","Object","entries","data","reduce","acc","attributeName","default","size","React","useEffect","type","message","updateConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","meta","metadatas","name","mainField","_mainField","listMeta","existingEditMeta","__temp_key__","_size","_name","editedMetadata","layout","flatMap","row","children","find","field","layouts","map","TEMP_FIELD_NAME","settings","setIn","uid","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","attributes","ProtectedEditConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,qBAAAA,GAAwB,IAAA;IAC5B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;IACpD,MAAM,EAAEC,WAAWC,eAAe,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGC,kBAAAA,EAAAA;IACtD,MAAM,EAAEJ,SAAAA,EAAWK,eAAe,EAAEC,KAAK,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGC,8BAAAA,EAAAA;AAE1D,IAAA,MAAM,EACJC,UAAU,EACVJ,KAAAA,EAAOK,eAAe,EACtBX,SAAAA,EAAWY,mBAAmB,EAC9BC,UAAAA,EAAYC,oBAAoB,EACjC,GAAGC,4BAAuBC,SAAAA,EAAW;AACpCC,QAAAA,gBAAAA,EAAkB,CAACC,GAAAA,GAAAA;YACjB,MAAMR,UAAAA,GAAaS,OAAOC,OAAO,CAACF,IAAIG,IAAI,EAAEX,cAAc,EAAC,CAAA,CAAGY,MAAM,CAElE,CAACC,KAAK,CAACC,aAAAA,EAAe,EAAEC,OAAAA,EAASC,IAAI,EAAE,CAAC,GAAA;gBACxCH,GAAG,CAACC,cAAc,GAAGE,IAAAA;gBAErB,OAAOH,GAAAA;AACT,YAAA,CAAA,EAAG,EAAC,CAAA;YAEJ,OAAO;AACLV,gBAAAA,UAAAA,EAAYK,IAAIL,UAAU;AAC1Bb,gBAAAA,SAAAA,EAAWkB,IAAIlB,SAAS;AACxBM,gBAAAA,KAAAA,EAAOY,IAAIZ,KAAK;AAChBI,gBAAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAA;AAEAiB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIjB,eAAAA,EAAiB;YACnBhB,kBAAAA,CAAmB;gBACjBkC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShC,cAAAA,CAAea,eAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,eAAAA;AAAiBb,QAAAA,cAAAA;AAAgBH,QAAAA;AAAmB,KAAA,CAAA;IAExD,MAAMK,SAAAA,GACJC,eAAAA,IAAmBI,eAAAA,IAAmBO,mBAAAA,IAAuBE,oBAAAA;IAE/D,MAAM,CAACiB,oBAAoB,GAAGC,sDAAAA,EAAAA;AAC9B,IAAA,MAAMC,eAAmD,OAAOZ,IAAAA,GAAAA;QAC9D,IAAI;YACF9B,UAAAA,CAAW,2BAAA,CAAA;AAEX;;;;UAKA,MAAM2C,OAAOf,MAAAA,CAAOC,OAAO,CAACb,IAAAA,CAAK4B,SAAS,EAAEb,MAAM,CAChD,CAACC,GAAAA,EAAK,CAACa,MAAM,EAAEC,SAAAA,EAAWC,UAAU,EAAE,GAAGC,UAAU,CAAC,GAAA;AAClD,gBAAA,MAAMC,gBAAAA,GAAmBhC,IAAAA,CAAK2B,SAAS,CAACC,IAAAA,CAAK;AAE7C,gBAAA,MAAM,EACJK,YAAY,EACZf,IAAAA,EAAMgB,KAAK,EACXN,IAAAA,EAAMO,KAAK,EACX,GAAGC,cAAAA,EACJ,GAAGvB,KAAKwB,MAAM,CAACC,OAAO,CAAC,CAACC,GAAAA,GAAQA,GAAAA,CAAIC,QAAQ,CAAA,CAAEC,IAAI,CAAC,CAACC,KAAAA,GAAUA,KAAAA,CAAMd,IAAI,KAAKA,SAAS,EAAC;gBAExFb,GAAG,CAACa,KAAK,GAAG;oBACV5B,IAAAA,EAAM;AACJ,wBAAA,GAAGgC,gBAAgB;AACnB,wBAAA,GAAGI;AACL,qBAAA;oBACArC,IAAAA,EAAMgC;AACR,iBAAA;gBAEA,OAAOhB,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,MAAML,GAAAA,GAAM,MAAMa,mBAAAA,CAAoB;gBACpCoB,OAAAA,EAAS;AACP3C,oBAAAA,IAAAA,EAAMa,KAAKwB,MAAM,CAACO,GAAG,CAAC,CAACL,MACrBA,GAAAA,CAAIC,QAAQ,CAAC1B,MAAM,CAAwC,CAACC,GAAAA,EAAK,EAAEa,IAAI,EAAEV,IAAI,EAAE,GAAA;AAC7E,4BAAA,IAAIU,SAASiB,sBAAAA,EAAiB;gCAC5B,OAAO;AAAI9B,oCAAAA,GAAAA,GAAAA;AAAK,oCAAA;AAAEa,wCAAAA,IAAAA;AAAMV,wCAAAA;AAAK;AAAE,iCAAA;AACjC,4BAAA;4BAEA,OAAOH,GAAAA;AACT,wBAAA,CAAA,EAAG,EAAE,CAAA,CAAA;oBAEPhB,IAAAA,EAAMA,IAAAA,CAAKsC,MAAM,CAACO,GAAG,CAAC,CAACF,KAAAA,GAAUA,MAAMd,IAAI;AAC7C,iBAAA;AACAkB,gBAAAA,QAAAA,EAAUC,aAAAA,CAAMlC,IAAAA,CAAKiC,QAAQ,EAAE,aAAA,EAAetC,SAAAA,CAAAA;gBAC9CmB,SAAAA,EAAWD,IAAAA;gBACXsB,GAAAA,EAAKrD;AACP,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUe,GAAAA,EAAK;gBACjB3B,UAAAA,CAAW,qBAAA,CAAA;gBACXI,kBAAAA,CAAmB;oBACjBkC,IAAAA,EAAM,SAAA;AACNC,oBAAAA,OAAAA,EAASrC,aAAAA,CAAc;wBAAEgE,EAAAA,EAAI,4BAAA;wBAA8BC,cAAAA,EAAgB;AAAQ,qBAAA;AACrF,iBAAA,CAAA;YACF,CAAA,MAAO;gBACL/D,kBAAAA,CAAmB;oBACjBkC,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAAShC,cAAAA,CAAeoB,IAAIZ,KAAK;AACnC,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACNX,kBAAAA,CAAmB;gBACjBkC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASrC,aAAAA,CAAc;oBAAEgE,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAI1D,SAAAA,EAAW;QACb,qBAAO2D,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIlD,eAAAA,IAAmBL,KAAAA,IAAS,CAACJ,MAAAA,EAAQ;QACvC,qBAAOyD,cAAA,CAACC,iBAAKE,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAL,cAAA,CAACC,iBAAKK,KAAK,EAAA;0BAAE,CAAC,UAAU,EAAEzD,IAAAA,CAAK8C,QAAQ,CAACY,WAAW,CAAC,UAAU;;0BAC9DP,cAAA,CAACQ,sBAAAA,EAAAA;gBACCC,QAAAA,EAAUnC,YAAAA;AACVoC,gBAAAA,UAAAA,EAAYnE,OAAOmE,UAAU;gBAC7B3D,UAAAA,EAAYA,UAAAA;gBACZmC,MAAAA,EAAQrC;;;;AAIhB;AAEA,MAAM8D,8BAAAA,GAAiC,IAAA;IACrC,MAAMC,WAAAA,GAAcC,sBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAACI,cAAc,EAAEC,6BAAAA,CAAAA;IAGzD,qBACEjB,cAAA,CAACC,iBAAKiB,OAAO,EAAA;QAACN,WAAAA,EAAaA,WAAAA;AACzB,QAAA,QAAA,gBAAAZ,cAAA,CAACrE,qBAAAA,EAAAA,EAAAA;;AAGP;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTracking, useNotification, useAPIErrorHandler
|
|
3
|
+
import { Page, useTracking, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields.mjs';
|
|
6
6
|
import { ConfigurationForm } from '../components/ConfigurationForm/Form.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditConfigurationPage.mjs","sources":["../../../admin/src/pages/EditConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useTracking, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { useDoc } from '../hooks/useDocument';\nimport { useDocLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\nconst EditConfigurationPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchema, schema, model } = useDoc();\n const { isLoading: isLoadingLayout, error, list, edit } = useDocLayout();\n\n const {\n fieldSizes,\n error: errorFieldSizes,\n isLoading: isLoadingFieldSizes,\n isFetching: isFetchingFieldSizes,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorFieldSizes) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorFieldSizes),\n });\n }\n }, [errorFieldSizes, formatAPIError, toggleNotification]);\n\n const isLoading =\n isLoadingSchema || isLoadingLayout || isLoadingFieldSizes || isFetchingFieldSizes;\n\n const [updateConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(list.metadatas).reduce<Metadatas>(\n (acc, [name, { mainField: _mainField, ...listMeta }]) => {\n const existingEditMeta = edit.metadatas[name];\n\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = data.layout.flatMap((row) => row.children).find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: {\n ...existingEditMeta,\n ...editedMetadata,\n },\n list: listMeta,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: data.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: list.layout.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditEditSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (errorFieldSizes || error || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${edit.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={edit}\n />\n </>\n );\n};\n\nconst ProtectedEditConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditConfigurationPage, EditConfigurationPage };\n"],"names":["EditConfigurationPage","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","isLoadingSchema","schema","model","useDoc","isLoadingLayout","error","list","edit","useDocLayout","fieldSizes","errorFieldSizes","isLoadingFieldSizes","isFetching","isFetchingFieldSizes","useGetInitialDataQuery","undefined","selectFromResult","res","Object","entries","data","reduce","acc","attributeName","default","size","React","useEffect","type","message","updateConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","meta","metadatas","name","mainField","_mainField","listMeta","existingEditMeta","__temp_key__","_size","_name","editedMetadata","layout","flatMap","row","children","find","field","layouts","map","TEMP_FIELD_NAME","settings","setIn","uid","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","attributes","ProtectedEditConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditConfigurationPage.mjs","sources":["../../../admin/src/pages/EditConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useTracking, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { useDoc } from '../hooks/useDocument';\nimport { useDocLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\nconst EditConfigurationPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchema, schema, model } = useDoc();\n const { isLoading: isLoadingLayout, error, list, edit } = useDocLayout();\n\n const {\n fieldSizes,\n error: errorFieldSizes,\n isLoading: isLoadingFieldSizes,\n isFetching: isFetchingFieldSizes,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorFieldSizes) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorFieldSizes),\n });\n }\n }, [errorFieldSizes, formatAPIError, toggleNotification]);\n\n const isLoading =\n isLoadingSchema || isLoadingLayout || isLoadingFieldSizes || isFetchingFieldSizes;\n\n const [updateConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(list.metadatas).reduce<Metadatas>(\n (acc, [name, { mainField: _mainField, ...listMeta }]) => {\n const existingEditMeta = edit.metadatas[name];\n\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = data.layout.flatMap((row) => row.children).find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: {\n ...existingEditMeta,\n ...editedMetadata,\n },\n list: listMeta,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: data.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: list.layout.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditEditSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (errorFieldSizes || error || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${edit.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={edit}\n />\n </>\n );\n};\n\nconst ProtectedEditConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditConfigurationPage, EditConfigurationPage };\n"],"names":["EditConfigurationPage","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","isLoadingSchema","schema","model","useDoc","isLoadingLayout","error","list","edit","useDocLayout","fieldSizes","errorFieldSizes","isLoadingFieldSizes","isFetching","isFetchingFieldSizes","useGetInitialDataQuery","undefined","selectFromResult","res","Object","entries","data","reduce","acc","attributeName","default","size","React","useEffect","type","message","updateConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","meta","metadatas","name","mainField","_mainField","listMeta","existingEditMeta","__temp_key__","_size","_name","editedMetadata","layout","flatMap","row","children","find","field","layouts","map","TEMP_FIELD_NAME","settings","setIn","uid","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","attributes","ProtectedEditConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
|