@strapi/content-type-builder 5.13.1 → 5.15.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/AttributeIcon.js +1 -0
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -0
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
- package/dist/admin/components/AttributeRow.js +342 -0
- package/dist/admin/components/AttributeRow.js.map +1 -0
- package/dist/admin/components/AttributeRow.mjs +339 -0
- package/dist/admin/components/AttributeRow.mjs.map +1 -0
- package/dist/admin/components/AutoReloadOverlayBlocker.js +5 -2
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs +5 -2
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js +13 -11
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs +13 -11
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ComponentList.js +12 -26
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs +12 -26
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/{Tr.js → ComponentRow.js} +9 -15
- package/dist/admin/components/ComponentRow.js.map +1 -0
- package/dist/admin/components/{Tr.mjs → ComponentRow.mjs} +9 -15
- package/dist/admin/components/ComponentRow.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +253 -70
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +256 -73
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +53 -81
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +54 -82
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -0
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -0
- package/dist/admin/components/DataManager/DataManagerProvider.js +344 -0
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -0
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +323 -0
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -0
- package/dist/admin/components/DataManager/reducer.js +546 -0
- package/dist/admin/components/DataManager/reducer.js.map +1 -0
- package/dist/admin/components/DataManager/reducer.mjs +542 -0
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -0
- package/dist/admin/components/DataManager/undoRedo.js +102 -0
- package/dist/admin/components/DataManager/undoRedo.js.map +1 -0
- package/dist/admin/components/DataManager/undoRedo.mjs +100 -0
- package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -0
- package/dist/admin/{hooks → components/DataManager}/useDataManager.js +1 -1
- package/dist/admin/components/DataManager/useDataManager.js.map +1 -0
- package/dist/admin/{hooks → components/DataManager}/useDataManager.mjs +1 -1
- package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.js +35 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +33 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/cleanData.js +128 -0
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -0
- package/dist/admin/components/DataManager/utils/cleanData.mjs +125 -0
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.js +21 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.js.map +1 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs +18 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.js +1 -5
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.mjs +1 -5
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.js +3 -3
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.mjs +3 -3
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -0
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -0
- package/dist/admin/components/DisplayedType.js +14 -14
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs +15 -15
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js +34 -38
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +36 -40
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/ExitPrompt.js +50 -0
- package/dist/admin/components/ExitPrompt.js.map +1 -0
- package/dist/admin/components/ExitPrompt.mjs +48 -0
- package/dist/admin/components/ExitPrompt.mjs.map +1 -0
- package/dist/admin/components/{NestedFooter.js → Footers.js} +35 -2
- package/dist/admin/components/Footers.js.map +1 -0
- package/dist/admin/components/{NestedFooter.mjs → Footers.mjs} +36 -4
- package/dist/admin/components/Footers.mjs.map +1 -0
- package/dist/admin/components/FormModal/FormModal.js +198 -164
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +198 -165
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js +2 -2
- package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +10 -27
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +10 -27
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +4 -4
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +4 -4
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.js +9 -14
- package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs +9 -14
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
- package/dist/admin/components/FormModalEndActions.js +1 -34
- package/dist/admin/components/FormModalEndActions.js.map +1 -1
- package/dist/admin/components/FormModalEndActions.mjs +1 -34
- package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js +10 -28
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs +10 -28
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -0
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -0
- package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.js +91 -114
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -0
- package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.mjs +91 -96
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -0
- package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.js +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -0
- package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.mjs +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -0
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +9 -5
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +9 -5
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/List.js +149 -199
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +151 -202
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js +3 -2
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs +3 -2
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js +6 -5
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs +6 -5
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +19 -21
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +19 -21
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js +1 -1
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs +1 -1
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js +3 -6
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs +3 -6
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SelectComponents.js +9 -6
- package/dist/admin/components/SelectComponents.js.map +1 -1
- package/dist/admin/components/SelectComponents.mjs +9 -6
- package/dist/admin/components/SelectComponents.mjs.map +1 -1
- package/dist/admin/components/SelectNumber.js +0 -4
- package/dist/admin/components/SelectNumber.js.map +1 -1
- package/dist/admin/components/SelectNumber.mjs +0 -4
- package/dist/admin/components/SelectNumber.mjs.map +1 -1
- package/dist/admin/components/Status.js +73 -0
- package/dist/admin/components/Status.js.map +1 -0
- package/dist/admin/components/Status.mjs +70 -0
- package/dist/admin/components/Status.mjs.map +1 -0
- package/dist/admin/components/TabForm.js +2 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +2 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/icons/Curve.js +1 -1
- package/dist/admin/icons/Curve.js.map +1 -1
- package/dist/admin/icons/Curve.mjs +1 -1
- package/dist/admin/icons/Curve.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +39 -19
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +41 -21
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js +38 -0
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -0
- package/dist/admin/pages/ListView/EmptyState.mjs +36 -0
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -0
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js +26 -17
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs +26 -17
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +105 -158
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +110 -163
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/reducers.js +3 -4
- package/dist/admin/reducers.js.map +1 -1
- package/dist/admin/reducers.mjs +3 -4
- package/dist/admin/reducers.mjs.map +1 -1
- package/dist/admin/src/components/AttributeRow.d.ts +28 -0
- package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +2 -2
- package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +5 -1
- package/dist/admin/src/components/ComponentList.d.ts +4 -6
- package/dist/admin/src/components/{BoxWrapper.d.ts → ComponentRow.d.ts} +5 -2
- package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +29 -14
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +138 -0
- package/dist/admin/src/components/DataManager/DataManagerProvider.d.ts +6 -0
- package/dist/admin/src/components/DataManager/reducer.d.ts +278 -0
- package/dist/admin/src/components/DataManager/undoRedo.d.ts +23 -0
- package/dist/admin/src/components/DataManager/useDataManager.d.ts +1 -0
- package/dist/admin/src/components/DataManager/useServerRestartWatcher.d.ts +1 -0
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +311 -0
- package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +3 -0
- package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.d.ts +3 -3
- package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.d.ts +4 -4
- package/dist/admin/src/components/DisplayedType.d.ts +2 -1
- package/dist/admin/src/components/DynamicZoneList.d.ts +8 -5
- package/dist/admin/src/components/ExitPrompt.d.ts +1 -0
- package/dist/admin/src/components/{NestedFooter.d.ts → Footers.d.ts} +5 -1
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +2 -38
- package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +3 -2
- package/dist/admin/src/components/FormModal/reducer.d.ts +10 -4
- package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +4 -4
- package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +1 -1
- package/dist/admin/src/components/FormModalEndActions.d.ts +1 -5
- package/dist/admin/src/components/FormModalHeader.d.ts +10 -7
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +19 -0
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +54 -0
- package/dist/admin/src/components/FormModalNavigation/useFormModalNavigation.d.ts +1 -0
- package/dist/admin/src/components/FormModalSubHeader.d.ts +3 -3
- package/dist/admin/src/components/GenericInputs.d.ts +2 -1
- package/dist/admin/src/components/List.d.ts +16 -13
- package/dist/admin/src/components/Relation/Relation.d.ts +2 -1
- package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +2 -1
- package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +3 -2
- package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +2 -1
- package/dist/admin/src/components/SelectComponents.d.ts +3 -1
- package/dist/admin/src/components/SelectNumber.d.ts +1 -7
- package/dist/admin/src/components/Status.d.ts +6 -0
- package/dist/admin/src/pages/ListView/EmptyState.d.ts +1 -0
- package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +3 -4
- package/dist/admin/src/pages/ListView/ListView.d.ts +1 -1
- package/dist/admin/src/reducers.d.ts +2 -8
- package/dist/admin/src/types.d.ts +40 -43
- package/dist/admin/src/utils/findAttribute.d.ts +2 -2
- package/dist/admin/src/utils/formAPI.d.ts +43 -1
- package/dist/admin/src/utils/getMaxDepth.d.ts +2 -2
- package/dist/admin/src/utils/getRelationType.d.ts +1 -1
- package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
- package/dist/admin/translations/de.json.js +0 -1
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +0 -1
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/dk.json.js +0 -1
- package/dist/admin/translations/dk.json.js.map +1 -1
- package/dist/admin/translations/dk.json.mjs +0 -1
- package/dist/admin/translations/dk.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +4 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +4 -2
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +0 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +0 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/ko.json.js +0 -1
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +0 -1
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +0 -1
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +0 -1
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/pt-BR.json.js +0 -1
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +0 -1
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/translations/sv.json.js +0 -1
- package/dist/admin/translations/sv.json.js.map +1 -1
- package/dist/admin/translations/sv.json.mjs +0 -1
- package/dist/admin/translations/sv.json.mjs.map +1 -1
- package/dist/admin/translations/tr.json.js +0 -1
- package/dist/admin/translations/tr.json.js.map +1 -1
- package/dist/admin/translations/tr.json.mjs +0 -1
- package/dist/admin/translations/tr.json.mjs.map +1 -1
- package/dist/admin/translations/zh.json.js +0 -1
- package/dist/admin/translations/zh.json.js.map +1 -1
- package/dist/admin/translations/zh.json.mjs +0 -1
- package/dist/admin/translations/zh.json.mjs.map +1 -1
- package/dist/admin/utils/findAttribute.js.map +1 -1
- package/dist/admin/utils/findAttribute.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +0 -1
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs +0 -1
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getMaxDepth.js.map +1 -1
- package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/schema.js +55 -0
- package/dist/server/controllers/schema.js.map +1 -0
- package/dist/server/controllers/schema.mjs +53 -0
- package/dist/server/controllers/schema.mjs.map +1 -0
- package/dist/server/controllers/validation/common.js +2 -0
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +2 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +612 -0
- package/dist/server/controllers/validation/schema.js.map +1 -0
- package/dist/server/controllers/validation/schema.mjs +610 -0
- package/dist/server/controllers/validation/schema.mjs.map +1 -0
- package/dist/server/routes/admin.js +51 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +51 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js +12 -2
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs +12 -2
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js +43 -28
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +43 -28
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js +51 -49
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +51 -49
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema.js +246 -0
- package/dist/server/services/schema.js.map +1 -0
- package/dist/server/services/schema.mjs +242 -0
- package/dist/server/services/schema.mjs.map +1 -0
- package/dist/server/src/controllers/index.d.ts +5 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/schema.d.ts +8 -0
- package/dist/server/src/controllers/schema.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/common.d.ts +1 -0
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-type.d.ts +3 -2
- package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +81514 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +6 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts +1 -0
- package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts +2 -3
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/index.d.ts +3 -0
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts +2756 -0
- package/dist/server/src/services/schema.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +14 -9
- package/dist/admin/components/BoxWrapper.js +0 -44
- package/dist/admin/components/BoxWrapper.js.map +0 -1
- package/dist/admin/components/BoxWrapper.mjs +0 -42
- package/dist/admin/components/BoxWrapper.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.js +0 -520
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs +0 -518
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/reducer.js +0 -583
- package/dist/admin/components/DataManagerProvider/reducer.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/reducer.mjs +0 -579
- package/dist/admin/components/DataManagerProvider/reducer.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/selectors.js +0 -20
- package/dist/admin/components/DataManagerProvider/selectors.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/selectors.mjs +0 -17
- package/dist/admin/components/DataManagerProvider/selectors.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/cleanData.js +0 -126
- package/dist/admin/components/DataManagerProvider/utils/cleanData.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs +0 -120
- package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.js +0 -9
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs +0 -7
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js +0 -20
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs +0 -18
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js +0 -30
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs +0 -27
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js +0 -46
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs +0 -44
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js +0 -37
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs +0 -35
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.js +0 -9
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs +0 -7
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/createCategorySchema.js +0 -43
- package/dist/admin/components/FormModal/category/createCategorySchema.js.map +0 -1
- package/dist/admin/components/FormModal/category/createCategorySchema.mjs +0 -22
- package/dist/admin/components/FormModal/category/createCategorySchema.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/form.js +0 -34
- package/dist/admin/components/FormModal/category/form.js.map +0 -1
- package/dist/admin/components/FormModal/category/form.mjs +0 -32
- package/dist/admin/components/FormModal/category/form.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/regex.js +0 -6
- package/dist/admin/components/FormModal/category/regex.js.map +0 -1
- package/dist/admin/components/FormModal/category/regex.mjs +0 -4
- package/dist/admin/components/FormModal/category/regex.mjs.map +0 -1
- package/dist/admin/components/FormModal/selectors.js +0 -20
- package/dist/admin/components/FormModal/selectors.js.map +0 -1
- package/dist/admin/components/FormModal/selectors.mjs +0 -17
- package/dist/admin/components/FormModal/selectors.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.js.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/constants.js +0 -21
- package/dist/admin/components/FormModalNavigationProvider/constants.js.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/constants.mjs +0 -19
- package/dist/admin/components/FormModalNavigationProvider/constants.mjs.map +0 -1
- package/dist/admin/components/ListRow.js +0 -164
- package/dist/admin/components/ListRow.js.map +0 -1
- package/dist/admin/components/ListRow.mjs +0 -161
- package/dist/admin/components/ListRow.mjs.map +0 -1
- package/dist/admin/components/NestedFooter.js.map +0 -1
- package/dist/admin/components/NestedFooter.mjs.map +0 -1
- package/dist/admin/components/Tr.js.map +0 -1
- package/dist/admin/components/Tr.mjs.map +0 -1
- package/dist/admin/components/UpperFirst.js +0 -11
- package/dist/admin/components/UpperFirst.js.map +0 -1
- package/dist/admin/components/UpperFirst.mjs +0 -9
- package/dist/admin/components/UpperFirst.mjs.map +0 -1
- package/dist/admin/contexts/DataManagerContext.js.map +0 -1
- package/dist/admin/contexts/DataManagerContext.mjs.map +0 -1
- package/dist/admin/contexts/FormModalNavigationContext.js.map +0 -1
- package/dist/admin/contexts/FormModalNavigationContext.mjs.map +0 -1
- package/dist/admin/hooks/useDataManager.js.map +0 -1
- package/dist/admin/hooks/useDataManager.mjs.map +0 -1
- package/dist/admin/hooks/useFormModalNavigation.js.map +0 -1
- package/dist/admin/hooks/useFormModalNavigation.mjs.map +0 -1
- package/dist/admin/src/components/DataManagerProvider/DataManagerProvider.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +0 -103
- package/dist/admin/src/components/DataManagerProvider/selectors.d.ts +0 -17
- package/dist/admin/src/components/DataManagerProvider/utils/cleanData.d.ts +0 -23
- package/dist/admin/src/components/DataManagerProvider/utils/createDataObject.d.ts +0 -2
- package/dist/admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/formatSchemas.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.d.ts +0 -4
- package/dist/admin/src/components/DataManagerProvider/utils/serverRestartWatcher.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/validateSchema.d.ts +0 -1
- package/dist/admin/src/components/FormModal/category/createCategorySchema.d.ts +0 -5
- package/dist/admin/src/components/FormModal/category/form.d.ts +0 -20
- package/dist/admin/src/components/FormModal/category/regex.d.ts +0 -1
- package/dist/admin/src/components/FormModal/selectors.d.ts +0 -16
- package/dist/admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.d.ts +0 -22
- package/dist/admin/src/components/FormModalNavigationProvider/constants.d.ts +0 -17
- package/dist/admin/src/components/ListRow.d.ts +0 -27
- package/dist/admin/src/components/Tr.d.ts +0 -5
- package/dist/admin/src/components/UpperFirst.d.ts +0 -3
- package/dist/admin/src/contexts/DataManagerContext.d.ts +0 -41
- package/dist/admin/src/contexts/FormModalNavigationContext.d.ts +0 -40
- package/dist/admin/src/hooks/useDataManager.d.ts +0 -1
- package/dist/admin/src/hooks/useFormModalNavigation.d.ts +0 -1
- /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.js +0 -0
- /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.mjs +0 -0
- /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.js +0 -0
- /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.mjs +0 -0
- /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.js +0 -0
- /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.mjs +0 -0
- /package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { Box, Flex, IconButton, Typography, Link } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleClick","configurable","editTargetUid","uid","attributeType","getAttributeDisplayedType","step","customField","forTarget","modelType","targetUid","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","getRelationType","targetAttribute","getTrad","Link","e","stopPropagation","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","attributeToRemoveName","Trash","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, memo, useState } from 'react';
|
|
3
|
+
import { Flex, Box, IconButton, Typography, Link } from '@strapi/design-system';
|
|
4
|
+
import { Drag, ChevronDown, Pencil, Trash, Lock } from '@strapi/icons';
|
|
5
|
+
import get from 'lodash/get';
|
|
6
|
+
import upperFirst from 'lodash/upperFirst';
|
|
7
|
+
import { useIntl } from 'react-intl';
|
|
8
|
+
import { Link as Link$1 } from 'react-router-dom';
|
|
9
|
+
import { styled } from 'styled-components';
|
|
10
|
+
import { Curve } from '../icons/Curve.mjs';
|
|
11
|
+
import { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType.mjs';
|
|
12
|
+
import { getRelationType } from '../utils/getRelationType.mjs';
|
|
13
|
+
import { getTrad } from '../utils/getTrad.mjs';
|
|
14
|
+
import { AttributeIcon } from './AttributeIcon.mjs';
|
|
15
|
+
import { ComponentList } from './ComponentList.mjs';
|
|
16
|
+
import { useDataManager } from './DataManager/useDataManager.mjs';
|
|
17
|
+
import { DisplayedType } from './DisplayedType.mjs';
|
|
18
|
+
import { DynamicZoneList } from './DynamicZoneList.mjs';
|
|
19
|
+
import { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation.mjs';
|
|
20
|
+
import { StatusBadge } from './Status.mjs';
|
|
21
|
+
|
|
22
|
+
const GridWrapper = styled(Flex)`
|
|
23
|
+
justify-content: space-between;
|
|
24
|
+
|
|
25
|
+
border-top: ${({ theme, $isOverlay })=>$isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};
|
|
26
|
+
|
|
27
|
+
padding-top: ${({ theme })=>theme.spaces[4]};
|
|
28
|
+
padding-bottom: ${({ theme })=>theme.spaces[4]};
|
|
29
|
+
|
|
30
|
+
opacity: ${({ $isDragging })=>$isDragging ? 0 : 1};
|
|
31
|
+
align-items: center;
|
|
32
|
+
`;
|
|
33
|
+
const StyledAttributeRow = styled(Box)`
|
|
34
|
+
list-style: none;
|
|
35
|
+
list-style-type: none;
|
|
36
|
+
`;
|
|
37
|
+
const AttributeRow = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
38
|
+
const { style, ...rest } = props;
|
|
39
|
+
return /*#__PURE__*/ jsx(StyledAttributeRow, {
|
|
40
|
+
tag: "li",
|
|
41
|
+
ref: ref,
|
|
42
|
+
...props.attributes,
|
|
43
|
+
style: style,
|
|
44
|
+
background: "neutral0",
|
|
45
|
+
shadow: props.isOverlay ? 'filterShadow' : 'none',
|
|
46
|
+
"aria-label": props.item.name,
|
|
47
|
+
children: /*#__PURE__*/ jsx(MemoizedRow, {
|
|
48
|
+
...rest
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
53
|
+
const { item, firstLoopComponentUid, isFromDynamicZone, addComponentToDZ, secondLoopComponentUid, type, isDragging, isOverlay, handleRef, listeners } = props;
|
|
54
|
+
const shouldHideNestedInfos = isOverlay || isDragging;
|
|
55
|
+
const [isOpen, setIsOpen] = useState(true);
|
|
56
|
+
const isTypeDeleted = type.status === 'REMOVED';
|
|
57
|
+
const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();
|
|
58
|
+
const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();
|
|
59
|
+
const { formatMessage } = useIntl();
|
|
60
|
+
const isDeleted = item.status === 'REMOVED';
|
|
61
|
+
const isMorph = item.type === 'relation' && item.relation.includes('morph');
|
|
62
|
+
const ico = [
|
|
63
|
+
'integer',
|
|
64
|
+
'biginteger',
|
|
65
|
+
'float',
|
|
66
|
+
'decimal'
|
|
67
|
+
].includes(item.type) ? 'number' : item.type;
|
|
68
|
+
const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;
|
|
69
|
+
const isPluginContentType = get(targetContentType, 'plugin');
|
|
70
|
+
const src = 'target' in item && item.target ? 'relation' : ico;
|
|
71
|
+
const handleClick = ()=>{
|
|
72
|
+
if (isMorph) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (item.configurable !== false) {
|
|
76
|
+
const editTargetUid = secondLoopComponentUid || firstLoopComponentUid || type.uid;
|
|
77
|
+
const attributeType = getAttributeDisplayedType(item.type);
|
|
78
|
+
const step = item.type === 'component' ? '2' : null;
|
|
79
|
+
if (item.customField) {
|
|
80
|
+
onOpenModalEditCustomField({
|
|
81
|
+
forTarget: type.modelType,
|
|
82
|
+
targetUid: editTargetUid,
|
|
83
|
+
attributeName: item.name,
|
|
84
|
+
attributeType,
|
|
85
|
+
customFieldUid: item.customField
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
onOpenModalEditField({
|
|
89
|
+
forTarget: type.modelType,
|
|
90
|
+
targetUid: editTargetUid,
|
|
91
|
+
attributeName: item.name,
|
|
92
|
+
attributeType,
|
|
93
|
+
step
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
let loopNumber;
|
|
99
|
+
if (secondLoopComponentUid && firstLoopComponentUid) {
|
|
100
|
+
loopNumber = 2;
|
|
101
|
+
} else if (firstLoopComponentUid) {
|
|
102
|
+
loopNumber = 1;
|
|
103
|
+
} else {
|
|
104
|
+
loopNumber = 0;
|
|
105
|
+
}
|
|
106
|
+
const canEdit = !isTypeDeleted && !isDeleted;
|
|
107
|
+
const canDelete = !isTypeDeleted && !isDeleted;
|
|
108
|
+
const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';
|
|
109
|
+
const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;
|
|
110
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
111
|
+
children: [
|
|
112
|
+
/*#__PURE__*/ jsxs(GridWrapper, {
|
|
113
|
+
$isOverlay: isOverlay,
|
|
114
|
+
$isDragging: isDragging,
|
|
115
|
+
onClick: canClick ? handleClick : undefined,
|
|
116
|
+
paddingLeft: 4,
|
|
117
|
+
paddingRight: 4,
|
|
118
|
+
children: [
|
|
119
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
120
|
+
alignItems: "center",
|
|
121
|
+
overflow: "hidden",
|
|
122
|
+
gap: 2,
|
|
123
|
+
children: [
|
|
124
|
+
loopNumber !== 0 && !isOverlay && /*#__PURE__*/ jsx(Curve, {
|
|
125
|
+
color: isFromDynamicZone ? 'primary200' : 'neutral150'
|
|
126
|
+
}),
|
|
127
|
+
isInDevelopmentMode && /*#__PURE__*/ jsx(IconButton, {
|
|
128
|
+
cursor: cursor,
|
|
129
|
+
role: "Handle",
|
|
130
|
+
ref: handleRef,
|
|
131
|
+
...listeners,
|
|
132
|
+
variant: "ghost",
|
|
133
|
+
withTooltip: false,
|
|
134
|
+
label: `${formatMessage({
|
|
135
|
+
id: 'app.utils.drag',
|
|
136
|
+
defaultMessage: 'Drag'
|
|
137
|
+
})} ${item.name}`,
|
|
138
|
+
disabled: isTypeDeleted || isDeleted,
|
|
139
|
+
children: /*#__PURE__*/ jsx(Drag, {})
|
|
140
|
+
}),
|
|
141
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
142
|
+
gap: 4,
|
|
143
|
+
children: [
|
|
144
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
145
|
+
gap: 4,
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
children: [
|
|
148
|
+
/*#__PURE__*/ jsx(AttributeIcon, {
|
|
149
|
+
type: src,
|
|
150
|
+
customField: item.customField
|
|
151
|
+
}),
|
|
152
|
+
/*#__PURE__*/ jsxs(Typography, {
|
|
153
|
+
textColor: "neutral800",
|
|
154
|
+
fontWeight: "bold",
|
|
155
|
+
textDecoration: isDeleted ? 'line-through' : 'none',
|
|
156
|
+
ellipsis: true,
|
|
157
|
+
overflow: "hidden",
|
|
158
|
+
children: [
|
|
159
|
+
item.name,
|
|
160
|
+
'required' in item && item.required && /*#__PURE__*/ jsx(Typography, {
|
|
161
|
+
textColor: "danger600",
|
|
162
|
+
children: "* "
|
|
163
|
+
})
|
|
164
|
+
]
|
|
165
|
+
})
|
|
166
|
+
]
|
|
167
|
+
}),
|
|
168
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
169
|
+
children: /*#__PURE__*/ jsxs(Typography, {
|
|
170
|
+
textColor: "neutral600",
|
|
171
|
+
children: [
|
|
172
|
+
/*#__PURE__*/ jsx(DisplayedType, {
|
|
173
|
+
type: item.type,
|
|
174
|
+
customField: item.customField,
|
|
175
|
+
repeatable: 'repeatable' in item && item.repeatable,
|
|
176
|
+
multiple: 'multiple' in item && item.multiple
|
|
177
|
+
}),
|
|
178
|
+
item.type === 'relation' && /*#__PURE__*/ jsxs(Fragment, {
|
|
179
|
+
children: [
|
|
180
|
+
" (",
|
|
181
|
+
getRelationType(item.relation, item.targetAttribute),
|
|
182
|
+
") ",
|
|
183
|
+
targetContentType && formatMessage({
|
|
184
|
+
id: getTrad('modelPage.attribute.with'),
|
|
185
|
+
defaultMessage: 'with'
|
|
186
|
+
}),
|
|
187
|
+
" ",
|
|
188
|
+
targetContentType && /*#__PURE__*/ jsx(Link, {
|
|
189
|
+
onClick: (e)=>e.stopPropagation(),
|
|
190
|
+
tag: Link$1,
|
|
191
|
+
to: `/plugins/content-type-builder/content-types/${targetContentType.uid}`,
|
|
192
|
+
children: upperFirst(targetContentType.info.displayName)
|
|
193
|
+
}),
|
|
194
|
+
isPluginContentType && `(${formatMessage({
|
|
195
|
+
id: getTrad(`from`),
|
|
196
|
+
defaultMessage: 'from'
|
|
197
|
+
})}: ${isPluginContentType})`
|
|
198
|
+
]
|
|
199
|
+
}),
|
|
200
|
+
item.type === 'component' && /*#__PURE__*/ jsx(ComponentLink, {
|
|
201
|
+
uid: item.component
|
|
202
|
+
})
|
|
203
|
+
]
|
|
204
|
+
})
|
|
205
|
+
})
|
|
206
|
+
]
|
|
207
|
+
})
|
|
208
|
+
]
|
|
209
|
+
}),
|
|
210
|
+
/*#__PURE__*/ jsx(Box, {
|
|
211
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
212
|
+
justifyContent: "flex-end",
|
|
213
|
+
gap: 1,
|
|
214
|
+
onClick: (e)=>e.stopPropagation(),
|
|
215
|
+
children: /*#__PURE__*/ jsxs(Fragment, {
|
|
216
|
+
children: [
|
|
217
|
+
/*#__PURE__*/ jsx(Box, {
|
|
218
|
+
children: item.status && /*#__PURE__*/ jsx(StatusBadge, {
|
|
219
|
+
status: item.status
|
|
220
|
+
})
|
|
221
|
+
}),
|
|
222
|
+
[
|
|
223
|
+
'component',
|
|
224
|
+
'dynamiczone'
|
|
225
|
+
].includes(item.type) && /*#__PURE__*/ jsx(IconButton, {
|
|
226
|
+
onClick: (e)=>{
|
|
227
|
+
e.preventDefault();
|
|
228
|
+
e.stopPropagation();
|
|
229
|
+
if (isOpen) {
|
|
230
|
+
setIsOpen(false);
|
|
231
|
+
} else {
|
|
232
|
+
setIsOpen(true);
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"aria-expanded": isOpen,
|
|
236
|
+
label: formatMessage({
|
|
237
|
+
id: 'app.utils.toggle',
|
|
238
|
+
defaultMessage: 'Toggle'
|
|
239
|
+
}),
|
|
240
|
+
variant: "ghost",
|
|
241
|
+
withTooltip: false,
|
|
242
|
+
children: /*#__PURE__*/ jsx(ChevronDown, {
|
|
243
|
+
"aria-hidden": true,
|
|
244
|
+
fill: "neutral500",
|
|
245
|
+
style: {
|
|
246
|
+
transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,
|
|
247
|
+
transition: 'transform 0.5s'
|
|
248
|
+
}
|
|
249
|
+
})
|
|
250
|
+
}),
|
|
251
|
+
isInDevelopmentMode && item.configurable !== false ? /*#__PURE__*/ jsxs(Fragment, {
|
|
252
|
+
children: [
|
|
253
|
+
!isMorph && /*#__PURE__*/ jsx(IconButton, {
|
|
254
|
+
onClick: handleClick,
|
|
255
|
+
label: `${formatMessage({
|
|
256
|
+
id: 'app.utils.edit',
|
|
257
|
+
defaultMessage: 'Edit'
|
|
258
|
+
})} ${item.name}`,
|
|
259
|
+
variant: "ghost",
|
|
260
|
+
disabled: !canEdit,
|
|
261
|
+
children: /*#__PURE__*/ jsx(Pencil, {})
|
|
262
|
+
}),
|
|
263
|
+
/*#__PURE__*/ jsx(IconButton, {
|
|
264
|
+
onClick: (e)=>{
|
|
265
|
+
e.stopPropagation();
|
|
266
|
+
removeAttribute({
|
|
267
|
+
forTarget: type.modelType,
|
|
268
|
+
targetUid: type.uid,
|
|
269
|
+
attributeToRemoveName: item.name
|
|
270
|
+
});
|
|
271
|
+
},
|
|
272
|
+
label: `${formatMessage({
|
|
273
|
+
id: 'global.delete',
|
|
274
|
+
defaultMessage: 'Delete'
|
|
275
|
+
})} ${item.name}`,
|
|
276
|
+
variant: "ghost",
|
|
277
|
+
disabled: !canDelete,
|
|
278
|
+
children: /*#__PURE__*/ jsx(Trash, {})
|
|
279
|
+
})
|
|
280
|
+
]
|
|
281
|
+
}) : /*#__PURE__*/ jsx(Flex, {
|
|
282
|
+
padding: 2,
|
|
283
|
+
children: /*#__PURE__*/ jsx(Lock, {
|
|
284
|
+
fill: "neutral500"
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
]
|
|
288
|
+
})
|
|
289
|
+
})
|
|
290
|
+
})
|
|
291
|
+
]
|
|
292
|
+
}),
|
|
293
|
+
/*#__PURE__*/ jsxs(SubRow, {
|
|
294
|
+
$shouldHideNestedInfos: shouldHideNestedInfos,
|
|
295
|
+
$isOpen: isOpen,
|
|
296
|
+
children: [
|
|
297
|
+
item.type === 'component' && /*#__PURE__*/ jsx(ComponentList, {
|
|
298
|
+
...item,
|
|
299
|
+
isFromDynamicZone: isFromDynamicZone,
|
|
300
|
+
firstLoopComponentUid: firstLoopComponentUid
|
|
301
|
+
}),
|
|
302
|
+
item.type === 'dynamiczone' && /*#__PURE__*/ jsx(DynamicZoneList, {
|
|
303
|
+
...item,
|
|
304
|
+
disabled: isTypeDeleted || item.status === 'REMOVED',
|
|
305
|
+
addComponent: addComponentToDZ,
|
|
306
|
+
forTarget: type.modelType,
|
|
307
|
+
targetUid: type.uid
|
|
308
|
+
})
|
|
309
|
+
]
|
|
310
|
+
})
|
|
311
|
+
]
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
const SubRow = styled(Box)`
|
|
315
|
+
display: ${({ $shouldHideNestedInfos })=>$shouldHideNestedInfos ? 'none' : 'block'};
|
|
316
|
+
max-height: ${({ $isOpen })=>$isOpen ? '9999px' : '0px'};
|
|
317
|
+
overflow: hidden;
|
|
318
|
+
|
|
319
|
+
transition: ${({ $isOpen })=>$isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};
|
|
320
|
+
`;
|
|
321
|
+
const ComponentLink = ({ uid })=>{
|
|
322
|
+
const { components } = useDataManager();
|
|
323
|
+
const type = get(components, uid);
|
|
324
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
325
|
+
children: [
|
|
326
|
+
" (",
|
|
327
|
+
/*#__PURE__*/ jsx(Link, {
|
|
328
|
+
onClick: (e)=>e.stopPropagation(),
|
|
329
|
+
tag: Link$1,
|
|
330
|
+
to: `/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`,
|
|
331
|
+
children: upperFirst(type.info.displayName)
|
|
332
|
+
}),
|
|
333
|
+
")"
|
|
334
|
+
]
|
|
335
|
+
});
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
export { AttributeRow, GridWrapper };
|
|
339
|
+
//# sourceMappingURL=AttributeRow.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { Box, Flex, IconButton, Typography, Link } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleClick","configurable","editTargetUid","uid","attributeType","getAttributeDisplayedType","step","customField","forTarget","modelType","targetUid","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","getRelationType","targetAttribute","getTrad","Link","e","stopPropagation","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","attributeToRemoveName","Trash","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
@@ -27,8 +27,11 @@ function _interopNamespaceDefault(e) {
|
|
|
27
27
|
|
|
28
28
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
29
29
|
|
|
30
|
-
const AutoReloadOverlayBlockerContext = /*#__PURE__*/ React__namespace.createContext({
|
|
31
|
-
|
|
30
|
+
const AutoReloadOverlayBlockerContext = /*#__PURE__*/ React__namespace.createContext({
|
|
31
|
+
lockAppWithAutoreload: ()=>{},
|
|
32
|
+
unlockAppWithAutoreload: ()=>{}
|
|
33
|
+
});
|
|
34
|
+
const MAX_ELAPSED_TIME = 300 * 1000;
|
|
32
35
|
const AutoReloadOverlayBlockerProvider = ({ children })=>{
|
|
33
36
|
const [isOpen, setIsOpen] = React__namespace.useState(false);
|
|
34
37
|
const [config, setConfig] = React__namespace.useState({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoReloadOverlayBlocker.js","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload?: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload?: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>(\n {}\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 30 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","lockAppWithAutoreload","useCallback","unlockAppWithAutoreload","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoReloadOverlayBlocker.js","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>({\n lockAppWithAutoreload: () => {},\n unlockAppWithAutoreload: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 300 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","lockAppWithAutoreload","unlockAppWithAutoreload","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","useCallback","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":"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"}
|
|
@@ -6,8 +6,11 @@ import { createPortal } from 'react-dom';
|
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { keyframes, styled } from 'styled-components';
|
|
8
8
|
|
|
9
|
-
const AutoReloadOverlayBlockerContext = /*#__PURE__*/ React.createContext({
|
|
10
|
-
|
|
9
|
+
const AutoReloadOverlayBlockerContext = /*#__PURE__*/ React.createContext({
|
|
10
|
+
lockAppWithAutoreload: ()=>{},
|
|
11
|
+
unlockAppWithAutoreload: ()=>{}
|
|
12
|
+
});
|
|
13
|
+
const MAX_ELAPSED_TIME = 300 * 1000;
|
|
11
14
|
const AutoReloadOverlayBlockerProvider = ({ children })=>{
|
|
12
15
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
13
16
|
const [config, setConfig] = React.useState({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoReloadOverlayBlocker.mjs","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload?: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload?: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>(\n {}\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 30 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","lockAppWithAutoreload","useCallback","unlockAppWithAutoreload","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":";;;;;;;;AAgCA,MAAMA,+BAAkCC,iBAAAA,KAAAA,CAAMC,aAAa,CACzD,EAAC,CAAA;AAWH,MAAMC,mBAAmB,EAAK,GAAA,IAAA;AAE9B,MAAMC,gCAAmC,GAAA,CAAC,EAAEC,QAAQ,EAAyC,GAAA;AAC3F,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGN,KAAAA,CAAMO,QAAQ,CAAC,KAAA,CAAA;AAC3C,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGT,KAAMO,CAAAA,QAAQ,CAAiC,EAAC,CAAA;AAC5E,IAAA,MAAM,CAACG,MAAQC,EAAAA,SAAAA,CAAU,GAAGX,KAAAA,CAAMO,QAAQ,CAAC,KAAA,CAAA;AAE3C,IAAA,MAAMK,wBAAwBZ,KAAMa,CAAAA,WAAW,CAAC,CAACL,MAAAA,GAAyC,EAAE,GAAA;QAC1FF,SAAU,CAAA,IAAA,CAAA;QACVG,SAAUD,CAAAA,MAAAA,CAAAA;AACZ,KAAA,EAAG,EAAE,CAAA;IAEL,MAAMM,uBAAAA,GAA0Bd,KAAMa,CAAAA,WAAW,CAAC,IAAA;QAChDP,SAAU,CAAA,KAAA,CAAA;AACVG,QAAAA,SAAAA,CAAU,EAAC,CAAA;AACb,KAAA,EAAG,EAAE,CAAA;;AAGLT,IAAAA,KAAAA,CAAMe,SAAS,CAAC,IAAA;AACd,QAAA,IAAIV,MAAQ,EAAA;AACV,YAAA,MAAMW,UAAUC,UAAW,CAAA,IAAA;gBACzBN,SAAU,CAAA,IAAA,CAAA;aACTT,EAAAA,gBAAAA,CAAAA;YAEH,OAAO,IAAA;gBACLgB,YAAaF,CAAAA,OAAAA,CAAAA;AACf,aAAA;AACF;KACC,EAAA;AAACX,QAAAA;AAAO,KAAA,CAAA;IAEX,IAAIc,aAAAA,GAAgBX,QAAQY,IAAQ,IAAA,QAAA;AAEpC,IAAA,IAAIC,WAAc,GAAA;AAChBC,QAAAA,EAAAA,EAAId,QAAQa,WAAe,IAAA,uCAAA;QAC3BE,cACE,EAAA;AACJ,KAAA;AAEA,IAAA,IAAIC,KAAQ,GAAA;AACVF,QAAAA,EAAAA,EAAId,QAAQgB,KAAS,IAAA,iCAAA;QACrBD,cAAgB,EAAA;AAClB,KAAA;AAEA,IAAA,IAAIb,MAAQ,EAAA;QACVS,aAAgB,GAAA,MAAA;QAEhBE,WAAc,GAAA;YACZC,EAAI,EAAA,mDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QAEAC,KAAQ,GAAA;YACNF,EAAI,EAAA,6CAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACF;AAEA,IAAA,MAAME,eAAkBzB,GAAAA,KAAAA,CAAM0B,OAAO,CACnC,KAAO;AACLd,YAAAA,qBAAAA;AACAE,YAAAA;AACF,SAAA,CACA,EAAA;AAACF,QAAAA,qBAAAA;AAAuBE,QAAAA;AAAwB,KAAA,CAAA;IAGlD,qBACEa,IAAA,CAAC5B,gCAAgC6B,QAAQ,EAAA;QAACC,KAAOJ,EAAAA,eAAAA;;0BAC/CK,GAACC,CAAAA,OAAAA,EAAAA;gBACCZ,aAAeA,EAAAA,aAAAA;gBACfd,MAAQA,EAAAA,MAAAA;gBACRgB,WAAaA,EAAAA,WAAAA;gBACbG,KAAOA,EAAAA;;AAERpB,YAAAA;;;AAGP;AASA,MAAM2B,OAAAA,GAAU,CAAC,EAAEZ,aAAa,EAAEE,WAAW,EAAEG,KAAK,EAAEnB,MAAM,EAAgB,GAAA;IAC1E,MAAM,EAAE2B,aAAa,EAAE,GAAGC,OAAAA,EAAAA;;AAG1B,IAAA,OAAO5B,MAAU6B,IAAAA,UAAAA,EAAYC,QAAUC,EAAAA,IAAAA,iBACnCC,2BACEV,IAACW,CAAAA,OAAAA,EAAAA;QAAQhB,EAAG,EAAA,0BAAA;QAA2BiB,SAAU,EAAA,QAAA;QAASC,UAAW,EAAA,QAAA;QAASC,GAAK,EAAA,CAAA;;0BACjFd,IAACe,CAAAA,IAAAA,EAAAA;gBAAKH,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;;kCAChDX,GAACa,CAAAA,UAAAA,EAAAA;wBAAWC,GAAI,EAAA,IAAA;wBAAKC,OAAQ,EAAA,OAAA;kCAC1Bb,aAAcR,CAAAA,KAAAA;;kCAEjBM,GAACa,CAAAA,UAAAA,EAAAA;wBAAWC,GAAI,EAAA,IAAA;wBAAKE,SAAU,EAAA,YAAA;wBAAaC,QAAU,EAAA,CAAA;wBAAGC,UAAW,EAAA,SAAA;kCACjEhB,aAAcX,CAAAA,WAAAA;;;;AAGlBF,YAAAA,aAAAA,KAAkB,0BACjBW,GAACmB,CAAAA,OAAAA,EAAAA;gBAAQC,OAAS,EAAA,CAAA;gBAAGC,UAAW,EAAA,YAAA;gBAAaC,WAAY,EAAA,YAAA;AACvD,gBAAA,QAAA,gBAAAtB,GAACuB,CAAAA,YAAAA,EAAAA;oBAAaC,KAAM,EAAA,MAAA;oBAAOC,MAAO,EAAA;;;AAGrCpC,YAAAA,aAAAA,KAAkB,wBACjBW,GAACmB,CAAAA,OAAAA,EAAAA;gBAAQC,OAAS,EAAA,CAAA;gBAAGC,UAAW,EAAA,YAAA;gBAAaC,WAAY,EAAA,YAAA;AACvD,gBAAA,QAAA,gBAAAtB,GAAC0B,CAAAA,KAAAA,EAAAA;oBAAMF,KAAM,EAAA,MAAA;oBAAOC,MAAO,EAAA;;;0BAG/BzB,GAAC2B,CAAAA,GAAAA,EAAAA;gBAAIC,SAAW,EAAA,CAAA;AACd,gBAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,IAAAA,EAAAA;oBAAKC,IAAK,EAAA,wBAAA;oBAAyBC,UAAU,EAAA,IAAA;8BAC3C7B,aAAc,CAAA;wBACbV,EAAI,EAAA,sBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;IAKNW,UAAWC,CAAAA,QAAQ,CAACC,IAAI,CAE1B,GAAA,IAAA;AACN,CAAA;AAEA,MAAM0B,QAAAA,GAAWC,SAAS;;;;;;;EAOxB,CAAC;AAEH,MAAMV,YAAAA,GAAeW,MAAOC,CAAAA,cAAAA,CAAe;AAC9B,aAAA,EAAEH,QAAS,CAAA;AACxB,CAAC;AAED,MAAMxB,OAAAA,GAAU0B,MAAOtB,CAAAA,IAAAA,CAAK;;;;;;;;;;;;;;;;;;;;;;gBAsBZ,EAAE,CAAC,EAAEwB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,QAAQ,CAAC;;;AAGvD,CAAC;AAED,MAAMnB,OAAAA,GAAUe,MAAOP,CAAAA,GAAAA,CAAI;;;;;;;YAOf,EAAE,CAAC,EAAES,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;;;AAGrD,CAAC;AAED;;AAEkG,qGAE5FC,MAAAA,2BAAAA,GAA8B,IAAMtE,KAAAA,CAAMuE,UAAU,CAACxE,+BAAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"AutoReloadOverlayBlocker.mjs","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>({\n lockAppWithAutoreload: () => {},\n unlockAppWithAutoreload: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 300 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","lockAppWithAutoreload","unlockAppWithAutoreload","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","useCallback","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":"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"}
|