@firecms/core 3.0.0-canary.17 → 3.0.0-canary.171
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 +21408 -14205
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +23883 -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 +19 -13
- 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 +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 +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/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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React, { useState } from "react";
|
|
2
|
-
import { CMSType, FieldProps, ResolvedProperty } from "../../types";
|
|
3
|
-
import { FieldHelperText,
|
|
4
|
-
import { ErrorBoundary } from "../../components";
|
|
5
|
-
import { getIconForProperty } from "../../util";
|
|
2
|
+
import { CMSType, FieldProps, PropertyFieldBindingProps, ResolvedProperty } from "../../types";
|
|
3
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
4
|
+
import { ArrayContainer, ArrayEntryParams, ErrorBoundary } from "../../components";
|
|
5
|
+
import { getArrayResolvedProperties, getDefaultValueFor, getIconForProperty, mergeDeep } from "../../util";
|
|
6
6
|
import { PropertyFieldBinding } from "../PropertyFieldBinding";
|
|
7
|
-
import { ExpandablePanel } from "@firecms/ui";
|
|
7
|
+
import { ExpandablePanel, Typography } from "@firecms/ui";
|
|
8
8
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -23,7 +23,7 @@ export function RepeatFieldBinding<T extends Array<any>>({
|
|
|
23
23
|
isSubmitting,
|
|
24
24
|
setValue,
|
|
25
25
|
setFieldValue,
|
|
26
|
-
|
|
26
|
+
minimalistView,
|
|
27
27
|
property,
|
|
28
28
|
includeDescription,
|
|
29
29
|
underlyingValueHasChanged,
|
|
@@ -34,8 +34,15 @@ export function RepeatFieldBinding<T extends Array<any>>({
|
|
|
34
34
|
if (!property.of)
|
|
35
35
|
throw Error("RepeatFieldBinding misconfiguration. Property `of` not set");
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
|
|
38
|
+
if (!resolvedProperties) {
|
|
39
|
+
resolvedProperties = getArrayResolvedProperties({
|
|
40
|
+
propertyValue: value,
|
|
41
|
+
propertyKey,
|
|
42
|
+
property,
|
|
43
|
+
ignoreMissingFields: false
|
|
44
|
+
})
|
|
45
|
+
}
|
|
39
46
|
|
|
40
47
|
const expanded = property.expanded === undefined ? true : property.expanded;
|
|
41
48
|
const ofProperty: ResolvedProperty<CMSType[]> = property.of as ResolvedProperty<CMSType[]>;
|
|
@@ -48,55 +55,66 @@ export function RepeatFieldBinding<T extends Array<any>>({
|
|
|
48
55
|
setValue
|
|
49
56
|
});
|
|
50
57
|
|
|
51
|
-
const buildEntry = (
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
const buildEntry = ({
|
|
59
|
+
index,
|
|
60
|
+
internalId,
|
|
61
|
+
storedProps,
|
|
62
|
+
storeProps
|
|
63
|
+
}: ArrayEntryParams) => {
|
|
64
|
+
const childProperty = resolvedProperties[index] ?? ofProperty;
|
|
65
|
+
const fieldProps: PropertyFieldBindingProps<any, any> = {
|
|
54
66
|
propertyKey: `${propertyKey}.${index}`,
|
|
55
67
|
disabled,
|
|
56
|
-
property: childProperty,
|
|
68
|
+
property: storedProps ? mergeDeep(childProperty, storedProps) : childProperty,
|
|
69
|
+
onPropertyChange: storeProps,
|
|
57
70
|
includeDescription,
|
|
58
71
|
underlyingValueHasChanged,
|
|
59
72
|
context,
|
|
60
|
-
tableMode: false,
|
|
61
73
|
partOfArray: true,
|
|
62
|
-
|
|
63
|
-
autoFocus: internalId === lastAddedId
|
|
74
|
+
minimalistView: false,
|
|
75
|
+
autoFocus: internalId === lastAddedId,
|
|
64
76
|
};
|
|
65
77
|
return <ErrorBoundary>
|
|
66
|
-
<PropertyFieldBinding {...fieldProps}/>
|
|
78
|
+
<PropertyFieldBinding {...fieldProps} index={index}/>
|
|
67
79
|
</ErrorBoundary>;
|
|
68
80
|
};
|
|
69
81
|
|
|
70
|
-
const arrayContainer = <
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
const arrayContainer = <ArrayContainer droppableId={propertyKey}
|
|
83
|
+
addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
|
|
84
|
+
value={value}
|
|
85
|
+
buildEntry={buildEntry}
|
|
86
|
+
onInternalIdAdded={setLastAddedId}
|
|
87
|
+
disabled={isSubmitting || Boolean(property.disabled)}
|
|
88
|
+
includeAddButton={!property.disabled}
|
|
89
|
+
newDefaultEntry={getDefaultValueFor(property.of)}
|
|
90
|
+
onValueChange={(value) => setFieldValue(propertyKey, value)}
|
|
91
|
+
/>;
|
|
79
92
|
|
|
80
|
-
const title = (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
const title = (<>
|
|
94
|
+
<LabelWithIconAndTooltip
|
|
95
|
+
propertyKey={propertyKey}
|
|
96
|
+
icon={getIconForProperty(property, "small")}
|
|
97
|
+
required={property.validation?.required}
|
|
98
|
+
title={property.name}
|
|
99
|
+
className={"flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
|
|
100
|
+
{Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
|
|
101
|
+
</>);
|
|
84
102
|
|
|
85
103
|
return (
|
|
86
104
|
|
|
87
105
|
<>
|
|
88
106
|
|
|
89
|
-
{!
|
|
90
|
-
|
|
91
|
-
|
|
107
|
+
{!minimalistView && <ExpandablePanel initiallyExpanded={expanded}
|
|
108
|
+
innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
|
|
109
|
+
title={title}>
|
|
92
110
|
{arrayContainer}
|
|
93
111
|
</ExpandablePanel>}
|
|
94
112
|
|
|
95
|
-
{
|
|
113
|
+
{minimalistView && arrayContainer}
|
|
96
114
|
|
|
97
115
|
<FieldHelperText includeDescription={includeDescription}
|
|
98
116
|
showError={showError}
|
|
99
|
-
error={error}
|
|
117
|
+
error={error ? (typeof error === "string" ? error : "A property of this array/repeat has an error") : undefined}
|
|
100
118
|
disabled={disabled}
|
|
101
119
|
property={property}/>
|
|
102
120
|
|
|
@@ -3,9 +3,10 @@ import React, { useCallback } from "react";
|
|
|
3
3
|
import { EnumType, FieldProps } from "../../types";
|
|
4
4
|
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
5
5
|
import { EnumValuesChip } from "../../preview";
|
|
6
|
-
import { getIconForProperty } from "../../util";
|
|
7
|
-
import {
|
|
6
|
+
import { getIconForProperty, resolveEnumValues } from "../../util";
|
|
7
|
+
import { CloseIcon, cls, IconButton, Select, SelectItem } from "@firecms/ui";
|
|
8
8
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
9
|
+
import { PropertyIdCopyTooltip } from "../../components";
|
|
9
10
|
|
|
10
11
|
type SelectProps<T extends EnumType> = FieldProps<T>;
|
|
11
12
|
|
|
@@ -27,10 +28,11 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
27
28
|
autoFocus,
|
|
28
29
|
touched,
|
|
29
30
|
property,
|
|
30
|
-
includeDescription
|
|
31
|
+
includeDescription,
|
|
32
|
+
size = "large"
|
|
31
33
|
}: SelectProps<T>) {
|
|
32
34
|
|
|
33
|
-
const enumValues = property.enumValues;
|
|
35
|
+
const enumValues = resolveEnumValues(property.enumValues ?? []);
|
|
34
36
|
|
|
35
37
|
useClearRestoreValue({
|
|
36
38
|
property,
|
|
@@ -48,19 +50,25 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
48
50
|
<>
|
|
49
51
|
|
|
50
52
|
<Select
|
|
51
|
-
value={value ? value.toString() : ""}
|
|
53
|
+
value={value !== undefined && value != null ? value.toString() : ""}
|
|
52
54
|
disabled={disabled}
|
|
55
|
+
size={size}
|
|
56
|
+
fullWidth={true}
|
|
53
57
|
position="item-aligned"
|
|
54
|
-
inputClassName={
|
|
55
|
-
label={
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
inputClassName={cls("w-full")}
|
|
59
|
+
label={
|
|
60
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
61
|
+
<LabelWithIcon
|
|
62
|
+
icon={getIconForProperty(property, "small")}
|
|
63
|
+
required={property.validation?.required}
|
|
64
|
+
title={property.name}
|
|
65
|
+
className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
|
|
66
|
+
/>
|
|
67
|
+
</PropertyIdCopyTooltip>}
|
|
60
68
|
endAdornment={
|
|
61
69
|
property.clearable && <IconButton
|
|
62
70
|
onClick={handleClearClick}>
|
|
63
|
-
<
|
|
71
|
+
<CloseIcon/>
|
|
64
72
|
</IconButton>
|
|
65
73
|
}
|
|
66
74
|
onValueChange={(updatedValue: string) => {
|
|
@@ -73,7 +81,7 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
73
81
|
return <EnumValuesChip
|
|
74
82
|
enumKey={enumKey}
|
|
75
83
|
enumValues={enumValues}
|
|
76
|
-
size={
|
|
84
|
+
size={size}/>;
|
|
77
85
|
}}
|
|
78
86
|
>
|
|
79
87
|
{enumValues && enumValues.map((option) => {
|
|
@@ -83,7 +91,7 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
83
91
|
<EnumValuesChip
|
|
84
92
|
enumKey={String(option.id)}
|
|
85
93
|
enumValues={enumValues}
|
|
86
|
-
size={
|
|
94
|
+
size={size}/>
|
|
87
95
|
</SelectItem>
|
|
88
96
|
})}
|
|
89
97
|
</Select>
|
|
@@ -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={"text-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,20 @@ 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
|
+
label={<LabelWithIcon
|
|
47
|
+
icon={getIconForProperty(property, "small")}
|
|
48
|
+
required={property.validation?.required}
|
|
49
|
+
title={property.name}/>}
|
|
50
|
+
disabled={disabled}
|
|
51
|
+
autoFocus={autoFocus}
|
|
52
|
+
size={size}
|
|
53
|
+
/>
|
|
54
|
+
</PropertyIdCopyTooltip>
|
|
51
55
|
|
|
52
56
|
<FieldHelperText includeDescription={includeDescription}
|
|
53
57
|
showError={showError}
|
|
@@ -57,4 +61,4 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
57
61
|
</>
|
|
58
62
|
|
|
59
63
|
);
|
|
60
|
-
}
|
|
64
|
+
};
|
|
@@ -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,29 @@ 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
|
+
label={<LabelWithIcon
|
|
79
|
+
icon={getIconForProperty(property, "small")}
|
|
80
|
+
required={property.validation?.required}
|
|
81
|
+
title={property.name}/>}
|
|
82
|
+
type={inputType}
|
|
83
|
+
multiline={isMultiline}
|
|
84
|
+
disabled={disabled}
|
|
85
|
+
endAdornment={
|
|
86
|
+
property.clearable && <IconButton
|
|
87
|
+
onClick={handleClearClick}>
|
|
88
|
+
<CloseIcon/>
|
|
89
|
+
</IconButton>
|
|
90
|
+
}
|
|
91
|
+
error={showError ? error : undefined}
|
|
92
|
+
inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
|
|
93
|
+
</PropertyIdCopyTooltip>
|
|
91
94
|
<FieldHelperText includeDescription={includeDescription}
|
|
92
95
|
showError={showError}
|
|
93
96
|
error={error}
|
|
@@ -100,7 +103,7 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
100
103
|
<PropertyPreview
|
|
101
104
|
value={value}
|
|
102
105
|
property={property}
|
|
103
|
-
size={
|
|
106
|
+
size={size}/>
|
|
104
107
|
</Collapse>}
|
|
105
108
|
|
|
106
109
|
</>
|