@firecms/core 3.0.0-canary.2 → 3.0.0-canary.200
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 +4 -4
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +23 -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 +3 -3
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- 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 +17 -4
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +6 -4
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- 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 +29 -13
- 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 +8 -5
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +44 -0
- 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 +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -6
- package/dist/form/EntityForm.d.ts +45 -69
- 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/{components → form/components}/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -3
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/components/index.d.ts +4 -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 -4
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +17 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- 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/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +11 -6
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +12 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +22131 -14039
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24420 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +7 -5
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -9
- 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/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +37 -3
- package/dist/types/collections.d.ts +86 -24
- package/dist/types/datasource.d.ts +53 -37
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +8 -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 +6 -0
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +71 -42
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +45 -26
- package/dist/types/permissions.d.ts +8 -4
- package/dist/types/plugins.d.ts +40 -31
- package/dist/types/properties.d.ts +54 -26
- package/dist/types/property_config.d.ts +2 -4
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +6 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +6 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/collections.d.ts +9 -1
- 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 +13 -4
- package/dist/util/index.d.ts +2 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +14 -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 +3 -3
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +31 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +64 -51
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +126 -40
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
- package/src/components/DeleteEntityDialog.tsx +14 -23
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +56 -39
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +283 -280
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +29 -8
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +58 -50
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
- 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 +81 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +228 -155
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +9 -8
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +218 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +39 -28
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- 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 -17
- package/src/components/ReferenceWidget.tsx +26 -16
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +27 -12
- 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 +46 -30
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +96 -48
- 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 +34 -15
- 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 +40 -43
- 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 +8 -5
- package/src/contexts/AuthControllerContext.tsx +1 -1
- 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 +207 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +455 -0
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +87 -18
- package/src/core/FireCMS.tsx +67 -44
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +36 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -7
- package/src/form/EntityForm.tsx +565 -519
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +85 -44
- 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 +44 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +23 -11
- package/src/form/components/StorageUploadProgress.tsx +9 -9
- package/src/form/components/index.tsx +4 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +32 -21
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +54 -45
- package/src/form/field_bindings/BlockFieldBinding.tsx +57 -36
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +21 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
- package/src/form/field_bindings/MapFieldBinding.tsx +82 -65
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -17
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +47 -34
- package/src/form/field_bindings/RepeatFieldBinding.tsx +57 -36
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -46
- package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -27
- package/src/form/field_bindings/TextFieldBinding.tsx +35 -30
- package/src/form/index.tsx +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +15 -26
- package/src/hooks/data/delete.ts +7 -6
- package/src/hooks/data/save.ts +13 -9
- package/src/hooks/data/useCollectionFetch.tsx +4 -4
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +11 -7
- package/src/hooks/index.tsx +6 -1
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +23 -30
- package/src/hooks/useBuildNavigationController.tsx +278 -117
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +41 -9
- package/src/hooks/useReferenceDialog.tsx +2 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -77
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +177 -70
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +19 -26
- package/src/preview/PropertyPreviewProps.tsx +5 -9
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -36
- package/src/preview/components/ReferencePreview.tsx +73 -176
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +236 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +48 -3
- package/src/types/collections.ts +102 -27
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +62 -44
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +16 -2
- package/src/types/entity_actions.tsx +33 -4
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +81 -46
- package/src/types/firecms.tsx +6 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +52 -31
- package/src/types/permissions.ts +10 -5
- package/src/types/plugins.tsx +47 -39
- package/src/types/properties.ts +63 -27
- package/src/types/property_config.tsx +2 -4
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +7 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +9 -0
- package/src/util/builders.ts +10 -8
- package/src/util/collections.ts +22 -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 +26 -8
- package/src/util/index.ts +2 -0
- package/src/util/join_collections.ts +3 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +13 -6
- package/src/util/navigation_utils.ts +59 -7
- package/src/util/objects.ts +45 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +20 -16
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +45 -5
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +71 -27
- package/src/util/useTraceUpdate.tsx +2 -1
- 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/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/EntityView.d.ts +0 -22
- 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 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -164
- package/src/core/Scaffold.tsx +0 -281
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/internal/EntityView.tsx +0 -578
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
|
|
4
|
+
export function HomePageRoute({ children }: {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}) {
|
|
7
|
+
|
|
8
|
+
const breadcrumbs = useBreadcrumbsController();
|
|
9
|
+
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
breadcrumbs.set({
|
|
12
|
+
breadcrumbs: []
|
|
13
|
+
});
|
|
14
|
+
}, []);
|
|
15
|
+
|
|
16
|
+
return children;
|
|
17
|
+
}
|
package/src/types/analytics.ts
CHANGED
package/src/types/auth.tsx
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { User } from "./user";
|
|
2
|
+
import { Role } from "./roles";
|
|
3
|
+
import { DataSourceDelegate } from "./datasource";
|
|
4
|
+
import { StorageSource } from "./storage";
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* Controller for retrieving the logged user or performing auth related operations.
|
|
@@ -6,13 +9,13 @@ import { User } from "./user";
|
|
|
6
9
|
* to do it as the result of a hook.
|
|
7
10
|
* @group Hooks and utilities
|
|
8
11
|
*/
|
|
9
|
-
export type AuthController<
|
|
12
|
+
export type AuthController<USER extends User = any, ExtraData = any> = {
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* The user currently logged in
|
|
13
16
|
* The values can be: the user object, null if they skipped login
|
|
14
17
|
*/
|
|
15
|
-
user:
|
|
18
|
+
user: USER | null;
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
21
|
* Initial loading flag. It is used not to display the login screen
|
|
@@ -21,10 +24,16 @@ export type AuthController<UserType extends User = User> = {
|
|
|
21
24
|
*/
|
|
22
25
|
initialLoading?: boolean;
|
|
23
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Loading flag. It is used to display a loading screen when the user is
|
|
29
|
+
* logging in or out.
|
|
30
|
+
*/
|
|
31
|
+
authLoading: boolean;
|
|
32
|
+
|
|
24
33
|
/**
|
|
25
34
|
* Sign out
|
|
26
35
|
*/
|
|
27
|
-
signOut: () => void
|
|
36
|
+
signOut: () => Promise<void>;
|
|
28
37
|
|
|
29
38
|
/**
|
|
30
39
|
* Error initializing the authentication
|
|
@@ -46,4 +55,40 @@ export type AuthController<UserType extends User = User> = {
|
|
|
46
55
|
*/
|
|
47
56
|
loginSkipped: boolean;
|
|
48
57
|
|
|
58
|
+
extra: ExtraData;
|
|
59
|
+
|
|
60
|
+
setExtra: (extra: ExtraData) => void;
|
|
61
|
+
|
|
62
|
+
setUser?: (user: USER | null) => void;
|
|
63
|
+
|
|
64
|
+
setUserRoles?: (roles: Role[]) => void;
|
|
65
|
+
|
|
49
66
|
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Implement this function to allow access to specific users.
|
|
70
|
+
* @group Hooks and utilities
|
|
71
|
+
*/
|
|
72
|
+
export type Authenticator<USER extends User = User> = (props: {
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Logged-in user or null
|
|
76
|
+
*/
|
|
77
|
+
user: USER | null;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* AuthController
|
|
81
|
+
*/
|
|
82
|
+
authController: AuthController<USER>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Connector to your database, e.g. your Firestore database
|
|
86
|
+
*/
|
|
87
|
+
dataSourceDelegate: DataSourceDelegate;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Used storage implementation
|
|
91
|
+
*/
|
|
92
|
+
storageSource: StorageSource;
|
|
93
|
+
|
|
94
|
+
}) => boolean | Promise<boolean>;
|
package/src/types/collections.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { EnumValues, PropertiesOrBuilders } from "./properties";
|
|
|
8
8
|
import { FormContext } from "./fields";
|
|
9
9
|
import { EntityAction } from "./entity_actions";
|
|
10
10
|
import { ExportConfig } from "./export_import";
|
|
11
|
+
import { EntityOverrides } from "./entity_overrides";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* This interface represents a view that includes a collection of entities.
|
|
@@ -16,7 +17,7 @@ import { ExportConfig } from "./export_import";
|
|
|
16
17
|
*
|
|
17
18
|
* @group Models
|
|
18
19
|
*/
|
|
19
|
-
export interface EntityCollection<M extends Record<string, any> = any,
|
|
20
|
+
export interface EntityCollection<M extends Record<string, any> = any, USER extends User = any> {
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* You can set an alias that will be used internally instead of the `path`.
|
|
@@ -50,6 +51,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
50
51
|
*/
|
|
51
52
|
path: string;
|
|
52
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
|
+
|
|
53
60
|
/**
|
|
54
61
|
* If this collection is a top level navigation entry, you can set this
|
|
55
62
|
* property to `true` to indicate that this collection is a collection group.
|
|
@@ -60,7 +67,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
60
67
|
* Icon key to use in this collection.
|
|
61
68
|
* You can use any of the icons in the Material specs:
|
|
62
69
|
* https://fonts.google.com/icons
|
|
63
|
-
* e.g. 'account_tree' or 'person'
|
|
70
|
+
* e.g. 'account_tree' or 'person'.
|
|
71
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
64
72
|
*/
|
|
65
73
|
icon?: string;
|
|
66
74
|
|
|
@@ -77,11 +85,22 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
77
85
|
properties: PropertiesOrBuilders<M>;
|
|
78
86
|
|
|
79
87
|
/**
|
|
80
|
-
*
|
|
81
|
-
* Defaults to `true`.
|
|
82
|
-
* Keep in mind that you can also set this prop to individual properties.
|
|
88
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
83
89
|
*/
|
|
84
|
-
|
|
90
|
+
previewProperties?: string[];
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Title property of the entity. This is the property that will be used
|
|
94
|
+
* as the title in entity related views and references.
|
|
95
|
+
* If not specified, the first property simple text property will be used.
|
|
96
|
+
*/
|
|
97
|
+
titleProperty?: keyof M;
|
|
98
|
+
|
|
99
|
+
/**
|
|
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`.
|
|
102
|
+
*/
|
|
103
|
+
openEntityMode?: "side_panel" | "full_screen";
|
|
85
104
|
|
|
86
105
|
/**
|
|
87
106
|
* Order in which the properties are displayed.
|
|
@@ -99,8 +118,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
99
118
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
100
119
|
* - If you are using a collection group, you will also have an
|
|
101
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`.
|
|
102
125
|
*/
|
|
103
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
126
|
+
propertiesOrder?: (Extract<keyof M, string> | string | `subcollection:${string}` | "collectionGroupParent")[];
|
|
104
127
|
|
|
105
128
|
/**
|
|
106
129
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
@@ -120,7 +143,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
120
143
|
* Permissions the logged-in user can perform on this collection.
|
|
121
144
|
* If not specified everything defaults to `true`.
|
|
122
145
|
*/
|
|
123
|
-
permissions?: Permissions | PermissionsBuilder<EntityCollection,
|
|
146
|
+
permissions?: Permissions | PermissionsBuilder<EntityCollection, USER, M>;
|
|
124
147
|
|
|
125
148
|
/**
|
|
126
149
|
* Are the entities in this collection selectable. Defaults to `true`
|
|
@@ -139,7 +162,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
139
162
|
* is being created, updated or deleted.
|
|
140
163
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
141
164
|
*/
|
|
142
|
-
callbacks?: EntityCallbacks<M>;
|
|
165
|
+
callbacks?: EntityCallbacks<M, USER>;
|
|
143
166
|
|
|
144
167
|
/**
|
|
145
168
|
* Builder for rendering additional components such as buttons in the
|
|
@@ -170,7 +193,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
170
193
|
* }
|
|
171
194
|
* ```
|
|
172
195
|
*/
|
|
173
|
-
entityActions?: EntityAction<M,
|
|
196
|
+
entityActions?: EntityAction<M, USER>[];
|
|
174
197
|
|
|
175
198
|
/**
|
|
176
199
|
* Pass your own selection controller if you want to control selected
|
|
@@ -222,7 +245,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
222
245
|
* You can add additional fields to the collection view by implementing
|
|
223
246
|
* an additional field delegate.
|
|
224
247
|
*/
|
|
225
|
-
additionalFields?: AdditionalFieldDelegate<M,
|
|
248
|
+
additionalFields?: AdditionalFieldDelegate<M, USER>[];
|
|
226
249
|
|
|
227
250
|
/**
|
|
228
251
|
* Default size of the rendered collection
|
|
@@ -275,7 +298,31 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
275
298
|
/**
|
|
276
299
|
*
|
|
277
300
|
*/
|
|
278
|
-
exportable?: boolean | ExportConfig<
|
|
301
|
+
exportable?: boolean | ExportConfig<USER>;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* User id of the owner of this collection. This is used only by plugins, or if you
|
|
305
|
+
* are writing custom code
|
|
306
|
+
*/
|
|
307
|
+
ownerId?: string;
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
311
|
+
*/
|
|
312
|
+
overrides?: EntityOverrides;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
316
|
+
*/
|
|
317
|
+
sideDialogWidth?: number | string;
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Can this collection configuration be edited by the end user.
|
|
321
|
+
* Defaults to `true`.
|
|
322
|
+
* Keep in mind that you can also set this prop to individual properties.
|
|
323
|
+
* This prop has only effect if you are using the collection editor.
|
|
324
|
+
*/
|
|
325
|
+
editable?: boolean;
|
|
279
326
|
}
|
|
280
327
|
|
|
281
328
|
/**
|
|
@@ -285,7 +332,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
285
332
|
*
|
|
286
333
|
* @group Models
|
|
287
334
|
*/
|
|
288
|
-
export interface CollectionActionsProps<M extends Record<string, any> = any,
|
|
335
|
+
export interface CollectionActionsProps<M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
289
336
|
/**
|
|
290
337
|
* Full collection path of this entity. This is the full path, like
|
|
291
338
|
* `users/1234/addresses`
|
|
@@ -322,7 +369,7 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
322
369
|
/**
|
|
323
370
|
* Context of the app status
|
|
324
371
|
*/
|
|
325
|
-
context: FireCMSContext<
|
|
372
|
+
context: FireCMSContext<USER>;
|
|
326
373
|
|
|
327
374
|
/**
|
|
328
375
|
* Count of the entities in this collection
|
|
@@ -334,19 +381,18 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
334
381
|
/**
|
|
335
382
|
* Use this controller to retrieve the selected entities or modify them in
|
|
336
383
|
* an {@link EntityCollection}
|
|
337
|
-
* If you want to pass a `SelectionController` to
|
|
338
384
|
* @group Models
|
|
339
385
|
*/
|
|
340
386
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
341
387
|
selectedEntities: Entity<M>[];
|
|
342
388
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
343
389
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
344
|
-
toggleEntitySelection: (entity: Entity<M
|
|
390
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
345
391
|
}
|
|
346
392
|
|
|
347
393
|
/**
|
|
348
394
|
* Filter conditions in a `Query.where()` clause are specified using the
|
|
349
|
-
* strings
|
|
395
|
+
* strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
|
|
350
396
|
* @group Models
|
|
351
397
|
*/
|
|
352
398
|
export type WhereFilterOp =
|
|
@@ -385,9 +431,9 @@ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" |
|
|
|
385
431
|
*/
|
|
386
432
|
export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
|
|
387
433
|
|
|
388
|
-
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any,
|
|
434
|
+
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, USER extends User = User> = {
|
|
389
435
|
entity: Entity<M>,
|
|
390
|
-
context: FireCMSContext<
|
|
436
|
+
context: FireCMSContext<USER>
|
|
391
437
|
};
|
|
392
438
|
|
|
393
439
|
/**
|
|
@@ -396,7 +442,7 @@ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, Us
|
|
|
396
442
|
* @group Models
|
|
397
443
|
*/
|
|
398
444
|
export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
399
|
-
|
|
445
|
+
USER extends User = User> {
|
|
400
446
|
|
|
401
447
|
/**
|
|
402
448
|
* ID of this column. You can use this id in the `properties` field of the
|
|
@@ -417,7 +463,7 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
417
463
|
/**
|
|
418
464
|
* Builder for the content of the cell for this column
|
|
419
465
|
*/
|
|
420
|
-
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M,
|
|
466
|
+
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, USER>>;
|
|
421
467
|
|
|
422
468
|
/**
|
|
423
469
|
* If this column needs to update dynamically based on other properties,
|
|
@@ -436,7 +482,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
436
482
|
* view.
|
|
437
483
|
* @param entity
|
|
438
484
|
*/
|
|
439
|
-
value?: (props: {
|
|
485
|
+
value?: (props: {
|
|
486
|
+
entity: Entity<M>,
|
|
487
|
+
context: FireCMSContext<any>
|
|
488
|
+
}) => string | number | Promise<string | number> | undefined;
|
|
440
489
|
}
|
|
441
490
|
|
|
442
491
|
/**
|
|
@@ -446,10 +495,29 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
446
495
|
*/
|
|
447
496
|
export type EntityCustomView<M extends Record<string, any> = any> =
|
|
448
497
|
{
|
|
449
|
-
|
|
450
|
-
|
|
498
|
+
/**
|
|
499
|
+
* Key of this custom view.
|
|
500
|
+
*/
|
|
501
|
+
key: string;
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Name of this custom view.
|
|
505
|
+
*/
|
|
506
|
+
name: string;
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* If set to true, the actions of the entity (save, discard,delete) will be
|
|
510
|
+
* included in the view. By default the actions are located in the right or bottom,
|
|
511
|
+
* based on the screen size. You can force the actions to be located at the bottom
|
|
512
|
+
* by setting this prop to "bottom".
|
|
513
|
+
*/
|
|
514
|
+
includeActions?: boolean | "bottom";
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Builder for rendering the custom view
|
|
518
|
+
*/
|
|
451
519
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
452
|
-
}
|
|
520
|
+
};
|
|
453
521
|
|
|
454
522
|
/**
|
|
455
523
|
* Parameters passed to the builder in charge of rendering a custom panel for
|
|
@@ -508,12 +576,18 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
508
576
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
509
577
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
510
578
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
511
|
-
setSortBy?: (sortBy
|
|
579
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
512
580
|
searchString?: string;
|
|
513
581
|
setSearchString?: (searchString?: string) => void;
|
|
514
582
|
clearFilter?: () => void;
|
|
515
583
|
itemCount?: number;
|
|
516
584
|
setItemCount?: (itemCount: number) => void;
|
|
585
|
+
initialScroll?: number;
|
|
586
|
+
onScroll?: (props: {
|
|
587
|
+
scrollDirection: "forward" | "backward",
|
|
588
|
+
scrollOffset: number,
|
|
589
|
+
scrollUpdateWasRequested: boolean
|
|
590
|
+
}) => void;
|
|
517
591
|
paginationEnabled?: boolean;
|
|
518
592
|
pageSize?: number;
|
|
519
593
|
checkFilterCombination?: (filterValues: FilterValues<any>,
|
|
@@ -529,5 +603,6 @@ export type SelectedCellProps<M extends Record<string, any>> = {
|
|
|
529
603
|
cellRect: DOMRect;
|
|
530
604
|
width: number;
|
|
531
605
|
height: number;
|
|
532
|
-
|
|
606
|
+
entityPath: string;
|
|
607
|
+
entityId: string;
|
|
533
608
|
};
|
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,7 +9,8 @@ import { ResolvedEntityCollection } from "./resolved_entities";
|
|
|
8
9
|
export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
9
10
|
path: string;
|
|
10
11
|
entityId: string;
|
|
11
|
-
|
|
12
|
+
databaseId?: string;
|
|
13
|
+
collection?: EntityCollection<M, any>
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
/**
|
|
@@ -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
|
}
|