@firecms/core 3.0.0-canary.17 → 3.0.0-canary.170
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 +21352 -14215
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +23817 -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 +17 -12
- 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 +30 -6
- 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/{useDataSourceEntityCollectionTableController.tsx → useDataSourceTableController.tsx} +142 -22
- 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/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
|
@@ -51,6 +51,13 @@ export const PropertyFieldBinding = React.memo(PropertyFieldBindingInternal, (a:
|
|
|
51
51
|
if (a.propertyKey !== b.propertyKey) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
|
+
if (a.index !== b.index) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (a.size !== b.size) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
54
61
|
const aIsBuilder = isPropertyBuilder(a.property) || a.property.fromBuilder;
|
|
55
62
|
const bIsBuilder = isPropertyBuilder(b.property) || b.property.fromBuilder;
|
|
56
63
|
|
|
@@ -74,17 +81,20 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
74
81
|
context,
|
|
75
82
|
includeDescription,
|
|
76
83
|
underlyingValueHasChanged,
|
|
77
|
-
disabled,
|
|
78
|
-
tableMode,
|
|
84
|
+
disabled: disabledProp,
|
|
79
85
|
partOfArray,
|
|
80
|
-
|
|
86
|
+
minimalistView,
|
|
81
87
|
autoFocus,
|
|
88
|
+
index,
|
|
89
|
+
size,
|
|
90
|
+
onPropertyChange
|
|
82
91
|
}: PropertyFieldBindingProps<T, M>): ReactElement<PropertyFieldBindingProps<T, M>> {
|
|
83
92
|
|
|
84
93
|
const customizationController = useCustomizationController();
|
|
85
94
|
|
|
86
95
|
return (
|
|
87
96
|
<Field
|
|
97
|
+
key={propertyKey}
|
|
88
98
|
name={propertyKey}
|
|
89
99
|
>
|
|
90
100
|
{(fieldProps) => {
|
|
@@ -92,14 +102,16 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
92
102
|
let Component: ComponentType<FieldProps<T>> | undefined;
|
|
93
103
|
const resolvedProperty: ResolvedProperty<T> | null = resolveProperty({
|
|
94
104
|
propertyKey,
|
|
95
|
-
propertyValue: fieldProps.field.value,
|
|
96
105
|
propertyOrBuilder: property,
|
|
97
106
|
values: fieldProps.form.values,
|
|
98
107
|
path: context.path,
|
|
99
108
|
entityId: context.entityId,
|
|
100
|
-
|
|
109
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
110
|
+
index
|
|
101
111
|
});
|
|
102
112
|
|
|
113
|
+
const disabled = disabledProp || isReadOnly(resolvedProperty) || Boolean(resolvedProperty?.disabled);
|
|
114
|
+
|
|
103
115
|
if (resolvedProperty === null || isHidden(resolvedProperty)) {
|
|
104
116
|
return <></>;
|
|
105
117
|
} else if (isReadOnly(resolvedProperty)) {
|
|
@@ -111,16 +123,23 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
111
123
|
} else {
|
|
112
124
|
const propertyConfig = getFieldConfig(resolvedProperty, customizationController.propertyConfigs);
|
|
113
125
|
if (!propertyConfig) {
|
|
114
|
-
console.log("INTERNAL: Could not find field config for property", {
|
|
126
|
+
console.log("INTERNAL: Could not find field config for property", {
|
|
127
|
+
propertyKey,
|
|
128
|
+
property,
|
|
129
|
+
resolvedProperty,
|
|
130
|
+
fields: customizationController.propertyConfigs,
|
|
131
|
+
propertyConfig
|
|
132
|
+
});
|
|
115
133
|
throw new Error(`INTERNAL: Could not find field config for property ${propertyKey}`);
|
|
116
134
|
}
|
|
117
135
|
const configProperty = resolveProperty({
|
|
136
|
+
propertyKey,
|
|
118
137
|
propertyOrBuilder: propertyConfig.property,
|
|
119
|
-
propertyValue: fieldProps.field.value,
|
|
120
138
|
values: fieldProps.form.values,
|
|
121
139
|
path: context.path,
|
|
122
140
|
entityId: context.entityId,
|
|
123
|
-
|
|
141
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
142
|
+
index
|
|
124
143
|
});
|
|
125
144
|
Component = configProperty.Field as ComponentType<FieldProps<T>>;
|
|
126
145
|
}
|
|
@@ -139,16 +158,17 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
139
158
|
underlyingValueHasChanged,
|
|
140
159
|
context,
|
|
141
160
|
disabled,
|
|
142
|
-
tableMode,
|
|
143
161
|
partOfArray,
|
|
144
|
-
|
|
145
|
-
autoFocus
|
|
162
|
+
minimalistView,
|
|
163
|
+
autoFocus,
|
|
164
|
+
size,
|
|
165
|
+
onPropertyChange
|
|
146
166
|
};
|
|
147
167
|
|
|
148
168
|
return <FieldInternal
|
|
149
169
|
Component={Component as ComponentType<FieldProps>}
|
|
150
170
|
componentProps={componentProps}
|
|
151
|
-
|
|
171
|
+
formexFieldProps={fieldProps}/>;
|
|
152
172
|
}}
|
|
153
173
|
</Field>
|
|
154
174
|
);
|
|
@@ -169,52 +189,59 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
169
189
|
property,
|
|
170
190
|
includeDescription,
|
|
171
191
|
underlyingValueHasChanged,
|
|
172
|
-
tableMode,
|
|
173
192
|
partOfArray,
|
|
174
|
-
|
|
193
|
+
minimalistView,
|
|
175
194
|
autoFocus,
|
|
176
195
|
context,
|
|
177
|
-
disabled
|
|
196
|
+
disabled,
|
|
197
|
+
size,
|
|
198
|
+
onPropertyChange
|
|
178
199
|
},
|
|
179
|
-
|
|
200
|
+
formexFieldProps
|
|
180
201
|
}:
|
|
181
202
|
{
|
|
182
203
|
Component: ComponentType<FieldProps<T, any, M>>,
|
|
183
204
|
componentProps: ResolvedPropertyFieldBindingProps<T, M>,
|
|
184
|
-
|
|
205
|
+
formexFieldProps: FormexFieldProps<T, any>
|
|
185
206
|
}) {
|
|
186
207
|
|
|
187
208
|
const { plugins } = useCustomizationController();
|
|
188
209
|
|
|
189
210
|
const customFieldProps: any = property.customProps;
|
|
190
|
-
const value =
|
|
191
|
-
// const initialValue =
|
|
192
|
-
const error = getIn(
|
|
193
|
-
const touched = getIn(
|
|
211
|
+
const value = formexFieldProps.field.value;
|
|
212
|
+
// const initialValue = formexFieldProps.meta.initialValue;
|
|
213
|
+
const error = getIn(formexFieldProps.form.errors, propertyKey);
|
|
214
|
+
const touched = getIn(formexFieldProps.form.touched, propertyKey);
|
|
194
215
|
|
|
195
216
|
const showError: boolean = error &&
|
|
196
|
-
(
|
|
217
|
+
(formexFieldProps.form.submitCount > 0 || property.validation?.unique) &&
|
|
197
218
|
(!Array.isArray(error) || !!error.filter((e: any) => !!e).length);
|
|
198
219
|
|
|
199
|
-
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent(
|
|
220
|
+
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent({
|
|
221
|
+
path: context.path,
|
|
222
|
+
collection: context.collection,
|
|
223
|
+
propertyKey: propertyKey,
|
|
224
|
+
property: property,
|
|
225
|
+
Component: Component,
|
|
226
|
+
plugins: plugins
|
|
227
|
+
});
|
|
200
228
|
const UsedComponent: ComponentType<FieldProps<T>> = WrappedComponent ?? Component;
|
|
201
229
|
|
|
202
|
-
const isSubmitting =
|
|
230
|
+
const isSubmitting = formexFieldProps.form.isSubmitting;
|
|
203
231
|
|
|
204
232
|
const setValue = useCallback((value: T | null, shouldValidate?: boolean) => {
|
|
205
|
-
|
|
206
|
-
|
|
233
|
+
formexFieldProps.form.setFieldTouched(propertyKey, true, false);
|
|
234
|
+
formexFieldProps.form.setFieldValue(propertyKey, value, shouldValidate);
|
|
207
235
|
}, []);
|
|
208
236
|
|
|
209
237
|
const setFieldValue = useCallback((otherPropertyKey: string, value: CMSType | null, shouldValidate?: boolean) => {
|
|
210
|
-
|
|
211
|
-
|
|
238
|
+
formexFieldProps.form.setFieldTouched(propertyKey, true, false);
|
|
239
|
+
formexFieldProps.form.setFieldValue(otherPropertyKey, value, shouldValidate);
|
|
212
240
|
}, []);
|
|
213
241
|
|
|
214
242
|
const cmsFieldProps: FieldProps<T, CustomProps, M> = {
|
|
215
243
|
propertyKey,
|
|
216
244
|
value: value as T,
|
|
217
|
-
// initialValue,
|
|
218
245
|
setValue,
|
|
219
246
|
setFieldValue,
|
|
220
247
|
error,
|
|
@@ -225,12 +252,13 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
225
252
|
property: property as ResolvedProperty<T>,
|
|
226
253
|
disabled: disabled ?? false,
|
|
227
254
|
underlyingValueHasChanged: underlyingValueHasChanged ?? false,
|
|
228
|
-
tableMode: tableMode ?? false,
|
|
229
255
|
partOfArray: partOfArray ?? false,
|
|
230
|
-
|
|
256
|
+
minimalistView: minimalistView ?? false,
|
|
231
257
|
autoFocus: autoFocus ?? false,
|
|
232
258
|
customProps: customFieldProps,
|
|
233
|
-
context
|
|
259
|
+
context,
|
|
260
|
+
size,
|
|
261
|
+
onPropertyChange
|
|
234
262
|
};
|
|
235
263
|
|
|
236
264
|
return (
|
|
@@ -266,13 +294,24 @@ const shouldPropertyReRender = (property: PropertyOrBuilder | ResolvedProperty,
|
|
|
266
294
|
}
|
|
267
295
|
}
|
|
268
296
|
|
|
269
|
-
|
|
270
|
-
path
|
|
271
|
-
collection
|
|
297
|
+
interface UseWrappedComponentParams<T extends CMSType = CMSType, M extends Record<string, any> = any> {
|
|
298
|
+
path?: string,
|
|
299
|
+
collection?: EntityCollection<M>,
|
|
272
300
|
propertyKey: string,
|
|
273
301
|
property: ResolvedProperty<T>,
|
|
274
302
|
Component: ComponentType<FieldProps<T, any, M>>,
|
|
275
303
|
plugins?: FireCMSPlugin[]
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function useWrappedComponent<T extends CMSType = CMSType, M extends Record<string, any> = any>(
|
|
307
|
+
{
|
|
308
|
+
path,
|
|
309
|
+
collection,
|
|
310
|
+
propertyKey,
|
|
311
|
+
property,
|
|
312
|
+
Component,
|
|
313
|
+
plugins
|
|
314
|
+
}: UseWrappedComponentParams<T, M>
|
|
276
315
|
): ComponentType<FieldProps<T, any, M>> | null {
|
|
277
316
|
|
|
278
317
|
const wrapperRef = useRef<ComponentType<FieldProps<T, any, M>> | null>((() => {
|
|
@@ -68,7 +68,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
68
68
|
? (
|
|
69
69
|
<>
|
|
70
70
|
|
|
71
|
-
<Tooltip title={"Copy"}
|
|
71
|
+
<Tooltip title={"Copy"}
|
|
72
|
+
asChild={true}>
|
|
72
73
|
<IconButton onClick={(e) => copy(entity.id)}
|
|
73
74
|
aria-label="copy-id">
|
|
74
75
|
<ContentCopyIcon size={"small"}/>
|
|
@@ -76,7 +77,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
76
77
|
</Tooltip>
|
|
77
78
|
|
|
78
79
|
{customizationController?.entityLinkBuilder &&
|
|
79
|
-
<Tooltip title={"Open in the console"}
|
|
80
|
+
<Tooltip title={"Open in the console"}
|
|
81
|
+
asChild={true}>
|
|
80
82
|
<IconButton component={"a"}
|
|
81
83
|
href={customizationController.entityLinkBuilder({ entity })}
|
|
82
84
|
rel="noopener noreferrer"
|
|
@@ -98,7 +100,9 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
98
100
|
|
|
99
101
|
{enumValues &&
|
|
100
102
|
<Select
|
|
103
|
+
size={"large"}
|
|
101
104
|
error={error}
|
|
105
|
+
fullWidth={true}
|
|
102
106
|
onValueChange={(v) => onChange(v as string)}
|
|
103
107
|
{...fieldProps}
|
|
104
108
|
renderValue={(option) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResolvedProperty } from "../../types";
|
|
1
|
+
import { Property, ResolvedProperty } from "../../types";
|
|
2
2
|
import { IconButton, InfoIcon, Tooltip, Typography } from "@firecms/ui";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -13,8 +13,8 @@ export function FieldHelperText({
|
|
|
13
13
|
disabled
|
|
14
14
|
}: {
|
|
15
15
|
error?: string,
|
|
16
|
-
showError
|
|
17
|
-
property: ResolvedProperty,
|
|
16
|
+
showError?: boolean,
|
|
17
|
+
property: ResolvedProperty | Property,
|
|
18
18
|
includeDescription?: boolean,
|
|
19
19
|
disabled?: boolean,
|
|
20
20
|
}
|
|
@@ -44,7 +44,7 @@ export function FieldHelperText({
|
|
|
44
44
|
{property.longDescription &&
|
|
45
45
|
<Tooltip title={property.longDescription}
|
|
46
46
|
side="bottom"
|
|
47
|
-
|
|
47
|
+
asChild={true}>
|
|
48
48
|
<IconButton
|
|
49
49
|
size={"small"}
|
|
50
50
|
className="self-start">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
2
|
|
|
3
3
|
interface LabelWithIconProps {
|
|
4
4
|
icon: React.ReactNode;
|
|
@@ -12,22 +12,30 @@ interface LabelWithIconProps {
|
|
|
12
12
|
* Render the label of with an icon and the title of a property
|
|
13
13
|
* @group Form custom fields
|
|
14
14
|
*/
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
export const LabelWithIcon = forwardRef<HTMLDivElement, LabelWithIconProps>(
|
|
16
|
+
({
|
|
17
|
+
icon,
|
|
18
|
+
title,
|
|
19
|
+
small,
|
|
20
|
+
className,
|
|
21
|
+
required
|
|
22
|
+
}, ref) => {
|
|
23
|
+
return (
|
|
24
|
+
<div
|
|
25
|
+
ref={ref}
|
|
26
|
+
className={`inline-flex items-center my-0.5 ${small ? "gap-1" : "gap-2"} ${className ?? ""}`}
|
|
27
|
+
>
|
|
28
|
+
{icon}
|
|
29
|
+
<span
|
|
30
|
+
className={`text-start font-medium text-${small ? "base" : "sm"} origin-top-left transform ${
|
|
31
|
+
small ? "translate-x-2 scale-75" : ""
|
|
32
|
+
}`}
|
|
33
|
+
>
|
|
34
|
+
{(title ?? "") + (required ? " *" : "")}
|
|
31
35
|
</span>
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
LabelWithIcon.displayName = "LabelWithIcon";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { LabelWithIcon } from "./LabelWithIcon";
|
|
3
|
+
import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
|
|
4
|
+
|
|
5
|
+
interface LabelWithIconAndTooltip {
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
title?: string;
|
|
8
|
+
small?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
propertyKey: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Render the label of with an icon and the title of a property
|
|
16
|
+
* @group Form custom fields
|
|
17
|
+
*/
|
|
18
|
+
export function LabelWithIconAndTooltip({
|
|
19
|
+
propertyKey,
|
|
20
|
+
className,
|
|
21
|
+
...props
|
|
22
|
+
}: LabelWithIconAndTooltip) {
|
|
23
|
+
return (
|
|
24
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey} className={className}>
|
|
25
|
+
<LabelWithIcon {...props}/>
|
|
26
|
+
</PropertyIdCopyTooltip>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
@@ -1,43 +1,45 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { ResolvedStringProperty } from "../../types";
|
|
4
4
|
import { PreviewSize, PropertyPreview } from "../../preview";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { cls, DescriptionIcon, IconButton, paperMixin, RemoveIcon, Tooltip } from "@firecms/ui";
|
|
7
7
|
import { ErrorBoundary } from "../../components";
|
|
8
8
|
|
|
9
9
|
interface StorageItemPreviewProps {
|
|
10
10
|
name: string;
|
|
11
11
|
property: ResolvedStringProperty;
|
|
12
12
|
value: string,
|
|
13
|
-
entity: Entity<any>,
|
|
14
13
|
onRemove: (value: string) => void;
|
|
15
14
|
size: PreviewSize;
|
|
16
15
|
disabled: boolean;
|
|
17
|
-
|
|
16
|
+
placeholder?: boolean;
|
|
17
|
+
className?: string;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export function StorageItemPreview({
|
|
21
21
|
name,
|
|
22
22
|
property,
|
|
23
23
|
value,
|
|
24
|
-
entity,
|
|
25
24
|
onRemove,
|
|
26
25
|
disabled,
|
|
27
26
|
size,
|
|
28
|
-
|
|
27
|
+
placeholder,
|
|
28
|
+
className
|
|
29
29
|
}: StorageItemPreviewProps) {
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
|
-
<div className={
|
|
32
|
+
<div className={cls(paperMixin,
|
|
33
33
|
"relative m-4 border-box flex items-center justify-center",
|
|
34
|
-
size === "
|
|
34
|
+
size === "large" ? "min-w-[220px] min-h-[220px] max-w-[220px]" : "min-w-[118px] min-h-[118px] max-w-[118px]",
|
|
35
|
+
className)}>
|
|
35
36
|
|
|
36
|
-
{!disabled &&
|
|
37
|
+
{!placeholder && !disabled &&
|
|
37
38
|
<div
|
|
38
|
-
className="absolute rounded-full -top-2 -right-2 z-10 bg-white dark:bg-
|
|
39
|
+
className="absolute rounded-full -top-2 -right-2 z-10 bg-white dark:bg-surface-900">
|
|
39
40
|
|
|
40
41
|
<Tooltip
|
|
42
|
+
asChild={true}
|
|
41
43
|
title="Remove">
|
|
42
44
|
<IconButton
|
|
43
45
|
size={"small"}
|
|
@@ -51,16 +53,24 @@ export function StorageItemPreview({
|
|
|
51
53
|
</div>
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
{value &&
|
|
56
|
+
{!placeholder && value &&
|
|
55
57
|
<ErrorBoundary>
|
|
56
58
|
<PropertyPreview propertyKey={name}
|
|
57
59
|
value={value}
|
|
58
60
|
property={property}
|
|
59
|
-
|
|
61
|
+
interactive={false}
|
|
60
62
|
size={size}/>
|
|
61
63
|
</ErrorBoundary>
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
{placeholder &&
|
|
67
|
+
<div
|
|
68
|
+
onClick={(e) => e.stopPropagation()}
|
|
69
|
+
className="flex flex-col items-center justify-center w-full h-full">
|
|
70
|
+
<DescriptionIcon className="text-surface-700 dark:text-surface-300"/>
|
|
71
|
+
</div>
|
|
72
|
+
}
|
|
73
|
+
|
|
64
74
|
|
|
65
75
|
</div>
|
|
66
76
|
);
|
|
@@ -3,8 +3,7 @@ import React, { useCallback } from "react";
|
|
|
3
3
|
import { useSnackbarController, useStorageSource } from "../../hooks";
|
|
4
4
|
import { StorageFieldItem } from "../../util/useStorageUploadController";
|
|
5
5
|
import { ErrorView } from "../../components";
|
|
6
|
-
import {
|
|
7
|
-
import { EntityCollection, StorageSource } from "../../types";
|
|
6
|
+
import { cls, paperMixin, Skeleton } from "@firecms/ui";
|
|
8
7
|
|
|
9
8
|
export interface StorageUploadItemProps {
|
|
10
9
|
storagePath: string;
|
|
@@ -49,7 +48,7 @@ export function StorageUploadProgress({
|
|
|
49
48
|
metadata
|
|
50
49
|
})
|
|
51
50
|
.then(async ({ path }) => {
|
|
52
|
-
console.debug("Upload successful");
|
|
51
|
+
console.debug("Upload successful", path);
|
|
53
52
|
await onFileUploadComplete(path, entry, metadata);
|
|
54
53
|
if (mounted.current)
|
|
55
54
|
setLoading(false);
|
|
@@ -88,7 +87,7 @@ export function StorageUploadProgress({
|
|
|
88
87
|
}
|
|
89
88
|
return (
|
|
90
89
|
|
|
91
|
-
<div className={
|
|
90
|
+
<div className={cls(paperMixin,
|
|
92
91
|
"relative m-4 border-box flex items-center justify-center",
|
|
93
92
|
`min-w-[${imageSize}px] min-h-[${imageSize}px]`)}>
|
|
94
93
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldProps } from "../../types";
|
|
3
|
-
import { FieldHelperText,
|
|
3
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
4
4
|
import { PropertyFieldBinding } from "../PropertyFieldBinding";
|
|
5
|
-
import { ExpandablePanel } from "@firecms/ui";
|
|
6
|
-
import { getIconForProperty } from "../../util";
|
|
5
|
+
import { ExpandablePanel, Typography } from "@firecms/ui";
|
|
6
|
+
import { getArrayResolvedProperties, getIconForProperty, isReadOnly } from "../../util";
|
|
7
7
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -20,7 +20,7 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
|
|
|
20
20
|
showError,
|
|
21
21
|
isSubmitting,
|
|
22
22
|
setValue,
|
|
23
|
-
|
|
23
|
+
minimalistView,
|
|
24
24
|
property,
|
|
25
25
|
includeDescription,
|
|
26
26
|
underlyingValueHasChanged,
|
|
@@ -28,8 +28,15 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
|
|
|
28
28
|
disabled
|
|
29
29
|
}: FieldProps<T, any, any>) {
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
|
|
32
|
+
if (!resolvedProperties) {
|
|
33
|
+
resolvedProperties = getArrayResolvedProperties({
|
|
34
|
+
propertyValue: value,
|
|
35
|
+
propertyKey,
|
|
36
|
+
property,
|
|
37
|
+
ignoreMissingFields: false
|
|
38
|
+
})
|
|
39
|
+
}
|
|
33
40
|
|
|
34
41
|
const expanded = property.expanded === undefined ? true : property.expanded;
|
|
35
42
|
|
|
@@ -39,22 +46,27 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
|
|
|
39
46
|
setValue
|
|
40
47
|
});
|
|
41
48
|
|
|
42
|
-
const title =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
const title = (<>
|
|
50
|
+
<LabelWithIconAndTooltip
|
|
51
|
+
propertyKey={propertyKey}
|
|
52
|
+
icon={getIconForProperty(property, "small")}
|
|
53
|
+
required={property.validation?.required}
|
|
54
|
+
title={property.name}
|
|
55
|
+
className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
|
|
56
|
+
{Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
|
|
57
|
+
</>);
|
|
46
58
|
|
|
47
|
-
const body =
|
|
59
|
+
const body = resolvedProperties.map((childProperty, index) => {
|
|
60
|
+
const thisDisabled = isReadOnly(childProperty) || Boolean(childProperty.disabled);
|
|
48
61
|
const fieldProps = {
|
|
49
62
|
propertyKey: `${propertyKey}[${index}]`,
|
|
50
|
-
disabled,
|
|
63
|
+
disabled: disabled || thisDisabled,
|
|
51
64
|
property: childProperty,
|
|
52
65
|
includeDescription,
|
|
53
66
|
underlyingValueHasChanged,
|
|
54
67
|
context,
|
|
55
|
-
tableMode: false,
|
|
56
68
|
partOfArray: true,
|
|
57
|
-
|
|
69
|
+
minimalistView: false,
|
|
58
70
|
autoFocus: false
|
|
59
71
|
};
|
|
60
72
|
return <div key={`custom_shaped_array_${index}`} className="pb-4">
|
|
@@ -66,14 +78,14 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
|
|
|
66
78
|
|
|
67
79
|
<>
|
|
68
80
|
|
|
69
|
-
{!
|
|
81
|
+
{!minimalistView &&
|
|
70
82
|
<ExpandablePanel initiallyExpanded={expanded}
|
|
71
83
|
title={title}
|
|
72
|
-
|
|
84
|
+
innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
|
|
73
85
|
{body}
|
|
74
86
|
</ExpandablePanel>}
|
|
75
87
|
|
|
76
|
-
{
|
|
88
|
+
{minimalistView && body}
|
|
77
89
|
|
|
78
90
|
<FieldHelperText includeDescription={includeDescription}
|
|
79
91
|
showError={showError}
|