@firecms/core 3.0.0-canary.15 → 3.0.0-canary.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +19 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -5
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +7 -6
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +1 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +2 -1
- package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +4 -1
- package/dist/components/index.d.ts +4 -2
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +18 -4
- package/dist/core/FireCMS.d.ts +2 -2
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -4
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +1 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +3 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +3 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +3 -4
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +16536 -13058
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20159 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/types/auth.d.ts +7 -11
- package/dist/types/collections.d.ts +53 -18
- package/dist/types/datasource.d.ts +51 -35
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +18 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +63 -41
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +6 -5
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +22 -12
- package/dist/types/properties.d.ts +34 -21
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +2 -2
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +3 -3
- package/dist/util/resolutions.d.ts +30 -16
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +128 -119
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +92 -25
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +1 -1
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +25 -24
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +16 -8
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +82 -75
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +47 -41
- package/src/components/EntityView.tsx +10 -10
- package/src/components/ErrorView.tsx +3 -3
- package/src/components/HomePage/DefaultHomePage.tsx +25 -19
- package/src/components/HomePage/FavouritesView.tsx +1 -1
- package/src/components/HomePage/NavigationCard.tsx +4 -4
- package/src/components/HomePage/NavigationCardBinding.tsx +2 -2
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +9 -9
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
- package/src/components/common/index.ts +1 -0
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +23 -2
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +178 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +717 -154
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +54 -53
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +2 -1
- package/src/core/field_configs.tsx +8 -9
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +74 -35
- package/src/form/components/CustomIdField.tsx +4 -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 +51 -32
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +54 -45
- package/src/form/field_bindings/MapFieldBinding.tsx +65 -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 +20 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
- package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
- package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
- package/src/form/index.tsx +4 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +12 -8
- package/src/hooks/data/useCollectionFetch.tsx +2 -2
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +5 -5
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +92 -34
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
- package/src/hooks/useValidateAuthenticator.tsx +21 -41
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +102 -22
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +11 -18
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -35
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +7 -13
- package/src/types/collections.ts +62 -20
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +60 -43
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +20 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +69 -45
- package/src/types/firecms.tsx +7 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +7 -7
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +24 -14
- package/src/types/properties.ts +39 -22
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +6 -6
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +1 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +45 -28
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +1 -0
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/EntityForm.d.ts +0 -77
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/EntityForm.tsx +0 -728
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { FieldProps } from "../../types";
|
|
4
4
|
|
|
5
5
|
import { PropertyPreview } from "../../preview";
|
|
6
|
-
import { FieldHelperText,
|
|
6
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
7
7
|
import { ErrorBoundary } from "../../components";
|
|
8
8
|
import { getIconForProperty } from "../../util";
|
|
9
|
-
import {
|
|
9
|
+
import { cls, paperMixin } from "@firecms/ui";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
*
|
|
@@ -21,7 +21,7 @@ export function ReadOnlyFieldBinding({
|
|
|
21
21
|
value,
|
|
22
22
|
error,
|
|
23
23
|
showError,
|
|
24
|
-
|
|
24
|
+
minimalistView,
|
|
25
25
|
property,
|
|
26
26
|
includeDescription,
|
|
27
27
|
context
|
|
@@ -30,30 +30,25 @@ export function ReadOnlyFieldBinding({
|
|
|
30
30
|
if (!context.entityId)
|
|
31
31
|
throw new Error("ReadOnlyFieldBinding: Entity id is null");
|
|
32
32
|
|
|
33
|
-
const entity: Entity<any> = {
|
|
34
|
-
id: context.entityId!,
|
|
35
|
-
values: context.values,
|
|
36
|
-
path: context.path
|
|
37
|
-
};
|
|
38
|
-
|
|
39
33
|
return (
|
|
40
34
|
|
|
41
35
|
<>
|
|
42
36
|
|
|
43
|
-
{!
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
{!minimalistView && <LabelWithIconAndTooltip
|
|
38
|
+
propertyKey={propertyKey}
|
|
39
|
+
icon={getIconForProperty(property, "small")}
|
|
40
|
+
required={property.validation?.required}
|
|
41
|
+
title={property.name}
|
|
42
|
+
className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
<div
|
|
50
|
-
className={
|
|
46
|
+
className={cls(paperMixin, "min-h-14 p-4 md:p-6 overflow-x-scroll no-scrollbar")}>
|
|
51
47
|
|
|
52
48
|
<ErrorBoundary>
|
|
53
49
|
<PropertyPreview propertyKey={propertyKey}
|
|
54
50
|
value={value}
|
|
55
51
|
property={property}
|
|
56
|
-
// entity={entity}
|
|
57
52
|
size={"medium"}/>
|
|
58
53
|
</ErrorBoundary>
|
|
59
54
|
|
|
@@ -3,12 +3,13 @@ import React, { useCallback, useMemo } from "react";
|
|
|
3
3
|
import { Entity, EntityCollection, EntityReference, FieldProps } from "../../types";
|
|
4
4
|
import { useNavigationController, useReferenceDialog } from "../../hooks";
|
|
5
5
|
import { ReadOnlyFieldBinding } from "./ReadOnlyFieldBinding";
|
|
6
|
-
import { FieldHelperText,
|
|
6
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
7
7
|
import { ErrorView } from "../../components";
|
|
8
|
-
import { ReferencePreview } from "../../preview";
|
|
9
|
-
import { getIconForProperty, getReferenceFrom } from "../../util";
|
|
10
|
-
import { Button } from "@firecms/ui";
|
|
8
|
+
import { EmptyValue, ReferencePreview } from "../../preview";
|
|
9
|
+
import { getIconForProperty, getReferenceFrom, IconForView } from "../../util";
|
|
11
10
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
11
|
+
import { EntityPreviewContainer } from "../../components/EntityPreview";
|
|
12
|
+
import { cls } from "@firecms/ui";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Field that opens a reference selection dialog.
|
|
@@ -17,7 +18,7 @@ import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
|
17
18
|
* and tables to the specified properties.
|
|
18
19
|
* @group Form fields
|
|
19
20
|
*/
|
|
20
|
-
export function ReferenceFieldBinding
|
|
21
|
+
export function ReferenceFieldBinding(props: FieldProps) {
|
|
21
22
|
|
|
22
23
|
if (typeof props.property.path !== "string") {
|
|
23
24
|
return <ReadOnlyFieldBinding {...props}/>
|
|
@@ -27,19 +28,21 @@ export function ReferenceFieldBinding<M extends Record<string, any>>(props: Fiel
|
|
|
27
28
|
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
function ReferenceFieldBindingInternal
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
function ReferenceFieldBindingInternal({
|
|
32
|
+
propertyKey,
|
|
33
|
+
value,
|
|
34
|
+
setValue,
|
|
35
|
+
error,
|
|
36
|
+
showError,
|
|
37
|
+
isSubmitting,
|
|
38
|
+
disabled,
|
|
39
|
+
minimalistView,
|
|
40
|
+
touched,
|
|
41
|
+
autoFocus,
|
|
42
|
+
property,
|
|
43
|
+
includeDescription,
|
|
44
|
+
size = "medium"
|
|
45
|
+
}: FieldProps<EntityReference>) {
|
|
43
46
|
if (!property.path) {
|
|
44
47
|
throw new Error("Property path is required for ReferenceFieldBinding");
|
|
45
48
|
}
|
|
@@ -75,17 +78,19 @@ function ReferenceFieldBindingInternal<M extends Record<string, any>>({
|
|
|
75
78
|
}
|
|
76
79
|
);
|
|
77
80
|
|
|
78
|
-
const onEntryClick =
|
|
81
|
+
const onEntryClick = (e: React.SyntheticEvent) => {
|
|
79
82
|
e.preventDefault();
|
|
80
83
|
referenceDialogController.open();
|
|
81
|
-
}
|
|
84
|
+
};
|
|
82
85
|
|
|
83
86
|
return (
|
|
84
87
|
<>
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
{!minimalistView && <LabelWithIconAndTooltip
|
|
89
|
+
propertyKey={propertyKey}
|
|
90
|
+
icon={getIconForProperty(property, "small")}
|
|
91
|
+
required={property.validation?.required}
|
|
92
|
+
title={property.name}
|
|
93
|
+
className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
|
|
89
94
|
|
|
90
95
|
{!collection && <ErrorView
|
|
91
96
|
error={"The specified collection does not exist. Check console"}/>}
|
|
@@ -96,18 +101,24 @@ function ReferenceFieldBindingInternal<M extends Record<string, any>>({
|
|
|
96
101
|
disabled={!property.path}
|
|
97
102
|
previewProperties={property.previewProperties}
|
|
98
103
|
hover={!disabled}
|
|
99
|
-
size={
|
|
104
|
+
size={size}
|
|
100
105
|
onClick={disabled || isSubmitting ? undefined : onEntryClick}
|
|
101
106
|
reference={value}
|
|
107
|
+
includeEntityLink={property.includeEntityLink}
|
|
108
|
+
includeId={property.includeId}
|
|
102
109
|
/>}
|
|
103
110
|
|
|
104
111
|
{!value && <div className="justify-center text-left">
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
112
|
+
<EntityPreviewContainer className={cls("px-6 h-16 text-sm font-medium flex items-center gap-6",
|
|
113
|
+
disabled || isSubmitting
|
|
114
|
+
? "text-surface-accent-500"
|
|
115
|
+
: "cursor-pointer text-surface-accent-700 dark:text-surface-accent-300 hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800")}
|
|
116
|
+
onClick={onEntryClick}
|
|
117
|
+
size={"medium"}>
|
|
118
|
+
<IconForView collectionOrView={collection}
|
|
119
|
+
className={"text-surface-300 dark:text-surface-600"}/>
|
|
120
|
+
{`Edit ${property.name}`.toUpperCase()}
|
|
121
|
+
</EntityPreviewContainer>
|
|
111
122
|
</div>}
|
|
112
123
|
</>}
|
|
113
124
|
|
|
@@ -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 { ClearIcon,
|
|
6
|
+
import { getIconForProperty, resolveEnumValues } from "../../util";
|
|
7
|
+
import { ClearIcon, 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 = "medium"
|
|
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,15 +50,20 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
48
50
|
<>
|
|
49
51
|
|
|
50
52
|
<Select
|
|
51
|
-
|
|
53
|
+
size={size === "medium" ? "medium" : "small"}
|
|
54
|
+
value={value !== undefined && value != null ? value.toString() : ""}
|
|
52
55
|
disabled={disabled}
|
|
53
56
|
position="item-aligned"
|
|
54
|
-
inputClassName={
|
|
55
|
-
label={
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
inputClassName={cls("w-full")}
|
|
58
|
+
label={
|
|
59
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
60
|
+
<LabelWithIcon
|
|
61
|
+
icon={getIconForProperty(property, "small")}
|
|
62
|
+
required={property.validation?.required}
|
|
63
|
+
title={property.name}
|
|
64
|
+
className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
|
|
65
|
+
/>
|
|
66
|
+
</PropertyIdCopyTooltip>}
|
|
60
67
|
endAdornment={
|
|
61
68
|
property.clearable && <IconButton
|
|
62
69
|
onClick={handleClearClick}>
|
|
@@ -73,7 +80,7 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
73
80
|
return <EnumValuesChip
|
|
74
81
|
enumKey={enumKey}
|
|
75
82
|
enumValues={enumValues}
|
|
76
|
-
size={
|
|
83
|
+
size={size}/>;
|
|
77
84
|
}}
|
|
78
85
|
>
|
|
79
86
|
{enumValues && enumValues.map((option) => {
|
|
@@ -83,7 +90,7 @@ export function SelectFieldBinding<T extends EnumType>({
|
|
|
83
90
|
<EnumValuesChip
|
|
84
91
|
enumKey={String(option.id)}
|
|
85
92
|
enumValues={enumValues}
|
|
86
|
-
size={
|
|
93
|
+
size={size}/>
|
|
87
94
|
</SelectItem>
|
|
88
95
|
})}
|
|
89
96
|
</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
|
|
|
@@ -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}
|