@firecms/core 3.0.0-canary.29 → 3.0.0-canary.292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +31 -12
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +14 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +10 -7
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +77 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
- package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyCollectionView.d.ts +23 -0
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/UserDisplay.d.ts +7 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +49 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +40 -64
- package/dist/form/EntityFormActions.d.ts +21 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/LocalChangesMenu.d.ts +11 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +18 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -13
- package/dist/hooks/useCollapsedGroups.d.ts +9 -0
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +24546 -13965
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +27256 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -3
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/components/UserPreview.d.ts +8 -0
- package/dist/preview/index.d.ts +1 -0
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +123 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +12 -3
- package/dist/types/entity_actions.d.ts +72 -8
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +79 -39
- package/dist/types/firecms.d.ts +31 -3
- package/dist/types/firecms_context.d.ts +17 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal_user_management.d.ts +20 -0
- package/dist/types/navigation.d.ts +62 -19
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +58 -13
- package/dist/types/properties.d.ts +122 -31
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/roles.d.ts +3 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +14 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +2 -1
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/collections.d.ts +1 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +28 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +7 -4
- package/dist/util/index.d.ts +3 -0
- package/dist/util/make_properties_editable.d.ts +1 -2
- package/dist/util/navigation_from_path.d.ts +10 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +3 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +42 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +4 -3
- package/package.json +70 -53
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +87 -62
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +84 -42
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +34 -39
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +241 -119
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +83 -62
- package/src/components/EntityView.tsx +34 -42
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +516 -158
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +702 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyCollectionView.tsx +329 -0
- package/src/components/PropertyConfigBadge.tsx +10 -4
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -157
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +27 -9
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -24
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/UserDisplay.tsx +55 -0
- package/src/components/VirtualTable/VirtualTable.tsx +105 -51
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +99 -0
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +64 -44
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +16 -2
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +6 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/InternalUserManagementContext.tsx +4 -0
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +447 -469
- package/src/core/EntityEditViewFormActions.tsx +344 -0
- package/src/core/EntitySidePanel.tsx +96 -23
- package/src/core/FireCMS.tsx +85 -60
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +41 -14
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +740 -523
- package/src/form/EntityFormActions.tsx +226 -0
- package/src/form/PropertyFieldBinding.tsx +88 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/ErrorFocus.tsx +22 -29
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/LocalChangesMenu.tsx +144 -0
- package/src/form/components/StorageItemPreview.tsx +23 -13
- package/src/form/components/StorageUploadProgress.tsx +5 -6
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -33
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +94 -0
- package/src/form/index.tsx +21 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +26 -33
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +4 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +515 -121
- package/src/hooks/useCollapsedGroups.ts +64 -0
- package/src/hooks/useFireCMSContext.tsx +9 -35
- package/src/hooks/useInternalUserManagementController.tsx +16 -0
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +204 -77
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +42 -25
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +26 -37
- package/src/preview/components/ReferencePreview.tsx +30 -38
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +1 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +8 -7
- package/src/preview/property_previews/MapPropertyPreview.tsx +14 -13
- package/src/preview/property_previews/NumberPropertyPreview.tsx +2 -2
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +3 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +146 -30
- package/src/types/customization_controller.tsx +9 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +19 -3
- package/src/types/entity_actions.tsx +86 -10
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +91 -42
- package/src/types/firecms.tsx +34 -4
- package/src/types/firecms_context.tsx +18 -1
- package/src/types/index.ts +1 -1
- package/src/types/internal_user_management.ts +24 -0
- package/src/types/navigation.ts +77 -24
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +69 -15
- package/src/types/properties.ts +141 -33
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +3 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +16 -1
- package/src/types/storage.ts +83 -1
- package/src/types/user.ts +3 -1
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/collections.ts +8 -0
- package/src/util/createFormexStub.tsx +66 -0
- package/src/util/entities.ts +11 -8
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +223 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +11 -4
- package/src/util/make_properties_editable.ts +5 -19
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +128 -33
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +122 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +162 -62
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/src/util/{common.tsx → common.ts} +0 -0
package/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,14 +67,20 @@ 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
|
|
72
|
+
* You can also pass a React node if you want to render a custom icon.
|
|
73
|
+
* If not specified, a default icon will be used.
|
|
65
74
|
*/
|
|
66
|
-
icon?: string;
|
|
75
|
+
icon?: string | React.ReactNode;
|
|
67
76
|
|
|
68
77
|
/**
|
|
69
78
|
* Optional field used to group top level navigation entries under a~
|
|
70
79
|
* navigation view. If you set this value in a subcollection it has no
|
|
71
80
|
* effect.
|
|
81
|
+
* @deprecated This prop is deprecated and will be removed in the future.
|
|
82
|
+
* You can apply grouping by using the `navigationGroupMappings` prop in the
|
|
83
|
+
* {@link useBuildNavigationController} hook instead.
|
|
72
84
|
*/
|
|
73
85
|
group?: string;
|
|
74
86
|
|
|
@@ -77,19 +89,23 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
77
89
|
*/
|
|
78
90
|
properties: PropertiesOrBuilders<M>;
|
|
79
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
94
|
+
*/
|
|
95
|
+
previewProperties?: string[];
|
|
96
|
+
|
|
80
97
|
/**
|
|
81
98
|
* Title property of the entity. This is the property that will be used
|
|
82
99
|
* as the title in entity related views and references.
|
|
83
100
|
* If not specified, the first property simple text property will be used.
|
|
84
101
|
*/
|
|
85
|
-
titleProperty?: keyof M
|
|
102
|
+
titleProperty?: keyof M;
|
|
86
103
|
|
|
87
104
|
/**
|
|
88
|
-
*
|
|
89
|
-
* Defaults to `
|
|
90
|
-
* Keep in mind that you can also set this prop to individual properties.
|
|
105
|
+
* When editing an entity, you can choose to open the entity in a side dialog
|
|
106
|
+
* or in a full screen dialog. Defaults to `full_screen`.
|
|
91
107
|
*/
|
|
92
|
-
|
|
108
|
+
openEntityMode?: "side_panel" | "full_screen";
|
|
93
109
|
|
|
94
110
|
/**
|
|
95
111
|
* Order in which the properties are displayed.
|
|
@@ -101,18 +117,23 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
101
117
|
* `hidden` in the property definition, will be ignored.
|
|
102
118
|
* `propertiesOrder` has precedence over `hidden`.
|
|
103
119
|
* - For properties use the property key.
|
|
104
|
-
* - For additional
|
|
120
|
+
* - For additional fields use the field key.
|
|
105
121
|
* - If you have subcollections, you get a column for each subcollection,
|
|
106
122
|
* with the path (or alias) as the subcollection, prefixed with
|
|
107
123
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
108
124
|
* - If you are using a collection group, you will also have an
|
|
109
125
|
* additional `collectionGroupParent` column.
|
|
126
|
+
* You can use this prop to hide some properties from the table view.
|
|
127
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
128
|
+
* `hidden` in the property definition,will be ignored.
|
|
129
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
110
130
|
*/
|
|
111
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
131
|
+
propertiesOrder?: (Extract<keyof M, string> | string | `subcollection:${string}` | "collectionGroupParent")[];
|
|
112
132
|
|
|
113
133
|
/**
|
|
114
134
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
115
|
-
* collection are loaded.
|
|
135
|
+
* collection are loaded. This means that when reaching the end of the
|
|
136
|
+
* collection, the CMS will load more entities.
|
|
116
137
|
* You can specify a number to specify the pagination size (50 by default)
|
|
117
138
|
* Defaults to `true`
|
|
118
139
|
*/
|
|
@@ -128,7 +149,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
128
149
|
* Permissions the logged-in user can perform on this collection.
|
|
129
150
|
* If not specified everything defaults to `true`.
|
|
130
151
|
*/
|
|
131
|
-
permissions?: Permissions | PermissionsBuilder<EntityCollection,
|
|
152
|
+
permissions?: Permissions | PermissionsBuilder<EntityCollection, USER, M>;
|
|
132
153
|
|
|
133
154
|
/**
|
|
134
155
|
* Are the entities in this collection selectable. Defaults to `true`
|
|
@@ -147,7 +168,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
147
168
|
* is being created, updated or deleted.
|
|
148
169
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
149
170
|
*/
|
|
150
|
-
callbacks?: EntityCallbacks<M,
|
|
171
|
+
callbacks?: EntityCallbacks<M, USER>;
|
|
151
172
|
|
|
152
173
|
/**
|
|
153
174
|
* Builder for rendering additional components such as buttons in the
|
|
@@ -177,8 +198,11 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
177
198
|
* }
|
|
178
199
|
* }
|
|
179
200
|
* ```
|
|
201
|
+
*
|
|
202
|
+
* You can also pass the action as a string that represents the `key`, in which case it will
|
|
203
|
+
* use the action defined in the main configuration under `entityActions`.
|
|
180
204
|
*/
|
|
181
|
-
entityActions?: EntityAction<M,
|
|
205
|
+
entityActions?: (EntityAction<M, USER> | string)[];
|
|
182
206
|
|
|
183
207
|
/**
|
|
184
208
|
* Pass your own selection controller if you want to control selected
|
|
@@ -200,6 +224,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
200
224
|
* Force a filter in this view. If applied, the rest of the filters will
|
|
201
225
|
* be disabled. Filters applied with this prop cannot be changed.
|
|
202
226
|
* e.g. `forceFilter: { age: [">=", 18] }`
|
|
227
|
+
* e.g. `forceFilter: { related_user: ["==", new EntityReference("sdc43dsw2", "users")] }`
|
|
203
228
|
*/
|
|
204
229
|
forceFilter?: FilterValues<Extract<keyof M, string>>;
|
|
205
230
|
|
|
@@ -207,6 +232,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
207
232
|
* Initial filters applied to the collection this collection is related to.
|
|
208
233
|
* Defaults to none. Filters applied with this prop can be changed.
|
|
209
234
|
* e.g. `initialFilter: { age: [">=", 18] }`
|
|
235
|
+
* e.g. `initialFilter: { related_user: ["==", new EntityReference("sdc43dsw2", "users")] }`
|
|
210
236
|
*/
|
|
211
237
|
initialFilter?: FilterValues<Extract<keyof M, string>>; // setting FilterValues<M> can break defining collections by code
|
|
212
238
|
|
|
@@ -230,7 +256,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
230
256
|
* You can add additional fields to the collection view by implementing
|
|
231
257
|
* an additional field delegate.
|
|
232
258
|
*/
|
|
233
|
-
additionalFields?: AdditionalFieldDelegate<M,
|
|
259
|
+
additionalFields?: AdditionalFieldDelegate<M, USER>[];
|
|
234
260
|
|
|
235
261
|
/**
|
|
236
262
|
* Default size of the rendered collection
|
|
@@ -283,14 +309,61 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
283
309
|
/**
|
|
284
310
|
*
|
|
285
311
|
*/
|
|
286
|
-
exportable?: boolean | ExportConfig<
|
|
312
|
+
exportable?: boolean | ExportConfig<USER>;
|
|
287
313
|
|
|
288
314
|
/**
|
|
289
315
|
* User id of the owner of this collection. This is used only by plugins, or if you
|
|
290
316
|
* are writing custom code
|
|
291
317
|
*/
|
|
292
318
|
ownerId?: string;
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
322
|
+
*/
|
|
293
323
|
overrides?: EntityOverrides;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
327
|
+
*/
|
|
328
|
+
sideDialogWidth?: number | string;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Can this collection configuration be edited by the end user.
|
|
332
|
+
* Defaults to `true`.
|
|
333
|
+
* Keep in mind that you can also set this prop to individual properties.
|
|
334
|
+
* This prop has only effect if you are using the collection editor.
|
|
335
|
+
*/
|
|
336
|
+
editable?: boolean;
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* If set to true, the default values of the properties will be applied
|
|
340
|
+
* to the entity every time the entity is updated (not only when created).
|
|
341
|
+
* Defaults to false.
|
|
342
|
+
*/
|
|
343
|
+
alwaysApplyDefaultValues?: boolean;
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* If set to true, a tab including the JSON representation of the entity will be included.
|
|
347
|
+
*/
|
|
348
|
+
includeJsonView?: boolean;
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* If set to true, changes to the entity will be saved in a subcollection.
|
|
352
|
+
* This prop has no effect if the history plugin is not enabled
|
|
353
|
+
*/
|
|
354
|
+
history?: boolean;
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Should local changes be backed up in local storage, to prevent data loss on
|
|
358
|
+
* accidental navigations.
|
|
359
|
+
* - `manual_apply`: When the user navigates back to an entity with local changes,
|
|
360
|
+
* they will be prompted to restore the changes.
|
|
361
|
+
* - `auto_apply`: When the user navigates back to an entity with local changes,
|
|
362
|
+
* the changes will be automatically applied.
|
|
363
|
+
* - `false`: Local changes will not be backed up.
|
|
364
|
+
* Defaults to `manual_apply`.
|
|
365
|
+
*/
|
|
366
|
+
localChangesBackup?: "manual_apply" | "auto_apply" | false;
|
|
294
367
|
}
|
|
295
368
|
|
|
296
369
|
/**
|
|
@@ -300,7 +373,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
300
373
|
*
|
|
301
374
|
* @group Models
|
|
302
375
|
*/
|
|
303
|
-
export interface CollectionActionsProps<M extends Record<string, any> = any,
|
|
376
|
+
export interface CollectionActionsProps<M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
304
377
|
/**
|
|
305
378
|
* Full collection path of this entity. This is the full path, like
|
|
306
379
|
* `users/1234/addresses`
|
|
@@ -337,7 +410,7 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
337
410
|
/**
|
|
338
411
|
* Context of the app status
|
|
339
412
|
*/
|
|
340
|
-
context: FireCMSContext<
|
|
413
|
+
context: FireCMSContext<USER>;
|
|
341
414
|
|
|
342
415
|
/**
|
|
343
416
|
* Count of the entities in this collection
|
|
@@ -349,14 +422,13 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
349
422
|
/**
|
|
350
423
|
* Use this controller to retrieve the selected entities or modify them in
|
|
351
424
|
* an {@link EntityCollection}
|
|
352
|
-
* If you want to pass a `SelectionController` to
|
|
353
425
|
* @group Models
|
|
354
426
|
*/
|
|
355
427
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
356
428
|
selectedEntities: Entity<M>[];
|
|
357
429
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
358
430
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
359
|
-
toggleEntitySelection: (entity: Entity<M
|
|
431
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
360
432
|
}
|
|
361
433
|
|
|
362
434
|
/**
|
|
@@ -400,9 +472,9 @@ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" |
|
|
|
400
472
|
*/
|
|
401
473
|
export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
|
|
402
474
|
|
|
403
|
-
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any,
|
|
475
|
+
export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, USER extends User = User> = {
|
|
404
476
|
entity: Entity<M>,
|
|
405
|
-
context: FireCMSContext<
|
|
477
|
+
context: FireCMSContext<USER>
|
|
406
478
|
};
|
|
407
479
|
|
|
408
480
|
/**
|
|
@@ -411,7 +483,7 @@ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, Us
|
|
|
411
483
|
* @group Models
|
|
412
484
|
*/
|
|
413
485
|
export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
414
|
-
|
|
486
|
+
USER extends User = User> {
|
|
415
487
|
|
|
416
488
|
/**
|
|
417
489
|
* ID of this column. You can use this id in the `properties` field of the
|
|
@@ -432,7 +504,7 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
432
504
|
/**
|
|
433
505
|
* Builder for the content of the cell for this column
|
|
434
506
|
*/
|
|
435
|
-
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M,
|
|
507
|
+
Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, USER>>;
|
|
436
508
|
|
|
437
509
|
/**
|
|
438
510
|
* If this column needs to update dynamically based on other properties,
|
|
@@ -451,7 +523,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
451
523
|
* view.
|
|
452
524
|
* @param entity
|
|
453
525
|
*/
|
|
454
|
-
value?: (props: {
|
|
526
|
+
value?: (props: {
|
|
527
|
+
entity: Entity<M>,
|
|
528
|
+
context: FireCMSContext<any>
|
|
529
|
+
}) => string | number | Promise<string | number> | undefined;
|
|
455
530
|
}
|
|
456
531
|
|
|
457
532
|
/**
|
|
@@ -461,10 +536,39 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
461
536
|
*/
|
|
462
537
|
export type EntityCustomView<M extends Record<string, any> = any> =
|
|
463
538
|
{
|
|
464
|
-
|
|
465
|
-
|
|
539
|
+
/**
|
|
540
|
+
* Key of this custom view.
|
|
541
|
+
*/
|
|
542
|
+
key: string;
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Name of this custom view.
|
|
546
|
+
*/
|
|
547
|
+
name: string;
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Render this custom view in the tab of the entity view, instead of the name
|
|
551
|
+
*/
|
|
552
|
+
tabComponent?: React.ReactNode;
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* If set to true, the actions of the entity (save, discard,delete) will be
|
|
556
|
+
* included in the view. By default the actions are located in the right or bottom,
|
|
557
|
+
* based on the screen size. You can force the actions to be located at the bottom
|
|
558
|
+
* by setting this prop to "bottom".
|
|
559
|
+
*/
|
|
560
|
+
includeActions?: boolean | "bottom";
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Builder for rendering the custom view
|
|
564
|
+
*/
|
|
466
565
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
467
|
-
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Position of this tab in the entity view. Defaults to `end`.
|
|
569
|
+
*/
|
|
570
|
+
position?: "start" | "end";
|
|
571
|
+
};
|
|
468
572
|
|
|
469
573
|
/**
|
|
470
574
|
* Parameters passed to the builder in charge of rendering a custom panel for
|
|
@@ -494,6 +598,11 @@ export interface EntityCustomViewParams<M extends Record<string, any> = any> {
|
|
|
494
598
|
* Use the form context to access the form state and methods
|
|
495
599
|
*/
|
|
496
600
|
formContext: FormContext;
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* If this is a subcollection, this is the path of the parent collections
|
|
604
|
+
*/
|
|
605
|
+
parentCollectionIds?: string[];
|
|
497
606
|
}
|
|
498
607
|
|
|
499
608
|
export type InferCollectionType<S extends EntityCollection> = S extends EntityCollection<infer M> ? M : never;
|
|
@@ -523,12 +632,18 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
523
632
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
524
633
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
525
634
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
526
|
-
setSortBy?: (sortBy
|
|
635
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
527
636
|
searchString?: string;
|
|
528
637
|
setSearchString?: (searchString?: string) => void;
|
|
529
638
|
clearFilter?: () => void;
|
|
530
639
|
itemCount?: number;
|
|
531
640
|
setItemCount?: (itemCount: number) => void;
|
|
641
|
+
initialScroll?: number;
|
|
642
|
+
onScroll?: (props: {
|
|
643
|
+
scrollDirection: "forward" | "backward",
|
|
644
|
+
scrollOffset: number,
|
|
645
|
+
scrollUpdateWasRequested: boolean
|
|
646
|
+
}) => void;
|
|
532
647
|
paginationEnabled?: boolean;
|
|
533
648
|
pageSize?: number;
|
|
534
649
|
checkFilterCombination?: (filterValues: FilterValues<any>,
|
|
@@ -544,5 +659,6 @@ export type SelectedCellProps<M extends Record<string, any>> = {
|
|
|
544
659
|
cellRect: DOMRect;
|
|
545
660
|
width: number;
|
|
546
661
|
height: number;
|
|
547
|
-
|
|
662
|
+
entityPath: string;
|
|
663
|
+
entityId: string;
|
|
548
664
|
};
|
|
@@ -4,6 +4,7 @@ import { FireCMSPlugin } from "./plugins";
|
|
|
4
4
|
import { EntityCustomView } from "./collections";
|
|
5
5
|
import { Locale } from "./locales";
|
|
6
6
|
import { PropertyConfig } from "./property_config";
|
|
7
|
+
import { EntityAction } from "./entity_actions";
|
|
7
8
|
|
|
8
9
|
export type CustomizationController = {
|
|
9
10
|
|
|
@@ -24,9 +25,16 @@ export type CustomizationController = {
|
|
|
24
25
|
*
|
|
25
26
|
* You can also define an entity view from the UI.
|
|
26
27
|
*/
|
|
27
|
-
|
|
28
28
|
entityViews?: EntityCustomView[];
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* List of actions that can be performed on entities.
|
|
32
|
+
* These actions are displayed in the entity view and in the collection view.
|
|
33
|
+
* You can later reuse these actions in the `entityActions` prop of a collection,
|
|
34
|
+
* by specifying the `key` of the action.
|
|
35
|
+
*/
|
|
36
|
+
entityActions?: EntityAction<any, any>[];
|
|
37
|
+
|
|
30
38
|
/**
|
|
31
39
|
* Format of the dates in the CMS.
|
|
32
40
|
* Defaults to 'MMMM dd, yyyy, HH:mm:ss'
|
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
|
}
|