@firecms/core 3.0.0-alpha.84 → 3.0.0-beta.10
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 +6 -7
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +3 -4
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -18
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- 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 +2 -4
- 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 +3 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
- package/dist/components/ReferenceWidget.d.ts +6 -4
- package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
- package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +6 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
- package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
- package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
- package/dist/components/common/useTableSearchHelper.d.ts +12 -0
- package/dist/components/index.d.ts +14 -8
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +36 -0
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -6
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/CustomIdField.d.ts +2 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormikArrayContainer.d.ts +2 -1
- package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -3
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/components/index.d.ts +2 -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/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +4 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- package/dist/hooks/data/delete.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +2 -3
- package/dist/hooks/data/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +3 -3
- package/dist/hooks/index.d.ts +5 -1
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +23 -0
- package/dist/hooks/useProjectLog.d.ts +14 -0
- package/dist/hooks/useSnackbarController.d.ts +1 -0
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +16297 -12643
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20043 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +7 -5
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -9
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +38 -2
- package/dist/types/collections.d.ts +56 -9
- package/dist/types/datasource.d.ts +59 -39
- package/dist/types/entities.d.ts +7 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_callbacks.d.ts +3 -3
- package/dist/types/entity_overrides.d.ts +6 -0
- package/dist/types/fields.d.ts +47 -42
- package/dist/types/firecms.d.ts +8 -23
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +18 -16
- package/dist/types/permissions.d.ts +5 -1
- package/dist/types/plugins.d.ts +31 -31
- package/dist/types/properties.d.ts +36 -23
- package/dist/types/property_config.d.ts +2 -2
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +5 -0
- package/dist/util/collections.d.ts +9 -1
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +10 -3
- package/dist/util/index.d.ts +3 -1
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +28 -14
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/strings.d.ts +1 -1
- package/dist/util/useDebouncedCallback.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +129 -112
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +45 -75
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +4 -4
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
- package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
- package/src/components/EntityCollectionTable/index.tsx +1 -9
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +208 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +38 -28
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- package/src/components/PropertyConfigBadge.tsx +23 -0
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
- package/src/components/ReferenceWidget.tsx +26 -16
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
- package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
- package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
- package/src/components/common/index.ts +6 -0
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
- package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
- package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
- package/src/components/common/useTableSearchHelper.ts +88 -0
- package/src/components/index.tsx +15 -8
- package/src/contexts/AuthControllerContext.tsx +1 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +176 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +1127 -0
- package/src/core/EntitySidePanel.tsx +9 -8
- package/src/core/FireCMS.tsx +67 -59
- package/src/core/NavigationRoutes.tsx +25 -17
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +18 -19
- package/src/core/index.tsx +3 -6
- package/src/form/PropertyFieldBinding.tsx +60 -33
- package/src/form/components/CustomIdField.tsx +51 -36
- package/src/form/components/ErrorFocus.tsx +3 -3
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormikArrayContainer.tsx +4 -1
- package/src/form/components/LabelWithIcon.tsx +41 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -10
- package/src/form/components/StorageUploadProgress.tsx +8 -8
- package/src/form/components/index.tsx +2 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
- package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
- package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
- package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
- package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
- package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
- package/src/form/index.tsx +5 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +4 -21
- package/src/hooks/data/delete.ts +5 -4
- package/src/hooks/data/save.ts +7 -2
- package/src/hooks/data/useCollectionFetch.tsx +1 -1
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +4 -4
- package/src/hooks/index.tsx +7 -1
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +12 -6
- package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
- package/src/hooks/useFireCMSContext.tsx +51 -3
- package/src/hooks/useLargeLayout.tsx +10 -7
- package/src/hooks/useProjectLog.tsx +63 -0
- package/src/hooks/useReferenceDialog.tsx +3 -3
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useSnackbarController.tsx +1 -2
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -84
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +103 -23
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +12 -19
- package/src/preview/PropertyPreviewProps.tsx +6 -10
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +24 -34
- package/src/preview/components/ReferencePreview.tsx +73 -176
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/preview/util.ts +2 -2
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +51 -2
- package/src/types/collections.ts +65 -9
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +69 -47
- package/src/types/entities.ts +15 -1
- package/src/types/entity_actions.tsx +17 -0
- package/src/types/entity_callbacks.ts +4 -3
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/fields.tsx +51 -45
- package/src/types/firecms.tsx +9 -26
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +20 -19
- package/src/types/permissions.ts +6 -1
- package/src/types/plugins.tsx +38 -40
- package/src/types/properties.ts +42 -24
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/side_entity_controller.tsx +1 -0
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +7 -0
- package/src/util/collections.ts +22 -0
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +18 -4
- package/src/util/index.ts +3 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +12 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +1 -1
- package/src/util/references.ts +39 -5
- package/src/util/resolutions.ts +75 -42
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +4 -3
- package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +2 -1
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -52
- package/dist/form/EntityForm.d.ts +0 -75
- package/dist/form/components/SubmitListener.d.ts +0 -1
- package/dist/form/components/SwitchControl.d.ts +0 -8
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/internal/EntityView.d.ts +0 -22
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useBuildNavigationController.d.ts +0 -14
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/dist/util/useDebounce.d.ts +0 -1
- package/src/components/FieldConfigBadge.tsx +0 -17
- package/src/components/FireCMSAppBar.tsx +0 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/core/Drawer.tsx +0 -162
- package/src/core/Scaffold.tsx +0 -278
- package/src/form/EntityForm.tsx +0 -657
- package/src/form/components/SubmitListener.tsx +0 -32
- package/src/form/components/SwitchControl.tsx +0 -39
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/hooks/useVerifyLicense.tsx +0 -1
- package/src/internal/EntityView.tsx +0 -578
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
|
@@ -10,12 +10,7 @@ import {
|
|
|
10
10
|
SelectionController,
|
|
11
11
|
User
|
|
12
12
|
} from "../../types";
|
|
13
|
-
import { OnCellValueChange, UniqueFieldValidator } from "
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @group Collection components
|
|
17
|
-
*/
|
|
18
|
-
export type OnColumnResizeParams = { width: number, key: string };
|
|
13
|
+
import { OnCellValueChange, OnColumnResizeParams, UniqueFieldValidator } from "../common/types";
|
|
19
14
|
|
|
20
15
|
/**
|
|
21
16
|
* @group Collection components
|
|
@@ -23,7 +18,10 @@ export type OnColumnResizeParams = { width: number, key: string };
|
|
|
23
18
|
export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
24
19
|
UserType extends User = User> = {
|
|
25
20
|
|
|
26
|
-
|
|
21
|
+
className?: string;
|
|
22
|
+
|
|
23
|
+
style?: React.CSSProperties;
|
|
24
|
+
|
|
27
25
|
/**
|
|
28
26
|
* Display these entities as selected
|
|
29
27
|
*/
|
|
@@ -97,13 +95,13 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
97
95
|
*/
|
|
98
96
|
tableController: EntityTableController<M>;
|
|
99
97
|
|
|
100
|
-
displayedColumnIds
|
|
98
|
+
displayedColumnIds?: PropertyColumnConfig[];
|
|
101
99
|
|
|
102
100
|
forceFilter?: FilterValues<Extract<keyof M, string>>;
|
|
103
101
|
|
|
104
102
|
textSearchEnabled?: boolean;
|
|
105
103
|
|
|
106
|
-
inlineEditing?: boolean
|
|
104
|
+
inlineEditing?: boolean;
|
|
107
105
|
|
|
108
106
|
additionalFields?: AdditionalFieldDelegate<M, UserType>[];
|
|
109
107
|
|
|
@@ -136,15 +134,16 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
136
134
|
onTextSearchClick?: () => void;
|
|
137
135
|
|
|
138
136
|
textSearchLoading?: boolean;
|
|
139
|
-
|
|
137
|
+
|
|
138
|
+
enablePopupIcon: boolean;
|
|
139
|
+
};
|
|
140
140
|
|
|
141
141
|
export type GetPropertyForProps<M extends Record<string, any>> = {
|
|
142
142
|
propertyKey: string,
|
|
143
|
-
propertyValue: any,
|
|
144
143
|
entity: Entity<M>
|
|
145
144
|
};
|
|
146
145
|
|
|
147
146
|
export type PropertyColumnConfig = {
|
|
148
147
|
key: string,
|
|
149
|
-
disabled
|
|
148
|
+
disabled?: boolean,
|
|
150
149
|
};
|
|
@@ -24,15 +24,15 @@ import { getPreviewSizeFrom } from "../../preview/util";
|
|
|
24
24
|
import { isReadOnly } from "../../util";
|
|
25
25
|
|
|
26
26
|
import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
|
|
27
|
-
import { useEntityCollectionTableController } from "./EntityCollectionTable";
|
|
28
|
-
import { useClearRestoreValue, useFireCMSContext } from "../../hooks";
|
|
29
27
|
|
|
30
28
|
import { EntityTableCell } from "./internal/EntityTableCell";
|
|
31
29
|
import { EntityTableCellActions } from "./internal/EntityTableCellActions";
|
|
32
30
|
|
|
33
|
-
import {
|
|
31
|
+
import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
|
|
32
|
+
import { useClearRestoreValue } from "../../form/useClearRestoreValue";
|
|
33
|
+
import { getRowHeight } from "../common/table_height";
|
|
34
34
|
|
|
35
|
-
export interface PropertyTableCellProps<T extends CMSType
|
|
35
|
+
export interface PropertyTableCellProps<T extends CMSType> {
|
|
36
36
|
propertyKey: string;
|
|
37
37
|
columnIndex: number;
|
|
38
38
|
align: "right" | "left" | "center";
|
|
@@ -45,9 +45,12 @@ export interface PropertyTableCellProps<T extends CMSType, M extends Record<stri
|
|
|
45
45
|
entity: Entity<any>;
|
|
46
46
|
path: string;
|
|
47
47
|
disabled: boolean;
|
|
48
|
+
enablePopupIcon?: boolean;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
function isStorageProperty(property: ResolvedProperty) {
|
|
52
|
+
if (property.dataType === "string" && property.markdown)
|
|
53
|
+
return false;
|
|
51
54
|
if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
|
|
52
55
|
return true;
|
|
53
56
|
if (property.dataType === "array") {
|
|
@@ -61,7 +64,7 @@ function isStorageProperty(property: ResolvedProperty) {
|
|
|
61
64
|
return false;
|
|
62
65
|
}
|
|
63
66
|
|
|
64
|
-
export const PropertyTableCell = React.memo<PropertyTableCellProps<any
|
|
67
|
+
export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
|
|
65
68
|
function PropertyTableCell<T extends CMSType, M extends Record<string, any>>({
|
|
66
69
|
propertyKey,
|
|
67
70
|
customFieldValidator,
|
|
@@ -73,10 +76,9 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
73
76
|
path,
|
|
74
77
|
entity,
|
|
75
78
|
readonly,
|
|
76
|
-
disabled: disabledProp
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const context = useFireCMSContext();
|
|
79
|
+
disabled: disabledProp,
|
|
80
|
+
enablePopupIcon = true
|
|
81
|
+
}: PropertyTableCellProps<T>) {
|
|
80
82
|
|
|
81
83
|
const {
|
|
82
84
|
onValueChange,
|
|
@@ -84,7 +86,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
84
86
|
selectedCell,
|
|
85
87
|
select,
|
|
86
88
|
setPopupCell
|
|
87
|
-
} =
|
|
89
|
+
} = useSelectableTableController();
|
|
88
90
|
|
|
89
91
|
const selected = selectedCell?.propertyKey === propertyKey &&
|
|
90
92
|
selectedCell?.entity.path === entity.path &&
|
|
@@ -94,6 +96,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
94
96
|
const internalValueRef = useRef(value);
|
|
95
97
|
|
|
96
98
|
const [error, setError] = useState<Error | undefined>();
|
|
99
|
+
const [validationError, setValidationError] = useState<Error | undefined>();
|
|
97
100
|
const [saved, setSaved] = useState<boolean>(false);
|
|
98
101
|
|
|
99
102
|
const onValueUpdated = useCallback(() => {
|
|
@@ -119,7 +122,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
119
122
|
useEffect(
|
|
120
123
|
() => {
|
|
121
124
|
if (!equal(value, internalValueRef.current)) {
|
|
122
|
-
|
|
125
|
+
setValidationError(undefined);
|
|
123
126
|
setInternalValue(value);
|
|
124
127
|
internalValueRef.current = value;
|
|
125
128
|
onValueUpdated();
|
|
@@ -135,32 +138,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
135
138
|
validation
|
|
136
139
|
.validate(value)
|
|
137
140
|
.then(() => {
|
|
138
|
-
|
|
141
|
+
setValidationError(undefined);
|
|
139
142
|
internalValueRef.current = value;
|
|
140
143
|
if (onValueChange) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
})
|
|
144
|
+
try {
|
|
145
|
+
onValueChange({
|
|
146
|
+
value,
|
|
147
|
+
propertyKey,
|
|
148
|
+
setError,
|
|
149
|
+
onValueUpdated,
|
|
150
|
+
data: entity,
|
|
151
|
+
});
|
|
152
|
+
} catch (e: any) {
|
|
153
|
+
console.error("onValueChange error", e);
|
|
154
|
+
setError(e);
|
|
155
|
+
}
|
|
156
|
+
|
|
150
157
|
}
|
|
151
158
|
})
|
|
152
159
|
.catch((e) => {
|
|
153
|
-
|
|
160
|
+
setValidationError(e);
|
|
154
161
|
});
|
|
155
162
|
};
|
|
156
163
|
|
|
157
164
|
useEffect(() => {
|
|
158
165
|
validation
|
|
159
166
|
.validate(internalValue)
|
|
160
|
-
.then(() =>
|
|
161
|
-
.catch(
|
|
162
|
-
setError(e);
|
|
163
|
-
});
|
|
167
|
+
.then(() => setValidationError(undefined))
|
|
168
|
+
.catch(setValidationError);
|
|
164
169
|
}, [internalValue, validation, propertyKey, property, entity]);
|
|
165
170
|
|
|
166
171
|
const updateValue = (newValue: any | null) => {
|
|
@@ -236,7 +241,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
236
241
|
height={getRowHeight(size)}
|
|
237
242
|
propertyKey={propertyKey}
|
|
238
243
|
property={property}
|
|
239
|
-
// entity={entity}
|
|
240
244
|
value={internalValue}
|
|
241
245
|
size={getPreviewSizeFrom(size)}
|
|
242
246
|
/>
|
|
@@ -246,7 +250,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
246
250
|
if (!customField && (!customPreview || selected)) {
|
|
247
251
|
const isAStorageProperty = isStorageProperty(property);
|
|
248
252
|
if (isAStorageProperty) {
|
|
249
|
-
innerComponent = <TableStorageUpload error={error}
|
|
253
|
+
innerComponent = <TableStorageUpload error={validationError ?? error}
|
|
250
254
|
disabled={disabled}
|
|
251
255
|
focused={selected}
|
|
252
256
|
selected={selected}
|
|
@@ -273,7 +277,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
273
277
|
valueType={"number"}
|
|
274
278
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
275
279
|
enumValues={numberProperty.enumValues}
|
|
276
|
-
error={error}
|
|
280
|
+
error={validationError ?? error}
|
|
277
281
|
internalValue={internalValue as string | number}
|
|
278
282
|
updateValue={updateValue}
|
|
279
283
|
/>;
|
|
@@ -281,7 +285,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
281
285
|
} else {
|
|
282
286
|
innerComponent = <VirtualTableNumberInput
|
|
283
287
|
align={align}
|
|
284
|
-
error={error}
|
|
288
|
+
error={validationError ?? error}
|
|
285
289
|
focused={selected}
|
|
286
290
|
disabled={disabled}
|
|
287
291
|
value={internalValue as number}
|
|
@@ -299,14 +303,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
299
303
|
valueType={"string"}
|
|
300
304
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
301
305
|
enumValues={stringProperty.enumValues}
|
|
302
|
-
error={error}
|
|
306
|
+
error={validationError ?? error}
|
|
303
307
|
internalValue={internalValue as string | number}
|
|
304
308
|
updateValue={updateValue}
|
|
305
309
|
/>;
|
|
306
310
|
fullHeight = true;
|
|
307
|
-
} else if (!stringProperty.storage) {
|
|
311
|
+
} else if (stringProperty.markdown || !stringProperty.storage) {
|
|
308
312
|
const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
|
|
309
|
-
innerComponent = <VirtualTableInput error={error}
|
|
313
|
+
innerComponent = <VirtualTableInput error={validationError ?? error}
|
|
310
314
|
disabled={disabled}
|
|
311
315
|
multiline={multiline}
|
|
312
316
|
focused={selected}
|
|
@@ -316,7 +320,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
316
320
|
allowScroll = true;
|
|
317
321
|
}
|
|
318
322
|
} else if (property.dataType === "boolean") {
|
|
319
|
-
innerComponent = <VirtualTableSwitch error={error}
|
|
323
|
+
innerComponent = <VirtualTableSwitch error={validationError ?? error}
|
|
320
324
|
disabled={disabled}
|
|
321
325
|
focused={selected}
|
|
322
326
|
internalValue={internalValue as boolean}
|
|
@@ -324,7 +328,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
324
328
|
/>;
|
|
325
329
|
} else if (property.dataType === "date") {
|
|
326
330
|
innerComponent = <VirtualTableDateField name={propertyKey as string}
|
|
327
|
-
error={error}
|
|
331
|
+
error={validationError ?? error}
|
|
328
332
|
disabled={disabled}
|
|
329
333
|
mode={property.mode}
|
|
330
334
|
focused={selected}
|
|
@@ -345,6 +349,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
345
349
|
path={property.path}
|
|
346
350
|
multiselect={false}
|
|
347
351
|
previewProperties={property.previewProperties}
|
|
352
|
+
includeId={property.includeId}
|
|
353
|
+
includeEntityLink={property.includeEntityLink}
|
|
348
354
|
title={property.name}
|
|
349
355
|
forceFilter={property.forceFilter}
|
|
350
356
|
/>;
|
|
@@ -367,7 +373,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
367
373
|
small={getPreviewSizeFrom(size) !== "medium"}
|
|
368
374
|
valueType={arrayProperty.of.dataType}
|
|
369
375
|
enumValues={arrayProperty.of.enumValues}
|
|
370
|
-
error={error}
|
|
376
|
+
error={validationError ?? error}
|
|
371
377
|
internalValue={internalValue as string | number}
|
|
372
378
|
updateValue={updateValue}
|
|
373
379
|
/>;
|
|
@@ -389,6 +395,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
389
395
|
previewProperties={arrayProperty.of.previewProperties}
|
|
390
396
|
title={arrayProperty.name}
|
|
391
397
|
forceFilter={arrayProperty.of.forceFilter}
|
|
398
|
+
includeId={arrayProperty.of.includeId}
|
|
399
|
+
includeEntityLink={arrayProperty.of.includeEntityLink}
|
|
392
400
|
/>;
|
|
393
401
|
}
|
|
394
402
|
allowScroll = false;
|
|
@@ -400,16 +408,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
400
408
|
|
|
401
409
|
if (!innerComponent) {
|
|
402
410
|
allowScroll = false;
|
|
403
|
-
showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
411
|
+
showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
|
|
404
412
|
innerComponent = (
|
|
405
|
-
<PropertyPreview
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
property={property}
|
|
412
|
-
size={getPreviewSizeFrom(size)}
|
|
413
|
+
<PropertyPreview width={width}
|
|
414
|
+
height={height}
|
|
415
|
+
propertyKey={propertyKey as string}
|
|
416
|
+
value={internalValue}
|
|
417
|
+
property={property}
|
|
418
|
+
size={getPreviewSizeFrom(size)}
|
|
413
419
|
/>
|
|
414
420
|
);
|
|
415
421
|
}
|
|
@@ -426,7 +432,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
426
432
|
removePadding={removePadding}
|
|
427
433
|
fullHeight={fullHeight}
|
|
428
434
|
saved={saved}
|
|
429
|
-
error={error}
|
|
435
|
+
error={validationError ?? error}
|
|
430
436
|
align={align}
|
|
431
437
|
allowScroll={allowScroll}
|
|
432
438
|
showExpandIcon={showExpandIcon}
|
|
@@ -446,9 +452,9 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
|
|
|
446
452
|
);
|
|
447
453
|
|
|
448
454
|
},
|
|
449
|
-
areEqual) as React.FunctionComponent<PropertyTableCellProps<any
|
|
455
|
+
areEqual) as React.FunctionComponent<PropertyTableCellProps<any>>;
|
|
450
456
|
|
|
451
|
-
function areEqual(prevProps: PropertyTableCellProps<any
|
|
457
|
+
function areEqual(prevProps: PropertyTableCellProps<any>, nextProps: PropertyTableCellProps<any>) {
|
|
452
458
|
return prevProps.height === nextProps.height &&
|
|
453
459
|
prevProps.propertyKey === nextProps.propertyKey &&
|
|
454
460
|
prevProps.align === nextProps.align &&
|
|
@@ -3,7 +3,7 @@ import { getTableCellAlignment, getTablePropertyColumnWidth } from "./internal/c
|
|
|
3
3
|
import { FilterValues, ResolvedProperties, ResolvedProperty } from "../../types";
|
|
4
4
|
import { VirtualTableColumn } from "../VirtualTable";
|
|
5
5
|
import { getIconForProperty, getResolvedPropertyInPath } from "../../util";
|
|
6
|
-
import { getColumnKeysForProperty } from "../
|
|
6
|
+
import { getColumnKeysForProperty } from "../common/useColumnsIds";
|
|
7
7
|
|
|
8
8
|
export function buildIdColumn(largeLayout?: boolean): VirtualTableColumn {
|
|
9
9
|
return {
|
|
@@ -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,15 @@
|
|
|
1
|
-
import React, { useCallback
|
|
1
|
+
import React, { useCallback } from "react";
|
|
2
2
|
import equal from "react-fast-compare"
|
|
3
3
|
|
|
4
|
-
import { ReferencePreview
|
|
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 } from "@firecms/ui";
|
|
12
|
+
import { EntityPreviewContainer } from "../../EntityPreview";
|
|
12
13
|
|
|
13
14
|
type TableReferenceFieldProps = {
|
|
14
15
|
name: string;
|
|
@@ -21,6 +22,8 @@ type TableReferenceFieldProps = {
|
|
|
21
22
|
title?: string;
|
|
22
23
|
path: string;
|
|
23
24
|
forceFilter?: FilterValues<string>;
|
|
25
|
+
includeId?: boolean;
|
|
26
|
+
includeEntityLink?: boolean;
|
|
24
27
|
};
|
|
25
28
|
|
|
26
29
|
export function TableReferenceField(props: TableReferenceFieldProps) {
|
|
@@ -28,7 +31,7 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
|
|
|
28
31
|
|
|
29
32
|
const navigationController = useNavigationController();
|
|
30
33
|
const { path } = props;
|
|
31
|
-
const collection = navigationController.getCollection
|
|
34
|
+
const collection = navigationController.getCollection(path);
|
|
32
35
|
if (!collection) {
|
|
33
36
|
if (customizationController.components?.missingReference) {
|
|
34
37
|
return <customizationController.components.missingReference path={path}/>;
|
|
@@ -36,11 +39,11 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
|
|
|
36
39
|
throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
|
-
return <
|
|
42
|
+
return <TableReferenceFieldInternal {...props} collection={collection}/>;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
export const
|
|
43
|
-
function
|
|
45
|
+
export const TableReferenceFieldInternal = React.memo(
|
|
46
|
+
function TableReferenceFieldInternal(props: TableReferenceFieldProps & {
|
|
44
47
|
collection: EntityCollection;
|
|
45
48
|
}) {
|
|
46
49
|
const {
|
|
@@ -54,14 +57,11 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
54
57
|
title,
|
|
55
58
|
disabled,
|
|
56
59
|
forceFilter,
|
|
57
|
-
collection
|
|
60
|
+
collection,
|
|
61
|
+
includeId,
|
|
62
|
+
includeEntityLink
|
|
58
63
|
} = props;
|
|
59
64
|
|
|
60
|
-
const [onHover, setOnHover] = useState(false);
|
|
61
|
-
|
|
62
|
-
const hoverTrue = useCallback(() => setOnHover(true), []);
|
|
63
|
-
const hoverFalse = useCallback(() => setOnHover(false), []);
|
|
64
|
-
|
|
65
65
|
const onSingleEntitySelected = useCallback((entity: Entity<any>) => {
|
|
66
66
|
updateValue(entity ? getReferenceFrom(entity) : null);
|
|
67
67
|
}, [updateValue]);
|
|
@@ -87,45 +87,49 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
87
87
|
}
|
|
88
88
|
);
|
|
89
89
|
|
|
90
|
-
const handleOpen =
|
|
90
|
+
const handleOpen = () => {
|
|
91
91
|
if (disabled)
|
|
92
92
|
return;
|
|
93
93
|
referenceDialogController.open();
|
|
94
|
-
}
|
|
94
|
+
};
|
|
95
95
|
|
|
96
96
|
const valueNotSet = !internalValue || (Array.isArray(internalValue) && internalValue.length === 0);
|
|
97
97
|
|
|
98
98
|
const buildSingleReferenceField = () => {
|
|
99
|
-
if (internalValue
|
|
99
|
+
if (internalValue && !Array.isArray(internalValue) && internalValue.isEntityReference && internalValue.isEntityReference())
|
|
100
100
|
return <ReferencePreview
|
|
101
101
|
onClick={disabled ? undefined : handleOpen}
|
|
102
102
|
size={getPreviewSizeFrom(size)}
|
|
103
103
|
reference={internalValue as EntityReference}
|
|
104
|
-
|
|
104
|
+
hover={!disabled}
|
|
105
105
|
disabled={!path}
|
|
106
106
|
previewProperties={previewProperties}
|
|
107
|
+
includeId={includeId}
|
|
108
|
+
includeEntityLink={includeEntityLink}
|
|
107
109
|
/>;
|
|
108
110
|
else
|
|
109
|
-
return <
|
|
111
|
+
return <EntityPreviewContainer
|
|
110
112
|
onClick={disabled ? undefined : handleOpen}
|
|
111
113
|
size={getPreviewSizeFrom(size)}>
|
|
112
114
|
<ErrorView title="Value is not a reference." error={"Click to edit"}/>
|
|
113
|
-
</
|
|
115
|
+
</EntityPreviewContainer>;
|
|
114
116
|
};
|
|
115
117
|
|
|
116
118
|
const buildMultipleReferenceField = () => {
|
|
117
119
|
if (Array.isArray(internalValue))
|
|
118
120
|
return <>
|
|
119
121
|
{internalValue.map((reference, index) =>
|
|
120
|
-
<div className="
|
|
122
|
+
<div className="w-full my-0.5"
|
|
121
123
|
key={`preview_array_ref_${name}_${index}`}>
|
|
122
124
|
<ReferencePreview
|
|
123
125
|
onClick={disabled ? undefined : handleOpen}
|
|
124
|
-
size={"
|
|
126
|
+
size={"smallest"}
|
|
125
127
|
reference={reference}
|
|
126
|
-
|
|
128
|
+
hover={!disabled}
|
|
127
129
|
disabled={!path}
|
|
128
130
|
previewProperties={previewProperties}
|
|
131
|
+
includeId={includeId}
|
|
132
|
+
includeEntityLink={includeEntityLink}
|
|
129
133
|
/>
|
|
130
134
|
</div>
|
|
131
135
|
)
|
|
@@ -139,23 +143,27 @@ export const TableReferenceFieldSuccess = React.memo(
|
|
|
139
143
|
return <ErrorView error={"The specified collection does not exist"}/>;
|
|
140
144
|
|
|
141
145
|
return (
|
|
142
|
-
<div className="w-full"
|
|
143
|
-
onMouseEnter={hoverTrue}
|
|
144
|
-
onMouseMove={hoverTrue}
|
|
145
|
-
onMouseLeave={hoverFalse}>
|
|
146
|
+
<div className="w-full group">
|
|
146
147
|
|
|
147
148
|
{internalValue && !multiselect && buildSingleReferenceField()}
|
|
148
149
|
|
|
149
150
|
{internalValue && multiselect && buildMultipleReferenceField()}
|
|
150
151
|
|
|
151
152
|
{valueNotSet &&
|
|
152
|
-
<
|
|
153
|
+
<EntityPreviewContainer
|
|
154
|
+
className={cls("px-4 py-2 text-sm font-medium flex items-center uppercase",
|
|
155
|
+
multiselect ? "gap-4" : "gap-6",
|
|
156
|
+
disabled
|
|
157
|
+
? "text-slate-500"
|
|
158
|
+
: "cursor-pointer text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-gray-800 group-hover:bg-slate-50 dark:group-hover:bg-gray-800")}
|
|
153
159
|
onClick={handleOpen}
|
|
154
|
-
size={"
|
|
155
|
-
|
|
156
|
-
|
|
160
|
+
size={"medium"}>
|
|
161
|
+
<IconForView
|
|
162
|
+
size={"small"}
|
|
163
|
+
collectionOrView={collection}
|
|
164
|
+
className={"text-gray-300 dark:text-gray-600"}/>
|
|
157
165
|
Edit {title}
|
|
158
|
-
</
|
|
166
|
+
</EntityPreviewContainer>}
|
|
159
167
|
|
|
160
168
|
</div>
|
|
161
169
|
);
|
|
@@ -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";
|
|
@@ -51,7 +51,7 @@ export function TableStorageUpload(props: {
|
|
|
51
51
|
entity,
|
|
52
52
|
path,
|
|
53
53
|
previewSize,
|
|
54
|
-
updateValue
|
|
54
|
+
updateValue,
|
|
55
55
|
} = props;
|
|
56
56
|
|
|
57
57
|
const storageSource = useStorageSource();
|
|
@@ -137,7 +137,7 @@ function StorageUpload({
|
|
|
137
137
|
storage,
|
|
138
138
|
onFilesAdded,
|
|
139
139
|
onFileUploadComplete,
|
|
140
|
-
storagePathBuilder
|
|
140
|
+
storagePathBuilder,
|
|
141
141
|
}: StorageUploadProps) {
|
|
142
142
|
|
|
143
143
|
const [onHover, setOnHover] = useState(false);
|
|
@@ -179,10 +179,18 @@ function StorageUpload({
|
|
|
179
179
|
onDropRejected: (fileRejections, event) => {
|
|
180
180
|
for (const fileRejection of fileRejections) {
|
|
181
181
|
for (const error of fileRejection.errors) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
182
|
+
console.error("Error uploading file: ", error);
|
|
183
|
+
if (error.code === "file-too-large") {
|
|
184
|
+
snackbarContext.open({
|
|
185
|
+
type: "error",
|
|
186
|
+
message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
|
|
187
|
+
});
|
|
188
|
+
} else if (error.code === "file-invalid-type") {
|
|
189
|
+
snackbarContext.open({
|
|
190
|
+
type: "error",
|
|
191
|
+
message: "Error uploading file: File type is not supported"
|
|
192
|
+
});
|
|
193
|
+
}
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
196
|
}
|
|
@@ -207,7 +215,7 @@ function StorageUpload({
|
|
|
207
215
|
onMouseEnter={() => setOnHover(true)}
|
|
208
216
|
onMouseMove={() => setOnHover(true)}
|
|
209
217
|
onMouseLeave={() => setOnHover(false)}
|
|
210
|
-
className={
|
|
218
|
+
className={cls(dropZoneClasses,
|
|
211
219
|
"relative w-full h-full flex",
|
|
212
220
|
`justify-${hasValue ? "start" : "center"}`,
|
|
213
221
|
isDragActive ? activeDropClasses : "",
|
|
@@ -293,7 +301,7 @@ export function TableStorageItemPreview({
|
|
|
293
301
|
|
|
294
302
|
return (
|
|
295
303
|
<div
|
|
296
|
-
className={"relative
|
|
304
|
+
className={"relative p-2 max-w-full"}
|
|
297
305
|
>
|
|
298
306
|
|
|
299
307
|
{value &&
|
|
@@ -4,17 +4,9 @@ export {
|
|
|
4
4
|
|
|
5
5
|
export type {
|
|
6
6
|
EntityCollectionTableProps,
|
|
7
|
-
OnColumnResizeParams
|
|
8
7
|
} from "./EntityCollectionTableProps";
|
|
9
8
|
|
|
10
|
-
export type {
|
|
11
|
-
UniqueFieldValidator,
|
|
12
|
-
OnCellValueChange,
|
|
13
|
-
OnCellValueChangeParams
|
|
14
|
-
} from "./types";
|
|
15
|
-
|
|
16
9
|
export * from "./PropertyTableCell";
|
|
17
|
-
export * from "./SimpleEntityCollectionTable";
|
|
18
10
|
export * from "./EntityCollectionRowActions";
|
|
19
|
-
export * from "
|
|
11
|
+
export * from "../common/useDataSourceEntityCollectionTableController";
|
|
20
12
|
export * from "./column_utils";
|