@firecms/core 3.0.0-canary.27 → 3.0.0-canary.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +31 -12
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +14 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +10 -7
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +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 +8 -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 +43 -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 +37 -64
- package/dist/form/EntityFormActions.d.ts +21 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/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 +2 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -13
- package/dist/hooks/useCollapsedGroups.d.ts +9 -0
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/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 +23154 -13912
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +25917 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -3
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/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 +112 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +72 -8
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +74 -42
- package/dist/types/firecms.d.ts +16 -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 +56 -13
- package/dist/types/properties.d.ts +81 -25
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/roles.d.ts +3 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +14 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +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 +10 -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 +42 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +69 -52
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +65 -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 +34 -39
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +235 -118
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +83 -62
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +512 -157
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +599 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +117 -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 +23 -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 +93 -24
- package/src/components/UnsavedChangesDialog.tsx +46 -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 +64 -44
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +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 +435 -470
- package/src/core/EntityEditViewFormActions.tsx +329 -0
- package/src/core/EntitySidePanel.tsx +88 -21
- package/src/core/FireCMS.tsx +74 -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 +620 -534
- package/src/form/EntityFormActions.tsx +211 -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 +159 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/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 +2 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +440 -119
- package/src/hooks/useCollapsedGroups.ts +64 -0
- 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 +204 -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 +26 -36
- 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 +134 -30
- package/src/types/customization_controller.tsx +9 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +86 -10
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +85 -46
- package/src/types/firecms.tsx +18 -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 +66 -15
- package/src/types/properties.ts +96 -27
- package/src/types/property_config.tsx +1 -2
- package/src/types/roles.ts +3 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +16 -1
- package/src/types/storage.ts +83 -1
- package/src/types/user.ts +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 +10 -7
- 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 +9 -2
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +33 -12
- 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 +122 -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/src/core/FireCMS.tsx
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import React, { useMemo } from "react";
|
|
4
|
+
import { CenteredView, Typography } from "@firecms/ui";
|
|
5
|
+
import { CustomizationController, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
|
|
6
|
+
import { AuthControllerContext } from "../contexts";
|
|
5
7
|
import { useBuildSideEntityController } from "../internal/useBuildSideEntityController";
|
|
6
|
-
import { useCustomizationController, useFireCMSContext
|
|
8
|
+
import { useCustomizationController, useFireCMSContext } from "../hooks";
|
|
7
9
|
import { useBuildSideDialogsController } from "../internal/useBuildSideDialogsController";
|
|
8
10
|
import { ErrorView } from "../components";
|
|
9
11
|
import { StorageSourceContext } from "../contexts/StorageSourceContext";
|
|
@@ -12,14 +14,12 @@ import { DataSourceContext } from "../contexts/DataSourceContext";
|
|
|
12
14
|
import { SideEntityControllerContext } from "../contexts/SideEntityControllerContext";
|
|
13
15
|
import { NavigationContext } from "../contexts/NavigationContext";
|
|
14
16
|
import { SideDialogsControllerContext } from "../contexts/SideDialogsControllerContext";
|
|
15
|
-
import { useLocaleConfig } from "../internal/useLocaleConfig";
|
|
16
|
-
import { CenteredView, Typography } from "@firecms/ui";
|
|
17
17
|
import { DialogsProvider } from "../contexts/DialogsProvider";
|
|
18
18
|
import { useBuildDataSource } from "../internal/useBuildDataSource";
|
|
19
|
-
import { useBuildCustomizationController } from "../internal/useBuildCustomizationController";
|
|
20
19
|
import { CustomizationControllerContext } from "../contexts/CustomizationControllerContext";
|
|
21
20
|
import { AnalyticsContext } from "../contexts/AnalyticsContext";
|
|
22
21
|
import { useProjectLog } from "../hooks/useProjectLog";
|
|
22
|
+
import { BreadcrumbsProvider } from "../contexts/BreacrumbsContext";
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* If you are using independent components of the CMS
|
|
@@ -30,12 +30,11 @@ import { useProjectLog } from "../hooks/useProjectLog";
|
|
|
30
30
|
*
|
|
31
31
|
* You only need to use this component if you are building a custom app.
|
|
32
32
|
*
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
* @group Core
|
|
35
35
|
*/
|
|
36
|
-
export function FireCMS<
|
|
36
|
+
export function FireCMS<USER extends User>(props: FireCMSProps<USER>) {
|
|
37
37
|
|
|
38
|
-
const modeController = useModeController();
|
|
39
38
|
const {
|
|
40
39
|
children,
|
|
41
40
|
entityLinkBuilder,
|
|
@@ -45,47 +44,64 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
45
44
|
authController,
|
|
46
45
|
storageSource,
|
|
47
46
|
dataSourceDelegate,
|
|
48
|
-
plugins,
|
|
47
|
+
plugins: pluginsProp,
|
|
49
48
|
onAnalyticsEvent,
|
|
50
49
|
propertyConfigs,
|
|
51
50
|
entityViews,
|
|
51
|
+
entityActions,
|
|
52
52
|
components,
|
|
53
53
|
navigationController,
|
|
54
|
+
apiKey
|
|
54
55
|
} = props;
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
if (pluginsProp) {
|
|
58
|
+
console.warn("The `plugins` prop is deprecated in the FireCMS component. You should pass your plugins to `useBuildNavigationController` instead.");
|
|
59
|
+
}
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
* Controller in charge of fetching and persisting data
|
|
60
|
-
*/
|
|
61
|
-
const dataSource = useBuildDataSource({
|
|
62
|
-
delegate: dataSourceDelegate,
|
|
63
|
-
propertyConfigs,
|
|
64
|
-
navigationController
|
|
65
|
-
});
|
|
61
|
+
const plugins = navigationController.plugins ?? pluginsProp;
|
|
66
62
|
|
|
67
63
|
const sideDialogsController = useBuildSideDialogsController();
|
|
68
|
-
const sideEntityController = useBuildSideEntityController(navigationController, sideDialogsController);
|
|
64
|
+
const sideEntityController = useBuildSideEntityController(navigationController, sideDialogsController, authController);
|
|
69
65
|
|
|
70
66
|
const pluginsLoading = plugins?.some(p => p.loading) ?? false;
|
|
71
67
|
|
|
72
68
|
const loading = authController.initialLoading || navigationController.loading || pluginsLoading;
|
|
73
69
|
|
|
74
|
-
const customizationController =
|
|
70
|
+
const customizationController: CustomizationController = {
|
|
75
71
|
dateTimeFormat,
|
|
76
72
|
locale,
|
|
77
73
|
entityLinkBuilder,
|
|
78
74
|
plugins,
|
|
79
75
|
entityViews: entityViews ?? [],
|
|
76
|
+
entityActions: entityActions ?? [],
|
|
80
77
|
propertyConfigs: propertyConfigs ?? {},
|
|
81
78
|
components
|
|
82
|
-
}
|
|
79
|
+
};
|
|
83
80
|
|
|
84
81
|
const analyticsController = useMemo(() => ({
|
|
85
82
|
onAnalyticsEvent
|
|
86
83
|
}), []);
|
|
87
84
|
|
|
88
|
-
const accessResponse = useProjectLog(
|
|
85
|
+
const accessResponse = useProjectLog({
|
|
86
|
+
apiKey,
|
|
87
|
+
authController,
|
|
88
|
+
dataSourceDelegate,
|
|
89
|
+
plugins
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Controller in charge of fetching and persisting data
|
|
94
|
+
*/
|
|
95
|
+
const dataSource = useBuildDataSource({
|
|
96
|
+
delegate: dataSourceDelegate,
|
|
97
|
+
propertyConfigs,
|
|
98
|
+
navigationController,
|
|
99
|
+
authController
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
if (accessResponse?.message) {
|
|
103
|
+
console.warn(accessResponse.message);
|
|
104
|
+
}
|
|
89
105
|
|
|
90
106
|
if (navigationController.navigationLoadingError) {
|
|
91
107
|
return (
|
|
@@ -109,54 +125,54 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
109
125
|
|
|
110
126
|
if (accessResponse?.blocked) {
|
|
111
127
|
return (
|
|
112
|
-
<CenteredView maxWidth={"md"} fullScreen={true}>
|
|
113
|
-
<Typography variant={"h4"}>
|
|
114
|
-
|
|
128
|
+
<CenteredView maxWidth={"md"} fullScreen={true} className={"flex flex-col gap-2"}>
|
|
129
|
+
<Typography variant={"h4"} gutterBottom>
|
|
130
|
+
License needed
|
|
115
131
|
</Typography>
|
|
116
132
|
<Typography>
|
|
117
|
-
|
|
133
|
+
You need a valid license to use FireCMS PRO. Please reach out at <a
|
|
118
134
|
href={"mailto:hello@firecms.co"}>hello@firecms.co</a> for more information.
|
|
119
135
|
</Typography>
|
|
120
136
|
{accessResponse?.message &&
|
|
121
|
-
<Typography>
|
|
137
|
+
<Typography>{accessResponse?.message}</Typography>}
|
|
122
138
|
</CenteredView>
|
|
123
139
|
);
|
|
124
140
|
}
|
|
125
141
|
|
|
126
142
|
return (
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<
|
|
143
|
+
<AnalyticsContext.Provider value={analyticsController}>
|
|
144
|
+
<CustomizationControllerContext.Provider value={customizationController}>
|
|
145
|
+
<UserConfigurationPersistenceContext.Provider
|
|
146
|
+
value={userConfigPersistence}>
|
|
147
|
+
<StorageSourceContext.Provider
|
|
148
|
+
value={storageSource}>
|
|
149
|
+
<DataSourceContext.Provider
|
|
150
|
+
value={dataSource}>
|
|
151
|
+
<AuthControllerContext.Provider
|
|
152
|
+
value={authController}>
|
|
153
|
+
<SideDialogsControllerContext.Provider
|
|
154
|
+
value={sideDialogsController}>
|
|
155
|
+
<SideEntityControllerContext.Provider
|
|
156
|
+
value={sideEntityController}>
|
|
157
|
+
<NavigationContext.Provider
|
|
158
|
+
value={navigationController}>
|
|
159
|
+
<DialogsProvider>
|
|
160
|
+
<BreadcrumbsProvider>
|
|
145
161
|
<FireCMSInternal
|
|
146
162
|
loading={loading}>
|
|
147
163
|
{children}
|
|
148
164
|
</FireCMSInternal>
|
|
149
|
-
</
|
|
150
|
-
</
|
|
151
|
-
</
|
|
152
|
-
</
|
|
153
|
-
</
|
|
154
|
-
</
|
|
155
|
-
</
|
|
156
|
-
</
|
|
157
|
-
</
|
|
158
|
-
</
|
|
159
|
-
</
|
|
165
|
+
</BreadcrumbsProvider>
|
|
166
|
+
</DialogsProvider>
|
|
167
|
+
</NavigationContext.Provider>
|
|
168
|
+
</SideEntityControllerContext.Provider>
|
|
169
|
+
</SideDialogsControllerContext.Provider>
|
|
170
|
+
</AuthControllerContext.Provider>
|
|
171
|
+
</DataSourceContext.Provider>
|
|
172
|
+
</StorageSourceContext.Provider>
|
|
173
|
+
</UserConfigurationPersistenceContext.Provider>
|
|
174
|
+
</CustomizationControllerContext.Provider>
|
|
175
|
+
</AnalyticsContext.Provider>
|
|
160
176
|
);
|
|
161
177
|
|
|
162
178
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createBrowserRouter, RouterProvider } from "react-router-dom"
|
|
2
|
+
import { removeInitialAndTrailingSlashes } from "../util";
|
|
3
|
+
|
|
4
|
+
export function FireCMSRouter({
|
|
5
|
+
children,
|
|
6
|
+
basePath
|
|
7
|
+
}: {
|
|
8
|
+
children: React.ReactNode,
|
|
9
|
+
basePath?: string;
|
|
10
|
+
}) {
|
|
11
|
+
return <RouterProvider router={createBrowserRouter([
|
|
12
|
+
{
|
|
13
|
+
path: basePath ? `${removeInitialAndTrailingSlashes(basePath)}/*` : "/*",
|
|
14
|
+
element: children
|
|
15
|
+
}
|
|
16
|
+
])}/>;
|
|
17
|
+
}
|
|
@@ -2,9 +2,11 @@ import React from "react";
|
|
|
2
2
|
|
|
3
3
|
import { Route, Routes, useLocation } from "react-router-dom";
|
|
4
4
|
import { CMSView } from "../types";
|
|
5
|
-
import { DefaultHomePage,
|
|
5
|
+
import { DefaultHomePage, ErrorBoundary, NotFoundPage } from "../components";
|
|
6
6
|
import { useNavigationController } from "../hooks";
|
|
7
|
-
import {
|
|
7
|
+
import { FireCMSRoute } from "../routes/FireCMSRoute";
|
|
8
|
+
import { CustomCMSRoute } from "../routes/CustomCMSRoute";
|
|
9
|
+
import { HomePageRoute } from "../routes/HomePageRoute";
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* @group Components
|
|
@@ -13,9 +15,9 @@ export type NavigationRoutesProps = {
|
|
|
13
15
|
/**
|
|
14
16
|
* In case you need to override the home page
|
|
15
17
|
*/
|
|
16
|
-
|
|
18
|
+
homePage?: React.ReactNode;
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
children?: React.ReactNode | React.ReactNode[]
|
|
19
21
|
|
|
20
22
|
};
|
|
21
23
|
|
|
@@ -25,14 +27,12 @@ export type NavigationRoutesProps = {
|
|
|
25
27
|
* or the home route) related to a {@link NavigationController}.
|
|
26
28
|
* This component needs a parent {@link FireCMS}
|
|
27
29
|
*
|
|
28
|
-
* @constructor
|
|
29
30
|
* @group Components
|
|
30
31
|
*/
|
|
31
|
-
|
|
32
32
|
export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
33
33
|
function NavigationRoutes({
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
homePage = <DefaultHomePage/>,
|
|
35
|
+
children
|
|
36
36
|
}: NavigationRoutesProps) {
|
|
37
37
|
|
|
38
38
|
const location = useLocation();
|
|
@@ -68,43 +68,33 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<ErrorBoundary>
|
|
82
|
-
<EntityCollectionView
|
|
83
|
-
key={`collection_view_${collection.id ?? collection.path}`}
|
|
84
|
-
isSubCollection={false}
|
|
85
|
-
parentCollectionIds={[]}
|
|
86
|
-
fullPath={collection.id ?? collection.path}
|
|
87
|
-
{...collection}
|
|
88
|
-
Actions={toArray(collection.Actions)}/>
|
|
89
|
-
</ErrorBoundary>
|
|
90
|
-
}/>;
|
|
91
|
-
}
|
|
92
|
-
);
|
|
71
|
+
const collectionUrlPath = navigation.buildUrlCollectionPath("");
|
|
72
|
+
const collectionRoute = (
|
|
73
|
+
<Route path={collectionUrlPath + "/*"}
|
|
74
|
+
key={`navigation_entity`}
|
|
75
|
+
element={
|
|
76
|
+
<ErrorBoundary>
|
|
77
|
+
<FireCMSRoute/>
|
|
78
|
+
</ErrorBoundary>
|
|
79
|
+
}/>
|
|
80
|
+
);
|
|
93
81
|
|
|
94
82
|
const homeRoute = (
|
|
95
83
|
<Route path={"/"}
|
|
96
|
-
element={<
|
|
84
|
+
element={<HomePageRoute>{homePage}</HomePageRoute>}/>
|
|
97
85
|
);
|
|
98
86
|
|
|
99
|
-
const notFoundRoute =
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
87
|
+
const notFoundRoute = (
|
|
88
|
+
<Route path={"*"}
|
|
89
|
+
element={
|
|
90
|
+
<NotFoundPage/>
|
|
91
|
+
}/>
|
|
92
|
+
);
|
|
103
93
|
|
|
104
94
|
return (
|
|
105
95
|
<Routes location={baseLocation}>
|
|
106
96
|
|
|
107
|
-
{
|
|
97
|
+
{collectionRoute}
|
|
108
98
|
|
|
109
99
|
{cmsViews}
|
|
110
100
|
|
|
@@ -112,7 +102,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
112
102
|
|
|
113
103
|
{notFoundRoute}
|
|
114
104
|
|
|
115
|
-
{
|
|
105
|
+
{children}
|
|
116
106
|
|
|
117
107
|
</Routes>
|
|
118
108
|
);
|
|
@@ -122,6 +112,6 @@ const buildCMSViewRoute = (path: string, cmsView: CMSView) => {
|
|
|
122
112
|
return <Route
|
|
123
113
|
key={"navigation_view_" + path}
|
|
124
114
|
path={path}
|
|
125
|
-
element={cmsView
|
|
115
|
+
element={<CustomCMSRoute cmsView={cmsView}/>}
|
|
126
116
|
/>;
|
|
127
117
|
};
|
package/src/core/SideDialogs.tsx
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import React, { useContext, useEffect, useState } from "react";
|
|
1
|
+
import React, { useCallback, useContext, useEffect, useRef, useState } from "react";
|
|
2
2
|
import { useSideDialogsController } from "../hooks";
|
|
3
3
|
import { SideDialogPanelProps } from "../types";
|
|
4
4
|
import { Sheet } from "@firecms/ui";
|
|
5
|
-
import {
|
|
5
|
+
import { useNavigationUnsavedChangesDialog } from "../internal/useUnsavedChangesDialog";
|
|
6
6
|
import { ErrorBoundary } from "../components";
|
|
7
|
+
import { UnsavedChangesDialog } from "../components/UnsavedChangesDialog";
|
|
7
8
|
|
|
8
|
-
export type
|
|
9
|
+
export type SideDialogController = {
|
|
9
10
|
blocked: boolean,
|
|
10
11
|
setBlocked: (blocked: boolean) => void,
|
|
11
12
|
setBlockedNavigationMessage: (message?: React.ReactNode) => void,
|
|
12
13
|
width?: string,
|
|
13
|
-
close: (force?: boolean) => void
|
|
14
|
+
close: (force?: boolean) => void;
|
|
15
|
+
pendingClose: boolean,
|
|
16
|
+
setPendingClose: (pendingClose: boolean) => void
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
const SideDialogContext = React.createContext<
|
|
19
|
+
const SideDialogContext = React.createContext<SideDialogController>({
|
|
17
20
|
width: "",
|
|
18
21
|
blocked: false,
|
|
19
22
|
setBlocked: (blocked: boolean) => {
|
|
@@ -21,6 +24,10 @@ const SideDialogContext = React.createContext<SideDialogContextProps>({
|
|
|
21
24
|
setBlockedNavigationMessage: (message?: React.ReactNode) => {
|
|
22
25
|
},
|
|
23
26
|
close: () => {
|
|
27
|
+
},
|
|
28
|
+
pendingClose: false,
|
|
29
|
+
setPendingClose: () => {
|
|
30
|
+
|
|
24
31
|
}
|
|
25
32
|
});
|
|
26
33
|
|
|
@@ -29,7 +36,7 @@ const SideDialogContext = React.createContext<SideDialogContextProps>({
|
|
|
29
36
|
* in contrast with {@link useSideDialogsController} which handles the
|
|
30
37
|
* state of all the dialogs.
|
|
31
38
|
*/
|
|
32
|
-
export const useSideDialogContext = () => useContext<
|
|
39
|
+
export const useSideDialogContext = () => useContext<SideDialogController>(SideDialogContext);
|
|
33
40
|
|
|
34
41
|
/**
|
|
35
42
|
* This is the component in charge of rendering the side dialogs used
|
|
@@ -72,6 +79,8 @@ function SideDialogView({
|
|
|
72
79
|
const [blocked, setBlocked] = useState(false);
|
|
73
80
|
const [blockedNavigationMessage, setBlockedNavigationMessage] = useState<React.ReactNode | undefined>();
|
|
74
81
|
|
|
82
|
+
const [pendingClose, setPendingClose] = useState(false);
|
|
83
|
+
|
|
75
84
|
const widthRef = React.useRef<string | undefined>(panel?.width);
|
|
76
85
|
const width = widthRef.current;
|
|
77
86
|
|
|
@@ -111,8 +120,6 @@ function SideDialogView({
|
|
|
111
120
|
}
|
|
112
121
|
};
|
|
113
122
|
|
|
114
|
-
// const offsetClass = offsetPosition > 0 ? `transform translate-x-${offsetPosition}` : "";
|
|
115
|
-
|
|
116
123
|
return (
|
|
117
124
|
<SideDialogContext.Provider
|
|
118
125
|
value={{
|
|
@@ -120,19 +127,22 @@ function SideDialogView({
|
|
|
120
127
|
setBlocked,
|
|
121
128
|
setBlockedNavigationMessage,
|
|
122
129
|
width,
|
|
123
|
-
close: onCloseRequest
|
|
130
|
+
close: onCloseRequest,
|
|
131
|
+
pendingClose,
|
|
132
|
+
setPendingClose
|
|
124
133
|
}}>
|
|
125
134
|
|
|
126
135
|
<Sheet
|
|
127
136
|
open={Boolean(panel)}
|
|
128
137
|
onOpenChange={(open) => !open && onCloseRequest()}
|
|
138
|
+
title={"Side dialog " + panel?.key}
|
|
129
139
|
>
|
|
130
140
|
{panel &&
|
|
131
141
|
<div
|
|
132
|
-
className={"transform max-w-[100vw] lg:max-w-[95vw] flex flex-col h-full transition-all duration-250 ease-in-out bg-white dark:bg-
|
|
142
|
+
className={"transform max-w-[100vw] lg:max-w-[95vw] flex flex-col h-full transition-all duration-250 ease-in-out bg-white dark:bg-surface-900 "}
|
|
133
143
|
style={{
|
|
134
144
|
width: panel.width,
|
|
135
|
-
transform: `translateX(-${offsetPosition * 200}px)
|
|
145
|
+
transform: `translateX(-${offsetPosition * 200}px)`,
|
|
136
146
|
}}
|
|
137
147
|
>
|
|
138
148
|
<ErrorBoundary>
|
|
@@ -145,7 +155,7 @@ function SideDialogView({
|
|
|
145
155
|
</Sheet>
|
|
146
156
|
|
|
147
157
|
<UnsavedChangesDialog
|
|
148
|
-
open={
|
|
158
|
+
open={drawerCloseRequested}
|
|
149
159
|
handleOk={drawerCloseRequested ? handleDrawerCloseOk : handleNavigationOk}
|
|
150
160
|
handleCancel={drawerCloseRequested ? handleDrawerCloseCancel : handleNavigationCancel}
|
|
151
161
|
body={blockedNavigationMessage}/>
|
|
@@ -8,8 +8,9 @@ import {
|
|
|
8
8
|
DateTimeFieldBinding,
|
|
9
9
|
KeyValueFieldBinding,
|
|
10
10
|
MapFieldBinding,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
MarkdownEditorFieldBinding,
|
|
12
|
+
MultiSelectFieldBinding,
|
|
13
|
+
ReferenceAsStringFieldBinding,
|
|
13
14
|
ReferenceFieldBinding,
|
|
14
15
|
RepeatFieldBinding,
|
|
15
16
|
SelectFieldBinding,
|
|
@@ -23,7 +24,6 @@ import {
|
|
|
23
24
|
AddLinkIcon,
|
|
24
25
|
BallotIcon,
|
|
25
26
|
DriveFolderUploadIcon,
|
|
26
|
-
EmailIcon,
|
|
27
27
|
FlagIcon,
|
|
28
28
|
FormatListNumberedIcon,
|
|
29
29
|
FormatQuoteIcon,
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
LinkIcon,
|
|
32
32
|
ListAltIcon,
|
|
33
33
|
ListIcon,
|
|
34
|
+
MailIcon,
|
|
34
35
|
NumbersIcon,
|
|
35
36
|
RepeatIcon,
|
|
36
37
|
ScheduleIcon,
|
|
@@ -77,7 +78,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
77
78
|
property: {
|
|
78
79
|
dataType: "string",
|
|
79
80
|
markdown: true,
|
|
80
|
-
Field:
|
|
81
|
+
Field: MarkdownEditorFieldBinding
|
|
81
82
|
}
|
|
82
83
|
},
|
|
83
84
|
url: {
|
|
@@ -96,7 +97,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
96
97
|
key: "email",
|
|
97
98
|
name: "Email",
|
|
98
99
|
description: "Text with email validation",
|
|
99
|
-
Icon:
|
|
100
|
+
Icon: MailIcon,
|
|
100
101
|
color: "#154fb3",
|
|
101
102
|
property: {
|
|
102
103
|
dataType: "string",
|
|
@@ -129,7 +130,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
129
130
|
},
|
|
130
131
|
multi_select: {
|
|
131
132
|
key: "multi_select",
|
|
132
|
-
name: "Multi select",
|
|
133
|
+
name: "Multi select (enum)",
|
|
133
134
|
description: "Select multiple text values from within an enumeration",
|
|
134
135
|
Icon: ListAltIcon,
|
|
135
136
|
color: "#4223c9",
|
|
@@ -139,7 +140,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
139
140
|
dataType: "string",
|
|
140
141
|
enumValues: [],
|
|
141
142
|
},
|
|
142
|
-
Field:
|
|
143
|
+
Field: MultiSelectFieldBinding
|
|
143
144
|
}
|
|
144
145
|
},
|
|
145
146
|
number_input: {
|
|
@@ -177,7 +178,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
177
178
|
dataType: "number",
|
|
178
179
|
enumValues: [],
|
|
179
180
|
},
|
|
180
|
-
Field:
|
|
181
|
+
Field: MultiSelectFieldBinding
|
|
181
182
|
}
|
|
182
183
|
},
|
|
183
184
|
file_upload: {
|
|
@@ -211,10 +212,21 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
211
212
|
Field: StorageUploadFieldBinding
|
|
212
213
|
}
|
|
213
214
|
},
|
|
215
|
+
reference_as_string: {
|
|
216
|
+
key: "reference_as_string",
|
|
217
|
+
name: "Reference (as string)",
|
|
218
|
+
description: "The value refers to a different collection (it is saved as a string)",
|
|
219
|
+
Icon: LinkIcon,
|
|
220
|
+
color: "#154fb3",
|
|
221
|
+
property: {
|
|
222
|
+
dataType: "string",
|
|
223
|
+
Field: ReferenceAsStringFieldBinding
|
|
224
|
+
}
|
|
225
|
+
},
|
|
214
226
|
reference: {
|
|
215
227
|
key: "reference",
|
|
216
228
|
name: "Reference",
|
|
217
|
-
description: "The value refers to a different collection",
|
|
229
|
+
description: "The value refers to a different collection (it is saved as a reference)",
|
|
218
230
|
Icon: LinkIcon,
|
|
219
231
|
color: "#ff0042",
|
|
220
232
|
property: {
|
|
@@ -300,7 +312,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
300
312
|
block: {
|
|
301
313
|
key: "block",
|
|
302
314
|
name: "Block",
|
|
303
|
-
description: "A complex field that allows the user to compose different fields together, with a key
|
|
315
|
+
description: "A complex field that allows the user to compose different fields together, with a key/value format",
|
|
304
316
|
Icon: ViewStreamIcon,
|
|
305
317
|
color: "#ff9408",
|
|
306
318
|
property: {
|
|
@@ -331,7 +343,7 @@ export function getFieldConfig(property: Property | ResolvedProperty, propertyCo
|
|
|
331
343
|
}
|
|
332
344
|
const defaultFieldConfig = DEFAULT_FIELD_CONFIGS[defaultFieldId];
|
|
333
345
|
const customField = fieldId ? propertyConfigs[fieldId] : undefined;
|
|
334
|
-
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {});
|
|
346
|
+
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {} as PropertyConfig);
|
|
335
347
|
}
|
|
336
348
|
|
|
337
349
|
export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
@@ -348,6 +360,8 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
|
348
360
|
return "email";
|
|
349
361
|
} else if (property.enumValues) {
|
|
350
362
|
return "select";
|
|
363
|
+
} else if (property.reference) {
|
|
364
|
+
return "reference_as_string";
|
|
351
365
|
} else {
|
|
352
366
|
return "text_field";
|
|
353
367
|
}
|
|
@@ -359,8 +373,7 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
|
359
373
|
} else if (property.dataType === "map") {
|
|
360
374
|
if (property.keyValue)
|
|
361
375
|
return "key_value";
|
|
362
|
-
|
|
363
|
-
return "group";
|
|
376
|
+
return "group";
|
|
364
377
|
} else if (property.dataType === "array") {
|
|
365
378
|
const of = (property as ArrayProperty).of;
|
|
366
379
|
const oneOf = (property as ArrayProperty).oneOf;
|
package/src/core/index.tsx
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export * from "./FireCMS";
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
export type { DrawerProps } from "./Drawer";
|
|
7
|
-
export { Drawer, DrawerNavigationItem } from "./Drawer";
|
|
3
|
+
export * from "./DefaultDrawer";
|
|
4
|
+
export * from "./DrawerNavigationItem";
|
|
8
5
|
|
|
9
6
|
export * from "./field_configs";
|
|
10
7
|
|
|
11
8
|
export * from "./SideDialogs";
|
|
12
9
|
export * from "./NavigationRoutes";
|
|
10
|
+
|
|
11
|
+
export * from "./FireCMSRouter";
|
|
12
|
+
|
|
13
|
+
export * from "../app";
|