@firecms/core 3.0.0-canary.24 → 3.0.0-canary.241
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +30 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -5
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +40 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +36 -64
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +16 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +7 -12
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21578 -13895
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24366 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +97 -23
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +74 -42
- package/dist/types/firecms.d.ts +8 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +41 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +36 -12
- package/dist/types/properties.d.ts +73 -24
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +10 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +41 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +62 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +149 -46
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +48 -40
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +32 -37
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +229 -117
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +80 -59
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +27 -20
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -145
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +130 -51
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +6 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +406 -478
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +95 -19
- package/src/core/FireCMS.tsx +72 -58
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +589 -535
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +89 -45
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +4 -5
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +48 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +23 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -52
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +16 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +32 -33
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +194 -68
- package/src/hooks/useFireCMSContext.tsx +3 -33
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +201 -75
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +20 -25
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +26 -37
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +118 -28
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +85 -46
- package/src/types/firecms.tsx +9 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +49 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +42 -14
- package/src/types/properties.ts +87 -26
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +11 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +6 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +18 -7
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +52 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +110 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +91 -28
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/src/util/{common.tsx → common.ts} +0 -0
package/src/types/auth.tsx
CHANGED
|
@@ -9,18 +9,13 @@ import { StorageSource } from "./storage";
|
|
|
9
9
|
* to do it as the result of a hook.
|
|
10
10
|
* @group Hooks and utilities
|
|
11
11
|
*/
|
|
12
|
-
export type AuthController<
|
|
12
|
+
export type AuthController<USER extends User = any, ExtraData = any> = {
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The user currently logged in
|
|
16
16
|
* The values can be: the user object, null if they skipped login
|
|
17
17
|
*/
|
|
18
|
-
user:
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Roles related to the logged user
|
|
22
|
-
*/
|
|
23
|
-
roles?: Role[];
|
|
18
|
+
user: USER | null;
|
|
24
19
|
|
|
25
20
|
/**
|
|
26
21
|
* Initial loading flag. It is used not to display the login screen
|
|
@@ -38,7 +33,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
|
|
|
38
33
|
/**
|
|
39
34
|
* Sign out
|
|
40
35
|
*/
|
|
41
|
-
signOut: () => void
|
|
36
|
+
signOut: () => Promise<void>;
|
|
42
37
|
|
|
43
38
|
/**
|
|
44
39
|
* Error initializing the authentication
|
|
@@ -64,26 +59,27 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
|
|
|
64
59
|
|
|
65
60
|
setExtra: (extra: ExtraData) => void;
|
|
66
61
|
|
|
67
|
-
|
|
62
|
+
setUser?: (user: USER | null) => void;
|
|
63
|
+
|
|
64
|
+
setUserRoles?: (roles: Role[]) => void;
|
|
68
65
|
|
|
69
|
-
// setRoles?: (roles: Role[]) => void;
|
|
70
66
|
};
|
|
71
67
|
|
|
72
68
|
/**
|
|
73
69
|
* Implement this function to allow access to specific users.
|
|
74
70
|
* @group Hooks and utilities
|
|
75
71
|
*/
|
|
76
|
-
export type Authenticator<
|
|
72
|
+
export type Authenticator<USER extends User = User> = (props: {
|
|
77
73
|
|
|
78
74
|
/**
|
|
79
75
|
* Logged-in user or null
|
|
80
76
|
*/
|
|
81
|
-
user:
|
|
77
|
+
user: USER | null;
|
|
82
78
|
|
|
83
79
|
/**
|
|
84
80
|
* AuthController
|
|
85
81
|
*/
|
|
86
|
-
authController:
|
|
82
|
+
authController: AuthController<USER>;
|
|
87
83
|
|
|
88
84
|
/**
|
|
89
85
|
* Connector to your database, e.g. your Firestore database
|
package/src/types/collections.ts
CHANGED
|
@@ -17,7 +17,7 @@ import { EntityOverrides } from "./entity_overrides";
|
|
|
17
17
|
*
|
|
18
18
|
* @group Models
|
|
19
19
|
*/
|
|
20
|
-
export interface EntityCollection<M extends Record<string, any> = any,
|
|
20
|
+
export interface EntityCollection<M extends Record<string, any> = any, USER extends User = any> {
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* You can set an alias that will be used internally instead of the `path`.
|
|
@@ -51,6 +51,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
51
51
|
*/
|
|
52
52
|
path: string;
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Optional database id of this collection. If not specified, the default
|
|
56
|
+
* database id will be used.
|
|
57
|
+
*/
|
|
58
|
+
databaseId?: string;
|
|
59
|
+
|
|
54
60
|
/**
|
|
55
61
|
* If this collection is a top level navigation entry, you can set this
|
|
56
62
|
* property to `true` to indicate that this collection is a collection group.
|
|
@@ -61,7 +67,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
61
67
|
* Icon key to use in this collection.
|
|
62
68
|
* You can use any of the icons in the Material specs:
|
|
63
69
|
* https://fonts.google.com/icons
|
|
64
|
-
* e.g. 'account_tree' or 'person'
|
|
70
|
+
* e.g. 'account_tree' or 'person'.
|
|
71
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
65
72
|
*/
|
|
66
73
|
icon?: string;
|
|
67
74
|
|
|
@@ -77,19 +84,23 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
77
84
|
*/
|
|
78
85
|
properties: PropertiesOrBuilders<M>;
|
|
79
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
89
|
+
*/
|
|
90
|
+
previewProperties?: string[];
|
|
91
|
+
|
|
80
92
|
/**
|
|
81
93
|
* Title property of the entity. This is the property that will be used
|
|
82
94
|
* as the title in entity related views and references.
|
|
83
95
|
* If not specified, the first property simple text property will be used.
|
|
84
96
|
*/
|
|
85
|
-
titleProperty?: keyof M
|
|
97
|
+
titleProperty?: keyof M;
|
|
86
98
|
|
|
87
99
|
/**
|
|
88
|
-
*
|
|
89
|
-
* Defaults to `
|
|
90
|
-
* Keep in mind that you can also set this prop to individual properties.
|
|
100
|
+
* When editing an entity, you can choose to open the entity in a side dialog
|
|
101
|
+
* or in a full screen dialog. Defaults to `full_screen`.
|
|
91
102
|
*/
|
|
92
|
-
|
|
103
|
+
openEntityMode?: "side_panel" | "full_screen";
|
|
93
104
|
|
|
94
105
|
/**
|
|
95
106
|
* Order in which the properties are displayed.
|
|
@@ -101,14 +112,18 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
101
112
|
* `hidden` in the property definition, will be ignored.
|
|
102
113
|
* `propertiesOrder` has precedence over `hidden`.
|
|
103
114
|
* - For properties use the property key.
|
|
104
|
-
* - For additional
|
|
115
|
+
* - For additional fields use the field key.
|
|
105
116
|
* - If you have subcollections, you get a column for each subcollection,
|
|
106
117
|
* with the path (or alias) as the subcollection, prefixed with
|
|
107
118
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
108
119
|
* - If you are using a collection group, you will also have an
|
|
109
120
|
* additional `collectionGroupParent` column.
|
|
121
|
+
* You can use this prop to hide some properties from the table view.
|
|
122
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
123
|
+
* `hidden` in the property definition,will be ignored.
|
|
124
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
110
125
|
*/
|
|
111
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
126
|
+
propertiesOrder?: (Extract<keyof M, string> | string | `subcollection:${string}` | "collectionGroupParent")[];
|
|
112
127
|
|
|
113
128
|
/**
|
|
114
129
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
@@ -128,7 +143,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
128
143
|
* Permissions the logged-in user can perform on this collection.
|
|
129
144
|
* If not specified everything defaults to `true`.
|
|
130
145
|
*/
|
|
131
|
-
permissions?: Permissions | PermissionsBuilder<EntityCollection,
|
|
146
|
+
permissions?: Permissions | PermissionsBuilder<EntityCollection, USER, M>;
|
|
132
147
|
|
|
133
148
|
/**
|
|
134
149
|
* Are the entities in this collection selectable. Defaults to `true`
|
|
@@ -147,7 +162,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
147
162
|
* is being created, updated or deleted.
|
|
148
163
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
149
164
|
*/
|
|
150
|
-
callbacks?: EntityCallbacks<M,
|
|
165
|
+
callbacks?: EntityCallbacks<M, USER>;
|
|
151
166
|
|
|
152
167
|
/**
|
|
153
168
|
* Builder for rendering additional components such as buttons in the
|
|
@@ -178,7 +193,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
178
193
|
* }
|
|
179
194
|
* ```
|
|
180
195
|
*/
|
|
181
|
-
entityActions?: EntityAction<M,
|
|
196
|
+
entityActions?: EntityAction<M, USER>[];
|
|
182
197
|
|
|
183
198
|
/**
|
|
184
199
|
* Pass your own selection controller if you want to control selected
|
|
@@ -200,6 +215,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
200
215
|
* Force a filter in this view. If applied, the rest of the filters will
|
|
201
216
|
* be disabled. Filters applied with this prop cannot be changed.
|
|
202
217
|
* e.g. `forceFilter: { age: [">=", 18] }`
|
|
218
|
+
* e.g. `forceFilter: { related_user: ["==", new EntityReference("sdc43dsw2", "users")] }`
|
|
203
219
|
*/
|
|
204
220
|
forceFilter?: FilterValues<Extract<keyof M, string>>;
|
|
205
221
|
|
|
@@ -207,6 +223,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
207
223
|
* Initial filters applied to the collection this collection is related to.
|
|
208
224
|
* Defaults to none. Filters applied with this prop can be changed.
|
|
209
225
|
* e.g. `initialFilter: { age: [">=", 18] }`
|
|
226
|
+
* e.g. `initialFilter: { related_user: ["==", new EntityReference("sdc43dsw2", "users")] }`
|
|
210
227
|
*/
|
|
211
228
|
initialFilter?: FilterValues<Extract<keyof M, string>>; // setting FilterValues<M> can break defining collections by code
|
|
212
229
|
|
|
@@ -230,7 +247,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
230
247
|
* You can add additional fields to the collection view by implementing
|
|
231
248
|
* an additional field delegate.
|
|
232
249
|
*/
|
|
233
|
-
additionalFields?: AdditionalFieldDelegate<M,
|
|
250
|
+
additionalFields?: AdditionalFieldDelegate<M, USER>[];
|
|
234
251
|
|
|
235
252
|
/**
|
|
236
253
|
* Default size of the rendered collection
|
|
@@ -283,14 +300,49 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
283
300
|
/**
|
|
284
301
|
*
|
|
285
302
|
*/
|
|
286
|
-
exportable?: boolean | ExportConfig<
|
|
303
|
+
exportable?: boolean | ExportConfig<USER>;
|
|
287
304
|
|
|
288
305
|
/**
|
|
289
306
|
* User id of the owner of this collection. This is used only by plugins, or if you
|
|
290
307
|
* are writing custom code
|
|
291
308
|
*/
|
|
292
309
|
ownerId?: string;
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
313
|
+
*/
|
|
293
314
|
overrides?: EntityOverrides;
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
318
|
+
*/
|
|
319
|
+
sideDialogWidth?: number | string;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Can this collection configuration be edited by the end user.
|
|
323
|
+
* Defaults to `true`.
|
|
324
|
+
* Keep in mind that you can also set this prop to individual properties.
|
|
325
|
+
* This prop has only effect if you are using the collection editor.
|
|
326
|
+
*/
|
|
327
|
+
editable?: boolean;
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* If set to true, the default values of the properties will be applied
|
|
331
|
+
* to the entity every time the entity is updated (not only when created).
|
|
332
|
+
* Defaults to false.
|
|
333
|
+
*/
|
|
334
|
+
alwaysApplyDefaultValues?: boolean;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* If set to true, a tab including the JSON representation of the entity will be included.
|
|
338
|
+
*/
|
|
339
|
+
includeJsonView?: boolean;
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* If set to true, changes to the entity will be saved in a subcollection.
|
|
343
|
+
* This prop has no effect if the history plugin is not enabled
|
|
344
|
+
*/
|
|
345
|
+
history?: boolean;
|
|
294
346
|
}
|
|
295
347
|
|
|
296
348
|
/**
|
|
@@ -300,7 +352,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
300
352
|
*
|
|
301
353
|
* @group Models
|
|
302
354
|
*/
|
|
303
|
-
export interface CollectionActionsProps<M extends Record<string, any> = any,
|
|
355
|
+
export interface CollectionActionsProps<M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
304
356
|
/**
|
|
305
357
|
* Full collection path of this entity. This is the full path, like
|
|
306
358
|
* `users/1234/addresses`
|
|
@@ -337,7 +389,7 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
337
389
|
/**
|
|
338
390
|
* Context of the app status
|
|
339
391
|
*/
|
|
340
|
-
context: FireCMSContext<
|
|
392
|
+
context: FireCMSContext<USER>;
|
|
341
393
|
|
|
342
394
|
/**
|
|
343
395
|
* Count of the entities in this collection
|
|
@@ -349,14 +401,13 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
349
401
|
/**
|
|
350
402
|
* Use this controller to retrieve the selected entities or modify them in
|
|
351
403
|
* an {@link EntityCollection}
|
|
352
|
-
* If you want to pass a `SelectionController` to
|
|
353
404
|
* @group Models
|
|
354
405
|
*/
|
|
355
406
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
356
407
|
selectedEntities: Entity<M>[];
|
|
357
408
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
358
409
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
359
|
-
toggleEntitySelection: (entity: Entity<M
|
|
410
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
360
411
|
}
|
|
361
412
|
|
|
362
413
|
/**
|
|
@@ -400,9 +451,9 @@ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" |
|
|
|
400
451
|
*/
|
|
401
452
|
export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
|
|
402
453
|
|
|
403
|
-
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any,
|
|
454
|
+
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, USER extends User = User> = {
|
|
404
455
|
entity: Entity<M>,
|
|
405
|
-
context: FireCMSContext<
|
|
456
|
+
context: FireCMSContext<USER>
|
|
406
457
|
};
|
|
407
458
|
|
|
408
459
|
/**
|
|
@@ -411,7 +462,7 @@ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, Us
|
|
|
411
462
|
* @group Models
|
|
412
463
|
*/
|
|
413
464
|
export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
414
|
-
|
|
465
|
+
USER extends User = User> {
|
|
415
466
|
|
|
416
467
|
/**
|
|
417
468
|
* ID of this column. You can use this id in the `properties` field of the
|
|
@@ -432,7 +483,7 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
432
483
|
/**
|
|
433
484
|
* Builder for the content of the cell for this column
|
|
434
485
|
*/
|
|
435
|
-
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M,
|
|
486
|
+
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, USER>>;
|
|
436
487
|
|
|
437
488
|
/**
|
|
438
489
|
* If this column needs to update dynamically based on other properties,
|
|
@@ -451,7 +502,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
451
502
|
* view.
|
|
452
503
|
* @param entity
|
|
453
504
|
*/
|
|
454
|
-
value?: (props: {
|
|
505
|
+
value?: (props: {
|
|
506
|
+
entity: Entity<M>,
|
|
507
|
+
context: FireCMSContext<any>
|
|
508
|
+
}) => string | number | Promise<string | number> | undefined;
|
|
455
509
|
}
|
|
456
510
|
|
|
457
511
|
/**
|
|
@@ -461,10 +515,39 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
461
515
|
*/
|
|
462
516
|
export type EntityCustomView<M extends Record<string, any> = any> =
|
|
463
517
|
{
|
|
464
|
-
|
|
465
|
-
|
|
518
|
+
/**
|
|
519
|
+
* Key of this custom view.
|
|
520
|
+
*/
|
|
521
|
+
key: string;
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* Name of this custom view.
|
|
525
|
+
*/
|
|
526
|
+
name: string;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Render this custom view in the tab of the entity view, instead of the name
|
|
530
|
+
*/
|
|
531
|
+
tabComponent?: React.ReactNode;
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* If set to true, the actions of the entity (save, discard,delete) will be
|
|
535
|
+
* included in the view. By default the actions are located in the right or bottom,
|
|
536
|
+
* based on the screen size. You can force the actions to be located at the bottom
|
|
537
|
+
* by setting this prop to "bottom".
|
|
538
|
+
*/
|
|
539
|
+
includeActions?: boolean | "bottom";
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Builder for rendering the custom view
|
|
543
|
+
*/
|
|
466
544
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
467
|
-
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Position of this tab in the entity view. Defaults to `end`.
|
|
548
|
+
*/
|
|
549
|
+
position?: "start" | "end";
|
|
550
|
+
};
|
|
468
551
|
|
|
469
552
|
/**
|
|
470
553
|
* Parameters passed to the builder in charge of rendering a custom panel for
|
|
@@ -523,12 +606,18 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
523
606
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
524
607
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
525
608
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
526
|
-
setSortBy?: (sortBy
|
|
609
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
527
610
|
searchString?: string;
|
|
528
611
|
setSearchString?: (searchString?: string) => void;
|
|
529
612
|
clearFilter?: () => void;
|
|
530
613
|
itemCount?: number;
|
|
531
614
|
setItemCount?: (itemCount: number) => void;
|
|
615
|
+
initialScroll?: number;
|
|
616
|
+
onScroll?: (props: {
|
|
617
|
+
scrollDirection: "forward" | "backward",
|
|
618
|
+
scrollOffset: number,
|
|
619
|
+
scrollUpdateWasRequested: boolean
|
|
620
|
+
}) => void;
|
|
532
621
|
paginationEnabled?: boolean;
|
|
533
622
|
pageSize?: number;
|
|
534
623
|
checkFilterCombination?: (filterValues: FilterValues<any>,
|
|
@@ -544,5 +633,6 @@ export type SelectedCellProps<M extends Record<string, any>> = {
|
|
|
544
633
|
cellRect: DOMRect;
|
|
545
634
|
width: number;
|
|
546
635
|
height: number;
|
|
547
|
-
|
|
636
|
+
entityPath: string;
|
|
637
|
+
entityId: string;
|
|
548
638
|
};
|
package/src/types/datasource.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Entity,
|
|
1
|
+
import { Entity, EntityStatus, EntityValues } from "./entities";
|
|
2
2
|
import { EntityCollection, FilterValues } from "./collections";
|
|
3
3
|
import { ResolvedEntityCollection } from "./resolved_entities";
|
|
4
|
+
import { FireCMSContext } from "./firecms_context";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* @group Datasource
|
|
@@ -8,6 +9,7 @@ import { ResolvedEntityCollection } from "./resolved_entities";
|
|
|
8
9
|
export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
9
10
|
path: string;
|
|
10
11
|
entityId: string;
|
|
12
|
+
databaseId?: string;
|
|
11
13
|
collection?: EntityCollection<M, any>
|
|
12
14
|
}
|
|
13
15
|
|
|
@@ -62,12 +64,12 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
|
|
|
62
64
|
*/
|
|
63
65
|
export interface DeleteEntityProps<M extends Record<string, any> = any> {
|
|
64
66
|
entity: Entity<M>;
|
|
67
|
+
collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
|
|
71
|
+
* Component in charge of communicating with the data source.
|
|
72
|
+
* Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
|
|
71
73
|
* @group Datasource
|
|
72
74
|
*/
|
|
73
75
|
export interface DataSource {
|
|
@@ -137,6 +139,7 @@ export interface DataSource {
|
|
|
137
139
|
fetchEntity<M extends Record<string, any> = any>({
|
|
138
140
|
path,
|
|
139
141
|
entityId,
|
|
142
|
+
databaseId,
|
|
140
143
|
collection
|
|
141
144
|
}: FetchEntityProps<M>
|
|
142
145
|
): Promise<Entity<M> | undefined>;
|
|
@@ -181,7 +184,8 @@ export interface DataSource {
|
|
|
181
184
|
*/
|
|
182
185
|
deleteEntity<M extends Record<string, any> = any>(
|
|
183
186
|
{
|
|
184
|
-
entity
|
|
187
|
+
entity,
|
|
188
|
+
collection
|
|
185
189
|
}: DeleteEntityProps<M>
|
|
186
190
|
): Promise<void>;
|
|
187
191
|
|
|
@@ -190,7 +194,7 @@ export interface DataSource {
|
|
|
190
194
|
* @param path Collection path
|
|
191
195
|
* @param name of the property
|
|
192
196
|
* @param value
|
|
193
|
-
* @param
|
|
197
|
+
* @param collection
|
|
194
198
|
* @param entityId
|
|
195
199
|
* @return `true` if there are no other fields besides the given entity
|
|
196
200
|
*/
|
|
@@ -198,13 +202,14 @@ export interface DataSource {
|
|
|
198
202
|
path: string,
|
|
199
203
|
name: string,
|
|
200
204
|
value: any,
|
|
201
|
-
entityId?: string
|
|
205
|
+
entityId?: string,
|
|
206
|
+
collection?: EntityCollection
|
|
202
207
|
): Promise<boolean>;
|
|
203
208
|
|
|
204
209
|
/**
|
|
205
210
|
* Generate an id for a new entity
|
|
206
211
|
*/
|
|
207
|
-
generateEntityId(path: string): string;
|
|
212
|
+
generateEntityId(path: string, collection: EntityCollection): string;
|
|
208
213
|
|
|
209
214
|
/**
|
|
210
215
|
* Count the number of entities in a collection
|
|
@@ -216,6 +221,19 @@ export interface DataSource {
|
|
|
216
221
|
* @param props
|
|
217
222
|
*/
|
|
218
223
|
isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Called when the user clicks on the search bar in a collection view.
|
|
227
|
+
* Useful for initializing a text search index.
|
|
228
|
+
* @param props
|
|
229
|
+
*/
|
|
230
|
+
initTextSearch?: (props: {
|
|
231
|
+
context: FireCMSContext,
|
|
232
|
+
path: string,
|
|
233
|
+
collection: EntityCollection,
|
|
234
|
+
parentCollectionIds?: string[]
|
|
235
|
+
}) => Promise<boolean>;
|
|
236
|
+
|
|
219
237
|
}
|
|
220
238
|
|
|
221
239
|
export type FilterCombinationValidProps = {
|
|
@@ -225,21 +243,24 @@ export type FilterCombinationValidProps = {
|
|
|
225
243
|
sortBy?: [string, "asc" | "desc"];
|
|
226
244
|
};
|
|
227
245
|
|
|
228
|
-
export type SaveEntityDelegateProps<M extends Record<string, any> = any> =
|
|
246
|
+
export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
|
|
229
247
|
|
|
230
|
-
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
231
|
-
Omit<FetchCollectionProps<M>, "collection">
|
|
232
|
-
& {
|
|
233
|
-
isCollectionGroup?: boolean
|
|
234
|
-
};
|
|
248
|
+
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
|
|
235
249
|
|
|
236
|
-
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
237
|
-
ListenCollectionProps<M>
|
|
238
|
-
& {
|
|
239
|
-
isCollectionGroup?: boolean;
|
|
240
|
-
};
|
|
250
|
+
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
|
|
241
251
|
|
|
242
252
|
export interface DataSourceDelegate {
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Key that identifies this data source delegate
|
|
256
|
+
*/
|
|
257
|
+
key: string;
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* If the data source has been initialised
|
|
261
|
+
*/
|
|
262
|
+
initialised?: boolean;
|
|
263
|
+
|
|
243
264
|
/**
|
|
244
265
|
* Fetch data from a collection
|
|
245
266
|
* @param path
|
|
@@ -297,7 +318,7 @@ export interface DataSourceDelegate {
|
|
|
297
318
|
fetchEntity<M extends Record<string, any> = any>({
|
|
298
319
|
path,
|
|
299
320
|
entityId,
|
|
300
|
-
}:
|
|
321
|
+
}: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
|
|
301
322
|
|
|
302
323
|
/**
|
|
303
324
|
* Get realtime updates on one entity.
|
|
@@ -313,13 +334,13 @@ export interface DataSourceDelegate {
|
|
|
313
334
|
entityId,
|
|
314
335
|
onUpdate,
|
|
315
336
|
onError
|
|
316
|
-
}:
|
|
337
|
+
}: ListenEntityProps<M>): () => void;
|
|
317
338
|
|
|
318
339
|
/**
|
|
319
340
|
* Save entity to the specified path
|
|
320
341
|
* @param path
|
|
321
|
-
* @param
|
|
322
|
-
* @param
|
|
342
|
+
* @param entityId
|
|
343
|
+
* @param values
|
|
323
344
|
* @param status
|
|
324
345
|
*/
|
|
325
346
|
saveEntity<M extends Record<string, any> = any>({
|
|
@@ -342,14 +363,15 @@ export interface DataSourceDelegate {
|
|
|
342
363
|
* @param name of the property
|
|
343
364
|
* @param value
|
|
344
365
|
* @param entityId
|
|
366
|
+
* @param collection
|
|
345
367
|
* @return `true` if there are no other fields besides the given entity
|
|
346
368
|
*/
|
|
347
|
-
checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
|
|
369
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
|
|
348
370
|
|
|
349
371
|
/**
|
|
350
372
|
* Generate an id for a new entity
|
|
351
373
|
*/
|
|
352
|
-
generateEntityId(path: string): string;
|
|
374
|
+
generateEntityId(path: string, collection?: EntityCollection): string;
|
|
353
375
|
|
|
354
376
|
/**
|
|
355
377
|
* Count the number of entities in a collection
|
|
@@ -360,30 +382,26 @@ export interface DataSourceDelegate {
|
|
|
360
382
|
* Check if the given filter combination is valid
|
|
361
383
|
* @param props
|
|
362
384
|
*/
|
|
363
|
-
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
* Convert a FireCMS reference to a reference that can be used by the datasource
|
|
367
|
-
* @param reference
|
|
368
|
-
*/
|
|
369
|
-
buildReference: (reference: EntityReference) => any,
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Convert a FireCMS GeoPoint to a GeoPoint that can be used by the datasource
|
|
373
|
-
* @param geoPoint
|
|
374
|
-
*/
|
|
375
|
-
buildGeoPoint: (geoPoint: GeoPoint) => any,
|
|
385
|
+
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
|
|
386
|
+
databaseId?: string
|
|
387
|
+
}): boolean;
|
|
376
388
|
|
|
377
389
|
/**
|
|
378
390
|
* Get the object to generate the current time in the datasource
|
|
379
391
|
*/
|
|
380
|
-
currentTime()
|
|
381
|
-
|
|
382
|
-
buildDate: (date: Date) => any;
|
|
383
|
-
|
|
384
|
-
buildDeleteFieldValue: () => any;
|
|
392
|
+
currentTime?: () => any;
|
|
385
393
|
|
|
386
394
|
delegateToCMSModel: (data: any) => any;
|
|
387
395
|
|
|
396
|
+
cmsToDelegateModel: (data: any) => any;
|
|
397
|
+
|
|
388
398
|
setDateToMidnight: (input?: any) => any;
|
|
399
|
+
|
|
400
|
+
initTextSearch?: (props: {
|
|
401
|
+
context: FireCMSContext,
|
|
402
|
+
path: string,
|
|
403
|
+
databaseId?: string,
|
|
404
|
+
collection: EntityCollection,
|
|
405
|
+
parentCollectionIds?: string[]
|
|
406
|
+
}) => Promise<boolean>;
|
|
389
407
|
}
|
|
@@ -15,19 +15,23 @@ export interface DialogsController {
|
|
|
15
15
|
* Open a dialog
|
|
16
16
|
* @param props
|
|
17
17
|
*/
|
|
18
|
-
open: (props: DialogControllerEntryProps) => { closeDialog: () => void };
|
|
18
|
+
open: <T extends object = object>(props: DialogControllerEntryProps<T>) => { closeDialog: () => void };
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Props used to open a side dialog
|
|
23
23
|
* @group Hooks and utilities
|
|
24
24
|
*/
|
|
25
|
-
export interface DialogControllerEntryProps {
|
|
25
|
+
export interface DialogControllerEntryProps<T extends object = object> {
|
|
26
26
|
|
|
27
27
|
key: string;
|
|
28
28
|
/**
|
|
29
29
|
* The component type that will be rendered
|
|
30
30
|
*/
|
|
31
|
-
Component: React.ComponentType<{ open: boolean, closeDialog: () => void }>;
|
|
31
|
+
Component: React.ComponentType<{ open: boolean, closeDialog: () => void } & T>;
|
|
32
|
+
/**
|
|
33
|
+
* Props to pass to the dialog component
|
|
34
|
+
*/
|
|
35
|
+
props?: T;
|
|
32
36
|
|
|
33
37
|
}
|
package/src/types/entities.ts
CHANGED
|
@@ -8,7 +8,7 @@ export type EntityStatus = "new" | "existing" | "copy";
|
|
|
8
8
|
* Representation of an entity fetched from the datasource
|
|
9
9
|
* @group Models
|
|
10
10
|
*/
|
|
11
|
-
export interface Entity<M extends object> {
|
|
11
|
+
export interface Entity<M extends object = any> {
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* ID of the entity
|
|
@@ -25,6 +25,8 @@ export interface Entity<M extends object> {
|
|
|
25
25
|
* Current values
|
|
26
26
|
*/
|
|
27
27
|
values: EntityValues<M>;
|
|
28
|
+
|
|
29
|
+
databaseId?: string;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -37,7 +39,7 @@ export type EntityValues<M extends object> = M;
|
|
|
37
39
|
/**
|
|
38
40
|
* Class used to create a reference to an entity in a different path
|
|
39
41
|
*/
|
|
40
|
-
export class EntityReference
|
|
42
|
+
export class EntityReference {
|
|
41
43
|
/**
|
|
42
44
|
* ID of the entity
|
|
43
45
|
*/
|
|
@@ -78,3 +80,11 @@ export class GeoPoint {
|
|
|
78
80
|
this.longitude = longitude;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
83
|
+
|
|
84
|
+
export class Vector {
|
|
85
|
+
readonly value: number[];
|
|
86
|
+
|
|
87
|
+
constructor(value: number[]) {
|
|
88
|
+
this.value = value;
|
|
89
|
+
}
|
|
90
|
+
}
|