@firecms/core 3.0.0-canary.99 → 3.0.0-rc.2
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 +2 -2
- package/dist/app/Drawer.d.ts +0 -1
- package/dist/app/Scaffold.d.ts +4 -0
- package/dist/components/ArrayContainer.d.ts +31 -12
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -6
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
- package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/UserDisplay.d.ts +7 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- package/dist/components/common/default_entity_actions.d.ts +0 -2
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/useColumnsIds.d.ts +1 -0
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -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 +3 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
- package/dist/core/DefaultAppBar.d.ts +8 -2
- package/dist/core/DrawerNavigationItem.d.ts +2 -1
- package/dist/core/EntityEditView.d.ts +40 -22
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +0 -1
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/form/EntityForm.d.ts +50 -0
- package/dist/form/EntityFormActions.d.ts +21 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- 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/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/ReferenceAsStringFieldBinding.d.ts +9 -0
- 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 +4 -10
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +17 -16
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +3 -3
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -12
- package/dist/hooks/useCollapsedGroups.d.ts +9 -0
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +7 -1
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
- package/dist/index.es.js +20480 -14434
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20250 -14209
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -2
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +1 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +2 -2
- package/dist/preview/components/UserPreview.d.ts +8 -0
- package/dist/preview/index.d.ts +1 -0
- 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/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +7 -9
- package/dist/types/collections.d.ts +88 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +19 -17
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +58 -8
- 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 +43 -17
- package/dist/types/firecms.d.ts +31 -3
- package/dist/types/firecms_context.d.ts +17 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/internal_user_management.d.ts +20 -0
- package/dist/types/navigation.d.ts +60 -17
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +44 -9
- package/dist/types/properties.d.ts +74 -22
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/roles.d.ts +3 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +14 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +2 -1
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_synonyms.d.ts +0 -1
- package/dist/util/icons.d.ts +5 -2
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +10 -1
- package/dist/util/navigation_utils.d.ts +13 -1
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +30 -6
- package/dist/util/storage.d.ts +1 -1
- package/dist/util/useStorageUploadController.d.ts +2 -2
- package/package.json +133 -125
- package/src/app/Drawer.tsx +0 -1
- package/src/app/Scaffold.tsx +33 -29
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +1 -1
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -9
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +75 -57
- package/src/components/EntityView.tsx +8 -5
- package/src/components/ErrorView.tsx +3 -3
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +506 -161
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +600 -0
- package/src/components/HomePage/NavigationCard.tsx +47 -38
- package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +10 -4
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -13
- package/src/components/SearchIconsView.tsx +2 -2
- package/src/components/SelectableTable/SelectableTable.tsx +154 -142
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +60 -11
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/UserDisplay.tsx +55 -0
- package/src/components/VirtualTable/VirtualTable.tsx +65 -44
- package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
- package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
- package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
- package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +99 -0
- package/src/components/common/default_entity_actions.tsx +62 -42
- package/src/components/common/index.ts +1 -1
- package/src/components/common/useColumnsIds.tsx +2 -9
- 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 +1 -0
- package/src/components/index.tsx +4 -1
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +3 -2
- package/src/contexts/InternalUserManagementContext.tsx +4 -0
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +124 -85
- package/src/core/DefaultDrawer.tsx +30 -22
- package/src/core/DrawerNavigationItem.tsx +32 -28
- package/src/core/EntityEditView.tsx +388 -995
- package/src/core/EntityEditViewFormActions.tsx +329 -0
- package/src/core/EntitySidePanel.tsx +88 -20
- package/src/core/FireCMS.tsx +58 -28
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +23 -32
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +39 -11
- package/src/core/index.tsx +4 -2
- package/src/form/EntityForm.tsx +814 -0
- package/src/form/EntityFormActions.tsx +211 -0
- package/src/form/PropertyFieldBinding.tsx +59 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/FieldHelperText.tsx +1 -1
- 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 +5 -4
- package/src/form/components/StorageUploadProgress.tsx +2 -3
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
- package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
- package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +10 -8
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
- package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +94 -0
- package/src/form/index.tsx +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +12 -6
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +26 -35
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +10 -2
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +3 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useBuildModeController.tsx +15 -28
- package/src/hooks/useBuildNavigationController.tsx +386 -124
- package/src/hooks/useCollapsedGroups.ts +64 -0
- package/src/hooks/useFireCMSContext.tsx +9 -35
- package/src/hooks/useInternalUserManagementController.tsx +16 -0
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +16 -5
- package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
- package/src/hooks/useValidateAuthenticator.tsx +3 -3
- package/src/internal/useBuildDataSource.ts +67 -80
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +149 -86
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +36 -12
- package/src/preview/PropertyPreviewProps.tsx +1 -1
- package/src/preview/components/BooleanPreview.tsx +1 -1
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +10 -9
- package/src/preview/components/ReferencePreview.tsx +10 -18
- package/src/preview/components/UrlComponentPreview.tsx +20 -21
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +1 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +6 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +3 -0
- package/src/types/auth.tsx +8 -12
- package/src/types/collections.ts +103 -28
- package/src/types/customization_controller.tsx +9 -0
- package/src/types/datasource.ts +21 -20
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +10 -2
- package/src/types/entity_actions.tsx +71 -8
- 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 +52 -19
- package/src/types/firecms.tsx +34 -4
- package/src/types/firecms_context.tsx +18 -1
- package/src/types/index.ts +1 -0
- package/src/types/internal_user_management.ts +24 -0
- package/src/types/navigation.ts +76 -22
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +53 -9
- package/src/types/properties.ts +84 -22
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +3 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +16 -1
- package/src/types/storage.ts +82 -0
- package/src/types/user.ts +3 -1
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +6 -4
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/icon_list.ts +1 -1
- package/src/util/icon_synonyms.ts +0 -1
- package/src/util/icons.tsx +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +9 -2
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +135 -19
- package/src/util/objects.ts +74 -14
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +8 -8
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +93 -24
- package/src/util/storage.ts +6 -2
- package/src/util/useStorageUploadController.tsx +74 -29
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/form/PropertiesForm.d.ts +0 -8
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
- package/src/form/PropertiesForm.tsx +0 -81
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@firecms/ui";
|
|
2
|
+
|
|
3
|
+
export interface UnsavedChangesDialogProps {
|
|
4
|
+
open: boolean;
|
|
5
|
+
body?: React.ReactNode;
|
|
6
|
+
title?: string;
|
|
7
|
+
handleOk: () => void;
|
|
8
|
+
handleCancel: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function UnsavedChangesDialog({
|
|
12
|
+
open,
|
|
13
|
+
handleOk,
|
|
14
|
+
handleCancel,
|
|
15
|
+
body,
|
|
16
|
+
title
|
|
17
|
+
}: UnsavedChangesDialogProps) {
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Dialog
|
|
21
|
+
onEscapeKeyDown={() => {
|
|
22
|
+
handleCancel();
|
|
23
|
+
}}
|
|
24
|
+
open={open}
|
|
25
|
+
>
|
|
26
|
+
<DialogTitle variant={"h6"}>{title}</DialogTitle>
|
|
27
|
+
<DialogContent>
|
|
28
|
+
|
|
29
|
+
{body}
|
|
30
|
+
|
|
31
|
+
<Typography>
|
|
32
|
+
Are you sure you want to leave this page?
|
|
33
|
+
</Typography>
|
|
34
|
+
|
|
35
|
+
</DialogContent>
|
|
36
|
+
<DialogActions>
|
|
37
|
+
<Button variant="text"
|
|
38
|
+
color={"primary"}
|
|
39
|
+
onClick={handleCancel} autoFocus> Cancel </Button>
|
|
40
|
+
<Button
|
|
41
|
+
color={"primary"}
|
|
42
|
+
onClick={handleOk}> Ok </Button>
|
|
43
|
+
</DialogActions>
|
|
44
|
+
</Dialog>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { User } from "../types";
|
|
2
|
+
import { AccountCircleIcon, cls, defaultBorderMixin } from "@firecms/ui";
|
|
3
|
+
import { EmptyValue } from "../preview";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Component to render a single user with name and email
|
|
7
|
+
*/
|
|
8
|
+
export function UserDisplay({
|
|
9
|
+
user,
|
|
10
|
+
}: { user: User | null }) {
|
|
11
|
+
if (!user) {
|
|
12
|
+
return <EmptyValue/>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const avatarSizeClass = "w-6 h-6";
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<div className={cls(
|
|
19
|
+
"inline-flex items-center gap-4 px-2 py-1 rounded-xl",
|
|
20
|
+
"bg-surface-accent-100 dark:bg-surface-accent-800",
|
|
21
|
+
"border",
|
|
22
|
+
defaultBorderMixin
|
|
23
|
+
)}>
|
|
24
|
+
{user.photoURL ? (
|
|
25
|
+
<img
|
|
26
|
+
src={user.photoURL}
|
|
27
|
+
alt={user.displayName || user.email || "User"}
|
|
28
|
+
className={cls(
|
|
29
|
+
"rounded-full object-cover",
|
|
30
|
+
avatarSizeClass
|
|
31
|
+
)}
|
|
32
|
+
/>
|
|
33
|
+
) : (
|
|
34
|
+
<AccountCircleIcon
|
|
35
|
+
className={cls(
|
|
36
|
+
"text-text-secondary dark:text-text-secondary-dark",
|
|
37
|
+
avatarSizeClass
|
|
38
|
+
)}
|
|
39
|
+
/>
|
|
40
|
+
)}
|
|
41
|
+
<div className="flex flex-col min-w-0">
|
|
42
|
+
<span className={cls("font-regular truncate", "text-sm")}>
|
|
43
|
+
{user.displayName || user.email || "-"}
|
|
44
|
+
</span>
|
|
45
|
+
{user.displayName && user.email && (
|
|
46
|
+
<span className={cls("text-text-secondary dark:text-text-secondary-dark truncate",
|
|
47
|
+
"text-xs"
|
|
48
|
+
)}>
|
|
49
|
+
{user.email}
|
|
50
|
+
</span>
|
|
51
|
+
)}
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
@@ -20,6 +20,7 @@ import { VirtualTableHeaderRow } from "./VirtualTableHeaderRow";
|
|
|
20
20
|
import { VirtualTableRow } from "./VirtualTableRow";
|
|
21
21
|
import { VirtualTableCell } from "./VirtualTableCell";
|
|
22
22
|
import { AssignmentIcon, CenteredView, cls, Typography } from "@firecms/ui";
|
|
23
|
+
import { useDebounceCallback } from "../common/useDebouncedCallback";
|
|
23
24
|
|
|
24
25
|
const VirtualListContext = createContext<VirtualTableContextProps<any>>({} as any);
|
|
25
26
|
VirtualListContext.displayName = "VirtualListContext";
|
|
@@ -63,10 +64,10 @@ const innerElementType = forwardRef<HTMLDivElement, InnerElementProps>(({
|
|
|
63
64
|
|
|
64
65
|
{customView && <div style={{
|
|
65
66
|
position: "sticky",
|
|
66
|
-
top: "
|
|
67
|
+
top: "48px",
|
|
67
68
|
flexGrow: 1,
|
|
68
|
-
height: "calc(100% -
|
|
69
|
-
marginTop: "calc(
|
|
69
|
+
height: "calc(100% - 48px)",
|
|
70
|
+
marginTop: "calc(48px - 100vh)",
|
|
70
71
|
left: 0
|
|
71
72
|
}}>{customView}</div>}
|
|
72
73
|
|
|
@@ -103,6 +104,7 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
103
104
|
error,
|
|
104
105
|
emptyComponent,
|
|
105
106
|
onSortByUpdate,
|
|
107
|
+
onScroll: onScrollProp,
|
|
106
108
|
loading,
|
|
107
109
|
cellRenderer,
|
|
108
110
|
hoverRow,
|
|
@@ -112,7 +114,7 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
112
114
|
className,
|
|
113
115
|
endAdornment,
|
|
114
116
|
AddColumnComponent,
|
|
115
|
-
|
|
117
|
+
initialScroll = 0,
|
|
116
118
|
}: VirtualTableProps<T>) {
|
|
117
119
|
|
|
118
120
|
const sortByProperty: string | undefined = sortBy ? sortBy[0] : undefined;
|
|
@@ -123,21 +125,59 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
123
125
|
const tableRef = useRef<HTMLDivElement>(null);
|
|
124
126
|
const endReachCallbackThreshold = useRef<number>(0);
|
|
125
127
|
|
|
128
|
+
const debouncedScroll = useDebounceCallback(onScrollProp, 200);
|
|
129
|
+
|
|
130
|
+
// Set initial scroll position
|
|
131
|
+
useEffect(() => {
|
|
132
|
+
if (tableRef.current && initialScroll) {
|
|
133
|
+
const { scrollLeft } = tableRef.current;
|
|
134
|
+
tableRef.current.scrollTo(scrollLeft, initialScroll);
|
|
135
|
+
}
|
|
136
|
+
}, [tableRef, initialScroll]);
|
|
137
|
+
|
|
126
138
|
useEffect(() => {
|
|
127
139
|
setColumns(columnsProp);
|
|
128
140
|
}, [columnsProp]);
|
|
129
141
|
|
|
130
|
-
const [
|
|
142
|
+
const [_, setForceUpdate] = useState(false);
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
// Create a ResizeObserver to detect size changes more aggressively
|
|
145
|
+
if (tableRef.current) {
|
|
146
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
147
|
+
// Force a re-render when size changes
|
|
148
|
+
setForceUpdate(prev => !prev);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
resizeObserver.observe(tableRef.current);
|
|
152
|
+
|
|
153
|
+
return () => {
|
|
154
|
+
if (tableRef.current) {
|
|
155
|
+
resizeObserver.unobserve(tableRef.current);
|
|
156
|
+
}
|
|
157
|
+
resizeObserver.disconnect();
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return () => {
|
|
161
|
+
}
|
|
162
|
+
}, [tableRef]);
|
|
163
|
+
|
|
164
|
+
const [measureRef, bounds] = useMeasure({
|
|
165
|
+
debounce: 50,
|
|
166
|
+
polyfill: ResizeObserver,
|
|
167
|
+
scroll: true,
|
|
168
|
+
// This is important for handling zooming in react-flow
|
|
169
|
+
offsetSize: true
|
|
170
|
+
});
|
|
131
171
|
|
|
132
172
|
const onColumnResizeInternal = useCallback((params: OnVirtualTableColumnResizeParams) => {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
173
|
+
setColumns(prevColumns =>
|
|
174
|
+
prevColumns.map((column) =>
|
|
175
|
+
column.key === params.column.key ? params.column : column
|
|
176
|
+
)
|
|
177
|
+
);
|
|
178
|
+
}, []);
|
|
137
179
|
|
|
138
180
|
const onColumnResizeEndInternal = useCallback((params: OnVirtualTableColumnResizeParams) => {
|
|
139
|
-
if (debug)
|
|
140
|
-
console.log("onColumnResizeEndInternal", params);
|
|
141
181
|
setColumns(columns.map((column) => column.key === params.column.key ? params.column : column));
|
|
142
182
|
if (onColumnResize) {
|
|
143
183
|
onColumnResize(params);
|
|
@@ -148,26 +188,18 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
148
188
|
const filterRef = useRef<VirtualTableFilterValues<any> | undefined>();
|
|
149
189
|
|
|
150
190
|
useEffect(() => {
|
|
151
|
-
if (debug)
|
|
152
|
-
console.log("Filter updated", filterInput);
|
|
153
191
|
filterRef.current = filterInput;
|
|
154
192
|
}, [filterInput]);
|
|
155
193
|
|
|
156
194
|
const scrollToTop = useCallback(() => {
|
|
157
|
-
if (debug)
|
|
158
|
-
console.log("scrollToTop");
|
|
159
195
|
endReachCallbackThreshold.current = 0;
|
|
160
196
|
if (tableRef.current) {
|
|
161
|
-
// scrollRef.current = [scrollRef.current[0], 0];
|
|
162
197
|
tableRef.current.scrollTo(tableRef.current?.scrollLeft, 0);
|
|
163
198
|
}
|
|
164
199
|
}, []);
|
|
165
200
|
|
|
166
201
|
const onColumnSort = useCallback((key: string) => {
|
|
167
202
|
|
|
168
|
-
if (debug)
|
|
169
|
-
console.log("onColumnSort", key);
|
|
170
|
-
|
|
171
203
|
const isDesc = sortByProperty === key && currentSort === "desc";
|
|
172
204
|
const isAsc = sortByProperty === key && currentSort === "asc";
|
|
173
205
|
const newSort = isAsc ? "desc" : (isDesc ? undefined : "asc");
|
|
@@ -195,12 +227,8 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
195
227
|
}, [checkFilterCombination, currentSort, onFilterUpdate, onResetPagination, onSortByUpdate, scrollToTop, sortByProperty]);
|
|
196
228
|
|
|
197
229
|
const maxScroll = Math.max((data?.length ?? 0) * rowHeight - bounds.height, 0);
|
|
198
|
-
if (debug)
|
|
199
|
-
console.log("maxScroll", maxScroll);
|
|
200
230
|
|
|
201
231
|
const onEndReachedInternal = useCallback((scrollOffset: number) => {
|
|
202
|
-
if (debug)
|
|
203
|
-
console.log("onEndReachedInternal", scrollOffset, endReachCallbackThreshold.current + endOffset);
|
|
204
232
|
if (onEndReached && (data?.length ?? 0) > 0 && scrollOffset > endReachCallbackThreshold.current + endOffset) {
|
|
205
233
|
endReachCallbackThreshold.current = scrollOffset;
|
|
206
234
|
onEndReached();
|
|
@@ -216,19 +244,18 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
216
244
|
scrollOffset: number,
|
|
217
245
|
scrollUpdateWasRequested: boolean;
|
|
218
246
|
}) => {
|
|
219
|
-
if(
|
|
220
|
-
|
|
247
|
+
if (onScrollProp) {
|
|
248
|
+
debouncedScroll({
|
|
221
249
|
scrollDirection,
|
|
222
250
|
scrollOffset,
|
|
223
251
|
scrollUpdateWasRequested
|
|
224
|
-
})
|
|
252
|
+
})
|
|
253
|
+
}
|
|
225
254
|
if (!scrollUpdateWasRequested && (scrollOffset >= maxScroll - endOffset))
|
|
226
255
|
onEndReachedInternal(scrollOffset);
|
|
227
256
|
}, [maxScroll, onEndReachedInternal]);
|
|
228
257
|
|
|
229
258
|
const onFilterUpdateInternal = useCallback((column: VirtualTableColumn, filterForProperty?: [VirtualTableWhereFilterOp, any]) => {
|
|
230
|
-
if(debug)
|
|
231
|
-
console.log("onFilterUpdateInternal", column, filterForProperty);
|
|
232
259
|
|
|
233
260
|
endReachCallbackThreshold.current = 0;
|
|
234
261
|
const filter = filterRef.current;
|
|
@@ -248,29 +275,27 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
248
275
|
if (onFilterUpdate) onFilterUpdate(newFilterValue);
|
|
249
276
|
}, [checkFilterCombination, currentSort, onFilterUpdate, sortByProperty]);
|
|
250
277
|
|
|
251
|
-
const buildEmptyView = useCallback(() => {
|
|
252
|
-
if (loading)
|
|
253
|
-
return <CircularProgressCenter/>;
|
|
254
|
-
return <div
|
|
255
|
-
className="flex flex-col overflow-auto items-center justify-center p-2 gap-2 h-full">
|
|
256
|
-
<AssignmentIcon/>
|
|
257
|
-
{emptyComponent}
|
|
258
|
-
</div>;
|
|
259
|
-
}, [emptyComponent, loading]);
|
|
260
|
-
|
|
261
278
|
const empty = !loading && (data?.length ?? 0) === 0;
|
|
262
279
|
const customView = error
|
|
263
280
|
? <CenteredView maxWidth={"2xl"}
|
|
264
281
|
className="flex flex-col gap-2">
|
|
265
282
|
|
|
266
283
|
<Typography variant={"h6"}>
|
|
267
|
-
{"Error
|
|
284
|
+
{"Error"}
|
|
268
285
|
</Typography>
|
|
269
286
|
|
|
270
287
|
{error?.message && <SafeLinkRenderer text={error.message}/>}
|
|
271
288
|
|
|
272
289
|
</CenteredView>
|
|
273
|
-
: (empty
|
|
290
|
+
: (empty
|
|
291
|
+
? (loading
|
|
292
|
+
? <CircularProgressCenter/>
|
|
293
|
+
: <div
|
|
294
|
+
className="flex flex-col overflow-auto items-center justify-center p-2 gap-2 h-full">
|
|
295
|
+
<AssignmentIcon/>
|
|
296
|
+
{emptyComponent}
|
|
297
|
+
</div>)
|
|
298
|
+
: undefined);
|
|
274
299
|
|
|
275
300
|
const virtualListController = {
|
|
276
301
|
data,
|
|
@@ -293,10 +318,6 @@ export const VirtualTable = React.memo<VirtualTableProps<any>>(
|
|
|
293
318
|
AddColumnComponent
|
|
294
319
|
};
|
|
295
320
|
|
|
296
|
-
if(debug)
|
|
297
|
-
console.log("VirtualTable render", virtualListController);
|
|
298
|
-
|
|
299
|
-
// useTraceUpdate(virtualListController);
|
|
300
321
|
return (
|
|
301
322
|
<div
|
|
302
323
|
ref={measureRef}
|
|
@@ -30,14 +30,6 @@ export const VirtualTableCell = React.memo<VirtualTableCellProps<any>>(
|
|
|
30
30
|
width: props.column.width
|
|
31
31
|
} as CellRendererParams<T>
|
|
32
32
|
);
|
|
33
|
-
// return props.rowData && <props.cellRenderer
|
|
34
|
-
// rowData={props.rowData}
|
|
35
|
-
// rowIndex={props.rowIndex}
|
|
36
|
-
// isScrolling={false}
|
|
37
|
-
// column={props.column}
|
|
38
|
-
// columns={props.columns}
|
|
39
|
-
// columnIndex={props.columnIndex}
|
|
40
|
-
// width={props.column.width}/>
|
|
41
33
|
},
|
|
42
34
|
(a, b) => {
|
|
43
35
|
return equal(a.rowData, b.rowData) &&
|
|
@@ -85,9 +85,9 @@ export const VirtualTableHeader = React.memo<VirtualTableHeaderProps<any>>(
|
|
|
85
85
|
return (
|
|
86
86
|
<ErrorBoundary>
|
|
87
87
|
<div
|
|
88
|
-
className={cls("flex py-0 px-3 h-full text-xs uppercase font-semibold relative select-none items-center bg-
|
|
89
|
-
"text-
|
|
90
|
-
"hover:bg-
|
|
88
|
+
className={cls("flex py-0 px-3 h-full text-xs uppercase font-semibold relative select-none items-center bg-surface-50 dark:bg-surface-900",
|
|
89
|
+
"text-text-secondary hover:text-text-primary dark:text-text-secondary-dark dark:hover:text-text-primary-dark",
|
|
90
|
+
"hover:bg-surface-100 dark:hover:bg-surface-800 hover:bg-opacity-50 dark:hover:bg-opacity-50",
|
|
91
91
|
column.frozen ? "sticky left-0 z-10" : "relative z-0"
|
|
92
92
|
)}
|
|
93
93
|
style={{
|
|
@@ -130,7 +130,7 @@ export const VirtualTableHeader = React.memo<VirtualTableHeaderProps<any>>(
|
|
|
130
130
|
invisible={!sort}>
|
|
131
131
|
<IconButton
|
|
132
132
|
size={"small"}
|
|
133
|
-
className={onHover || openFilter ? "bg-white dark:bg-
|
|
133
|
+
className={onHover || openFilter ? "bg-white dark:bg-surface-950" : undefined}
|
|
134
134
|
onClick={() => {
|
|
135
135
|
onColumnSort(column.key as Extract<keyof M, string>);
|
|
136
136
|
}}
|
|
@@ -157,7 +157,7 @@ export const VirtualTableHeader = React.memo<VirtualTableHeaderProps<any>>(
|
|
|
157
157
|
modal={true}
|
|
158
158
|
trigger={
|
|
159
159
|
<IconButton
|
|
160
|
-
className={onHover || openFilter ? "bg-white dark:bg-
|
|
160
|
+
className={onHover || openFilter ? "bg-white dark:bg-surface-950" : undefined}
|
|
161
161
|
size={"small"}
|
|
162
162
|
onClick={handleSettingsClick}>
|
|
163
163
|
<FilterListIcon size={"small"}/>
|
|
@@ -181,7 +181,7 @@ export const VirtualTableHeader = React.memo<VirtualTableHeaderProps<any>>(
|
|
|
181
181
|
ref={resizeHandleRef}
|
|
182
182
|
className={cls(
|
|
183
183
|
"absolute h-full w-[6px] top-0 right-0 cursor-col-resize",
|
|
184
|
-
hovered && "bg-
|
|
184
|
+
hovered && "bg-surface-300 dark:bg-surface-700"
|
|
185
185
|
)}
|
|
186
186
|
onMouseDown={onClickResizeColumn ? () => onClickResizeColumn(columnIndex, column) : undefined}
|
|
187
187
|
/>}
|
|
@@ -238,9 +238,9 @@ function FilterForm<M>({
|
|
|
238
238
|
e.preventDefault();
|
|
239
239
|
submit();
|
|
240
240
|
}}
|
|
241
|
-
className={"text-
|
|
241
|
+
className={"text-surface-900 dark:text-white"}>
|
|
242
242
|
<div
|
|
243
|
-
className={cls(defaultBorderMixin, "py-4 px-6
|
|
243
|
+
className={cls(defaultBorderMixin, "py-4 px-6 typography-label border-b")}>
|
|
244
244
|
{column.title ?? id}
|
|
245
245
|
</div>
|
|
246
246
|
{filterField && <div className="m-4">
|
|
@@ -100,7 +100,7 @@ export const VirtualTableHeaderRow = ({
|
|
|
100
100
|
|
|
101
101
|
return (
|
|
102
102
|
<div
|
|
103
|
-
className={cls(defaultBorderMixin, "z-20 sticky min-w-full flex w-fit flex-row top-0 left-0 h-12 border-b bg-
|
|
103
|
+
className={cls(defaultBorderMixin, "z-20 sticky min-w-full flex w-fit flex-row top-0 left-0 h-12 border-b bg-surface-50 dark:bg-surface-900")}>
|
|
104
104
|
{columns.map((c, columnIndex) => {
|
|
105
105
|
const column = columns[columnIndex];
|
|
106
106
|
|
|
@@ -82,6 +82,16 @@ export interface VirtualTableProps<T extends Record<string, any>> {
|
|
|
82
82
|
*/
|
|
83
83
|
onFilterUpdate?: (filter?: VirtualTableFilterValues<any> | undefined) => void;
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Callback when the table is scrolled
|
|
87
|
+
* @param props
|
|
88
|
+
*/
|
|
89
|
+
onScroll?: (props: {
|
|
90
|
+
scrollDirection: "forward" | "backward",
|
|
91
|
+
scrollOffset: number,
|
|
92
|
+
scrollUpdateWasRequested: boolean
|
|
93
|
+
}) => void;
|
|
94
|
+
|
|
85
95
|
/**
|
|
86
96
|
* Default sort applied to this collection
|
|
87
97
|
*/
|
|
@@ -148,9 +158,9 @@ export interface VirtualTableProps<T extends Record<string, any>> {
|
|
|
148
158
|
AddColumnComponent?: React.ComponentType;
|
|
149
159
|
|
|
150
160
|
/**
|
|
151
|
-
*
|
|
161
|
+
* Initial scroll position
|
|
152
162
|
*/
|
|
153
|
-
|
|
163
|
+
initialScroll?: number;
|
|
154
164
|
|
|
155
165
|
}
|
|
156
166
|
|
|
@@ -29,7 +29,7 @@ export const VirtualTableRow = React.memo<VirtualTableRowProps<any>>(
|
|
|
29
29
|
return (
|
|
30
30
|
<div
|
|
31
31
|
className={cls(
|
|
32
|
-
"flex min-w-full text-sm border-b border-
|
|
32
|
+
"flex min-w-full text-sm border-b border-surface-200 dark:border-surface-800 border-opacity-40 dark:border-opacity-40",
|
|
33
33
|
rowClassName ? rowClassName(rowData) : "",
|
|
34
34
|
{
|
|
35
35
|
"hover:bg-opacity-95": hoverRow,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { DateTimeField } from "@firecms/ui";
|
|
2
|
+
import { cls, DateTimeField, focusedDisabled } from "@firecms/ui";
|
|
3
3
|
import { useCustomizationController } from "../../../hooks";
|
|
4
4
|
|
|
5
5
|
export function VirtualTableDateField(props: {
|
|
@@ -26,10 +26,10 @@ export function VirtualTableDateField(props: {
|
|
|
26
26
|
<DateTimeField
|
|
27
27
|
value={internalValue ?? undefined}
|
|
28
28
|
onChange={(dateValue) => updateValue(dateValue ?? null)}
|
|
29
|
-
size={"
|
|
29
|
+
size={"large"}
|
|
30
30
|
invisible={true}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
inputClassName={cls("w-full h-full", focusedDisabled)}
|
|
32
|
+
className={cls("w-full h-full", focusedDisabled)}
|
|
33
33
|
mode={mode}
|
|
34
34
|
locale={locale}
|
|
35
35
|
/>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
|
|
3
3
|
import { useDebouncedCallback } from "../../../util";
|
|
4
|
-
import { TextareaAutosize } from "@firecms/ui";
|
|
4
|
+
import { focusedDisabled, TextareaAutosize } from "@firecms/ui";
|
|
5
5
|
|
|
6
6
|
export function VirtualTableInput(props: {
|
|
7
7
|
error: Error | undefined;
|
|
@@ -58,6 +58,7 @@ export function VirtualTableInput(props: {
|
|
|
58
58
|
|
|
59
59
|
return (
|
|
60
60
|
<TextareaAutosize
|
|
61
|
+
className={focusedDisabled}
|
|
61
62
|
ref={ref}
|
|
62
63
|
style={{
|
|
63
64
|
padding: 0,
|
|
@@ -65,7 +66,6 @@ export function VirtualTableInput(props: {
|
|
|
65
66
|
width: "100%",
|
|
66
67
|
color: "unset",
|
|
67
68
|
fontWeight: "unset",
|
|
68
|
-
lineHeight: "unset",
|
|
69
69
|
fontSize: "unset",
|
|
70
70
|
fontFamily: "unset",
|
|
71
71
|
background: "unset",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { useDebouncedCallback } from "../../../util";
|
|
3
|
+
import { cls, focusedDisabled } from "@firecms/ui";
|
|
3
4
|
|
|
4
5
|
export function VirtualTableNumberInput(props: {
|
|
5
6
|
error: Error | undefined;
|
|
@@ -65,7 +66,7 @@ export function VirtualTableNumberInput(props: {
|
|
|
65
66
|
return (
|
|
66
67
|
<input
|
|
67
68
|
ref={ref}
|
|
68
|
-
className="w-full text-right p-0 m-0 bg-transparent border-none resize-none outline-none font-normal leading-normal text-unset"
|
|
69
|
+
className={cls("w-full text-right p-0 m-0 bg-transparent border-none resize-none outline-none font-normal leading-normal text-unset", focusedDisabled)}
|
|
69
70
|
style={{
|
|
70
71
|
textAlign: align
|
|
71
72
|
}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EnumValueConfig } from "../../../types";
|
|
2
|
-
import {
|
|
2
|
+
import { EnumValuesChip } from "../../../preview";
|
|
3
3
|
import React, { useCallback, useEffect } from "react";
|
|
4
4
|
import { MultiSelect, MultiSelectItem, Select, SelectItem } from "@firecms/ui";
|
|
5
5
|
|
|
@@ -18,9 +18,7 @@ export function VirtualTableSelect(props: {
|
|
|
18
18
|
}) {
|
|
19
19
|
|
|
20
20
|
const {
|
|
21
|
-
name,
|
|
22
21
|
enumValues,
|
|
23
|
-
error,
|
|
24
22
|
internalValue,
|
|
25
23
|
disabled,
|
|
26
24
|
small,
|
|
@@ -41,6 +39,7 @@ export function VirtualTableSelect(props: {
|
|
|
41
39
|
}, [focused, ref]);
|
|
42
40
|
|
|
43
41
|
const onChange = useCallback((updatedValue: string | string[]) => {
|
|
42
|
+
console.trace("onChange");
|
|
44
43
|
if (valueType === "number") {
|
|
45
44
|
if (multiple) {
|
|
46
45
|
const newValue = (updatedValue as string[]).map((v) => parseFloat(v));
|
|
@@ -58,37 +57,27 @@ export function VirtualTableSelect(props: {
|
|
|
58
57
|
}
|
|
59
58
|
}, [multiple, updateValue, valueType]);
|
|
60
59
|
|
|
61
|
-
const renderValue = (enumKey
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
enumValues={enumValues}
|
|
68
|
-
size={small ? "small" : "medium"}/>;
|
|
69
|
-
} else {
|
|
70
|
-
return <EnumValuesChip
|
|
71
|
-
key={`${enumKey}-${index}`}
|
|
72
|
-
enumKey={enumKey}
|
|
73
|
-
enumValues={enumValues}
|
|
74
|
-
size={small ? "small" : "medium"}/>;
|
|
75
|
-
}
|
|
60
|
+
const renderValue = (enumKey?: string | number) => {
|
|
61
|
+
return <EnumValuesChip
|
|
62
|
+
key={`${enumKey}`}
|
|
63
|
+
enumKey={String(enumKey)}
|
|
64
|
+
enumValues={enumValues}
|
|
65
|
+
size={small ? "small" : "medium"}/>;
|
|
76
66
|
};
|
|
67
|
+
|
|
77
68
|
return (
|
|
78
69
|
multiple
|
|
79
70
|
? <MultiSelect
|
|
80
71
|
inputRef={ref}
|
|
81
|
-
containerClassName="w-full h-full"
|
|
82
72
|
className="w-full h-full p-0 bg-transparent"
|
|
83
73
|
position={"item-aligned"}
|
|
84
74
|
disabled={disabled}
|
|
85
|
-
|
|
86
|
-
|
|
75
|
+
includeClear={false}
|
|
76
|
+
useChips={false}
|
|
87
77
|
value={validValue
|
|
88
78
|
? ((internalValue as any[]).map(v => v.toString()))
|
|
89
79
|
: ([])}
|
|
90
|
-
|
|
91
|
-
renderValue={renderValue}>
|
|
80
|
+
onValueChange={onChange}>
|
|
92
81
|
{enumValues?.map((enumConfig) => (
|
|
93
82
|
<MultiSelectItem
|
|
94
83
|
key={enumConfig.id}
|
|
@@ -102,17 +91,16 @@ export function VirtualTableSelect(props: {
|
|
|
102
91
|
</MultiSelect>
|
|
103
92
|
: <Select
|
|
104
93
|
inputRef={ref}
|
|
94
|
+
size={"large"}
|
|
95
|
+
fullWidth={true}
|
|
105
96
|
className="w-full h-full p-0 bg-transparent"
|
|
106
97
|
position={"item-aligned"}
|
|
107
98
|
disabled={disabled}
|
|
108
|
-
multiple={multiple}
|
|
109
99
|
padding={false}
|
|
110
|
-
includeFocusOutline={false}
|
|
111
100
|
value={validValue
|
|
112
|
-
?
|
|
113
|
-
:
|
|
101
|
+
? internalValue?.toString()
|
|
102
|
+
: ""}
|
|
114
103
|
onValueChange={onChange}
|
|
115
|
-
onMultiValueChange={onChange}
|
|
116
104
|
renderValue={renderValue}>
|
|
117
105
|
{enumValues?.map((enumConfig) => (
|
|
118
106
|
<SelectItem
|