@firecms/core 3.0.0-canary.29 → 3.0.0-canary.292
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 +10 -7
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +77 -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 +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyCollectionView.d.ts +23 -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/UserDisplay.d.ts +7 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- 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/contexts/InternalUserManagementContext.d.ts +3 -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 +49 -11
- 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 +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 +40 -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/LocalChangesMenu.d.ts +11 -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/field_bindings/UserSelectFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +18 -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 +3 -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/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 +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 +24546 -13965
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +27256 -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 +4 -3
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- 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 +8 -10
- package/dist/types/collections.d.ts +123 -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 +12 -3
- 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 +79 -39
- package/dist/types/firecms.d.ts +31 -3
- package/dist/types/firecms_context.d.ts +17 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal_user_management.d.ts +20 -0
- package/dist/types/navigation.d.ts +62 -19
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +58 -13
- package/dist/types/properties.d.ts +122 -31
- 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/collections.d.ts +1 -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 +28 -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/make_properties_editable.d.ts +1 -2
- 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 +3 -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 +4 -3
- package/package.json +70 -53
- 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 +87 -62
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +84 -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 +241 -119
- 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 +83 -62
- package/src/components/EntityView.tsx +34 -42
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +516 -158
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +702 -0
- package/src/components/HomePage/NavigationCard.tsx +48 -39
- package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyCollectionView.tsx +329 -0
- package/src/components/PropertyConfigBadge.tsx +10 -4
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -157
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +27 -9
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -24
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/UserDisplay.tsx +55 -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/fields/VirtualTableUserSelect.tsx +99 -0
- 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 +16 -2
- 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/InternalUserManagementContext.tsx +4 -0
- 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 +447 -469
- package/src/core/EntityEditViewFormActions.tsx +344 -0
- package/src/core/EntitySidePanel.tsx +96 -23
- package/src/core/FireCMS.tsx +85 -60
- 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 +41 -14
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +740 -523
- package/src/form/EntityFormActions.tsx +226 -0
- package/src/form/PropertyFieldBinding.tsx +88 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/ErrorFocus.tsx +22 -29
- 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/LocalChangesMenu.tsx +144 -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 -33
- 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/field_bindings/UserSelectFieldBinding.tsx +94 -0
- package/src/form/index.tsx +21 -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 +4 -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/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +515 -121
- 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 +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 +42 -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 +30 -38
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +1 -0
- 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 +8 -7
- package/src/preview/property_previews/MapPropertyPreview.tsx +14 -13
- package/src/preview/property_previews/NumberPropertyPreview.tsx +2 -2
- 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 +146 -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 +19 -3
- 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 +91 -42
- package/src/types/firecms.tsx +34 -4
- package/src/types/firecms_context.tsx +18 -1
- package/src/types/index.ts +1 -1
- package/src/types/internal_user_management.ts +24 -0
- package/src/types/navigation.ts +77 -24
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +69 -15
- package/src/types/properties.ts +141 -33
- 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 +83 -1
- package/src/types/user.ts +3 -1
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/collections.ts +8 -0
- package/src/util/createFormexStub.tsx +66 -0
- package/src/util/entities.ts +11 -8
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +223 -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 +11 -4
- package/src/util/make_properties_editable.ts +5 -19
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +128 -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 +162 -62
- 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";
|
|
@@ -15,6 +17,7 @@ import { VirtualTableSelect } from "../VirtualTable/fields/VirtualTableSelect";
|
|
|
15
17
|
import { VirtualTableNumberInput } from "../VirtualTable/fields/VirtualTableNumberInput";
|
|
16
18
|
import { VirtualTableSwitch } from "../VirtualTable/fields/VirtualTableSwitch";
|
|
17
19
|
import { VirtualTableDateField } from "../VirtualTable/fields/VirtualTableDateField";
|
|
20
|
+
import { VirtualTableUserSelect } from "../VirtualTable/fields/VirtualTableUserSelect";
|
|
18
21
|
|
|
19
22
|
import { TableStorageUpload } from "./fields/TableStorageUpload";
|
|
20
23
|
import { TableReferenceField } from "./fields/TableReferenceField";
|
|
@@ -24,14 +27,13 @@ import { getPreviewSizeFrom } from "../../preview/util";
|
|
|
24
27
|
import { isReadOnly } from "../../util";
|
|
25
28
|
|
|
26
29
|
import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
|
|
27
|
-
import { useFireCMSContext } from "../../hooks";
|
|
28
30
|
|
|
29
31
|
import { EntityTableCell } from "./internal/EntityTableCell";
|
|
30
32
|
import { EntityTableCellActions } from "./internal/EntityTableCellActions";
|
|
31
33
|
|
|
32
|
-
import { getRowHeight } from "../VirtualTable/common";
|
|
33
34
|
import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
|
|
34
35
|
import { useClearRestoreValue } from "../../form/useClearRestoreValue";
|
|
36
|
+
import { getRowHeight } from "../common/table_height";
|
|
35
37
|
|
|
36
38
|
export interface PropertyTableCellProps<T extends CMSType> {
|
|
37
39
|
propertyKey: string;
|
|
@@ -46,9 +48,12 @@ export interface PropertyTableCellProps<T extends CMSType> {
|
|
|
46
48
|
entity: Entity<any>;
|
|
47
49
|
path: string;
|
|
48
50
|
disabled: boolean;
|
|
51
|
+
enablePopupIcon?: boolean;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
function isStorageProperty(property: ResolvedProperty) {
|
|
55
|
+
if (property.dataType === "string" && property.markdown)
|
|
56
|
+
return false;
|
|
52
57
|
if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
|
|
53
58
|
return true;
|
|
54
59
|
if (property.dataType === "array") {
|
|
@@ -74,11 +79,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
74
79
|
path,
|
|
75
80
|
entity,
|
|
76
81
|
readonly,
|
|
77
|
-
disabled: disabledProp
|
|
82
|
+
disabled: disabledProp,
|
|
83
|
+
enablePopupIcon = true
|
|
78
84
|
}: PropertyTableCellProps<T>) {
|
|
79
85
|
|
|
80
|
-
const context = useFireCMSContext();
|
|
81
|
-
|
|
82
86
|
const {
|
|
83
87
|
onValueChange,
|
|
84
88
|
size,
|
|
@@ -88,13 +92,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
88
92
|
} = useSelectableTableController();
|
|
89
93
|
|
|
90
94
|
const selected = selectedCell?.propertyKey === propertyKey &&
|
|
91
|
-
selectedCell?.
|
|
92
|
-
selectedCell?.
|
|
95
|
+
selectedCell?.entityPath === entity.path &&
|
|
96
|
+
selectedCell?.entityId === entity.id;
|
|
93
97
|
|
|
94
98
|
const [internalValue, setInternalValue] = useState<any | null>(value);
|
|
95
99
|
const internalValueRef = useRef(value);
|
|
96
100
|
|
|
97
101
|
const [error, setError] = useState<Error | undefined>();
|
|
102
|
+
const [validationError, setValidationError] = useState<Error | undefined>();
|
|
98
103
|
const [saved, setSaved] = useState<boolean>(false);
|
|
99
104
|
|
|
100
105
|
const onValueUpdated = useCallback(() => {
|
|
@@ -120,7 +125,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
120
125
|
useEffect(
|
|
121
126
|
() => {
|
|
122
127
|
if (!equal(value, internalValueRef.current)) {
|
|
123
|
-
|
|
128
|
+
setValidationError(undefined);
|
|
124
129
|
setInternalValue(value);
|
|
125
130
|
internalValueRef.current = value;
|
|
126
131
|
onValueUpdated();
|
|
@@ -136,32 +141,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
136
141
|
validation
|
|
137
142
|
.validate(value)
|
|
138
143
|
.then(() => {
|
|
139
|
-
|
|
144
|
+
setValidationError(undefined);
|
|
140
145
|
internalValueRef.current = value;
|
|
141
146
|
if (onValueChange) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
})
|
|
147
|
+
try {
|
|
148
|
+
onValueChange({
|
|
149
|
+
value,
|
|
150
|
+
propertyKey,
|
|
151
|
+
setError,
|
|
152
|
+
onValueUpdated,
|
|
153
|
+
data: entity,
|
|
154
|
+
});
|
|
155
|
+
} catch (e: any) {
|
|
156
|
+
console.error("onValueChange error", e);
|
|
157
|
+
setError(e);
|
|
158
|
+
}
|
|
159
|
+
|
|
151
160
|
}
|
|
152
161
|
})
|
|
153
162
|
.catch((e) => {
|
|
154
|
-
|
|
163
|
+
setValidationError(e);
|
|
155
164
|
});
|
|
156
165
|
};
|
|
157
166
|
|
|
158
167
|
useEffect(() => {
|
|
159
168
|
validation
|
|
160
169
|
.validate(internalValue)
|
|
161
|
-
.then(() =>
|
|
162
|
-
.catch(
|
|
163
|
-
setError(e);
|
|
164
|
-
});
|
|
170
|
+
.then(() => setValidationError(undefined))
|
|
171
|
+
.catch(setValidationError);
|
|
165
172
|
}, [internalValue, validation, propertyKey, property, entity]);
|
|
166
173
|
|
|
167
174
|
const updateValue = (newValue: any | null) => {
|
|
@@ -189,7 +196,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
189
196
|
select({
|
|
190
197
|
width,
|
|
191
198
|
height,
|
|
192
|
-
entity,
|
|
199
|
+
entityPath: entity.path,
|
|
200
|
+
entityId: entity.id,
|
|
193
201
|
cellRect,
|
|
194
202
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
195
203
|
});
|
|
@@ -205,7 +213,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
205
213
|
setPopupCell({
|
|
206
214
|
width,
|
|
207
215
|
height,
|
|
208
|
-
entity,
|
|
216
|
+
entityPath: entity.path,
|
|
217
|
+
entityId: entity.id,
|
|
209
218
|
cellRect,
|
|
210
219
|
propertyKey: propertyKey as Extract<keyof M, string>
|
|
211
220
|
});
|
|
@@ -237,7 +246,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
237
246
|
height={getRowHeight(size)}
|
|
238
247
|
propertyKey={propertyKey}
|
|
239
248
|
property={property}
|
|
240
|
-
// entity={entity}
|
|
241
249
|
value={internalValue}
|
|
242
250
|
size={getPreviewSizeFrom(size)}
|
|
243
251
|
/>
|
|
@@ -246,8 +254,28 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
246
254
|
|
|
247
255
|
if (!customField && (!customPreview || selected)) {
|
|
248
256
|
const isAStorageProperty = isStorageProperty(property);
|
|
249
|
-
if (
|
|
250
|
-
|
|
257
|
+
if (property.dataType === "string" && (property as StringProperty).reference?.path) {
|
|
258
|
+
const stringProperty = property as StringProperty;
|
|
259
|
+
const path = stringProperty.reference?.path as string;
|
|
260
|
+
const referenceProperty = stringProperty.reference as ReferenceProperty;
|
|
261
|
+
const referenceValue = internalValue ? new EntityReference(internalValue, path) : undefined;
|
|
262
|
+
innerComponent =
|
|
263
|
+
<TableReferenceField name={propertyKey as string}
|
|
264
|
+
internalValue={referenceValue}
|
|
265
|
+
updateValue={(v) => updateValue(v ? (v as EntityReference).id : null)}
|
|
266
|
+
disabled={disabled}
|
|
267
|
+
size={size}
|
|
268
|
+
path={path}
|
|
269
|
+
multiselect={false}
|
|
270
|
+
previewProperties={referenceProperty.previewProperties}
|
|
271
|
+
includeId={referenceProperty.includeId}
|
|
272
|
+
includeEntityLink={referenceProperty.includeEntityLink}
|
|
273
|
+
title={stringProperty.name}
|
|
274
|
+
forceFilter={referenceProperty.forceFilter}
|
|
275
|
+
/>;
|
|
276
|
+
allowScroll = false;
|
|
277
|
+
} else if (isAStorageProperty) {
|
|
278
|
+
innerComponent = <TableStorageUpload error={validationError ?? error}
|
|
251
279
|
disabled={disabled}
|
|
252
280
|
focused={selected}
|
|
253
281
|
selected={selected}
|
|
@@ -274,7 +302,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
274
302
|
valueType={"number"}
|
|
275
303
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
276
304
|
enumValues={numberProperty.enumValues}
|
|
277
|
-
error={error}
|
|
305
|
+
error={validationError ?? error}
|
|
278
306
|
internalValue={internalValue as string | number}
|
|
279
307
|
updateValue={updateValue}
|
|
280
308
|
/>;
|
|
@@ -282,7 +310,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
282
310
|
} else {
|
|
283
311
|
innerComponent = <VirtualTableNumberInput
|
|
284
312
|
align={align}
|
|
285
|
-
error={error}
|
|
313
|
+
error={validationError ?? error}
|
|
286
314
|
focused={selected}
|
|
287
315
|
disabled={disabled}
|
|
288
316
|
value={internalValue as number}
|
|
@@ -300,14 +328,25 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
300
328
|
valueType={"string"}
|
|
301
329
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
302
330
|
enumValues={stringProperty.enumValues}
|
|
303
|
-
error={error}
|
|
331
|
+
error={validationError ?? error}
|
|
304
332
|
internalValue={internalValue as string | number}
|
|
305
333
|
updateValue={updateValue}
|
|
306
334
|
/>;
|
|
307
335
|
fullHeight = true;
|
|
308
|
-
} else if (
|
|
336
|
+
} else if (stringProperty.userSelect) {
|
|
337
|
+
innerComponent = <VirtualTableUserSelect name={propertyKey as string}
|
|
338
|
+
multiple={false}
|
|
339
|
+
focused={selected}
|
|
340
|
+
disabled={disabled}
|
|
341
|
+
small={getPreviewSizeFrom(size) !== "medium"}
|
|
342
|
+
error={validationError ?? error}
|
|
343
|
+
internalValue={internalValue as string}
|
|
344
|
+
updateValue={updateValue}
|
|
345
|
+
/>;
|
|
346
|
+
fullHeight = true;
|
|
347
|
+
} else if (stringProperty.markdown || !stringProperty.storage || !stringProperty.reference) {
|
|
309
348
|
const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
|
|
310
|
-
innerComponent = <VirtualTableInput error={error}
|
|
349
|
+
innerComponent = <VirtualTableInput error={validationError ?? error}
|
|
311
350
|
disabled={disabled}
|
|
312
351
|
multiline={multiline}
|
|
313
352
|
focused={selected}
|
|
@@ -317,7 +356,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
317
356
|
allowScroll = true;
|
|
318
357
|
}
|
|
319
358
|
} else if (property.dataType === "boolean") {
|
|
320
|
-
innerComponent = <VirtualTableSwitch error={error}
|
|
359
|
+
innerComponent = <VirtualTableSwitch error={validationError ?? error}
|
|
321
360
|
disabled={disabled}
|
|
322
361
|
focused={selected}
|
|
323
362
|
internalValue={internalValue as boolean}
|
|
@@ -325,7 +364,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
325
364
|
/>;
|
|
326
365
|
} else if (property.dataType === "date") {
|
|
327
366
|
innerComponent = <VirtualTableDateField name={propertyKey as string}
|
|
328
|
-
error={error}
|
|
367
|
+
error={validationError ?? error}
|
|
329
368
|
disabled={disabled}
|
|
330
369
|
mode={property.mode}
|
|
331
370
|
focused={selected}
|
|
@@ -346,6 +385,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
346
385
|
path={property.path}
|
|
347
386
|
multiselect={false}
|
|
348
387
|
previewProperties={property.previewProperties}
|
|
388
|
+
includeId={property.includeId}
|
|
389
|
+
includeEntityLink={property.includeEntityLink}
|
|
349
390
|
title={property.name}
|
|
350
391
|
forceFilter={property.forceFilter}
|
|
351
392
|
/>;
|
|
@@ -368,7 +409,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
368
409
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
369
410
|
valueType={arrayProperty.of.dataType}
|
|
370
411
|
enumValues={arrayProperty.of.enumValues}
|
|
371
|
-
error={error}
|
|
412
|
+
error={validationError ?? error}
|
|
372
413
|
internalValue={internalValue as string | number}
|
|
373
414
|
updateValue={updateValue}
|
|
374
415
|
/>;
|
|
@@ -387,9 +428,11 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
387
428
|
size={size}
|
|
388
429
|
multiselect={true}
|
|
389
430
|
path={arrayProperty.of.path}
|
|
390
|
-
previewProperties={arrayProperty.of.
|
|
431
|
+
previewProperties={arrayProperty.of.previewKeys}
|
|
391
432
|
title={arrayProperty.name}
|
|
392
433
|
forceFilter={arrayProperty.of.forceFilter}
|
|
434
|
+
includeId={arrayProperty.of.includeId}
|
|
435
|
+
includeEntityLink={arrayProperty.of.includeEntityLink}
|
|
393
436
|
/>;
|
|
394
437
|
}
|
|
395
438
|
allowScroll = false;
|
|
@@ -401,11 +444,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
401
444
|
|
|
402
445
|
if (!innerComponent) {
|
|
403
446
|
allowScroll = false;
|
|
404
|
-
showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
447
|
+
showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
405
448
|
innerComponent = (
|
|
406
|
-
<PropertyPreview
|
|
449
|
+
<PropertyPreview width={width}
|
|
407
450
|
height={height}
|
|
408
|
-
// entity={entity}
|
|
409
451
|
propertyKey={propertyKey as string}
|
|
410
452
|
value={internalValue}
|
|
411
453
|
property={property}
|
|
@@ -426,7 +468,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
|
426
468
|
removePadding={removePadding}
|
|
427
469
|
fullHeight={fullHeight}
|
|
428
470
|
saved={saved}
|
|
429
|
-
error={error}
|
|
471
|
+
error={validationError ?? error}
|
|
430
472
|
align={align}
|
|
431
473
|
allowScroll={allowScroll}
|
|
432
474
|
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";
|