@firecms/core 3.0.0-canary.25 → 3.0.0-canary.251
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 +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -5
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
- package/dist/components/HomePage/NavigationGroup.d.ts +7 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +40 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +36 -64
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/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/index.d.ts +17 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -13
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +22838 -13874
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +25639 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +107 -25
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +74 -42
- package/dist/types/firecms.d.ts +8 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +62 -19
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +48 -12
- package/dist/types/properties.d.ts +80 -24
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +10 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +7 -4
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +41 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +64 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +72 -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 +32 -37
- 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 +231 -117
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +80 -59
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +486 -159
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +613 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +63 -29
- package/src/components/HomePage/RenameGroupDialog.tsx +113 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -145
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +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/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +6 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +408 -478
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +85 -21
- package/src/core/FireCMS.tsx +72 -58
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +26 -13
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +589 -535
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +88 -45
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +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 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -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/index.tsx +17 -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 +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +440 -119
- package/src/hooks/useFireCMSContext.tsx +3 -33
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +201 -77
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +34 -25
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +26 -37
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +3 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +129 -30
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +85 -46
- package/src/types/firecms.tsx +9 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +77 -24
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +57 -14
- package/src/types/properties.ts +95 -26
- package/src/types/property_config.tsx +1 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +11 -1
- package/src/types/storage.ts +83 -1
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +6 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +18 -7
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +90 -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 +110 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +91 -28
- package/dist/components/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/dist/types/firecms.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export type CMSViewsBuilder = (params: {
|
|
|
44
44
|
/**
|
|
45
45
|
* @group Models
|
|
46
46
|
*/
|
|
47
|
-
export type FireCMSProps<
|
|
47
|
+
export type FireCMSProps<USER extends User> = {
|
|
48
48
|
/**
|
|
49
49
|
* Use this function to return the components you want to render under
|
|
50
50
|
* FireCMS
|
|
@@ -62,6 +62,10 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
62
62
|
*/
|
|
63
63
|
loading: boolean;
|
|
64
64
|
}) => React.ReactNode;
|
|
65
|
+
/**
|
|
66
|
+
* If you have a custom API key, you can use it here.
|
|
67
|
+
*/
|
|
68
|
+
apiKey?: string;
|
|
65
69
|
/**
|
|
66
70
|
* Record of custom form fields to be used in the CMS.
|
|
67
71
|
* You can use the key to reference the custom field in
|
|
@@ -101,7 +105,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
101
105
|
/**
|
|
102
106
|
* Delegate for implementing your auth operations.
|
|
103
107
|
*/
|
|
104
|
-
authController: AuthController<
|
|
108
|
+
authController: AuthController<USER>;
|
|
105
109
|
/**
|
|
106
110
|
* Use this controller to access the configuration that is stored locally,
|
|
107
111
|
* and not defined in code
|
|
@@ -109,7 +113,8 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
|
109
113
|
userConfigPersistence?: UserConfigurationPersistence;
|
|
110
114
|
/**
|
|
111
115
|
* Use plugins to modify the behaviour of the CMS.
|
|
112
|
-
*
|
|
116
|
+
* DEPRECATED: use the `plugins` prop in the `useBuildNavigationController` instead.
|
|
117
|
+
* This prop will work as a fallback for the `plugins` prop in the `useBuildNavigationController`.
|
|
113
118
|
*/
|
|
114
119
|
plugins?: FireCMSPlugin<any, any, any>[];
|
|
115
120
|
/**
|
|
@@ -17,7 +17,7 @@ import { AnalyticsController } from "./analytics_controller";
|
|
|
17
17
|
* @group Hooks and utilities
|
|
18
18
|
* @see useFireCMSContext
|
|
19
19
|
*/
|
|
20
|
-
export type FireCMSContext<
|
|
20
|
+
export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
|
|
21
21
|
/**
|
|
22
22
|
* Connector to your database, e.g. your Firestore database
|
|
23
23
|
*/
|
package/dist/types/index.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export * from "./plugins";
|
|
|
23
23
|
export * from "./analytics";
|
|
24
24
|
export * from "./firecms";
|
|
25
25
|
export * from "./roles";
|
|
26
|
-
export * from "./appcheck";
|
|
27
26
|
export * from "./export_import";
|
|
28
27
|
export * from "./modify_collections";
|
|
29
28
|
export * from "./analytics_controller";
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { EntityCollection } from "./collections";
|
|
3
3
|
import { EntityReference } from "./entities";
|
|
4
|
+
import { FireCMSPlugin } from "./plugins";
|
|
4
5
|
/**
|
|
5
6
|
* Controller that includes the resolved navigation and utility methods and
|
|
6
7
|
* attributes.
|
|
8
|
+
* This controller holds the state of the navigation including the collections.
|
|
7
9
|
* @group Models
|
|
8
10
|
*/
|
|
9
11
|
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
@@ -29,7 +31,7 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
29
31
|
* level of the navigation (e.g. in the home page or the navigation
|
|
30
32
|
* drawer)
|
|
31
33
|
*/
|
|
32
|
-
topLevelNavigation?:
|
|
34
|
+
topLevelNavigation?: NavigationResult;
|
|
33
35
|
/**
|
|
34
36
|
* Is the navigation loading (the configuration persistence has not
|
|
35
37
|
* loaded yet, or a specified navigation builder has not completed)
|
|
@@ -47,9 +49,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
47
49
|
* Get the collection configuration for a given path.
|
|
48
50
|
* The collection is resolved from the given path or alias.
|
|
49
51
|
*/
|
|
50
|
-
getCollection: (
|
|
52
|
+
getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
|
|
51
53
|
/**
|
|
52
|
-
* Get the collection configuration
|
|
54
|
+
* Get the top level collection configuration for a given id
|
|
55
|
+
*/
|
|
56
|
+
getCollectionById: (id: string) => EC | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Get the collection configuration from its parent ids.
|
|
53
59
|
*/
|
|
54
60
|
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
55
61
|
/**
|
|
@@ -57,11 +63,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
57
63
|
*/
|
|
58
64
|
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
59
65
|
/**
|
|
60
|
-
* Default path under the navigation routes of the CMS will be created
|
|
66
|
+
* Default path under the navigation routes of the CMS will be created.
|
|
67
|
+
* Defaults to '/'. You may want to change this `basepath` to 'admin' for example.
|
|
61
68
|
*/
|
|
62
69
|
basePath: string;
|
|
63
70
|
/**
|
|
64
|
-
* Default path under the collection routes of the CMS will be created
|
|
71
|
+
* Default path under the collection routes of the CMS will be created.
|
|
72
|
+
* It defaults to '/c'
|
|
65
73
|
*/
|
|
66
74
|
baseCollectionPath: string;
|
|
67
75
|
/**
|
|
@@ -72,14 +80,6 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
72
80
|
* @param cmsPath
|
|
73
81
|
*/
|
|
74
82
|
urlPathToDataPath: (cmsPath: string) => string;
|
|
75
|
-
/**
|
|
76
|
-
* Convert a collection or entity path to a URL path
|
|
77
|
-
* @param path
|
|
78
|
-
*/
|
|
79
|
-
buildCMSUrlPath: (path: string) => string;
|
|
80
|
-
buildUrlEditCollectionPath: (props: {
|
|
81
|
-
path: string;
|
|
82
|
-
}) => string;
|
|
83
83
|
/**
|
|
84
84
|
* Base url path for the home screen
|
|
85
85
|
*/
|
|
@@ -97,10 +97,11 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
97
97
|
*/
|
|
98
98
|
buildUrlCollectionPath: (path: string) => string;
|
|
99
99
|
/**
|
|
100
|
-
* Turn a path with
|
|
100
|
+
* Turn a path with collection ids into a resolved path.
|
|
101
|
+
* The ids (typically used in urls) will be replaced with relative paths (typically used in database paths)
|
|
101
102
|
* @param pathWithAliases
|
|
102
103
|
*/
|
|
103
|
-
|
|
104
|
+
resolveIdsFrom: (pathWithAliases: string) => string;
|
|
104
105
|
/**
|
|
105
106
|
* Call this method to recalculate the navigation
|
|
106
107
|
*/
|
|
@@ -120,6 +121,31 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
|
|
|
120
121
|
* @param ids
|
|
121
122
|
*/
|
|
122
123
|
convertIdsToPaths: (ids: string[]) => string[];
|
|
124
|
+
/**
|
|
125
|
+
* A function to navigate to a specified route or URL.
|
|
126
|
+
*
|
|
127
|
+
* @param {string} to - The target route or URL to navigate to.
|
|
128
|
+
* @param {NavigateOptions} [options] - Optional configuration settings for navigation, such as replace behavior or state data.
|
|
129
|
+
*/
|
|
130
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
131
|
+
/**
|
|
132
|
+
* Plugin system allowing to extend the CMS functionality.
|
|
133
|
+
*/
|
|
134
|
+
plugins?: FireCMSPlugin<any, any, any>[];
|
|
135
|
+
};
|
|
136
|
+
export interface NavigateOptions {
|
|
137
|
+
replace?: boolean;
|
|
138
|
+
state?: any;
|
|
139
|
+
preventScrollReset?: boolean;
|
|
140
|
+
relative?: "route" | "path";
|
|
141
|
+
flushSync?: boolean;
|
|
142
|
+
viewTransition?: boolean;
|
|
143
|
+
}
|
|
144
|
+
export type NavigationBlocker = {
|
|
145
|
+
updateBlockListener: (path: string, block: boolean, basePath?: string) => () => void;
|
|
146
|
+
isBlocked: (path: string) => boolean;
|
|
147
|
+
proceed?: () => void;
|
|
148
|
+
reset?: () => void;
|
|
123
149
|
};
|
|
124
150
|
/**
|
|
125
151
|
* Custom additional views created by the developer, added to the main
|
|
@@ -144,8 +170,9 @@ export interface CMSView {
|
|
|
144
170
|
* You can use any of the icons in the Material specs:
|
|
145
171
|
* https://fonts.google.com/icons
|
|
146
172
|
* e.g. 'account_tree' or 'person'
|
|
173
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
147
174
|
*/
|
|
148
|
-
icon?: string;
|
|
175
|
+
icon?: string | React.ReactNode;
|
|
149
176
|
/**
|
|
150
177
|
* Should this view be hidden from the main navigation panel.
|
|
151
178
|
* It will still be accessible if you reach the specified path
|
|
@@ -163,7 +190,21 @@ export interface CMSView {
|
|
|
163
190
|
*/
|
|
164
191
|
group?: string;
|
|
165
192
|
}
|
|
166
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Used to group navigation entries in the main navigation.
|
|
195
|
+
*/
|
|
196
|
+
export interface NavigationGroupMapping {
|
|
197
|
+
/**
|
|
198
|
+
* Name of the group, used to display the group header in the UI
|
|
199
|
+
*/
|
|
200
|
+
name: string;
|
|
201
|
+
/**
|
|
202
|
+
* List of collection ids or view paths that belong to this group.
|
|
203
|
+
*/
|
|
204
|
+
entries: string[];
|
|
205
|
+
}
|
|
206
|
+
export interface NavigationEntry {
|
|
207
|
+
id: string;
|
|
167
208
|
url: string;
|
|
168
209
|
name: string;
|
|
169
210
|
path: string;
|
|
@@ -173,7 +214,9 @@ export interface TopNavigationEntry {
|
|
|
173
214
|
description?: string;
|
|
174
215
|
group: string;
|
|
175
216
|
}
|
|
176
|
-
export type
|
|
177
|
-
|
|
217
|
+
export type NavigationResult = {
|
|
218
|
+
allowDragAndDrop: boolean;
|
|
219
|
+
navigationEntries: NavigationEntry[];
|
|
178
220
|
groups: string[];
|
|
221
|
+
onNavigationEntriesUpdate: (entries: NavigationGroupMapping[]) => void;
|
|
179
222
|
};
|
|
@@ -30,7 +30,7 @@ export interface Permissions {
|
|
|
30
30
|
* Props passed to a {@link PermissionsBuilder}
|
|
31
31
|
* @group Models
|
|
32
32
|
*/
|
|
33
|
-
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection,
|
|
33
|
+
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
|
|
34
34
|
/**
|
|
35
35
|
* Entity being edited, might be null in some cases, when the operation
|
|
36
36
|
* refers to the collection.
|
|
@@ -49,7 +49,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
49
49
|
/**
|
|
50
50
|
* Logged in user
|
|
51
51
|
*/
|
|
52
|
-
user:
|
|
52
|
+
user: USER | null;
|
|
53
53
|
/**
|
|
54
54
|
* Collection these permissions apply to
|
|
55
55
|
*/
|
|
@@ -57,11 +57,11 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
57
57
|
/**
|
|
58
58
|
* Auth controller
|
|
59
59
|
*/
|
|
60
|
-
authController: AuthController<
|
|
60
|
+
authController: AuthController<USER>;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Builder used to assign permissions to entities,
|
|
64
64
|
* based on the logged user or collection.
|
|
65
65
|
* @group Models
|
|
66
66
|
*/
|
|
67
|
-
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection,
|
|
67
|
+
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
|
package/dist/types/plugins.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
2
|
import { FireCMSContext } from "./firecms_context";
|
|
3
|
-
import { CollectionActionsProps, EntityCollection } from "./collections";
|
|
3
|
+
import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
|
|
4
4
|
import { User } from "./user";
|
|
5
5
|
import { FieldProps, FormContext } from "./fields";
|
|
6
6
|
import { CMSType, Property } from "./properties";
|
|
7
7
|
import { EntityStatus } from "./entities";
|
|
8
8
|
import { ResolvedProperty } from "./resolved_entities";
|
|
9
|
+
import { NavigationGroupMapping } from "./navigation";
|
|
9
10
|
/**
|
|
10
11
|
* Interface used to define plugins for FireCMS.
|
|
11
12
|
* NOTE: This is a work in progress and the API is not stable yet.
|
|
12
13
|
* @group Core
|
|
13
14
|
*/
|
|
14
|
-
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
|
|
15
|
+
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
|
|
15
16
|
/**
|
|
16
17
|
* Key of the plugin. This is used to identify the plugin in the CMS.
|
|
17
18
|
*/
|
|
@@ -70,6 +71,17 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
70
71
|
title: string;
|
|
71
72
|
children: React.ReactNode;
|
|
72
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* Allow reordering with drag and drop of the collections in the home page.
|
|
76
|
+
*/
|
|
77
|
+
allowDragAndDrop?: boolean;
|
|
78
|
+
navigationEntries?: NavigationGroupMapping[];
|
|
79
|
+
/**
|
|
80
|
+
* This method will be called when the entries are updated in the home page.
|
|
81
|
+
* group => navigationEntriesOrder (path)
|
|
82
|
+
* @param entries
|
|
83
|
+
*/
|
|
84
|
+
onNavigationEntriesUpdate?: (entries: NavigationGroupMapping[]) => void;
|
|
73
85
|
};
|
|
74
86
|
collectionView?: {
|
|
75
87
|
/**
|
|
@@ -78,6 +90,14 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
78
90
|
*/
|
|
79
91
|
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
80
92
|
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
93
|
+
CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
|
|
94
|
+
collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
|
|
95
|
+
blockSearch?: (props: {
|
|
96
|
+
context: FireCMSContext;
|
|
97
|
+
path: string;
|
|
98
|
+
collection: EC;
|
|
99
|
+
parentCollectionIds?: string[];
|
|
100
|
+
}) => boolean;
|
|
81
101
|
showTextSearchBar?: (props: {
|
|
82
102
|
context: FireCMSContext;
|
|
83
103
|
path: string;
|
|
@@ -101,6 +121,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
101
121
|
parentCollectionIds: string[];
|
|
102
122
|
onHover: boolean;
|
|
103
123
|
collection: EC;
|
|
124
|
+
tableController: EntityTableController;
|
|
104
125
|
}>;
|
|
105
126
|
/**
|
|
106
127
|
* If you add this callback to your plugin, an add button will be added to the collection table.
|
|
@@ -110,6 +131,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
110
131
|
fullPath: string;
|
|
111
132
|
parentCollectionIds: string[];
|
|
112
133
|
collection: EC;
|
|
134
|
+
tableController: EntityTableController;
|
|
113
135
|
}>;
|
|
114
136
|
};
|
|
115
137
|
form?: {
|
|
@@ -121,6 +143,18 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
121
143
|
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
122
144
|
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
123
145
|
};
|
|
146
|
+
collection?: {
|
|
147
|
+
/**
|
|
148
|
+
* Use this method to modify a single collection before it is rendered.
|
|
149
|
+
* @param collection
|
|
150
|
+
*/
|
|
151
|
+
modifyCollection?: (collection: EntityCollection) => EntityCollection;
|
|
152
|
+
/**
|
|
153
|
+
* Use this method to modify, add or remove collections.
|
|
154
|
+
* @param collections
|
|
155
|
+
*/
|
|
156
|
+
injectCollections?: (collections: EntityCollection[]) => EntityCollection[];
|
|
157
|
+
};
|
|
124
158
|
};
|
|
125
159
|
/**
|
|
126
160
|
* Props passed to the {@link FireCMSPlugin.homePage.CollectionActions} method.
|
|
@@ -128,7 +162,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
128
162
|
*
|
|
129
163
|
* @group Models
|
|
130
164
|
*/
|
|
131
|
-
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any,
|
|
165
|
+
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
132
166
|
/**
|
|
133
167
|
* Collection path of this entity. This is the full path, like
|
|
134
168
|
* `users/1234/addresses`
|
|
@@ -141,17 +175,19 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
|
|
|
141
175
|
/**
|
|
142
176
|
* Context of the app status
|
|
143
177
|
*/
|
|
144
|
-
context: FireCMSContext<
|
|
178
|
+
context: FireCMSContext<USER>;
|
|
145
179
|
extraProps?: EP;
|
|
146
180
|
}
|
|
147
|
-
export interface PluginFormActionProps<
|
|
181
|
+
export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
|
|
148
182
|
entityId?: string;
|
|
149
183
|
path: string;
|
|
150
184
|
status: EntityStatus;
|
|
151
185
|
collection: EC;
|
|
186
|
+
disabled: boolean;
|
|
152
187
|
formContext?: FormContext<any>;
|
|
153
|
-
context: FireCMSContext<
|
|
188
|
+
context: FireCMSContext<USER>;
|
|
154
189
|
currentEntityId?: string;
|
|
190
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
155
191
|
}
|
|
156
192
|
export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
|
|
157
193
|
fieldConfigId: string;
|
|
@@ -159,13 +195,13 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
|
|
|
159
195
|
property: Property<T> | ResolvedProperty<T>;
|
|
160
196
|
Field: React.ComponentType<FieldProps<T, any, M>>;
|
|
161
197
|
plugin: FireCMSPlugin;
|
|
162
|
-
path
|
|
163
|
-
collection
|
|
198
|
+
path?: string;
|
|
199
|
+
collection?: EC;
|
|
164
200
|
};
|
|
165
|
-
export interface PluginGenericProps<
|
|
166
|
-
context: FireCMSContext<
|
|
201
|
+
export interface PluginGenericProps<USER extends User = User> {
|
|
202
|
+
context: FireCMSContext<USER>;
|
|
167
203
|
}
|
|
168
|
-
export interface PluginHomePageAdditionalCardsProps<
|
|
204
|
+
export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
|
|
169
205
|
group?: string;
|
|
170
|
-
context: FireCMSContext<
|
|
206
|
+
context: FireCMSContext<USER>;
|
|
171
207
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldProps } from "./fields";
|
|
3
3
|
import { PropertyPreviewProps } from "../preview";
|
|
4
|
-
import { EntityReference, EntityValues, GeoPoint } from "./entities";
|
|
4
|
+
import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
|
|
5
5
|
import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
|
|
6
6
|
import { FilterValues } from "./collections";
|
|
7
7
|
import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
|
|
8
|
+
import { AuthController } from "./auth";
|
|
8
9
|
/**
|
|
9
10
|
* @group Entity properties
|
|
10
11
|
*/
|
|
11
|
-
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends EntityReference ? "reference" : T extends Array<
|
|
12
|
+
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<any> ? "array" : T extends Record<string, any> ? "map" : never;
|
|
12
13
|
/**
|
|
13
14
|
* @group Entity properties
|
|
14
15
|
*/
|
|
@@ -20,7 +21,7 @@ export type AnyProperty = StringProperty | NumberProperty | BooleanProperty | Da
|
|
|
20
21
|
/**
|
|
21
22
|
* @group Entity properties
|
|
22
23
|
*/
|
|
23
|
-
export type Property<T extends CMSType =
|
|
24
|
+
export type Property<T extends CMSType = any> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
|
|
24
25
|
/**
|
|
25
26
|
* Interface including all common properties of a CMS property
|
|
26
27
|
* @group Entity properties
|
|
@@ -97,12 +98,17 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
97
98
|
/**
|
|
98
99
|
* This value will be set by default for new entities.
|
|
99
100
|
*/
|
|
100
|
-
defaultValue?: T;
|
|
101
|
+
defaultValue?: T | null;
|
|
101
102
|
/**
|
|
102
103
|
* Should this property be editable. If set to true, the user will be able to modify the property and
|
|
103
104
|
* save the new config. The saved config will then become the source of truth.
|
|
104
105
|
*/
|
|
105
106
|
editable?: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* A number between 0 and 100 that indicates the width of the field in the form view.
|
|
109
|
+
* It defaults to 100, but you can set it to 50 to have two fields in the same row.
|
|
110
|
+
*/
|
|
111
|
+
widthPercentage?: number;
|
|
106
112
|
}
|
|
107
113
|
/**
|
|
108
114
|
* @group Entity properties
|
|
@@ -200,6 +206,10 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
|
|
|
200
206
|
* Entity ID
|
|
201
207
|
*/
|
|
202
208
|
entityId?: string;
|
|
209
|
+
/**
|
|
210
|
+
* Controller to manage authentication
|
|
211
|
+
*/
|
|
212
|
+
authController: AuthController;
|
|
203
213
|
};
|
|
204
214
|
/**
|
|
205
215
|
* You can use this type to define a property dynamically, based
|
|
@@ -207,15 +217,15 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
|
|
|
207
217
|
* current value of the property, as well as the path and entity ID.
|
|
208
218
|
* @group Entity properties
|
|
209
219
|
*/
|
|
210
|
-
export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
|
|
220
|
+
export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, index, path, entityId, authController }: PropertyBuilderProps<M>) => Property<T> | null;
|
|
211
221
|
/**
|
|
212
222
|
* @group Entity properties
|
|
213
223
|
*/
|
|
214
|
-
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> =
|
|
224
|
+
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any> = Property<T> | PropertyBuilder<T, M>;
|
|
215
225
|
/**
|
|
216
226
|
* @group Entity properties
|
|
217
227
|
*/
|
|
218
|
-
export type PropertiesOrBuilders<M extends Record<string, any> =
|
|
228
|
+
export type PropertiesOrBuilders<M extends Record<string, any> = any> = {
|
|
219
229
|
[k in keyof M]: PropertyOrBuilder<M[k], M>;
|
|
220
230
|
};
|
|
221
231
|
/**
|
|
@@ -278,7 +288,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
278
288
|
enumValues?: EnumValues;
|
|
279
289
|
/**
|
|
280
290
|
* You can specify a `Storage` configuration. It is used to
|
|
281
|
-
* indicate that this string refers to a path in
|
|
291
|
+
* indicate that this string refers to a path in your storage provider.
|
|
282
292
|
*/
|
|
283
293
|
storage?: StorageConfig;
|
|
284
294
|
/**
|
|
@@ -302,11 +312,18 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
302
312
|
* Add an icon to clear the value and set it to `null`. Defaults to `false`
|
|
303
313
|
*/
|
|
304
314
|
clearable?: boolean;
|
|
315
|
+
/**
|
|
316
|
+
* You can use this property (a string) to behave as a reference to another
|
|
317
|
+
* collection. The stored value is the ID of the entity in the
|
|
318
|
+
* collection, and the `path` prop is used to
|
|
319
|
+
* define the collection this reference points to.
|
|
320
|
+
*/
|
|
321
|
+
reference?: ReferenceProperty;
|
|
305
322
|
}
|
|
306
323
|
/**
|
|
307
324
|
* @group Entity properties
|
|
308
325
|
*/
|
|
309
|
-
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType =
|
|
326
|
+
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
|
|
310
327
|
dataType: "array";
|
|
311
328
|
/**
|
|
312
329
|
* The property of this array.
|
|
@@ -361,6 +378,21 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
|
|
|
361
378
|
* Should the field be initially expanded. Defaults to `true`
|
|
362
379
|
*/
|
|
363
380
|
expanded?: boolean;
|
|
381
|
+
/**
|
|
382
|
+
* Display the child properties directly, without being wrapped in an
|
|
383
|
+
* extendable panel.
|
|
384
|
+
*/
|
|
385
|
+
minimalistView?: boolean;
|
|
386
|
+
/**
|
|
387
|
+
* Can the elements in this array be reordered. Defaults to `true`.
|
|
388
|
+
* This prop has no effect if `disabled` is set to true.
|
|
389
|
+
*/
|
|
390
|
+
sortable?: boolean;
|
|
391
|
+
/**
|
|
392
|
+
* Can the elements in this array be added. Defaults to `true`
|
|
393
|
+
* This prop has no effect if `disabled` is set to true.
|
|
394
|
+
*/
|
|
395
|
+
canAddElements?: boolean;
|
|
364
396
|
}
|
|
365
397
|
/**
|
|
366
398
|
* @group Entity properties
|
|
@@ -400,6 +432,11 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
|
|
|
400
432
|
* view
|
|
401
433
|
*/
|
|
402
434
|
spreadChildren?: boolean;
|
|
435
|
+
/**
|
|
436
|
+
* Display the child properties directly, without being wrapped in an
|
|
437
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
438
|
+
*/
|
|
439
|
+
minimalistView?: boolean;
|
|
403
440
|
/**
|
|
404
441
|
* Should the field be initially expanded. Defaults to `true`
|
|
405
442
|
*/
|
|
@@ -474,6 +511,14 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
|
|
|
474
511
|
* specified values are considered.
|
|
475
512
|
*/
|
|
476
513
|
previewProperties?: string[];
|
|
514
|
+
/**
|
|
515
|
+
* Should the reference include the ID of the entity. Defaults to `true`
|
|
516
|
+
*/
|
|
517
|
+
includeId?: boolean;
|
|
518
|
+
/**
|
|
519
|
+
* Should the reference include a link to the entity (open the entity details). Defaults to `true`
|
|
520
|
+
*/
|
|
521
|
+
includeEntityLink?: boolean;
|
|
477
522
|
}
|
|
478
523
|
/**
|
|
479
524
|
* Rules to validate any property. Some properties have specific rules
|
|
@@ -575,13 +620,13 @@ export type StorageConfig = {
|
|
|
575
620
|
* You can use this prop to customize the uploaded filename.
|
|
576
621
|
* You can use a function as a callback or a string where you
|
|
577
622
|
* specify some placeholders that get replaced with the corresponding values.
|
|
578
|
-
* - {file} - Full file name
|
|
579
|
-
* - {file.name} - Name of the file without extension
|
|
580
|
-
* - {file.ext} - Extension of the file
|
|
581
|
-
* - {rand} - Random value used to avoid name collisions
|
|
582
|
-
* - {entityId} - ID of the entity
|
|
583
|
-
* - {propertyKey} - ID of this property
|
|
584
|
-
* - {path} - Path of this entity
|
|
623
|
+
* - `{file}` - Full file name
|
|
624
|
+
* - `{file.name}` - Name of the file without extension
|
|
625
|
+
* - `{file.ext}` - Extension of the file
|
|
626
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
627
|
+
* - `{entityId}` - ID of the entity
|
|
628
|
+
* - `{propertyKey}` - ID of this property
|
|
629
|
+
* - `{path}` - Path of this entity
|
|
585
630
|
*
|
|
586
631
|
* @param context
|
|
587
632
|
*/
|
|
@@ -591,13 +636,13 @@ export type StorageConfig = {
|
|
|
591
636
|
*
|
|
592
637
|
* You can use a function as a callback or a string where you
|
|
593
638
|
* specify some placeholders that get replaced with the corresponding values.
|
|
594
|
-
* - {file} - Full file name
|
|
595
|
-
* - {file.name} - Name of the file without extension
|
|
596
|
-
* - {file.ext} - Extension of the file
|
|
597
|
-
* - {rand} - Random value used to avoid name collisions
|
|
598
|
-
* - {entityId} - ID of the entity
|
|
599
|
-
* - {propertyKey} - ID of this property
|
|
600
|
-
* - {path} - Path of this entity
|
|
639
|
+
* - `{file}` - Full file name
|
|
640
|
+
* - `{file.name}` - Name of the file without extension
|
|
641
|
+
* - `{file.ext}` - Extension of the file
|
|
642
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
643
|
+
* - `{entityId}` - ID of the entity
|
|
644
|
+
* - `{propertyKey}` - ID of this property
|
|
645
|
+
* - `{path}` - Path of this entity
|
|
601
646
|
*/
|
|
602
647
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
603
648
|
/**
|
|
@@ -615,11 +660,22 @@ export type StorageConfig = {
|
|
|
615
660
|
* Define maximal file size in bytes
|
|
616
661
|
*/
|
|
617
662
|
maxSize?: number;
|
|
663
|
+
/**
|
|
664
|
+
* Use this callback to process the file before uploading it to the storage.
|
|
665
|
+
* If nothing is returned, the file is uploaded as it is.
|
|
666
|
+
* @param file
|
|
667
|
+
*/
|
|
668
|
+
processFile?: (file: File) => Promise<File> | undefined;
|
|
618
669
|
/**
|
|
619
670
|
* Postprocess the saved value (storage path or URL)
|
|
620
671
|
* after it has been resolved.
|
|
621
672
|
*/
|
|
622
673
|
postProcess?: (pathOrUrl: string) => Promise<string>;
|
|
674
|
+
/**
|
|
675
|
+
* You can use this prop in order to provide a custom preview URL.
|
|
676
|
+
* Useful when the file's path is different from the original field value
|
|
677
|
+
*/
|
|
678
|
+
previewUrl?: (fileName: string) => string;
|
|
623
679
|
};
|
|
624
680
|
/**
|
|
625
681
|
* @group Entity properties
|
|
@@ -644,7 +700,7 @@ export interface UploadedFileContext {
|
|
|
644
700
|
/**
|
|
645
701
|
* Entity path. E.g. `products/PID/locales`
|
|
646
702
|
*/
|
|
647
|
-
path
|
|
703
|
+
path?: string;
|
|
648
704
|
/**
|
|
649
705
|
* Values of the current entity
|
|
650
706
|
*/
|
|
@@ -19,8 +19,6 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
19
19
|
* Default config for the property.
|
|
20
20
|
* This property or builder will be used as the base values for the resulting property.
|
|
21
21
|
* You can also use a builder function to generate the base property.
|
|
22
|
-
* You can use a builder function to generate the property based on the values or the path.
|
|
23
|
-
* You can also define a custom Field as a React component to be used for this property.
|
|
24
22
|
*/
|
|
25
23
|
property: PropertyOrBuilder<T>;
|
|
26
24
|
/**
|
|
@@ -39,4 +37,4 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
39
37
|
*/
|
|
40
38
|
description?: string;
|
|
41
39
|
};
|
|
42
|
-
export type PropertyConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
|
|
40
|
+
export type PropertyConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "reference_as_string" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
/**
|
|
2
3
|
* Controller to open the side dialog
|
|
3
4
|
* @group Hooks and utilities
|
|
@@ -11,6 +12,11 @@ export interface SideDialogsController {
|
|
|
11
12
|
* List of side panels currently open
|
|
12
13
|
*/
|
|
13
14
|
sidePanels: SideDialogPanelProps[];
|
|
15
|
+
/**
|
|
16
|
+
* Override the current side panels
|
|
17
|
+
* @param panels
|
|
18
|
+
*/
|
|
19
|
+
setSidePanels: (panels: SideDialogPanelProps[]) => void;
|
|
14
20
|
/**
|
|
15
21
|
* Open one or multiple side panels
|
|
16
22
|
* @param props
|
|
@@ -54,4 +60,8 @@ export interface SideDialogPanelProps {
|
|
|
54
60
|
* Callback when the panel is closed
|
|
55
61
|
*/
|
|
56
62
|
onClose?: () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Use this prop to store additional data in the panel
|
|
65
|
+
*/
|
|
66
|
+
additional?: any;
|
|
57
67
|
}
|