@firecms/core 3.0.0-canary.18 → 3.0.0-canary.182
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 +5 -4
- 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 +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21537 -14243
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +23973 -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 +71 -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 +66 -42
- 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 +31 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +23 -12
- package/dist/types/properties.d.ts +51 -23
- 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 +3 -3
- 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 +61 -48
- 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 +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +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/EntityCollectionViewActions.tsx +4 -2
- 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 +62 -52
- 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 +3 -3
- 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 +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- 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 +36 -12
- 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/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +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 +1001 -213
- package/src/core/EntitySidePanel.tsx +80 -17
- 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 +85 -44
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/LabelWithIcon.tsx +30 -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 +31 -17
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
- package/src/form/field_bindings/MapFieldBinding.tsx +72 -53
- 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 +56 -35
- 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 +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -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 +150 -50
- 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 +17 -37
- 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 +22 -33
- 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 +87 -27
- 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 +72 -46
- 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 +37 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +25 -14
- package/src/types/properties.ts +59 -24
- 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 +10 -8
- 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/join_collections.ts +3 -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/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/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/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
|
@@ -2,36 +2,34 @@ import React, { useCallback } from "react";
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
ArrayProperty,
|
|
5
|
-
Entity,
|
|
6
|
-
EntityCollection,
|
|
7
5
|
FieldProps,
|
|
6
|
+
PropertyOrBuilder,
|
|
8
7
|
ResolvedArrayProperty,
|
|
9
8
|
ResolvedStringProperty,
|
|
10
9
|
StorageConfig
|
|
11
10
|
} from "../../types";
|
|
12
11
|
import { useDropzone } from "react-dropzone";
|
|
13
12
|
import { PreviewSize } from "../../preview";
|
|
14
|
-
import { FieldHelperText,
|
|
13
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
15
14
|
|
|
16
|
-
import { getIconForProperty, isReadOnly } from "../../util";
|
|
15
|
+
import { getIconForProperty, isReadOnly, resolveProperty } from "../../util";
|
|
17
16
|
import { useSnackbarController, useStorageSource } from "../../hooks";
|
|
18
17
|
import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
|
|
19
18
|
import { StorageFieldItem, useStorageUploadController } from "../../util/useStorageUploadController";
|
|
20
19
|
import { StorageUploadProgress } from "../components/StorageUploadProgress";
|
|
21
20
|
import { StorageItemPreview } from "../components/StorageItemPreview";
|
|
22
21
|
import {
|
|
23
|
-
|
|
22
|
+
cls,
|
|
24
23
|
fieldBackgroundDisabledMixin,
|
|
25
24
|
fieldBackgroundHoverMixin,
|
|
26
25
|
fieldBackgroundMixin,
|
|
27
|
-
focusedMixin,
|
|
28
26
|
Typography
|
|
29
27
|
} from "@firecms/ui";
|
|
30
28
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
31
29
|
|
|
32
30
|
const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
|
|
33
31
|
const disabledClasses = "border-dotted-gray"
|
|
34
|
-
const nonActiveDropClasses =
|
|
32
|
+
const nonActiveDropClasses = fieldBackgroundHoverMixin
|
|
35
33
|
const activeDropClasses = "pt-0 border-2 border-solid"
|
|
36
34
|
const acceptDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-green-500"
|
|
37
35
|
const rejectDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-red-500"
|
|
@@ -52,7 +50,7 @@ export function StorageUploadFieldBinding({
|
|
|
52
50
|
error,
|
|
53
51
|
showError,
|
|
54
52
|
autoFocus,
|
|
55
|
-
|
|
53
|
+
minimalistView,
|
|
56
54
|
property,
|
|
57
55
|
includeDescription,
|
|
58
56
|
context,
|
|
@@ -81,7 +79,7 @@ export function StorageUploadFieldBinding({
|
|
|
81
79
|
propertyKey,
|
|
82
80
|
value,
|
|
83
81
|
storageSource,
|
|
84
|
-
disabled,
|
|
82
|
+
disabled: disabled ?? false,
|
|
85
83
|
onChange: setValue
|
|
86
84
|
});
|
|
87
85
|
|
|
@@ -91,33 +89,31 @@ export function StorageUploadFieldBinding({
|
|
|
91
89
|
setValue
|
|
92
90
|
});
|
|
93
91
|
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
path: context.path
|
|
98
|
-
};
|
|
92
|
+
const resolvedProperty = resolveProperty({
|
|
93
|
+
propertyOrBuilder: property as PropertyOrBuilder,
|
|
94
|
+
}) as ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
99
95
|
|
|
100
96
|
return (
|
|
101
97
|
|
|
102
98
|
<>
|
|
103
99
|
|
|
104
|
-
{!
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
{!minimalistView &&
|
|
101
|
+
<LabelWithIconAndTooltip
|
|
102
|
+
propertyKey={propertyKey}
|
|
103
|
+
icon={getIconForProperty(property, "small")}
|
|
104
|
+
required={property.validation?.required}
|
|
105
|
+
title={property.name}
|
|
106
|
+
className={"h-8text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
|
|
109
107
|
|
|
110
108
|
<StorageUpload
|
|
111
109
|
value={internalValue}
|
|
112
|
-
collection={context.collection}
|
|
113
110
|
name={propertyKey}
|
|
114
|
-
disabled={disabled}
|
|
115
|
-
autoFocus={autoFocus}
|
|
116
|
-
property={
|
|
111
|
+
disabled={disabled ?? false}
|
|
112
|
+
autoFocus={autoFocus ?? false}
|
|
113
|
+
property={resolvedProperty}
|
|
117
114
|
onChange={setValue}
|
|
118
115
|
setInternalValue={setInternalValue}
|
|
119
116
|
onFilesAdded={onFilesAdded}
|
|
120
|
-
entity={entity}
|
|
121
117
|
onFileUploadComplete={onFileUploadComplete}
|
|
122
118
|
storagePathBuilder={storagePathBuilder}
|
|
123
119
|
storage={storage}
|
|
@@ -135,7 +131,6 @@ export function StorageUploadFieldBinding({
|
|
|
135
131
|
|
|
136
132
|
function FileDropComponent({
|
|
137
133
|
storage,
|
|
138
|
-
collection,
|
|
139
134
|
disabled,
|
|
140
135
|
isDraggingOver,
|
|
141
136
|
onFilesAdded,
|
|
@@ -144,7 +139,6 @@ function FileDropComponent({
|
|
|
144
139
|
autoFocus,
|
|
145
140
|
internalValue,
|
|
146
141
|
property,
|
|
147
|
-
entity,
|
|
148
142
|
onClear,
|
|
149
143
|
metadata,
|
|
150
144
|
storagePathBuilder,
|
|
@@ -154,7 +148,6 @@ function FileDropComponent({
|
|
|
154
148
|
helpText
|
|
155
149
|
}: {
|
|
156
150
|
storage: StorageConfig,
|
|
157
|
-
collection: EntityCollection,
|
|
158
151
|
disabled: boolean,
|
|
159
152
|
isDraggingOver: boolean,
|
|
160
153
|
droppableProvided: any,
|
|
@@ -165,7 +158,6 @@ function FileDropComponent({
|
|
|
165
158
|
property: ResolvedStringProperty,
|
|
166
159
|
onClear: (clearedStoragePathOrDownloadUrl: string) => void,
|
|
167
160
|
metadata: any,
|
|
168
|
-
entity: Entity<any>;
|
|
169
161
|
storagePathBuilder: (file: File) => string,
|
|
170
162
|
onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: any) => Promise<void>,
|
|
171
163
|
size: PreviewSize,
|
|
@@ -190,10 +182,18 @@ function FileDropComponent({
|
|
|
190
182
|
onDropRejected: (fileRejections, event) => {
|
|
191
183
|
for (const fileRejection of fileRejections) {
|
|
192
184
|
for (const error of fileRejection.errors) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
185
|
+
console.error("Error uploading file: ", error);
|
|
186
|
+
if (error.code === "file-too-large") {
|
|
187
|
+
snackbarContext.open({
|
|
188
|
+
type: "error",
|
|
189
|
+
message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
|
|
190
|
+
});
|
|
191
|
+
} else if (error.code === "file-invalid-type") {
|
|
192
|
+
snackbarContext.open({
|
|
193
|
+
type: "error",
|
|
194
|
+
message: "Error uploading file: File type is not supported"
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -203,12 +203,11 @@ function FileDropComponent({
|
|
|
203
203
|
return (
|
|
204
204
|
<div
|
|
205
205
|
{...getRootProps()}
|
|
206
|
-
className={
|
|
206
|
+
className={cls(
|
|
207
207
|
fieldBackgroundMixin,
|
|
208
208
|
disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
|
|
209
209
|
dropZoneClasses,
|
|
210
210
|
multipleFilesSupported && internalValue.length ? "" : "flex",
|
|
211
|
-
focusedMixin,
|
|
212
211
|
{
|
|
213
212
|
[nonActiveDropClasses]: !isDragActive,
|
|
214
213
|
[activeDropClasses]: isDragActive,
|
|
@@ -220,7 +219,7 @@ function FileDropComponent({
|
|
|
220
219
|
<div
|
|
221
220
|
{...droppableProvided.droppableProps}
|
|
222
221
|
ref={droppableProvided.innerRef}
|
|
223
|
-
className={
|
|
222
|
+
className={cls("flex items-center p-1 no-scrollbar",
|
|
224
223
|
multipleFilesSupported && internalValue.length ? "overflow-auto" : "",
|
|
225
224
|
multipleFilesSupported && internalValue.length ? "min-h-[180px]" : "min-h-[250px]"
|
|
226
225
|
)}
|
|
@@ -235,11 +234,9 @@ function FileDropComponent({
|
|
|
235
234
|
if (entry.storagePathOrDownloadUrl) {
|
|
236
235
|
child = (
|
|
237
236
|
<StorageItemPreview
|
|
238
|
-
collection={collection}
|
|
239
237
|
name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
|
|
240
238
|
property={property}
|
|
241
239
|
disabled={disabled}
|
|
242
|
-
entity={entity}
|
|
243
240
|
value={entry.storagePathOrDownloadUrl}
|
|
244
241
|
onRemove={onClear}
|
|
245
242
|
size={entry.size}/>
|
|
@@ -268,7 +265,7 @@ function FileDropComponent({
|
|
|
268
265
|
ref={provided.innerRef}
|
|
269
266
|
{...provided.draggableProps}
|
|
270
267
|
{...provided.dragHandleProps}
|
|
271
|
-
className={
|
|
268
|
+
className={cls("rounded-md")}
|
|
272
269
|
style={{
|
|
273
270
|
...provided.draggableProps.style
|
|
274
271
|
}}
|
|
@@ -299,7 +296,6 @@ function FileDropComponent({
|
|
|
299
296
|
|
|
300
297
|
export interface StorageUploadProps {
|
|
301
298
|
value: StorageFieldItem[];
|
|
302
|
-
collection: EntityCollection;
|
|
303
299
|
setInternalValue: (v: StorageFieldItem[]) => void;
|
|
304
300
|
name: string;
|
|
305
301
|
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
@@ -307,7 +303,6 @@ export interface StorageUploadProps {
|
|
|
307
303
|
multipleFilesSupported: boolean;
|
|
308
304
|
autoFocus: boolean;
|
|
309
305
|
disabled: boolean;
|
|
310
|
-
entity: Entity<any>;
|
|
311
306
|
storage: StorageConfig;
|
|
312
307
|
onFilesAdded: (acceptedFiles: File[]) => void;
|
|
313
308
|
storagePathBuilder: (file: File) => string;
|
|
@@ -315,7 +310,6 @@ export interface StorageUploadProps {
|
|
|
315
310
|
}
|
|
316
311
|
|
|
317
312
|
export function StorageUpload({
|
|
318
|
-
collection,
|
|
319
313
|
property,
|
|
320
314
|
name,
|
|
321
315
|
value,
|
|
@@ -327,7 +321,6 @@ export function StorageUpload({
|
|
|
327
321
|
onFilesAdded,
|
|
328
322
|
autoFocus,
|
|
329
323
|
storage,
|
|
330
|
-
entity,
|
|
331
324
|
storagePathBuilder,
|
|
332
325
|
}: StorageUploadProps) {
|
|
333
326
|
|
|
@@ -346,7 +339,7 @@ export function StorageUpload({
|
|
|
346
339
|
}
|
|
347
340
|
|
|
348
341
|
const metadata: Record<string, unknown> | undefined = storage?.metadata;
|
|
349
|
-
const size = multipleFilesSupported ? "
|
|
342
|
+
const size = multipleFilesSupported ? "medium" : "large";
|
|
350
343
|
|
|
351
344
|
const moveItem = useCallback((fromIndex: number, toIndex: number) => {
|
|
352
345
|
if (!multipleFilesSupported) return;
|
|
@@ -408,11 +401,10 @@ export function StorageUpload({
|
|
|
408
401
|
className="rounded"
|
|
409
402
|
>
|
|
410
403
|
<StorageItemPreview
|
|
411
|
-
collection={collection}
|
|
412
404
|
name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
|
|
405
|
+
placeholder={true}
|
|
413
406
|
property={renderProperty}
|
|
414
407
|
disabled={true}
|
|
415
|
-
entity={entity}
|
|
416
408
|
value={entry.storagePathOrDownloadUrl as string}
|
|
417
409
|
onRemove={onClear}
|
|
418
410
|
size={entry.size}/>
|
|
@@ -422,7 +414,6 @@ export function StorageUpload({
|
|
|
422
414
|
>
|
|
423
415
|
{(provided, snapshot) => {
|
|
424
416
|
return <FileDropComponent storage={storage}
|
|
425
|
-
collection={collection}
|
|
426
417
|
disabled={disabled}
|
|
427
418
|
isDraggingOver={snapshot.isDraggingOver}
|
|
428
419
|
droppableProvided={provided}
|
|
@@ -431,7 +422,6 @@ export function StorageUpload({
|
|
|
431
422
|
autoFocus={autoFocus}
|
|
432
423
|
internalValue={value}
|
|
433
424
|
property={renderProperty}
|
|
434
|
-
entity={entity}
|
|
435
425
|
onClear={onClear}
|
|
436
426
|
metadata={metadata}
|
|
437
427
|
storagePathBuilder={storagePathBuilder}
|
|
@@ -5,6 +5,7 @@ import { getIconForProperty } from "../../util";
|
|
|
5
5
|
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
6
6
|
import { BooleanSwitchWithLabel } from "@firecms/ui";
|
|
7
7
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
8
|
+
import { PropertyIdCopyTooltip } from "../../components";
|
|
8
9
|
|
|
9
10
|
type SwitchFieldProps = FieldProps<boolean>;
|
|
10
11
|
|
|
@@ -15,18 +16,18 @@ type SwitchFieldProps = FieldProps<boolean>;
|
|
|
15
16
|
* and tables to the specified properties.
|
|
16
17
|
* @group Form fields
|
|
17
18
|
*/
|
|
18
|
-
export const SwitchFieldBinding =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
export const SwitchFieldBinding = function SwitchFieldBinding({
|
|
20
|
+
propertyKey,
|
|
21
|
+
value,
|
|
22
|
+
setValue,
|
|
23
|
+
error,
|
|
24
|
+
showError,
|
|
25
|
+
autoFocus,
|
|
26
|
+
disabled,
|
|
27
|
+
size = "large",
|
|
28
|
+
property,
|
|
29
|
+
includeDescription
|
|
30
|
+
}: SwitchFieldProps) {
|
|
30
31
|
|
|
31
32
|
useClearRestoreValue({
|
|
32
33
|
property,
|
|
@@ -37,17 +38,21 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
37
38
|
return (
|
|
38
39
|
<>
|
|
39
40
|
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
42
|
+
<BooleanSwitchWithLabel
|
|
43
|
+
value={value}
|
|
44
|
+
onValueChange={(v) => setValue(v)}
|
|
45
|
+
error={showError}
|
|
46
|
+
className={property.widthPercentage !== undefined ? "mt-8" : undefined}
|
|
47
|
+
label={<LabelWithIcon
|
|
48
|
+
icon={getIconForProperty(property, "small")}
|
|
49
|
+
required={property.validation?.required}
|
|
50
|
+
title={property.name}/>}
|
|
51
|
+
disabled={disabled}
|
|
52
|
+
autoFocus={autoFocus}
|
|
53
|
+
size={size}
|
|
54
|
+
/>
|
|
55
|
+
</PropertyIdCopyTooltip>
|
|
51
56
|
|
|
52
57
|
<FieldHelperText includeDescription={includeDescription}
|
|
53
58
|
showError={showError}
|
|
@@ -57,4 +62,4 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
57
62
|
</>
|
|
58
63
|
|
|
59
64
|
);
|
|
60
|
-
}
|
|
65
|
+
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React, { useCallback } from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { CloseIcon, Collapse, IconButton, TextField } from "@firecms/ui";
|
|
4
4
|
import { FieldProps, PreviewType } from "../../types";
|
|
5
5
|
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
6
6
|
import { getIconForProperty } from "../../util";
|
|
7
7
|
import { PropertyPreview } from "../../preview";
|
|
8
8
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
9
|
+
import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
|
|
9
10
|
|
|
10
11
|
interface TextFieldBindingProps<T extends string | number> extends FieldProps<T> {
|
|
11
12
|
allowInfinity?: boolean
|
|
@@ -18,7 +19,6 @@ interface TextFieldBindingProps<T extends string | number> extends FieldProps<T>
|
|
|
18
19
|
* @group Form fields
|
|
19
20
|
*/
|
|
20
21
|
export function TextFieldBinding<T extends string | number>({
|
|
21
|
-
context,
|
|
22
22
|
propertyKey,
|
|
23
23
|
value,
|
|
24
24
|
setValue,
|
|
@@ -28,6 +28,7 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
28
28
|
autoFocus,
|
|
29
29
|
property,
|
|
30
30
|
includeDescription,
|
|
31
|
+
size = "large"
|
|
31
32
|
}: TextFieldBindingProps<T>) {
|
|
32
33
|
|
|
33
34
|
let multiline: boolean | undefined;
|
|
@@ -67,27 +68,30 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
67
68
|
const isMultiline = Boolean(multiline);
|
|
68
69
|
|
|
69
70
|
const inputType = property.dataType === "number" ? "number" : undefined;
|
|
70
|
-
return (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
71
|
+
return (<>
|
|
72
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
73
|
+
<TextField
|
|
74
|
+
size={size}
|
|
75
|
+
value={value}
|
|
76
|
+
onChange={onChange}
|
|
77
|
+
autoFocus={autoFocus}
|
|
78
|
+
className={property.widthPercentage !== undefined ? "mt-8" : undefined}
|
|
79
|
+
label={<LabelWithIcon
|
|
80
|
+
icon={getIconForProperty(property, "small")}
|
|
81
|
+
required={property.validation?.required}
|
|
82
|
+
title={property.name}/>}
|
|
83
|
+
type={inputType}
|
|
84
|
+
multiline={isMultiline}
|
|
85
|
+
disabled={disabled}
|
|
86
|
+
endAdornment={
|
|
87
|
+
property.clearable && <IconButton
|
|
88
|
+
onClick={handleClearClick}>
|
|
89
|
+
<CloseIcon/>
|
|
90
|
+
</IconButton>
|
|
91
|
+
}
|
|
92
|
+
error={showError ? error : undefined}
|
|
93
|
+
inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
|
|
94
|
+
</PropertyIdCopyTooltip>
|
|
91
95
|
<FieldHelperText includeDescription={includeDescription}
|
|
92
96
|
showError={showError}
|
|
93
97
|
error={error}
|
|
@@ -100,7 +104,7 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
100
104
|
<PropertyPreview
|
|
101
105
|
value={value}
|
|
102
106
|
property={property}
|
|
103
|
-
size={
|
|
107
|
+
size={size}/>
|
|
104
108
|
</Collapse>}
|
|
105
109
|
|
|
106
110
|
</>
|
package/src/form/index.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectFieldBinding } from "./field_bindings/SelectFieldBinding";
|
|
2
|
-
import {
|
|
2
|
+
import { MultiSelectFieldBinding } from "./field_bindings/MultiSelectFieldBinding";
|
|
3
3
|
import { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";
|
|
4
4
|
import { StorageUploadFieldBinding } from "./field_bindings/StorageUploadFieldBinding";
|
|
5
5
|
import { TextFieldBinding } from "./field_bindings/TextFieldBinding";
|
|
@@ -11,13 +11,13 @@ import { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
|
|
|
11
11
|
import { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
|
|
12
12
|
import { BlockFieldBinding } from "./field_bindings/BlockFieldBinding";
|
|
13
13
|
import { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
|
|
14
|
-
import {
|
|
14
|
+
import { MarkdownEditorFieldBinding } from "./field_bindings/MarkdownEditorFieldBinding";
|
|
15
15
|
import { ArrayCustomShapedFieldBinding } from "./field_bindings/ArrayCustomShapedFieldBinding";
|
|
16
16
|
|
|
17
17
|
export {
|
|
18
18
|
ArrayCustomShapedFieldBinding,
|
|
19
19
|
RepeatFieldBinding,
|
|
20
|
-
|
|
20
|
+
MultiSelectFieldBinding,
|
|
21
21
|
ArrayOfReferencesFieldBinding,
|
|
22
22
|
BlockFieldBinding,
|
|
23
23
|
DateTimeFieldBinding,
|
|
@@ -28,16 +28,11 @@ export {
|
|
|
28
28
|
SelectFieldBinding,
|
|
29
29
|
StorageUploadFieldBinding,
|
|
30
30
|
SwitchFieldBinding,
|
|
31
|
-
|
|
31
|
+
MarkdownEditorFieldBinding,
|
|
32
32
|
TextFieldBinding
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
export * from "./components";
|
|
36
36
|
|
|
37
|
-
export type { EntityFormProps } from "./EntityForm";
|
|
38
|
-
export {
|
|
39
|
-
EntityForm
|
|
40
|
-
} from "./EntityForm";
|
|
41
|
-
|
|
42
37
|
export { PropertyFieldBinding } from "./PropertyFieldBinding";
|
|
43
38
|
export * from "./useClearRestoreValue";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
|
-
import { CMSType, ResolvedProperty } from "../types";
|
|
2
|
+
import { CMSType, Property, ResolvedProperty } from "../types";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook we use to restore a value after it has been cleared
|
|
@@ -14,7 +14,7 @@ export function useClearRestoreValue<T extends CMSType>({
|
|
|
14
14
|
setValue
|
|
15
15
|
}:
|
|
16
16
|
{
|
|
17
|
-
property: ResolvedProperty<T>,
|
|
17
|
+
property: Property<T> | ResolvedProperty<T>,
|
|
18
18
|
value: T,
|
|
19
19
|
setValue: (value: T | null, shouldValidate?: boolean) => void
|
|
20
20
|
}) {
|
package/src/form/validation.ts
CHANGED
|
@@ -112,23 +112,7 @@ export function getYupMapObjectSchema({
|
|
|
112
112
|
if (validation?.required) {
|
|
113
113
|
return shape.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true);
|
|
114
114
|
}
|
|
115
|
-
return shape.nullable(true);
|
|
116
|
-
// const object: ObjectSchema<any> = yup.object().shape(objectSchema);
|
|
117
|
-
// return validation?.required
|
|
118
|
-
// ? object.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true)
|
|
119
|
-
// : yup.object().optional().default(undefined).notRequired().nullable(true).test(
|
|
120
|
-
// "empty-check",
|
|
121
|
-
// "Optional map can be empty",
|
|
122
|
-
// (o: any, testContext: any) => {
|
|
123
|
-
// try {
|
|
124
|
-
// if (!o || Object.keys(o).length === 0) return true;
|
|
125
|
-
// return object.validateSync(o);
|
|
126
|
-
// } catch (e) {
|
|
127
|
-
// testContext.createError(e);
|
|
128
|
-
// console.error(e);
|
|
129
|
-
// return false;
|
|
130
|
-
// }
|
|
131
|
-
// });
|
|
115
|
+
return yup.object().shape(shape.fields).default(undefined).notRequired().nullable(true);
|
|
132
116
|
}
|
|
133
117
|
|
|
134
118
|
function getYupStringSchema({
|
package/src/hooks/data/delete.ts
CHANGED
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
/**
|
|
13
13
|
* @group Hooks and utilities
|
|
14
14
|
*/
|
|
15
|
-
export type DeleteEntityWithCallbacksProps<M extends Record<string, any>,
|
|
15
|
+
export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, USER extends User = User> =
|
|
16
16
|
DeleteEntityProps<M>
|
|
17
17
|
& {
|
|
18
|
-
callbacks?: EntityCallbacks<M,
|
|
18
|
+
callbacks?: EntityCallbacks<M, USER>;
|
|
19
19
|
onDeleteSuccess?: (entity: Entity<M>) => void;
|
|
20
20
|
onDeleteFailure?: (entity: Entity<M>, e: Error) => void;
|
|
21
21
|
onPreDeleteHookError?: (entity: Entity<M>, e: Error) => void;
|
|
@@ -43,7 +43,7 @@ export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, UserTy
|
|
|
43
43
|
* @param context
|
|
44
44
|
* @group Hooks and utilities
|
|
45
45
|
*/
|
|
46
|
-
export async function deleteEntityWithCallbacks<M extends Record<string, any>,
|
|
46
|
+
export async function deleteEntityWithCallbacks<M extends Record<string, any>, USER extends User>({
|
|
47
47
|
dataSource,
|
|
48
48
|
entity,
|
|
49
49
|
collection,
|
|
@@ -56,7 +56,7 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
|
|
|
56
56
|
}: DeleteEntityWithCallbacksProps<M> & {
|
|
57
57
|
collection: ResolvedEntityCollection<M>,
|
|
58
58
|
dataSource: DataSource,
|
|
59
|
-
context: FireCMSContext<
|
|
59
|
+
context: FireCMSContext<USER>
|
|
60
60
|
}
|
|
61
61
|
): Promise<boolean> {
|
|
62
62
|
|
|
@@ -81,7 +81,8 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
return dataSource.deleteEntity({
|
|
84
|
-
entity
|
|
84
|
+
entity,
|
|
85
|
+
collection
|
|
85
86
|
}).then(() => {
|
|
86
87
|
onDeleteSuccess && onDeleteSuccess(entity);
|
|
87
88
|
try {
|
package/src/hooks/data/save.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DataSource,
|
|
3
3
|
Entity,
|
|
4
|
-
EntityCallbacks,
|
|
5
4
|
EntityCollection,
|
|
6
5
|
EntityValues,
|
|
7
6
|
FireCMSContext,
|
|
@@ -17,7 +16,6 @@ import { resolveCollection } from "../../util";
|
|
|
17
16
|
export type SaveEntityWithCallbacksProps<M extends Record<string, any>> =
|
|
18
17
|
SaveEntityProps<M> &
|
|
19
18
|
{
|
|
20
|
-
callbacks?: EntityCallbacks<M>;
|
|
21
19
|
onSaveSuccess?: (updatedEntity: Entity<M>) => void,
|
|
22
20
|
onSaveFailure?: (e: Error) => void,
|
|
23
21
|
onPreSaveHookError?: (e: Error) => void,
|
|
@@ -50,7 +48,7 @@ export type SaveEntityWithCallbacksProps<M extends Record<string, any>> =
|
|
|
50
48
|
* @see useDataSource
|
|
51
49
|
* @group Hooks and utilities
|
|
52
50
|
*/
|
|
53
|
-
export async function saveEntityWithCallbacks<M extends Record<string, any>,
|
|
51
|
+
export async function saveEntityWithCallbacks<M extends Record<string, any>, USER extends User>({
|
|
54
52
|
collection,
|
|
55
53
|
path,
|
|
56
54
|
entityId,
|
|
@@ -64,9 +62,9 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
64
62
|
onPreSaveHookError,
|
|
65
63
|
onSaveSuccessHookError
|
|
66
64
|
}: SaveEntityWithCallbacksProps<M> & {
|
|
67
|
-
collection: EntityCollection<M,
|
|
65
|
+
collection: EntityCollection<M, USER>,
|
|
68
66
|
dataSource: DataSource,
|
|
69
|
-
context: FireCMSContext<
|
|
67
|
+
context: FireCMSContext<USER>,
|
|
70
68
|
}
|
|
71
69
|
): Promise<void> {
|
|
72
70
|
|
|
@@ -77,7 +75,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
77
75
|
|
|
78
76
|
const customizationController = context.customizationController;
|
|
79
77
|
|
|
80
|
-
const resolvedPath = context.navigation.
|
|
78
|
+
const resolvedPath = context.navigation.resolveIdsFrom(path);
|
|
81
79
|
|
|
82
80
|
const callbacks = collection.callbacks;
|
|
83
81
|
if (callbacks?.onPreSave) {
|
|
@@ -87,7 +85,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
87
85
|
path,
|
|
88
86
|
values: previousValues as EntityValues<M>,
|
|
89
87
|
entityId,
|
|
90
|
-
|
|
88
|
+
propertyConfigs: customizationController.propertyConfigs
|
|
91
89
|
});
|
|
92
90
|
updatedValues = await callbacks.onPreSave({
|
|
93
91
|
collection: resolvedCollection,
|
|
@@ -109,6 +107,11 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
109
107
|
updatedValues = values;
|
|
110
108
|
}
|
|
111
109
|
|
|
110
|
+
console.debug("Saving entity", {
|
|
111
|
+
entityId,
|
|
112
|
+
updatedValues,
|
|
113
|
+
collection
|
|
114
|
+
});
|
|
112
115
|
return dataSource.saveEntity({
|
|
113
116
|
collection,
|
|
114
117
|
path: resolvedPath,
|
|
@@ -124,7 +127,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
124
127
|
path,
|
|
125
128
|
values: updatedValues as EntityValues<M>,
|
|
126
129
|
entityId,
|
|
127
|
-
|
|
130
|
+
propertyConfigs: customizationController.propertyConfigs
|
|
128
131
|
});
|
|
129
132
|
callbacks.onSaveSuccess({
|
|
130
133
|
collection: resolvedCollection,
|
|
@@ -145,6 +148,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
145
148
|
onSaveSuccess(entity);
|
|
146
149
|
})
|
|
147
150
|
.catch((e) => {
|
|
151
|
+
console.error("!!!", e);
|
|
148
152
|
if (callbacks?.onSaveFailure) {
|
|
149
153
|
|
|
150
154
|
const resolvedCollection = resolveCollection<M>({
|
|
@@ -152,7 +156,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
|
|
|
152
156
|
path,
|
|
153
157
|
values: updatedValues as EntityValues<M>,
|
|
154
158
|
entityId,
|
|
155
|
-
|
|
159
|
+
propertyConfigs: customizationController.propertyConfigs
|
|
156
160
|
});
|
|
157
161
|
callbacks.onSaveFailure({
|
|
158
162
|
collection: resolvedCollection,
|