@firecms/core 3.0.0-canary.16 → 3.0.0-canary.160
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 +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +19 -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 +11 -12
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -5
- 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/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 +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +7 -6
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- 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 +1 -1
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +1 -0
- 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 +2 -1
- package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +4 -1
- package/dist/components/index.d.ts +4 -2
- 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 +18 -4
- package/dist/core/FireCMS.d.ts +2 -2
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -4
- 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/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 +1 -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 -5
- 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 +3 -5
- 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 +3 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +3 -4
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +20202 -14110
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +22773 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +53 -18
- package/dist/types/datasource.d.ts +51 -35
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +18 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +63 -41
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +6 -5
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +22 -12
- package/dist/types/properties.d.ts +34 -21
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +2 -2
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- 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/resolutions.d.ts +30 -16
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +59 -44
- 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 +92 -25
- 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 +9 -18
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +28 -25
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +16 -8
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +30 -35
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +82 -75
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +55 -51
- package/src/components/EntityView.tsx +10 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +26 -19
- package/src/components/HomePage/FavouritesView.tsx +1 -1
- package/src/components/HomePage/NavigationCard.tsx +4 -4
- package/src/components/HomePage/NavigationCardBinding.tsx +2 -2
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +9 -9
- 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 +30 -6
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +90 -21
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- 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 +18 -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 -1
- 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 +8 -4
- package/src/components/common/index.ts +1 -0
- 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 +23 -2
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +178 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +721 -156
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +57 -53
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +2 -1
- package/src/core/field_configs.tsx +9 -10
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +74 -35
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/LabelWithIcon.tsx +27 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +3 -4
- package/src/form/components/index.tsx +1 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +53 -33
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
- package/src/form/field_bindings/MapFieldBinding.tsx +67 -48
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
- package/src/form/field_bindings/SelectFieldBinding.tsx +21 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +37 -47
- package/src/form/field_bindings/SwitchFieldBinding.tsx +28 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
- package/src/form/index.tsx +4 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +12 -8
- package/src/hooks/data/useCollectionFetch.tsx +2 -2
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +5 -5
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +92 -34
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
- package/src/hooks/useValidateAuthenticator.tsx +21 -41
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +102 -22
- package/src/internal/useUnsavedChangesDialog.tsx +5 -3
- package/src/preview/PropertyPreview.tsx +11 -18
- 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 +25 -35
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- 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 +9 -9
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +62 -20
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +60 -43
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +20 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +69 -45
- package/src/types/firecms.tsx +7 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +7 -7
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +24 -14
- package/src/types/properties.ts +39 -22
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +6 -6
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +1 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +45 -28
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +3 -0
- 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 +34 -8
- package/src/util/useTraceUpdate.tsx +1 -0
- 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/EntityForm.d.ts +0 -77
- 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/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/EntityForm.tsx +0 -728
- 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
|
@@ -33,7 +33,7 @@ export function EntitySidePanel(props: EntitySidePanelProps) {
|
|
|
33
33
|
if (!props) return undefined;
|
|
34
34
|
let usedCollection = props.collection;
|
|
35
35
|
|
|
36
|
-
const registryCollection = navigationController.getCollection(props.path
|
|
36
|
+
const registryCollection = navigationController.getCollection(props.path);
|
|
37
37
|
if (registryCollection) {
|
|
38
38
|
usedCollection = registryCollection;
|
|
39
39
|
}
|
|
@@ -79,7 +79,6 @@ export function EntitySidePanel(props: EntitySidePanelProps) {
|
|
|
79
79
|
<ErrorBoundary>
|
|
80
80
|
<EntityEditView
|
|
81
81
|
{...props}
|
|
82
|
-
formWidth={props.width}
|
|
83
82
|
collection={collection}
|
|
84
83
|
parentCollectionIds={parentCollectionIds}
|
|
85
84
|
onValuesAreModified={onValuesAreModified}
|
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, EntityCollection, 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,11 +14,8 @@ 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";
|
|
@@ -30,12 +29,11 @@ import { useProjectLog } from "../hooks/useProjectLog";
|
|
|
30
29
|
*
|
|
31
30
|
* You only need to use this component if you are building a custom app.
|
|
32
31
|
*
|
|
33
|
-
|
|
32
|
+
|
|
34
33
|
* @group Core
|
|
35
34
|
*/
|
|
36
|
-
export function FireCMS<
|
|
35
|
+
export function FireCMS<USER extends User, EC extends EntityCollection>(props: FireCMSProps<USER, EC>) {
|
|
37
36
|
|
|
38
|
-
const modeController = useModeController();
|
|
39
37
|
const {
|
|
40
38
|
children,
|
|
41
39
|
entityLinkBuilder,
|
|
@@ -51,10 +49,9 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
51
49
|
entityViews,
|
|
52
50
|
components,
|
|
53
51
|
navigationController,
|
|
52
|
+
apiKey
|
|
54
53
|
} = props;
|
|
55
54
|
|
|
56
|
-
useLocaleConfig(locale);
|
|
57
|
-
|
|
58
55
|
/**
|
|
59
56
|
* Controller in charge of fetching and persisting data
|
|
60
57
|
*/
|
|
@@ -71,7 +68,7 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
71
68
|
|
|
72
69
|
const loading = authController.initialLoading || navigationController.loading || pluginsLoading;
|
|
73
70
|
|
|
74
|
-
const customizationController =
|
|
71
|
+
const customizationController: CustomizationController = {
|
|
75
72
|
dateTimeFormat,
|
|
76
73
|
locale,
|
|
77
74
|
entityLinkBuilder,
|
|
@@ -79,13 +76,22 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
79
76
|
entityViews: entityViews ?? [],
|
|
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
|
+
if (accessResponse?.message) {
|
|
93
|
+
console.warn(accessResponse.message);
|
|
94
|
+
}
|
|
89
95
|
|
|
90
96
|
if (navigationController.navigationLoadingError) {
|
|
91
97
|
return (
|
|
@@ -109,54 +115,52 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
109
115
|
|
|
110
116
|
if (accessResponse?.blocked) {
|
|
111
117
|
return (
|
|
112
|
-
<CenteredView maxWidth={"md"} fullScreen={true}>
|
|
113
|
-
<Typography variant={"h4"}>
|
|
114
|
-
|
|
118
|
+
<CenteredView maxWidth={"md"} fullScreen={true} className={"flex flex-col gap-2"}>
|
|
119
|
+
<Typography variant={"h4"} gutterBottom>
|
|
120
|
+
License needed
|
|
115
121
|
</Typography>
|
|
116
122
|
<Typography>
|
|
117
|
-
|
|
123
|
+
You need a valid license to use FireCMS PRO. Please reach out at <a
|
|
118
124
|
href={"mailto:hello@firecms.co"}>hello@firecms.co</a> for more information.
|
|
119
125
|
</Typography>
|
|
120
126
|
{accessResponse?.message &&
|
|
121
|
-
<Typography>
|
|
127
|
+
<Typography>{accessResponse?.message}</Typography>}
|
|
122
128
|
</CenteredView>
|
|
123
129
|
);
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
return (
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
</AnalyticsContext.Provider>
|
|
159
|
-
</ModeControllerContext.Provider>
|
|
133
|
+
<AnalyticsContext.Provider value={analyticsController}>
|
|
134
|
+
<CustomizationControllerContext.Provider value={customizationController}>
|
|
135
|
+
<UserConfigurationPersistenceContext.Provider
|
|
136
|
+
value={userConfigPersistence}>
|
|
137
|
+
<StorageSourceContext.Provider
|
|
138
|
+
value={storageSource}>
|
|
139
|
+
<DataSourceContext.Provider
|
|
140
|
+
value={dataSource}>
|
|
141
|
+
<AuthControllerContext.Provider
|
|
142
|
+
value={authController}>
|
|
143
|
+
<SideDialogsControllerContext.Provider
|
|
144
|
+
value={sideDialogsController}>
|
|
145
|
+
<SideEntityControllerContext.Provider
|
|
146
|
+
value={sideEntityController}>
|
|
147
|
+
<NavigationContext.Provider
|
|
148
|
+
value={navigationController}>
|
|
149
|
+
<DialogsProvider>
|
|
150
|
+
<FireCMSInternal
|
|
151
|
+
loading={loading}>
|
|
152
|
+
{children}
|
|
153
|
+
</FireCMSInternal>
|
|
154
|
+
</DialogsProvider>
|
|
155
|
+
</NavigationContext.Provider>
|
|
156
|
+
</SideEntityControllerContext.Provider>
|
|
157
|
+
</SideDialogsControllerContext.Provider>
|
|
158
|
+
</AuthControllerContext.Provider>
|
|
159
|
+
</DataSourceContext.Provider>
|
|
160
|
+
</StorageSourceContext.Provider>
|
|
161
|
+
</UserConfigurationPersistenceContext.Provider>
|
|
162
|
+
</CustomizationControllerContext.Provider>
|
|
163
|
+
</AnalyticsContext.Provider>
|
|
160
164
|
);
|
|
161
165
|
|
|
162
166
|
}
|
|
@@ -13,9 +13,9 @@ export type NavigationRoutesProps = {
|
|
|
13
13
|
/**
|
|
14
14
|
* In case you need to override the home page
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
homePage?: React.ReactNode;
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
children?: React.ReactNode | React.ReactNode[]
|
|
19
19
|
|
|
20
20
|
};
|
|
21
21
|
|
|
@@ -25,14 +25,13 @@ export type NavigationRoutesProps = {
|
|
|
25
25
|
* or the home route) related to a {@link NavigationController}.
|
|
26
26
|
* This component needs a parent {@link FireCMS}
|
|
27
27
|
*
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
* @group Components
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
31
|
export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
33
32
|
function NavigationRoutes({
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
homePage = <DefaultHomePage/>,
|
|
34
|
+
children
|
|
36
35
|
}: NavigationRoutesProps) {
|
|
37
36
|
|
|
38
37
|
const location = useLocation();
|
|
@@ -93,7 +92,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
93
92
|
|
|
94
93
|
const homeRoute = (
|
|
95
94
|
<Route path={"/"}
|
|
96
|
-
element={
|
|
95
|
+
element={homePage}/>
|
|
97
96
|
);
|
|
98
97
|
|
|
99
98
|
const notFoundRoute = <Route path={"*"}
|
|
@@ -112,7 +111,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
112
111
|
|
|
113
112
|
{notFoundRoute}
|
|
114
113
|
|
|
115
|
-
{
|
|
114
|
+
{children}
|
|
116
115
|
|
|
117
116
|
</Routes>
|
|
118
117
|
);
|
package/src/core/SideDialogs.tsx
CHANGED
|
@@ -126,10 +126,11 @@ function SideDialogView({
|
|
|
126
126
|
<Sheet
|
|
127
127
|
open={Boolean(panel)}
|
|
128
128
|
onOpenChange={(open) => !open && onCloseRequest()}
|
|
129
|
+
title={"Side dialog " + panel?.key}
|
|
129
130
|
>
|
|
130
131
|
{panel &&
|
|
131
132
|
<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-
|
|
133
|
+
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
134
|
style={{
|
|
134
135
|
width: panel.width,
|
|
135
136
|
transform: `translateX(-${offsetPosition * 200}px)`
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
DateTimeFieldBinding,
|
|
9
9
|
KeyValueFieldBinding,
|
|
10
10
|
MapFieldBinding,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
MarkdownEditorFieldBinding,
|
|
12
|
+
MultiSelectFieldBinding,
|
|
13
13
|
ReferenceFieldBinding,
|
|
14
14
|
RepeatFieldBinding,
|
|
15
15
|
SelectFieldBinding,
|
|
@@ -77,7 +77,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
77
77
|
property: {
|
|
78
78
|
dataType: "string",
|
|
79
79
|
markdown: true,
|
|
80
|
-
Field:
|
|
80
|
+
Field: MarkdownEditorFieldBinding
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
url: {
|
|
@@ -129,7 +129,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
129
129
|
},
|
|
130
130
|
multi_select: {
|
|
131
131
|
key: "multi_select",
|
|
132
|
-
name: "Multi select",
|
|
132
|
+
name: "Multi select (enum)",
|
|
133
133
|
description: "Select multiple text values from within an enumeration",
|
|
134
134
|
Icon: ListAltIcon,
|
|
135
135
|
color: "#4223c9",
|
|
@@ -139,7 +139,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
139
139
|
dataType: "string",
|
|
140
140
|
enumValues: [],
|
|
141
141
|
},
|
|
142
|
-
Field:
|
|
142
|
+
Field: MultiSelectFieldBinding
|
|
143
143
|
}
|
|
144
144
|
},
|
|
145
145
|
number_input: {
|
|
@@ -177,7 +177,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
177
177
|
dataType: "number",
|
|
178
178
|
enumValues: [],
|
|
179
179
|
},
|
|
180
|
-
Field:
|
|
180
|
+
Field: MultiSelectFieldBinding
|
|
181
181
|
}
|
|
182
182
|
},
|
|
183
183
|
file_upload: {
|
|
@@ -300,7 +300,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
300
300
|
block: {
|
|
301
301
|
key: "block",
|
|
302
302
|
name: "Block",
|
|
303
|
-
description: "A complex field that allows the user to compose different fields together, with a key
|
|
303
|
+
description: "A complex field that allows the user to compose different fields together, with a key/value format",
|
|
304
304
|
Icon: ViewStreamIcon,
|
|
305
305
|
color: "#ff9408",
|
|
306
306
|
property: {
|
|
@@ -331,7 +331,7 @@ export function getFieldConfig(property: Property | ResolvedProperty, propertyCo
|
|
|
331
331
|
}
|
|
332
332
|
const defaultFieldConfig = DEFAULT_FIELD_CONFIGS[defaultFieldId];
|
|
333
333
|
const customField = fieldId ? propertyConfigs[fieldId] : undefined;
|
|
334
|
-
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {});
|
|
334
|
+
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {} as PropertyConfig);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
@@ -359,8 +359,7 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
|
359
359
|
} else if (property.dataType === "map") {
|
|
360
360
|
if (property.keyValue)
|
|
361
361
|
return "key_value";
|
|
362
|
-
|
|
363
|
-
return "group";
|
|
362
|
+
return "group";
|
|
364
363
|
} else if (property.dataType === "array") {
|
|
365
364
|
const of = (property as ArrayProperty).of;
|
|
366
365
|
const oneOf = (property as ArrayProperty).oneOf;
|
package/src/core/index.tsx
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export * from "./FireCMS";
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
export { Scaffold } from "./Scaffold";
|
|
3
|
+
export * from "../app/Scaffold";
|
|
5
4
|
|
|
6
|
-
export
|
|
7
|
-
export
|
|
5
|
+
export * from "./DefaultDrawer";
|
|
6
|
+
export * from "./DrawerNavigationItem";
|
|
8
7
|
|
|
9
8
|
export * from "./field_configs";
|
|
10
9
|
|
|
@@ -51,6 +51,13 @@ export const PropertyFieldBinding = React.memo(PropertyFieldBindingInternal, (a:
|
|
|
51
51
|
if (a.propertyKey !== b.propertyKey) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
|
+
if (a.index !== b.index) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (a.size !== b.size) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
54
61
|
const aIsBuilder = isPropertyBuilder(a.property) || a.property.fromBuilder;
|
|
55
62
|
const bIsBuilder = isPropertyBuilder(b.property) || b.property.fromBuilder;
|
|
56
63
|
|
|
@@ -74,17 +81,20 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
74
81
|
context,
|
|
75
82
|
includeDescription,
|
|
76
83
|
underlyingValueHasChanged,
|
|
77
|
-
disabled,
|
|
78
|
-
tableMode,
|
|
84
|
+
disabled: disabledProp,
|
|
79
85
|
partOfArray,
|
|
80
|
-
|
|
86
|
+
minimalistView,
|
|
81
87
|
autoFocus,
|
|
88
|
+
index,
|
|
89
|
+
size,
|
|
90
|
+
onPropertyChange
|
|
82
91
|
}: PropertyFieldBindingProps<T, M>): ReactElement<PropertyFieldBindingProps<T, M>> {
|
|
83
92
|
|
|
84
93
|
const customizationController = useCustomizationController();
|
|
85
94
|
|
|
86
95
|
return (
|
|
87
96
|
<Field
|
|
97
|
+
key={propertyKey}
|
|
88
98
|
name={propertyKey}
|
|
89
99
|
>
|
|
90
100
|
{(fieldProps) => {
|
|
@@ -92,14 +102,16 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
92
102
|
let Component: ComponentType<FieldProps<T>> | undefined;
|
|
93
103
|
const resolvedProperty: ResolvedProperty<T> | null = resolveProperty({
|
|
94
104
|
propertyKey,
|
|
95
|
-
propertyValue: fieldProps.field.value,
|
|
96
105
|
propertyOrBuilder: property,
|
|
97
106
|
values: fieldProps.form.values,
|
|
98
107
|
path: context.path,
|
|
99
108
|
entityId: context.entityId,
|
|
100
|
-
|
|
109
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
110
|
+
index
|
|
101
111
|
});
|
|
102
112
|
|
|
113
|
+
const disabled = disabledProp || isReadOnly(resolvedProperty) || Boolean(resolvedProperty?.disabled);
|
|
114
|
+
|
|
103
115
|
if (resolvedProperty === null || isHidden(resolvedProperty)) {
|
|
104
116
|
return <></>;
|
|
105
117
|
} else if (isReadOnly(resolvedProperty)) {
|
|
@@ -111,16 +123,23 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
111
123
|
} else {
|
|
112
124
|
const propertyConfig = getFieldConfig(resolvedProperty, customizationController.propertyConfigs);
|
|
113
125
|
if (!propertyConfig) {
|
|
114
|
-
console.log("INTERNAL: Could not find field config for property", {
|
|
126
|
+
console.log("INTERNAL: Could not find field config for property", {
|
|
127
|
+
propertyKey,
|
|
128
|
+
property,
|
|
129
|
+
resolvedProperty,
|
|
130
|
+
fields: customizationController.propertyConfigs,
|
|
131
|
+
propertyConfig
|
|
132
|
+
});
|
|
115
133
|
throw new Error(`INTERNAL: Could not find field config for property ${propertyKey}`);
|
|
116
134
|
}
|
|
117
135
|
const configProperty = resolveProperty({
|
|
136
|
+
propertyKey,
|
|
118
137
|
propertyOrBuilder: propertyConfig.property,
|
|
119
|
-
propertyValue: fieldProps.field.value,
|
|
120
138
|
values: fieldProps.form.values,
|
|
121
139
|
path: context.path,
|
|
122
140
|
entityId: context.entityId,
|
|
123
|
-
|
|
141
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
142
|
+
index
|
|
124
143
|
});
|
|
125
144
|
Component = configProperty.Field as ComponentType<FieldProps<T>>;
|
|
126
145
|
}
|
|
@@ -139,16 +158,17 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
139
158
|
underlyingValueHasChanged,
|
|
140
159
|
context,
|
|
141
160
|
disabled,
|
|
142
|
-
tableMode,
|
|
143
161
|
partOfArray,
|
|
144
|
-
|
|
145
|
-
autoFocus
|
|
162
|
+
minimalistView,
|
|
163
|
+
autoFocus,
|
|
164
|
+
size,
|
|
165
|
+
onPropertyChange
|
|
146
166
|
};
|
|
147
167
|
|
|
148
168
|
return <FieldInternal
|
|
149
169
|
Component={Component as ComponentType<FieldProps>}
|
|
150
170
|
componentProps={componentProps}
|
|
151
|
-
|
|
171
|
+
formexFieldProps={fieldProps}/>;
|
|
152
172
|
}}
|
|
153
173
|
</Field>
|
|
154
174
|
);
|
|
@@ -169,52 +189,59 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
169
189
|
property,
|
|
170
190
|
includeDescription,
|
|
171
191
|
underlyingValueHasChanged,
|
|
172
|
-
tableMode,
|
|
173
192
|
partOfArray,
|
|
174
|
-
|
|
193
|
+
minimalistView,
|
|
175
194
|
autoFocus,
|
|
176
195
|
context,
|
|
177
|
-
disabled
|
|
196
|
+
disabled,
|
|
197
|
+
size,
|
|
198
|
+
onPropertyChange
|
|
178
199
|
},
|
|
179
|
-
|
|
200
|
+
formexFieldProps
|
|
180
201
|
}:
|
|
181
202
|
{
|
|
182
203
|
Component: ComponentType<FieldProps<T, any, M>>,
|
|
183
204
|
componentProps: ResolvedPropertyFieldBindingProps<T, M>,
|
|
184
|
-
|
|
205
|
+
formexFieldProps: FormexFieldProps<T, any>
|
|
185
206
|
}) {
|
|
186
207
|
|
|
187
208
|
const { plugins } = useCustomizationController();
|
|
188
209
|
|
|
189
210
|
const customFieldProps: any = property.customProps;
|
|
190
|
-
const value =
|
|
191
|
-
// const initialValue =
|
|
192
|
-
const error = getIn(
|
|
193
|
-
const touched = getIn(
|
|
211
|
+
const value = formexFieldProps.field.value;
|
|
212
|
+
// const initialValue = formexFieldProps.meta.initialValue;
|
|
213
|
+
const error = getIn(formexFieldProps.form.errors, propertyKey);
|
|
214
|
+
const touched = getIn(formexFieldProps.form.touched, propertyKey);
|
|
194
215
|
|
|
195
216
|
const showError: boolean = error &&
|
|
196
|
-
(
|
|
217
|
+
(formexFieldProps.form.submitCount > 0 || property.validation?.unique) &&
|
|
197
218
|
(!Array.isArray(error) || !!error.filter((e: any) => !!e).length);
|
|
198
219
|
|
|
199
|
-
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent(
|
|
220
|
+
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent({
|
|
221
|
+
path: context.path,
|
|
222
|
+
collection: context.collection,
|
|
223
|
+
propertyKey: propertyKey,
|
|
224
|
+
property: property,
|
|
225
|
+
Component: Component,
|
|
226
|
+
plugins: plugins
|
|
227
|
+
});
|
|
200
228
|
const UsedComponent: ComponentType<FieldProps<T>> = WrappedComponent ?? Component;
|
|
201
229
|
|
|
202
|
-
const isSubmitting =
|
|
230
|
+
const isSubmitting = formexFieldProps.form.isSubmitting;
|
|
203
231
|
|
|
204
232
|
const setValue = useCallback((value: T | null, shouldValidate?: boolean) => {
|
|
205
|
-
|
|
206
|
-
|
|
233
|
+
formexFieldProps.form.setFieldTouched(propertyKey, true, false);
|
|
234
|
+
formexFieldProps.form.setFieldValue(propertyKey, value, shouldValidate);
|
|
207
235
|
}, []);
|
|
208
236
|
|
|
209
237
|
const setFieldValue = useCallback((otherPropertyKey: string, value: CMSType | null, shouldValidate?: boolean) => {
|
|
210
|
-
|
|
211
|
-
|
|
238
|
+
formexFieldProps.form.setFieldTouched(propertyKey, true, false);
|
|
239
|
+
formexFieldProps.form.setFieldValue(otherPropertyKey, value, shouldValidate);
|
|
212
240
|
}, []);
|
|
213
241
|
|
|
214
242
|
const cmsFieldProps: FieldProps<T, CustomProps, M> = {
|
|
215
243
|
propertyKey,
|
|
216
244
|
value: value as T,
|
|
217
|
-
// initialValue,
|
|
218
245
|
setValue,
|
|
219
246
|
setFieldValue,
|
|
220
247
|
error,
|
|
@@ -225,12 +252,13 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
225
252
|
property: property as ResolvedProperty<T>,
|
|
226
253
|
disabled: disabled ?? false,
|
|
227
254
|
underlyingValueHasChanged: underlyingValueHasChanged ?? false,
|
|
228
|
-
tableMode: tableMode ?? false,
|
|
229
255
|
partOfArray: partOfArray ?? false,
|
|
230
|
-
|
|
256
|
+
minimalistView: minimalistView ?? false,
|
|
231
257
|
autoFocus: autoFocus ?? false,
|
|
232
258
|
customProps: customFieldProps,
|
|
233
|
-
context
|
|
259
|
+
context,
|
|
260
|
+
size,
|
|
261
|
+
onPropertyChange
|
|
234
262
|
};
|
|
235
263
|
|
|
236
264
|
return (
|
|
@@ -266,13 +294,24 @@ const shouldPropertyReRender = (property: PropertyOrBuilder | ResolvedProperty,
|
|
|
266
294
|
}
|
|
267
295
|
}
|
|
268
296
|
|
|
269
|
-
|
|
270
|
-
path
|
|
271
|
-
collection
|
|
297
|
+
interface UseWrappedComponentParams<T extends CMSType = CMSType, M extends Record<string, any> = any> {
|
|
298
|
+
path?: string,
|
|
299
|
+
collection?: EntityCollection<M>,
|
|
272
300
|
propertyKey: string,
|
|
273
301
|
property: ResolvedProperty<T>,
|
|
274
302
|
Component: ComponentType<FieldProps<T, any, M>>,
|
|
275
303
|
plugins?: FireCMSPlugin[]
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function useWrappedComponent<T extends CMSType = CMSType, M extends Record<string, any> = any>(
|
|
307
|
+
{
|
|
308
|
+
path,
|
|
309
|
+
collection,
|
|
310
|
+
propertyKey,
|
|
311
|
+
property,
|
|
312
|
+
Component,
|
|
313
|
+
plugins
|
|
314
|
+
}: UseWrappedComponentParams<T, M>
|
|
276
315
|
): ComponentType<FieldProps<T, any, M>> | null {
|
|
277
316
|
|
|
278
317
|
const wrapperRef = useRef<ComponentType<FieldProps<T, any, M>> | null>((() => {
|
|
@@ -68,7 +68,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
68
68
|
? (
|
|
69
69
|
<>
|
|
70
70
|
|
|
71
|
-
<Tooltip title={"Copy"}
|
|
71
|
+
<Tooltip title={"Copy"}
|
|
72
|
+
asChild={true}>
|
|
72
73
|
<IconButton onClick={(e) => copy(entity.id)}
|
|
73
74
|
aria-label="copy-id">
|
|
74
75
|
<ContentCopyIcon size={"small"}/>
|
|
@@ -76,7 +77,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
76
77
|
</Tooltip>
|
|
77
78
|
|
|
78
79
|
{customizationController?.entityLinkBuilder &&
|
|
79
|
-
<Tooltip title={"Open in the console"}
|
|
80
|
+
<Tooltip title={"Open in the console"}
|
|
81
|
+
asChild={true}>
|
|
80
82
|
<IconButton component={"a"}
|
|
81
83
|
href={customizationController.entityLinkBuilder({ entity })}
|
|
82
84
|
rel="noopener noreferrer"
|
|
@@ -98,7 +100,9 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
98
100
|
|
|
99
101
|
{enumValues &&
|
|
100
102
|
<Select
|
|
103
|
+
size={"large"}
|
|
101
104
|
error={error}
|
|
105
|
+
fullWidth={true}
|
|
102
106
|
onValueChange={(v) => onChange(v as string)}
|
|
103
107
|
{...fieldProps}
|
|
104
108
|
renderValue={(option) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResolvedProperty } from "../../types";
|
|
1
|
+
import { Property, ResolvedProperty } from "../../types";
|
|
2
2
|
import { IconButton, InfoIcon, Tooltip, Typography } from "@firecms/ui";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -13,8 +13,8 @@ export function FieldHelperText({
|
|
|
13
13
|
disabled
|
|
14
14
|
}: {
|
|
15
15
|
error?: string,
|
|
16
|
-
showError
|
|
17
|
-
property: ResolvedProperty,
|
|
16
|
+
showError?: boolean,
|
|
17
|
+
property: ResolvedProperty | Property,
|
|
18
18
|
includeDescription?: boolean,
|
|
19
19
|
disabled?: boolean,
|
|
20
20
|
}
|
|
@@ -44,7 +44,7 @@ export function FieldHelperText({
|
|
|
44
44
|
{property.longDescription &&
|
|
45
45
|
<Tooltip title={property.longDescription}
|
|
46
46
|
side="bottom"
|
|
47
|
-
|
|
47
|
+
asChild={true}>
|
|
48
48
|
<IconButton
|
|
49
49
|
size={"small"}
|
|
50
50
|
className="self-start">
|