@firecms/core 3.0.0-canary.12 → 3.0.0-canary.120
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 +1 -1
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +17 -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 +2 -1
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- 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 +5 -3
- 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 +2 -2
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityPreview.d.ts +6 -5
- 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/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 +3 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +18 -4
- package/dist/core/FireCMS.d.ts +1 -1
- 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/FormikArrayContainer.d.ts +2 -1
- 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 -0
- 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 +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +2 -4
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +1 -2
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useBuildNavigationController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +15742 -12458
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +19965 -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 +3 -3
- package/dist/types/collections.d.ts +39 -5
- package/dist/types/datasource.d.ts +55 -35
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/fields.d.ts +47 -41
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +6 -5
- package/dist/types/plugins.d.ts +14 -4
- package/dist/types/properties.d.ts +34 -21
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +11 -3
- 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 +3 -2
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/resolutions.d.ts +27 -13
- 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 +25 -0
- package/src/app/Scaffold.tsx +245 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +15 -10
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +12 -19
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +41 -35
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +32 -17
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +17 -13
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +7 -10
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +75 -51
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityPreview.tsx +38 -34
- package/src/components/EntityView.tsx +5 -5
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +26 -19
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -6
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +11 -7
- package/src/components/SelectableTable/SelectableTable.tsx +7 -7
- 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 +35 -15
- package/src/components/VirtualTable/VirtualTable.tsx +70 -37
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -1
- package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- 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 +0 -2
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +2 -2
- 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 +11 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +3 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +52 -37
- package/src/core/DefaultDrawer.tsx +179 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +716 -149
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +39 -44
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +2 -0
- package/src/core/field_configs.tsx +4 -5
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +53 -21
- package/src/form/components/CustomIdField.tsx +4 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormikArrayContainer.tsx +4 -1
- package/src/form/components/LabelWithIcon.tsx +27 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +21 -11
- package/src/form/components/StorageUploadProgress.tsx +3 -4
- package/src/form/components/index.tsx +1 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +26 -15
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +29 -24
- package/src/form/field_bindings/BlockFieldBinding.tsx +14 -12
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +52 -46
- package/src/form/field_bindings/MapFieldBinding.tsx +17 -17
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/MultiSelectBinding.tsx +9 -5
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +41 -30
- package/src/form/field_bindings/RepeatFieldBinding.tsx +32 -19
- 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 +2 -7
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/delete.ts +2 -1
- package/src/hooks/data/save.ts +6 -1
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +91 -31
- package/src/hooks/useProjectLog.tsx +19 -8
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useValidateAuthenticator.tsx +21 -41
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +77 -81
- 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 +10 -17
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +24 -34
- 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 +1 -2
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +3 -3
- package/src/types/collections.ts +48 -7
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +65 -43
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +16 -3
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/fields.tsx +51 -45
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +7 -7
- package/src/types/plugins.tsx +16 -6
- package/src/types/properties.ts +39 -22
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +12 -3
- 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 +8 -2
- package/src/util/index.ts +1 -0
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +1 -0
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +1 -1
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +74 -41
- 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/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/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/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/types/fields.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
1
|
+
import { CMSType, Property, PropertyOrBuilder } from "./properties";
|
|
3
2
|
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
3
|
+
import { FormexController } from "@firecms/formex";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* When building a custom field you need to create a React component that takes
|
|
@@ -21,11 +21,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
21
21
|
*/
|
|
22
22
|
value: T;
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* Initial value of this field
|
|
26
|
-
*/
|
|
27
|
-
// initialValue: T | undefined;
|
|
28
|
-
|
|
29
24
|
/**
|
|
30
25
|
* Set value of field directly
|
|
31
26
|
*/
|
|
@@ -42,7 +37,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
42
37
|
/**
|
|
43
38
|
* Is the form currently submitting
|
|
44
39
|
*/
|
|
45
|
-
isSubmitting
|
|
40
|
+
isSubmitting?: boolean;
|
|
46
41
|
|
|
47
42
|
/**
|
|
48
43
|
* Should this field show the error indicator.
|
|
@@ -50,55 +45,50 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
50
45
|
* filled) but we don't want to show the error until the user has tried
|
|
51
46
|
* saving.
|
|
52
47
|
*/
|
|
53
|
-
showError
|
|
48
|
+
showError?: boolean;
|
|
54
49
|
|
|
55
50
|
/**
|
|
56
51
|
* Is there an error in this field. The error field has the same shape as
|
|
57
52
|
* the field, replacing values with a string containing the error.
|
|
58
53
|
* It takes the value `null` if there is no error
|
|
59
54
|
*/
|
|
60
|
-
error
|
|
55
|
+
error?: any | null;
|
|
61
56
|
|
|
62
57
|
/**
|
|
63
58
|
* Has this field been touched
|
|
64
59
|
*/
|
|
65
|
-
touched
|
|
60
|
+
touched?: boolean;
|
|
66
61
|
|
|
67
62
|
/**
|
|
68
63
|
* Property related to this field
|
|
69
64
|
*/
|
|
70
|
-
property: ResolvedProperty<T>;
|
|
65
|
+
property: Property<T> | ResolvedProperty<T>;
|
|
71
66
|
|
|
72
67
|
/**
|
|
73
68
|
* Should this field include a description
|
|
74
69
|
*/
|
|
75
|
-
includeDescription
|
|
70
|
+
includeDescription?: boolean;
|
|
76
71
|
|
|
77
72
|
/**
|
|
78
73
|
* Flag to indicate that the underlying value has been updated in the
|
|
79
74
|
* datasource
|
|
80
75
|
*/
|
|
81
|
-
underlyingValueHasChanged
|
|
76
|
+
underlyingValueHasChanged?: boolean;
|
|
82
77
|
|
|
83
78
|
/**
|
|
84
79
|
* Is this field part of an array
|
|
85
80
|
*/
|
|
86
|
-
partOfArray
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Is this field part of a block (oneOf array)
|
|
90
|
-
*/
|
|
91
|
-
partOfBlock: boolean;
|
|
81
|
+
partOfArray?: boolean;
|
|
92
82
|
|
|
93
83
|
/**
|
|
94
|
-
*
|
|
84
|
+
* Should this field render with the minimal amount of UI elements
|
|
95
85
|
*/
|
|
96
|
-
|
|
86
|
+
minimalistView?: boolean;
|
|
97
87
|
|
|
98
88
|
/**
|
|
99
89
|
* Should this field autofocus on mount
|
|
100
90
|
*/
|
|
101
|
-
autoFocus
|
|
91
|
+
autoFocus?: boolean;
|
|
102
92
|
|
|
103
93
|
/**
|
|
104
94
|
* Additional properties set by the developer
|
|
@@ -113,7 +103,12 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
113
103
|
/**
|
|
114
104
|
* Flag to indicate if this field should be disabled
|
|
115
105
|
*/
|
|
116
|
-
disabled
|
|
106
|
+
disabled?: boolean;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Size of the field
|
|
110
|
+
*/
|
|
111
|
+
size?: "smallest" | "small" | "medium";
|
|
117
112
|
|
|
118
113
|
}
|
|
119
114
|
|
|
@@ -124,37 +119,42 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
124
119
|
export interface FormContext<M extends Record<string, any> = any> {
|
|
125
120
|
|
|
126
121
|
/**
|
|
127
|
-
*
|
|
122
|
+
* Current values of the entity
|
|
128
123
|
*/
|
|
129
|
-
|
|
124
|
+
values: M;
|
|
130
125
|
|
|
131
126
|
/**
|
|
132
|
-
*
|
|
127
|
+
* Update the value of a field
|
|
128
|
+
* @param key
|
|
129
|
+
* @param value
|
|
130
|
+
* @param shouldValidate
|
|
133
131
|
*/
|
|
134
|
-
|
|
132
|
+
setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
|
|
135
133
|
|
|
136
134
|
/**
|
|
137
|
-
*
|
|
135
|
+
* Save the entity.
|
|
138
136
|
*/
|
|
139
|
-
|
|
137
|
+
save: (values: M) => void;
|
|
140
138
|
|
|
141
139
|
/**
|
|
142
|
-
*
|
|
140
|
+
* Collection of the entity being modified
|
|
143
141
|
*/
|
|
144
|
-
|
|
142
|
+
collection?: ResolvedEntityCollection<M>;
|
|
145
143
|
|
|
146
144
|
/**
|
|
147
|
-
*
|
|
148
|
-
* @param key
|
|
149
|
-
* @param value
|
|
150
|
-
* @param shouldValidate
|
|
145
|
+
* Entity id, it can be null if it's a new entity
|
|
151
146
|
*/
|
|
152
|
-
|
|
147
|
+
entityId: string;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Path this entity is located at
|
|
151
|
+
*/
|
|
152
|
+
path?: string;
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
|
-
*
|
|
155
|
+
* This is the underlying formex controller that powers the form
|
|
156
156
|
*/
|
|
157
|
-
|
|
157
|
+
formex: FormexController<M>;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
/**
|
|
@@ -192,11 +192,6 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
192
192
|
*/
|
|
193
193
|
underlyingValueHasChanged?: boolean;
|
|
194
194
|
|
|
195
|
-
/**
|
|
196
|
-
* Is this field being rendered in a table
|
|
197
|
-
*/
|
|
198
|
-
tableMode?: boolean;
|
|
199
|
-
|
|
200
195
|
/**
|
|
201
196
|
* Is this field part of an array
|
|
202
197
|
*/
|
|
@@ -205,7 +200,7 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
205
200
|
/**
|
|
206
201
|
* Is this field part of a block (oneOf array)
|
|
207
202
|
*/
|
|
208
|
-
|
|
203
|
+
minimalistView?: boolean;
|
|
209
204
|
|
|
210
205
|
/**
|
|
211
206
|
* Should the field take focus when rendered. When opening the popup view
|
|
@@ -217,4 +212,15 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
217
212
|
* Should this field be disabled
|
|
218
213
|
*/
|
|
219
214
|
disabled?: boolean;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Index of the field in the array.
|
|
218
|
+
* Only used when the field is part of an array.
|
|
219
|
+
*/
|
|
220
|
+
index?: number;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* The size of the field
|
|
224
|
+
*/
|
|
225
|
+
size?: "smallest" | "small" | "medium",
|
|
220
226
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -23,7 +23,6 @@ export * from "./plugins";
|
|
|
23
23
|
export * from "./analytics";
|
|
24
24
|
export * from "./firecms";
|
|
25
25
|
export * from "./roles";
|
|
26
|
-
export * from "./appcheck";
|
|
27
26
|
export * from "./export_import";
|
|
28
27
|
export * from "./modify_collections";
|
|
29
28
|
export * from "./analytics_controller";
|
package/src/types/navigation.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { EntityReference } from "./entities";
|
|
|
7
7
|
* attributes.
|
|
8
8
|
* @group Models
|
|
9
9
|
*/
|
|
10
|
-
export type NavigationController = {
|
|
10
|
+
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* List of the mapped collections in the CMS.
|
|
@@ -56,18 +56,17 @@ export type NavigationController = {
|
|
|
56
56
|
* Get the collection configuration for a given path.
|
|
57
57
|
* The collection is resolved from the given path or alias.
|
|
58
58
|
*/
|
|
59
|
-
getCollection:
|
|
60
|
-
|
|
61
|
-
includeUserOverride?: boolean) => EC | undefined;
|
|
59
|
+
getCollection: (pathOrId: string,
|
|
60
|
+
includeUserOverride?: boolean) => EC | undefined;
|
|
62
61
|
/**
|
|
63
|
-
* Get the collection configuration from its parent
|
|
62
|
+
* Get the collection configuration from its parent ids.
|
|
64
63
|
*/
|
|
65
|
-
getCollectionFromIds:
|
|
64
|
+
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
66
65
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the collection configuration from its parent path segments.
|
|
69
68
|
*/
|
|
70
|
-
getCollectionFromPaths:
|
|
69
|
+
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
71
70
|
|
|
72
71
|
/**
|
|
73
72
|
* Default path under the navigation routes of the CMS will be created
|
|
@@ -174,6 +173,7 @@ export interface CMSView {
|
|
|
174
173
|
* You can use any of the icons in the Material specs:
|
|
175
174
|
* https://fonts.google.com/icons
|
|
176
175
|
* e.g. 'account_tree' or 'person'
|
|
176
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
177
177
|
*/
|
|
178
178
|
icon?: string;
|
|
179
179
|
|
package/src/types/plugins.tsx
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
2
|
|
|
3
3
|
import { FireCMSContext } from "./firecms_context";
|
|
4
|
-
import { CollectionActionsProps, EntityCollection } from "./collections";
|
|
4
|
+
import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
|
|
5
5
|
import { User } from "./user";
|
|
6
6
|
import { FieldProps, FormContext } from "./fields";
|
|
7
7
|
import { CMSType, Property } from "./properties";
|
|
8
8
|
import { EntityStatus } from "./entities";
|
|
9
9
|
import { ResolvedProperty } from "./resolved_entities";
|
|
10
|
-
import { CMSView } from "./navigation";
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Interface used to define plugins for FireCMS.
|
|
14
13
|
* NOTE: This is a work in progress and the API is not stable yet.
|
|
15
14
|
* @group Core
|
|
16
15
|
*/
|
|
17
|
-
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
|
|
16
|
+
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
|
|
18
17
|
|
|
19
18
|
/**
|
|
20
19
|
* Key of the plugin. This is used to identify the plugin in the CMS.
|
|
@@ -94,9 +93,18 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
94
93
|
* toolbar.
|
|
95
94
|
*/
|
|
96
95
|
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
97
|
-
|
|
98
96
|
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
99
97
|
|
|
98
|
+
CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
|
|
99
|
+
collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
|
|
100
|
+
|
|
101
|
+
blockSearch?: (props: {
|
|
102
|
+
context: FireCMSContext,
|
|
103
|
+
path: string,
|
|
104
|
+
collection: EC,
|
|
105
|
+
parentCollectionIds?: string[]
|
|
106
|
+
}) => boolean;
|
|
107
|
+
|
|
100
108
|
showTextSearchBar?: (props: {
|
|
101
109
|
context: FireCMSContext,
|
|
102
110
|
path: string,
|
|
@@ -122,6 +130,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
122
130
|
parentCollectionIds: string[],
|
|
123
131
|
onHover: boolean,
|
|
124
132
|
collection: EC;
|
|
133
|
+
tableController: EntityTableController;
|
|
125
134
|
}>;
|
|
126
135
|
|
|
127
136
|
/**
|
|
@@ -132,6 +141,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
132
141
|
fullPath: string,
|
|
133
142
|
parentCollectionIds: string[],
|
|
134
143
|
collection: EC;
|
|
144
|
+
tableController: EntityTableController;
|
|
135
145
|
}>;
|
|
136
146
|
}
|
|
137
147
|
|
|
@@ -193,8 +203,8 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
|
|
|
193
203
|
property: Property<T> | ResolvedProperty<T>;
|
|
194
204
|
Field: React.ComponentType<FieldProps<T, any, M>>;
|
|
195
205
|
plugin: FireCMSPlugin;
|
|
196
|
-
path
|
|
197
|
-
collection
|
|
206
|
+
path?: string;
|
|
207
|
+
collection?: EC;
|
|
198
208
|
};
|
|
199
209
|
|
|
200
210
|
export interface PluginGenericProps<UserType extends User = User> {
|
package/src/types/properties.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldProps } from "./fields";
|
|
3
3
|
import { PropertyPreviewProps } from "../preview";
|
|
4
|
-
import { EntityReference, EntityValues, GeoPoint } from "./entities";
|
|
4
|
+
import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
|
|
5
5
|
import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
|
|
6
6
|
import { FilterValues } from "./collections";
|
|
7
7
|
import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
|
|
@@ -15,9 +15,10 @@ export type DataType<T extends CMSType = CMSType> =
|
|
|
15
15
|
T extends boolean ? "boolean" :
|
|
16
16
|
T extends Date ? "date" :
|
|
17
17
|
T extends GeoPoint ? "geopoint" :
|
|
18
|
-
T extends
|
|
19
|
-
T extends
|
|
20
|
-
T extends
|
|
18
|
+
T extends Vector ? "vector" :
|
|
19
|
+
T extends EntityReference ? "reference" :
|
|
20
|
+
T extends Array<any> ? "array" :
|
|
21
|
+
T extends Record<string, any> ? "map" : never;
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* @group Entity properties
|
|
@@ -48,7 +49,7 @@ export type AnyProperty =
|
|
|
48
49
|
/**
|
|
49
50
|
* @group Entity properties
|
|
50
51
|
*/
|
|
51
|
-
export type Property<T extends CMSType =
|
|
52
|
+
export type Property<T extends CMSType = any> =
|
|
52
53
|
T extends string ? StringProperty :
|
|
53
54
|
T extends number ? NumberProperty :
|
|
54
55
|
T extends boolean ? BooleanProperty :
|
|
@@ -148,7 +149,7 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
148
149
|
/**
|
|
149
150
|
* This value will be set by default for new entities.
|
|
150
151
|
*/
|
|
151
|
-
defaultValue?: T;
|
|
152
|
+
defaultValue?: T | null;
|
|
152
153
|
|
|
153
154
|
/**
|
|
154
155
|
* Should this property be editable. If set to true, the user will be able to modify the property and
|
|
@@ -276,6 +277,7 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
|
|
|
276
277
|
values,
|
|
277
278
|
previousValues,
|
|
278
279
|
propertyValue,
|
|
280
|
+
index,
|
|
279
281
|
path,
|
|
280
282
|
entityId
|
|
281
283
|
}: PropertyBuilderProps<M>) => Property<T> | null;
|
|
@@ -403,7 +405,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
403
405
|
/**
|
|
404
406
|
* @group Entity properties
|
|
405
407
|
*/
|
|
406
|
-
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType =
|
|
408
|
+
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
|
|
407
409
|
|
|
408
410
|
dataType: "array";
|
|
409
411
|
|
|
@@ -608,6 +610,16 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
|
|
|
608
610
|
*/
|
|
609
611
|
previewProperties?: string[];
|
|
610
612
|
|
|
613
|
+
/**
|
|
614
|
+
* Should the reference include the ID of the entity. Defaults to `true`
|
|
615
|
+
*/
|
|
616
|
+
includeId?: boolean;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Should the reference include a link to the entity (open the entity details). Defaults to `true`
|
|
620
|
+
*/
|
|
621
|
+
includeEntityLink?: boolean;
|
|
622
|
+
|
|
611
623
|
}
|
|
612
624
|
|
|
613
625
|
/**
|
|
@@ -722,13 +734,13 @@ export type StorageConfig = {
|
|
|
722
734
|
* You can use this prop to customize the uploaded filename.
|
|
723
735
|
* You can use a function as a callback or a string where you
|
|
724
736
|
* specify some placeholders that get replaced with the corresponding values.
|
|
725
|
-
* - {file} - Full file name
|
|
726
|
-
* - {file.name} - Name of the file without extension
|
|
727
|
-
* - {file.ext} - Extension of the file
|
|
728
|
-
* - {rand} - Random value used to avoid name collisions
|
|
729
|
-
* - {entityId} - ID of the entity
|
|
730
|
-
* - {propertyKey} - ID of this property
|
|
731
|
-
* - {path} - Path of this entity
|
|
737
|
+
* - `{file}` - Full file name
|
|
738
|
+
* - `{file.name}` - Name of the file without extension
|
|
739
|
+
* - `{file.ext}` - Extension of the file
|
|
740
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
741
|
+
* - `{entityId}` - ID of the entity
|
|
742
|
+
* - `{propertyKey}` - ID of this property
|
|
743
|
+
* - `{path}` - Path of this entity
|
|
732
744
|
*
|
|
733
745
|
* @param context
|
|
734
746
|
*/
|
|
@@ -739,13 +751,13 @@ export type StorageConfig = {
|
|
|
739
751
|
*
|
|
740
752
|
* You can use a function as a callback or a string where you
|
|
741
753
|
* specify some placeholders that get replaced with the corresponding values.
|
|
742
|
-
* - {file} - Full file name
|
|
743
|
-
* - {file.name} - Name of the file without extension
|
|
744
|
-
* - {file.ext} - Extension of the file
|
|
745
|
-
* - {rand} - Random value used to avoid name collisions
|
|
746
|
-
* - {entityId} - ID of the entity
|
|
747
|
-
* - {propertyKey} - ID of this property
|
|
748
|
-
* - {path} - Path of this entity
|
|
754
|
+
* - `{file}` - Full file name
|
|
755
|
+
* - `{file.name}` - Name of the file without extension
|
|
756
|
+
* - `{file.ext}` - Extension of the file
|
|
757
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
758
|
+
* - `{entityId}` - ID of the entity
|
|
759
|
+
* - `{propertyKey}` - ID of this property
|
|
760
|
+
* - `{path}` - Path of this entity
|
|
749
761
|
*/
|
|
750
762
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
751
763
|
|
|
@@ -772,6 +784,11 @@ export type StorageConfig = {
|
|
|
772
784
|
*/
|
|
773
785
|
postProcess?: (pathOrUrl: string) => Promise<string>;
|
|
774
786
|
|
|
787
|
+
/**
|
|
788
|
+
* You can use this prop in order to provide a custom preview URL.
|
|
789
|
+
* Useful when the file's path is different from the original field value
|
|
790
|
+
*/
|
|
791
|
+
previewUrl?: (fileName: string) => string;
|
|
775
792
|
}
|
|
776
793
|
|
|
777
794
|
/**
|
|
@@ -801,7 +818,7 @@ export interface UploadedFileContext {
|
|
|
801
818
|
/**
|
|
802
819
|
* Entity path. E.g. `products/PID/locales`
|
|
803
820
|
*/
|
|
804
|
-
path
|
|
821
|
+
path?: string;
|
|
805
822
|
|
|
806
823
|
/**
|
|
807
824
|
* Values of the current entity
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Controller to open the side dialog
|
|
3
5
|
* @group Hooks and utilities
|
|
@@ -14,6 +16,12 @@ export interface SideDialogsController {
|
|
|
14
16
|
*/
|
|
15
17
|
sidePanels: SideDialogPanelProps[];
|
|
16
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Override the current side panels
|
|
21
|
+
* @param panels
|
|
22
|
+
*/
|
|
23
|
+
setSidePanels: (panels: SideDialogPanelProps[]) => void;
|
|
24
|
+
|
|
17
25
|
/**
|
|
18
26
|
* Open one or multiple side panels
|
|
19
27
|
* @param props
|
|
@@ -65,4 +73,9 @@ export interface SideDialogPanelProps {
|
|
|
65
73
|
* Callback when the panel is closed
|
|
66
74
|
*/
|
|
67
75
|
onClose?: () => void;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Use this prop to store additional data in the panel
|
|
79
|
+
*/
|
|
80
|
+
additional?: any;
|
|
68
81
|
}
|
package/src/types/storage.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface UploadFileProps {
|
|
|
6
6
|
fileName?: string,
|
|
7
7
|
path?: string,
|
|
8
8
|
metadata?: any,
|
|
9
|
+
bucket?: string
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -16,6 +17,10 @@ export interface UploadFileResult {
|
|
|
16
17
|
* Storage path including the file name where the file was uploaded.
|
|
17
18
|
*/
|
|
18
19
|
path: string;
|
|
20
|
+
/**
|
|
21
|
+
* Bucket where the file was uploaded
|
|
22
|
+
*/
|
|
23
|
+
bucket: string;
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
/**
|
|
@@ -73,24 +78,28 @@ export interface StorageSource {
|
|
|
73
78
|
* @param fileName
|
|
74
79
|
* @param path
|
|
75
80
|
* @param metadata
|
|
81
|
+
* @param bucket
|
|
76
82
|
*/
|
|
77
83
|
uploadFile: ({
|
|
78
84
|
file,
|
|
79
85
|
fileName,
|
|
80
86
|
path,
|
|
81
|
-
metadata
|
|
87
|
+
metadata,
|
|
88
|
+
bucket
|
|
82
89
|
}: UploadFileProps) => Promise<UploadFileResult>;
|
|
83
90
|
|
|
84
91
|
/**
|
|
85
92
|
* Convert a storage path or URL into a download configuration
|
|
86
93
|
* @param path
|
|
94
|
+
* @param bucket
|
|
87
95
|
*/
|
|
88
|
-
getDownloadURL: (pathOrUrl: string) => Promise<DownloadConfig>;
|
|
96
|
+
getDownloadURL: (pathOrUrl: string, bucket?: string) => Promise<DownloadConfig>;
|
|
89
97
|
|
|
90
98
|
/**
|
|
91
99
|
* Get a file from a storage path.
|
|
92
100
|
* It returns null if the file does not exist.
|
|
93
101
|
* @param props
|
|
102
|
+
* @param bucket
|
|
94
103
|
*/
|
|
95
|
-
getFile: (path:string) => Promise<File | null>;
|
|
104
|
+
getFile: (path: string, bucket?: string) => Promise<File | null>;
|
|
96
105
|
}
|
package/src/util/entities.ts
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "../types";
|
|
16
16
|
import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "./common";
|
|
17
17
|
|
|
18
|
-
export function isReadOnly(property: Property | ResolvedProperty): boolean {
|
|
18
|
+
export function isReadOnly(property: Property<any> | ResolvedProperty<any>): boolean {
|
|
19
19
|
if (property.readOnly)
|
|
20
20
|
return true;
|
|
21
21
|
if (property.dataType === "date") {
|
|
@@ -48,12 +48,12 @@ export function getDefaultValuesFor<M extends Record<string, any>>(properties: P
|
|
|
48
48
|
|
|
49
49
|
export function getDefaultValueFor(property: PropertyOrBuilder) {
|
|
50
50
|
if (isPropertyBuilder(property)) return undefined;
|
|
51
|
-
if (property.
|
|
51
|
+
if (property.defaultValue || property.defaultValue === null) {
|
|
52
|
+
return property.defaultValue;
|
|
53
|
+
} else if (property.dataType === "map" && property.properties) {
|
|
52
54
|
const defaultValuesFor = getDefaultValuesFor(property.properties as Properties);
|
|
53
55
|
if (Object.keys(defaultValuesFor).length === 0) return undefined;
|
|
54
56
|
return defaultValuesFor;
|
|
55
|
-
} else if (property.defaultValue) {
|
|
56
|
-
return property.defaultValue;
|
|
57
57
|
} else {
|
|
58
58
|
return getDefaultValueForDataType(property.dataType);
|
|
59
59
|
}
|
|
@@ -139,7 +139,7 @@ export function sanitizeData<M extends Record<string, any>>
|
|
|
139
139
|
return result;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
export function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference
|
|
142
|
+
export function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference {
|
|
143
143
|
return new EntityReference(entity.id, entity.path);
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -152,6 +152,7 @@ export function traverseValuesProperties<M extends Record<string, any>>(
|
|
|
152
152
|
.map(([key, property]) => {
|
|
153
153
|
const inputValue = inputValues && (inputValues)[key];
|
|
154
154
|
const updatedValue = traverseValueProperty(inputValue, property as Property, operation);
|
|
155
|
+
if (updatedValue === null) return null;
|
|
155
156
|
if (updatedValue === undefined) return undefined;
|
|
156
157
|
return ({ [key]: updatedValue });
|
|
157
158
|
})
|
package/src/util/enums.ts
CHANGED
|
@@ -22,7 +22,7 @@ export function enumToObjectEntries(enumValues: EnumValues): EnumValueConfig[] {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export function getLabelOrConfigFrom(enumValues: EnumValueConfig[], key?: string | number): EnumValueConfig | undefined {
|
|
25
|
-
if (
|
|
25
|
+
if (key === null || key === undefined) return undefined;
|
|
26
26
|
return enumValues.find((entry) => String(entry.id) === String(key));
|
|
27
27
|
}
|
|
28
28
|
|
package/src/util/icon_list.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { iconSynonyms } from "./icon_synonyms";
|
|
2
2
|
import { iconKeys } from "@firecms/ui";
|
|
3
|
+
import Fuse from "fuse.js";
|
|
3
4
|
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
import * as JsSearch from "js-search";
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
iconsSearch.addIndex("synonyms");
|
|
9
|
-
|
|
10
|
-
iconsSearch.addDocuments(iconKeys
|
|
6
|
+
const map = iconKeys
|
|
11
7
|
.map((importName) => {
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const iconSynonym = importName in iconSynonyms ? iconSynonyms[importName] : "";
|
|
12
10
|
return {
|
|
13
11
|
key: importName,
|
|
14
|
-
|
|
15
|
-
synonyms: icon_synonyms[importName] ?? [],
|
|
12
|
+
synonyms: iconSynonym,
|
|
16
13
|
}
|
|
17
|
-
})
|
|
14
|
+
});
|
|
15
|
+
export const iconsSearch = new Fuse(map, {
|
|
16
|
+
isCaseSensitive: false,
|
|
17
|
+
shouldSort: true,
|
|
18
|
+
distance: 0,
|
|
19
|
+
keys: ["key", "synonyms"]
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
|