@firecms/core 3.0.0-canary.2 → 3.0.0-canary.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +23 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +3 -3
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +17 -4
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +6 -4
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +29 -13
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +8 -5
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +44 -0
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -2
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -6
- package/dist/form/EntityForm.d.ts +45 -69
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -3
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/components/index.d.ts +4 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +17 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +11 -6
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +12 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +22131 -14039
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24420 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +7 -5
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -9
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +37 -3
- package/dist/types/collections.d.ts +86 -24
- package/dist/types/datasource.d.ts +53 -37
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +8 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +6 -0
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +71 -42
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +45 -26
- package/dist/types/permissions.d.ts +8 -4
- package/dist/types/plugins.d.ts +40 -31
- package/dist/types/properties.d.ts +54 -26
- package/dist/types/property_config.d.ts +2 -4
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +6 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +6 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/collections.d.ts +9 -1
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +13 -4
- package/dist/util/index.d.ts +2 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +14 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +3 -3
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +31 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +64 -51
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +126 -40
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
- package/src/components/DeleteEntityDialog.tsx +14 -23
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +56 -39
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +283 -280
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +29 -8
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +58 -50
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +228 -155
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +9 -8
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +218 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +39 -28
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -17
- package/src/components/ReferenceWidget.tsx +26 -16
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +27 -12
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +46 -30
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +96 -48
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +34 -15
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +40 -43
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +8 -5
- package/src/contexts/AuthControllerContext.tsx +1 -1
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +207 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +455 -0
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +87 -18
- package/src/core/FireCMS.tsx +67 -44
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +36 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -7
- package/src/form/EntityForm.tsx +565 -519
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +85 -44
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +44 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +23 -11
- package/src/form/components/StorageUploadProgress.tsx +9 -9
- package/src/form/components/index.tsx +4 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +32 -21
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +54 -45
- package/src/form/field_bindings/BlockFieldBinding.tsx +57 -36
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +21 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
- package/src/form/field_bindings/MapFieldBinding.tsx +82 -65
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -17
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +47 -34
- package/src/form/field_bindings/RepeatFieldBinding.tsx +57 -36
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -46
- package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -27
- package/src/form/field_bindings/TextFieldBinding.tsx +35 -30
- package/src/form/index.tsx +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +15 -26
- package/src/hooks/data/delete.ts +7 -6
- package/src/hooks/data/save.ts +13 -9
- package/src/hooks/data/useCollectionFetch.tsx +4 -4
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +11 -7
- package/src/hooks/index.tsx +6 -1
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +23 -30
- package/src/hooks/useBuildNavigationController.tsx +278 -117
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +41 -9
- package/src/hooks/useReferenceDialog.tsx +2 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -77
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +177 -70
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +19 -26
- package/src/preview/PropertyPreviewProps.tsx +5 -9
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -36
- package/src/preview/components/ReferencePreview.tsx +73 -176
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +236 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +48 -3
- package/src/types/collections.ts +102 -27
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +62 -44
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +16 -2
- package/src/types/entity_actions.tsx +33 -4
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +81 -46
- package/src/types/firecms.tsx +6 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +52 -31
- package/src/types/permissions.ts +10 -5
- package/src/types/plugins.tsx +47 -39
- package/src/types/properties.ts +63 -27
- package/src/types/property_config.tsx +2 -4
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +7 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +9 -0
- package/src/util/builders.ts +10 -8
- package/src/util/collections.ts +22 -0
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +26 -8
- package/src/util/index.ts +2 -0
- package/src/util/join_collections.ts +3 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +13 -6
- package/src/util/navigation_utils.ts +59 -7
- package/src/util/objects.ts +45 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +20 -16
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +45 -5
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +71 -27
- package/src/util/useTraceUpdate.tsx +2 -1
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/EntityView.d.ts +0 -22
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -164
- package/src/core/Scaffold.tsx +0 -281
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/internal/EntityView.tsx +0 -578
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/util/{common.tsx → common.ts} +0 -0
package/src/types/navigation.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { EntityCollection } from "./collections";
|
|
2
3
|
import { EntityReference } from "./entities";
|
|
3
4
|
|
|
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
|
-
export type NavigationController = {
|
|
11
|
+
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* List of the mapped collections in the CMS.
|
|
@@ -22,6 +24,12 @@ export type NavigationController = {
|
|
|
22
24
|
*/
|
|
23
25
|
views?: CMSView[];
|
|
24
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Custom additional views created by the developer, added to the admin
|
|
29
|
+
* navigation
|
|
30
|
+
*/
|
|
31
|
+
adminViews?: CMSView[];
|
|
32
|
+
|
|
25
33
|
/**
|
|
26
34
|
* Configuration for the views that should be displayed at the top
|
|
27
35
|
* level of the navigation (e.g. in the home page or the navigation
|
|
@@ -49,26 +57,27 @@ export type NavigationController = {
|
|
|
49
57
|
* Get the collection configuration for a given path.
|
|
50
58
|
* The collection is resolved from the given path or alias.
|
|
51
59
|
*/
|
|
52
|
-
getCollection:
|
|
53
|
-
|
|
54
|
-
includeUserOverride?: boolean) => EC | undefined;
|
|
60
|
+
getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
|
|
61
|
+
|
|
55
62
|
/**
|
|
56
|
-
* Get the collection configuration from its parent
|
|
63
|
+
* Get the collection configuration from its parent ids.
|
|
57
64
|
*/
|
|
58
|
-
getCollectionFromIds:
|
|
65
|
+
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
59
66
|
|
|
60
67
|
/**
|
|
61
68
|
* Get the collection configuration from its parent path segments.
|
|
62
69
|
*/
|
|
63
|
-
getCollectionFromPaths:
|
|
70
|
+
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
64
71
|
|
|
65
72
|
/**
|
|
66
|
-
* Default path under the navigation routes of the CMS will be created
|
|
73
|
+
* Default path under the navigation routes of the CMS will be created.
|
|
74
|
+
* Defaults to '/'. You may want to change this `basepath` to 'admin' for example.
|
|
67
75
|
*/
|
|
68
76
|
basePath: string;
|
|
69
77
|
|
|
70
78
|
/**
|
|
71
|
-
* Default path under the collection routes of the CMS will be created
|
|
79
|
+
* Default path under the collection routes of the CMS will be created.
|
|
80
|
+
* It defaults to '/c'
|
|
72
81
|
*/
|
|
73
82
|
baseCollectionPath: string;
|
|
74
83
|
|
|
@@ -81,16 +90,6 @@ export type NavigationController = {
|
|
|
81
90
|
*/
|
|
82
91
|
urlPathToDataPath: (cmsPath: string) => string;
|
|
83
92
|
|
|
84
|
-
/**
|
|
85
|
-
* Convert a collection or entity path to a URL path
|
|
86
|
-
* @param path
|
|
87
|
-
*/
|
|
88
|
-
buildCMSUrlPath: (path: string) => string;
|
|
89
|
-
|
|
90
|
-
buildUrlEditCollectionPath: (props: {
|
|
91
|
-
path: string
|
|
92
|
-
}) => string;
|
|
93
|
-
|
|
94
93
|
/**
|
|
95
94
|
* Base url path for the home screen
|
|
96
95
|
*/
|
|
@@ -111,17 +110,11 @@ export type NavigationController = {
|
|
|
111
110
|
buildUrlCollectionPath: (path: string) => string;
|
|
112
111
|
|
|
113
112
|
/**
|
|
114
|
-
* Turn a path with
|
|
113
|
+
* Turn a path with collection ids into a resolved path.
|
|
114
|
+
* The ids (typically used in urls) will be replaced with relative paths (typically used in database paths)
|
|
115
115
|
* @param pathWithAliases
|
|
116
116
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Location used as the base for routes.
|
|
121
|
-
* This is the location that will be used underneath, when the url changes while
|
|
122
|
-
* opening a side dialog
|
|
123
|
-
*/
|
|
124
|
-
baseLocation: string;
|
|
117
|
+
resolveIdsFrom: (pathWithAliases: string) => string;
|
|
125
118
|
|
|
126
119
|
/**
|
|
127
120
|
* Call this method to recalculate the navigation
|
|
@@ -145,8 +138,34 @@ export type NavigationController = {
|
|
|
145
138
|
* @param ids
|
|
146
139
|
*/
|
|
147
140
|
convertIdsToPaths: (ids: string[]) => string[];
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* A function to navigate to a specified route or URL.
|
|
144
|
+
*
|
|
145
|
+
* @param {string} to - The target route or URL to navigate to.
|
|
146
|
+
* @param {NavigateOptions} [options] - Optional configuration settings for navigation, such as replace behavior or state data.
|
|
147
|
+
*/
|
|
148
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
149
|
+
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
export interface NavigateOptions {
|
|
153
|
+
replace?: boolean;
|
|
154
|
+
state?: any;
|
|
155
|
+
preventScrollReset?: boolean;
|
|
156
|
+
relative?: "route" | "path";
|
|
157
|
+
flushSync?: boolean;
|
|
158
|
+
viewTransition?: boolean;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// currently not used, in favor of a single blocker in `FireCMSRoute`
|
|
162
|
+
export type NavigationBlocker = {
|
|
163
|
+
updateBlockListener: (path: string, block: boolean, basePath?: string) => () => void;
|
|
164
|
+
isBlocked: (path: string) => boolean;
|
|
165
|
+
proceed?: () => void;
|
|
166
|
+
reset?: () => void;
|
|
167
|
+
};
|
|
168
|
+
|
|
150
169
|
/**
|
|
151
170
|
* Custom additional views created by the developer, added to the main
|
|
152
171
|
* navigation.
|
|
@@ -174,6 +193,7 @@ export interface CMSView {
|
|
|
174
193
|
* You can use any of the icons in the Material specs:
|
|
175
194
|
* https://fonts.google.com/icons
|
|
176
195
|
* e.g. 'account_tree' or 'person'
|
|
196
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
177
197
|
*/
|
|
178
198
|
icon?: string;
|
|
179
199
|
|
|
@@ -192,6 +212,7 @@ export interface CMSView {
|
|
|
192
212
|
/**
|
|
193
213
|
* Optional field used to group top level navigation entries under a
|
|
194
214
|
* navigation view.
|
|
215
|
+
* This prop is ignored for admin views.
|
|
195
216
|
*/
|
|
196
217
|
group?: string;
|
|
197
218
|
|
|
@@ -201,11 +222,11 @@ export interface TopNavigationEntry {
|
|
|
201
222
|
url: string;
|
|
202
223
|
name: string;
|
|
203
224
|
path: string;
|
|
204
|
-
type: "collection" | "view";
|
|
225
|
+
type: "collection" | "view" | "admin";
|
|
205
226
|
collection?: EntityCollection;
|
|
206
|
-
view
|
|
227
|
+
view?: CMSView;
|
|
207
228
|
description?: string;
|
|
208
|
-
group
|
|
229
|
+
group: string;
|
|
209
230
|
}
|
|
210
231
|
|
|
211
232
|
export type TopNavigationResult = {
|
package/src/types/permissions.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface Permissions {
|
|
|
32
32
|
* Props passed to a {@link PermissionsBuilder}
|
|
33
33
|
* @group Models
|
|
34
34
|
*/
|
|
35
|
-
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection,
|
|
35
|
+
export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
|
|
36
36
|
/**
|
|
37
37
|
* Entity being edited, might be null in some cases, when the operation
|
|
38
38
|
* refers to the collection.
|
|
@@ -41,6 +41,11 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
41
41
|
*/
|
|
42
42
|
entity: Entity<M> | null;
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Path of the collection e.g. 'products/12345/locales'
|
|
46
|
+
*/
|
|
47
|
+
path: string;
|
|
48
|
+
|
|
44
49
|
/**
|
|
45
50
|
* Path segments of the collection e.g. ['products', 'locales']
|
|
46
51
|
*/
|
|
@@ -49,7 +54,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
49
54
|
/**
|
|
50
55
|
* Logged in user
|
|
51
56
|
*/
|
|
52
|
-
user:
|
|
57
|
+
user: USER | null;
|
|
53
58
|
|
|
54
59
|
/**
|
|
55
60
|
* Collection these permissions apply to
|
|
@@ -59,7 +64,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
59
64
|
/**
|
|
60
65
|
* Auth controller
|
|
61
66
|
*/
|
|
62
|
-
authController: AuthController<
|
|
67
|
+
authController: AuthController<USER>;
|
|
63
68
|
}
|
|
64
69
|
|
|
65
70
|
/**
|
|
@@ -67,10 +72,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
67
72
|
* based on the logged user or collection.
|
|
68
73
|
* @group Models
|
|
69
74
|
*/
|
|
70
|
-
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection,
|
|
75
|
+
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> =
|
|
71
76
|
(({
|
|
72
77
|
pathSegments,
|
|
73
78
|
user,
|
|
74
79
|
collection,
|
|
75
80
|
authController
|
|
76
|
-
}: PermissionsBuilderProps<EC,
|
|
81
|
+
}: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
|
package/src/types/plugins.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
2
|
|
|
3
3
|
import { FireCMSContext } from "./firecms_context";
|
|
4
|
-
import { CollectionActionsProps, EntityCollection } from "./collections";
|
|
4
|
+
import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
|
|
5
5
|
import { User } from "./user";
|
|
6
6
|
import { FieldProps, FormContext } from "./fields";
|
|
7
7
|
import { CMSType, Property } from "./properties";
|
|
@@ -13,12 +13,12 @@ import { ResolvedProperty } from "./resolved_entities";
|
|
|
13
13
|
* NOTE: This is a work in progress and the API is not stable yet.
|
|
14
14
|
* @group Core
|
|
15
15
|
*/
|
|
16
|
-
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
|
|
16
|
+
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Key of the plugin. This is used to identify the plugin in the CMS.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
key: string;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* If this flag is set to true, no content will be shown in the CMS
|
|
@@ -26,31 +26,6 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
26
26
|
*/
|
|
27
27
|
loading?: boolean;
|
|
28
28
|
|
|
29
|
-
collections?: {
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Use this component to add custom actions to the entity collections
|
|
33
|
-
* toolbar.
|
|
34
|
-
*/
|
|
35
|
-
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
36
|
-
|
|
37
|
-
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
form?: {
|
|
42
|
-
provider?: {
|
|
43
|
-
Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
|
|
44
|
-
props?: FORM_PROPS;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
48
|
-
|
|
49
|
-
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
50
|
-
|
|
51
|
-
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
29
|
/**
|
|
55
30
|
* You can use this prop to add higher order components to the CMS.
|
|
56
31
|
* The components will be added to the root of the CMS, so any component
|
|
@@ -113,6 +88,23 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
113
88
|
|
|
114
89
|
collectionView?: {
|
|
115
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Use this component to add custom actions to the entity collections
|
|
93
|
+
* toolbar.
|
|
94
|
+
*/
|
|
95
|
+
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
96
|
+
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
97
|
+
|
|
98
|
+
CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
|
|
99
|
+
collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
|
|
100
|
+
|
|
101
|
+
blockSearch?: (props: {
|
|
102
|
+
context: FireCMSContext,
|
|
103
|
+
path: string,
|
|
104
|
+
collection: EC,
|
|
105
|
+
parentCollectionIds?: string[]
|
|
106
|
+
}) => boolean;
|
|
107
|
+
|
|
116
108
|
showTextSearchBar?: (props: {
|
|
117
109
|
context: FireCMSContext,
|
|
118
110
|
path: string,
|
|
@@ -138,6 +130,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
138
130
|
parentCollectionIds: string[],
|
|
139
131
|
onHover: boolean,
|
|
140
132
|
collection: EC;
|
|
133
|
+
tableController: EntityTableController;
|
|
141
134
|
}>;
|
|
142
135
|
|
|
143
136
|
/**
|
|
@@ -148,9 +141,23 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
148
141
|
fullPath: string,
|
|
149
142
|
parentCollectionIds: string[],
|
|
150
143
|
collection: EC;
|
|
144
|
+
tableController: EntityTableController;
|
|
151
145
|
}>;
|
|
152
146
|
}
|
|
153
147
|
|
|
148
|
+
form?: {
|
|
149
|
+
provider?: {
|
|
150
|
+
Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
|
|
151
|
+
props?: FORM_PROPS;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
155
|
+
|
|
156
|
+
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
157
|
+
|
|
158
|
+
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
159
|
+
}
|
|
160
|
+
|
|
154
161
|
}
|
|
155
162
|
|
|
156
163
|
/**
|
|
@@ -159,7 +166,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
159
166
|
*
|
|
160
167
|
* @group Models
|
|
161
168
|
*/
|
|
162
|
-
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any,
|
|
169
|
+
export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
|
|
163
170
|
/**
|
|
164
171
|
* Collection path of this entity. This is the full path, like
|
|
165
172
|
* `users/1234/addresses`
|
|
@@ -174,20 +181,21 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
|
|
|
174
181
|
/**
|
|
175
182
|
* Context of the app status
|
|
176
183
|
*/
|
|
177
|
-
context: FireCMSContext<
|
|
184
|
+
context: FireCMSContext<USER>;
|
|
178
185
|
|
|
179
186
|
extraProps?: EP;
|
|
180
187
|
|
|
181
188
|
}
|
|
182
189
|
|
|
183
|
-
export interface PluginFormActionProps<
|
|
190
|
+
export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
|
|
184
191
|
entityId?: string;
|
|
185
192
|
path: string;
|
|
186
193
|
status: EntityStatus;
|
|
187
194
|
collection: EC;
|
|
188
195
|
formContext?: FormContext<any>;
|
|
189
|
-
context: FireCMSContext<
|
|
196
|
+
context: FireCMSContext<USER>;
|
|
190
197
|
currentEntityId?: string;
|
|
198
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
191
199
|
}
|
|
192
200
|
|
|
193
201
|
export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
|
|
@@ -196,15 +204,15 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
|
|
|
196
204
|
property: Property<T> | ResolvedProperty<T>;
|
|
197
205
|
Field: React.ComponentType<FieldProps<T, any, M>>;
|
|
198
206
|
plugin: FireCMSPlugin;
|
|
199
|
-
path
|
|
200
|
-
collection
|
|
207
|
+
path?: string;
|
|
208
|
+
collection?: EC;
|
|
201
209
|
};
|
|
202
210
|
|
|
203
|
-
export interface PluginGenericProps<
|
|
204
|
-
context: FireCMSContext<
|
|
211
|
+
export interface PluginGenericProps<USER extends User = User> {
|
|
212
|
+
context: FireCMSContext<USER>;
|
|
205
213
|
}
|
|
206
214
|
|
|
207
|
-
export interface PluginHomePageAdditionalCardsProps<
|
|
215
|
+
export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
|
|
208
216
|
group?: string;
|
|
209
|
-
context: FireCMSContext<
|
|
217
|
+
context: FireCMSContext<USER>;
|
|
210
218
|
}
|
package/src/types/properties.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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";
|
|
@@ -15,9 +15,10 @@ export type DataType<T extends CMSType = CMSType> =
|
|
|
15
15
|
T extends boolean ? "boolean" :
|
|
16
16
|
T extends Date ? "date" :
|
|
17
17
|
T extends GeoPoint ? "geopoint" :
|
|
18
|
-
T extends
|
|
19
|
-
T extends
|
|
20
|
-
T extends
|
|
18
|
+
T extends Vector ? "vector" :
|
|
19
|
+
T extends EntityReference ? "reference" :
|
|
20
|
+
T extends Array<any> ? "array" :
|
|
21
|
+
T extends Record<string, any> ? "map" : never;
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* @group Entity properties
|
|
@@ -48,7 +49,7 @@ export type AnyProperty =
|
|
|
48
49
|
/**
|
|
49
50
|
* @group Entity properties
|
|
50
51
|
*/
|
|
51
|
-
export type Property<T extends CMSType =
|
|
52
|
+
export type Property<T extends CMSType = any> =
|
|
52
53
|
T extends string ? StringProperty :
|
|
53
54
|
T extends number ? NumberProperty :
|
|
54
55
|
T extends boolean ? BooleanProperty :
|
|
@@ -148,13 +149,19 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
148
149
|
/**
|
|
149
150
|
* This value will be set by default for new entities.
|
|
150
151
|
*/
|
|
151
|
-
defaultValue?: T;
|
|
152
|
+
defaultValue?: T | null;
|
|
152
153
|
|
|
153
154
|
/**
|
|
154
155
|
* Should this property be editable. If set to true, the user will be able to modify the property and
|
|
155
156
|
* save the new config. The saved config will then become the source of truth.
|
|
156
157
|
*/
|
|
157
158
|
editable?: boolean;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* A number between 0 and 100 that indicates the width of the field in the form view.
|
|
162
|
+
* It defaults to 100, but you can set it to 50 to have two fields in the same row.
|
|
163
|
+
*/
|
|
164
|
+
widthPercentage?: number;
|
|
158
165
|
}
|
|
159
166
|
|
|
160
167
|
/**
|
|
@@ -276,6 +283,7 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
|
|
|
276
283
|
values,
|
|
277
284
|
previousValues,
|
|
278
285
|
propertyValue,
|
|
286
|
+
index,
|
|
279
287
|
path,
|
|
280
288
|
entityId
|
|
281
289
|
}: PropertyBuilderProps<M>) => Property<T> | null;
|
|
@@ -283,14 +291,14 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
|
|
|
283
291
|
/**
|
|
284
292
|
* @group Entity properties
|
|
285
293
|
*/
|
|
286
|
-
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> =
|
|
294
|
+
export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any> =
|
|
287
295
|
Property<T>
|
|
288
296
|
| PropertyBuilder<T, M>;
|
|
289
297
|
|
|
290
298
|
/**
|
|
291
299
|
* @group Entity properties
|
|
292
300
|
*/
|
|
293
|
-
export type PropertiesOrBuilders<M extends Record<string, any> =
|
|
301
|
+
export type PropertiesOrBuilders<M extends Record<string, any> = any> =
|
|
294
302
|
{
|
|
295
303
|
[k in keyof M]: PropertyOrBuilder<M[k], M>;
|
|
296
304
|
};
|
|
@@ -369,7 +377,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
369
377
|
|
|
370
378
|
/**
|
|
371
379
|
* You can specify a `Storage` configuration. It is used to
|
|
372
|
-
* indicate that this string refers to a path in
|
|
380
|
+
* indicate that this string refers to a path in your storage provider.
|
|
373
381
|
*/
|
|
374
382
|
storage?: StorageConfig;
|
|
375
383
|
|
|
@@ -403,7 +411,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
403
411
|
/**
|
|
404
412
|
* @group Entity properties
|
|
405
413
|
*/
|
|
406
|
-
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType =
|
|
414
|
+
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
|
|
407
415
|
|
|
408
416
|
dataType: "array";
|
|
409
417
|
|
|
@@ -467,6 +475,12 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
|
|
|
467
475
|
*/
|
|
468
476
|
expanded?: boolean;
|
|
469
477
|
|
|
478
|
+
/**
|
|
479
|
+
* Display the child properties directly, without being wrapped in an
|
|
480
|
+
* extendable panel.
|
|
481
|
+
*/
|
|
482
|
+
minimalistView?: boolean;
|
|
483
|
+
|
|
470
484
|
}
|
|
471
485
|
|
|
472
486
|
/**
|
|
@@ -515,6 +529,12 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
|
|
|
515
529
|
*/
|
|
516
530
|
spreadChildren?: boolean;
|
|
517
531
|
|
|
532
|
+
/**
|
|
533
|
+
* Display the child properties directly, without being wrapped in an
|
|
534
|
+
* extendable panel. Note that this will also hide the title of this property.
|
|
535
|
+
*/
|
|
536
|
+
minimalistView?: boolean;
|
|
537
|
+
|
|
518
538
|
/**
|
|
519
539
|
* Should the field be initially expanded. Defaults to `true`
|
|
520
540
|
*/
|
|
@@ -608,6 +628,16 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
|
|
|
608
628
|
*/
|
|
609
629
|
previewProperties?: string[];
|
|
610
630
|
|
|
631
|
+
/**
|
|
632
|
+
* Should the reference include the ID of the entity. Defaults to `true`
|
|
633
|
+
*/
|
|
634
|
+
includeId?: boolean;
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Should the reference include a link to the entity (open the entity details). Defaults to `true`
|
|
638
|
+
*/
|
|
639
|
+
includeEntityLink?: boolean;
|
|
640
|
+
|
|
611
641
|
}
|
|
612
642
|
|
|
613
643
|
/**
|
|
@@ -695,7 +725,7 @@ export interface ArrayPropertyValidationSchema extends PropertyValidationSchema
|
|
|
695
725
|
* Additional configuration related to Storage related fields
|
|
696
726
|
* @group Entity properties
|
|
697
727
|
*/
|
|
698
|
-
export
|
|
728
|
+
export type StorageConfig = {
|
|
699
729
|
|
|
700
730
|
/**
|
|
701
731
|
* File MIME types that can be uploaded to this reference. Don't specify for
|
|
@@ -722,13 +752,13 @@ export interface StorageConfig {
|
|
|
722
752
|
* You can use this prop to customize the uploaded filename.
|
|
723
753
|
* You can use a function as a callback or a string where you
|
|
724
754
|
* specify some placeholders that get replaced with the corresponding values.
|
|
725
|
-
* - {file} - Full file name
|
|
726
|
-
* - {file.name} - Name of the file without extension
|
|
727
|
-
* - {file.ext} - Extension of the file
|
|
728
|
-
* - {rand} - Random value used to avoid name collisions
|
|
729
|
-
* - {entityId} - ID of the entity
|
|
730
|
-
* - {propertyKey} - ID of this property
|
|
731
|
-
* - {path} - Path of this entity
|
|
755
|
+
* - `{file}` - Full file name
|
|
756
|
+
* - `{file.name}` - Name of the file without extension
|
|
757
|
+
* - `{file.ext}` - Extension of the file
|
|
758
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
759
|
+
* - `{entityId}` - ID of the entity
|
|
760
|
+
* - `{propertyKey}` - ID of this property
|
|
761
|
+
* - `{path}` - Path of this entity
|
|
732
762
|
*
|
|
733
763
|
* @param context
|
|
734
764
|
*/
|
|
@@ -739,13 +769,13 @@ export interface StorageConfig {
|
|
|
739
769
|
*
|
|
740
770
|
* You can use a function as a callback or a string where you
|
|
741
771
|
* specify some placeholders that get replaced with the corresponding values.
|
|
742
|
-
* - {file} - Full file name
|
|
743
|
-
* - {file.name} - Name of the file without extension
|
|
744
|
-
* - {file.ext} - Extension of the file
|
|
745
|
-
* - {rand} - Random value used to avoid name collisions
|
|
746
|
-
* - {entityId} - ID of the entity
|
|
747
|
-
* - {propertyKey} - ID of this property
|
|
748
|
-
* - {path} - Path of this entity
|
|
772
|
+
* - `{file}` - Full file name
|
|
773
|
+
* - `{file.name}` - Name of the file without extension
|
|
774
|
+
* - `{file.ext}` - Extension of the file
|
|
775
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
776
|
+
* - `{entityId}` - ID of the entity
|
|
777
|
+
* - `{propertyKey}` - ID of this property
|
|
778
|
+
* - `{path}` - Path of this entity
|
|
749
779
|
*/
|
|
750
780
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
751
781
|
|
|
@@ -770,7 +800,13 @@ export interface StorageConfig {
|
|
|
770
800
|
* Postprocess the saved value (storage path or URL)
|
|
771
801
|
* after it has been resolved.
|
|
772
802
|
*/
|
|
773
|
-
postProcess?: (pathOrUrl: string) => Promise<string
|
|
803
|
+
postProcess?: (pathOrUrl: string) => Promise<string>;
|
|
804
|
+
|
|
805
|
+
/**
|
|
806
|
+
* You can use this prop in order to provide a custom preview URL.
|
|
807
|
+
* Useful when the file's path is different from the original field value
|
|
808
|
+
*/
|
|
809
|
+
previewUrl?: (fileName: string) => string;
|
|
774
810
|
}
|
|
775
811
|
|
|
776
812
|
/**
|
|
@@ -800,7 +836,7 @@ export interface UploadedFileContext {
|
|
|
800
836
|
/**
|
|
801
837
|
* Entity path. E.g. `products/PID/locales`
|
|
802
838
|
*/
|
|
803
|
-
path
|
|
839
|
+
path?: string;
|
|
804
840
|
|
|
805
841
|
/**
|
|
806
842
|
* Values of the current entity
|
|
@@ -11,7 +11,7 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
11
11
|
/**
|
|
12
12
|
* Key used to identify this property config.
|
|
13
13
|
*/
|
|
14
|
-
key: string
|
|
14
|
+
key: PropertyConfigId | string;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Name of this field type.
|
|
@@ -23,8 +23,6 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
23
23
|
* Default config for the property.
|
|
24
24
|
* This property or builder will be used as the base values for the resulting property.
|
|
25
25
|
* You can also use a builder function to generate the base property.
|
|
26
|
-
* You can use a builder function to generate the property based on the values or the path.
|
|
27
|
-
* You can also define a custom Field as a React component to be used for this property.
|
|
28
26
|
*/
|
|
29
27
|
property: PropertyOrBuilder<T>;
|
|
30
28
|
|
|
@@ -48,7 +46,7 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
48
46
|
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
export type
|
|
49
|
+
export type PropertyConfigId =
|
|
52
50
|
"text_field" |
|
|
53
51
|
"multiline" |
|
|
54
52
|
"markdown" |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Permissions } from "../index";
|
|
2
|
+
|
|
3
|
+
export type Role = {
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* ID of the role
|
|
7
|
+
*/
|
|
8
|
+
id: string;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Name of the role
|
|
12
|
+
*/
|
|
13
|
+
name: string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* If this flag is true, the user can perform any action
|
|
17
|
+
*/
|
|
18
|
+
isAdmin?: boolean;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Default permissions for all collections for this role.
|
|
22
|
+
* You can override this values at the collection level using
|
|
23
|
+
* {@link collectionPermissions}
|
|
24
|
+
*/
|
|
25
|
+
defaultPermissions?: Permissions;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Record of stripped collection ids to their permissions.
|
|
29
|
+
* @see stripCollectionPath
|
|
30
|
+
*/
|
|
31
|
+
collectionPermissions?: Record<string, Permissions>;
|
|
32
|
+
|
|
33
|
+
config?: {
|
|
34
|
+
|
|
35
|
+
createCollections?: boolean;
|
|
36
|
+
|
|
37
|
+
editCollections?: boolean | "own";
|
|
38
|
+
|
|
39
|
+
deleteCollections?: boolean | "own";
|
|
40
|
+
}
|
|
41
|
+
}
|