@firecms/core 3.0.0-canary.29 → 3.0.0-canary.292
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 +31 -12
- 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 +14 -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 +10 -7
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +77 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
- package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyCollectionView.d.ts +23 -0
- 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/UserDisplay.d.ts +7 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- 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/contexts/InternalUserManagementContext.d.ts +3 -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 +49 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -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/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +40 -64
- package/dist/form/EntityFormActions.d.ts +21 -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/LocalChangesMenu.d.ts +11 -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/ReferenceAsStringFieldBinding.d.ts +9 -0
- 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 +5 -13
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +18 -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 +3 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -13
- package/dist/hooks/useCollapsedGroups.d.ts +9 -0
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
- 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 +24546 -13965
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +27256 -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 +4 -3
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/components/UserPreview.d.ts +8 -0
- package/dist/preview/index.d.ts +1 -0
- 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/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +123 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +12 -3
- package/dist/types/entity_actions.d.ts +72 -8
- 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 +79 -39
- package/dist/types/firecms.d.ts +31 -3
- package/dist/types/firecms_context.d.ts +17 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal_user_management.d.ts +20 -0
- package/dist/types/navigation.d.ts +62 -19
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +58 -13
- package/dist/types/properties.d.ts +122 -31
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/roles.d.ts +3 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +14 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +2 -1
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/collections.d.ts +1 -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 +28 -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 +7 -4
- package/dist/util/index.d.ts +3 -0
- package/dist/util/make_properties_editable.d.ts +1 -2
- package/dist/util/navigation_from_path.d.ts +10 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +3 -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 +42 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +4 -3
- package/package.json +70 -53
- 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 +447 -229
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +87 -62
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +84 -42
- 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 +34 -39
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +241 -119
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- 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 +83 -62
- package/src/components/EntityView.tsx +34 -42
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +516 -158
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +702 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyCollectionView.tsx +329 -0
- package/src/components/PropertyConfigBadge.tsx +10 -4
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -157
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +27 -9
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -24
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/UserDisplay.tsx +55 -0
- package/src/components/VirtualTable/VirtualTable.tsx +105 -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 +28 -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 +2 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +99 -0
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +64 -44
- 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 +16 -2
- 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/InternalUserManagementContext.tsx +4 -0
- 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 +447 -469
- package/src/core/EntityEditViewFormActions.tsx +344 -0
- package/src/core/EntitySidePanel.tsx +96 -23
- package/src/core/FireCMS.tsx +85 -60
- 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 +41 -14
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +740 -523
- package/src/form/EntityFormActions.tsx +226 -0
- package/src/form/PropertyFieldBinding.tsx +88 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/ErrorFocus.tsx +22 -29
- 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/LocalChangesMenu.tsx +144 -0
- package/src/form/components/StorageItemPreview.tsx +23 -13
- package/src/form/components/StorageUploadProgress.tsx +5 -6
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -33
- 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 +73 -55
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- 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 +24 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +94 -0
- package/src/form/index.tsx +21 -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 +26 -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 +4 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +515 -121
- package/src/hooks/useCollapsedGroups.ts +64 -0
- package/src/hooks/useFireCMSContext.tsx +9 -35
- package/src/hooks/useInternalUserManagementController.tsx +16 -0
- 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 +204 -77
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +42 -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 +30 -38
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +1 -0
- 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 +8 -7
- package/src/preview/property_previews/MapPropertyPreview.tsx +14 -13
- package/src/preview/property_previews/NumberPropertyPreview.tsx +2 -2
- 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/analytics.ts +3 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +146 -30
- package/src/types/customization_controller.tsx +9 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +19 -3
- package/src/types/entity_actions.tsx +86 -10
- 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 +91 -42
- package/src/types/firecms.tsx +34 -4
- package/src/types/firecms_context.tsx +18 -1
- package/src/types/index.ts +1 -1
- package/src/types/internal_user_management.ts +24 -0
- package/src/types/navigation.ts +77 -24
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +69 -15
- package/src/types/properties.ts +141 -33
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +3 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +16 -1
- package/src/types/storage.ts +83 -1
- package/src/types/user.ts +3 -1
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/collections.ts +8 -0
- package/src/util/createFormexStub.tsx +66 -0
- package/src/util/entities.ts +11 -8
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +223 -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 +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +11 -4
- package/src/util/make_properties_editable.ts +5 -19
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +128 -33
- 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 +122 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +162 -62
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- 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/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- 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
package/dist/types/fields.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
1
|
+
import { CMSType, Property, PropertyOrBuilder } from "./properties";
|
|
3
2
|
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
3
|
+
import { FormexController } from "@firecms/formex";
|
|
4
|
+
import { Entity } from "./entities";
|
|
4
5
|
/**
|
|
5
6
|
* When building a custom field you need to create a React component that takes
|
|
6
7
|
* this interface as props.
|
|
@@ -17,9 +18,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
17
18
|
* Current value of this field
|
|
18
19
|
*/
|
|
19
20
|
value: T;
|
|
20
|
-
/**
|
|
21
|
-
* Initial value of this field
|
|
22
|
-
*/
|
|
23
21
|
/**
|
|
24
22
|
* Set value of field directly
|
|
25
23
|
*/
|
|
@@ -34,53 +32,54 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
34
32
|
/**
|
|
35
33
|
* Is the form currently submitting
|
|
36
34
|
*/
|
|
37
|
-
isSubmitting
|
|
35
|
+
isSubmitting?: boolean;
|
|
38
36
|
/**
|
|
39
37
|
* Should this field show the error indicator.
|
|
40
38
|
* Note that there might be an error (like an empty field that should be
|
|
41
39
|
* filled) but we don't want to show the error until the user has tried
|
|
42
40
|
* saving.
|
|
43
41
|
*/
|
|
44
|
-
showError
|
|
42
|
+
showError?: boolean;
|
|
45
43
|
/**
|
|
46
44
|
* Is there an error in this field. The error field has the same shape as
|
|
47
45
|
* the field, replacing values with a string containing the error.
|
|
48
46
|
* It takes the value `null` if there is no error
|
|
49
47
|
*/
|
|
50
|
-
error
|
|
48
|
+
error?: any | null;
|
|
51
49
|
/**
|
|
52
50
|
* Has this field been touched
|
|
53
51
|
*/
|
|
54
|
-
touched
|
|
52
|
+
touched?: boolean;
|
|
55
53
|
/**
|
|
56
54
|
* Property related to this field
|
|
57
55
|
*/
|
|
58
|
-
property: ResolvedProperty<T>;
|
|
56
|
+
property: Property<T> | ResolvedProperty<T>;
|
|
59
57
|
/**
|
|
60
58
|
* Should this field include a description
|
|
61
59
|
*/
|
|
62
|
-
includeDescription
|
|
60
|
+
includeDescription?: boolean;
|
|
63
61
|
/**
|
|
64
62
|
* Flag to indicate that the underlying value has been updated in the
|
|
65
63
|
* datasource
|
|
66
64
|
*/
|
|
67
|
-
underlyingValueHasChanged
|
|
65
|
+
underlyingValueHasChanged?: boolean;
|
|
68
66
|
/**
|
|
69
67
|
* Is this field part of an array
|
|
70
68
|
*/
|
|
71
|
-
partOfArray
|
|
69
|
+
partOfArray?: boolean;
|
|
72
70
|
/**
|
|
73
|
-
* Is this field part of a block
|
|
71
|
+
* Is this field part of a block
|
|
74
72
|
*/
|
|
75
|
-
partOfBlock
|
|
73
|
+
partOfBlock?: boolean;
|
|
76
74
|
/**
|
|
77
|
-
*
|
|
75
|
+
* Display the child properties directly, without being wrapped in an
|
|
76
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
78
77
|
*/
|
|
79
|
-
|
|
78
|
+
minimalistView?: boolean;
|
|
80
79
|
/**
|
|
81
80
|
* Should this field autofocus on mount
|
|
82
81
|
*/
|
|
83
|
-
autoFocus
|
|
82
|
+
autoFocus?: boolean;
|
|
84
83
|
/**
|
|
85
84
|
* Additional properties set by the developer
|
|
86
85
|
*/
|
|
@@ -92,29 +91,29 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
92
91
|
/**
|
|
93
92
|
* Flag to indicate if this field should be disabled
|
|
94
93
|
*/
|
|
95
|
-
disabled
|
|
94
|
+
disabled?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Size of the field
|
|
97
|
+
*/
|
|
98
|
+
size?: "small" | "medium" | "large";
|
|
99
|
+
/**
|
|
100
|
+
* Some properties might change internal state (like expanding a panel).
|
|
101
|
+
* This function should be called when the internal state changes.
|
|
102
|
+
* This is used to preserve state in array containers.
|
|
103
|
+
*
|
|
104
|
+
* @param property
|
|
105
|
+
*/
|
|
106
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
96
107
|
}
|
|
97
108
|
/**
|
|
98
109
|
* Context passed to custom fields
|
|
99
110
|
* @group Form custom fields
|
|
100
111
|
*/
|
|
101
112
|
export interface FormContext<M extends Record<string, any> = any> {
|
|
102
|
-
/**
|
|
103
|
-
* Collection of the entity being modified
|
|
104
|
-
*/
|
|
105
|
-
collection: ResolvedEntityCollection<M>;
|
|
106
113
|
/**
|
|
107
114
|
* Current values of the entity
|
|
108
115
|
*/
|
|
109
|
-
values:
|
|
110
|
-
/**
|
|
111
|
-
* Entity id, it can be null if it's a new entity
|
|
112
|
-
*/
|
|
113
|
-
entityId?: string;
|
|
114
|
-
/**
|
|
115
|
-
* Path this entity is located at
|
|
116
|
-
*/
|
|
117
|
-
path: string;
|
|
116
|
+
values: M;
|
|
118
117
|
/**
|
|
119
118
|
* Update the value of a field
|
|
120
119
|
* @param key
|
|
@@ -123,9 +122,32 @@ export interface FormContext<M extends Record<string, any> = any> {
|
|
|
123
122
|
*/
|
|
124
123
|
setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
|
|
125
124
|
/**
|
|
126
|
-
* Save the entity
|
|
125
|
+
* Save the entity.
|
|
127
126
|
*/
|
|
128
|
-
save: (values:
|
|
127
|
+
save: (values: M) => void;
|
|
128
|
+
/**
|
|
129
|
+
* Collection of the entity being modified
|
|
130
|
+
*/
|
|
131
|
+
collection?: ResolvedEntityCollection<M>;
|
|
132
|
+
/**
|
|
133
|
+
* Entity id, it can be null if it's a new entity
|
|
134
|
+
*/
|
|
135
|
+
entityId: string;
|
|
136
|
+
/**
|
|
137
|
+
* Path this entity is located at
|
|
138
|
+
*/
|
|
139
|
+
path?: string;
|
|
140
|
+
status: "new" | "existing" | "copy";
|
|
141
|
+
entity?: Entity<M>;
|
|
142
|
+
savingError?: Error;
|
|
143
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
144
|
+
/**
|
|
145
|
+
* This is the underlying formex controller that powers the form.
|
|
146
|
+
* If you are in a red only mode, the formex controller is there, but you can't
|
|
147
|
+
* operate with it
|
|
148
|
+
*/
|
|
149
|
+
formex: FormexController<M>;
|
|
150
|
+
disabled: boolean;
|
|
129
151
|
}
|
|
130
152
|
/**
|
|
131
153
|
* In case you need to render a field bound to a Property inside your
|
|
@@ -156,18 +178,19 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
156
178
|
* field is being edited
|
|
157
179
|
*/
|
|
158
180
|
underlyingValueHasChanged?: boolean;
|
|
159
|
-
/**
|
|
160
|
-
* Is this field being rendered in a table
|
|
161
|
-
*/
|
|
162
|
-
tableMode?: boolean;
|
|
163
181
|
/**
|
|
164
182
|
* Is this field part of an array
|
|
165
183
|
*/
|
|
166
184
|
partOfArray?: boolean;
|
|
167
185
|
/**
|
|
168
|
-
* Is this field part of a block
|
|
186
|
+
* Is this field part of a block
|
|
169
187
|
*/
|
|
170
188
|
partOfBlock?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Display the child properties directly, without being wrapped in an
|
|
191
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
192
|
+
*/
|
|
193
|
+
minimalistView?: boolean;
|
|
171
194
|
/**
|
|
172
195
|
* Should the field take focus when rendered. When opening the popup view
|
|
173
196
|
* in table mode, it makes sense to put the focus on the only field rendered.
|
|
@@ -177,4 +200,21 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
177
200
|
* Should this field be disabled
|
|
178
201
|
*/
|
|
179
202
|
disabled?: boolean;
|
|
203
|
+
/**
|
|
204
|
+
* Index of the field in the array.
|
|
205
|
+
* Only used when the field is part of an array.
|
|
206
|
+
*/
|
|
207
|
+
index?: number;
|
|
208
|
+
/**
|
|
209
|
+
* The size of the field
|
|
210
|
+
*/
|
|
211
|
+
size?: "small" | "medium" | "large";
|
|
212
|
+
/**
|
|
213
|
+
* Some properties might change internal state (like expanding a panel).
|
|
214
|
+
* This function should be called when the internal state changes.
|
|
215
|
+
* This is used to preserve state in array containers.
|
|
216
|
+
*
|
|
217
|
+
* @param property
|
|
218
|
+
*/
|
|
219
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
180
220
|
}
|
package/dist/types/firecms.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ import { EntityLinkBuilder } from "./entity_link_builder";
|
|
|
12
12
|
import { UserConfigurationPersistence } from "./local_config_persistence";
|
|
13
13
|
import { FireCMSPlugin } from "./plugins";
|
|
14
14
|
import { CMSAnalyticsEvent } from "./analytics";
|
|
15
|
+
import { EntityAction } from "./entity_actions";
|
|
16
|
+
import { InternalUserManagement } from "./internal_user_management";
|
|
15
17
|
/**
|
|
16
18
|
* Use this callback to build entity collections dynamically.
|
|
17
19
|
* You can use the user to decide which collections to show.
|
|
@@ -44,7 +46,7 @@ export type CMSViewsBuilder = (params: {
|
|
|
44
46
|
/**
|
|
45
47
|
* @group Models
|
|
46
48
|
*/
|
|
47
|
-
export type FireCMSProps<
|
|
49
|
+
export type FireCMSProps<USER extends User> = {
|
|
48
50
|
/**
|
|
49
51
|
* Use this function to return the components you want to render under
|
|
50
52
|
* FireCMS
|
|
@@ -62,6 +64,10 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
62
64
|
*/
|
|
63
65
|
loading: boolean;
|
|
64
66
|
}) => React.ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* If you have a custom API key, you can use it here.
|
|
69
|
+
*/
|
|
70
|
+
apiKey?: string;
|
|
65
71
|
/**
|
|
66
72
|
* Record of custom form fields to be used in the CMS.
|
|
67
73
|
* You can use the key to reference the custom field in
|
|
@@ -81,6 +87,13 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
81
87
|
* You can also define an entity view from the UI.
|
|
82
88
|
*/
|
|
83
89
|
entityViews?: EntityCustomView[];
|
|
90
|
+
/**
|
|
91
|
+
* List of actions that can be performed on entities.
|
|
92
|
+
* These actions are displayed in the entity view and in the collection view.
|
|
93
|
+
* You can later reuse these actions in the `entityActions` prop of a collection,
|
|
94
|
+
* by specifying the `key` of the action.
|
|
95
|
+
*/
|
|
96
|
+
entityActions?: EntityAction[];
|
|
84
97
|
/**
|
|
85
98
|
* Format of the dates in the CMS.
|
|
86
99
|
* Defaults to 'MMMM dd, yyyy, HH:mm:ss'
|
|
@@ -101,7 +114,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
101
114
|
/**
|
|
102
115
|
* Delegate for implementing your auth operations.
|
|
103
116
|
*/
|
|
104
|
-
authController: AuthController<
|
|
117
|
+
authController: AuthController<USER>;
|
|
105
118
|
/**
|
|
106
119
|
* Use this controller to access the configuration that is stored locally,
|
|
107
120
|
* and not defined in code
|
|
@@ -109,7 +122,9 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
109
122
|
userConfigPersistence?: UserConfigurationPersistence;
|
|
110
123
|
/**
|
|
111
124
|
* Use plugins to modify the behaviour of the CMS.
|
|
112
|
-
*
|
|
125
|
+
* DEPRECATED: use the `plugins` prop in the `useBuildNavigationController` instead.
|
|
126
|
+
* This prop will work as a fallback for the `plugins` prop in the `useBuildNavigationController`.
|
|
127
|
+
* @deprecated
|
|
113
128
|
*/
|
|
114
129
|
plugins?: FireCMSPlugin<any, any, any>[];
|
|
115
130
|
/**
|
|
@@ -121,6 +136,19 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
121
136
|
* The function must return a URL that gets opened when the button is clicked
|
|
122
137
|
*/
|
|
123
138
|
entityLinkBuilder?: EntityLinkBuilder;
|
|
139
|
+
/**
|
|
140
|
+
* You can use this props to provide your own user management implementation.
|
|
141
|
+
* Note that this will not affect the UI, but it will be used to show user information
|
|
142
|
+
* in various places of the CMS, for example, to show who created or modified an entity,
|
|
143
|
+
* or to assign ownership of an entity.
|
|
144
|
+
*
|
|
145
|
+
* You can also use this data to be retrieved in your custom properties,
|
|
146
|
+
* for example, to show a list of users in a dropdown.
|
|
147
|
+
*
|
|
148
|
+
* If you are using the FireCMS user management plugin, this
|
|
149
|
+
* prop will be implemented automatically.
|
|
150
|
+
*/
|
|
151
|
+
userManagement?: InternalUserManagement;
|
|
124
152
|
components?: {
|
|
125
153
|
/**
|
|
126
154
|
* Component to render when a reference is missing
|
|
@@ -10,6 +10,7 @@ import { SideDialogsController } from "./side_dialogs_controller";
|
|
|
10
10
|
import { DialogsController } from "./dialogs_controller";
|
|
11
11
|
import { CustomizationController } from "./customization_controller";
|
|
12
12
|
import { AnalyticsController } from "./analytics_controller";
|
|
13
|
+
import { InternalUserManagement } from "./internal_user_management";
|
|
13
14
|
/**
|
|
14
15
|
* Context that includes the internal controllers and contexts used by the app.
|
|
15
16
|
* Some controllers and context included in this context can be accessed
|
|
@@ -17,7 +18,7 @@ import { AnalyticsController } from "./analytics_controller";
|
|
|
17
18
|
* @group Hooks and utilities
|
|
18
19
|
* @see useFireCMSContext
|
|
19
20
|
*/
|
|
20
|
-
export type FireCMSContext<
|
|
21
|
+
export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
|
|
21
22
|
/**
|
|
22
23
|
* Connector to your database, e.g. your Firestore database
|
|
23
24
|
*/
|
|
@@ -67,4 +68,19 @@ export type FireCMSContext<UserType extends User = User, AuthControllerType exte
|
|
|
67
68
|
* Callback to send analytics events
|
|
68
69
|
*/
|
|
69
70
|
analyticsController?: AnalyticsController;
|
|
71
|
+
/**
|
|
72
|
+
* This section is used to manage users in the CMS.
|
|
73
|
+
* It is used to show user information in various places of the CMS,
|
|
74
|
+
* for example, to show who created or modified an entity,
|
|
75
|
+
* or to assign ownership of an entity.
|
|
76
|
+
*
|
|
77
|
+
* In the base CMS, this information is not used for access control.
|
|
78
|
+
* You can pass your own implementation of this section, to populate
|
|
79
|
+
* the dropdown of users when assigning ownership of an entity,
|
|
80
|
+
* or to show more information about the user.
|
|
81
|
+
*
|
|
82
|
+
* If you are using the FireCMS user management plugin, this
|
|
83
|
+
* section will be implemented automatically.
|
|
84
|
+
*/
|
|
85
|
+
userManagement: InternalUserManagement<USER>;
|
|
70
86
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from "./fields";
|
|
|
13
13
|
export * from "./property_config";
|
|
14
14
|
export * from "./datasource";
|
|
15
15
|
export * from "./entity_link_builder";
|
|
16
|
+
export * from "./internal_user_management";
|
|
16
17
|
export * from "./side_entity_controller";
|
|
17
18
|
export * from "./side_dialogs_controller";
|
|
18
19
|
export * from "./firecms_context";
|
|
@@ -23,7 +24,6 @@ export * from "./plugins";
|
|
|
23
24
|
export * from "./analytics";
|
|
24
25
|
export * from "./firecms";
|
|
25
26
|
export * from "./roles";
|
|
26
|
-
export * from "./appcheck";
|
|
27
27
|
export * from "./export_import";
|
|
28
28
|
export * from "./modify_collections";
|
|
29
29
|
export * from "./analytics_controller";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { User } from "./user";
|
|
2
|
+
export type InternalUserManagement<USER extends User = User> = {
|
|
3
|
+
/**
|
|
4
|
+
* List of users to be managed by the CMS.
|
|
5
|
+
*/
|
|
6
|
+
users: USER[];
|
|
7
|
+
/**
|
|
8
|
+
* Function to get a user by its uid. This is used to show
|
|
9
|
+
* user information when assigning ownership of an entity.
|
|
10
|
+
*
|
|
11
|
+
* You can pass your own implementation if you want to show
|
|
12
|
+
* more information about the user.
|
|
13
|
+
*
|
|
14
|
+
* If you are using the FireCMS user management plugin, this
|
|
15
|
+
* function will be implemented automatically.
|
|
16
|
+
*
|
|
17
|
+
* @param uid
|
|
18
|
+
*/
|
|
19
|
+
getUser: (uid: string) => USER | null;
|
|
20
|
+
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { EntityCollection } from "./collections";
|
|
3
3
|
import { EntityReference } from "./entities";
|
|
4
|
+
import { FireCMSPlugin } from "./plugins";
|
|
4
5
|
/**
|
|
5
6
|
* Controller that includes the resolved navigation and utility methods and
|
|
6
7
|
* attributes.
|
|
8
|
+
* This controller holds the state of the navigation including the collections.
|
|
7
9
|
* @group Models
|
|
8
10
|
*/
|
|
9
11
|
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
@@ -29,7 +31,7 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
29
31
|
* level of the navigation (e.g. in the home page or the navigation
|
|
30
32
|
* drawer)
|
|
31
33
|
*/
|
|
32
|
-
topLevelNavigation?:
|
|
34
|
+
topLevelNavigation?: NavigationResult;
|
|
33
35
|
/**
|
|
34
36
|
* Is the navigation loading (the configuration persistence has not
|
|
35
37
|
* loaded yet, or a specified navigation builder has not completed)
|
|
@@ -47,9 +49,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
47
49
|
* Get the collection configuration for a given path.
|
|
48
50
|
* The collection is resolved from the given path or alias.
|
|
49
51
|
*/
|
|
50
|
-
getCollection: (
|
|
52
|
+
getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
|
|
51
53
|
/**
|
|
52
|
-
* Get the collection configuration
|
|
54
|
+
* Get the top level collection configuration for a given id
|
|
55
|
+
*/
|
|
56
|
+
getCollectionById: (id: string) => EC | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Get the collection configuration from its parent ids.
|
|
53
59
|
*/
|
|
54
60
|
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
55
61
|
/**
|
|
@@ -57,11 +63,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
57
63
|
*/
|
|
58
64
|
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
59
65
|
/**
|
|
60
|
-
* Default path under the navigation routes of the CMS will be created
|
|
66
|
+
* Default path under the navigation routes of the CMS will be created.
|
|
67
|
+
* Defaults to '/'. You may want to change this `basepath` to 'admin' for example.
|
|
61
68
|
*/
|
|
62
69
|
basePath: string;
|
|
63
70
|
/**
|
|
64
|
-
* Default path under the collection routes of the CMS will be created
|
|
71
|
+
* Default path under the collection routes of the CMS will be created.
|
|
72
|
+
* It defaults to '/c'
|
|
65
73
|
*/
|
|
66
74
|
baseCollectionPath: string;
|
|
67
75
|
/**
|
|
@@ -72,14 +80,6 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
72
80
|
* @param cmsPath
|
|
73
81
|
*/
|
|
74
82
|
urlPathToDataPath: (cmsPath: string) => string;
|
|
75
|
-
/**
|
|
76
|
-
* Convert a collection or entity path to a URL path
|
|
77
|
-
* @param path
|
|
78
|
-
*/
|
|
79
|
-
buildCMSUrlPath: (path: string) => string;
|
|
80
|
-
buildUrlEditCollectionPath: (props: {
|
|
81
|
-
path: string;
|
|
82
|
-
}) => string;
|
|
83
83
|
/**
|
|
84
84
|
* Base url path for the home screen
|
|
85
85
|
*/
|
|
@@ -97,10 +97,11 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
97
97
|
*/
|
|
98
98
|
buildUrlCollectionPath: (path: string) => string;
|
|
99
99
|
/**
|
|
100
|
-
* Turn a path with
|
|
100
|
+
* Turn a path with collection ids into a resolved path.
|
|
101
|
+
* The ids (typically used in urls) will be replaced with relative paths (typically used in database paths)
|
|
101
102
|
* @param pathWithAliases
|
|
102
103
|
*/
|
|
103
|
-
|
|
104
|
+
resolveIdsFrom: (pathWithAliases: string) => string;
|
|
104
105
|
/**
|
|
105
106
|
* Call this method to recalculate the navigation
|
|
106
107
|
*/
|
|
@@ -120,6 +121,31 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
120
121
|
* @param ids
|
|
121
122
|
*/
|
|
122
123
|
convertIdsToPaths: (ids: string[]) => string[];
|
|
124
|
+
/**
|
|
125
|
+
* A function to navigate to a specified route or URL.
|
|
126
|
+
*
|
|
127
|
+
* @param {string} to - The target route or URL to navigate to.
|
|
128
|
+
* @param {NavigateOptions} [options] - Optional configuration settings for navigation, such as replace behavior or state data.
|
|
129
|
+
*/
|
|
130
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
131
|
+
/**
|
|
132
|
+
* Plugin system allowing to extend the CMS functionality.
|
|
133
|
+
*/
|
|
134
|
+
plugins?: FireCMSPlugin<any, any, any>[];
|
|
135
|
+
};
|
|
136
|
+
export interface NavigateOptions {
|
|
137
|
+
replace?: boolean;
|
|
138
|
+
state?: any;
|
|
139
|
+
preventScrollReset?: boolean;
|
|
140
|
+
relative?: "route" | "path";
|
|
141
|
+
flushSync?: boolean;
|
|
142
|
+
viewTransition?: boolean;
|
|
143
|
+
}
|
|
144
|
+
export type NavigationBlocker = {
|
|
145
|
+
updateBlockListener: (path: string, block: boolean, basePath?: string) => () => void;
|
|
146
|
+
isBlocked: (path: string) => boolean;
|
|
147
|
+
proceed?: () => void;
|
|
148
|
+
reset?: () => void;
|
|
123
149
|
};
|
|
124
150
|
/**
|
|
125
151
|
* Custom additional views created by the developer, added to the main
|
|
@@ -144,8 +170,9 @@ export interface CMSView {
|
|
|
144
170
|
* You can use any of the icons in the Material specs:
|
|
145
171
|
* https://fonts.google.com/icons
|
|
146
172
|
* e.g. 'account_tree' or 'person'
|
|
173
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
147
174
|
*/
|
|
148
|
-
icon?: string;
|
|
175
|
+
icon?: string | React.ReactNode;
|
|
149
176
|
/**
|
|
150
177
|
* Should this view be hidden from the main navigation panel.
|
|
151
178
|
* It will still be accessible if you reach the specified path
|
|
@@ -163,7 +190,21 @@ export interface CMSView {
|
|
|
163
190
|
*/
|
|
164
191
|
group?: string;
|
|
165
192
|
}
|
|
166
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Used to group navigation entries in the main navigation.
|
|
195
|
+
*/
|
|
196
|
+
export interface NavigationGroupMapping {
|
|
197
|
+
/**
|
|
198
|
+
* Name of the group, used to display the group header in the UI
|
|
199
|
+
*/
|
|
200
|
+
name: string;
|
|
201
|
+
/**
|
|
202
|
+
* List of collection ids or view paths that belong to this group.
|
|
203
|
+
*/
|
|
204
|
+
entries: string[];
|
|
205
|
+
}
|
|
206
|
+
export interface NavigationEntry {
|
|
207
|
+
id: string;
|
|
167
208
|
url: string;
|
|
168
209
|
name: string;
|
|
169
210
|
path: string;
|
|
@@ -173,7 +214,9 @@ export interface TopNavigationEntry {
|
|
|
173
214
|
description?: string;
|
|
174
215
|
group: string;
|
|
175
216
|
}
|
|
176
|
-
export type
|
|
177
|
-
|
|
217
|
+
export type NavigationResult = {
|
|
218
|
+
allowDragAndDrop: boolean;
|
|
219
|
+
navigationEntries: NavigationEntry[];
|
|
178
220
|
groups: string[];
|
|
221
|
+
onNavigationEntriesUpdate: (entries: NavigationGroupMapping[]) => void;
|
|
179
222
|
};
|
|
@@ -30,7 +30,7 @@ export interface Permissions {
|
|
|
30
30
|
* Props passed to a {@link PermissionsBuilder}
|
|
31
31
|
* @group Models
|
|
32
32
|
*/
|
|
33
|
-
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection,
|
|
33
|
+
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
|
|
34
34
|
/**
|
|
35
35
|
* Entity being edited, might be null in some cases, when the operation
|
|
36
36
|
* refers to the collection.
|
|
@@ -49,7 +49,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
49
49
|
/**
|
|
50
50
|
* Logged in user
|
|
51
51
|
*/
|
|
52
|
-
user:
|
|
52
|
+
user: USER | null;
|
|
53
53
|
/**
|
|
54
54
|
* Collection these permissions apply to
|
|
55
55
|
*/
|
|
@@ -57,11 +57,11 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
57
57
|
/**
|
|
58
58
|
* Auth controller
|
|
59
59
|
*/
|
|
60
|
-
authController: AuthController<
|
|
60
|
+
authController: AuthController<USER>;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Builder used to assign permissions to entities,
|
|
64
64
|
* based on the logged user or collection.
|
|
65
65
|
* @group Models
|
|
66
66
|
*/
|
|
67
|
-
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection,
|
|
67
|
+
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
|