@firecms/core 3.0.0-canary.26 → 3.0.0-canary.260
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 +31 -12
- 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 +14 -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 +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -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 -5
- package/dist/components/ErrorView.d.ts +1 -1
- 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 +4 -3
- package/dist/components/HomePage/NavigationGroup.d.ts +7 -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/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- 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 +24 -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 +5 -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 +43 -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/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +37 -64
- package/dist/form/EntityFormActions.d.ts +21 -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/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 +5 -13
- 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 +17 -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 +57 -13
- 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 +23088 -13940
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +25823 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- 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/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +110 -25
- package/dist/types/customization_controller.d.ts +8 -0
- 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 +72 -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 +74 -42
- package/dist/types/firecms.d.ts +16 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +62 -19
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +56 -13
- package/dist/types/properties.d.ts +80 -24
- 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 +1 -0
- 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 +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 +7 -4
- 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 +15 -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 +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +42 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +64 -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 +447 -229
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +65 -40
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +72 -42
- 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 +34 -39
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +235 -118
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- 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/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +80 -59
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +499 -157
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +599 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +63 -29
- package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
- 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 +21 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -145
- 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 +46 -0
- package/src/components/VirtualTable/VirtualTable.tsx +105 -51
- 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 +28 -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 +2 -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 +64 -44
- 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 +6 -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 +435 -470
- package/src/core/EntityEditViewFormActions.tsx +329 -0
- package/src/core/EntitySidePanel.tsx +88 -21
- package/src/core/FireCMS.tsx +74 -58
- 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 +26 -13
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +620 -534
- package/src/form/EntityFormActions.tsx +211 -0
- package/src/form/PropertyFieldBinding.tsx +88 -45
- package/src/form/components/CustomIdField.tsx +9 -3
- 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 +23 -13
- package/src/form/components/StorageUploadProgress.tsx +5 -6
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
- 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 +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
- 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 +11 -16
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +17 -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 +26 -33
- 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 +440 -119
- package/src/hooks/useFireCMSContext.tsx +3 -33
- 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 +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +204 -77
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +34 -25
- 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 +26 -37
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- 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 +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +3 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +132 -30
- package/src/types/customization_controller.tsx +9 -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 +86 -10
- 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 +85 -46
- package/src/types/firecms.tsx +18 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +77 -24
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +66 -15
- package/src/types/properties.ts +95 -26
- package/src/types/property_config.tsx +1 -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 +83 -1
- package/src/types/user.ts +2 -0
- 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 +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 +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 +141 -25
- package/src/util/objects.ts +90 -33
- 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 +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +122 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +91 -28
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- 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/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- 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
|
@@ -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
|
};
|
|
@@ -4,10 +4,12 @@ import {
|
|
|
4
4
|
CMSType,
|
|
5
5
|
Entity,
|
|
6
6
|
EntityReference,
|
|
7
|
+
ReferenceProperty,
|
|
7
8
|
ResolvedArrayProperty,
|
|
8
9
|
ResolvedNumberProperty,
|
|
9
10
|
ResolvedProperty,
|
|
10
|
-
ResolvedStringProperty
|
|
11
|
+
ResolvedStringProperty,
|
|
12
|
+
StringProperty
|
|
11
13
|
} from "../../types";
|
|
12
14
|
|
|
13
15
|
import { VirtualTableInput } from "../VirtualTable/fields/VirtualTableInput";
|
|
@@ -24,14 +26,13 @@ import { getPreviewSizeFrom } from "../../preview/util";
|
|
|
24
26
|
import { isReadOnly } from "../../util";
|
|
25
27
|
|
|
26
28
|
import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
|
|
27
|
-
import { useFireCMSContext } from "../../hooks";
|
|
28
29
|
|
|
29
30
|
import { EntityTableCell } from "./internal/EntityTableCell";
|
|
30
31
|
import { EntityTableCellActions } from "./internal/EntityTableCellActions";
|
|
31
32
|
|
|
32
|
-
import { getRowHeight } from "../VirtualTable/common";
|
|
33
33
|
import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
|
|
34
34
|
import { useClearRestoreValue } from "../../form/useClearRestoreValue";
|
|
35
|
+
import { getRowHeight } from "../common/table_height";
|
|
35
36
|
|
|
36
37
|
export interface PropertyTableCellProps<T extends CMSType> {
|
|
37
38
|
propertyKey: string;
|
|
@@ -46,9 +47,12 @@ export interface PropertyTableCellProps<T extends CMSType> {
|
|
|
46
47
|
entity: Entity<any>;
|
|
47
48
|
path: string;
|
|
48
49
|
disabled: boolean;
|
|
50
|
+
enablePopupIcon?: boolean;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
function isStorageProperty(property: ResolvedProperty) {
|
|
54
|
+
if (property.dataType === "string" && property.markdown)
|
|
55
|
+
return false;
|
|
52
56
|
if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
|
|
53
57
|
return true;
|
|
54
58
|
if (property.dataType === "array") {
|
|
@@ -74,11 +78,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
74
78
|
path,
|
|
75
79
|
entity,
|
|
76
80
|
readonly,
|
|
77
|
-
disabled: disabledProp
|
|
81
|
+
disabled: disabledProp,
|
|
82
|
+
enablePopupIcon = true
|
|
78
83
|
}: PropertyTableCellProps<T>) {
|
|
79
84
|
|
|
80
|
-
const context = useFireCMSContext();
|
|
81
|
-
|
|
82
85
|
const {
|
|
83
86
|
onValueChange,
|
|
84
87
|
size,
|
|
@@ -88,13 +91,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
88
91
|
} = useSelectableTableController();
|
|
89
92
|
|
|
90
93
|
const selected = selectedCell?.propertyKey === propertyKey &&
|
|
91
|
-
selectedCell?.
|
|
92
|
-
selectedCell?.
|
|
94
|
+
selectedCell?.entityPath === entity.path &&
|
|
95
|
+
selectedCell?.entityId === entity.id;
|
|
93
96
|
|
|
94
97
|
const [internalValue, setInternalValue] = useState<any | null>(value);
|
|
95
98
|
const internalValueRef = useRef(value);
|
|
96
99
|
|
|
97
100
|
const [error, setError] = useState<Error | undefined>();
|
|
101
|
+
const [validationError, setValidationError] = useState<Error | undefined>();
|
|
98
102
|
const [saved, setSaved] = useState<boolean>(false);
|
|
99
103
|
|
|
100
104
|
const onValueUpdated = useCallback(() => {
|
|
@@ -120,7 +124,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
120
124
|
useEffect(
|
|
121
125
|
() => {
|
|
122
126
|
if (!equal(value, internalValueRef.current)) {
|
|
123
|
-
|
|
127
|
+
setValidationError(undefined);
|
|
124
128
|
setInternalValue(value);
|
|
125
129
|
internalValueRef.current = value;
|
|
126
130
|
onValueUpdated();
|
|
@@ -136,32 +140,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
136
140
|
validation
|
|
137
141
|
.validate(value)
|
|
138
142
|
.then(() => {
|
|
139
|
-
|
|
143
|
+
setValidationError(undefined);
|
|
140
144
|
internalValueRef.current = value;
|
|
141
145
|
if (onValueChange) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
})
|
|
146
|
+
try {
|
|
147
|
+
onValueChange({
|
|
148
|
+
value,
|
|
149
|
+
propertyKey,
|
|
150
|
+
setError,
|
|
151
|
+
onValueUpdated,
|
|
152
|
+
data: entity,
|
|
153
|
+
});
|
|
154
|
+
} catch (e: any) {
|
|
155
|
+
console.error("onValueChange error", e);
|
|
156
|
+
setError(e);
|
|
157
|
+
}
|
|
158
|
+
|
|
151
159
|
}
|
|
152
160
|
})
|
|
153
161
|
.catch((e) => {
|
|
154
|
-
|
|
162
|
+
setValidationError(e);
|
|
155
163
|
});
|
|
156
164
|
};
|
|
157
165
|
|
|
158
166
|
useEffect(() => {
|
|
159
167
|
validation
|
|
160
168
|
.validate(internalValue)
|
|
161
|
-
.then(() =>
|
|
162
|
-
.catch(
|
|
163
|
-
setError(e);
|
|
164
|
-
});
|
|
169
|
+
.then(() => setValidationError(undefined))
|
|
170
|
+
.catch(setValidationError);
|
|
165
171
|
}, [internalValue, validation, propertyKey, property, entity]);
|
|
166
172
|
|
|
167
173
|
const updateValue = (newValue: any | null) => {
|
|
@@ -189,7 +195,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
189
195
|
select({
|
|
190
196
|
width,
|
|
191
197
|
height,
|
|
192
|
-
entity,
|
|
198
|
+
entityPath: entity.path,
|
|
199
|
+
entityId: entity.id,
|
|
193
200
|
cellRect,
|
|
194
201
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
195
202
|
});
|
|
@@ -205,7 +212,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
205
212
|
setPopupCell({
|
|
206
213
|
width,
|
|
207
214
|
height,
|
|
208
|
-
entity,
|
|
215
|
+
entityPath: entity.path,
|
|
216
|
+
entityId: entity.id,
|
|
209
217
|
cellRect,
|
|
210
218
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
211
219
|
});
|
|
@@ -237,7 +245,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
237
245
|
height={getRowHeight(size)}
|
|
238
246
|
propertyKey={propertyKey}
|
|
239
247
|
property={property}
|
|
240
|
-
// entity={entity}
|
|
241
248
|
value={internalValue}
|
|
242
249
|
size={getPreviewSizeFrom(size)}
|
|
243
250
|
/>
|
|
@@ -246,8 +253,28 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
246
253
|
|
|
247
254
|
if (!customField && (!customPreview || selected)) {
|
|
248
255
|
const isAStorageProperty = isStorageProperty(property);
|
|
249
|
-
if (
|
|
250
|
-
|
|
256
|
+
if (property.dataType === "string" && (property as StringProperty).reference?.path) {
|
|
257
|
+
const stringProperty = property as StringProperty;
|
|
258
|
+
const path = stringProperty.reference?.path as string;
|
|
259
|
+
const referenceProperty = stringProperty.reference as ReferenceProperty;
|
|
260
|
+
const referenceValue = internalValue ? new EntityReference(internalValue, path) : undefined;
|
|
261
|
+
innerComponent =
|
|
262
|
+
<TableReferenceField name={propertyKey as string}
|
|
263
|
+
internalValue={referenceValue}
|
|
264
|
+
updateValue={(v) => updateValue(v ? (v as EntityReference).id : null)}
|
|
265
|
+
disabled={disabled}
|
|
266
|
+
size={size}
|
|
267
|
+
path={path}
|
|
268
|
+
multiselect={false}
|
|
269
|
+
previewProperties={referenceProperty.previewProperties}
|
|
270
|
+
includeId={referenceProperty.includeId}
|
|
271
|
+
includeEntityLink={referenceProperty.includeEntityLink}
|
|
272
|
+
title={stringProperty.name}
|
|
273
|
+
forceFilter={referenceProperty.forceFilter}
|
|
274
|
+
/>;
|
|
275
|
+
allowScroll = false;
|
|
276
|
+
} else if (isAStorageProperty) {
|
|
277
|
+
innerComponent = <TableStorageUpload error={validationError ?? error}
|
|
251
278
|
disabled={disabled}
|
|
252
279
|
focused={selected}
|
|
253
280
|
selected={selected}
|
|
@@ -274,7 +301,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
274
301
|
valueType={"number"}
|
|
275
302
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
276
303
|
enumValues={numberProperty.enumValues}
|
|
277
|
-
error={error}
|
|
304
|
+
error={validationError ?? error}
|
|
278
305
|
internalValue={internalValue as string | number}
|
|
279
306
|
updateValue={updateValue}
|
|
280
307
|
/>;
|
|
@@ -282,7 +309,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
282
309
|
} else {
|
|
283
310
|
innerComponent = <VirtualTableNumberInput
|
|
284
311
|
align={align}
|
|
285
|
-
error={error}
|
|
312
|
+
error={validationError ?? error}
|
|
286
313
|
focused={selected}
|
|
287
314
|
disabled={disabled}
|
|
288
315
|
value={internalValue as number}
|
|
@@ -300,14 +327,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
300
327
|
valueType={"string"}
|
|
301
328
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
302
329
|
enumValues={stringProperty.enumValues}
|
|
303
|
-
error={error}
|
|
330
|
+
error={validationError ?? error}
|
|
304
331
|
internalValue={internalValue as string | number}
|
|
305
332
|
updateValue={updateValue}
|
|
306
333
|
/>;
|
|
307
334
|
fullHeight = true;
|
|
308
|
-
} else if (!stringProperty.storage) {
|
|
335
|
+
} else if (stringProperty.markdown || !stringProperty.storage || !stringProperty.reference) {
|
|
309
336
|
const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
|
|
310
|
-
innerComponent = <VirtualTableInput error={error}
|
|
337
|
+
innerComponent = <VirtualTableInput error={validationError ?? error}
|
|
311
338
|
disabled={disabled}
|
|
312
339
|
multiline={multiline}
|
|
313
340
|
focused={selected}
|
|
@@ -317,7 +344,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
317
344
|
allowScroll = true;
|
|
318
345
|
}
|
|
319
346
|
} else if (property.dataType === "boolean") {
|
|
320
|
-
innerComponent = <VirtualTableSwitch error={error}
|
|
347
|
+
innerComponent = <VirtualTableSwitch error={validationError ?? error}
|
|
321
348
|
disabled={disabled}
|
|
322
349
|
focused={selected}
|
|
323
350
|
internalValue={internalValue as boolean}
|
|
@@ -325,7 +352,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
325
352
|
/>;
|
|
326
353
|
} else if (property.dataType === "date") {
|
|
327
354
|
innerComponent = <VirtualTableDateField name={propertyKey as string}
|
|
328
|
-
error={error}
|
|
355
|
+
error={validationError ?? error}
|
|
329
356
|
disabled={disabled}
|
|
330
357
|
mode={property.mode}
|
|
331
358
|
focused={selected}
|
|
@@ -346,6 +373,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
346
373
|
path={property.path}
|
|
347
374
|
multiselect={false}
|
|
348
375
|
previewProperties={property.previewProperties}
|
|
376
|
+
includeId={property.includeId}
|
|
377
|
+
includeEntityLink={property.includeEntityLink}
|
|
349
378
|
title={property.name}
|
|
350
379
|
forceFilter={property.forceFilter}
|
|
351
380
|
/>;
|
|
@@ -368,7 +397,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
368
397
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
369
398
|
valueType={arrayProperty.of.dataType}
|
|
370
399
|
enumValues={arrayProperty.of.enumValues}
|
|
371
|
-
error={error}
|
|
400
|
+
error={validationError ?? error}
|
|
372
401
|
internalValue={internalValue as string | number}
|
|
373
402
|
updateValue={updateValue}
|
|
374
403
|
/>;
|
|
@@ -387,9 +416,11 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
387
416
|
size={size}
|
|
388
417
|
multiselect={true}
|
|
389
418
|
path={arrayProperty.of.path}
|
|
390
|
-
previewProperties={arrayProperty.of.
|
|
419
|
+
previewProperties={arrayProperty.of.previewKeys}
|
|
391
420
|
title={arrayProperty.name}
|
|
392
421
|
forceFilter={arrayProperty.of.forceFilter}
|
|
422
|
+
includeId={arrayProperty.of.includeId}
|
|
423
|
+
includeEntityLink={arrayProperty.of.includeEntityLink}
|
|
393
424
|
/>;
|
|
394
425
|
}
|
|
395
426
|
allowScroll = false;
|
|
@@ -401,11 +432,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
401
432
|
|
|
402
433
|
if (!innerComponent) {
|
|
403
434
|
allowScroll = false;
|
|
404
|
-
showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
435
|
+
showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
405
436
|
innerComponent = (
|
|
406
|
-
<PropertyPreview
|
|
437
|
+
<PropertyPreview width={width}
|
|
407
438
|
height={height}
|
|
408
|
-
// entity={entity}
|
|
409
439
|
propertyKey={propertyKey as string}
|
|
410
440
|
value={internalValue}
|
|
411
441
|
property={property}
|
|
@@ -426,7 +456,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
426
456
|
removePadding={removePadding}
|
|
427
457
|
fullHeight={fullHeight}
|
|
428
458
|
saved={saved}
|
|
429
|
-
error={error}
|
|
459
|
+
error={validationError ?? error}
|
|
430
460
|
align={align}
|
|
431
461
|
allowScroll={allowScroll}
|
|
432
462
|
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,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import React, { useCallback
|
|
1
|
+
import React, { useCallback } from "react";
|
|
2
2
|
import equal from "react-fast-compare"
|
|
3
3
|
|
|
4
4
|
import { ReferencePreview } from "../../../preview";
|
|
5
5
|
import { CollectionSize, Entity, EntityCollection, EntityReference, FilterValues } from "../../../types";
|
|
6
6
|
|
|
7
7
|
import { getPreviewSizeFrom } from "../../../preview/util";
|
|
8
|
-
import { getReferenceFrom } from "../../../util";
|
|
8
|
+
import { getReferenceFrom, IconForView } from "../../../util";
|
|
9
9
|
import { useCustomizationController, useNavigationController, useReferenceDialog } from "../../../hooks";
|
|
10
10
|
import { ErrorView } from "../../ErrorView";
|
|
11
|
-
import {
|
|
11
|
+
import { cls, EditIcon } from "@firecms/ui";
|
|
12
12
|
import { EntityPreviewContainer } from "../../EntityPreview";
|
|
13
13
|
|
|
14
14
|
type TableReferenceFieldProps = {
|
|
@@ -22,6 +22,8 @@ type TableReferenceFieldProps = {
|
|
|
22
22
|
title?: string;
|
|
23
23
|
path: string;
|
|
24
24
|
forceFilter?: FilterValues<string>;
|
|
25
|
+
includeId?: boolean;
|
|
26
|
+
includeEntityLink?: boolean;
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
export function TableReferenceField(props: TableReferenceFieldProps) {
|
|
@@ -37,11 +39,11 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
|
|
|
37
39
|
throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
|
-
return <
|
|
42
|
+
return <TableReferenceFieldInternal {...props} collection={collection}/>;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
export const
|
|
44
|
-
function
|
|
45
|
+
export const TableReferenceFieldInternal = React.memo(
|
|
46
|
+
function TableReferenceFieldInternal(props: TableReferenceFieldProps & {
|
|
45
47
|
collection: EntityCollection;
|
|
46
48
|
}) {
|
|
47
49
|
const {
|
|
@@ -55,7 +57,9 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
55
57
|
title,
|
|
56
58
|
disabled,
|
|
57
59
|
forceFilter,
|
|
58
|
-
collection
|
|
60
|
+
collection,
|
|
61
|
+
includeId,
|
|
62
|
+
includeEntityLink
|
|
59
63
|
} = props;
|
|
60
64
|
|
|
61
65
|
const onSingleEntitySelected = useCallback((entity: Entity<any>) => {
|
|
@@ -83,11 +87,11 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
83
87
|
}
|
|
84
88
|
);
|
|
85
89
|
|
|
86
|
-
const handleOpen =
|
|
90
|
+
const handleOpen = () => {
|
|
87
91
|
if (disabled)
|
|
88
92
|
return;
|
|
89
93
|
referenceDialogController.open();
|
|
90
|
-
}
|
|
94
|
+
};
|
|
91
95
|
|
|
92
96
|
const valueNotSet = !internalValue || (Array.isArray(internalValue) && internalValue.length === 0);
|
|
93
97
|
|
|
@@ -100,6 +104,8 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
100
104
|
hover={!disabled}
|
|
101
105
|
disabled={!path}
|
|
102
106
|
previewProperties={previewProperties}
|
|
107
|
+
includeId={includeId}
|
|
108
|
+
includeEntityLink={includeEntityLink}
|
|
103
109
|
/>;
|
|
104
110
|
else
|
|
105
111
|
return <EntityPreviewContainer
|
|
@@ -117,11 +123,13 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
117
123
|
key={`preview_array_ref_${name}_${index}`}>
|
|
118
124
|
<ReferencePreview
|
|
119
125
|
onClick={disabled ? undefined : handleOpen}
|
|
120
|
-
size={"
|
|
126
|
+
size={"small"}
|
|
121
127
|
reference={reference}
|
|
122
128
|
hover={!disabled}
|
|
123
129
|
disabled={!path}
|
|
124
130
|
previewProperties={previewProperties}
|
|
131
|
+
includeId={includeId}
|
|
132
|
+
includeEntityLink={includeEntityLink}
|
|
125
133
|
/>
|
|
126
134
|
</div>
|
|
127
135
|
)
|
|
@@ -142,13 +150,19 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
142
150
|
{internalValue && multiselect && buildMultipleReferenceField()}
|
|
143
151
|
|
|
144
152
|
{valueNotSet &&
|
|
145
|
-
<
|
|
153
|
+
<EntityPreviewContainer
|
|
154
|
+
className={cls("px-3 py-2 text-sm font-medium flex items-center",
|
|
155
|
+
multiselect ? "gap-4" : "gap-6",
|
|
156
|
+
disabled
|
|
157
|
+
? "text-surface-accent-500"
|
|
158
|
+
: "cursor-pointer text-text-secondary dark:text-text-secondary-dark hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800")}
|
|
146
159
|
onClick={handleOpen}
|
|
147
|
-
size={"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
160
|
+
size={"medium"}>
|
|
161
|
+
<EditIcon
|
|
162
|
+
size={"small"}
|
|
163
|
+
className={"ml-2 mr-1 text-surface-300 dark:text-surface-600"}/>
|
|
164
|
+
{title}
|
|
165
|
+
</EntityPreviewContainer>}
|
|
152
166
|
|
|
153
167
|
</div>
|
|
154
168
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { useMemo
|
|
2
|
+
import { useMemo } from "react";
|
|
3
3
|
|
|
4
4
|
import { Entity, ResolvedArrayProperty, ResolvedStringProperty, StorageConfig } from "../../../types";
|
|
5
5
|
import { useDropzone } from "react-dropzone";
|
|
@@ -9,7 +9,7 @@ import { useSnackbarController, useStorageSource } from "../../../hooks";
|
|
|
9
9
|
import { getThumbnailMeasure } from "../../../preview/util";
|
|
10
10
|
import { StorageFieldItem, useStorageUploadController } from "../../../util/useStorageUploadController";
|
|
11
11
|
import { StorageUploadProgress } from "../../../form/components/StorageUploadProgress";
|
|
12
|
-
import {
|
|
12
|
+
import { cls, EditIcon, IconButton, Typography } from "@firecms/ui";
|
|
13
13
|
import { EntityTableCellActions } from "../internal/EntityTableCellActions";
|
|
14
14
|
|
|
15
15
|
const dropZoneClasses = "max-w-full box-border relative pt-[2px] items-center border border-transparent outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
|
|
@@ -140,9 +140,7 @@ function StorageUpload({
|
|
|
140
140
|
storagePathBuilder,
|
|
141
141
|
}: StorageUploadProps) {
|
|
142
142
|
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
const previewSize = multipleFilesSupported && previewSizeInput === "medium" ? "small" : previewSizeInput;
|
|
143
|
+
const previewSize = previewSizeInput;
|
|
146
144
|
if (multipleFilesSupported) {
|
|
147
145
|
const arrayProperty = property as ResolvedArrayProperty<string[]>;
|
|
148
146
|
if (Array.isArray(arrayProperty.of)) {
|
|
@@ -179,10 +177,18 @@ function StorageUpload({
|
|
|
179
177
|
onDropRejected: (fileRejections, event) => {
|
|
180
178
|
for (const fileRejection of fileRejections) {
|
|
181
179
|
for (const error of fileRejection.errors) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
180
|
+
console.error("Error uploading file: ", error);
|
|
181
|
+
if (error.code === "file-too-large") {
|
|
182
|
+
snackbarContext.open({
|
|
183
|
+
type: "error",
|
|
184
|
+
message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
|
|
185
|
+
});
|
|
186
|
+
} else if (error.code === "file-invalid-type") {
|
|
187
|
+
snackbarContext.open({
|
|
188
|
+
type: "error",
|
|
189
|
+
message: "Error uploading file: File type is not supported"
|
|
190
|
+
});
|
|
191
|
+
}
|
|
186
192
|
}
|
|
187
193
|
}
|
|
188
194
|
}
|
|
@@ -204,10 +210,7 @@ function StorageUpload({
|
|
|
204
210
|
|
|
205
211
|
return (
|
|
206
212
|
<div {...rootProps}
|
|
207
|
-
|
|
208
|
-
onMouseMove={() => setOnHover(true)}
|
|
209
|
-
onMouseLeave={() => setOnHover(false)}
|
|
210
|
-
className={cn(dropZoneClasses,
|
|
213
|
+
className={cls(dropZoneClasses,
|
|
211
214
|
"relative w-full h-full flex",
|
|
212
215
|
`justify-${hasValue ? "start" : "center"}`,
|
|
213
216
|
isDragActive ? activeDropClasses : "",
|
|
@@ -244,14 +247,13 @@ function StorageUpload({
|
|
|
244
247
|
}
|
|
245
248
|
|
|
246
249
|
return child;
|
|
247
|
-
})
|
|
248
|
-
}
|
|
250
|
+
})}
|
|
249
251
|
|
|
250
252
|
{!internalValue && <div
|
|
251
253
|
className="flex-grow m-2 max-w-[200px]"
|
|
252
254
|
onClick={open}>
|
|
253
255
|
<Typography
|
|
254
|
-
className="text-
|
|
256
|
+
className="text-surface-400 dark:text-surface-600"
|
|
255
257
|
variant={"body2"}
|
|
256
258
|
align={"center"}>
|
|
257
259
|
{helpText}
|
|
@@ -268,7 +270,7 @@ function StorageUpload({
|
|
|
268
270
|
color={"inherit"}
|
|
269
271
|
size={"small"}
|
|
270
272
|
onClick={open}>
|
|
271
|
-
<EditIcon size={"small"} className={"text-
|
|
273
|
+
<EditIcon size={"small"} className={"text-surface-500"}/>
|
|
272
274
|
</IconButton>
|
|
273
275
|
</EntityTableCellActions>
|
|
274
276
|
|
|
@@ -8,5 +8,5 @@ export type {
|
|
|
8
8
|
|
|
9
9
|
export * from "./PropertyTableCell";
|
|
10
10
|
export * from "./EntityCollectionRowActions";
|
|
11
|
-
export * from "../common/
|
|
11
|
+
export * from "../common/useDataSourceTableController";
|
|
12
12
|
export * from "./column_utils";
|