@firecms/core 3.0.0-canary.21 → 3.0.0-canary.210
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 +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +23 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +16 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +5 -4
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +4 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +33 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +37 -69
- package/dist/form/EntityFormActions.d.ts +17 -0
- 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/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- 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 +3 -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 +16 -18
- 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 +7 -5
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21823 -14330
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24174 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/internal/useBuildSideEntityController.d.ts +2 -2
- 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 +77 -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 +71 -42
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +32 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +23 -12
- package/dist/types/properties.d.ts +52 -24
- 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 +6 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +2 -0
- package/dist/util/navigation_from_path.d.ts +6 -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 +36 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +61 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +127 -41
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
- package/src/components/DeleteEntityDialog.tsx +10 -19
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +207 -113
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +62 -52
- package/src/components/EntityView.tsx +10 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +26 -19
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +27 -12
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +96 -48
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +33 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +321 -479
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +86 -17
- package/src/core/FireCMS.tsx +56 -49
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +585 -539
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +85 -44
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +4 -5
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +31 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
- package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -50
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +16 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- 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 +22 -29
- package/src/hooks/useBuildNavigationController.tsx +159 -54
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +193 -73
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +17 -24
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -36
- package/src/preview/components/ReferencePreview.tsx +22 -33
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- 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 +12 -11
- 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 +235 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +94 -27
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +81 -46
- package/src/types/firecms.tsx +7 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +38 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +25 -14
- package/src/types/properties.ts +60 -25
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +6 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +2 -0
- package/src/util/join_collections.ts +3 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +13 -6
- package/src/util/navigation_utils.ts +59 -7
- package/src/util/objects.ts +48 -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 +100 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +71 -27
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- 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/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/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
|
@@ -5,7 +5,6 @@ import { ErrorBoundary } from "../ErrorBoundary";
|
|
|
5
5
|
import { useFireCMSContext, useLargeLayout } from "../../hooks";
|
|
6
6
|
import { CellRendererParams, VirtualTableColumn } from "../VirtualTable";
|
|
7
7
|
import { getValueInPath } from "../../util";
|
|
8
|
-
import { getRowHeight } from "../VirtualTable/common";
|
|
9
8
|
import { EntityCollectionRowActions } from "./EntityCollectionRowActions";
|
|
10
9
|
import { CollectionTableToolbar } from "./internal/CollectionTableToolbar";
|
|
11
10
|
import { EntityCollectionTableProps } from "./EntityCollectionTableProps";
|
|
@@ -15,7 +14,8 @@ import { renderSkeletonText } from "../../preview";
|
|
|
15
14
|
import { propertiesToColumns } from "./column_utils";
|
|
16
15
|
import { ErrorView } from "../ErrorView";
|
|
17
16
|
import { SelectableTable } from "../SelectableTable/SelectableTable";
|
|
18
|
-
|
|
17
|
+
import { cls } from "@firecms/ui";
|
|
18
|
+
import { getRowHeight } from "../common/table_height";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* This component is in charge of rendering a collection table with a high
|
|
@@ -34,15 +34,17 @@ import { SelectableTable } from "../SelectableTable/SelectableTable";
|
|
|
34
34
|
*
|
|
35
35
|
* The data displayed in the table is managed by a {@link EntityTableController}.
|
|
36
36
|
* You can build the default, bound to a path in the datasource, by using the hook
|
|
37
|
-
* {@link
|
|
37
|
+
* {@link useDataSourceTableController}
|
|
38
38
|
*
|
|
39
39
|
* @see EntityCollectionTableProps
|
|
40
40
|
* @see EntityCollectionView
|
|
41
41
|
* @see VirtualTable
|
|
42
42
|
* @group Components
|
|
43
43
|
*/
|
|
44
|
-
export const EntityCollectionTable = function EntityCollectionTable<M extends Record<string, any
|
|
44
|
+
export const EntityCollectionTable = function EntityCollectionTable<M extends Record<string, any> = any, USER extends User = any>
|
|
45
45
|
({
|
|
46
|
+
className,
|
|
47
|
+
style,
|
|
46
48
|
forceFilter,
|
|
47
49
|
actionsStart,
|
|
48
50
|
actions,
|
|
@@ -55,6 +57,8 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
55
57
|
highlightedEntities,
|
|
56
58
|
onEntityClick,
|
|
57
59
|
onColumnResize,
|
|
60
|
+
initialScroll,
|
|
61
|
+
onScroll,
|
|
58
62
|
onSizeChanged,
|
|
59
63
|
textSearchEnabled = false,
|
|
60
64
|
hoverRow = true,
|
|
@@ -73,23 +77,20 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
73
77
|
emptyComponent,
|
|
74
78
|
getIdColumnWidth,
|
|
75
79
|
onTextSearchClick,
|
|
76
|
-
textSearchLoading
|
|
80
|
+
textSearchLoading,
|
|
81
|
+
enablePopupIcon,
|
|
82
|
+
openEntityMode = "side_panel"
|
|
77
83
|
}: EntityCollectionTableProps<M>) {
|
|
78
84
|
|
|
79
85
|
const ref = useRef<HTMLDivElement>(null);
|
|
80
86
|
|
|
81
87
|
const largeLayout = useLargeLayout();
|
|
82
|
-
const disabledFilterChange = Boolean(forceFilter);
|
|
83
88
|
const selectedEntities = (selectionController?.selectedEntities?.length > 0 ? selectionController?.selectedEntities : highlightedEntities)?.filter(Boolean);
|
|
84
89
|
|
|
85
|
-
const context: FireCMSContext<
|
|
90
|
+
const context: FireCMSContext<USER> = useFireCMSContext();
|
|
86
91
|
|
|
87
92
|
const [size, setSize] = React.useState<CollectionSize>(defaultSize ?? "m");
|
|
88
93
|
|
|
89
|
-
const selectedEntityIds = selectedEntities?.map(e => e.id);
|
|
90
|
-
|
|
91
|
-
const filterIsSet = !!tableController.filterValues && Object.keys(tableController.filterValues).length > 0;
|
|
92
|
-
|
|
93
94
|
const updateSize = useCallback((size: CollectionSize) => {
|
|
94
95
|
if (onSizeChanged)
|
|
95
96
|
onSizeChanged(size);
|
|
@@ -98,12 +99,12 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
98
99
|
|
|
99
100
|
const onTextSearch = useCallback((newSearchString?: string) => tableController.setSearchString?.(newSearchString), []);
|
|
100
101
|
|
|
101
|
-
const additionalFieldsMap: Record<string, AdditionalFieldDelegate<M,
|
|
102
|
+
const additionalFieldsMap: Record<string, AdditionalFieldDelegate<M, USER>> = useMemo(() => {
|
|
102
103
|
return (additionalFields
|
|
103
104
|
? additionalFields
|
|
104
105
|
.map((aC) => ({ [aC.key]: aC as AdditionalFieldDelegate<M, any> }))
|
|
105
106
|
.reduce((a, b) => ({ ...a, ...b }), {})
|
|
106
|
-
: {}) as Record<string, AdditionalFieldDelegate<M,
|
|
107
|
+
: {}) as Record<string, AdditionalFieldDelegate<M, USER>>;
|
|
107
108
|
}, [additionalFields]);
|
|
108
109
|
|
|
109
110
|
const customFieldValidator: CustomFieldValidator | undefined = uniqueFieldValidator;
|
|
@@ -120,10 +121,8 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
120
121
|
const propertyKey = column.key;
|
|
121
122
|
|
|
122
123
|
let disabled = column.custom?.disabled;
|
|
123
|
-
const propertyValue = entity.values ? getValueInPath(entity.values, propertyKey) : undefined;
|
|
124
124
|
const property = getPropertyFor?.({
|
|
125
125
|
propertyKey,
|
|
126
|
-
propertyValue,
|
|
127
126
|
entity
|
|
128
127
|
}) ?? column.custom.resolvedProperty;
|
|
129
128
|
if (!property?.disabled) {
|
|
@@ -150,6 +149,7 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
150
149
|
height={getRowHeight(size)}
|
|
151
150
|
entity={entity}
|
|
152
151
|
disabled={disabled}
|
|
152
|
+
enablePopupIcon={enablePopupIcon}
|
|
153
153
|
path={entity.path}/>
|
|
154
154
|
: renderSkeletonText()
|
|
155
155
|
}
|
|
@@ -177,9 +177,14 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
177
177
|
throw new Error("When using additional fields you need to provide a Builder or a value");
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
const child = Builder
|
|
180
|
+
const child: React.ReactNode = Builder
|
|
181
181
|
? <Builder entity={entity} context={context}/>
|
|
182
|
-
: <>
|
|
182
|
+
: <>
|
|
183
|
+
{additionalField.value?.({
|
|
184
|
+
entity,
|
|
185
|
+
context
|
|
186
|
+
})?.toString()}
|
|
187
|
+
</>;
|
|
183
188
|
|
|
184
189
|
return (
|
|
185
190
|
<EntityTableCell
|
|
@@ -200,14 +205,13 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
200
205
|
</EntityTableCell>
|
|
201
206
|
);
|
|
202
207
|
|
|
203
|
-
}, [size
|
|
208
|
+
}, [size]);
|
|
204
209
|
|
|
205
210
|
const collectionColumns: VirtualTableColumn[] = (() => {
|
|
206
211
|
const columnsResult: VirtualTableColumn[] = propertiesToColumns({
|
|
207
212
|
properties,
|
|
208
213
|
sortable,
|
|
209
214
|
forceFilter,
|
|
210
|
-
disabledFilter: disabledFilterChange,
|
|
211
215
|
AdditionalHeaderWidget
|
|
212
216
|
});
|
|
213
217
|
|
|
@@ -237,13 +241,15 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
237
241
|
|
|
238
242
|
const columns: VirtualTableColumn[] = [
|
|
239
243
|
idColumn,
|
|
240
|
-
...displayedColumnIds
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
...(displayedColumnIds
|
|
245
|
+
? displayedColumnIds
|
|
246
|
+
.map((p) => {
|
|
247
|
+
return collectionColumns.find(c => c.key === p.key);
|
|
248
|
+
}).filter(Boolean)
|
|
249
|
+
: collectionColumns) as VirtualTableColumn[]
|
|
244
250
|
];
|
|
245
251
|
|
|
246
|
-
const cellRenderer = (props: CellRendererParams<any>) => {
|
|
252
|
+
const cellRenderer = useCallback((props: CellRendererParams<any>) => {
|
|
247
253
|
const column = props.column;
|
|
248
254
|
const columns = props.columns;
|
|
249
255
|
const columnKey = column.key;
|
|
@@ -262,7 +268,8 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
262
268
|
width={column.width}
|
|
263
269
|
frozen={column.frozen}
|
|
264
270
|
isSelected={false}
|
|
265
|
-
size={size}
|
|
271
|
+
size={size}
|
|
272
|
+
openEntityMode={openEntityMode}/>;
|
|
266
273
|
} else if (additionalFieldsMap[columnKey]) {
|
|
267
274
|
return additionalCellRenderer(props);
|
|
268
275
|
} else if (props.columnIndex < columns.length + 1) {
|
|
@@ -283,20 +290,18 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
283
290
|
<ErrorView error={e}/>
|
|
284
291
|
</EntityTableCell>;
|
|
285
292
|
}
|
|
286
|
-
}
|
|
293
|
+
}, [tableRowActionsBuilder, additionalCellRenderer, propertyCellRenderer, size]);
|
|
287
294
|
|
|
288
295
|
return (
|
|
289
296
|
|
|
290
297
|
<div ref={ref}
|
|
291
|
-
|
|
298
|
+
style={style}
|
|
299
|
+
className={cls("h-full w-full flex flex-col bg-white dark:bg-surface-950", className)}>
|
|
292
300
|
|
|
293
301
|
<CollectionTableToolbar
|
|
294
|
-
forceFilter={disabledFilterChange}
|
|
295
|
-
filterIsSet={filterIsSet}
|
|
296
302
|
onTextSearch={textSearchEnabled ? onTextSearch : undefined}
|
|
297
303
|
textSearchLoading={textSearchLoading}
|
|
298
304
|
onTextSearchClick={textSearchEnabled ? onTextSearchClick : undefined}
|
|
299
|
-
clearFilter={tableController.clearFilter}
|
|
300
305
|
size={size}
|
|
301
306
|
onSizeChanged={updateSize}
|
|
302
307
|
title={title}
|
|
@@ -309,9 +314,11 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
309
314
|
inlineEditing={inlineEditing}
|
|
310
315
|
cellRenderer={cellRenderer}
|
|
311
316
|
onEntityClick={onEntityClick}
|
|
312
|
-
highlightedRow={
|
|
317
|
+
highlightedRow={(entity: Entity<M>) => Boolean(selectedEntities?.find(e => e.id === entity.id && e.path === entity.path))}
|
|
313
318
|
tableController={tableController}
|
|
314
319
|
onValueChange={onValueChange}
|
|
320
|
+
initialScroll={initialScroll}
|
|
321
|
+
onScroll={onScroll}
|
|
315
322
|
onColumnResize={onColumnResize}
|
|
316
323
|
hoverRow={hoverRow}
|
|
317
324
|
filterable={filterable}
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import {
|
|
3
3
|
AdditionalFieldDelegate,
|
|
4
4
|
CollectionSize,
|
|
5
|
-
Entity,
|
|
5
|
+
Entity,
|
|
6
6
|
EntityTableController,
|
|
7
7
|
FilterValues,
|
|
8
8
|
ResolvedProperties,
|
|
@@ -12,12 +12,15 @@ import {
|
|
|
12
12
|
} from "../../types";
|
|
13
13
|
import { OnCellValueChange, OnColumnResizeParams, UniqueFieldValidator } from "../common/types";
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
/**
|
|
17
16
|
* @group Collection components
|
|
18
17
|
*/
|
|
19
18
|
export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
20
|
-
|
|
19
|
+
USER extends User = User> = {
|
|
20
|
+
|
|
21
|
+
className?: string;
|
|
22
|
+
|
|
23
|
+
style?: React.CSSProperties;
|
|
21
24
|
|
|
22
25
|
/**
|
|
23
26
|
* Display these entities as selected
|
|
@@ -69,6 +72,21 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
69
72
|
*/
|
|
70
73
|
onColumnResize?(params: OnColumnResizeParams): void;
|
|
71
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Initial scroll position
|
|
77
|
+
*/
|
|
78
|
+
initialScroll?: number;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Callback when the table is scrolled
|
|
82
|
+
* @param props
|
|
83
|
+
*/
|
|
84
|
+
onScroll?: (props: {
|
|
85
|
+
scrollDirection: "forward" | "backward",
|
|
86
|
+
scrollOffset: number,
|
|
87
|
+
scrollUpdateWasRequested: boolean
|
|
88
|
+
}) => void;
|
|
89
|
+
|
|
72
90
|
/**
|
|
73
91
|
* Callback when the selected size of the table is changed
|
|
74
92
|
*/
|
|
@@ -87,12 +105,12 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
87
105
|
|
|
88
106
|
/**
|
|
89
107
|
* Controller holding the logic for the table
|
|
90
|
-
* {@link
|
|
108
|
+
* {@link useDataSourceTableController}
|
|
91
109
|
* {@link EntityTableController}
|
|
92
110
|
*/
|
|
93
111
|
tableController: EntityTableController<M>;
|
|
94
112
|
|
|
95
|
-
displayedColumnIds
|
|
113
|
+
displayedColumnIds?: PropertyColumnConfig[];
|
|
96
114
|
|
|
97
115
|
forceFilter?: FilterValues<Extract<keyof M, string>>;
|
|
98
116
|
|
|
@@ -100,7 +118,7 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
100
118
|
|
|
101
119
|
inlineEditing?: boolean;
|
|
102
120
|
|
|
103
|
-
additionalFields?: AdditionalFieldDelegate<M,
|
|
121
|
+
additionalFields?: AdditionalFieldDelegate<M, USER>[];
|
|
104
122
|
|
|
105
123
|
defaultSize?: CollectionSize;
|
|
106
124
|
|
|
@@ -131,15 +149,18 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
131
149
|
onTextSearchClick?: () => void;
|
|
132
150
|
|
|
133
151
|
textSearchLoading?: boolean;
|
|
134
|
-
|
|
152
|
+
|
|
153
|
+
enablePopupIcon: boolean;
|
|
154
|
+
|
|
155
|
+
openEntityMode?: "side_panel" | "full_screen";
|
|
156
|
+
};
|
|
135
157
|
|
|
136
158
|
export type GetPropertyForProps<M extends Record<string, any>> = {
|
|
137
159
|
propertyKey: string,
|
|
138
|
-
propertyValue: any,
|
|
139
160
|
entity: Entity<M>
|
|
140
161
|
};
|
|
141
162
|
|
|
142
163
|
export type PropertyColumnConfig = {
|
|
143
164
|
key: string,
|
|
144
|
-
disabled
|
|
165
|
+
disabled?: boolean,
|
|
145
166
|
};
|
|
@@ -24,14 +24,13 @@ import { getPreviewSizeFrom } from "../../preview/util";
|
|
|
24
24
|
import { isReadOnly } from "../../util";
|
|
25
25
|
|
|
26
26
|
import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
|
|
27
|
-
import { useFireCMSContext } from "../../hooks";
|
|
28
27
|
|
|
29
28
|
import { EntityTableCell } from "./internal/EntityTableCell";
|
|
30
29
|
import { EntityTableCellActions } from "./internal/EntityTableCellActions";
|
|
31
30
|
|
|
32
|
-
import { getRowHeight } from "../VirtualTable/common";
|
|
33
31
|
import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
|
|
34
32
|
import { useClearRestoreValue } from "../../form/useClearRestoreValue";
|
|
33
|
+
import { getRowHeight } from "../common/table_height";
|
|
35
34
|
|
|
36
35
|
export interface PropertyTableCellProps<T extends CMSType> {
|
|
37
36
|
propertyKey: string;
|
|
@@ -46,9 +45,12 @@ export interface PropertyTableCellProps<T extends CMSType> {
|
|
|
46
45
|
entity: Entity<any>;
|
|
47
46
|
path: string;
|
|
48
47
|
disabled: boolean;
|
|
48
|
+
enablePopupIcon?: boolean;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
function isStorageProperty(property: ResolvedProperty) {
|
|
52
|
+
if (property.dataType === "string" && property.markdown)
|
|
53
|
+
return false;
|
|
52
54
|
if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
|
|
53
55
|
return true;
|
|
54
56
|
if (property.dataType === "array") {
|
|
@@ -74,11 +76,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
74
76
|
path,
|
|
75
77
|
entity,
|
|
76
78
|
readonly,
|
|
77
|
-
disabled: disabledProp
|
|
79
|
+
disabled: disabledProp,
|
|
80
|
+
enablePopupIcon = true
|
|
78
81
|
}: PropertyTableCellProps<T>) {
|
|
79
82
|
|
|
80
|
-
const context = useFireCMSContext();
|
|
81
|
-
|
|
82
83
|
const {
|
|
83
84
|
onValueChange,
|
|
84
85
|
size,
|
|
@@ -88,13 +89,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
88
89
|
} = useSelectableTableController();
|
|
89
90
|
|
|
90
91
|
const selected = selectedCell?.propertyKey === propertyKey &&
|
|
91
|
-
selectedCell?.
|
|
92
|
-
selectedCell?.
|
|
92
|
+
selectedCell?.entityPath === entity.path &&
|
|
93
|
+
selectedCell?.entityId === entity.id;
|
|
93
94
|
|
|
94
95
|
const [internalValue, setInternalValue] = useState<any | null>(value);
|
|
95
96
|
const internalValueRef = useRef(value);
|
|
96
97
|
|
|
97
98
|
const [error, setError] = useState<Error | undefined>();
|
|
99
|
+
const [validationError, setValidationError] = useState<Error | undefined>();
|
|
98
100
|
const [saved, setSaved] = useState<boolean>(false);
|
|
99
101
|
|
|
100
102
|
const onValueUpdated = useCallback(() => {
|
|
@@ -120,7 +122,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
120
122
|
useEffect(
|
|
121
123
|
() => {
|
|
122
124
|
if (!equal(value, internalValueRef.current)) {
|
|
123
|
-
|
|
125
|
+
setValidationError(undefined);
|
|
124
126
|
setInternalValue(value);
|
|
125
127
|
internalValueRef.current = value;
|
|
126
128
|
onValueUpdated();
|
|
@@ -136,32 +138,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
136
138
|
validation
|
|
137
139
|
.validate(value)
|
|
138
140
|
.then(() => {
|
|
139
|
-
|
|
141
|
+
setValidationError(undefined);
|
|
140
142
|
internalValueRef.current = value;
|
|
141
143
|
if (onValueChange) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
})
|
|
144
|
+
try {
|
|
145
|
+
onValueChange({
|
|
146
|
+
value,
|
|
147
|
+
propertyKey,
|
|
148
|
+
setError,
|
|
149
|
+
onValueUpdated,
|
|
150
|
+
data: entity,
|
|
151
|
+
});
|
|
152
|
+
} catch (e: any) {
|
|
153
|
+
console.error("onValueChange error", e);
|
|
154
|
+
setError(e);
|
|
155
|
+
}
|
|
156
|
+
|
|
151
157
|
}
|
|
152
158
|
})
|
|
153
159
|
.catch((e) => {
|
|
154
|
-
|
|
160
|
+
setValidationError(e);
|
|
155
161
|
});
|
|
156
162
|
};
|
|
157
163
|
|
|
158
164
|
useEffect(() => {
|
|
159
165
|
validation
|
|
160
166
|
.validate(internalValue)
|
|
161
|
-
.then(() =>
|
|
162
|
-
.catch(
|
|
163
|
-
setError(e);
|
|
164
|
-
});
|
|
167
|
+
.then(() => setValidationError(undefined))
|
|
168
|
+
.catch(setValidationError);
|
|
165
169
|
}, [internalValue, validation, propertyKey, property, entity]);
|
|
166
170
|
|
|
167
171
|
const updateValue = (newValue: any | null) => {
|
|
@@ -189,7 +193,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
189
193
|
select({
|
|
190
194
|
width,
|
|
191
195
|
height,
|
|
192
|
-
entity,
|
|
196
|
+
entityPath: entity.path,
|
|
197
|
+
entityId: entity.id,
|
|
193
198
|
cellRect,
|
|
194
199
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
195
200
|
});
|
|
@@ -205,7 +210,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
205
210
|
setPopupCell({
|
|
206
211
|
width,
|
|
207
212
|
height,
|
|
208
|
-
entity,
|
|
213
|
+
entityPath: entity.path,
|
|
214
|
+
entityId: entity.id,
|
|
209
215
|
cellRect,
|
|
210
216
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
211
217
|
});
|
|
@@ -237,7 +243,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
237
243
|
height={getRowHeight(size)}
|
|
238
244
|
propertyKey={propertyKey}
|
|
239
245
|
property={property}
|
|
240
|
-
// entity={entity}
|
|
241
246
|
value={internalValue}
|
|
242
247
|
size={getPreviewSizeFrom(size)}
|
|
243
248
|
/>
|
|
@@ -247,7 +252,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
247
252
|
if (!customField && (!customPreview || selected)) {
|
|
248
253
|
const isAStorageProperty = isStorageProperty(property);
|
|
249
254
|
if (isAStorageProperty) {
|
|
250
|
-
innerComponent = <TableStorageUpload error={error}
|
|
255
|
+
innerComponent = <TableStorageUpload error={validationError ?? error}
|
|
251
256
|
disabled={disabled}
|
|
252
257
|
focused={selected}
|
|
253
258
|
selected={selected}
|
|
@@ -274,7 +279,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
274
279
|
valueType={"number"}
|
|
275
280
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
276
281
|
enumValues={numberProperty.enumValues}
|
|
277
|
-
error={error}
|
|
282
|
+
error={validationError ?? error}
|
|
278
283
|
internalValue={internalValue as string | number}
|
|
279
284
|
updateValue={updateValue}
|
|
280
285
|
/>;
|
|
@@ -282,7 +287,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
282
287
|
} else {
|
|
283
288
|
innerComponent = <VirtualTableNumberInput
|
|
284
289
|
align={align}
|
|
285
|
-
error={error}
|
|
290
|
+
error={validationError ?? error}
|
|
286
291
|
focused={selected}
|
|
287
292
|
disabled={disabled}
|
|
288
293
|
value={internalValue as number}
|
|
@@ -300,14 +305,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
300
305
|
valueType={"string"}
|
|
301
306
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
302
307
|
enumValues={stringProperty.enumValues}
|
|
303
|
-
error={error}
|
|
308
|
+
error={validationError ?? error}
|
|
304
309
|
internalValue={internalValue as string | number}
|
|
305
310
|
updateValue={updateValue}
|
|
306
311
|
/>;
|
|
307
312
|
fullHeight = true;
|
|
308
|
-
} else if (!stringProperty.storage) {
|
|
313
|
+
} else if (stringProperty.markdown || !stringProperty.storage) {
|
|
309
314
|
const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
|
|
310
|
-
innerComponent = <VirtualTableInput error={error}
|
|
315
|
+
innerComponent = <VirtualTableInput error={validationError ?? error}
|
|
311
316
|
disabled={disabled}
|
|
312
317
|
multiline={multiline}
|
|
313
318
|
focused={selected}
|
|
@@ -317,7 +322,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
317
322
|
allowScroll = true;
|
|
318
323
|
}
|
|
319
324
|
} else if (property.dataType === "boolean") {
|
|
320
|
-
innerComponent = <VirtualTableSwitch error={error}
|
|
325
|
+
innerComponent = <VirtualTableSwitch error={validationError ?? error}
|
|
321
326
|
disabled={disabled}
|
|
322
327
|
focused={selected}
|
|
323
328
|
internalValue={internalValue as boolean}
|
|
@@ -325,7 +330,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
325
330
|
/>;
|
|
326
331
|
} else if (property.dataType === "date") {
|
|
327
332
|
innerComponent = <VirtualTableDateField name={propertyKey as string}
|
|
328
|
-
error={error}
|
|
333
|
+
error={validationError ?? error}
|
|
329
334
|
disabled={disabled}
|
|
330
335
|
mode={property.mode}
|
|
331
336
|
focused={selected}
|
|
@@ -346,6 +351,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
346
351
|
path={property.path}
|
|
347
352
|
multiselect={false}
|
|
348
353
|
previewProperties={property.previewProperties}
|
|
354
|
+
includeId={property.includeId}
|
|
355
|
+
includeEntityLink={property.includeEntityLink}
|
|
349
356
|
title={property.name}
|
|
350
357
|
forceFilter={property.forceFilter}
|
|
351
358
|
/>;
|
|
@@ -368,7 +375,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
368
375
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
369
376
|
valueType={arrayProperty.of.dataType}
|
|
370
377
|
enumValues={arrayProperty.of.enumValues}
|
|
371
|
-
error={error}
|
|
378
|
+
error={validationError ?? error}
|
|
372
379
|
internalValue={internalValue as string | number}
|
|
373
380
|
updateValue={updateValue}
|
|
374
381
|
/>;
|
|
@@ -390,6 +397,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
390
397
|
previewProperties={arrayProperty.of.previewProperties}
|
|
391
398
|
title={arrayProperty.name}
|
|
392
399
|
forceFilter={arrayProperty.of.forceFilter}
|
|
400
|
+
includeId={arrayProperty.of.includeId}
|
|
401
|
+
includeEntityLink={arrayProperty.of.includeEntityLink}
|
|
393
402
|
/>;
|
|
394
403
|
}
|
|
395
404
|
allowScroll = false;
|
|
@@ -401,11 +410,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
401
410
|
|
|
402
411
|
if (!innerComponent) {
|
|
403
412
|
allowScroll = false;
|
|
404
|
-
showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
413
|
+
showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
405
414
|
innerComponent = (
|
|
406
|
-
<PropertyPreview
|
|
415
|
+
<PropertyPreview width={width}
|
|
407
416
|
height={height}
|
|
408
|
-
// entity={entity}
|
|
409
417
|
propertyKey={propertyKey as string}
|
|
410
418
|
value={internalValue}
|
|
411
419
|
property={property}
|
|
@@ -426,7 +434,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
426
434
|
removePadding={removePadding}
|
|
427
435
|
fullHeight={fullHeight}
|
|
428
436
|
saved={saved}
|
|
429
|
-
error={error}
|
|
437
|
+
error={validationError ?? error}
|
|
430
438
|
align={align}
|
|
431
439
|
allowScroll={allowScroll}
|
|
432
440
|
showExpandIcon={showExpandIcon}
|
|
@@ -21,7 +21,6 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
|
|
|
21
21
|
properties: ResolvedProperties<M>;
|
|
22
22
|
sortable?: boolean;
|
|
23
23
|
forceFilter?: FilterValues<keyof M extends string ? keyof M : never>;
|
|
24
|
-
disabledFilter?: boolean;
|
|
25
24
|
AdditionalHeaderWidget?: React.ComponentType<{
|
|
26
25
|
property: ResolvedProperty,
|
|
27
26
|
propertyKey: string,
|
|
@@ -29,7 +28,8 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
|
|
|
29
28
|
}>;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter,
|
|
31
|
+
export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter, AdditionalHeaderWidget }: PropertiesToColumnsParams<M>): VirtualTableColumn[] {
|
|
32
|
+
const disabledFilter = Boolean(forceFilter);
|
|
33
33
|
return Object.entries<ResolvedProperty>(properties)
|
|
34
34
|
.flatMap(([key, property]) => getColumnKeysForProperty(property, key))
|
|
35
35
|
.map(({
|
|
@@ -45,7 +45,7 @@ export function propertiesToColumns<M extends Record<string, any>>({ properties,
|
|
|
45
45
|
align: getTableCellAlignment(property),
|
|
46
46
|
icon: getIconForProperty(property, "small"),
|
|
47
47
|
title: property.name ?? key as string,
|
|
48
|
-
sortable: sortable
|
|
48
|
+
sortable: sortable,
|
|
49
49
|
filter: !disabledFilter && filterable,
|
|
50
50
|
width: getTablePropertyColumnWidth(property),
|
|
51
51
|
resizable: true,
|