@firecms/core 3.0.0-beta.1 → 3.0.0-beta.10
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 +6 -7
- 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 +3 -4
- 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 -18
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
- 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 +2 -4
- 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 +3 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -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/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
- package/dist/components/ReferenceWidget.d.ts +6 -4
- package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
- package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +6 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
- package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
- package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
- package/dist/components/common/useTableSearchHelper.d.ts +12 -0
- package/dist/components/index.d.ts +14 -8
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- 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 +36 -0
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -6
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/CustomIdField.d.ts +2 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormikArrayContainer.d.ts +2 -1
- 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 +2 -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/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/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +4 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- package/dist/hooks/data/delete.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +2 -3
- package/dist/hooks/data/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +3 -3
- package/dist/hooks/index.d.ts +5 -1
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +23 -0
- package/dist/hooks/useProjectLog.d.ts +14 -0
- package/dist/hooks/useSnackbarController.d.ts +1 -0
- 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 +16297 -12643
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20043 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- 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/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +38 -2
- package/dist/types/collections.d.ts +56 -9
- package/dist/types/datasource.d.ts +59 -39
- package/dist/types/entities.d.ts +7 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_callbacks.d.ts +3 -3
- package/dist/types/entity_overrides.d.ts +6 -0
- package/dist/types/fields.d.ts +47 -42
- package/dist/types/firecms.d.ts +8 -23
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +18 -16
- package/dist/types/permissions.d.ts +5 -1
- package/dist/types/plugins.d.ts +31 -31
- package/dist/types/properties.d.ts +36 -23
- package/dist/types/property_config.d.ts +2 -2
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +5 -0
- package/dist/util/collections.d.ts +9 -1
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +10 -3
- package/dist/util/index.d.ts +3 -1
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +28 -14
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/strings.d.ts +1 -1
- package/dist/util/useDebouncedCallback.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +129 -112
- 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 +45 -75
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +4 -4
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
- package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
- package/src/components/EntityCollectionTable/index.tsx +1 -9
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +208 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +38 -28
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- package/src/components/PropertyConfigBadge.tsx +23 -0
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
- package/src/components/ReferenceWidget.tsx +26 -16
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
- package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
- package/src/components/common/index.ts +6 -0
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
- package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
- package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
- package/src/components/common/useTableSearchHelper.ts +88 -0
- package/src/components/index.tsx +15 -8
- package/src/contexts/AuthControllerContext.tsx +1 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +176 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +1127 -0
- package/src/core/EntitySidePanel.tsx +9 -8
- package/src/core/FireCMS.tsx +67 -59
- package/src/core/NavigationRoutes.tsx +25 -17
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +18 -19
- package/src/core/index.tsx +3 -6
- package/src/form/PropertyFieldBinding.tsx +60 -33
- package/src/form/components/CustomIdField.tsx +51 -36
- package/src/form/components/ErrorFocus.tsx +3 -3
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormikArrayContainer.tsx +4 -1
- package/src/form/components/LabelWithIcon.tsx +41 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -10
- package/src/form/components/StorageUploadProgress.tsx +8 -8
- package/src/form/components/index.tsx +2 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
- package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
- package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
- package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
- package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
- package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
- package/src/form/index.tsx +5 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +4 -21
- package/src/hooks/data/delete.ts +5 -4
- package/src/hooks/data/save.ts +7 -2
- package/src/hooks/data/useCollectionFetch.tsx +1 -1
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +4 -4
- package/src/hooks/index.tsx +7 -1
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +12 -6
- package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
- package/src/hooks/useFireCMSContext.tsx +51 -3
- package/src/hooks/useLargeLayout.tsx +10 -7
- package/src/hooks/useProjectLog.tsx +63 -0
- package/src/hooks/useReferenceDialog.tsx +3 -3
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useSnackbarController.tsx +1 -2
- 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 +79 -84
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +103 -23
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +12 -19
- package/src/preview/PropertyPreviewProps.tsx +6 -10
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +24 -34
- package/src/preview/components/ReferencePreview.tsx +73 -176
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/preview/util.ts +2 -2
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +51 -2
- package/src/types/collections.ts +65 -9
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +69 -47
- package/src/types/entities.ts +15 -1
- package/src/types/entity_actions.tsx +17 -0
- package/src/types/entity_callbacks.ts +4 -3
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/fields.tsx +51 -45
- package/src/types/firecms.tsx +9 -26
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +20 -19
- package/src/types/permissions.ts +6 -1
- package/src/types/plugins.tsx +38 -40
- package/src/types/properties.ts +42 -24
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/side_entity_controller.tsx +1 -0
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +7 -0
- package/src/util/collections.ts +22 -0
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +18 -4
- package/src/util/index.ts +3 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +12 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +1 -1
- package/src/util/references.ts +39 -5
- package/src/util/resolutions.ts +75 -42
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +4 -3
- package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +2 -1
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -52
- package/dist/form/EntityForm.d.ts +0 -75
- package/dist/form/components/SubmitListener.d.ts +0 -1
- package/dist/form/components/SwitchControl.d.ts +0 -8
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/internal/EntityView.d.ts +0 -22
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useBuildNavigationController.d.ts +0 -14
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/dist/util/useDebounce.d.ts +0 -1
- package/src/components/FieldConfigBadge.tsx +0 -17
- package/src/components/FireCMSAppBar.tsx +0 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/core/Drawer.tsx +0 -162
- package/src/core/Scaffold.tsx +0 -278
- package/src/form/EntityForm.tsx +0 -657
- package/src/form/components/SubmitListener.tsx +0 -32
- package/src/form/components/SwitchControl.tsx +0 -39
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/hooks/useVerifyLicense.tsx +0 -1
- 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/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
|
@@ -6,7 +6,7 @@ import { PreviewType } from "../../types";
|
|
|
6
6
|
import { UrlComponentPreview } from "../components/UrlComponentPreview";
|
|
7
7
|
import { PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
8
8
|
import { ErrorBoundary } from "../../components";
|
|
9
|
-
import { Chip, getColorSchemeForSeed } from "@firecms/ui";
|
|
9
|
+
import { Chip, cls, getColorSchemeForSeed } from "@firecms/ui";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* @group Preview components
|
|
@@ -24,14 +24,14 @@ export function StringPropertyPreview({
|
|
|
24
24
|
return <EnumValuesChip
|
|
25
25
|
enumKey={enumKey}
|
|
26
26
|
enumValues={resolvedProperty.enumValues}
|
|
27
|
-
size={size
|
|
27
|
+
size={size}/>;
|
|
28
28
|
} else if (property.previewAsTag) {
|
|
29
29
|
const colorScheme = getColorSchemeForSeed(propertyKey ?? "");
|
|
30
30
|
return (
|
|
31
31
|
<ErrorBoundary>
|
|
32
32
|
<Chip
|
|
33
33
|
colorScheme={colorScheme}
|
|
34
|
-
size={size
|
|
34
|
+
size={size}>
|
|
35
35
|
{value}
|
|
36
36
|
</Chip>
|
|
37
37
|
</ErrorBoundary>);
|
|
@@ -45,15 +45,16 @@ export function StringPropertyPreview({
|
|
|
45
45
|
if (!value) return <></>;
|
|
46
46
|
const lines = value.split("\n");
|
|
47
47
|
return value && value.includes("\n")
|
|
48
|
-
? <div className={"overflow-x-scroll"}>
|
|
48
|
+
? <div className={cls("overflow-x-scroll", size === "smallest" ? "text-sm" : "")}>
|
|
49
49
|
{lines.map((str, index) =>
|
|
50
50
|
<React.Fragment key={`string_preview_${index}`}>
|
|
51
51
|
<span>{str}</span>
|
|
52
52
|
{index !== lines.length - 1 && <br/>}
|
|
53
53
|
</React.Fragment>)}
|
|
54
54
|
</div>
|
|
55
|
-
:
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
: (size === "smallest"
|
|
56
|
+
? <span className={"text-sm"}>{value}</span>
|
|
57
|
+
: <>{value}</>
|
|
58
|
+
);
|
|
58
59
|
}
|
|
59
60
|
}
|
package/src/preview/util.ts
CHANGED
|
@@ -6,7 +6,7 @@ export const SMALL_THUMBNAIL = 100;
|
|
|
6
6
|
export const REGULAR_THUMBNAIL = 200;
|
|
7
7
|
|
|
8
8
|
export function getThumbnailMeasure(size: PreviewSize): number {
|
|
9
|
-
if (size === "
|
|
9
|
+
if (size === "smallest")
|
|
10
10
|
return TINY_THUMBNAIL;
|
|
11
11
|
else if (size === "small")
|
|
12
12
|
return SMALL_THUMBNAIL;
|
|
@@ -19,7 +19,7 @@ export function getPreviewSizeFrom(size: CollectionSize): PreviewSize {
|
|
|
19
19
|
switch (size) {
|
|
20
20
|
case "xs":
|
|
21
21
|
case "s":
|
|
22
|
-
return "
|
|
22
|
+
return "smallest";
|
|
23
23
|
case "m":
|
|
24
24
|
return "small";
|
|
25
25
|
case "l":
|
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,7 +9,7 @@ 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<UserType extends User =
|
|
12
|
+
export type AuthController<UserType extends User = any, ExtraData = any> = {
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* The user currently logged in
|
|
@@ -14,6 +17,11 @@ export type AuthController<UserType extends User = User> = {
|
|
|
14
17
|
*/
|
|
15
18
|
user: UserType | null;
|
|
16
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Roles related to the logged user
|
|
22
|
+
*/
|
|
23
|
+
roles?: Role[];
|
|
24
|
+
|
|
17
25
|
/**
|
|
18
26
|
* Initial loading flag. It is used not to display the login screen
|
|
19
27
|
* when the app first loads, and it has not been checked whether the user
|
|
@@ -21,10 +29,16 @@ export type AuthController<UserType extends User = User> = {
|
|
|
21
29
|
*/
|
|
22
30
|
initialLoading?: boolean;
|
|
23
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Loading flag. It is used to display a loading screen when the user is
|
|
34
|
+
* logging in or out.
|
|
35
|
+
*/
|
|
36
|
+
authLoading: boolean;
|
|
37
|
+
|
|
24
38
|
/**
|
|
25
39
|
* Sign out
|
|
26
40
|
*/
|
|
27
|
-
signOut: () => void
|
|
41
|
+
signOut: () => Promise<void>;
|
|
28
42
|
|
|
29
43
|
/**
|
|
30
44
|
* Error initializing the authentication
|
|
@@ -46,4 +60,39 @@ export type AuthController<UserType extends User = User> = {
|
|
|
46
60
|
*/
|
|
47
61
|
loginSkipped: boolean;
|
|
48
62
|
|
|
63
|
+
extra: ExtraData;
|
|
64
|
+
|
|
65
|
+
setExtra: (extra: ExtraData) => void;
|
|
66
|
+
|
|
67
|
+
// setUser?: (user: UserType | null) => void;
|
|
68
|
+
|
|
69
|
+
// setRoles?: (roles: Role[]) => void;
|
|
49
70
|
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Implement this function to allow access to specific users.
|
|
74
|
+
* @group Hooks and utilities
|
|
75
|
+
*/
|
|
76
|
+
export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (props: {
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Logged-in user or null
|
|
80
|
+
*/
|
|
81
|
+
user: UserType | null;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* AuthController
|
|
85
|
+
*/
|
|
86
|
+
authController: Controller;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Connector to your database, e.g. your Firestore database
|
|
90
|
+
*/
|
|
91
|
+
dataSourceDelegate: DataSourceDelegate;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Used storage implementation
|
|
95
|
+
*/
|
|
96
|
+
storageSource: StorageSource;
|
|
97
|
+
|
|
98
|
+
}) => 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, UserType extends User =
|
|
20
|
+
export interface EntityCollection<M extends Record<string, any> = any, UserType 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
|
|
|
@@ -76,6 +84,13 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
76
84
|
*/
|
|
77
85
|
properties: PropertiesOrBuilders<M>;
|
|
78
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Title property of the entity. This is the property that will be used
|
|
89
|
+
* as the title in entity related views and references.
|
|
90
|
+
* If not specified, the first property simple text property will be used.
|
|
91
|
+
*/
|
|
92
|
+
titleProperty?: keyof M;
|
|
93
|
+
|
|
79
94
|
/**
|
|
80
95
|
* Can this collection be edited by the end user.
|
|
81
96
|
* Defaults to `true`.
|
|
@@ -99,8 +114,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
99
114
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
100
115
|
* - If you are using a collection group, you will also have an
|
|
101
116
|
* additional `collectionGroupParent` column.
|
|
117
|
+
* You can use this prop to hide some properties from the table view.
|
|
118
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
119
|
+
* `hidden` in the property definition,will be ignored.
|
|
120
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
102
121
|
*/
|
|
103
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
122
|
+
propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
|
|
104
123
|
|
|
105
124
|
/**
|
|
106
125
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
@@ -139,7 +158,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
139
158
|
* is being created, updated or deleted.
|
|
140
159
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
141
160
|
*/
|
|
142
|
-
callbacks?: EntityCallbacks<M>;
|
|
161
|
+
callbacks?: EntityCallbacks<M, UserType>;
|
|
143
162
|
|
|
144
163
|
/**
|
|
145
164
|
* Builder for rendering additional components such as buttons in the
|
|
@@ -276,6 +295,27 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
276
295
|
*
|
|
277
296
|
*/
|
|
278
297
|
exportable?: boolean | ExportConfig<UserType>;
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* User id of the owner of this collection. This is used only by plugins, or if you
|
|
301
|
+
* are writing custom code
|
|
302
|
+
*/
|
|
303
|
+
ownerId?: string;
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
307
|
+
*/
|
|
308
|
+
overrides?: EntityOverrides;
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
312
|
+
*/
|
|
313
|
+
sideDialogWidth?: number | string;
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
317
|
+
*/
|
|
318
|
+
previewProperties?: string[];
|
|
279
319
|
}
|
|
280
320
|
|
|
281
321
|
/**
|
|
@@ -334,19 +374,18 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
334
374
|
/**
|
|
335
375
|
* Use this controller to retrieve the selected entities or modify them in
|
|
336
376
|
* an {@link EntityCollection}
|
|
337
|
-
* If you want to pass a `SelectionController` to
|
|
338
377
|
* @group Models
|
|
339
378
|
*/
|
|
340
379
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
341
380
|
selectedEntities: Entity<M>[];
|
|
342
381
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
343
382
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
344
|
-
toggleEntitySelection: (entity: Entity<M
|
|
383
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
345
384
|
}
|
|
346
385
|
|
|
347
386
|
/**
|
|
348
387
|
* Filter conditions in a `Query.where()` clause are specified using the
|
|
349
|
-
* strings
|
|
388
|
+
* strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
|
|
350
389
|
* @group Models
|
|
351
390
|
*/
|
|
352
391
|
export type WhereFilterOp =
|
|
@@ -436,7 +475,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
436
475
|
* view.
|
|
437
476
|
* @param entity
|
|
438
477
|
*/
|
|
439
|
-
value?: (props: {
|
|
478
|
+
value?: (props: {
|
|
479
|
+
entity: Entity<M>,
|
|
480
|
+
context: FireCMSContext<any>
|
|
481
|
+
}) => string | number | Promise<string | number> | undefined;
|
|
440
482
|
}
|
|
441
483
|
|
|
442
484
|
/**
|
|
@@ -446,8 +488,22 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
446
488
|
*/
|
|
447
489
|
export type EntityCustomView<M extends Record<string, any> = any> =
|
|
448
490
|
{
|
|
491
|
+
/**
|
|
492
|
+
* Key of this custom view.
|
|
493
|
+
*/
|
|
449
494
|
key: string,
|
|
495
|
+
/**
|
|
496
|
+
* Name of this custom view.
|
|
497
|
+
*/
|
|
450
498
|
name: string,
|
|
499
|
+
/**
|
|
500
|
+
* If set to true, the actions of the entity will be included in the
|
|
501
|
+
* bottom of the panel (save buttons, delete buttons, etc.)
|
|
502
|
+
*/
|
|
503
|
+
includeActions?: boolean;
|
|
504
|
+
/**
|
|
505
|
+
* Builder for rendering the custom view
|
|
506
|
+
*/
|
|
451
507
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
452
508
|
}
|
|
453
509
|
|
|
@@ -508,7 +564,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
508
564
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
509
565
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
510
566
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
511
|
-
setSortBy?: (sortBy
|
|
567
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
512
568
|
searchString?: string;
|
|
513
569
|
setSearchString?: (searchString?: string) => void;
|
|
514
570
|
clearFilter?: () => void;
|
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,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;
|
|
11
|
-
collection?: EntityCollection<M>
|
|
12
|
+
collection?: EntityCollection<M, any>
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -17,6 +18,7 @@ export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
|
17
18
|
export type ListenEntityProps<M extends Record<string, any> = any> =
|
|
18
19
|
FetchEntityProps<M>
|
|
19
20
|
& {
|
|
21
|
+
databaseId?: string;
|
|
20
22
|
onUpdate: (entity: Entity<M>) => void,
|
|
21
23
|
onError?: (error: Error) => void,
|
|
22
24
|
}
|
|
@@ -29,7 +31,7 @@ export interface FetchCollectionProps<M extends Record<string, any> = any> {
|
|
|
29
31
|
collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
|
|
30
32
|
filter?: FilterValues<Extract<keyof M, string>>,
|
|
31
33
|
limit?: number;
|
|
32
|
-
startAfter?: any
|
|
34
|
+
startAfter?: any;
|
|
33
35
|
orderBy?: string;
|
|
34
36
|
searchString?: string;
|
|
35
37
|
order?: "desc" | "asc";
|
|
@@ -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 {
|
|
@@ -181,7 +183,8 @@ export interface DataSource {
|
|
|
181
183
|
*/
|
|
182
184
|
deleteEntity<M extends Record<string, any> = any>(
|
|
183
185
|
{
|
|
184
|
-
entity
|
|
186
|
+
entity,
|
|
187
|
+
collection
|
|
185
188
|
}: DeleteEntityProps<M>
|
|
186
189
|
): Promise<void>;
|
|
187
190
|
|
|
@@ -190,7 +193,7 @@ export interface DataSource {
|
|
|
190
193
|
* @param path Collection path
|
|
191
194
|
* @param name of the property
|
|
192
195
|
* @param value
|
|
193
|
-
* @param
|
|
196
|
+
* @param collection
|
|
194
197
|
* @param entityId
|
|
195
198
|
* @return `true` if there are no other fields besides the given entity
|
|
196
199
|
*/
|
|
@@ -198,24 +201,38 @@ export interface DataSource {
|
|
|
198
201
|
path: string,
|
|
199
202
|
name: string,
|
|
200
203
|
value: any,
|
|
201
|
-
entityId?: string
|
|
204
|
+
entityId?: string,
|
|
205
|
+
collection?: EntityCollection
|
|
202
206
|
): Promise<boolean>;
|
|
203
207
|
|
|
204
208
|
/**
|
|
205
209
|
* Generate an id for a new entity
|
|
206
210
|
*/
|
|
207
|
-
generateEntityId(path: string): string;
|
|
211
|
+
generateEntityId(path: string, collection: EntityCollection): string;
|
|
208
212
|
|
|
209
213
|
/**
|
|
210
214
|
* Count the number of entities in a collection
|
|
211
215
|
*/
|
|
212
|
-
countEntities
|
|
216
|
+
countEntities?<M extends Record<string, any> = any>(props: FetchCollectionProps<M>): Promise<number>;
|
|
213
217
|
|
|
214
218
|
/**
|
|
215
219
|
* Check if the given filter combination is valid
|
|
216
220
|
* @param props
|
|
217
221
|
*/
|
|
218
222
|
isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Called when the user clicks on the search bar in a collection view.
|
|
226
|
+
* Useful for initializing a text search index.
|
|
227
|
+
* @param props
|
|
228
|
+
*/
|
|
229
|
+
initTextSearch?: (props: {
|
|
230
|
+
context: FireCMSContext,
|
|
231
|
+
path: string,
|
|
232
|
+
collection: EntityCollection,
|
|
233
|
+
parentCollectionIds?: string[]
|
|
234
|
+
}) => Promise<boolean>;
|
|
235
|
+
|
|
219
236
|
}
|
|
220
237
|
|
|
221
238
|
export type FilterCombinationValidProps = {
|
|
@@ -225,21 +242,29 @@ export type FilterCombinationValidProps = {
|
|
|
225
242
|
sortBy?: [string, "asc" | "desc"];
|
|
226
243
|
};
|
|
227
244
|
|
|
228
|
-
export type SaveEntityDelegateProps<M extends Record<string, any> = any> =
|
|
245
|
+
export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
|
|
229
246
|
|
|
230
|
-
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
231
|
-
Omit<FetchCollectionProps<M>, "collection">
|
|
232
|
-
& {
|
|
233
|
-
isCollectionGroup?: boolean
|
|
234
|
-
};
|
|
247
|
+
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
|
|
235
248
|
|
|
236
|
-
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
237
|
-
ListenCollectionProps<M>
|
|
238
|
-
& {
|
|
239
|
-
isCollectionGroup?: boolean;
|
|
240
|
-
};
|
|
249
|
+
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
|
|
241
250
|
|
|
242
251
|
export interface DataSourceDelegate {
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Key that identifies this data source delegate
|
|
255
|
+
*/
|
|
256
|
+
key: string;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* If the data source has been initialised
|
|
260
|
+
*/
|
|
261
|
+
initialised?: boolean;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* If the user is authenticated to use the data source
|
|
265
|
+
*/
|
|
266
|
+
authenticated?: boolean;
|
|
267
|
+
|
|
243
268
|
/**
|
|
244
269
|
* Fetch data from a collection
|
|
245
270
|
* @param path
|
|
@@ -297,7 +322,7 @@ export interface DataSourceDelegate {
|
|
|
297
322
|
fetchEntity<M extends Record<string, any> = any>({
|
|
298
323
|
path,
|
|
299
324
|
entityId,
|
|
300
|
-
}:
|
|
325
|
+
}: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
|
|
301
326
|
|
|
302
327
|
/**
|
|
303
328
|
* Get realtime updates on one entity.
|
|
@@ -313,13 +338,13 @@ export interface DataSourceDelegate {
|
|
|
313
338
|
entityId,
|
|
314
339
|
onUpdate,
|
|
315
340
|
onError
|
|
316
|
-
}:
|
|
341
|
+
}: ListenEntityProps<M>): () => void;
|
|
317
342
|
|
|
318
343
|
/**
|
|
319
344
|
* Save entity to the specified path
|
|
320
345
|
* @param path
|
|
321
|
-
* @param
|
|
322
|
-
* @param
|
|
346
|
+
* @param entityId
|
|
347
|
+
* @param values
|
|
323
348
|
* @param status
|
|
324
349
|
*/
|
|
325
350
|
saveEntity<M extends Record<string, any> = any>({
|
|
@@ -342,48 +367,45 @@ export interface DataSourceDelegate {
|
|
|
342
367
|
* @param name of the property
|
|
343
368
|
* @param value
|
|
344
369
|
* @param entityId
|
|
370
|
+
* @param collection
|
|
345
371
|
* @return `true` if there are no other fields besides the given entity
|
|
346
372
|
*/
|
|
347
|
-
checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
|
|
373
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
|
|
348
374
|
|
|
349
375
|
/**
|
|
350
376
|
* Generate an id for a new entity
|
|
351
377
|
*/
|
|
352
|
-
generateEntityId(path: string): string;
|
|
378
|
+
generateEntityId(path: string, collection?: EntityCollection): string;
|
|
353
379
|
|
|
354
380
|
/**
|
|
355
381
|
* Count the number of entities in a collection
|
|
356
382
|
*/
|
|
357
|
-
countEntities
|
|
383
|
+
countEntities?<M extends Record<string, any> = any>(props: FetchCollectionDelegateProps<M>): Promise<number>;
|
|
358
384
|
|
|
359
385
|
/**
|
|
360
386
|
* Check if the given filter combination is valid
|
|
361
387
|
* @param props
|
|
362
388
|
*/
|
|
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,
|
|
389
|
+
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
|
|
390
|
+
databaseId?: string
|
|
391
|
+
}): boolean;
|
|
376
392
|
|
|
377
393
|
/**
|
|
378
394
|
* Get the object to generate the current time in the datasource
|
|
379
395
|
*/
|
|
380
|
-
currentTime()
|
|
381
|
-
|
|
382
|
-
buildDate: (date: Date) => any;
|
|
383
|
-
|
|
384
|
-
buildDeleteFieldValue: () => any;
|
|
396
|
+
currentTime?: () => any;
|
|
385
397
|
|
|
386
398
|
delegateToCMSModel: (data: any) => any;
|
|
387
399
|
|
|
400
|
+
cmsToDelegateModel: (data: any) => any;
|
|
401
|
+
|
|
388
402
|
setDateToMidnight: (input?: any) => any;
|
|
403
|
+
|
|
404
|
+
initTextSearch?: (props: {
|
|
405
|
+
context: FireCMSContext,
|
|
406
|
+
path: string,
|
|
407
|
+
databaseId?: string,
|
|
408
|
+
collection: EntityCollection,
|
|
409
|
+
parentCollectionIds?: string[]
|
|
410
|
+
}) => Promise<boolean>;
|
|
389
411
|
}
|
package/src/types/entities.ts
CHANGED
|
@@ -25,6 +25,8 @@ export interface Entity<M extends object> {
|
|
|
25
25
|
* Current values
|
|
26
26
|
*/
|
|
27
27
|
values: EntityValues<M>;
|
|
28
|
+
|
|
29
|
+
databaseId?: string;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -37,7 +39,7 @@ export type EntityValues<M extends object> = M;
|
|
|
37
39
|
/**
|
|
38
40
|
* Class used to create a reference to an entity in a different path
|
|
39
41
|
*/
|
|
40
|
-
export class EntityReference
|
|
42
|
+
export class EntityReference {
|
|
41
43
|
/**
|
|
42
44
|
* ID of the entity
|
|
43
45
|
*/
|
|
@@ -56,6 +58,10 @@ export class EntityReference<M extends Record<string, any> = any> {
|
|
|
56
58
|
get pathWithId() {
|
|
57
59
|
return `${this.path}/${this.id}`;
|
|
58
60
|
}
|
|
61
|
+
|
|
62
|
+
isEntityReference() {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
export class GeoPoint {
|
|
@@ -74,3 +80,11 @@ export class GeoPoint {
|
|
|
74
80
|
this.longitude = longitude;
|
|
75
81
|
}
|
|
76
82
|
}
|
|
83
|
+
|
|
84
|
+
export class Vector {
|
|
85
|
+
readonly value: number[];
|
|
86
|
+
|
|
87
|
+
constructor(value: number[]) {
|
|
88
|
+
this.value = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -5,9 +5,25 @@ import { EntityCollection, SelectionController } from "./collections";
|
|
|
5
5
|
import { User } from "./user";
|
|
6
6
|
import { SideEntityController } from "./side_entity_controller";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* An entity action is a custom action that can be performed on an entity.
|
|
10
|
+
* They are displayed in the entity view and in the collection view.
|
|
11
|
+
*/
|
|
8
12
|
export type EntityAction<M extends object = any, UserType extends User = User> = {
|
|
13
|
+
/**
|
|
14
|
+
* Title of the action
|
|
15
|
+
*/
|
|
9
16
|
name: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Icon of the action
|
|
20
|
+
*/
|
|
10
21
|
icon?: React.ReactElement;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Callback when the action is clicked
|
|
25
|
+
* @param props
|
|
26
|
+
*/
|
|
11
27
|
onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
|
|
12
28
|
|
|
13
29
|
/**
|
|
@@ -21,6 +37,7 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
|
|
|
21
37
|
* Show this action in the form, defaults to true
|
|
22
38
|
*/
|
|
23
39
|
includeInForm?: boolean;
|
|
40
|
+
|
|
24
41
|
}
|
|
25
42
|
|
|
26
43
|
export type EntityActionClickProps<M extends object, UserType extends User = User> = {
|
|
@@ -65,7 +65,8 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
|
|
|
65
65
|
*
|
|
66
66
|
* @param idUpdateProps
|
|
67
67
|
*/
|
|
68
|
-
onIdUpdate?(idUpdateProps: EntityIdUpdateProps<M>): string
|
|
68
|
+
onIdUpdate?(idUpdateProps: EntityIdUpdateProps<M>): string | Promise<string>;
|
|
69
|
+
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
/**
|
|
@@ -77,7 +78,7 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
|
|
|
77
78
|
/**
|
|
78
79
|
* Collection of the entity
|
|
79
80
|
*/
|
|
80
|
-
collection: EntityCollection<M>;
|
|
81
|
+
collection: EntityCollection<M, UserType>;
|
|
81
82
|
|
|
82
83
|
/**
|
|
83
84
|
* Full path of the CMS where this collection is being fetched.
|
|
@@ -192,7 +193,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
|
|
|
192
193
|
/**
|
|
193
194
|
* Context of the app status
|
|
194
195
|
*/
|
|
195
|
-
context: FireCMSContext
|
|
196
|
+
context: FireCMSContext<UserType>;
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
/**
|