@firecms/core 3.0.0-canary.24 → 3.0.0-canary.241
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/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +30 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -5
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +40 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +36 -64
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +16 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +7 -12
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21578 -13895
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24366 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +97 -23
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +74 -42
- package/dist/types/firecms.d.ts +8 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +41 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +36 -12
- package/dist/types/properties.d.ts +73 -24
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +10 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +41 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +62 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +149 -46
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +48 -40
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +32 -37
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +229 -117
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +80 -59
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +27 -20
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -145
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +130 -51
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +6 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +406 -478
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +95 -19
- package/src/core/FireCMS.tsx +72 -58
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +589 -535
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +89 -45
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +4 -5
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +48 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +23 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -52
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +16 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +32 -33
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +194 -68
- package/src/hooks/useFireCMSContext.tsx +3 -33
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +201 -75
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +20 -25
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +26 -37
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +118 -28
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +85 -46
- package/src/types/firecms.tsx +9 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +49 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +42 -14
- package/src/types/properties.ts +87 -26
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +11 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +6 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +18 -7
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +52 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +110 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +91 -28
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Entity, EntityCollection, EntityCustomView, FireCMSContext, User } from "../types";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { getNavigationEntriesFromPath } from "../util/navigation_from_path";
|
|
4
4
|
import { useFireCMSContext } from "./useFireCMSContext";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -55,22 +55,22 @@ interface ResolvedNavigationEntityCustom<M extends Record<string, any>> {
|
|
|
55
55
|
* @param context
|
|
56
56
|
* @group Hooks and utilities
|
|
57
57
|
*/
|
|
58
|
-
export function resolveNavigationFrom<M extends Record<string, any>,
|
|
58
|
+
export function resolveNavigationFrom<M extends Record<string, any>, USER extends User>({
|
|
59
59
|
path,
|
|
60
60
|
context
|
|
61
61
|
}: {
|
|
62
62
|
path: string,
|
|
63
|
-
context: FireCMSContext<
|
|
63
|
+
context: FireCMSContext<USER>
|
|
64
64
|
}): Promise<ResolvedNavigationEntry<M>[]> {
|
|
65
65
|
|
|
66
66
|
const dataSource = context.dataSource;
|
|
67
67
|
const navigation = context.navigation;
|
|
68
68
|
|
|
69
69
|
if (!navigation) {
|
|
70
|
-
throw Error("Calling
|
|
70
|
+
throw Error("Calling resolveNavigationFrom, but main navigation has not yet been initialised");
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
const navigationEntries =
|
|
73
|
+
const navigationEntries = getNavigationEntriesFromPath({
|
|
74
74
|
path,
|
|
75
75
|
collections: navigation.collections ?? []
|
|
76
76
|
});
|
|
@@ -80,7 +80,7 @@ export function resolveNavigationFrom<M extends Record<string, any>, UserType ex
|
|
|
80
80
|
if (entry.type === "collection") {
|
|
81
81
|
return Promise.resolve(entry);
|
|
82
82
|
} else if (entry.type === "entity") {
|
|
83
|
-
const collection = navigation.getCollection(entry.path
|
|
83
|
+
const collection = navigation.getCollection(entry.path);
|
|
84
84
|
if (!collection) {
|
|
85
85
|
throw Error(`No collection defined in the navigation for the entity with path ${entry.path}`);
|
|
86
86
|
}
|
|
@@ -126,12 +126,12 @@ export interface NavigationFrom<M extends Record<string, any>> {
|
|
|
126
126
|
* in any React component that lives under `FireCMS`
|
|
127
127
|
* @group Hooks and utilities
|
|
128
128
|
*/
|
|
129
|
-
export function useResolvedNavigationFrom<M extends Record<string, any>,
|
|
129
|
+
export function useResolvedNavigationFrom<M extends Record<string, any>, USER extends User>(
|
|
130
130
|
{
|
|
131
131
|
path
|
|
132
132
|
}: NavigationFromProps): NavigationFrom<M> {
|
|
133
133
|
|
|
134
|
-
const context: FireCMSContext<
|
|
134
|
+
const context: FireCMSContext<USER> = useFireCMSContext();
|
|
135
135
|
|
|
136
136
|
const [data, setData] = useState<ResolvedNavigationEntry<M>[] | undefined>();
|
|
137
137
|
const [dataLoading, setDataLoading] = useState<boolean>(false);
|
|
@@ -142,10 +142,8 @@ export function useResolvedNavigationFrom<M extends Record<string, any>, UserTyp
|
|
|
142
142
|
if (navigation) {
|
|
143
143
|
setDataLoading(true);
|
|
144
144
|
setDataLoadingError(undefined);
|
|
145
|
-
resolveNavigationFrom<M,
|
|
146
|
-
.then(
|
|
147
|
-
setData(res);
|
|
148
|
-
})
|
|
145
|
+
resolveNavigationFrom<M, USER>({ path, context })
|
|
146
|
+
.then(setData)
|
|
149
147
|
.catch((e) => setDataLoadingError(e))
|
|
150
148
|
.finally(() => setDataLoading(false));
|
|
151
149
|
}
|
|
@@ -1,36 +1,31 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
2
|
import equal from "react-fast-compare";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { AuthController, Authenticator, DataSourceDelegate, StorageSource, User } from "../index";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* This hook is used internally for validating an authenticator.
|
|
8
8
|
*
|
|
9
9
|
* @param authController
|
|
10
10
|
* @param authentication
|
|
11
|
-
* @param getAppCheckToken
|
|
12
|
-
* @param appCheckForceRefresh
|
|
13
11
|
* @param storageSource
|
|
14
12
|
* @param dataSourceDelegate
|
|
15
13
|
*/
|
|
16
|
-
export function useValidateAuthenticator<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
dataSourceDelegate: DataSourceDelegate;
|
|
32
|
-
storageSource: StorageSource;
|
|
33
|
-
}): {
|
|
14
|
+
export function useValidateAuthenticator<USER extends User = any>
|
|
15
|
+
({
|
|
16
|
+
disabled,
|
|
17
|
+
authController,
|
|
18
|
+
authenticator,
|
|
19
|
+
storageSource,
|
|
20
|
+
dataSourceDelegate
|
|
21
|
+
}:
|
|
22
|
+
{
|
|
23
|
+
disabled?: boolean,
|
|
24
|
+
authController: AuthController<USER>,
|
|
25
|
+
authenticator?: boolean | Authenticator<USER>,
|
|
26
|
+
dataSourceDelegate: DataSourceDelegate;
|
|
27
|
+
storageSource: StorageSource;
|
|
28
|
+
}): {
|
|
34
29
|
canAccessMainView: boolean,
|
|
35
30
|
authLoading: boolean,
|
|
36
31
|
notAllowedError: any,
|
|
@@ -76,21 +71,6 @@ export function useValidateAuthenticator<UserType extends User = User, Controlle
|
|
|
76
71
|
}
|
|
77
72
|
|
|
78
73
|
const delegateUser = authController.user;
|
|
79
|
-
console.debug("Checking authentication for user", delegateUser);
|
|
80
|
-
|
|
81
|
-
if (getAppCheckToken) {
|
|
82
|
-
try {
|
|
83
|
-
if (!await getAppCheckToken(appCheckForceRefresh)) {
|
|
84
|
-
setNotAllowedError("App Check failed.");
|
|
85
|
-
authController.signOut();
|
|
86
|
-
} else {
|
|
87
|
-
console.debug("App Check success.");
|
|
88
|
-
}
|
|
89
|
-
} catch (e: any) {
|
|
90
|
-
setNotAllowedError(e.message);
|
|
91
|
-
authController.signOut();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
74
|
|
|
95
75
|
if (authenticator instanceof Function && delegateUser && !equal(checkedUserRef.current?.uid, delegateUser.uid)) {
|
|
96
76
|
setAuthLoading(true);
|
|
@@ -120,7 +100,7 @@ export function useValidateAuthenticator<UserType extends User = User, Controlle
|
|
|
120
100
|
setAuthVerified(true);
|
|
121
101
|
}
|
|
122
102
|
|
|
123
|
-
}, [disabled, authController, authenticator,
|
|
103
|
+
}, [disabled, authController, authenticator, dataSourceDelegate, storageSource]);
|
|
124
104
|
|
|
125
105
|
useEffect(() => {
|
|
126
106
|
checkAuthentication();
|
package/src/index.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
2
|
import {
|
|
3
|
+
AuthController,
|
|
3
4
|
DataSource,
|
|
4
5
|
DataSourceDelegate,
|
|
5
6
|
DeleteEntityProps,
|
|
6
7
|
Entity,
|
|
7
8
|
EntityCollection,
|
|
8
|
-
EntityReference,
|
|
9
9
|
EntityValues,
|
|
10
10
|
FetchCollectionProps,
|
|
11
11
|
FetchEntityProps,
|
|
12
12
|
FilterValues,
|
|
13
|
-
|
|
13
|
+
FireCMSContext,
|
|
14
14
|
ListenCollectionProps,
|
|
15
15
|
ListenEntityProps,
|
|
16
16
|
NavigationController,
|
|
@@ -28,11 +28,13 @@ import { resolveCollection, updateDateAutoValues } from "../util";
|
|
|
28
28
|
export function useBuildDataSource({
|
|
29
29
|
delegate,
|
|
30
30
|
propertyConfigs,
|
|
31
|
-
navigationController
|
|
31
|
+
navigationController,
|
|
32
|
+
authController
|
|
32
33
|
}: {
|
|
33
34
|
delegate: DataSourceDelegate,
|
|
34
35
|
propertyConfigs?: Record<string, PropertyConfig>;
|
|
35
36
|
navigationController: NavigationController;
|
|
37
|
+
authController: AuthController;
|
|
36
38
|
}): DataSource {
|
|
37
39
|
|
|
38
40
|
return {
|
|
@@ -53,23 +55,25 @@ export function useBuildDataSource({
|
|
|
53
55
|
*/
|
|
54
56
|
fetchCollection: useCallback(<M extends Record<string, any>>({
|
|
55
57
|
path,
|
|
56
|
-
collection
|
|
58
|
+
collection,
|
|
57
59
|
filter,
|
|
58
60
|
limit,
|
|
59
61
|
startAfter,
|
|
60
62
|
searchString,
|
|
61
63
|
orderBy,
|
|
62
|
-
order
|
|
64
|
+
order,
|
|
63
65
|
}: FetchCollectionProps<M>
|
|
64
66
|
): Promise<Entity<M>[]> => {
|
|
65
|
-
|
|
67
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
68
|
+
return usedDelegate.fetchCollection<M>({
|
|
66
69
|
path,
|
|
67
70
|
filter,
|
|
68
71
|
limit,
|
|
69
72
|
startAfter,
|
|
70
73
|
searchString,
|
|
71
74
|
orderBy,
|
|
72
|
-
order
|
|
75
|
+
order,
|
|
76
|
+
collection
|
|
73
77
|
});
|
|
74
78
|
}, [delegate]),
|
|
75
79
|
|
|
@@ -90,7 +94,6 @@ export function useBuildDataSource({
|
|
|
90
94
|
* @group Firestore
|
|
91
95
|
*/
|
|
92
96
|
listenCollection: delegate.listenCollection
|
|
93
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
94
97
|
? useCallback(<M extends Record<string, any>>(
|
|
95
98
|
{
|
|
96
99
|
path,
|
|
@@ -107,11 +110,12 @@ export function useBuildDataSource({
|
|
|
107
110
|
): () => void => {
|
|
108
111
|
|
|
109
112
|
const collection = collectionProp ?? navigationController.getCollection(path);
|
|
110
|
-
const
|
|
111
|
-
|
|
113
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
114
|
+
|
|
115
|
+
if (!usedDelegate.listenCollection)
|
|
112
116
|
throw Error("useBuildDataSource delegate not initialised");
|
|
113
117
|
|
|
114
|
-
return
|
|
118
|
+
return usedDelegate.listenCollection<M>({
|
|
115
119
|
path,
|
|
116
120
|
filter,
|
|
117
121
|
limit,
|
|
@@ -121,8 +125,7 @@ export function useBuildDataSource({
|
|
|
121
125
|
order,
|
|
122
126
|
onUpdate,
|
|
123
127
|
onError,
|
|
124
|
-
|
|
125
|
-
collection
|
|
128
|
+
collection,
|
|
126
129
|
});
|
|
127
130
|
}, [delegate, navigationController.getCollection])
|
|
128
131
|
: undefined,
|
|
@@ -136,12 +139,17 @@ export function useBuildDataSource({
|
|
|
136
139
|
*/
|
|
137
140
|
fetchEntity: useCallback(<M extends Record<string, any>>({
|
|
138
141
|
path,
|
|
139
|
-
entityId
|
|
142
|
+
entityId,
|
|
143
|
+
collection
|
|
140
144
|
}: FetchEntityProps<M>
|
|
141
|
-
): Promise<Entity<M> | undefined> =>
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
): Promise<Entity<M> | undefined> => {
|
|
146
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
147
|
+
return usedDelegate.fetchEntity({
|
|
148
|
+
path,
|
|
149
|
+
entityId,
|
|
150
|
+
collection
|
|
151
|
+
});
|
|
152
|
+
}, [delegate.fetchEntity]),
|
|
145
153
|
|
|
146
154
|
/**
|
|
147
155
|
*
|
|
@@ -154,7 +162,6 @@ export function useBuildDataSource({
|
|
|
154
162
|
* @group Firestore
|
|
155
163
|
*/
|
|
156
164
|
listenEntity: delegate.listenEntity
|
|
157
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
158
165
|
? useCallback(<M extends Record<string, any>>(
|
|
159
166
|
{
|
|
160
167
|
path,
|
|
@@ -163,14 +170,17 @@ export function useBuildDataSource({
|
|
|
163
170
|
onUpdate,
|
|
164
171
|
onError
|
|
165
172
|
}: ListenEntityProps<M>): () => void => {
|
|
166
|
-
|
|
173
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
174
|
+
|
|
175
|
+
if (!usedDelegate.listenEntity)
|
|
167
176
|
throw Error("useBuildDataSource delegate not initialised");
|
|
168
177
|
|
|
169
|
-
return
|
|
178
|
+
return usedDelegate.listenEntity<M>({
|
|
170
179
|
path,
|
|
171
180
|
entityId,
|
|
172
181
|
onUpdate,
|
|
173
|
-
onError
|
|
182
|
+
onError,
|
|
183
|
+
collection
|
|
174
184
|
})
|
|
175
185
|
}, [delegate.listenEntity]) : undefined,
|
|
176
186
|
|
|
@@ -195,46 +205,46 @@ export function useBuildDataSource({
|
|
|
195
205
|
}: SaveEntityProps<M>): Promise<Entity<M>> => {
|
|
196
206
|
|
|
197
207
|
const collection = collectionProp ?? navigationController.getCollection(path);
|
|
208
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
198
209
|
|
|
199
210
|
const resolvedCollection = collection
|
|
200
211
|
? resolveCollection<M>({
|
|
201
212
|
collection,
|
|
202
213
|
path,
|
|
203
214
|
entityId,
|
|
204
|
-
|
|
215
|
+
propertyConfigs: propertyConfigs,
|
|
216
|
+
authController
|
|
205
217
|
})
|
|
206
218
|
: undefined;
|
|
207
219
|
|
|
208
220
|
const properties: ResolvedProperties<M> | undefined = resolvedCollection?.properties;
|
|
209
221
|
|
|
210
|
-
const
|
|
222
|
+
const delegateValues = usedDelegate.cmsToDelegateModel(
|
|
211
223
|
values,
|
|
212
|
-
delegate.buildReference,
|
|
213
|
-
delegate.buildGeoPoint,
|
|
214
|
-
delegate.buildDate,
|
|
215
|
-
delegate.buildDeleteFieldValue
|
|
216
224
|
);
|
|
217
|
-
|
|
225
|
+
|
|
226
|
+
const updatedValues: EntityValues<M> = properties
|
|
218
227
|
? updateDateAutoValues(
|
|
219
228
|
{
|
|
220
|
-
inputValues:
|
|
229
|
+
inputValues: delegateValues,
|
|
221
230
|
properties,
|
|
222
231
|
status,
|
|
223
|
-
timestampNowValue:
|
|
224
|
-
setDateToMidnight:
|
|
232
|
+
timestampNowValue: usedDelegate.currentTime?.() ?? new Date(),
|
|
233
|
+
setDateToMidnight: usedDelegate.setDateToMidnight
|
|
225
234
|
})
|
|
226
|
-
:
|
|
235
|
+
: delegateValues;
|
|
227
236
|
|
|
228
|
-
return
|
|
237
|
+
return usedDelegate.saveEntity({
|
|
229
238
|
path,
|
|
239
|
+
collection,
|
|
230
240
|
entityId,
|
|
231
|
-
values:
|
|
241
|
+
values: updatedValues,
|
|
232
242
|
status
|
|
233
243
|
}).then((res) => {
|
|
234
244
|
return {
|
|
235
245
|
id: res.id,
|
|
236
246
|
path: res.path,
|
|
237
|
-
values:
|
|
247
|
+
values: usedDelegate.delegateToCMSModel(updatedValues)
|
|
238
248
|
} as Entity<M>;
|
|
239
249
|
});
|
|
240
250
|
}, [delegate.saveEntity, navigationController.getCollection]),
|
|
@@ -247,10 +257,15 @@ export function useBuildDataSource({
|
|
|
247
257
|
*/
|
|
248
258
|
deleteEntity: useCallback(<M extends Record<string, any>>(
|
|
249
259
|
{
|
|
250
|
-
entity
|
|
260
|
+
entity,
|
|
261
|
+
collection
|
|
251
262
|
}: DeleteEntityProps<M>
|
|
252
263
|
): Promise<void> => {
|
|
253
|
-
|
|
264
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
265
|
+
return usedDelegate.deleteEntity({
|
|
266
|
+
entity,
|
|
267
|
+
collection
|
|
268
|
+
});
|
|
254
269
|
}, [delegate.deleteEntity]),
|
|
255
270
|
|
|
256
271
|
/**
|
|
@@ -267,13 +282,16 @@ export function useBuildDataSource({
|
|
|
267
282
|
path: string,
|
|
268
283
|
name: string,
|
|
269
284
|
value: any,
|
|
270
|
-
entityId?: string
|
|
285
|
+
entityId?: string,
|
|
286
|
+
collection?: EntityCollection
|
|
271
287
|
): Promise<boolean> => {
|
|
272
|
-
|
|
288
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
289
|
+
return usedDelegate.checkUniqueField(path, name, value, entityId, collection);
|
|
273
290
|
}, [delegate.checkUniqueField]),
|
|
274
291
|
|
|
275
|
-
generateEntityId: useCallback((path: string): string => {
|
|
276
|
-
|
|
292
|
+
generateEntityId: useCallback((path: string, collection: EntityCollection): string => {
|
|
293
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
294
|
+
return usedDelegate.generateEntityId(path, collection);
|
|
277
295
|
}, [delegate.generateEntityId]),
|
|
278
296
|
|
|
279
297
|
countEntities: delegate.countEntities ? async ({
|
|
@@ -289,21 +307,24 @@ export function useBuildDataSource({
|
|
|
289
307
|
orderBy?: string,
|
|
290
308
|
order?: "desc" | "asc",
|
|
291
309
|
}): Promise<number> => {
|
|
292
|
-
|
|
310
|
+
const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
311
|
+
return usedDelegate.countEntities!({
|
|
293
312
|
path,
|
|
294
313
|
filter,
|
|
295
314
|
orderBy,
|
|
296
315
|
order,
|
|
297
|
-
|
|
316
|
+
collection
|
|
298
317
|
});
|
|
299
318
|
} : undefined,
|
|
300
319
|
|
|
301
320
|
isFilterCombinationValid: useCallback(({
|
|
302
321
|
path,
|
|
322
|
+
databaseId,
|
|
303
323
|
filterValues,
|
|
304
324
|
sortBy
|
|
305
325
|
}: {
|
|
306
326
|
path: string,
|
|
327
|
+
databaseId?: string,
|
|
307
328
|
filterValues: FilterValues<any>,
|
|
308
329
|
sortBy?: [string, "asc" | "desc"]
|
|
309
330
|
}): boolean => {
|
|
@@ -312,52 +333,25 @@ export function useBuildDataSource({
|
|
|
312
333
|
return delegate.isFilterCombinationValid(
|
|
313
334
|
{
|
|
314
335
|
path,
|
|
336
|
+
databaseId,
|
|
315
337
|
filterValues,
|
|
316
338
|
sortBy
|
|
317
339
|
}
|
|
318
340
|
)
|
|
319
|
-
}, [delegate.isFilterCombinationValid])
|
|
341
|
+
}, [delegate.isFilterCombinationValid]),
|
|
320
342
|
|
|
321
|
-
|
|
343
|
+
initTextSearch: useCallback(async (props: {
|
|
344
|
+
context: FireCMSContext,
|
|
345
|
+
path: string,
|
|
346
|
+
collection: EntityCollection,
|
|
347
|
+
parentCollectionIds?: string[]
|
|
348
|
+
}): Promise<boolean> => {
|
|
349
|
+
const usedDelegate = props.collection?.overrides?.dataSourceDelegate ?? delegate;
|
|
350
|
+
if (!usedDelegate.initTextSearch)
|
|
351
|
+
return false;
|
|
352
|
+
return usedDelegate.initTextSearch(props)
|
|
353
|
+
}, [delegate.initTextSearch]),
|
|
322
354
|
|
|
323
|
-
}
|
|
355
|
+
};
|
|
324
356
|
|
|
325
|
-
/**
|
|
326
|
-
* Recursive function that converts Firestore data types into CMS or plain
|
|
327
|
-
* JS types.
|
|
328
|
-
* FireCMS uses Javascript dates internally instead of Firestore timestamps.
|
|
329
|
-
* This makes it easier to interact with the rest of the libraries and
|
|
330
|
-
* bindings.
|
|
331
|
-
* Also, Firestore references are replaced with {@link EntityReference}
|
|
332
|
-
* @param data
|
|
333
|
-
* @param buildReference
|
|
334
|
-
* @param buildGeoPoint
|
|
335
|
-
* @param buildDate
|
|
336
|
-
* @param buildDelete
|
|
337
|
-
* @group Firestore
|
|
338
|
-
*/
|
|
339
|
-
export function cmsToDelegateModel(data: any,
|
|
340
|
-
buildReference: (reference: EntityReference) => any,
|
|
341
|
-
buildGeoPoint: (geoPoint: GeoPoint) => any,
|
|
342
|
-
buildDate: (date: Date) => any,
|
|
343
|
-
buildDelete: () => any
|
|
344
|
-
): any {
|
|
345
|
-
if (data === undefined) {
|
|
346
|
-
return buildDelete();
|
|
347
|
-
} else if (data === null) {
|
|
348
|
-
return null;
|
|
349
|
-
} else if (Array.isArray(data)) {
|
|
350
|
-
return data.map(v => cmsToDelegateModel(v, buildReference, buildGeoPoint, buildDate, buildDelete));
|
|
351
|
-
} else if (data.isEntityReference && data.isEntityReference()) {
|
|
352
|
-
return buildReference(data);
|
|
353
|
-
} else if (data instanceof GeoPoint) {
|
|
354
|
-
return buildGeoPoint(data);
|
|
355
|
-
} else if (data instanceof Date) {
|
|
356
|
-
return buildDate(data);
|
|
357
|
-
} else if (data && typeof data === "object") {
|
|
358
|
-
return Object.entries(data)
|
|
359
|
-
.map(([key, v]) => ({ [key]: cmsToDelegateModel(v, buildReference, buildGeoPoint, buildDate, buildDelete) }))
|
|
360
|
-
.reduce((a, b) => ({ ...a, ...b }), {});
|
|
361
|
-
}
|
|
362
|
-
return data;
|
|
363
357
|
}
|
|
@@ -25,8 +25,9 @@ export function useBuildSideDialogsController(): SideDialogsController {
|
|
|
25
25
|
const newPanels = panelKeys
|
|
26
26
|
.map(key => routesStore.current[key])
|
|
27
27
|
.filter(p => Boolean(p)) as SideDialogPanelProps[];
|
|
28
|
-
if (!equal(sidePanelsRef.current.map(p => p.key), newPanels.map(p => p.key)))
|
|
28
|
+
if (!equal(sidePanelsRef.current.map(p => p.key), newPanels.map(p => p.key))) {
|
|
29
29
|
updateSidePanels(newPanels);
|
|
30
|
+
}
|
|
30
31
|
}, [location]);
|
|
31
32
|
|
|
32
33
|
const close = useCallback(() => {
|
|
@@ -39,7 +40,7 @@ export function useBuildSideDialogsController(): SideDialogsController {
|
|
|
39
40
|
updateSidePanels(updatedPanels);
|
|
40
41
|
|
|
41
42
|
if (routesCount.current > 0) {
|
|
42
|
-
if (lastSidePanel.urlPath)
|
|
43
|
+
if (lastSidePanel.urlPath) // if it has a url path, we need to navigate back, don't remove this code
|
|
43
44
|
navigate(-1);
|
|
44
45
|
routesCount.current--;
|
|
45
46
|
} else if (lastSidePanel.parentUrlPath) {
|
|
@@ -118,6 +119,7 @@ export function useBuildSideDialogsController(): SideDialogsController {
|
|
|
118
119
|
|
|
119
120
|
return {
|
|
120
121
|
sidePanels,
|
|
122
|
+
setSidePanels: updateSidePanels,
|
|
121
123
|
close,
|
|
122
124
|
open,
|
|
123
125
|
replace
|