@firecms/core 3.0.0-canary.17 → 3.0.0-canary.170
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 +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 +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 +16 -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 +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 +28 -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 +4 -2
- 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 +41 -9
- 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/index.d.ts +4 -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 +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +3 -5
- 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 +21352 -14215
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +23817 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +69 -22
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +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 +34 -17
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +23 -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/side_entity_controller.d.ts +1 -1
- 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 +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 +6 -3
- package/dist/util/index.d.ts +2 -0
- package/dist/util/navigation_from_path.d.ts +5 -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/resolutions.d.ts +30 -16
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +58 -45
- 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 +10 -19
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- 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 +19 -17
- 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 +84 -77
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +206 -112
- 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/EntityPreview.tsx +66 -53
- 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 +6 -11
- package/src/components/HomePage/NavigationCard.tsx +4 -4
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- 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 +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +17 -12
- package/src/components/ReferenceWidget.tsx +22 -12
- 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 +30 -6
- 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 +33 -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 +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 +33 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/{useDataSourceEntityCollectionTableController.tsx → useDataSourceTableController.tsx} +142 -22
- 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 +4 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +201 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +933 -204
- package/src/core/EntitySidePanel.tsx +73 -8
- package/src/core/FireCMS.tsx +56 -49
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +20 -34
- package/src/core/SideDialogs.tsx +12 -6
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- 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 +22 -14
- 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 +27 -24
- 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 +13 -9
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +153 -55
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- 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 +4 -2
- package/src/internal/useBuildSideEntityController.tsx +230 -70
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +13 -20
- 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 -36
- 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/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +230 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +79 -24
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +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 +40 -21
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +25 -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/side_entity_controller.tsx +1 -1
- 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 +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +196 -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 +17 -7
- package/src/util/index.ts +2 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +10 -2
- 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 +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +11 -2
- 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
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useCallback, useMemo } from "react";
|
|
2
2
|
import { Entity, EntityCollection, EntityReference, FieldProps, ResolvedProperty } from "../../types";
|
|
3
3
|
import { ReferencePreview } from "../../preview";
|
|
4
|
-
import { FieldHelperText,
|
|
5
|
-
import { ErrorView } from "../../components";
|
|
4
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
5
|
+
import { ArrayContainer, ArrayEntryParams, ErrorView } from "../../components";
|
|
6
6
|
import { getIconForProperty, getReferenceFrom } from "../../util";
|
|
7
7
|
|
|
8
8
|
import { useNavigationController, useReferenceDialog } from "../../hooks";
|
|
9
|
-
import { Button,
|
|
9
|
+
import { Button, cls, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
|
|
10
10
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
11
11
|
|
|
12
12
|
type ArrayOfReferencesFieldProps = FieldProps<EntityReference[]>;
|
|
@@ -25,7 +25,7 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
25
25
|
showError,
|
|
26
26
|
disabled,
|
|
27
27
|
isSubmitting,
|
|
28
|
-
|
|
28
|
+
minimalistView,
|
|
29
29
|
property,
|
|
30
30
|
includeDescription,
|
|
31
31
|
setValue,
|
|
@@ -56,7 +56,6 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
const onMultipleEntitiesSelected = useCallback((entities: Entity<any>[]) => {
|
|
59
|
-
console.debug("onMultipleEntitiesSelected", entities);
|
|
60
59
|
setValue(entities.map(e => getReferenceFrom(e)));
|
|
61
60
|
}, [setValue]);
|
|
62
61
|
|
|
@@ -70,34 +69,44 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
70
69
|
}
|
|
71
70
|
);
|
|
72
71
|
|
|
73
|
-
const onEntryClick =
|
|
72
|
+
const onEntryClick = (e: React.SyntheticEvent) => {
|
|
74
73
|
e.preventDefault();
|
|
75
74
|
referenceDialogController.open();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const buildEntry = useCallback((
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const buildEntry = useCallback(({
|
|
78
|
+
index,
|
|
79
|
+
internalId,
|
|
80
|
+
storedProps,
|
|
81
|
+
storeProps
|
|
82
|
+
}: ArrayEntryParams) => {
|
|
79
83
|
const entryValue = value && value.length > index ? value[index] : undefined;
|
|
80
84
|
if (!entryValue)
|
|
81
85
|
return <div>Internal ERROR</div>;
|
|
82
86
|
return (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
<ReferencePreview
|
|
88
|
+
key={internalId}
|
|
89
|
+
disabled={!ofProperty.path}
|
|
90
|
+
previewProperties={ofProperty.previewProperties}
|
|
91
|
+
size={"medium"}
|
|
92
|
+
onClick={onEntryClick}
|
|
93
|
+
hover={!disabled}
|
|
94
|
+
reference={entryValue}
|
|
95
|
+
includeId={ofProperty.includeId}
|
|
96
|
+
includeEntityLink={ofProperty.includeEntityLink}
|
|
97
|
+
/>
|
|
92
98
|
);
|
|
93
99
|
}, [ofProperty.path, ofProperty.previewProperties, value]);
|
|
94
100
|
|
|
95
|
-
const title = (
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
const title = (<>
|
|
102
|
+
<LabelWithIconAndTooltip
|
|
103
|
+
propertyKey={propertyKey}
|
|
104
|
+
icon={getIconForProperty(property, "small")}
|
|
105
|
+
required={property.validation?.required}
|
|
106
|
+
title={property.name}
|
|
107
|
+
className={"flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
|
|
108
|
+
{Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
|
|
109
|
+
</>);
|
|
101
110
|
|
|
102
111
|
const body = <>
|
|
103
112
|
{!collection && <ErrorView
|
|
@@ -105,17 +114,18 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
105
114
|
|
|
106
115
|
{collection && <div className={"group"}>
|
|
107
116
|
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
<ArrayContainer droppableId={propertyKey}
|
|
118
|
+
value={value}
|
|
119
|
+
disabled={isSubmitting}
|
|
120
|
+
buildEntry={buildEntry}
|
|
121
|
+
addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
|
|
122
|
+
newDefaultEntry={property.of.defaultValue}
|
|
123
|
+
onValueChange={(value) => setFieldValue(propertyKey, value)}
|
|
124
|
+
/>
|
|
115
125
|
|
|
116
126
|
<Button
|
|
117
127
|
className="my-4 justify-center text-left"
|
|
118
|
-
variant="
|
|
128
|
+
variant="text"
|
|
119
129
|
color="primary"
|
|
120
130
|
disabled={isSubmitting}
|
|
121
131
|
onClick={onEntryClick}>
|
|
@@ -127,16 +137,16 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
127
137
|
return (
|
|
128
138
|
<>
|
|
129
139
|
|
|
130
|
-
{!
|
|
140
|
+
{!minimalistView &&
|
|
131
141
|
<ExpandablePanel
|
|
132
142
|
titleClassName={fieldBackgroundMixin}
|
|
133
|
-
|
|
143
|
+
innerClassName={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
|
|
134
144
|
initiallyExpanded={expanded}
|
|
135
145
|
title={title}>
|
|
136
146
|
{body}
|
|
137
147
|
</ExpandablePanel>}
|
|
138
148
|
|
|
139
|
-
{
|
|
149
|
+
{minimalistView && body}
|
|
140
150
|
|
|
141
151
|
<FieldHelperText includeDescription={includeDescription}
|
|
142
152
|
showError={showError}
|
|
@@ -2,14 +2,15 @@ import React, { useCallback, useEffect, useState } from "react";
|
|
|
2
2
|
|
|
3
3
|
import { Field, useFormex } from "@firecms/formex";
|
|
4
4
|
|
|
5
|
-
import { FieldHelperText,
|
|
5
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
6
6
|
import { PropertyFieldBinding } from "../PropertyFieldBinding";
|
|
7
7
|
import { EnumValuesChip } from "../../preview";
|
|
8
8
|
import { FieldProps, FormContext, PropertyFieldBindingProps, PropertyOrBuilder } from "../../types";
|
|
9
|
-
import { getDefaultValueFor, getIconForProperty, } from "../../util";
|
|
9
|
+
import { getDefaultValueFor, getIconForProperty, mergeDeep, } from "../../util";
|
|
10
10
|
import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "../../util/common";
|
|
11
|
-
import {
|
|
11
|
+
import { cls, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
|
|
12
12
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
13
|
+
import { ArrayContainer, ArrayEntryParams } from "../../components";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* If the `oneOf` property is specified, this fields render each array entry as
|
|
@@ -27,7 +28,7 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
27
28
|
isSubmitting,
|
|
28
29
|
setValue,
|
|
29
30
|
setFieldValue,
|
|
30
|
-
|
|
31
|
+
minimalistView,
|
|
31
32
|
property,
|
|
32
33
|
includeDescription,
|
|
33
34
|
underlyingValueHasChanged,
|
|
@@ -47,9 +48,15 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
47
48
|
|
|
48
49
|
const [lastAddedId, setLastAddedId] = useState<number | undefined>();
|
|
49
50
|
|
|
50
|
-
const buildEntry =
|
|
51
|
+
const buildEntry = ({
|
|
52
|
+
index,
|
|
53
|
+
internalId,
|
|
54
|
+
storedProps,
|
|
55
|
+
storeProps
|
|
56
|
+
}: ArrayEntryParams) => {
|
|
57
|
+
|
|
51
58
|
return <BlockEntry
|
|
52
|
-
key={`array_one_of_${
|
|
59
|
+
key={`array_one_of_${internalId}`}
|
|
53
60
|
name={`${propertyKey}.${index}`}
|
|
54
61
|
index={index}
|
|
55
62
|
value={value[index]}
|
|
@@ -57,42 +64,47 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
57
64
|
valueField={property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE}
|
|
58
65
|
properties={property.oneOf!.properties}
|
|
59
66
|
autoFocus={internalId === lastAddedId}
|
|
60
|
-
context={context}
|
|
61
|
-
|
|
67
|
+
context={context}
|
|
68
|
+
storeProps={storeProps}
|
|
69
|
+
storedProps={storedProps}/>;
|
|
70
|
+
};
|
|
62
71
|
|
|
63
72
|
const title = (
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
<LabelWithIconAndTooltip
|
|
74
|
+
propertyKey={propertyKey}
|
|
75
|
+
icon={getIconForProperty(property, "small")}
|
|
76
|
+
required={property.validation?.required}
|
|
77
|
+
title={property.name}
|
|
78
|
+
className={"text-text-secondary dark:text-text-secondary-dark"}/>
|
|
68
79
|
);
|
|
69
80
|
|
|
70
81
|
const firstOneOfKey = Object.keys(property.oneOf.properties)[0];
|
|
71
|
-
const body = <
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
const body = <ArrayContainer value={value}
|
|
83
|
+
className={"flex flex-col gap-3"}
|
|
84
|
+
droppableId={propertyKey}
|
|
85
|
+
addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
|
|
86
|
+
buildEntry={buildEntry}
|
|
87
|
+
onInternalIdAdded={setLastAddedId}
|
|
88
|
+
disabled={isSubmitting || Boolean(property.disabled)}
|
|
89
|
+
includeAddButton={!property.disabled}
|
|
90
|
+
onValueChange={(value) => setFieldValue(propertyKey, value)}
|
|
91
|
+
newDefaultEntry={{
|
|
92
|
+
[property.oneOf!.typeField ?? DEFAULT_ONE_OF_TYPE]: firstOneOfKey,
|
|
93
|
+
[property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE]: getDefaultValueFor(property.oneOf.properties[firstOneOfKey])
|
|
94
|
+
}}/>;
|
|
83
95
|
return (
|
|
84
96
|
|
|
85
97
|
<>
|
|
86
98
|
|
|
87
|
-
{!
|
|
99
|
+
{!minimalistView &&
|
|
88
100
|
<ExpandablePanel
|
|
89
|
-
|
|
101
|
+
innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
|
|
90
102
|
initiallyExpanded={expanded}
|
|
91
103
|
title={title}>
|
|
92
104
|
{body}
|
|
93
105
|
</ExpandablePanel>}
|
|
94
106
|
|
|
95
|
-
{
|
|
107
|
+
{minimalistView && body}
|
|
96
108
|
|
|
97
109
|
<FieldHelperText includeDescription={includeDescription}
|
|
98
110
|
showError={showError}
|
|
@@ -131,6 +143,9 @@ interface BlockEntryProps {
|
|
|
131
143
|
*/
|
|
132
144
|
context: FormContext<any>;
|
|
133
145
|
|
|
146
|
+
storedProps?: object,
|
|
147
|
+
storeProps: (props: object) => void
|
|
148
|
+
|
|
134
149
|
}
|
|
135
150
|
|
|
136
151
|
function BlockEntry({
|
|
@@ -141,7 +156,9 @@ function BlockEntry({
|
|
|
141
156
|
valueField,
|
|
142
157
|
properties,
|
|
143
158
|
autoFocus,
|
|
144
|
-
context
|
|
159
|
+
context,
|
|
160
|
+
storedProps,
|
|
161
|
+
storeProps
|
|
145
162
|
}: BlockEntryProps) {
|
|
146
163
|
|
|
147
164
|
const type = value && value[typeField];
|
|
@@ -161,7 +178,9 @@ function BlockEntry({
|
|
|
161
178
|
}
|
|
162
179
|
}, [type]);
|
|
163
180
|
|
|
164
|
-
const
|
|
181
|
+
const propertyInternal = typeInternal ? properties[typeInternal] : undefined;
|
|
182
|
+
|
|
183
|
+
const property = storedProps && typeof propertyInternal === "object" ? mergeDeep(propertyInternal, storedProps) : propertyInternal;
|
|
165
184
|
|
|
166
185
|
const enumValuesConfigs = Object.entries(properties)
|
|
167
186
|
.map(([key, property]) => ({
|
|
@@ -179,8 +198,8 @@ function BlockEntry({
|
|
|
179
198
|
context,
|
|
180
199
|
autoFocus,
|
|
181
200
|
partOfArray: false,
|
|
182
|
-
|
|
183
|
-
|
|
201
|
+
minimalistView: true,
|
|
202
|
+
onPropertyChange: storeProps,
|
|
184
203
|
}
|
|
185
204
|
: undefined;
|
|
186
205
|
|
|
@@ -193,7 +212,7 @@ function BlockEntry({
|
|
|
193
212
|
};
|
|
194
213
|
|
|
195
214
|
return (
|
|
196
|
-
<div className={
|
|
215
|
+
<div className={cls(paperMixin, "bg-transparent p-2")}>
|
|
197
216
|
|
|
198
217
|
<Field
|
|
199
218
|
name={typeFieldName}
|
|
@@ -206,7 +225,8 @@ function BlockEntry({
|
|
|
206
225
|
className="mb-2"
|
|
207
226
|
placeholder={<Typography variant={"caption"}
|
|
208
227
|
className={"px-4 py-2 font-medium"}>Type</Typography>}
|
|
209
|
-
size={"
|
|
228
|
+
size={"medium"}
|
|
229
|
+
fullWidth={true}
|
|
210
230
|
position={"item-aligned"}
|
|
211
231
|
value={value1}
|
|
212
232
|
renderValue={(enumKey: any) =>
|
|
@@ -7,6 +7,7 @@ import { useCustomizationController } from "../../hooks";
|
|
|
7
7
|
import { getIconForProperty } from "../../util";
|
|
8
8
|
import { DateTimeField } from "@firecms/ui";
|
|
9
9
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
10
|
+
import { PropertyIdCopyTooltip } from "../../components";
|
|
10
11
|
|
|
11
12
|
type DateTimeFieldProps = FieldProps<Date>;
|
|
12
13
|
|
|
@@ -41,20 +42,22 @@ export function DateTimeFieldBinding({
|
|
|
41
42
|
|
|
42
43
|
return (
|
|
43
44
|
<>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
46
|
+
<DateTimeField
|
|
47
|
+
value={internalValue}
|
|
48
|
+
onChange={(dateValue) => setValue(dateValue)}
|
|
49
|
+
size={"large"}
|
|
50
|
+
mode={property.mode}
|
|
51
|
+
clearable={property.clearable}
|
|
52
|
+
locale={locale}
|
|
53
|
+
error={showError}
|
|
54
|
+
label={<LabelWithIcon
|
|
55
|
+
icon={getIconForProperty(property, "small")}
|
|
56
|
+
required={property.validation?.required}
|
|
57
|
+
className={showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark"}
|
|
58
|
+
title={property.name}/>}
|
|
59
|
+
/>
|
|
60
|
+
</PropertyIdCopyTooltip>
|
|
58
61
|
|
|
59
62
|
<FieldHelperText includeDescription={includeDescription}
|
|
60
63
|
showError={showError}
|
|
@@ -2,13 +2,13 @@ import React, { useEffect, useState } from "react";
|
|
|
2
2
|
import { DataType, FieldProps, GeoPoint } from "../../types";
|
|
3
3
|
|
|
4
4
|
import { ArrayContainer } from "../../components";
|
|
5
|
-
import { FieldHelperText,
|
|
5
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
6
6
|
import {
|
|
7
7
|
AddIcon,
|
|
8
8
|
ArrowDropDownIcon,
|
|
9
9
|
BooleanSwitchWithLabel,
|
|
10
10
|
Button,
|
|
11
|
-
|
|
11
|
+
cls,
|
|
12
12
|
DateTimeField,
|
|
13
13
|
defaultBorderMixin,
|
|
14
14
|
ExpandablePanel,
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from "@firecms/ui";
|
|
22
22
|
import { getDefaultValueForDataType, getIconForProperty } from "../../util";
|
|
23
23
|
import { useCustomizationController } from "../../hooks";
|
|
24
|
+
import { getIn } from "@firecms/formex";
|
|
24
25
|
|
|
25
26
|
type MapEditViewRowState = [number, {
|
|
26
27
|
key: string,
|
|
@@ -40,7 +41,7 @@ export function KeyValueFieldBinding({
|
|
|
40
41
|
disabled,
|
|
41
42
|
property,
|
|
42
43
|
setValue,
|
|
43
|
-
|
|
44
|
+
minimalistView,
|
|
44
45
|
includeDescription,
|
|
45
46
|
underlyingValueHasChanged,
|
|
46
47
|
autoFocus,
|
|
@@ -52,12 +53,17 @@ export function KeyValueFieldBinding({
|
|
|
52
53
|
if (!property.keyValue) {
|
|
53
54
|
throw Error(`Your property ${propertyKey} needs to have the 'keyValue' prop in order to use this field binding`);
|
|
54
55
|
}
|
|
56
|
+
|
|
57
|
+
const initialValues = getIn(context.formex.initialValues, propertyKey);
|
|
58
|
+
|
|
55
59
|
const mapFormView = <MapEditView value={value}
|
|
56
60
|
setValue={setValue}
|
|
57
61
|
disabled={disabled}
|
|
62
|
+
initialValue={initialValues}
|
|
58
63
|
fieldName={property.name ?? propertyKey}/>;
|
|
59
64
|
|
|
60
|
-
const title = <
|
|
65
|
+
const title = <LabelWithIconAndTooltip
|
|
66
|
+
propertyKey={propertyKey}
|
|
61
67
|
icon={getIconForProperty(property, "small")}
|
|
62
68
|
required={property.validation?.required}
|
|
63
69
|
title={property.name}
|
|
@@ -66,11 +72,11 @@ export function KeyValueFieldBinding({
|
|
|
66
72
|
return (
|
|
67
73
|
<>
|
|
68
74
|
|
|
69
|
-
{!
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
{!minimalistView && <ExpandablePanel initiallyExpanded={expanded}
|
|
76
|
+
title={title}
|
|
77
|
+
innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>{mapFormView}</ExpandablePanel>}
|
|
72
78
|
|
|
73
|
-
{
|
|
79
|
+
{minimalistView && mapFormView}
|
|
74
80
|
|
|
75
81
|
<FieldHelperText includeDescription={includeDescription}
|
|
76
82
|
showError={showError}
|
|
@@ -84,6 +90,7 @@ export function KeyValueFieldBinding({
|
|
|
84
90
|
|
|
85
91
|
interface MapEditViewParams<T extends Record<string, any>> {
|
|
86
92
|
value?: T;
|
|
93
|
+
initialValue?: T;
|
|
87
94
|
setValue: (value: (T | null)) => void;
|
|
88
95
|
fieldName?: string,
|
|
89
96
|
disabled?: boolean
|
|
@@ -91,14 +98,15 @@ interface MapEditViewParams<T extends Record<string, any>> {
|
|
|
91
98
|
|
|
92
99
|
function MapEditView<T extends Record<string, any>>({
|
|
93
100
|
value,
|
|
101
|
+
initialValue,
|
|
94
102
|
setValue,
|
|
95
103
|
fieldName,
|
|
96
104
|
disabled
|
|
97
105
|
}: MapEditViewParams<T>) {
|
|
98
106
|
const [internalState, setInternalState] = React.useState<MapEditViewRowState[]>(
|
|
99
|
-
Object.keys(
|
|
107
|
+
Object.keys(initialValue ?? {}).map((key) => [getRandomId(), {
|
|
100
108
|
key,
|
|
101
|
-
dataType: getDataType(
|
|
109
|
+
dataType: getDataType(initialValue?.[key]) ?? "string"
|
|
102
110
|
}])
|
|
103
111
|
);
|
|
104
112
|
|
|
@@ -121,8 +129,6 @@ function MapEditView<T extends Record<string, any>>({
|
|
|
121
129
|
setInternalState(newRowIds);
|
|
122
130
|
}, [value]);
|
|
123
131
|
|
|
124
|
-
const originalValue = React.useRef<T>(value ?? {} as T);
|
|
125
|
-
|
|
126
132
|
const updateDataType = (rowId: number, dataType: DataType) => {
|
|
127
133
|
if (!rowId) {
|
|
128
134
|
console.warn("No key selected for data type update");
|
|
@@ -168,7 +174,7 @@ function MapEditView<T extends Record<string, any>>({
|
|
|
168
174
|
}
|
|
169
175
|
|
|
170
176
|
const newValue = { ...(value ?? {}) } as T;
|
|
171
|
-
if (typeof
|
|
177
|
+
if (typeof initialValue === "object" && fieldKey in initialValue) {
|
|
172
178
|
// @ts-ignore
|
|
173
179
|
newValue[fieldKey] = undefined; // set to undefined to remove from the object, the datasource will remove it from the backend
|
|
174
180
|
} else {
|
|
@@ -186,7 +192,7 @@ function MapEditView<T extends Record<string, any>>({
|
|
|
186
192
|
value={value ?? {} as T}
|
|
187
193
|
onDeleteClick={() => {
|
|
188
194
|
const newValue = { ...(value ?? {}) as T };
|
|
189
|
-
if (
|
|
195
|
+
if (initialValue && fieldKey in initialValue) {
|
|
190
196
|
// @ts-ignore
|
|
191
197
|
newValue[fieldKey] = undefined;
|
|
192
198
|
} else {
|
|
@@ -264,7 +270,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
264
270
|
placeholder={"value"}
|
|
265
271
|
value={entryValue}
|
|
266
272
|
type={dataType === "number" ? "number" : "text"}
|
|
267
|
-
size={"
|
|
273
|
+
size={"medium"}
|
|
268
274
|
disabled={disabled || !fieldKey}
|
|
269
275
|
onChange={(event) => {
|
|
270
276
|
if (dataType === "number") {
|
|
@@ -294,7 +300,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
294
300
|
}}/>;
|
|
295
301
|
} else if (dataType === "date") {
|
|
296
302
|
return <DateTimeField value={entryValue}
|
|
297
|
-
size={"
|
|
303
|
+
size={"medium"}
|
|
298
304
|
locale={locale}
|
|
299
305
|
disabled={disabled || !fieldKey}
|
|
300
306
|
onChange={(date) => {
|
|
@@ -305,7 +311,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
305
311
|
}}/>;
|
|
306
312
|
} else if (dataType === "boolean") {
|
|
307
313
|
return <BooleanSwitchWithLabel value={entryValue}
|
|
308
|
-
size={"
|
|
314
|
+
size={"medium"}
|
|
309
315
|
position={"start"}
|
|
310
316
|
disabled={disabled || !fieldKey}
|
|
311
317
|
onValueChange={(newValue) => {
|
|
@@ -316,7 +322,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
316
322
|
}}/>;
|
|
317
323
|
} else if (dataType === "array") {
|
|
318
324
|
return <div
|
|
319
|
-
className={
|
|
325
|
+
className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
|
|
320
326
|
<ArrayContainer value={entryValue}
|
|
321
327
|
newDefaultEntry={""}
|
|
322
328
|
droppableId={rowId.toString()}
|
|
@@ -330,7 +336,10 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
330
336
|
[fieldKey]: newValue
|
|
331
337
|
});
|
|
332
338
|
}}
|
|
333
|
-
buildEntry={(
|
|
339
|
+
buildEntry={({
|
|
340
|
+
index,
|
|
341
|
+
internalId
|
|
342
|
+
}) => {
|
|
334
343
|
return <ArrayKeyValueRow
|
|
335
344
|
index={index}
|
|
336
345
|
id={internalId}
|
|
@@ -349,7 +358,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
349
358
|
</div>;
|
|
350
359
|
} else if (dataType === "map") {
|
|
351
360
|
return <div
|
|
352
|
-
className={
|
|
361
|
+
className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
|
|
353
362
|
<MapEditView value={entryValue}
|
|
354
363
|
fieldName={fieldKey}
|
|
355
364
|
setValue={(updatedValue) => {
|
|
@@ -375,12 +384,12 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
375
384
|
<Typography key={rowId.toString()}
|
|
376
385
|
component={"div"}
|
|
377
386
|
className="font-mono flex flex-row gap-1">
|
|
378
|
-
<div className="w-[
|
|
387
|
+
<div className="w-[300px] max-w-[30%]">
|
|
379
388
|
<TextField
|
|
380
389
|
value={fieldKey}
|
|
381
390
|
placeholder={"key"}
|
|
382
391
|
disabled={disabled || (entryValue !== undefined && entryValue !== null && entryValue !== "")}
|
|
383
|
-
size={"
|
|
392
|
+
size={"medium"}
|
|
384
393
|
onChange={(event) => {
|
|
385
394
|
onFieldKeyChange(event.target.value);
|
|
386
395
|
}}/>
|
|
@@ -389,32 +398,32 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
389
398
|
<div className="flex-grow">
|
|
390
399
|
{(dataType !== "map" && dataType !== "array") && buildInput(entryValue, fieldKey, dataType)}
|
|
391
400
|
</div>
|
|
392
|
-
<
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
</
|
|
401
|
+
<div className={"flex flex-col"}>
|
|
402
|
+
<Menu
|
|
403
|
+
trigger={<IconButton size={"smallest"}>
|
|
404
|
+
<ArrowDropDownIcon size={"small"}/>
|
|
405
|
+
</IconButton>}
|
|
406
|
+
>
|
|
407
|
+
<MenuItem dense
|
|
408
|
+
onClick={() => doUpdateDataType("string")}>string</MenuItem>
|
|
409
|
+
<MenuItem dense
|
|
410
|
+
onClick={() => doUpdateDataType("number")}>number</MenuItem>
|
|
411
|
+
<MenuItem dense
|
|
412
|
+
onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
|
|
413
|
+
<MenuItem dense
|
|
414
|
+
onClick={() => doUpdateDataType("date")}>date</MenuItem>
|
|
415
|
+
<MenuItem dense
|
|
416
|
+
onClick={() => doUpdateDataType("map")}>map</MenuItem>
|
|
417
|
+
<MenuItem dense
|
|
418
|
+
onClick={() => doUpdateDataType("array")}>array</MenuItem>
|
|
419
|
+
</Menu>
|
|
420
|
+
|
|
421
|
+
<IconButton aria-label="delete"
|
|
422
|
+
size={"smallest"}
|
|
423
|
+
onClick={onDeleteClick}>
|
|
424
|
+
<RemoveIcon size={"smallest"}/>
|
|
425
|
+
</IconButton>
|
|
426
|
+
</div>
|
|
418
427
|
</Typography>
|
|
419
428
|
|
|
420
429
|
{(dataType === "map" || dataType === "array") && buildInput(entryValue, fieldKey, dataType)}
|
|
@@ -448,7 +457,7 @@ function ArrayKeyValueRow<T>({
|
|
|
448
457
|
if (dataType === "string" || dataType === "number") {
|
|
449
458
|
return <TextField value={entryValue}
|
|
450
459
|
type={dataType === "number" ? "number" : "text"}
|
|
451
|
-
size={"
|
|
460
|
+
size={"medium"}
|
|
452
461
|
onChange={(event) => {
|
|
453
462
|
if (dataType === "number") {
|
|
454
463
|
const numberValue = event.target.value ? parseFloat(event.target.value) : undefined;
|
|
@@ -465,7 +474,7 @@ function ArrayKeyValueRow<T>({
|
|
|
465
474
|
}}/>;
|
|
466
475
|
} else if (dataType === "date") {
|
|
467
476
|
return <DateTimeField value={entryValue}
|
|
468
|
-
size={"
|
|
477
|
+
size={"medium"}
|
|
469
478
|
locale={locale}
|
|
470
479
|
onChange={(date) => {
|
|
471
480
|
setValue(date as T);
|
|
@@ -482,7 +491,7 @@ function ArrayKeyValueRow<T>({
|
|
|
482
491
|
Arrays of arrays are not supported.
|
|
483
492
|
</Typography>;
|
|
484
493
|
} else if (dataType === "map") {
|
|
485
|
-
return <div className={
|
|
494
|
+
return <div className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
|
|
486
495
|
<MapEditView value={entryValue}
|
|
487
496
|
setValue={(updatedValue) => {
|
|
488
497
|
setValue(updatedValue);
|