@strapi/content-manager 5.37.0 → 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useTracking, useNotification, useQueryParams, useRBAC, Layouts, GradientBadge, ConfirmDialog } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import { Dialog,
|
|
4
|
+
import { Dialog, Button, Link, Typography, Flex } from '@strapi/design-system';
|
|
5
5
|
import { ArrowLeft, WarningCircle } from '@strapi/icons';
|
|
6
6
|
import { stringify } from 'qs';
|
|
7
7
|
import { useIntl } from 'react-intl';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionInputRenderer.js","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HistoryVersionDataResponse } from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n if (\n !formattedFieldValue ||\n (formattedFieldValue.results.length === 0 && formattedFieldValue.meta.missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n {/* @ts-expect-error – we dont need closeLabel */}\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue;\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n /* @ts-expect-error – we dont need closeLabel */\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: any) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, any> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n node[key] = node[key] || {};\n }\n\n // Traverse down the tree\n node = node[key];\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n const { layout } = componentsLayout[props.attribute.component];\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas: configuration.components[props.attribute.component].metadatas,\n fieldSizes,\n schemaAttributes: components[props.attribute.component].attributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","components","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","componentsLayout","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","layout","component","remainingFieldsLayout","getRemaingFieldsLayout","metadatas","schemaAttributes","attributes","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAMA,WAAcC,GAAAA,uBAAAA,CAAOC,kBAAOC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,UAAY,EAAA,OAAA;AAASC,IAAAA,OAAAA,EAAS,IAAO,EAAA;IAAGC,MAAQ,EAAA;AAAO,CAAA,CAAE;;;;AAInG,CAAC;AAED;;AAEkG,qGAElG,MAAMC,YAAAA,GAAeN,uBAAOO,CAAAA,iBAAAA,CAAK;;;;;;;;;AASjC,CAAC;AAED,MAAMC,sBAAsB,CAACC,KAAAA,GAAAA;IAC3B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMC,KAAAA,GAAQC,oBAEZJ,CAAAA,KAAAA,CAAMK,IAAI,CAAA;AAEZ;;;AAGC,MACD,IAAIC,mBAAAA;AACJ,IAAA,IAAIH,KAAO,EAAA;AACTG,QAAAA,mBAAAA,GAAsBC,KAAMC,CAAAA,OAAO,CAACL,KAAAA,CAAMM,KAAK,CAC3C,GAAA;AAAEC,YAAAA,OAAAA,EAASP,MAAMM,KAAK;YAAEE,IAAM,EAAA;gBAAEC,YAAc,EAAA;AAAE;AAAE,SAAA,GAClDT,MAAMM,KAAK;AACjB;AAEA,IAAA,IACE,CAACH,mBAAAA,IACAA,mBAAoBI,CAAAA,OAAO,CAACG,MAAM,KAAK,CAAA,IAAKP,mBAAoBK,CAAAA,IAAI,CAACC,YAAY,KAAK,CACvF,EAAA;QACA,qBACEE,eAAA,CAAAC,mBAAA,EAAA;;AACE,8BAAAC,cAAA,CAACC,mBAAMC,KAAK,EAAA;AAACC,oBAAAA,MAAAA,EAAQnB,MAAMoB,WAAW;AAAGpB,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMqB;;8BAC/CL,cAACM,CAAAA,gBAAAA,EAAAA;oBAAIC,SAAW,EAAA,CAAA;AAEd,oBAAA,QAAA,gBAAAP,cAAC1B,CAAAA,WAAAA,EAAAA;wBAAYkC,OAAQ,EAAA,SAAA;kCAClBvB,aAAc,CAAA;4BACbwB,EAAI,EAAA,8CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;AAKV;AAEA,IAAA,MAAM,EAAEhB,OAAO,EAAEC,IAAI,EAAE,GAAGL,mBAAAA;AAE1B,IAAA,qBACEQ,eAACQ,CAAAA,gBAAAA,EAAAA;;AACC,0BAAAN,cAAA,CAACC,mBAAMC,KAAK,EAAA;AAAElB,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMqB;;YACnBX,OAAQG,CAAAA,MAAM,GAAG,CAAA,kBAChBG,cAACW,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;gBAAGN,SAAW,EAAA,CAAA;gBAAGO,UAAW,EAAA,SAAA;0BACvDpB,OAAQqB,CAAAA,GAAG,CAAC,CAACC,YAAAA,GAAAA;;AAEZ,oBAAA,MAAM,EAAEC,WAAW,EAAE,GAAGjC,MAAMkC,SAAS;AACvC,oBAAA,MAAMC,IAAO,GAAA,CAAC,GAAG,EAAEC,4BAAiB,CAAA,CAAC,EAAEH,WAAAA,CAAY,CAAC,EAAED,YAAaK,CAAAA,UAAU,CAAE,CAAA;AAC/E,oBAAA,MAAMhB,KAAQiB,GAAAA,0BAAAA,CAAiBN,YAAchC,EAAAA,KAAAA,CAAMuC,SAAS,CAAA;AAC5D,oBAAA,MAAMC,sBAAsBP,WAAgB,KAAA,aAAA;AAE5C,oBAAA,qBACEnB,eAACa,CAAAA,iBAAAA,EAAAA;wBAECc,UAAY,EAAA,CAAA;wBACZC,aAAe,EAAA,CAAA;wBACfC,WAAa,EAAA,CAAA;wBACbC,YAAc,EAAA,CAAA;wBACdC,SAAS,EAAA,IAAA;wBACTC,WAAY,EAAA,YAAA;wBACZC,UAAW,EAAA,YAAA;wBACXC,cAAe,EAAA,eAAA;;0CAEfhC,cAACM,CAAAA,gBAAAA,EAAAA;gCAAI2B,QAAU,EAAA,CAAA;gCAAGR,UAAY,EAAA,CAAA;gCAAGC,aAAe,EAAA,CAAA;gCAAGE,YAAc,EAAA,CAAA;AAC/D,gCAAA,QAAA,gBAAA5B,cAACkC,CAAAA,oBAAAA,EAAAA;oCAAQ7B,KAAOA,EAAAA,KAAAA;AACbmB,oCAAAA,QAAAA,EAAAA,mBAAAA,iBACCxB,cAACmC,CAAAA,uBAAAA,EAAAA;AAAY9B,wCAAAA,QAAAA,EAAAA;uDAEbL,cAACnB,CAAAA,YAAAA,EAAAA;wCAAauD,GAAKC,EAAAA,sBAAAA;wCAASC,EAAInB,EAAAA,IAAAA;AAC7Bd,wCAAAA,QAAAA,EAAAA;;;;0CAKTL,cAACuC,CAAAA,6BAAAA,EAAAA;AAAeC,gCAAAA,MAAAA,EAAQxB,aAAawB;;;uBArBhCxB,YAAaK,CAAAA,UAAU,IAAIL,YAAAA,CAAaP,EAAE,CAAA;AAwBrD,iBAAA;;AAGHd,YAAAA,IAAAA,CAAKC,YAAY,GAAG,CACnB,mEACAI,cAAC1B,CAAAA,WAAAA,EAAAA;gBACCiC,SAAW,EAAA,CAAA;gBACXC,OAAQ,EAAA,SAAA;AACRiC,gBAAAA,KAAAA,EAAOxD,aACL,CAAA;oBACEwB,EAAI,EAAA,yDAAA;oBACJC,cACE,EAAA;iBAEJ,EAAA;AAAEgC,oBAAAA,MAAAA,EAAQ/C,KAAKC;AAAa,iBAAA,CAAA;0BAG7BX,aACC,CAAA;oBACEwB,EAAI,EAAA,2DAAA;oBACJC,cACE,EAAA;iBAEJ,EAAA;AAAEgC,oBAAAA,MAAAA,EAAQ/C,KAAKC;AAAa,iBAAA;;;;AAMxC,CAAA;AAEA;;AAEkG;AAGlG,MAAM+C,0BAAAA,GAA6B,CAACC,OAAiBnD,EAAAA,KAAAA,GAAAA;IACnD,MAAMoD,IAAAA,GAAOD,OAAQE,CAAAA,KAAK,CAAC,GAAA,CAAA;;AAE3B,IAAA,MAAMC,OAA4B,EAAC;;AAGnC,IAAA,IAAIC,IAAOD,GAAAA,IAAAA;IACXF,IAAKI,CAAAA,OAAO,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;;QAEjB,IAAID,GAAAA,KAAQ,WAAeA,IAAAA,GAAAA,KAAQ,aAAe,EAAA;;AAElD,QAAA,IAAIC,KAAUN,KAAAA,IAAAA,CAAKhD,MAAM,GAAG,CAAG,EAAA;YAC7BmD,IAAI,CAACE,IAAI,GAAGzD,KAAAA;SACP,MAAA;;AAELuD,YAAAA,IAAI,CAACE,GAAI,CAAA,GAAGF,IAAI,CAACE,GAAAA,CAAI,IAAI,EAAC;AAC5B;;QAGAF,IAAOA,GAAAA,IAAI,CAACE,GAAI,CAAA;AAClB,KAAA,CAAA;IAEA,OAAOH,IAAAA;AACT,CAAA;AAEA,MAAMK,mBAAmB,CAACpE,KAAAA,GAAAA;AACxB,IAAA,MAAM,EAAES,KAAK,EAAE,GAAGL,oBAAAA,CAASJ,MAAMK,IAAI,CAAA;IACrC,MAAMK,OAAAA,GAAUD,KAAOC,EAAAA,OAAAA,IAAW,EAAE;IACpC,MAAMC,IAAAA,GAAOF,OAAOE,IAAQ,IAAA;QAAEC,YAAc,EAAA;AAAE,KAAA;IAE9C,MAAM,EAAEX,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMmE,SAASC,wBAAa,CAAA,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAMF,MAAM,CAAA;IACvE,MAAMG,YAAAA,GAAeH,OAAOI,KAAK;AAIjC,IAAA,qBACE3D,eAACa,CAAAA,iBAAAA,EAAAA;QAAKC,SAAU,EAAA,QAAA;QAASC,GAAK,EAAA,CAAA;QAAGC,UAAW,EAAA,SAAA;;0BAC1Cd,cAAC0D,CAAAA,gBAAAA,EAAAA;gBACCC,MAAO,EAAA,KAAA;gBACPC,QAAU,EAAA,IAAA;gBACVC,aAAelB,EAAAA,0BAAAA,CAA2B3D,KAAMK,CAAAA,IAAI,EAAEK,OAAAA,CAAAA;AAEtD,gBAAA,QAAA,gBAAAM,cAACwD,CAAAA,YAAAA,EAAAA;AAAc,oBAAA,GAAGxE,KAAK;oBAAE4E,QAAU,EAAA,IAAA;oBAAME,QAAUpE,EAAAA,OAAAA,CAAQG,MAAM,GAAG;;;YAErEF,IAAKC,CAAAA,YAAY,GAAG,CAAA,kBACnBI,cAAC1B,CAAAA,WAAAA,EAAAA;gBACCkC,OAAQ,EAAA,SAAA;gBACR9B,UAAW,EAAA,OAAA;AACXC,gBAAAA,OAAAA,EAAS,IAAO,EAAA;AAChB8D,gBAAAA,KAAAA,EAAOxD,aACL,CAAA;oBACEwB,EAAI,EAAA,sDAAA;oBACJC,cACE,EAAA;iBAEJ,EAAA;AAAEgC,oBAAAA,MAAAA,EAAQ/C,KAAKC;AAAa,iBAAA,CAAA;0BAG7BX,aACC,CAAA;oBACEwB,EAAI,EAAA,wDAAA;oBACJC,cACE,EAAA;iBAEJ,EAAA;AAAEgC,oBAAAA,MAAAA,EAAQ/C,KAAKC;AAAa,iBAAA;;;;AAMxC,CAAA;AAUA;;;IAIA,MAAMmE,iBAAiB,CAAC3D,WAAAA,GAAAA;AACtB,IAAA,IAAI,eAAC4D,gBAAAA,CAAMC,cAAc,CAAC7D,WAAc,CAAA,EAAA;QACtC,OAAOA,WAAAA;AACT;;AAGA,IAAA,MAAM8D,qBAAqB9D,WAAYpB,CAAAA,KAAK,CAACyD,KAAK,CAAChC,EAAE;AAErD,IAAA,IAAIyD,uBAAuB,sBAAwB,EAAA;QACjD,qBAAOF,gBAAAA,CAAMG,YAAY,CAAC/D,WAAa,EAAA;AACrC,YAAA,GAAGA,YAAYpB,KAAK;YACpByD,KAAO,EAAA;gBACLhC,EAAI,EAAA,2BAAA;gBACJC,cACE,EAAA;AACJ;AACF,SAAA,CAAA;AACF;AAEA,IAAA,IAAIwD,uBAAuB,0BAA4B,EAAA;QACrD,qBAAOF,gBAAAA,CAAMG,YAAY,CAAC/D,WAAa,EAAA;AACrC,YAAA,GAAGA,YAAYpB,KAAK;YACpByD,KAAO,EAAA;gBACLhC,EAAI,EAAA,+BAAA;gBACJC,cACE,EAAA;AACJ;AACF,SAAA,CAAA;AACF;;IAGA,OAAON,WAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACKgE,MAAAA,oBAAAA,GAAuB,CAAC,EAC5BC,OAAO,EACPC,IAAAA,EAAMC,YAAY,EAClBC,mBAAmB,KAAK,EACxBpE,WAAW,EACX,GAAGpB,KACuB,EAAA,GAAA;AAC1B,IAAA,MAAMyF,oBAAoBV,cAAe3D,CAAAA,WAAAA,CAAAA;IAEzC,MAAM,EAAEnB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMwF,UAAUC,yBAAkB,CAAA,gBAAA,EAAkB,CAACpB,KAAAA,GAAUA,MAAMqB,eAAe,CAAA;AACpF,IAAA,MAAMC,gBAAgBF,yBAAkB,CAAA,gBAAA,EAAkB,CAACpB,KAAAA,GAAUA,MAAMsB,aAAa,CAAA;IACxF,MAAMC,UAAAA,GAAaC,sBAAiB,CAAA,CAACxB,KAAUA,GAAAA,KAAK,CAAC,iBAAkB,CAAA,CAACyB,GAAG,CAACF,UAAU,CAAA;AAEtF,IAAA,MAAM,EAAErE,EAAE,EAAEwE,UAAU,EAAE,GAAGC,kBAAAA,EAAAA;AAC3B,IAAA,MAAMC,iBAAiBC,mBAAQ,CAAA,eAAA,EAAiB,CAAC7B,KAAAA,GAAUA,MAAMK,QAAQ,CAAA;AAEzE,IAAA,MAAMyB,kBAAkBC,oBAAe,CAAA,iBAAA,EAAmB,CAAC/B,KAAAA,GAAUA,MAAM8B,eAAe,CAAA;AAE1F,IAAA,MAAME,kBAAkBC,4BAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKF,eAAe,CAAA;AACvF,IAAA,MAAMG,gBAAgBF,4BAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKC,aAAa,CAAA;AACnF,IAAA,MAAMC,kBAAkBH,4BAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKE,eAAe,CAAA;AACvF,IAAA,MAAMC,gBAAgBJ,4BAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKG,aAAa,CAAA;IAEnF,MAAMC,cAAAA,GAAiBpF,KAAKkF,eAAkBJ,GAAAA,eAAAA;IAC9C,MAAMO,cAAAA,GAAiBrF,KAAKiF,aAAgBH,GAAAA,eAAAA;AAC5C;;;MAIA,MAAMQ,mBAAmBH,aAAc5G,CAAAA,KAAAA,CAAMK,IAAI,EAAEyG,cAAAA,EAAgB9G,MAAMgH,IAAI,CAAA;AAC7E,IAAA,MAAMC,mBAAmBL,aAAc5G,CAAAA,KAAAA,CAAMK,IAAI,EAAEwG,cAAAA,EAAgB7G,MAAMgH,IAAI,CAAA;AAE7E,IAAA,MAAM3C,SAASC,wBAAa,CAAA,eAAA,EAAiB,CAAC0B,GAAAA,GAAQA,IAAI3B,MAAM,CAAA;IAChE,MAAM,EAAE6C,kBAAkB,EAAE,GAAGC,oCAC7BC,+BAAgCpH,CAAAA,KAAAA,CAAMkC,SAAS,CAAI,GAAA;QAAClC,KAAMkC,CAAAA,SAAS,CAACmF;KAAY,GAAGC,SAAAA,CAAAA;AAGrF,IAAA,MAAMhC,IAAOiC,GAAAA,0BAAAA,CAAahC,YAAcvF,EAAAA,KAAAA,CAAMkC,SAAS,CAAA;AACvD,IAAA,MAAM,EACJsF,IAAM,EAAA,EAAEvB,YAAYwB,gBAAgB,EAAE,EACvC,GAAGC,8BAAAA,EAAAA;AAEJ,IAAA,IAAI,CAACrC,OAAS,EAAA;QACZ,OAAO,IAAA;AACT;AAEA;;AAEC,MACD,IAAI,CAACG,gBAAAA,IAAoB,CAACuB,gBAAAA,IAAoB,CAACV,eAAiB,EAAA;AAC9D,QAAA,qBAAOrF,cAAC2G,CAAAA,0BAAAA,EAAAA;YAAgBrC,IAAMA,EAAAA,IAAAA;AAAO,YAAA,GAAGtF;;AAC1C;IAEA,MAAM4H,eAAAA,GACJ,CAAEX,gBAAAA,IAAoB,CAACZ,eAAoBrG,IAAAA,KAAAA,CAAM4E,QAAQ,IAAIuB,cAAAA;AAE/D;;;AAGC,MACD,MAAM0B,eAAkBnC,GAAAA,OAAAA,CAAQ/E,IAAI,CAACmH,iBAAiB,CAACC,KAAK;IAC5D,IAAIC,MAAAA,CAAOnE,IAAI,CAACgE,eAAAA,CAAAA,CAAiBI,QAAQ,CAACjI,KAAAA,CAAMK,IAAI,CAAG,EAAA;AACrD,QAAA,qBACES,eAACa,CAAAA,iBAAAA,EAAAA;YAAKC,SAAU,EAAA,QAAA;YAASE,UAAW,EAAA,YAAA;YAAaD,GAAK,EAAA,CAAA;;AACpD,8BAAAb,cAAA,CAACC,mBAAMC,KAAK,EAAA;AAAElB,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMqB;;8BACpBL,cAAC1B,CAAAA,WAAAA,EAAAA;oBACC4I,KAAM,EAAA,MAAA;oBACNxI,UAAW,EAAA,OAAA;AACXC,oBAAAA,OAAAA,EAAS,IAAO,EAAA;oBAChB6B,OAAQ,EAAA,SAAA;AACRiC,oBAAAA,KAAAA,EAAOxD,aAAc,CAAA;wBACnBwB,EAAI,EAAA,iDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAECzB,aAAc,CAAA;wBACbwB,EAAI,EAAA,mDAAA;wBACJC,cACE,EAAA;AACJ,qBAAA;;;;AAIR;AAEA;;;AAGC,MACD,IAAI0F,+BAAAA,CAAgCpH,KAAMkC,CAAAA,SAAS,CAAG,EAAA;AACpD,QAAA,MAAMiG,cAAcjB,kBAAkB,CAAClH,MAAMkC,SAAS,CAACmF,WAAW,CAAC;AAEnE,QAAA,IAAIc,WAAa,EAAA;AACf,YAAA,qBACEnH,cAACmH,CAAAA,WAAAA,EAAAA;AACE,gBAAA,GAAGnI,KAAK;;gBAETsF,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA;;AAGhB;AAEA,QAAA,qBACE5G,cAACoH,CAAAA,yBAAAA,EAAAA;AACE,YAAA,GAAGpI,KAAK;YACTsF,IAAMA,EAAAA,IAAAA;YACNlE,WAAaqE,EAAAA,iBAAAA;;YAEbuB,IAAMhH,EAAAA,KAAAA,CAAMkC,SAAS,CAACmF,WAAW;YACjCzC,QAAUgD,EAAAA;;AAGhB;AAEA;;;AAGC,MACD,IAAI5H,KAAAA,CAAMgH,IAAI,KAAK,OAAS,EAAA;AAC1B,QAAA,qBACEhG,cAACoD,CAAAA,gBAAAA,EAAAA;AAAkB,YAAA,GAAGpE,KAAK;YAAEoB,WAAaqE,EAAAA,iBAAAA;YAAmBb,QAAUgD,EAAAA;;AAE3E;AACA;;AAEC,MACD,MAAMS,eAAAA,GAAkBL,MAAOnE,CAAAA,IAAI,CAACQ,MAAAA,CAAAA;IACpC,IAAI,CAAC+C,+BAAgCpH,CAAAA,KAAAA,CAAMkC,SAAS,CAAA,IAAKmG,gBAAgBJ,QAAQ,CAACjI,KAAMgH,CAAAA,IAAI,CAAG,EAAA;AAC7F,QAAA,MAAMmB,WAAc9D,GAAAA,MAAM,CAACrE,KAAAA,CAAMgH,IAAI,CAAC;AACtC,QAAA,qBACEhG,cAACmH,CAAAA,WAAAA,EAAAA;AACE,YAAA,GAAGnI,KAAK;;YAETsF,IAAMA,EAAAA,IAAAA;YACNlE,WAAaqE,EAAAA,iBAAAA;YACbb,QAAUgD,EAAAA;;AAGhB;AAEA;;;MAIA,OAAQ5H,MAAMgH,IAAI;QAChB,KAAK,QAAA;AACH,YAAA,qBAAOhG,cAACsH,CAAAA,uBAAAA,EAAAA;AAAa,gBAAA,GAAGtI,KAAK;gBAAEsF,IAAMA,EAAAA,IAAAA;AAAM0B,gBAAAA,IAAAA,EAAMhH,MAAMgH,IAAI;gBAAEpC,QAAUgD,EAAAA;;QACzE,KAAK,WAAA;YACH,MAAM,EAAEW,MAAM,EAAE,GAAGd,gBAAgB,CAACzH,KAAMkC,CAAAA,SAAS,CAACsG,SAAS,CAAC;;YAE9D,MAAM,CAACC,qBAAsB,CAAA,GAAGC,qCAAuB,CAAA;gBACrDH,MAAQ,EAAA;AAACA,oBAAAA;AAAO,iBAAA;gBAChBI,SAAW9C,EAAAA,aAAAA,CAAcI,UAAU,CAACjG,KAAAA,CAAMkC,SAAS,CAACsG,SAAS,CAAC,CAACG,SAAS;AACxE7C,gBAAAA,UAAAA;gBACA8C,gBAAkB3C,EAAAA,UAAU,CAACjG,KAAMkC,CAAAA,SAAS,CAACsG,SAAS,CAAC,CAACK;AAC1D,aAAA,CAAA;AAEA,YAAA,qBACE7H,cAAC8H,CAAAA,oBAAAA,EAAAA;AACE,gBAAA,GAAG9I,KAAK;gBACTuI,MAAQ,EAAA;AAAIA,oBAAAA,GAAAA,MAAAA;AAAYE,oBAAAA,GAAAA,qBAAAA,IAAyB;AAAI,iBAAA;gBACrDnD,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA,eAAAA;AAET,gBAAA,QAAA,EAAA,CAACmB,2BAAe/H,cAACoE,CAAAA,oBAAAA,EAAAA;AAAsB,wBAAA,GAAG2D,UAAU;wBAAEvD,gBAAkB,EAAA;;;QAG/E,KAAK,aAAA;AACH,YAAA,qBACExE,cAACgI,CAAAA,iBAAAA,EAAAA;AACE,gBAAA,GAAGhJ,KAAK;gBACTsF,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA,eAAAA;AAET,gBAAA,QAAA,EAAA,CAACmB,2BAAe/H,cAACoE,CAAAA,oBAAAA,EAAAA;AAAsB,wBAAA,GAAG2D,UAAU;wBAAEvD,gBAAkB,EAAA;;;QAG/E,KAAK,UAAA;AACH,YAAA,qBACExE,cAACjB,CAAAA,mBAAAA,EAAAA;AACE,gBAAA,GAAGC,KAAK;gBACTsF,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA;;QAGhB,KAAK,UAAA;AACH,YAAA,qBACE5G,cAACiI,CAAAA,eAAAA,EAAAA;AACE,gBAAA,GAAGjJ,KAAK;gBACTsF,IAAMA,EAAAA,IAAAA;AACN0B,gBAAAA,IAAAA,EAAMhH,MAAMgH,IAAI;gBAChB5F,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA;;QAGhB,KAAK,KAAA;AACH,YAAA,qBACE5G,cAACkI,CAAAA,YAAAA,EAAAA;AACE,gBAAA,GAAGlJ,KAAK;gBACTsF,IAAMA,EAAAA,IAAAA;AACN0B,gBAAAA,IAAAA,EAAMhH,MAAMgH,IAAI;gBAChB5F,WAAaqE,EAAAA,iBAAAA;gBACbb,QAAUgD,EAAAA;;AAGhB;;AAEC,QACD,KAAK,aAAA;AACH,YAAA,qBACE5G,cAACoH,CAAAA,yBAAAA,EAAAA;AACE,gBAAA,GAAGpI,KAAK;gBACTsF,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;gBACb0D,OAASnJ,EAAAA,KAAAA,CAAMkC,SAAS,CAACkH,IAAI,CAACrH,GAAG,CAAC,CAACtB,KAAAA,IAAW;AAAEA,wBAAAA;qBAAM,CAAA,CAAA;;AAEtDuG,gBAAAA,IAAAA,EAAMhH,KAAMqH,CAAAA,WAAW,GAAG,cAAA,GAAiBrH,MAAMgH,IAAI;gBACrDpC,QAAUgD,EAAAA;;AAGhB,QAAA;;YAEE,MAAM,EAAEyB,QAAQC,OAAO,EAAE/G,WAAWgH,UAAU,EAAE,GAAGC,SAAAA,EAAW,GAAGxJ,KAAAA;AACjE,YAAA,qBACEgB,cAACoH,CAAAA,yBAAAA,EAAAA;AACE,gBAAA,GAAGoB,SAAS;gBACblE,IAAMA,EAAAA,IAAAA;gBACNlE,WAAaqE,EAAAA,iBAAAA;;AAEbuB,gBAAAA,IAAAA,EAAMhH,KAAMqH,CAAAA,WAAW,GAAG,cAAA,GAAiBrH,MAAMgH,IAAI;gBACrDpC,QAAUgD,EAAAA;;AAGlB;AACF;AAEA,MAAMR,+BAAAA,GAAkC,CACtClF,SAEA,GAAA,aAAA,IAAiBA,aAAa,OAAOA,SAAAA,CAAUmF,WAAW,KAAK,QAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"VersionInputRenderer.js","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HistoryVersionDataResponse } from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n if (\n !formattedFieldValue ||\n (formattedFieldValue.results.length === 0 && formattedFieldValue.meta.missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n {/* @ts-expect-error – we dont need closeLabel */}\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue;\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n /* @ts-expect-error – we dont need closeLabel */\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: any) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, any> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n node[key] = node[key] || {};\n }\n\n // Traverse down the tree\n node = node[key];\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n const { layout } = componentsLayout[props.attribute.component];\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas: configuration.components[props.attribute.component].metadatas,\n fieldSizes,\n schemaAttributes: components[props.attribute.component].attributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","components","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","componentsLayout","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","layout","component","remainingFieldsLayout","getRemaingFieldsLayout","metadatas","schemaAttributes","attributes","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useForm, useStrapiApp, InputRenderer, useField, Form } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import {
|
|
4
|
+
import { Flex, Field, Alert, Box, Tooltip, Typography, Link } from '@strapi/design-system';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { NavLink } from 'react-router-dom';
|
|
7
7
|
import { styled } from 'styled-components';
|