@firecms/core 3.0.0-canary.99 → 3.0.0-rc.1
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/VirtualTable/VirtualTableProps.d.ts +11 -2
- 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/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 -2
- 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/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/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -12
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- 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 +20108 -14471
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20039 -14407
- 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/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 +86 -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 +2 -1
- 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 +16 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/navigation.d.ts +60 -17
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +42 -9
- package/dist/types/properties.d.ts +65 -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 +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +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 +35 -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 +522 -160
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +642 -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 +117 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +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 +59 -10
- package/src/components/UnsavedChangesDialog.tsx +46 -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/common/default_entity_actions.tsx +62 -42
- package/src/components/common/index.ts +1 -1
- package/src/components/common/useColumnsIds.tsx +1 -1
- 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/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 +46 -25
- 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 +24 -10
- 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 +55 -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/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/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/useFireCMSContext.tsx +3 -33
- 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 +28 -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 +6 -16
- package/src/preview/components/UrlComponentPreview.tsx +20 -21
- 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 +5 -3
- 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 +101 -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 +3 -1
- 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 +18 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/navigation.ts +76 -22
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +50 -9
- package/src/types/properties.ts +74 -22
- package/src/types/property_config.tsx +1 -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 +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +5 -3
- 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
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);
|
package/src/types/plugins.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import { FieldProps, FormContext } from "./fields";
|
|
|
7
7
|
import { CMSType, Property } from "./properties";
|
|
8
8
|
import { EntityStatus } from "./entities";
|
|
9
9
|
import { ResolvedProperty } from "./resolved_entities";
|
|
10
|
+
import { NavigationGroupMapping } from "./navigation";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Interface used to define plugins for FireCMS.
|
|
@@ -84,6 +85,20 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
84
85
|
children: React.ReactNode;
|
|
85
86
|
}
|
|
86
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Allow reordering with drag and drop of the collections in the home page.
|
|
90
|
+
*/
|
|
91
|
+
allowDragAndDrop?: boolean;
|
|
92
|
+
|
|
93
|
+
navigationEntries?: NavigationGroupMapping[];
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* This method will be called when the entries are updated in the home page.
|
|
97
|
+
* group => navigationEntriesOrder (path)
|
|
98
|
+
* @param entries
|
|
99
|
+
*/
|
|
100
|
+
onNavigationEntriesUpdate?: (entries: NavigationGroupMapping[]) => void;
|
|
101
|
+
|
|
87
102
|
}
|
|
88
103
|
|
|
89
104
|
collectionView?: {
|
|
@@ -151,13 +166,37 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
151
166
|
props?: FORM_PROPS;
|
|
152
167
|
}
|
|
153
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Add custom actions to the default ones ("Save", "Discard"...)
|
|
171
|
+
*/
|
|
154
172
|
Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
155
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Add custom actions to the top of the form
|
|
176
|
+
*/
|
|
177
|
+
ActionsTop?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
178
|
+
|
|
156
179
|
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
157
180
|
|
|
158
181
|
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
159
182
|
}
|
|
160
183
|
|
|
184
|
+
collection?: {
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Use this method to modify a single collection before it is rendered.
|
|
188
|
+
* @param collection
|
|
189
|
+
*/
|
|
190
|
+
modifyCollection?: (collection: EntityCollection) => EntityCollection;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Use this method to modify, add or remove collections.
|
|
194
|
+
* @param collections
|
|
195
|
+
*/
|
|
196
|
+
injectCollections?: (collections: EntityCollection[]) => EntityCollection[];
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
|
|
161
200
|
}
|
|
162
201
|
|
|
163
202
|
/**
|
|
@@ -166,7 +205,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
166
205
|
*
|
|
167
206
|
* @group Models
|
|
168
207
|
*/
|
|
169
|
-
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any,
|
|
208
|
+
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
170
209
|
/**
|
|
171
210
|
* Collection path of this entity. This is the full path, like
|
|
172
211
|
* `users/1234/addresses`
|
|
@@ -181,20 +220,22 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
|
|
|
181
220
|
/**
|
|
182
221
|
* Context of the app status
|
|
183
222
|
*/
|
|
184
|
-
context: FireCMSContext<
|
|
223
|
+
context: FireCMSContext<USER>;
|
|
185
224
|
|
|
186
225
|
extraProps?: EP;
|
|
187
226
|
|
|
188
227
|
}
|
|
189
228
|
|
|
190
|
-
export interface PluginFormActionProps<
|
|
229
|
+
export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
|
|
191
230
|
entityId?: string;
|
|
192
231
|
path: string;
|
|
232
|
+
parentCollectionIds: string[];
|
|
193
233
|
status: EntityStatus;
|
|
194
234
|
collection: EC;
|
|
235
|
+
disabled: boolean;
|
|
195
236
|
formContext?: FormContext<any>;
|
|
196
|
-
context: FireCMSContext<
|
|
197
|
-
|
|
237
|
+
context: FireCMSContext<USER>;
|
|
238
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
198
239
|
}
|
|
199
240
|
|
|
200
241
|
export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
|
|
@@ -207,11 +248,11 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
|
|
|
207
248
|
collection?: EC;
|
|
208
249
|
};
|
|
209
250
|
|
|
210
|
-
export interface PluginGenericProps<
|
|
211
|
-
context: FireCMSContext<
|
|
251
|
+
export interface PluginGenericProps<USER extends User = User> {
|
|
252
|
+
context: FireCMSContext<USER>;
|
|
212
253
|
}
|
|
213
254
|
|
|
214
|
-
export interface PluginHomePageAdditionalCardsProps<
|
|
255
|
+
export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
|
|
215
256
|
group?: string;
|
|
216
|
-
context: FireCMSContext<
|
|
257
|
+
context: FireCMSContext<USER>;
|
|
217
258
|
}
|
package/src/types/properties.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
|
|
|
5
5
|
import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
|
|
6
6
|
import { FilterValues } from "./collections";
|
|
7
7
|
import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
|
|
8
|
+
import { AuthController } from "./auth";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @group Entity properties
|
|
@@ -17,7 +18,7 @@ export type DataType<T extends CMSType = CMSType> =
|
|
|
17
18
|
T extends GeoPoint ? "geopoint" :
|
|
18
19
|
T extends Vector ? "vector" :
|
|
19
20
|
T extends EntityReference ? "reference" :
|
|
20
|
-
T extends Array<
|
|
21
|
+
T extends Array<any> ? "array" :
|
|
21
22
|
T extends Record<string, any> ? "map" : never;
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -49,7 +50,7 @@ export type AnyProperty =
|
|
|
49
50
|
/**
|
|
50
51
|
* @group Entity properties
|
|
51
52
|
*/
|
|
52
|
-
export type Property<T extends CMSType =
|
|
53
|
+
export type Property<T extends CMSType = any> =
|
|
53
54
|
T extends string ? StringProperty :
|
|
54
55
|
T extends number ? NumberProperty :
|
|
55
56
|
T extends boolean ? BooleanProperty :
|
|
@@ -156,6 +157,12 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
156
157
|
* save the new config. The saved config will then become the source of truth.
|
|
157
158
|
*/
|
|
158
159
|
editable?: boolean;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* A number between 0 and 100 that indicates the width of the field in the form view.
|
|
163
|
+
* It defaults to 100, but you can set it to 50 to have two fields in the same row.
|
|
164
|
+
*/
|
|
165
|
+
widthPercentage?: number;
|
|
159
166
|
}
|
|
160
167
|
|
|
161
168
|
/**
|
|
@@ -264,6 +271,11 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> =
|
|
|
264
271
|
* Entity ID
|
|
265
272
|
*/
|
|
266
273
|
entityId?: string;
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Controller to manage authentication
|
|
277
|
+
*/
|
|
278
|
+
authController: AuthController;
|
|
267
279
|
};
|
|
268
280
|
|
|
269
281
|
/**
|
|
@@ -279,20 +291,21 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
|
|
|
279
291
|
propertyValue,
|
|
280
292
|
index,
|
|
281
293
|
path,
|
|
282
|
-
entityId
|
|
294
|
+
entityId,
|
|
295
|
+
authController
|
|
283
296
|
}: PropertyBuilderProps<M>) => Property<T> | null;
|
|
284
297
|
|
|
285
298
|
/**
|
|
286
299
|
* @group Entity properties
|
|
287
300
|
*/
|
|
288
|
-
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> =
|
|
301
|
+
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any> =
|
|
289
302
|
Property<T>
|
|
290
303
|
| PropertyBuilder<T, M>;
|
|
291
304
|
|
|
292
305
|
/**
|
|
293
306
|
* @group Entity properties
|
|
294
307
|
*/
|
|
295
|
-
export type PropertiesOrBuilders<M extends Record<string, any> =
|
|
308
|
+
export type PropertiesOrBuilders<M extends Record<string, any> = any> =
|
|
296
309
|
{
|
|
297
310
|
[k in keyof M]: PropertyOrBuilder<M[k], M>;
|
|
298
311
|
};
|
|
@@ -371,7 +384,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
371
384
|
|
|
372
385
|
/**
|
|
373
386
|
* You can specify a `Storage` configuration. It is used to
|
|
374
|
-
* indicate that this string refers to a path in
|
|
387
|
+
* indicate that this string refers to a path in your storage provider.
|
|
375
388
|
*/
|
|
376
389
|
storage?: StorageConfig;
|
|
377
390
|
|
|
@@ -400,12 +413,20 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
400
413
|
* Add an icon to clear the value and set it to `null`. Defaults to `false`
|
|
401
414
|
*/
|
|
402
415
|
clearable?: boolean;
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* You can use this property (a string) to behave as a reference to another
|
|
419
|
+
* collection. The stored value is the ID of the entity in the
|
|
420
|
+
* collection, and the `path` prop is used to
|
|
421
|
+
* define the collection this reference points to.
|
|
422
|
+
*/
|
|
423
|
+
reference?: ReferenceProperty;
|
|
403
424
|
}
|
|
404
425
|
|
|
405
426
|
/**
|
|
406
427
|
* @group Entity properties
|
|
407
428
|
*/
|
|
408
|
-
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType =
|
|
429
|
+
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
|
|
409
430
|
|
|
410
431
|
dataType: "array";
|
|
411
432
|
|
|
@@ -469,6 +490,24 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
|
|
|
469
490
|
*/
|
|
470
491
|
expanded?: boolean;
|
|
471
492
|
|
|
493
|
+
/**
|
|
494
|
+
* Display the child properties directly, without being wrapped in an
|
|
495
|
+
* extendable panel.
|
|
496
|
+
*/
|
|
497
|
+
minimalistView?: boolean;
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Can the elements in this array be reordered. Defaults to `true`.
|
|
501
|
+
* This prop has no effect if `disabled` is set to true.
|
|
502
|
+
*/
|
|
503
|
+
sortable?: boolean;
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Can the elements in this array be added. Defaults to `true`
|
|
507
|
+
* This prop has no effect if `disabled` is set to true.
|
|
508
|
+
*/
|
|
509
|
+
canAddElements?: boolean;
|
|
510
|
+
|
|
472
511
|
}
|
|
473
512
|
|
|
474
513
|
/**
|
|
@@ -517,6 +556,12 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
|
|
|
517
556
|
*/
|
|
518
557
|
spreadChildren?: boolean;
|
|
519
558
|
|
|
559
|
+
/**
|
|
560
|
+
* Display the child properties directly, without being wrapped in an
|
|
561
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
562
|
+
*/
|
|
563
|
+
minimalistView?: boolean;
|
|
564
|
+
|
|
520
565
|
/**
|
|
521
566
|
* Should the field be initially expanded. Defaults to `true`
|
|
522
567
|
*/
|
|
@@ -593,7 +638,7 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
|
|
|
593
638
|
* You can leave this prop undefined if the path is not yet know, e.g.
|
|
594
639
|
* you are using a property builder and the path depends on a different
|
|
595
640
|
* property.
|
|
596
|
-
* Note that you can also use a collection
|
|
641
|
+
* Note that you can also use a collection id.
|
|
597
642
|
*/
|
|
598
643
|
path?: string;
|
|
599
644
|
|
|
@@ -734,13 +779,13 @@ export type StorageConfig = {
|
|
|
734
779
|
* You can use this prop to customize the uploaded filename.
|
|
735
780
|
* You can use a function as a callback or a string where you
|
|
736
781
|
* specify some placeholders that get replaced with the corresponding values.
|
|
737
|
-
* - {file} - Full file name
|
|
738
|
-
* - {file.name} - Name of the file without extension
|
|
739
|
-
* - {file.ext} - Extension of the file
|
|
740
|
-
* - {rand} - Random value used to avoid name collisions
|
|
741
|
-
* - {entityId} - ID of the entity
|
|
742
|
-
* - {propertyKey} - ID of this property
|
|
743
|
-
* - {path} - Path of this entity
|
|
782
|
+
* - `{file}` - Full file name
|
|
783
|
+
* - `{file.name}` - Name of the file without extension
|
|
784
|
+
* - `{file.ext}` - Extension of the file
|
|
785
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
786
|
+
* - `{entityId}` - ID of the entity
|
|
787
|
+
* - `{propertyKey}` - ID of this property
|
|
788
|
+
* - `{path}` - Path of this entity
|
|
744
789
|
*
|
|
745
790
|
* @param context
|
|
746
791
|
*/
|
|
@@ -751,13 +796,13 @@ export type StorageConfig = {
|
|
|
751
796
|
*
|
|
752
797
|
* You can use a function as a callback or a string where you
|
|
753
798
|
* specify some placeholders that get replaced with the corresponding values.
|
|
754
|
-
* - {file} - Full file name
|
|
755
|
-
* - {file.name} - Name of the file without extension
|
|
756
|
-
* - {file.ext} - Extension of the file
|
|
757
|
-
* - {rand} - Random value used to avoid name collisions
|
|
758
|
-
* - {entityId} - ID of the entity
|
|
759
|
-
* - {propertyKey} - ID of this property
|
|
760
|
-
* - {path} - Path of this entity
|
|
799
|
+
* - `{file}` - Full file name
|
|
800
|
+
* - `{file.name}` - Name of the file without extension
|
|
801
|
+
* - `{file.ext}` - Extension of the file
|
|
802
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
803
|
+
* - `{entityId}` - ID of the entity
|
|
804
|
+
* - `{propertyKey}` - ID of this property
|
|
805
|
+
* - `{path}` - Path of this entity
|
|
761
806
|
*/
|
|
762
807
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
763
808
|
|
|
@@ -778,6 +823,13 @@ export type StorageConfig = {
|
|
|
778
823
|
*/
|
|
779
824
|
maxSize?: number,
|
|
780
825
|
|
|
826
|
+
/**
|
|
827
|
+
* Use this callback to process the file before uploading it to the storage.
|
|
828
|
+
* If nothing is returned, the file is uploaded as it is.
|
|
829
|
+
* @param file
|
|
830
|
+
*/
|
|
831
|
+
processFile?: (file: File) => Promise<File> | undefined;
|
|
832
|
+
|
|
781
833
|
/**
|
|
782
834
|
* Postprocess the saved value (storage path or URL)
|
|
783
835
|
* after it has been resolved.
|
|
@@ -23,8 +23,6 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
23
23
|
* Default config for the property.
|
|
24
24
|
* This property or builder will be used as the base values for the resulting property.
|
|
25
25
|
* You can also use a builder function to generate the base property.
|
|
26
|
-
* You can use a builder function to generate the property based on the values or the path.
|
|
27
|
-
* You can also define a custom Field as a React component to be used for this property.
|
|
28
26
|
*/
|
|
29
27
|
property: PropertyOrBuilder<T>;
|
|
30
28
|
|
|
@@ -64,6 +62,7 @@ export type PropertyConfigId =
|
|
|
64
62
|
"group" |
|
|
65
63
|
"key_value" |
|
|
66
64
|
"reference" |
|
|
65
|
+
"reference_as_string" |
|
|
67
66
|
"multi_references" |
|
|
68
67
|
"switch" |
|
|
69
68
|
"date_time" |
|
package/src/types/roles.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { EntityFormProps } from "../form";
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* Controller to open the side dialog
|
|
3
6
|
* @group Hooks and utilities
|
|
@@ -14,6 +17,12 @@ export interface SideDialogsController {
|
|
|
14
17
|
*/
|
|
15
18
|
sidePanels: SideDialogPanelProps[];
|
|
16
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Override the current side panels
|
|
22
|
+
* @param panels
|
|
23
|
+
*/
|
|
24
|
+
setSidePanels: (panels: SideDialogPanelProps[]) => void;
|
|
25
|
+
|
|
17
26
|
/**
|
|
18
27
|
* Open one or multiple side panels
|
|
19
28
|
* @param props
|
|
@@ -65,4 +74,10 @@ export interface SideDialogPanelProps {
|
|
|
65
74
|
* Callback when the panel is closed
|
|
66
75
|
*/
|
|
67
76
|
onClose?: () => void;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Use this prop to store additional data in the panel
|
|
80
|
+
*/
|
|
81
|
+
additional?: any;
|
|
82
|
+
|
|
68
83
|
}
|
|
@@ -2,6 +2,7 @@ import { EntityCollection } from "./collections";
|
|
|
2
2
|
import { ResolvedEntityCollection } from "./resolved_entities";
|
|
3
3
|
import { Entity } from "./entities";
|
|
4
4
|
import { EntityOverrides } from "./entity_overrides";
|
|
5
|
+
import { EntityFormProps } from "../form";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Props used to open a side dialog
|
|
@@ -14,6 +15,11 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
|
|
|
14
15
|
*/
|
|
15
16
|
path: string;
|
|
16
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Full CMS path of the entity, including the collection and sub-collections.
|
|
20
|
+
*/
|
|
21
|
+
fullIdPath?: string;
|
|
22
|
+
|
|
17
23
|
/**
|
|
18
24
|
* ID of the entity, if not set, it means we are creating a new entity
|
|
19
25
|
*/
|
|
@@ -28,7 +34,7 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
|
|
|
28
34
|
* Open the entity with a selected sub-collection view. If the panel for this
|
|
29
35
|
* entity was already open, it is replaced.
|
|
30
36
|
*/
|
|
31
|
-
|
|
37
|
+
selectedTab?: string;
|
|
32
38
|
|
|
33
39
|
/**
|
|
34
40
|
* Use this prop to override the width of the form view.
|
|
@@ -66,6 +72,15 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
|
|
|
66
72
|
*/
|
|
67
73
|
closeOnSave?: boolean;
|
|
68
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Override some form properties
|
|
77
|
+
*/
|
|
78
|
+
formProps?: Partial<EntityFormProps<M>>;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Allow the user to open the entity fullscreen
|
|
82
|
+
*/
|
|
83
|
+
allowFullScreen?: boolean;
|
|
69
84
|
}
|
|
70
85
|
|
|
71
86
|
/**
|