@firecms/core 3.0.0-canary.24 → 3.0.0-canary.241
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 +30 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -5
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +40 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +36 -64
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +16 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +7 -12
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21578 -13895
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24366 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -17
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +97 -23
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +74 -42
- package/dist/types/firecms.d.ts +8 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +41 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +36 -12
- package/dist/types/properties.d.ts +73 -24
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +10 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/callbacks.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +15 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +41 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +62 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +149 -46
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +48 -40
- 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 +32 -37
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +229 -117
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +80 -59
- package/src/components/EntityView.tsx +13 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +27 -20
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +157 -145
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +130 -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 +33 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +6 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +406 -478
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +95 -19
- package/src/core/FireCMS.tsx +72 -58
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +589 -535
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +89 -45
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +4 -5
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +48 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
- package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +23 -15
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -52
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +16 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +32 -33
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +194 -68
- package/src/hooks/useFireCMSContext.tsx +3 -33
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +79 -85
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +201 -75
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +20 -25
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +26 -37
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +118 -28
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +85 -46
- package/src/types/firecms.tsx +9 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +49 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +42 -14
- package/src/types/properties.ts +87 -26
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +11 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/callbacks.ts +119 -0
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +6 -1
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +18 -7
- package/src/util/navigation_utils.ts +141 -25
- package/src/util/objects.ts +52 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +110 -48
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +91 -28
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import { resolveProperty } from "../util";
|
|
14
14
|
|
|
15
15
|
import { PropertyPreviewProps } from "./PropertyPreviewProps";
|
|
16
|
-
import { useCustomizationController } from "../hooks";
|
|
16
|
+
import { useAuthController, useCustomizationController } from "../hooks";
|
|
17
17
|
import { EmptyValue } from "./components/EmptyValue";
|
|
18
18
|
import { UrlComponentPreview } from "./components/UrlComponentPreview";
|
|
19
19
|
import { StorageThumbnail } from "./components/StorageThumbnail";
|
|
@@ -37,6 +37,7 @@ import { ErrorView } from "../components";
|
|
|
37
37
|
*/
|
|
38
38
|
export const PropertyPreview = React.memo(function PropertyPreview<T extends CMSType>(props: PropertyPreviewProps<T>) {
|
|
39
39
|
|
|
40
|
+
const authController = useAuthController();
|
|
40
41
|
const customizationController = useCustomizationController();
|
|
41
42
|
|
|
42
43
|
let content: React.ReactNode | any;
|
|
@@ -47,17 +48,17 @@ export const PropertyPreview = React.memo(function PropertyPreview<T extends CMS
|
|
|
47
48
|
size,
|
|
48
49
|
height,
|
|
49
50
|
width,
|
|
50
|
-
|
|
51
|
+
interactive
|
|
51
52
|
} = props;
|
|
52
53
|
|
|
53
54
|
const property = resolveProperty({
|
|
54
55
|
propertyKey,
|
|
55
56
|
propertyOrBuilder: inputProperty,
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
58
|
+
authController
|
|
58
59
|
});
|
|
59
60
|
|
|
60
|
-
if (
|
|
61
|
+
if (property === null) {
|
|
61
62
|
content = <EmptyValue/>;
|
|
62
63
|
} else if (property.Preview) {
|
|
63
64
|
content = createElement(property.Preview as React.ComponentType<PropertyPreviewProps>,
|
|
@@ -71,12 +72,19 @@ export const PropertyPreview = React.memo(function PropertyPreview<T extends CMS
|
|
|
71
72
|
// entity,
|
|
72
73
|
customProps: property.customProps
|
|
73
74
|
});
|
|
74
|
-
} else if (value === null) {
|
|
75
|
+
} else if (value === undefined || value === null) {
|
|
75
76
|
content = <EmptyValue/>;
|
|
76
77
|
} else if (property.dataType === "string") {
|
|
77
78
|
const stringProperty = property as ResolvedStringProperty;
|
|
78
79
|
if (typeof value === "string") {
|
|
79
|
-
if (stringProperty.
|
|
80
|
+
if (stringProperty.storage) {
|
|
81
|
+
const filePath = stringProperty.storage.previewUrl ? stringProperty.storage.previewUrl(value) : value;
|
|
82
|
+
content = <StorageThumbnail
|
|
83
|
+
interactive={interactive}
|
|
84
|
+
storeUrl={property.storage?.storeUrl ?? false}
|
|
85
|
+
size={props.size}
|
|
86
|
+
storagePathOrDownloadUrl={filePath}/>;
|
|
87
|
+
} else if (stringProperty.url) {
|
|
80
88
|
if (typeof stringProperty.url === "boolean")
|
|
81
89
|
content =
|
|
82
90
|
<UrlComponentPreview size={props.size}
|
|
@@ -85,14 +93,10 @@ export const PropertyPreview = React.memo(function PropertyPreview<T extends CMS
|
|
|
85
93
|
content =
|
|
86
94
|
<UrlComponentPreview size={props.size}
|
|
87
95
|
url={value}
|
|
96
|
+
interactive={interactive}
|
|
88
97
|
previewType={stringProperty.url}/>;
|
|
89
|
-
} else if (stringProperty.storage) {
|
|
90
|
-
content = <StorageThumbnail
|
|
91
|
-
storeUrl={property.storage?.storeUrl ?? false}
|
|
92
|
-
size={props.size}
|
|
93
|
-
storagePathOrDownloadUrl={value}/>;
|
|
94
98
|
} else if (stringProperty.markdown) {
|
|
95
|
-
content = <Markdown source={value}/>;
|
|
99
|
+
content = <Markdown source={value} size={"small"}/>;
|
|
96
100
|
} else {
|
|
97
101
|
content = <StringPropertyPreview {...props}
|
|
98
102
|
property={stringProperty}
|
|
@@ -113,17 +117,7 @@ export const PropertyPreview = React.memo(function PropertyPreview<T extends CMS
|
|
|
113
117
|
content = <ArrayPropertyPreview {...props}
|
|
114
118
|
value={value}
|
|
115
119
|
property={property as ResolvedArrayProperty}/>;
|
|
116
|
-
}
|
|
117
|
-
// else if (arrayProperty.of.dataType === "map") {
|
|
118
|
-
// content =
|
|
119
|
-
// <ArrayOfMapsPreview propertyKey={propertyKey}
|
|
120
|
-
// property={property as ResolvedArrayProperty}
|
|
121
|
-
// value={value as Record<string, any>[]} // This might be wrong
|
|
122
|
-
// entity={entity}
|
|
123
|
-
// size={size}
|
|
124
|
-
// />;
|
|
125
|
-
// }
|
|
126
|
-
else if (arrayProperty.of.dataType === "reference") {
|
|
120
|
+
} else if (arrayProperty.of.dataType === "reference") {
|
|
127
121
|
content = <ArrayOfReferencesPreview {...props}
|
|
128
122
|
value={value}
|
|
129
123
|
property={property as ResolvedArrayProperty}/>;
|
|
@@ -182,8 +176,9 @@ export const PropertyPreview = React.memo(function PropertyPreview<T extends CMS
|
|
|
182
176
|
content = <ReferencePreview
|
|
183
177
|
disabled={!property.path}
|
|
184
178
|
previewProperties={property.previewProperties}
|
|
179
|
+
includeId={property.includeId}
|
|
180
|
+
includeEntityLink={property.includeEntityLink}
|
|
185
181
|
size={props.size}
|
|
186
|
-
// onClick={props.onClick}
|
|
187
182
|
reference={value as EntityReference}
|
|
188
183
|
/>;
|
|
189
184
|
} else {
|
|
@@ -3,7 +3,7 @@ import { CMSType, Property, ResolvedProperty } from "../types";
|
|
|
3
3
|
/**
|
|
4
4
|
* @group Preview components
|
|
5
5
|
*/
|
|
6
|
-
export type PreviewSize = "
|
|
6
|
+
export type PreviewSize = "small" | "medium" | "large";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @group Preview components
|
|
@@ -46,4 +46,10 @@ export interface PropertyPreviewProps<T extends CMSType = any, CustomProps = any
|
|
|
46
46
|
*/
|
|
47
47
|
customProps?: CustomProps;
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* If the preview should be interactive or not.
|
|
51
|
+
* This applies only to videos.
|
|
52
|
+
*/
|
|
53
|
+
interactive?: boolean;
|
|
54
|
+
|
|
49
55
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Checkbox,
|
|
2
|
+
import { Checkbox, cls } from "@firecms/ui";
|
|
3
3
|
import { PreviewSize } from "../PropertyPreviewProps";
|
|
4
4
|
import { Property } from "../../types";
|
|
5
5
|
|
|
@@ -21,6 +21,6 @@ export function BooleanPreview({
|
|
|
21
21
|
size={size}
|
|
22
22
|
color={"secondary"}/>
|
|
23
23
|
{property.name && <span
|
|
24
|
-
className={
|
|
24
|
+
className={cls("text-text-secondary dark:text-text-secondary-dark", size === "small" ? "text-sm" : "")}>{property.name}</span>}
|
|
25
25
|
</div>;
|
|
26
26
|
}
|
|
@@ -6,5 +6,5 @@ import React from "react";
|
|
|
6
6
|
export function EmptyValue() {
|
|
7
7
|
|
|
8
8
|
return <div
|
|
9
|
-
className="rounded-full bg-
|
|
9
|
+
className="rounded-full bg-surface-200 bg-opacity-30 dark:bg-opacity-20 w-5 h-2 inline-block"/>;
|
|
10
10
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { Chip } from "@firecms/ui";
|
|
2
3
|
import { EnumValues } from "../../types";
|
|
3
4
|
import { buildEnumLabel, enumToObjectEntries, getColorScheme, getLabelOrConfigFrom } from "../../util/enums";
|
|
4
|
-
import { Chip } from "@firecms/ui";
|
|
5
5
|
|
|
6
6
|
export interface EnumValuesChipProps {
|
|
7
7
|
enumValues?: EnumValues;
|
|
8
8
|
enumKey: string | number;
|
|
9
|
-
size: "
|
|
9
|
+
size: "small" | "medium" | "large";
|
|
10
10
|
className?: string;
|
|
11
11
|
children?: React.ReactNode;
|
|
12
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { CSSProperties, useMemo
|
|
1
|
+
import React, { CSSProperties, useMemo } from "react";
|
|
2
2
|
|
|
3
3
|
import { getThumbnailMeasure } from "../util";
|
|
4
4
|
import { PreviewSize } from "../PropertyPreviewProps";
|
|
@@ -20,11 +20,9 @@ export function ImagePreview({
|
|
|
20
20
|
url
|
|
21
21
|
}: ImagePreviewProps) {
|
|
22
22
|
|
|
23
|
-
const [onHover, setOnHover] = useState(false);
|
|
24
|
-
|
|
25
23
|
const imageSize = useMemo(() => getThumbnailMeasure(size), [size]);
|
|
26
24
|
|
|
27
|
-
if (size === "
|
|
25
|
+
if (size === "small") {
|
|
28
26
|
return (
|
|
29
27
|
<img src={url}
|
|
30
28
|
className={"rounded-md"}
|
|
@@ -47,60 +45,51 @@ export function ImagePreview({
|
|
|
47
45
|
|
|
48
46
|
return (
|
|
49
47
|
<div
|
|
50
|
-
className="relative flex items-center justify-center max-w-full max-h-full"
|
|
48
|
+
className="relative flex items-center justify-center max-w-full max-h-full group"
|
|
51
49
|
style={{
|
|
52
50
|
width: imageSize,
|
|
53
51
|
height: imageSize
|
|
54
52
|
}}
|
|
55
|
-
key={"image_preview_" + url}
|
|
56
|
-
onMouseEnter={() => setOnHover(true)}
|
|
57
|
-
onMouseMove={() => setOnHover(true)}
|
|
58
|
-
onMouseLeave={() => setOnHover(false)}>
|
|
53
|
+
key={"image_preview_" + url}>
|
|
59
54
|
|
|
60
55
|
<img src={url}
|
|
61
56
|
className={"rounded-md"}
|
|
62
57
|
style={imageStyle}/>
|
|
63
58
|
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
</IconButton>
|
|
80
|
-
</div>
|
|
59
|
+
<div className={"flex flex-row gap-2 absolute bottom-[-4px] right-[-4px] invisible group-hover:visible"}>
|
|
60
|
+
{navigator && <Tooltip
|
|
61
|
+
asChild={true}
|
|
62
|
+
title="Copy url to clipboard" side={"bottom"}>
|
|
63
|
+
<IconButton
|
|
64
|
+
variant={"filled"}
|
|
65
|
+
size={"smallest"}
|
|
66
|
+
onClick={(e) => {
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
return navigator.clipboard.writeText(url);
|
|
70
|
+
}}>
|
|
71
|
+
<ContentCopyIcon className={"text-surface-700 dark:text-surface-300"}
|
|
72
|
+
size={"smallest"}/>
|
|
73
|
+
</IconButton>
|
|
81
74
|
</Tooltip>}
|
|
82
75
|
|
|
83
|
-
<Tooltip title="Open image in new tab">
|
|
76
|
+
<Tooltip title="Open image in new tab" side={"bottom"}>
|
|
84
77
|
<IconButton
|
|
78
|
+
className="invisible group-hover:visible"
|
|
85
79
|
variant={"filled"}
|
|
86
80
|
component={"a" as React.ElementType}
|
|
87
|
-
style={{
|
|
88
|
-
position: "absolute",
|
|
89
|
-
bottom: -4,
|
|
90
|
-
right: -4
|
|
91
|
-
}}
|
|
92
81
|
href={url}
|
|
93
82
|
rel="noopener noreferrer"
|
|
94
83
|
target="_blank"
|
|
95
|
-
size={"
|
|
84
|
+
size={"smallest"}
|
|
96
85
|
onClick={(e: any) => e.stopPropagation()}
|
|
97
86
|
>
|
|
98
|
-
<OpenInNewIcon className={"text-
|
|
99
|
-
size={"
|
|
87
|
+
<OpenInNewIcon className={"text-surface-700 dark:text-surface-300"}
|
|
88
|
+
size={"smallest"}/>
|
|
100
89
|
</IconButton>
|
|
101
90
|
</Tooltip>
|
|
102
|
-
|
|
103
|
-
|
|
91
|
+
</div>
|
|
92
|
+
|
|
104
93
|
</div>
|
|
105
94
|
);
|
|
106
95
|
}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
|
|
3
3
|
import { Entity, EntityCollection, EntityReference } from "../../types";
|
|
4
|
-
import {
|
|
5
|
-
useCustomizationController,
|
|
6
|
-
useEntityFetch,
|
|
7
|
-
useNavigationController,
|
|
8
|
-
useSideEntityController
|
|
9
|
-
} from "../../hooks";
|
|
4
|
+
import { useCustomizationController, useEntityFetch, useNavigationController } from "../../hooks";
|
|
10
5
|
import { PreviewSize } from "../PropertyPreviewProps";
|
|
11
|
-
import {
|
|
6
|
+
import { Skeleton } from "@firecms/ui";
|
|
12
7
|
import { ErrorView } from "../../components";
|
|
13
|
-
import { useAnalyticsController } from "../../hooks/useAnalyticsController";
|
|
14
8
|
import { EntityPreview, EntityPreviewContainer } from "../../components/EntityPreview";
|
|
15
9
|
|
|
16
10
|
export type ReferencePreviewProps = {
|
|
@@ -20,13 +14,14 @@ export type ReferencePreviewProps = {
|
|
|
20
14
|
previewProperties?: string[];
|
|
21
15
|
onClick?: (e: React.SyntheticEvent) => void;
|
|
22
16
|
hover?: boolean;
|
|
23
|
-
|
|
17
|
+
includeEntityLink?: boolean;
|
|
18
|
+
includeId?: boolean;
|
|
24
19
|
};
|
|
25
20
|
|
|
26
21
|
/**
|
|
27
22
|
* @group Preview components
|
|
28
23
|
*/
|
|
29
|
-
export const ReferencePreview =
|
|
24
|
+
export const ReferencePreview = function ReferencePreview(props: ReferencePreviewProps) {
|
|
30
25
|
const reference = props.reference;
|
|
31
26
|
if (!(typeof reference === "object" && "isEntityReference" in reference && reference.isEntityReference())) {
|
|
32
27
|
console.warn("Reference preview received value of type", typeof reference);
|
|
@@ -38,27 +33,18 @@ export const ReferencePreview = React.memo<ReferencePreviewProps>(function Refer
|
|
|
38
33
|
</EntityPreviewContainer>;
|
|
39
34
|
}
|
|
40
35
|
return <ReferencePreviewInternal {...props} />;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function areEqual(prevProps: ReferencePreviewProps, nextProps: ReferencePreviewProps) {
|
|
44
|
-
return prevProps.disabled === nextProps.disabled &&
|
|
45
|
-
prevProps.size === nextProps.size &&
|
|
46
|
-
prevProps.hover === nextProps.hover &&
|
|
47
|
-
prevProps.reference?.id === nextProps.reference?.id &&
|
|
48
|
-
prevProps.reference?.path === nextProps.reference?.path &&
|
|
49
|
-
prevProps.allowEntityNavigation === nextProps.allowEntityNavigation
|
|
50
|
-
;
|
|
51
|
-
}
|
|
36
|
+
};
|
|
52
37
|
|
|
53
|
-
function ReferencePreviewInternal
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
38
|
+
function ReferencePreviewInternal({
|
|
39
|
+
disabled,
|
|
40
|
+
reference,
|
|
41
|
+
previewProperties,
|
|
42
|
+
size,
|
|
43
|
+
hover,
|
|
44
|
+
onClick,
|
|
45
|
+
includeEntityLink = true,
|
|
46
|
+
includeId = true
|
|
47
|
+
}: ReferencePreviewProps) {
|
|
62
48
|
|
|
63
49
|
const customizationController = useCustomizationController();
|
|
64
50
|
|
|
@@ -79,7 +65,8 @@ function ReferencePreviewInternal<M extends Record<string, any>>({
|
|
|
79
65
|
previewProperties={previewProperties}
|
|
80
66
|
size={size}
|
|
81
67
|
disabled={disabled}
|
|
82
|
-
|
|
68
|
+
includeEntityLink={includeEntityLink}
|
|
69
|
+
includeId={includeId}
|
|
83
70
|
onClick={onClick}
|
|
84
71
|
hover={hover}/>
|
|
85
72
|
}
|
|
@@ -90,7 +77,8 @@ function ReferencePreviewExisting<M extends Record<string, any> = any>({
|
|
|
90
77
|
previewProperties,
|
|
91
78
|
size,
|
|
92
79
|
disabled,
|
|
93
|
-
|
|
80
|
+
includeEntityLink,
|
|
81
|
+
includeId,
|
|
94
82
|
onClick,
|
|
95
83
|
hover
|
|
96
84
|
}: ReferencePreviewProps & {
|
|
@@ -153,12 +141,13 @@ function ReferencePreviewExisting<M extends Record<string, any> = any>({
|
|
|
153
141
|
);
|
|
154
142
|
}
|
|
155
143
|
return <EntityPreview size={size}
|
|
156
|
-
|
|
144
|
+
previewKeys={previewProperties}
|
|
157
145
|
disabled={disabled}
|
|
158
146
|
entity={usedEntity}
|
|
159
147
|
collection={collection}
|
|
160
148
|
onClick={onClick}
|
|
161
|
-
|
|
149
|
+
includeEntityLink={includeEntityLink}
|
|
150
|
+
includeId={includeId}
|
|
162
151
|
hover={hover}/>;
|
|
163
152
|
|
|
164
153
|
}
|
|
@@ -11,6 +11,7 @@ type StorageThumbnailProps = {
|
|
|
11
11
|
storagePathOrDownloadUrl: string;
|
|
12
12
|
storeUrl: boolean;
|
|
13
13
|
size: PreviewSize;
|
|
14
|
+
interactive?: boolean;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -21,13 +22,15 @@ export const StorageThumbnail = React.memo<StorageThumbnailProps>(StorageThumbna
|
|
|
21
22
|
function areEqual(prevProps: StorageThumbnailProps, nextProps: StorageThumbnailProps) {
|
|
22
23
|
return prevProps.size === nextProps.size &&
|
|
23
24
|
prevProps.storagePathOrDownloadUrl === nextProps.storagePathOrDownloadUrl &&
|
|
24
|
-
prevProps.storeUrl === nextProps.storeUrl
|
|
25
|
+
prevProps.storeUrl === nextProps.storeUrl&&
|
|
26
|
+
prevProps.interactive === nextProps.interactive;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
const URL_CACHE: Record<string, DownloadConfig> = {};
|
|
28
30
|
|
|
29
31
|
export function StorageThumbnailInternal({
|
|
30
32
|
storeUrl,
|
|
33
|
+
interactive,
|
|
31
34
|
storagePathOrDownloadUrl,
|
|
32
35
|
size
|
|
33
36
|
}: StorageThumbnailProps) {
|
|
@@ -68,6 +71,7 @@ export function StorageThumbnailInternal({
|
|
|
68
71
|
return downloadConfig?.url
|
|
69
72
|
? <UrlComponentPreview previewType={previewType}
|
|
70
73
|
url={downloadConfig.url}
|
|
74
|
+
interactive={interactive}
|
|
71
75
|
size={size}
|
|
72
76
|
hint={storagePathOrDownloadUrl}/>
|
|
73
77
|
: renderSkeletonImageThumbnail(size);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
2
|
|
|
3
3
|
import { ImagePreview } from "./ImagePreview";
|
|
4
4
|
import { getThumbnailMeasure } from "../util";
|
|
5
5
|
import { PreviewType } from "../../types";
|
|
6
6
|
import { PreviewSize } from "../PropertyPreviewProps";
|
|
7
|
-
import { DescriptionIcon, OpenInNewIcon, Tooltip, Typography } from "@firecms/ui";
|
|
7
|
+
import { cls, DescriptionIcon, OpenInNewIcon, Tooltip, Typography } from "@firecms/ui";
|
|
8
8
|
import { EmptyValue } from "./EmptyValue";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -14,12 +14,15 @@ export function UrlComponentPreview({
|
|
|
14
14
|
url,
|
|
15
15
|
previewType,
|
|
16
16
|
size,
|
|
17
|
-
hint
|
|
17
|
+
hint,
|
|
18
|
+
interactive = true
|
|
18
19
|
}: {
|
|
19
20
|
url: string,
|
|
20
21
|
previewType?: PreviewType,
|
|
21
22
|
size: PreviewSize,
|
|
22
|
-
hint?: string
|
|
23
|
+
hint?: string,
|
|
24
|
+
// for video controls
|
|
25
|
+
interactive?: boolean
|
|
23
26
|
}): React.ReactElement {
|
|
24
27
|
|
|
25
28
|
if (!previewType) {
|
|
@@ -43,37 +46,66 @@ export function UrlComponentPreview({
|
|
|
43
46
|
size={size}/>;
|
|
44
47
|
} else if (previewType === "audio") {
|
|
45
48
|
return <audio controls
|
|
49
|
+
className={"max-w-100%"}
|
|
46
50
|
src={url}>
|
|
47
51
|
Your browser does not support the
|
|
48
52
|
<code>audio</code> element.
|
|
49
53
|
</audio>;
|
|
50
54
|
} else if (previewType === "video") {
|
|
51
|
-
return <
|
|
52
|
-
className={`max-w-${size === "small" ? "sm" : "md"}`}
|
|
53
|
-
controls
|
|
54
|
-
>
|
|
55
|
-
<source src={url}/>
|
|
56
|
-
</video>;
|
|
55
|
+
return <VideoPreview size={size} src={url} interactive={interactive}/>;
|
|
57
56
|
} else {
|
|
58
57
|
return (
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
</a>
|
|
58
|
+
<Tooltip title={hint}>
|
|
59
|
+
<a
|
|
60
|
+
href={url}
|
|
61
|
+
rel="noopener noreferrer"
|
|
62
|
+
target="_blank"
|
|
63
|
+
onClick={(e) => e.stopPropagation()}
|
|
64
|
+
className="flex flex-col items-center justify-center"
|
|
65
|
+
style={{
|
|
66
|
+
width: getThumbnailMeasure(size),
|
|
67
|
+
height: getThumbnailMeasure(size)
|
|
68
|
+
}}>
|
|
69
|
+
<DescriptionIcon className="text-surface-700 dark:text-surface-300"/>
|
|
70
|
+
{hint && <Typography
|
|
71
|
+
className="max-w-full truncate rtl text-left"
|
|
72
|
+
variant={"caption"}>{hint}</Typography>}
|
|
73
|
+
</a>
|
|
74
|
+
</Tooltip>
|
|
77
75
|
);
|
|
78
76
|
}
|
|
79
77
|
}
|
|
78
|
+
|
|
79
|
+
function VideoPreview({
|
|
80
|
+
size,
|
|
81
|
+
src,
|
|
82
|
+
interactive
|
|
83
|
+
}: { size: PreviewSize, src: string, interactive: boolean }) {
|
|
84
|
+
|
|
85
|
+
const imageSize = useMemo(() => {
|
|
86
|
+
if (size === "small")
|
|
87
|
+
return "140px";
|
|
88
|
+
else if (size === "medium")
|
|
89
|
+
return "240px";
|
|
90
|
+
else if (size === "large")
|
|
91
|
+
return "100%";
|
|
92
|
+
else throw new Error("Invalid size");
|
|
93
|
+
}, [size]);
|
|
94
|
+
|
|
95
|
+
const videoProps = {
|
|
96
|
+
controls: interactive
|
|
97
|
+
};
|
|
98
|
+
return <video
|
|
99
|
+
style={{
|
|
100
|
+
position: "relative",
|
|
101
|
+
objectFit: "cover",
|
|
102
|
+
width: imageSize,
|
|
103
|
+
minWidth: "140px",
|
|
104
|
+
// height: imageSize,
|
|
105
|
+
maxHeight: "100%"
|
|
106
|
+
}}
|
|
107
|
+
{...videoProps}
|
|
108
|
+
className={cls("max-w-100% rounded", { "pointer-events-none": !interactive })}>
|
|
109
|
+
<source src={src}/>
|
|
110
|
+
</video>;
|
|
111
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ErrorBoundary } from "../../components";
|
|
3
|
-
import { useCustomizationController } from "../../hooks";
|
|
3
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
4
4
|
import { PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
5
5
|
import { PropertyPreview } from "../PropertyPreview";
|
|
6
6
|
import { resolveArrayProperty } from "../../util";
|
|
@@ -15,13 +15,13 @@ export function ArrayOfMapsPreview({
|
|
|
15
15
|
size,
|
|
16
16
|
// entity
|
|
17
17
|
}: PropertyPreviewProps<Record<string, any>[]>) {
|
|
18
|
-
|
|
18
|
+
const authController = useAuthController();
|
|
19
19
|
const customizationController = useCustomizationController();
|
|
20
20
|
const property = resolveArrayProperty({
|
|
21
21
|
propertyKey,
|
|
22
22
|
property: inputProperty,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
24
|
+
authController
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
if (Array.isArray(property?.of)) {
|
|
@@ -37,7 +37,7 @@ export function ArrayOfMapsPreview({
|
|
|
37
37
|
throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);
|
|
38
38
|
}
|
|
39
39
|
const values = value;
|
|
40
|
-
const previewProperties: string[] | undefined = mapProperty.
|
|
40
|
+
const previewProperties: string[] | undefined = mapProperty.previewKeys;
|
|
41
41
|
|
|
42
42
|
if (!values) return null;
|
|
43
43
|
|
|
@@ -55,7 +55,7 @@ export function ArrayOfMapsPreview({
|
|
|
55
55
|
values.map((v, index) => {
|
|
56
56
|
return (
|
|
57
57
|
<div key={`table_${v}_${index}`}
|
|
58
|
-
className="border-b last:border-b-0">
|
|
58
|
+
className="border-b last:border-b-0 py-2">
|
|
59
59
|
{mapProperties && mapProperties.map(
|
|
60
60
|
(key) => (
|
|
61
61
|
<div
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ResolvedReferenceProperty } from "../../types";
|
|
2
2
|
import { resolveArrayProperty } from "../../util";
|
|
3
|
-
import { useCustomizationController } from "../../hooks";
|
|
3
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
4
4
|
import { PreviewSize, PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
5
5
|
import { ReferencePreview } from "../components/ReferencePreview";
|
|
6
6
|
|
|
@@ -13,13 +13,13 @@ export function ArrayOfReferencesPreview({
|
|
|
13
13
|
property: inputProperty,
|
|
14
14
|
size
|
|
15
15
|
}: PropertyPreviewProps<any[]>) {
|
|
16
|
-
|
|
16
|
+
const authController = useAuthController();
|
|
17
17
|
const customizationController = useCustomizationController();
|
|
18
18
|
const property = resolveArrayProperty({
|
|
19
19
|
propertyKey,
|
|
20
20
|
property: inputProperty,
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
22
|
+
authController
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
if (Array.isArray(property?.of)) {
|
|
@@ -29,7 +29,7 @@ export function ArrayOfReferencesPreview({
|
|
|
29
29
|
if (property?.dataType !== "array" || !property.of || property.of.dataType !== "reference")
|
|
30
30
|
throw Error("Picked wrong preview component ArrayOfReferencesPreview");
|
|
31
31
|
|
|
32
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
32
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
35
|
<div className="flex flex-col w-full">
|
|
@@ -43,6 +43,8 @@ export function ArrayOfReferencesPreview({
|
|
|
43
43
|
previewProperties={ofProperty.previewProperties}
|
|
44
44
|
size={childSize}
|
|
45
45
|
reference={reference}
|
|
46
|
+
includeId={ofProperty.includeId}
|
|
47
|
+
includeEntityLink={ofProperty.includeEntityLink}
|
|
46
48
|
/>
|
|
47
49
|
</div>;
|
|
48
50
|
}
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { resolveArrayProperty } from "../../util";
|
|
4
4
|
import { ResolvedProperty } from "../../types";
|
|
5
5
|
|
|
6
|
-
import { useCustomizationController } from "../../hooks";
|
|
6
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
7
7
|
import { PreviewSize, PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
8
8
|
import { PropertyPreview } from "../PropertyPreview";
|
|
9
9
|
import { ErrorBoundary } from "../../components";
|
|
@@ -19,12 +19,13 @@ export function ArrayOfStorageComponentsPreview({
|
|
|
19
19
|
size
|
|
20
20
|
}: PropertyPreviewProps<any[]>) {
|
|
21
21
|
|
|
22
|
+
const authController = useAuthController();
|
|
22
23
|
const customizationController = useCustomizationController();
|
|
23
24
|
const property = resolveArrayProperty({
|
|
24
25
|
propertyKey,
|
|
25
26
|
property: inputProperty,
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
28
|
+
authController
|
|
28
29
|
});
|
|
29
30
|
|
|
30
31
|
if (Array.isArray(property.of)) {
|
|
@@ -34,7 +35,7 @@ export function ArrayOfStorageComponentsPreview({
|
|
|
34
35
|
if (property.dataType !== "array" || !property.of || property.of.dataType !== "string")
|
|
35
36
|
throw Error("Picked wrong preview component ArrayOfStorageComponentsPreview");
|
|
36
37
|
|
|
37
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
38
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
38
39
|
|
|
39
40
|
return (
|
|
40
41
|
<div className={"flex flex-wrap gap-2"}>
|