@firecms/core 3.0.0-canary.99 → 3.0.0-rc.2
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 +2 -2
- package/dist/app/Drawer.d.ts +0 -1
- package/dist/app/Scaffold.d.ts +4 -0
- package/dist/components/ArrayContainer.d.ts +31 -12
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -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 -6
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
- package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/UserDisplay.d.ts +7 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- package/dist/components/common/default_entity_actions.d.ts +0 -2
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/useColumnsIds.d.ts +1 -0
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -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 +3 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
- package/dist/core/DefaultAppBar.d.ts +8 -2
- package/dist/core/DrawerNavigationItem.d.ts +2 -1
- package/dist/core/EntityEditView.d.ts +40 -22
- 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 +0 -1
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/form/EntityForm.d.ts +50 -0
- package/dist/form/EntityFormActions.d.ts +21 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- 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/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 +4 -10
- 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 +17 -16
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +3 -3
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -12
- 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 +7 -1
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
- package/dist/index.es.js +20480 -14434
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20250 -14209
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -2
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +1 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +2 -2
- 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 +7 -9
- package/dist/types/collections.d.ts +88 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +19 -17
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +58 -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 +43 -17
- package/dist/types/firecms.d.ts +31 -3
- package/dist/types/firecms_context.d.ts +17 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/internal_user_management.d.ts +20 -0
- package/dist/types/navigation.d.ts +60 -17
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +44 -9
- package/dist/types/properties.d.ts +74 -22
- 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/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_synonyms.d.ts +0 -1
- package/dist/util/icons.d.ts +5 -2
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +10 -1
- package/dist/util/navigation_utils.d.ts +13 -1
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +30 -6
- package/dist/util/storage.d.ts +1 -1
- package/dist/util/useStorageUploadController.d.ts +2 -2
- package/package.json +133 -125
- package/src/app/Drawer.tsx +0 -1
- package/src/app/Scaffold.tsx +33 -29
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +1 -1
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -9
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +75 -57
- package/src/components/EntityView.tsx +8 -5
- package/src/components/ErrorView.tsx +3 -3
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +506 -161
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +600 -0
- package/src/components/HomePage/NavigationCard.tsx +47 -38
- package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +10 -4
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -13
- package/src/components/SearchIconsView.tsx +2 -2
- package/src/components/SelectableTable/SelectableTable.tsx +154 -142
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +60 -11
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/UserDisplay.tsx +55 -0
- package/src/components/VirtualTable/VirtualTable.tsx +65 -44
- package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
- package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
- package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
- package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- 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/common/default_entity_actions.tsx +62 -42
- package/src/components/common/index.ts +1 -1
- package/src/components/common/useColumnsIds.tsx +2 -9
- 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 +1 -0
- package/src/components/index.tsx +4 -1
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +3 -2
- 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 +124 -85
- package/src/core/DefaultDrawer.tsx +30 -22
- package/src/core/DrawerNavigationItem.tsx +32 -28
- package/src/core/EntityEditView.tsx +388 -995
- package/src/core/EntityEditViewFormActions.tsx +329 -0
- package/src/core/EntitySidePanel.tsx +88 -20
- package/src/core/FireCMS.tsx +58 -28
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +23 -32
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +39 -11
- package/src/core/index.tsx +4 -2
- package/src/form/EntityForm.tsx +814 -0
- package/src/form/EntityFormActions.tsx +211 -0
- package/src/form/PropertyFieldBinding.tsx +59 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/FieldHelperText.tsx +1 -1
- 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 +5 -4
- package/src/form/components/StorageUploadProgress.tsx +2 -3
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
- package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
- package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
- 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 +10 -8
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
- package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
- 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 +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +12 -6
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +26 -35
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +10 -2
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +3 -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/useBuildModeController.tsx +15 -28
- package/src/hooks/useBuildNavigationController.tsx +386 -124
- 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 +16 -5
- package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
- package/src/hooks/useValidateAuthenticator.tsx +3 -3
- package/src/internal/useBuildDataSource.ts +67 -80
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +149 -86
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +36 -12
- package/src/preview/PropertyPreviewProps.tsx +1 -1
- package/src/preview/components/BooleanPreview.tsx +1 -1
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +10 -9
- package/src/preview/components/ReferencePreview.tsx +10 -18
- package/src/preview/components/UrlComponentPreview.tsx +20 -21
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +1 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +6 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
- 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 +8 -12
- package/src/types/collections.ts +103 -28
- package/src/types/customization_controller.tsx +9 -0
- package/src/types/datasource.ts +21 -20
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +10 -2
- package/src/types/entity_actions.tsx +71 -8
- 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 +52 -19
- package/src/types/firecms.tsx +34 -4
- package/src/types/firecms_context.tsx +18 -1
- package/src/types/index.ts +1 -0
- package/src/types/internal_user_management.ts +24 -0
- package/src/types/navigation.ts +76 -22
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +53 -9
- package/src/types/properties.ts +84 -22
- 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 +82 -0
- package/src/types/user.ts +3 -1
- 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 +6 -4
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/icon_list.ts +1 -1
- package/src/util/icon_synonyms.ts +0 -1
- package/src/util/icons.tsx +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +9 -2
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +135 -19
- package/src/util/objects.ts +74 -14
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +8 -8
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +93 -24
- package/src/util/storage.ts +6 -2
- package/src/util/useStorageUploadController.tsx +74 -29
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/form/PropertiesForm.d.ts +0 -8
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
- package/src/form/PropertiesForm.tsx +0 -81
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -10,27 +10,27 @@ import { User } from "./user";
|
|
|
10
10
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
11
11
|
* @group Models
|
|
12
12
|
*/
|
|
13
|
-
export type EntityCallbacks<M extends Record<string, any> = any,
|
|
13
|
+
export type EntityCallbacks<M extends Record<string, any> = any, USER extends User = User> = {
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Callback used after fetching data
|
|
17
17
|
* @param entityFetchProps
|
|
18
18
|
*/
|
|
19
|
-
onFetch?(entityFetchProps: EntityOnFetchProps<M,
|
|
19
|
+
onFetch?(entityFetchProps: EntityOnFetchProps<M, USER>)
|
|
20
20
|
: Promise<Entity<M>> | Entity<M>;
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Callback used when save is successful
|
|
24
24
|
* @param entitySaveProps
|
|
25
25
|
*/
|
|
26
|
-
onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M,
|
|
26
|
+
onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, USER>)
|
|
27
27
|
: Promise<void> | void;
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Callback used when saving fails
|
|
31
31
|
* @param entitySaveProps
|
|
32
32
|
*/
|
|
33
|
-
onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M,
|
|
33
|
+
onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, USER>)
|
|
34
34
|
: Promise<void> | void;
|
|
35
35
|
|
|
36
36
|
/**
|
|
@@ -39,7 +39,7 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
|
|
|
39
39
|
* error snackbar gets displayed.
|
|
40
40
|
* @param entitySaveProps
|
|
41
41
|
*/
|
|
42
|
-
onPreSave?(entitySaveProps: EntityOnPreSaveProps<M,
|
|
42
|
+
onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, USER>)
|
|
43
43
|
: Promise<Partial<EntityValues<M>>> | Partial<EntityValues<M>>;
|
|
44
44
|
|
|
45
45
|
/**
|
|
@@ -49,14 +49,14 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
|
|
|
49
49
|
*
|
|
50
50
|
* @param entityDeleteProps
|
|
51
51
|
*/
|
|
52
|
-
onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M,
|
|
52
|
+
onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Callback used after the entity is deleted.
|
|
56
56
|
*
|
|
57
57
|
* @param entityDeleteProps
|
|
58
58
|
*/
|
|
59
|
-
onDelete?(entityDeleteProps: EntityOnDeleteProps<M,
|
|
59
|
+
onDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Callback fired when any value in the form changes. You can use it
|
|
@@ -73,12 +73,12 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
|
|
|
73
73
|
* Parameters passed to hooks when an entity is fetched
|
|
74
74
|
* @group Models
|
|
75
75
|
*/
|
|
76
|
-
export interface EntityOnFetchProps<M extends Record<string, any> = any,
|
|
76
|
+
export interface EntityOnFetchProps<M extends Record<string, any> = any, USER extends User = User> {
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* Collection of the entity
|
|
80
80
|
*/
|
|
81
|
-
collection: EntityCollection<M,
|
|
81
|
+
collection: EntityCollection<M, USER>;
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Full path of the CMS where this collection is being fetched.
|
|
@@ -94,15 +94,15 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
|
|
|
94
94
|
/**
|
|
95
95
|
* Context of the app status
|
|
96
96
|
*/
|
|
97
|
-
context: FireCMSContext<
|
|
97
|
+
context: FireCMSContext<USER>;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
101
|
* Parameters passed to hooks before an entity is saved
|
|
102
102
|
* @group Models
|
|
103
103
|
*/
|
|
104
|
-
export type EntityOnPreSaveProps<M extends Record<string, any> = any,
|
|
105
|
-
Omit<EntityOnSaveProps<M,
|
|
104
|
+
export type EntityOnPreSaveProps<M extends Record<string, any> = any, USER extends User = User> =
|
|
105
|
+
Omit<EntityOnSaveProps<M, USER>, "entityId">
|
|
106
106
|
& {
|
|
107
107
|
entityId?: string;
|
|
108
108
|
}
|
|
@@ -110,8 +110,8 @@ export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType e
|
|
|
110
110
|
* Parameters passed to hooks before an entity is saved
|
|
111
111
|
* @group Models
|
|
112
112
|
*/
|
|
113
|
-
export type EntityOnSaveFailureProps<M extends Record<string, any> = any,
|
|
114
|
-
Omit<EntityOnSaveProps<M,
|
|
113
|
+
export type EntityOnSaveFailureProps<M extends Record<string, any> = any, USER extends User = User> =
|
|
114
|
+
Omit<EntityOnSaveProps<M, USER>, "entityId">
|
|
115
115
|
& {
|
|
116
116
|
entityId?: string;
|
|
117
117
|
}
|
|
@@ -120,7 +120,7 @@ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserTy
|
|
|
120
120
|
* Parameters passed to hooks when an entity is saved
|
|
121
121
|
* @group Models
|
|
122
122
|
*/
|
|
123
|
-
export interface EntityOnSaveProps<M extends Record<string, any> = any,
|
|
123
|
+
export interface EntityOnSaveProps<M extends Record<string, any> = any, USER extends User = User> {
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* Resolved collection of the entity
|
|
@@ -161,14 +161,14 @@ export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType
|
|
|
161
161
|
/**
|
|
162
162
|
* Context of the app status
|
|
163
163
|
*/
|
|
164
|
-
context: FireCMSContext<
|
|
164
|
+
context: FireCMSContext<USER>;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
168
|
* Parameters passed to hooks when an entity is deleted
|
|
169
169
|
* @group Models
|
|
170
170
|
*/
|
|
171
|
-
export interface EntityOnDeleteProps<M extends Record<string, any> = any,
|
|
171
|
+
export interface EntityOnDeleteProps<M extends Record<string, any> = any, USER extends User = User> {
|
|
172
172
|
|
|
173
173
|
/**
|
|
174
174
|
* collection of the entity being deleted
|
|
@@ -193,7 +193,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
|
|
|
193
193
|
/**
|
|
194
194
|
* Context of the app status
|
|
195
195
|
*/
|
|
196
|
-
context: FireCMSContext<
|
|
196
|
+
context: FireCMSContext<USER>;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DataSource } from "./datasource";
|
|
1
|
+
import { DataSource, DataSourceDelegate } from "./datasource";
|
|
2
2
|
import { StorageSource } from "./storage";
|
|
3
3
|
|
|
4
4
|
export type EntityOverrides = {
|
|
5
|
-
|
|
5
|
+
dataSourceDelegate?: DataSourceDelegate;
|
|
6
6
|
storageSource?: StorageSource;
|
|
7
7
|
};
|
|
@@ -7,20 +7,20 @@ import { FireCMSContext } from "./firecms_context";
|
|
|
7
7
|
* exports
|
|
8
8
|
* @group Models
|
|
9
9
|
*/
|
|
10
|
-
export interface ExportConfig<
|
|
11
|
-
additionalFields: ExportMappingFunction<
|
|
10
|
+
export interface ExportConfig<USER extends User = User> {
|
|
11
|
+
additionalFields: ExportMappingFunction<USER> [];
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* @group Models
|
|
16
16
|
*/
|
|
17
|
-
export interface ExportMappingFunction<
|
|
17
|
+
export interface ExportMappingFunction<USER extends User = User> {
|
|
18
18
|
key: string;
|
|
19
19
|
builder: ({
|
|
20
20
|
entity,
|
|
21
21
|
context
|
|
22
22
|
}: {
|
|
23
23
|
entity: Entity<any>,
|
|
24
|
-
context: FireCMSContext<
|
|
24
|
+
context: FireCMSContext<USER>
|
|
25
25
|
}) => Promise<string> | string;
|
|
26
26
|
}
|
package/src/types/fields.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
1
|
+
import { CMSType, Property, PropertyOrBuilder } from "./properties";
|
|
2
2
|
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
3
3
|
import { FormexController } from "@firecms/formex";
|
|
4
|
+
import { Entity } from "./entities";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* When building a custom field you need to create a React component that takes
|
|
@@ -62,7 +63,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
62
63
|
/**
|
|
63
64
|
* Property related to this field
|
|
64
65
|
*/
|
|
65
|
-
property: ResolvedProperty<T>;
|
|
66
|
+
property: Property<T> | ResolvedProperty<T>;
|
|
66
67
|
|
|
67
68
|
/**
|
|
68
69
|
* Should this field include a description
|
|
@@ -81,14 +82,10 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
81
82
|
partOfArray?: boolean;
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
|
-
*
|
|
85
|
+
* Display the child properties directly, without being wrapped in an
|
|
86
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
85
87
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Is this field being rendered in the entity table popup
|
|
90
|
-
*/
|
|
91
|
-
tableMode?: boolean;
|
|
88
|
+
minimalistView?: boolean;
|
|
92
89
|
|
|
93
90
|
/**
|
|
94
91
|
* Should this field autofocus on mount
|
|
@@ -98,7 +95,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
98
95
|
/**
|
|
99
96
|
* Additional properties set by the developer
|
|
100
97
|
*/
|
|
101
|
-
customProps
|
|
98
|
+
customProps: CustomProps
|
|
102
99
|
|
|
103
100
|
/**
|
|
104
101
|
* Additional values related to the state of the form or the entity
|
|
@@ -110,6 +107,20 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
110
107
|
*/
|
|
111
108
|
disabled?: boolean;
|
|
112
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Size of the field
|
|
112
|
+
*/
|
|
113
|
+
size?: "small" | "medium" | "large";
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Some properties might change internal state (like expanding a panel).
|
|
117
|
+
* This function should be called when the internal state changes.
|
|
118
|
+
* This is used to preserve state in array containers.
|
|
119
|
+
*
|
|
120
|
+
* @param property
|
|
121
|
+
*/
|
|
122
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
123
|
+
|
|
113
124
|
}
|
|
114
125
|
|
|
115
126
|
/**
|
|
@@ -144,17 +155,29 @@ export interface FormContext<M extends Record<string, any> = any> {
|
|
|
144
155
|
/**
|
|
145
156
|
* Entity id, it can be null if it's a new entity
|
|
146
157
|
*/
|
|
147
|
-
entityId
|
|
158
|
+
entityId: string;
|
|
148
159
|
|
|
149
160
|
/**
|
|
150
161
|
* Path this entity is located at
|
|
151
162
|
*/
|
|
152
163
|
path?: string;
|
|
153
164
|
|
|
165
|
+
status: "new" | "existing" | "copy";
|
|
166
|
+
|
|
167
|
+
entity?: Entity<M>;
|
|
168
|
+
|
|
169
|
+
savingError?: Error;
|
|
170
|
+
|
|
171
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
172
|
+
|
|
154
173
|
/**
|
|
155
|
-
* This is the underlying formex controller that powers the form
|
|
174
|
+
* This is the underlying formex controller that powers the form.
|
|
175
|
+
* If you are in a red only mode, the formex controller is there, but you can't
|
|
176
|
+
* operate with it
|
|
156
177
|
*/
|
|
157
178
|
formex: FormexController<M>;
|
|
179
|
+
|
|
180
|
+
disabled: boolean;
|
|
158
181
|
}
|
|
159
182
|
|
|
160
183
|
/**
|
|
@@ -192,20 +215,16 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
192
215
|
*/
|
|
193
216
|
underlyingValueHasChanged?: boolean;
|
|
194
217
|
|
|
195
|
-
/**
|
|
196
|
-
* Is this field being rendered in a table
|
|
197
|
-
*/
|
|
198
|
-
tableMode?: boolean;
|
|
199
|
-
|
|
200
218
|
/**
|
|
201
219
|
* Is this field part of an array
|
|
202
220
|
*/
|
|
203
221
|
partOfArray?: boolean;
|
|
204
222
|
|
|
205
223
|
/**
|
|
206
|
-
*
|
|
224
|
+
* Display the child properties directly, without being wrapped in an
|
|
225
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
207
226
|
*/
|
|
208
|
-
|
|
227
|
+
minimalistView?: boolean;
|
|
209
228
|
|
|
210
229
|
/**
|
|
211
230
|
* Should the field take focus when rendered. When opening the popup view
|
|
@@ -223,4 +242,18 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
223
242
|
* Only used when the field is part of an array.
|
|
224
243
|
*/
|
|
225
244
|
index?: number;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* The size of the field
|
|
248
|
+
*/
|
|
249
|
+
size?: "small" | "medium" | "large",
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Some properties might change internal state (like expanding a panel).
|
|
253
|
+
* This function should be called when the internal state changes.
|
|
254
|
+
* This is used to preserve state in array containers.
|
|
255
|
+
*
|
|
256
|
+
* @param property
|
|
257
|
+
*/
|
|
258
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
226
259
|
}
|
package/src/types/firecms.tsx
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
|
/**
|
|
17
19
|
* Use this callback to build entity collections dynamically.
|
|
@@ -47,7 +49,7 @@ export type CMSViewsBuilder = (params: {
|
|
|
47
49
|
/**
|
|
48
50
|
* @group Models
|
|
49
51
|
*/
|
|
50
|
-
export type FireCMSProps<
|
|
52
|
+
export type FireCMSProps<USER extends User> = {
|
|
51
53
|
|
|
52
54
|
/**
|
|
53
55
|
* Use this function to return the components you want to render under
|
|
@@ -67,6 +69,11 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
67
69
|
loading: boolean;
|
|
68
70
|
}) => React.ReactNode;
|
|
69
71
|
|
|
72
|
+
/**
|
|
73
|
+
* If you have a custom API key, you can use it here.
|
|
74
|
+
*/
|
|
75
|
+
apiKey?: string;
|
|
76
|
+
|
|
70
77
|
/**
|
|
71
78
|
* Record of custom form fields to be used in the CMS.
|
|
72
79
|
* You can use the key to reference the custom field in
|
|
@@ -87,9 +94,16 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
87
94
|
*
|
|
88
95
|
* You can also define an entity view from the UI.
|
|
89
96
|
*/
|
|
90
|
-
|
|
91
97
|
entityViews?: EntityCustomView[];
|
|
92
98
|
|
|
99
|
+
/**
|
|
100
|
+
* List of actions that can be performed on entities.
|
|
101
|
+
* These actions are displayed in the entity view and in the collection view.
|
|
102
|
+
* You can later reuse these actions in the `entityActions` prop of a collection,
|
|
103
|
+
* by specifying the `key` of the action.
|
|
104
|
+
*/
|
|
105
|
+
entityActions?: EntityAction[];
|
|
106
|
+
|
|
93
107
|
/**
|
|
94
108
|
* Format of the dates in the CMS.
|
|
95
109
|
* Defaults to 'MMMM dd, yyyy, HH:mm:ss'
|
|
@@ -114,7 +128,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
114
128
|
/**
|
|
115
129
|
* Delegate for implementing your auth operations.
|
|
116
130
|
*/
|
|
117
|
-
authController: AuthController<
|
|
131
|
+
authController: AuthController<USER>;
|
|
118
132
|
|
|
119
133
|
/**
|
|
120
134
|
* Use this controller to access the configuration that is stored locally,
|
|
@@ -124,7 +138,9 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
124
138
|
|
|
125
139
|
/**
|
|
126
140
|
* Use plugins to modify the behaviour of the CMS.
|
|
127
|
-
*
|
|
141
|
+
* DEPRECATED: use the `plugins` prop in the `useBuildNavigationController` instead.
|
|
142
|
+
* This prop will work as a fallback for the `plugins` prop in the `useBuildNavigationController`.
|
|
143
|
+
* @deprecated
|
|
128
144
|
*/
|
|
129
145
|
plugins?: FireCMSPlugin<any, any, any>[];
|
|
130
146
|
|
|
@@ -139,6 +155,20 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
139
155
|
*/
|
|
140
156
|
entityLinkBuilder?: EntityLinkBuilder;
|
|
141
157
|
|
|
158
|
+
/**
|
|
159
|
+
* You can use this props to provide your own user management implementation.
|
|
160
|
+
* Note that this will not affect the UI, but it will be used to show user information
|
|
161
|
+
* in various places of the CMS, for example, to show who created or modified an entity,
|
|
162
|
+
* or to assign ownership of an entity.
|
|
163
|
+
*
|
|
164
|
+
* You can also use this data to be retrieved in your custom properties,
|
|
165
|
+
* for example, to show a list of users in a dropdown.
|
|
166
|
+
*
|
|
167
|
+
* If you are using the FireCMS user management plugin, this
|
|
168
|
+
* prop will be implemented automatically.
|
|
169
|
+
*/
|
|
170
|
+
userManagement?: InternalUserManagement
|
|
171
|
+
|
|
142
172
|
components?: {
|
|
143
173
|
|
|
144
174
|
/**
|
|
@@ -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
|
/**
|
|
15
16
|
* Context that includes the internal controllers and contexts used by the app.
|
|
@@ -18,7 +19,7 @@ import { AnalyticsController } from "./analytics_controller";
|
|
|
18
19
|
* @group Hooks and utilities
|
|
19
20
|
* @see useFireCMSContext
|
|
20
21
|
*/
|
|
21
|
-
export type FireCMSContext<
|
|
22
|
+
export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Connector to your database, e.g. your Firestore database
|
|
@@ -80,4 +81,20 @@ export type FireCMSContext<UserType extends User = User, AuthControllerType exte
|
|
|
80
81
|
*/
|
|
81
82
|
analyticsController?: AnalyticsController;
|
|
82
83
|
|
|
84
|
+
/**
|
|
85
|
+
* This section is used to manage users in the CMS.
|
|
86
|
+
* It is used to show user information in various places of the CMS,
|
|
87
|
+
* for example, to show who created or modified an entity,
|
|
88
|
+
* or to assign ownership of an entity.
|
|
89
|
+
*
|
|
90
|
+
* In the base CMS, this information is not used for access control.
|
|
91
|
+
* You can pass your own implementation of this section, to populate
|
|
92
|
+
* the dropdown of users when assigning ownership of an entity,
|
|
93
|
+
* or to show more information about the user.
|
|
94
|
+
*
|
|
95
|
+
* If you are using the FireCMS user management plugin, this
|
|
96
|
+
* section will be implemented automatically.
|
|
97
|
+
*/
|
|
98
|
+
userManagement: InternalUserManagement<USER>
|
|
99
|
+
|
|
83
100
|
};
|
package/src/types/index.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";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { User } from "./user";
|
|
2
|
+
|
|
3
|
+
export type InternalUserManagement<USER extends User = User> = {
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* List of users to be managed by the CMS.
|
|
7
|
+
*/
|
|
8
|
+
users: USER[];
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Function to get a user by its uid. This is used to show
|
|
12
|
+
* user information when assigning ownership of an entity.
|
|
13
|
+
*
|
|
14
|
+
* You can pass your own implementation if you want to show
|
|
15
|
+
* more information about the user.
|
|
16
|
+
*
|
|
17
|
+
* If you are using the FireCMS user management plugin, this
|
|
18
|
+
* function will be implemented automatically.
|
|
19
|
+
*
|
|
20
|
+
* @param uid
|
|
21
|
+
*/
|
|
22
|
+
getUser: (uid: string) => USER | null;
|
|
23
|
+
|
|
24
|
+
}
|
package/src/types/navigation.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
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
|
/**
|
|
6
7
|
* Controller that includes the resolved navigation and utility methods and
|
|
7
8
|
* attributes.
|
|
9
|
+
* This controller holds the state of the navigation including the collections.
|
|
8
10
|
* @group Models
|
|
9
11
|
*/
|
|
10
12
|
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
@@ -34,7 +36,7 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
34
36
|
* level of the navigation (e.g. in the home page or the navigation
|
|
35
37
|
* drawer)
|
|
36
38
|
*/
|
|
37
|
-
topLevelNavigation?:
|
|
39
|
+
topLevelNavigation?: NavigationResult;
|
|
38
40
|
|
|
39
41
|
/**
|
|
40
42
|
* Is the navigation loading (the configuration persistence has not
|
|
@@ -56,8 +58,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
56
58
|
* Get the collection configuration for a given path.
|
|
57
59
|
* The collection is resolved from the given path or alias.
|
|
58
60
|
*/
|
|
59
|
-
getCollection: (pathOrId: string,
|
|
60
|
-
|
|
61
|
+
getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get the top level collection configuration for a given id
|
|
65
|
+
*/
|
|
66
|
+
getCollectionById: (id: string) => EC | undefined;
|
|
67
|
+
|
|
61
68
|
/**
|
|
62
69
|
* Get the collection configuration from its parent ids.
|
|
63
70
|
*/
|
|
@@ -69,12 +76,14 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
69
76
|
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
70
77
|
|
|
71
78
|
/**
|
|
72
|
-
* Default path under the navigation routes of the CMS will be created
|
|
79
|
+
* Default path under the navigation routes of the CMS will be created.
|
|
80
|
+
* Defaults to '/'. You may want to change this `basepath` to 'admin' for example.
|
|
73
81
|
*/
|
|
74
82
|
basePath: string;
|
|
75
83
|
|
|
76
84
|
/**
|
|
77
|
-
* Default path under the collection routes of the CMS will be created
|
|
85
|
+
* Default path under the collection routes of the CMS will be created.
|
|
86
|
+
* It defaults to '/c'
|
|
78
87
|
*/
|
|
79
88
|
baseCollectionPath: string;
|
|
80
89
|
|
|
@@ -87,16 +96,6 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
87
96
|
*/
|
|
88
97
|
urlPathToDataPath: (cmsPath: string) => string;
|
|
89
98
|
|
|
90
|
-
/**
|
|
91
|
-
* Convert a collection or entity path to a URL path
|
|
92
|
-
* @param path
|
|
93
|
-
*/
|
|
94
|
-
buildCMSUrlPath: (path: string) => string;
|
|
95
|
-
|
|
96
|
-
buildUrlEditCollectionPath: (props: {
|
|
97
|
-
path: string
|
|
98
|
-
}) => string;
|
|
99
|
-
|
|
100
99
|
/**
|
|
101
100
|
* Base url path for the home screen
|
|
102
101
|
*/
|
|
@@ -117,10 +116,11 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
117
116
|
buildUrlCollectionPath: (path: string) => string;
|
|
118
117
|
|
|
119
118
|
/**
|
|
120
|
-
* Turn a path with
|
|
119
|
+
* Turn a path with collection ids into a resolved path.
|
|
120
|
+
* The ids (typically used in urls) will be replaced with relative paths (typically used in database paths)
|
|
121
121
|
* @param pathWithAliases
|
|
122
122
|
*/
|
|
123
|
-
|
|
123
|
+
resolveIdsFrom: (pathWithAliases: string) => string;
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* Call this method to recalculate the navigation
|
|
@@ -144,8 +144,39 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
144
144
|
* @param ids
|
|
145
145
|
*/
|
|
146
146
|
convertIdsToPaths: (ids: string[]) => string[];
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* A function to navigate to a specified route or URL.
|
|
150
|
+
*
|
|
151
|
+
* @param {string} to - The target route or URL to navigate to.
|
|
152
|
+
* @param {NavigateOptions} [options] - Optional configuration settings for navigation, such as replace behavior or state data.
|
|
153
|
+
*/
|
|
154
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Plugin system allowing to extend the CMS functionality.
|
|
158
|
+
*/
|
|
159
|
+
plugins?: FireCMSPlugin<any, any, any>[];
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface NavigateOptions {
|
|
164
|
+
replace?: boolean;
|
|
165
|
+
state?: any;
|
|
166
|
+
preventScrollReset?: boolean;
|
|
167
|
+
relative?: "route" | "path";
|
|
168
|
+
flushSync?: boolean;
|
|
169
|
+
viewTransition?: boolean;
|
|
147
170
|
}
|
|
148
171
|
|
|
172
|
+
// currently not used, in favor of a single blocker in `FireCMSRoute`
|
|
173
|
+
export type NavigationBlocker = {
|
|
174
|
+
updateBlockListener: (path: string, block: boolean, basePath?: string) => () => void;
|
|
175
|
+
isBlocked: (path: string) => boolean;
|
|
176
|
+
proceed?: () => void;
|
|
177
|
+
reset?: () => void;
|
|
178
|
+
};
|
|
179
|
+
|
|
149
180
|
/**
|
|
150
181
|
* Custom additional views created by the developer, added to the main
|
|
151
182
|
* navigation.
|
|
@@ -173,8 +204,9 @@ export interface CMSView {
|
|
|
173
204
|
* You can use any of the icons in the Material specs:
|
|
174
205
|
* https://fonts.google.com/icons
|
|
175
206
|
* e.g. 'account_tree' or 'person'
|
|
207
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
176
208
|
*/
|
|
177
|
-
icon?: string;
|
|
209
|
+
icon?: string | React.ReactNode;
|
|
178
210
|
|
|
179
211
|
/**
|
|
180
212
|
* Should this view be hidden from the main navigation panel.
|
|
@@ -197,7 +229,22 @@ export interface CMSView {
|
|
|
197
229
|
|
|
198
230
|
}
|
|
199
231
|
|
|
200
|
-
|
|
232
|
+
/**
|
|
233
|
+
* Used to group navigation entries in the main navigation.
|
|
234
|
+
*/
|
|
235
|
+
export interface NavigationGroupMapping {
|
|
236
|
+
/**
|
|
237
|
+
* Name of the group, used to display the group header in the UI
|
|
238
|
+
*/
|
|
239
|
+
name: string;
|
|
240
|
+
/**
|
|
241
|
+
* List of collection ids or view paths that belong to this group.
|
|
242
|
+
*/
|
|
243
|
+
entries: string[];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export interface NavigationEntry {
|
|
247
|
+
id: string;
|
|
201
248
|
url: string;
|
|
202
249
|
name: string;
|
|
203
250
|
path: string;
|
|
@@ -208,7 +255,14 @@ export interface TopNavigationEntry {
|
|
|
208
255
|
group: string;
|
|
209
256
|
}
|
|
210
257
|
|
|
211
|
-
export type
|
|
212
|
-
|
|
213
|
-
|
|
258
|
+
export type NavigationResult = {
|
|
259
|
+
|
|
260
|
+
allowDragAndDrop: boolean;
|
|
261
|
+
|
|
262
|
+
navigationEntries: NavigationEntry[],
|
|
263
|
+
|
|
264
|
+
groups: string[],
|
|
265
|
+
|
|
266
|
+
onNavigationEntriesUpdate: (entries: NavigationGroupMapping[]) => void;
|
|
214
267
|
};
|
|
268
|
+
|
package/src/types/permissions.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface Permissions {
|
|
|
32
32
|
* Props passed to a {@link PermissionsBuilder}
|
|
33
33
|
* @group Models
|
|
34
34
|
*/
|
|
35
|
-
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection,
|
|
35
|
+
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
|
|
36
36
|
/**
|
|
37
37
|
* Entity being edited, might be null in some cases, when the operation
|
|
38
38
|
* refers to the collection.
|
|
@@ -54,7 +54,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
54
54
|
/**
|
|
55
55
|
* Logged in user
|
|
56
56
|
*/
|
|
57
|
-
user:
|
|
57
|
+
user: USER | null;
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* Collection these permissions apply to
|
|
@@ -64,7 +64,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
64
64
|
/**
|
|
65
65
|
* Auth controller
|
|
66
66
|
*/
|
|
67
|
-
authController: AuthController<
|
|
67
|
+
authController: AuthController<USER>;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/**
|
|
@@ -72,10 +72,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
72
72
|
* based on the logged user or collection.
|
|
73
73
|
* @group Models
|
|
74
74
|
*/
|
|
75
|
-
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection,
|
|
75
|
+
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> =
|
|
76
76
|
(({
|
|
77
77
|
pathSegments,
|
|
78
78
|
user,
|
|
79
79
|
collection,
|
|
80
80
|
authController
|
|
81
|
-
}: PermissionsBuilderProps<EC,
|
|
81
|
+
}: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
|