@firecms/core 3.0.0-alpha.84 → 3.0.0-beta.10
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 +6 -7
- 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 +3 -4
- 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 -18
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +2 -4
- 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 +3 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
- package/dist/components/ReferenceWidget.d.ts +6 -4
- package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
- package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
- 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 +6 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
- package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
- package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
- package/dist/components/common/useTableSearchHelper.d.ts +12 -0
- package/dist/components/index.d.ts +14 -8
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- 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 +36 -0
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -6
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/CustomIdField.d.ts +2 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormikArrayContainer.d.ts +2 -1
- package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -3
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/components/index.d.ts +2 -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/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +4 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- package/dist/hooks/data/delete.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +2 -3
- package/dist/hooks/data/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +3 -3
- package/dist/hooks/index.d.ts +5 -1
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +23 -0
- package/dist/hooks/useProjectLog.d.ts +14 -0
- package/dist/hooks/useSnackbarController.d.ts +1 -0
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +16297 -12643
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20043 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +7 -5
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -9
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +38 -2
- package/dist/types/collections.d.ts +56 -9
- package/dist/types/datasource.d.ts +59 -39
- package/dist/types/entities.d.ts +7 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_callbacks.d.ts +3 -3
- package/dist/types/entity_overrides.d.ts +6 -0
- package/dist/types/fields.d.ts +47 -42
- package/dist/types/firecms.d.ts +8 -23
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +18 -16
- package/dist/types/permissions.d.ts +5 -1
- package/dist/types/plugins.d.ts +31 -31
- package/dist/types/properties.d.ts +36 -23
- package/dist/types/property_config.d.ts +2 -2
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +5 -0
- package/dist/util/collections.d.ts +9 -1
- 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 +10 -3
- package/dist/util/index.d.ts +3 -1
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +28 -14
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/strings.d.ts +1 -1
- package/dist/util/useDebouncedCallback.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +129 -112
- 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 +45 -75
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +4 -4
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
- package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
- package/src/components/EntityCollectionTable/index.tsx +1 -9
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +208 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +38 -28
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- package/src/components/PropertyConfigBadge.tsx +23 -0
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
- package/src/components/ReferenceWidget.tsx +26 -16
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
- package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
- package/src/components/common/index.ts +6 -0
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
- package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
- package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
- package/src/components/common/useTableSearchHelper.ts +88 -0
- package/src/components/index.tsx +15 -8
- package/src/contexts/AuthControllerContext.tsx +1 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +176 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +1127 -0
- package/src/core/EntitySidePanel.tsx +9 -8
- package/src/core/FireCMS.tsx +67 -59
- package/src/core/NavigationRoutes.tsx +25 -17
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +18 -19
- package/src/core/index.tsx +3 -6
- package/src/form/PropertyFieldBinding.tsx +60 -33
- package/src/form/components/CustomIdField.tsx +51 -36
- package/src/form/components/ErrorFocus.tsx +3 -3
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormikArrayContainer.tsx +4 -1
- package/src/form/components/LabelWithIcon.tsx +41 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -10
- package/src/form/components/StorageUploadProgress.tsx +8 -8
- package/src/form/components/index.tsx +2 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
- package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
- package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
- package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
- package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
- package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
- package/src/form/index.tsx +5 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +4 -21
- package/src/hooks/data/delete.ts +5 -4
- package/src/hooks/data/save.ts +7 -2
- package/src/hooks/data/useCollectionFetch.tsx +1 -1
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +4 -4
- package/src/hooks/index.tsx +7 -1
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +12 -6
- package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
- package/src/hooks/useFireCMSContext.tsx +51 -3
- package/src/hooks/useLargeLayout.tsx +10 -7
- package/src/hooks/useProjectLog.tsx +63 -0
- package/src/hooks/useReferenceDialog.tsx +3 -3
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useSnackbarController.tsx +1 -2
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -84
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +103 -23
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +12 -19
- package/src/preview/PropertyPreviewProps.tsx +6 -10
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +24 -34
- package/src/preview/components/ReferencePreview.tsx +73 -176
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/preview/util.ts +2 -2
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +51 -2
- package/src/types/collections.ts +65 -9
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +69 -47
- package/src/types/entities.ts +15 -1
- package/src/types/entity_actions.tsx +17 -0
- package/src/types/entity_callbacks.ts +4 -3
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/fields.tsx +51 -45
- package/src/types/firecms.tsx +9 -26
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +20 -19
- package/src/types/permissions.ts +6 -1
- package/src/types/plugins.tsx +38 -40
- package/src/types/properties.ts +42 -24
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/side_entity_controller.tsx +1 -0
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +7 -0
- package/src/util/collections.ts +22 -0
- 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 +18 -4
- package/src/util/index.ts +3 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +12 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +1 -1
- package/src/util/references.ts +39 -5
- package/src/util/resolutions.ts +75 -42
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +4 -3
- package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +2 -1
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -52
- package/dist/form/EntityForm.d.ts +0 -75
- package/dist/form/components/SubmitListener.d.ts +0 -1
- package/dist/form/components/SwitchControl.d.ts +0 -8
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/internal/EntityView.d.ts +0 -22
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useBuildNavigationController.d.ts +0 -14
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/dist/util/useDebounce.d.ts +0 -1
- package/src/components/FieldConfigBadge.tsx +0 -17
- package/src/components/FireCMSAppBar.tsx +0 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/core/Drawer.tsx +0 -162
- package/src/core/Scaffold.tsx +0 -278
- package/src/form/EntityForm.tsx +0 -657
- package/src/form/components/SubmitListener.tsx +0 -32
- package/src/form/components/SwitchControl.tsx +0 -39
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/hooks/useVerifyLicense.tsx +0 -1
- package/src/internal/EntityView.tsx +0 -578
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
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, FormikArrayContainer } from "../components";
|
|
5
|
-
import {
|
|
4
|
+
import { FieldHelperText, FormikArrayContainer, LabelWithIconAndTooltip } from "../components";
|
|
5
|
+
import { ErrorView } from "../../components";
|
|
6
6
|
import { getIconForProperty, getReferenceFrom } from "../../util";
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import { Button, ExpandablePanel } from "@firecms/ui";
|
|
10
|
-
import {
|
|
8
|
+
import { useNavigationController, useReferenceDialog } from "../../hooks";
|
|
9
|
+
import { Button, cls, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
|
|
10
|
+
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
11
11
|
|
|
12
12
|
type ArrayOfReferencesFieldProps = FieldProps<EntityReference[]>;
|
|
13
13
|
|
|
@@ -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,
|
|
@@ -38,7 +38,6 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
const expanded = property.expanded === undefined ? true : property.expanded;
|
|
41
|
-
const [onHover, setOnHover] = React.useState(false);
|
|
42
41
|
const selectedEntityIds = value && Array.isArray(value) ? value.map((ref) => ref.id) : [];
|
|
43
42
|
|
|
44
43
|
useClearRestoreValue({
|
|
@@ -57,7 +56,6 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
const onMultipleEntitiesSelected = useCallback((entities: Entity<any>[]) => {
|
|
60
|
-
console.debug("onMultipleEntitiesSelected", entities);
|
|
61
59
|
setValue(entities.map(e => getReferenceFrom(e)));
|
|
62
60
|
}, [setValue]);
|
|
63
61
|
|
|
@@ -71,44 +69,45 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
71
69
|
}
|
|
72
70
|
);
|
|
73
71
|
|
|
74
|
-
const onEntryClick =
|
|
72
|
+
const onEntryClick = (e: React.SyntheticEvent) => {
|
|
75
73
|
e.preventDefault();
|
|
76
74
|
referenceDialogController.open();
|
|
77
|
-
}
|
|
75
|
+
};
|
|
78
76
|
|
|
79
77
|
const buildEntry = useCallback((index: number, internalId: number) => {
|
|
80
78
|
const entryValue = value && value.length > index ? value[index] : undefined;
|
|
81
79
|
if (!entryValue)
|
|
82
80
|
return <div>Internal ERROR</div>;
|
|
83
81
|
return (
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
/>
|
|
96
|
-
</div>
|
|
82
|
+
<ReferencePreview
|
|
83
|
+
key={internalId}
|
|
84
|
+
disabled={!ofProperty.path}
|
|
85
|
+
previewProperties={ofProperty.previewProperties}
|
|
86
|
+
size={"medium"}
|
|
87
|
+
onClick={onEntryClick}
|
|
88
|
+
hover={!disabled}
|
|
89
|
+
reference={entryValue}
|
|
90
|
+
includeId={ofProperty.includeId}
|
|
91
|
+
includeEntityLink={ofProperty.includeEntityLink}
|
|
92
|
+
/>
|
|
97
93
|
);
|
|
98
|
-
}, [ofProperty.path, ofProperty.previewProperties,
|
|
99
|
-
|
|
100
|
-
const title = (
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
94
|
+
}, [ofProperty.path, ofProperty.previewProperties, value]);
|
|
95
|
+
|
|
96
|
+
const title = (<>
|
|
97
|
+
<LabelWithIconAndTooltip
|
|
98
|
+
propertyKey={propertyKey}
|
|
99
|
+
icon={getIconForProperty(property, "small")}
|
|
100
|
+
required={property.validation?.required}
|
|
101
|
+
title={property.name}
|
|
102
|
+
className={"flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
|
|
103
|
+
{Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
|
|
104
|
+
</>);
|
|
106
105
|
|
|
107
106
|
const body = <>
|
|
108
107
|
{!collection && <ErrorView
|
|
109
108
|
error={"The specified collection does not exist. Check console"}/>}
|
|
110
109
|
|
|
111
|
-
{collection &&
|
|
110
|
+
{collection && <div className={"group"}>
|
|
112
111
|
|
|
113
112
|
<FormikArrayContainer value={value}
|
|
114
113
|
addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
|
|
@@ -120,27 +119,28 @@ export function ArrayOfReferencesFieldBinding({
|
|
|
120
119
|
|
|
121
120
|
<Button
|
|
122
121
|
className="my-4 justify-center text-left"
|
|
123
|
-
variant="
|
|
122
|
+
variant="text"
|
|
124
123
|
color="primary"
|
|
125
124
|
disabled={isSubmitting}
|
|
126
125
|
onClick={onEntryClick}>
|
|
127
126
|
Edit {property.name}
|
|
128
127
|
</Button>
|
|
129
|
-
|
|
128
|
+
</div>}
|
|
130
129
|
</>;
|
|
131
130
|
|
|
132
131
|
return (
|
|
133
132
|
<>
|
|
134
133
|
|
|
135
|
-
{!
|
|
134
|
+
{!minimalistView &&
|
|
136
135
|
<ExpandablePanel
|
|
137
|
-
|
|
136
|
+
titleClassName={fieldBackgroundMixin}
|
|
137
|
+
innerClassName={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
|
|
138
138
|
initiallyExpanded={expanded}
|
|
139
139
|
title={title}>
|
|
140
140
|
{body}
|
|
141
141
|
</ExpandablePanel>}
|
|
142
142
|
|
|
143
|
-
{
|
|
143
|
+
{minimalistView && body}
|
|
144
144
|
|
|
145
145
|
<FieldHelperText includeDescription={includeDescription}
|
|
146
146
|
showError={showError}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useState } from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Field, useFormex } from "@firecms/formex";
|
|
4
4
|
|
|
5
|
-
import { FieldHelperText, FormikArrayContainer } from "../components";
|
|
6
|
-
import { LabelWithIcon } from "../../components";
|
|
7
|
-
import { useClearRestoreValue } from "../../hooks";
|
|
5
|
+
import { FieldHelperText, FormikArrayContainer, LabelWithIconAndTooltip } from "../components";
|
|
8
6
|
import { PropertyFieldBinding } from "../PropertyFieldBinding";
|
|
9
7
|
import { EnumValuesChip } from "../../preview";
|
|
10
8
|
import { FieldProps, FormContext, PropertyFieldBindingProps, PropertyOrBuilder } from "../../types";
|
|
11
9
|
import { getDefaultValueFor, getIconForProperty, } from "../../util";
|
|
12
10
|
import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "../../util/common";
|
|
13
|
-
import {
|
|
11
|
+
import { cls, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
|
|
12
|
+
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* If the `oneOf` property is specified, this fields render each array entry as
|
|
@@ -28,7 +27,7 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
28
27
|
isSubmitting,
|
|
29
28
|
setValue,
|
|
30
29
|
setFieldValue,
|
|
31
|
-
|
|
30
|
+
minimalistView,
|
|
32
31
|
property,
|
|
33
32
|
includeDescription,
|
|
34
33
|
underlyingValueHasChanged,
|
|
@@ -62,14 +61,17 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
62
61
|
}, [context, lastAddedId, property.oneOf, propertyKey, value]);
|
|
63
62
|
|
|
64
63
|
const title = (
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
<LabelWithIconAndTooltip
|
|
65
|
+
propertyKey={propertyKey}
|
|
66
|
+
icon={getIconForProperty(property, "small")}
|
|
67
|
+
required={property.validation?.required}
|
|
68
|
+
title={property.name}
|
|
69
|
+
className={"text-text-secondary dark:text-text-secondary-dark"}/>
|
|
69
70
|
);
|
|
70
71
|
|
|
71
72
|
const firstOneOfKey = Object.keys(property.oneOf.properties)[0];
|
|
72
73
|
const body = <FormikArrayContainer value={value}
|
|
74
|
+
className={"flex flex-col gap-3"}
|
|
73
75
|
name={propertyKey}
|
|
74
76
|
addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
|
|
75
77
|
buildEntry={buildEntry}
|
|
@@ -85,15 +87,15 @@ export function BlockFieldBinding<T extends Array<any>>({
|
|
|
85
87
|
|
|
86
88
|
<>
|
|
87
89
|
|
|
88
|
-
{!
|
|
90
|
+
{!minimalistView &&
|
|
89
91
|
<ExpandablePanel
|
|
90
|
-
|
|
92
|
+
innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
|
|
91
93
|
initiallyExpanded={expanded}
|
|
92
94
|
title={title}>
|
|
93
95
|
{body}
|
|
94
96
|
</ExpandablePanel>}
|
|
95
97
|
|
|
96
|
-
{
|
|
98
|
+
{minimalistView && body}
|
|
97
99
|
|
|
98
100
|
<FieldHelperText includeDescription={includeDescription}
|
|
99
101
|
showError={showError}
|
|
@@ -148,7 +150,7 @@ function BlockEntry({
|
|
|
148
150
|
const type = value && value[typeField];
|
|
149
151
|
const [typeInternal, setTypeInternal] = useState<string | undefined>(type ?? undefined);
|
|
150
152
|
|
|
151
|
-
const
|
|
153
|
+
const formex = useFormex();
|
|
152
154
|
|
|
153
155
|
useEffect(() => {
|
|
154
156
|
if (!type) {
|
|
@@ -180,28 +182,27 @@ function BlockEntry({
|
|
|
180
182
|
context,
|
|
181
183
|
autoFocus,
|
|
182
184
|
partOfArray: false,
|
|
183
|
-
|
|
184
|
-
tableMode: false
|
|
185
|
+
minimalistView: true
|
|
185
186
|
}
|
|
186
187
|
: undefined;
|
|
187
188
|
|
|
188
189
|
const updateType = (newType: any) => {
|
|
189
190
|
const newSelectedProperty = newType ? properties[newType] : undefined;
|
|
190
191
|
setTypeInternal(newType);
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
formex.setFieldTouched(typeFieldName, true);
|
|
193
|
+
formex.setFieldValue(typeFieldName, newType);
|
|
194
|
+
formex.setFieldValue(valueFieldName, newSelectedProperty ? getDefaultValueFor(newSelectedProperty) : null);
|
|
194
195
|
};
|
|
195
196
|
|
|
196
197
|
return (
|
|
197
|
-
<div className={
|
|
198
|
+
<div className={cls(paperMixin, "bg-transparent p-2")}>
|
|
198
199
|
|
|
199
|
-
<
|
|
200
|
-
required={true}
|
|
200
|
+
<Field
|
|
201
201
|
name={typeFieldName}
|
|
202
202
|
>
|
|
203
|
-
{(fieldProps
|
|
204
|
-
|
|
203
|
+
{(fieldProps) => {
|
|
204
|
+
const value1 = fieldProps.field.value !== undefined && fieldProps.field.value !== null ? fieldProps.field.value as string : "";
|
|
205
|
+
return (
|
|
205
206
|
<>
|
|
206
207
|
<Select
|
|
207
208
|
className="mb-2"
|
|
@@ -209,7 +210,7 @@ function BlockEntry({
|
|
|
209
210
|
className={"px-4 py-2 font-medium"}>Type</Typography>}
|
|
210
211
|
size={"small"}
|
|
211
212
|
position={"item-aligned"}
|
|
212
|
-
value={
|
|
213
|
+
value={value1}
|
|
213
214
|
renderValue={(enumKey: any) =>
|
|
214
215
|
<EnumValuesChip
|
|
215
216
|
enumKey={enumKey}
|
|
@@ -231,9 +232,10 @@ function BlockEntry({
|
|
|
231
232
|
)}
|
|
232
233
|
</Select>
|
|
233
234
|
</>
|
|
234
|
-
)
|
|
235
|
+
);
|
|
235
236
|
}
|
|
236
|
-
|
|
237
|
+
}
|
|
238
|
+
</Field>
|
|
237
239
|
|
|
238
240
|
{fieldProps && (
|
|
239
241
|
// It is important to use this key to force a re-render of the field on type change
|
|
@@ -2,11 +2,12 @@ import React from "react";
|
|
|
2
2
|
|
|
3
3
|
import { FieldProps } from "../../types";
|
|
4
4
|
|
|
5
|
-
import { FieldHelperText } from "../components";
|
|
6
|
-
import {
|
|
7
|
-
import { useClearRestoreValue, useCustomizationController } from "../../hooks";
|
|
5
|
+
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
6
|
+
import { useCustomizationController } from "../../hooks";
|
|
8
7
|
import { getIconForProperty } from "../../util";
|
|
9
8
|
import { DateTimeField } from "@firecms/ui";
|
|
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={"medium"}
|
|
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}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react";
|
|
2
|
-
import { DataType,
|
|
2
|
+
import { DataType, FieldProps, GeoPoint } from "../../types";
|
|
3
3
|
|
|
4
|
-
import { ArrayContainer
|
|
5
|
-
import { FieldHelperText } from "../components";
|
|
4
|
+
import { ArrayContainer } from "../../components";
|
|
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,
|
|
@@ -32,32 +33,37 @@ type MapEditViewRowState = [number, {
|
|
|
32
33
|
*
|
|
33
34
|
* @group Form fields
|
|
34
35
|
*/
|
|
35
|
-
export function KeyValueFieldBinding
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
export function KeyValueFieldBinding({
|
|
37
|
+
propertyKey,
|
|
38
|
+
value,
|
|
39
|
+
showError,
|
|
40
|
+
error,
|
|
41
|
+
disabled,
|
|
42
|
+
property,
|
|
43
|
+
setValue,
|
|
44
|
+
minimalistView,
|
|
45
|
+
includeDescription,
|
|
46
|
+
underlyingValueHasChanged,
|
|
47
|
+
autoFocus,
|
|
48
|
+
context
|
|
49
|
+
}: FieldProps<Record<string, any>>) {
|
|
49
50
|
|
|
50
51
|
const expanded = (property.expanded === undefined ? true : property.expanded) || autoFocus;
|
|
51
52
|
|
|
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<T extends Record<string, any>>({
|
|
|
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<T extends Record<string, any>>({
|
|
|
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 {
|
|
@@ -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()}
|
|
@@ -349,7 +355,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
349
355
|
</div>;
|
|
350
356
|
} else if (dataType === "map") {
|
|
351
357
|
return <div
|
|
352
|
-
className={
|
|
358
|
+
className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
|
|
353
359
|
<MapEditView value={entryValue}
|
|
354
360
|
fieldName={fieldKey}
|
|
355
361
|
setValue={(updatedValue) => {
|
|
@@ -375,7 +381,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
375
381
|
<Typography key={rowId.toString()}
|
|
376
382
|
component={"div"}
|
|
377
383
|
className="font-mono flex flex-row gap-1">
|
|
378
|
-
<div className="w-[
|
|
384
|
+
<div className="w-[300px] max-w-[30%]">
|
|
379
385
|
<TextField
|
|
380
386
|
value={fieldKey}
|
|
381
387
|
placeholder={"key"}
|
|
@@ -389,32 +395,32 @@ function MapKeyValueRow<T extends Record<string, any>>({
|
|
|
389
395
|
<div className="flex-grow">
|
|
390
396
|
{(dataType !== "map" && dataType !== "array") && buildInput(entryValue, fieldKey, dataType)}
|
|
391
397
|
</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
|
-
</
|
|
398
|
+
<div className={"flex flex-col"}>
|
|
399
|
+
<Menu
|
|
400
|
+
trigger={<IconButton size={"smallest"}>
|
|
401
|
+
<ArrowDropDownIcon size={"small"}/>
|
|
402
|
+
</IconButton>}
|
|
403
|
+
>
|
|
404
|
+
<MenuItem dense
|
|
405
|
+
onClick={() => doUpdateDataType("string")}>string</MenuItem>
|
|
406
|
+
<MenuItem dense
|
|
407
|
+
onClick={() => doUpdateDataType("number")}>number</MenuItem>
|
|
408
|
+
<MenuItem dense
|
|
409
|
+
onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
|
|
410
|
+
<MenuItem dense
|
|
411
|
+
onClick={() => doUpdateDataType("date")}>date</MenuItem>
|
|
412
|
+
<MenuItem dense
|
|
413
|
+
onClick={() => doUpdateDataType("map")}>map</MenuItem>
|
|
414
|
+
<MenuItem dense
|
|
415
|
+
onClick={() => doUpdateDataType("array")}>array</MenuItem>
|
|
416
|
+
</Menu>
|
|
417
|
+
|
|
418
|
+
<IconButton aria-label="delete"
|
|
419
|
+
size={"smallest"}
|
|
420
|
+
onClick={onDeleteClick}>
|
|
421
|
+
<RemoveIcon size={"smallest"}/>
|
|
422
|
+
</IconButton>
|
|
423
|
+
</div>
|
|
418
424
|
</Typography>
|
|
419
425
|
|
|
420
426
|
{(dataType === "map" || dataType === "array") && buildInput(entryValue, fieldKey, dataType)}
|
|
@@ -482,7 +488,7 @@ function ArrayKeyValueRow<T>({
|
|
|
482
488
|
Arrays of arrays are not supported.
|
|
483
489
|
</Typography>;
|
|
484
490
|
} else if (dataType === "map") {
|
|
485
|
-
return <div className={
|
|
491
|
+
return <div className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
|
|
486
492
|
<MapEditView value={entryValue}
|
|
487
493
|
setValue={(updatedValue) => {
|
|
488
494
|
setValue(updatedValue);
|
|
@@ -546,7 +552,7 @@ function getDataType(value: any): DataType | undefined {
|
|
|
546
552
|
return "array";
|
|
547
553
|
} else if (value instanceof Date) {
|
|
548
554
|
return "date";
|
|
549
|
-
} else if (value
|
|
555
|
+
} else if (value?.isEntityReference && value?.isEntityReference()) {
|
|
550
556
|
return "reference";
|
|
551
557
|
} else if (value instanceof GeoPoint) {
|
|
552
558
|
return "geopoint";
|