@firecms/core 3.0.0-canary.98 → 3.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/app/Drawer.d.ts +0 -1
- package/dist/app/Scaffold.d.ts +4 -0
- package/dist/components/ArrayContainer.d.ts +31 -12
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +8 -6
- package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
- package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
- package/dist/components/HomePage/NavigationCard.d.ts +3 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
- package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
- package/dist/components/common/default_entity_actions.d.ts +0 -2
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/useColumnsIds.d.ts +1 -0
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +8 -2
- package/dist/core/DrawerNavigationItem.d.ts +2 -1
- package/dist/core/EntityEditView.d.ts +40 -22
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -2
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +0 -1
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/form/EntityForm.d.ts +50 -0
- package/dist/form/EntityFormActions.d.ts +21 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +4 -10
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +17 -16
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +3 -3
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +57 -12
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +7 -1
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
- package/dist/index.es.js +20108 -14471
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20039 -14407
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -2
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +1 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +2 -2
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +7 -9
- package/dist/types/collections.d.ts +86 -25
- package/dist/types/customization_controller.d.ts +8 -0
- package/dist/types/datasource.d.ts +19 -17
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +2 -1
- package/dist/types/entity_actions.d.ts +58 -8
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +43 -17
- package/dist/types/firecms.d.ts +16 -3
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/navigation.d.ts +60 -17
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +42 -9
- package/dist/types/properties.d.ts +65 -22
- package/dist/types/property_config.d.ts +1 -3
- package/dist/types/roles.d.ts +3 -0
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +14 -1
- package/dist/types/storage.d.ts +75 -0
- package/dist/types/user.d.ts +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 +2 -2
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_synonyms.d.ts +0 -1
- package/dist/util/icons.d.ts +5 -2
- package/dist/util/index.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +10 -1
- package/dist/util/navigation_utils.d.ts +13 -1
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/property_utils.d.ts +4 -4
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +30 -6
- package/dist/util/storage.d.ts +1 -1
- package/dist/util/useStorageUploadController.d.ts +2 -2
- package/package.json +133 -125
- package/src/app/Drawer.tsx +0 -1
- package/src/app/Scaffold.tsx +33 -29
- package/src/components/ArrayContainer.tsx +447 -229
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +1 -1
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
- package/src/components/DeleteEntityDialog.tsx +13 -20
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +35 -9
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
- package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +75 -57
- package/src/components/EntityView.tsx +8 -5
- package/src/components/ErrorView.tsx +3 -3
- package/src/components/FireCMSLogo.tsx +7 -51
- package/src/components/HomePage/DefaultHomePage.tsx +522 -160
- package/src/components/HomePage/FavouritesView.tsx +9 -14
- package/src/components/HomePage/HomePageDnD.tsx +642 -0
- package/src/components/HomePage/NavigationCard.tsx +47 -38
- package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
- package/src/components/HomePage/NavigationGroup.tsx +144 -30
- package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
- 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 +22 -13
- package/src/components/SearchIconsView.tsx +2 -2
- package/src/components/SelectableTable/SelectableTable.tsx +154 -142
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +59 -10
- package/src/components/UnsavedChangesDialog.tsx +46 -0
- package/src/components/VirtualTable/VirtualTable.tsx +65 -44
- package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
- package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
- package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
- package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/common/default_entity_actions.tsx +62 -42
- package/src/components/common/index.ts +1 -1
- package/src/components/common/useColumnsIds.tsx +1 -1
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +1 -0
- package/src/components/index.tsx +4 -1
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +3 -2
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +124 -85
- package/src/core/DefaultDrawer.tsx +30 -22
- package/src/core/DrawerNavigationItem.tsx +32 -28
- package/src/core/EntityEditView.tsx +388 -995
- package/src/core/EntityEditViewFormActions.tsx +329 -0
- package/src/core/EntitySidePanel.tsx +88 -20
- package/src/core/FireCMS.tsx +46 -25
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +23 -32
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +24 -10
- package/src/core/index.tsx +4 -2
- package/src/form/EntityForm.tsx +814 -0
- package/src/form/EntityFormActions.tsx +211 -0
- package/src/form/PropertyFieldBinding.tsx +55 -41
- package/src/form/components/CustomIdField.tsx +9 -3
- package/src/form/components/FieldHelperText.tsx +1 -1
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +5 -4
- package/src/form/components/StorageUploadProgress.tsx +2 -3
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
- package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
- package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +10 -8
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
- package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +12 -6
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +26 -35
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +10 -2
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useBuildModeController.tsx +15 -28
- package/src/hooks/useBuildNavigationController.tsx +386 -124
- package/src/hooks/useFireCMSContext.tsx +3 -33
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +16 -5
- package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
- package/src/hooks/useValidateAuthenticator.tsx +3 -3
- package/src/internal/useBuildDataSource.ts +67 -80
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +149 -86
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +28 -12
- package/src/preview/PropertyPreviewProps.tsx +1 -1
- package/src/preview/components/BooleanPreview.tsx +1 -1
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +10 -9
- package/src/preview/components/ReferencePreview.tsx +6 -16
- package/src/preview/components/UrlComponentPreview.tsx +20 -21
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +5 -3
- package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
- package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +3 -0
- package/src/types/auth.tsx +8 -12
- package/src/types/collections.ts +101 -28
- package/src/types/customization_controller.tsx +9 -0
- package/src/types/datasource.ts +21 -20
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +3 -1
- package/src/types/entity_actions.tsx +71 -8
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +52 -19
- package/src/types/firecms.tsx +18 -4
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/navigation.ts +76 -22
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +50 -9
- package/src/types/properties.ts +74 -22
- package/src/types/property_config.tsx +1 -2
- package/src/types/roles.ts +3 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +16 -1
- package/src/types/storage.ts +82 -0
- 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 +5 -3
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/icon_list.ts +1 -1
- package/src/util/icon_synonyms.ts +0 -1
- package/src/util/icons.tsx +36 -11
- package/src/util/index.ts +3 -0
- package/src/util/join_collections.ts +9 -2
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +33 -12
- package/src/util/navigation_utils.ts +135 -19
- package/src/util/objects.ts +74 -14
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +8 -8
- package/src/util/property_utils.tsx +17 -6
- package/src/util/references.ts +19 -8
- package/src/util/resolutions.ts +93 -24
- package/src/util/storage.ts +6 -2
- package/src/util/useStorageUploadController.tsx +74 -29
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/form/PropertiesForm.d.ts +0 -8
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
- package/src/form/PropertiesForm.tsx +0 -81
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -21,6 +21,6 @@ export function BooleanPreview({
|
|
|
21
21
|
size={size}
|
|
22
22
|
color={"secondary"}/>
|
|
23
23
|
{property.name && <span
|
|
24
|
-
className={cls("text-text-secondary dark:text-text-secondary-dark", size === "
|
|
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
|
}
|
|
@@ -6,7 +6,7 @@ import { buildEnumLabel, enumToObjectEntries, getColorScheme, getLabelOrConfigFr
|
|
|
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
|
}
|
|
@@ -22,7 +22,7 @@ export function ImagePreview({
|
|
|
22
22
|
|
|
23
23
|
const imageSize = useMemo(() => getThumbnailMeasure(size), [size]);
|
|
24
24
|
|
|
25
|
-
if (size === "
|
|
25
|
+
if (size === "small") {
|
|
26
26
|
return (
|
|
27
27
|
<img src={url}
|
|
28
28
|
className={"rounded-md"}
|
|
@@ -56,19 +56,20 @@ export function ImagePreview({
|
|
|
56
56
|
className={"rounded-md"}
|
|
57
57
|
style={imageStyle}/>
|
|
58
58
|
|
|
59
|
-
|
|
60
59
|
<div className={"flex flex-row gap-2 absolute bottom-[-4px] right-[-4px] invisible group-hover:visible"}>
|
|
61
|
-
{navigator && <Tooltip
|
|
60
|
+
{navigator && <Tooltip
|
|
61
|
+
asChild={true}
|
|
62
|
+
title="Copy url to clipboard" side={"bottom"}>
|
|
62
63
|
<IconButton
|
|
63
64
|
variant={"filled"}
|
|
64
|
-
size={"
|
|
65
|
+
size={"smallest"}
|
|
65
66
|
onClick={(e) => {
|
|
66
67
|
e.stopPropagation();
|
|
67
68
|
e.preventDefault();
|
|
68
69
|
return navigator.clipboard.writeText(url);
|
|
69
70
|
}}>
|
|
70
|
-
<ContentCopyIcon className={"text-
|
|
71
|
-
size={"
|
|
71
|
+
<ContentCopyIcon className={"text-surface-700 dark:text-surface-300"}
|
|
72
|
+
size={"smallest"}/>
|
|
72
73
|
</IconButton>
|
|
73
74
|
</Tooltip>}
|
|
74
75
|
|
|
@@ -80,11 +81,11 @@ export function ImagePreview({
|
|
|
80
81
|
href={url}
|
|
81
82
|
rel="noopener noreferrer"
|
|
82
83
|
target="_blank"
|
|
83
|
-
size={"
|
|
84
|
+
size={"smallest"}
|
|
84
85
|
onClick={(e: any) => e.stopPropagation()}
|
|
85
86
|
>
|
|
86
|
-
<OpenInNewIcon className={"text-
|
|
87
|
-
size={"
|
|
87
|
+
<OpenInNewIcon className={"text-surface-700 dark:text-surface-300"}
|
|
88
|
+
size={"smallest"}/>
|
|
88
89
|
</IconButton>
|
|
89
90
|
</Tooltip>
|
|
90
91
|
</div>
|
|
@@ -10,7 +10,7 @@ import { EntityPreview, EntityPreviewContainer } from "../../components/EntityPr
|
|
|
10
10
|
export type ReferencePreviewProps = {
|
|
11
11
|
disabled?: boolean;
|
|
12
12
|
reference: EntityReference,
|
|
13
|
-
size
|
|
13
|
+
size?: PreviewSize;
|
|
14
14
|
previewProperties?: string[];
|
|
15
15
|
onClick?: (e: React.SyntheticEvent) => void;
|
|
16
16
|
hover?: boolean;
|
|
@@ -21,30 +21,19 @@ export type ReferencePreviewProps = {
|
|
|
21
21
|
/**
|
|
22
22
|
* @group Preview components
|
|
23
23
|
*/
|
|
24
|
-
export const ReferencePreview =
|
|
24
|
+
export const ReferencePreview = function ReferencePreview(props: ReferencePreviewProps) {
|
|
25
25
|
const reference = props.reference;
|
|
26
26
|
if (!(typeof reference === "object" && "isEntityReference" in reference && reference.isEntityReference())) {
|
|
27
27
|
console.warn("Reference preview received value of type", typeof reference);
|
|
28
28
|
return <EntityPreviewContainer
|
|
29
29
|
onClick={props.onClick}
|
|
30
|
-
size={props.size}>
|
|
30
|
+
size={props.size ?? "medium"}>
|
|
31
31
|
<ErrorView error={"Unexpected value. Click to edit"}
|
|
32
32
|
tooltip={JSON.stringify(reference)}/>
|
|
33
33
|
</EntityPreviewContainer>;
|
|
34
34
|
}
|
|
35
35
|
return <ReferencePreviewInternal {...props} />;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function areEqual(prevProps: ReferencePreviewProps, nextProps: ReferencePreviewProps) {
|
|
39
|
-
return prevProps.disabled === nextProps.disabled &&
|
|
40
|
-
prevProps.size === nextProps.size &&
|
|
41
|
-
prevProps.hover === nextProps.hover &&
|
|
42
|
-
prevProps.reference?.id === nextProps.reference?.id &&
|
|
43
|
-
prevProps.reference?.path === nextProps.reference?.path &&
|
|
44
|
-
prevProps.includeEntityLink === nextProps.includeEntityLink &&
|
|
45
|
-
prevProps.onClick === nextProps.onClick
|
|
46
|
-
;
|
|
47
|
-
}
|
|
36
|
+
};
|
|
48
37
|
|
|
49
38
|
function ReferencePreviewInternal({
|
|
50
39
|
disabled,
|
|
@@ -151,8 +140,9 @@ function ReferencePreviewExisting<M extends Record<string, any> = any>({
|
|
|
151
140
|
</EntityPreviewContainer>
|
|
152
141
|
);
|
|
153
142
|
}
|
|
143
|
+
|
|
154
144
|
return <EntityPreview size={size}
|
|
155
|
-
|
|
145
|
+
previewKeys={previewProperties}
|
|
156
146
|
disabled={disabled}
|
|
157
147
|
entity={usedEntity}
|
|
158
148
|
collection={collection}
|
|
@@ -55,24 +55,23 @@ export function UrlComponentPreview({
|
|
|
55
55
|
return <VideoPreview size={size} src={url} interactive={interactive}/>;
|
|
56
56
|
} else {
|
|
57
57
|
return (
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
</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>
|
|
76
75
|
);
|
|
77
76
|
}
|
|
78
77
|
}
|
|
@@ -84,11 +83,11 @@ function VideoPreview({
|
|
|
84
83
|
}: { size: PreviewSize, src: string, interactive: boolean }) {
|
|
85
84
|
|
|
86
85
|
const imageSize = useMemo(() => {
|
|
87
|
-
if (size === "
|
|
86
|
+
if (size === "small")
|
|
88
87
|
return "140px";
|
|
89
|
-
else if (size === "small")
|
|
90
|
-
return "240px";
|
|
91
88
|
else if (size === "medium")
|
|
89
|
+
return "240px";
|
|
90
|
+
else if (size === "large")
|
|
92
91
|
return "100%";
|
|
93
92
|
else throw new Error("Invalid size");
|
|
94
93
|
}, [size]);
|
|
@@ -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,12 +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
|
-
|
|
23
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
24
|
+
authController
|
|
24
25
|
});
|
|
25
26
|
|
|
26
27
|
if (Array.isArray(property?.of)) {
|
|
@@ -36,7 +37,7 @@ export function ArrayOfMapsPreview({
|
|
|
36
37
|
throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);
|
|
37
38
|
}
|
|
38
39
|
const values = value;
|
|
39
|
-
const previewProperties: string[] | undefined = mapProperty.
|
|
40
|
+
const previewProperties: string[] | undefined = mapProperty.previewKeys;
|
|
40
41
|
|
|
41
42
|
if (!values) return null;
|
|
42
43
|
|
|
@@ -54,7 +55,7 @@ export function ArrayOfMapsPreview({
|
|
|
54
55
|
values.map((v, index) => {
|
|
55
56
|
return (
|
|
56
57
|
<div key={`table_${v}_${index}`}
|
|
57
|
-
className="border-b last:border-b-0">
|
|
58
|
+
className="border-b last:border-b-0 py-2">
|
|
58
59
|
{mapProperties && mapProperties.map(
|
|
59
60
|
(key) => (
|
|
60
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,12 +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
|
-
|
|
21
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
22
|
+
authController
|
|
22
23
|
});
|
|
23
24
|
|
|
24
25
|
if (Array.isArray(property?.of)) {
|
|
@@ -28,7 +29,7 @@ export function ArrayOfReferencesPreview({
|
|
|
28
29
|
if (property?.dataType !== "array" || !property.of || property.of.dataType !== "reference")
|
|
29
30
|
throw Error("Picked wrong preview component ArrayOfReferencesPreview");
|
|
30
31
|
|
|
31
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
32
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
32
33
|
|
|
33
34
|
return (
|
|
34
35
|
<div className="flex flex-col w-full">
|
|
@@ -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,11 +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
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
28
|
+
authController
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
if (Array.isArray(property.of)) {
|
|
@@ -33,7 +35,7 @@ export function ArrayOfStorageComponentsPreview({
|
|
|
33
35
|
if (property.dataType !== "array" || !property.of || property.of.dataType !== "string")
|
|
34
36
|
throw Error("Picked wrong preview component ArrayOfStorageComponentsPreview");
|
|
35
37
|
|
|
36
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
38
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
37
39
|
|
|
38
40
|
return (
|
|
39
41
|
<div className={"flex flex-wrap gap-2"}>
|
|
@@ -3,7 +3,7 @@ import { ResolvedStringProperty } from "../../types";
|
|
|
3
3
|
|
|
4
4
|
import { resolveArrayProperty } from "../../util";
|
|
5
5
|
import { PropertyPreviewProps, StringPropertyPreview } from "../../preview";
|
|
6
|
-
import { useCustomizationController } from "../../hooks";
|
|
6
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
7
7
|
import { ErrorBoundary } from "../../components";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -16,12 +16,13 @@ export function ArrayOfStringsPreview({
|
|
|
16
16
|
// entity,
|
|
17
17
|
size
|
|
18
18
|
}: PropertyPreviewProps<string[]>) {
|
|
19
|
-
|
|
19
|
+
const authController = useAuthController();
|
|
20
20
|
const customizationController = useCustomizationController();
|
|
21
21
|
const property = resolveArrayProperty({
|
|
22
22
|
propertyKey,
|
|
23
23
|
property: inputProperty,
|
|
24
|
-
|
|
24
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
25
|
+
authController
|
|
25
26
|
});
|
|
26
27
|
|
|
27
28
|
if (Array.isArray(property.of)) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { resolveArrayProperty } from "../../util";
|
|
3
3
|
import { ResolvedProperty } from "../../types";
|
|
4
|
-
import { useCustomizationController } from "../../hooks";
|
|
4
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
5
5
|
import { PreviewSize, PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
6
6
|
import { PropertyPreview } from "../PropertyPreview";
|
|
7
7
|
import { cls, defaultBorderMixin } from "@firecms/ui";
|
|
@@ -19,11 +19,13 @@ export function ArrayOneOfPreview({
|
|
|
19
19
|
// entity
|
|
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
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
28
|
+
authController
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
if (property?.dataType !== "array")
|
|
@@ -37,7 +39,7 @@ export function ArrayOneOfPreview({
|
|
|
37
39
|
|
|
38
40
|
if (!values) return null;
|
|
39
41
|
|
|
40
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
42
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
41
43
|
|
|
42
44
|
const typeField = property.oneOf.typeField ?? DEFAULT_ONE_OF_TYPE;
|
|
43
45
|
const valueField = property.oneOf.valueField ?? DEFAULT_ONE_OF_VALUE;
|
|
@@ -49,7 +51,7 @@ export function ArrayOneOfPreview({
|
|
|
49
51
|
values.map((value, index) =>
|
|
50
52
|
<React.Fragment
|
|
51
53
|
key={"preview_array_" + value + "_" + index}>
|
|
52
|
-
<div className={cls(defaultBorderMixin, "m-1 border-b last:border-b-0")}>
|
|
54
|
+
<div className={cls(defaultBorderMixin, "m-1 border-b last:border-b-0 py-2")}>
|
|
53
55
|
<ErrorBoundary>
|
|
54
56
|
{value && <PropertyPreview
|
|
55
57
|
propertyKey={propertyKey}
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
|
|
3
3
|
import { resolveArrayProperty } from "../../util";
|
|
4
4
|
import { ResolvedProperty } from "../../types";
|
|
5
|
-
import { useCustomizationController } from "../../hooks";
|
|
5
|
+
import { useAuthController, useCustomizationController } from "../../hooks";
|
|
6
6
|
import { PreviewSize, PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
7
7
|
import { PropertyPreview } from "../PropertyPreview";
|
|
8
8
|
import { cls, defaultBorderMixin } from "@firecms/ui";
|
|
@@ -19,11 +19,13 @@ export function ArrayPropertyPreview({
|
|
|
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
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
28
|
+
authController
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
if (!property.of) {
|
|
@@ -37,7 +39,7 @@ export function ArrayPropertyPreview({
|
|
|
37
39
|
|
|
38
40
|
if (!values) return null;
|
|
39
41
|
|
|
40
|
-
const childSize: PreviewSize = size === "medium" ? "
|
|
42
|
+
const childSize: PreviewSize = size === "medium" ? "medium" : "small";
|
|
41
43
|
|
|
42
44
|
return (
|
|
43
45
|
<div className="flex flex-col gap-2">
|
|
@@ -34,7 +34,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
34
34
|
|
|
35
35
|
const mapPropertyKeys: string[] = Object.keys(mapProperty.properties)
|
|
36
36
|
|
|
37
|
-
if (size === "
|
|
37
|
+
if (size === "small")
|
|
38
38
|
return (
|
|
39
39
|
<div className="w-full flex flex-col space-y-1 md:space-y-2">
|
|
40
40
|
{mapPropertyKeys.map((key, index) => (
|
|
@@ -58,6 +58,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
58
58
|
{mapPropertyKeys &&
|
|
59
59
|
mapPropertyKeys.map((key, index) => {
|
|
60
60
|
const childProperty = mapProperty.properties![key];
|
|
61
|
+
const isArrayOrMap = childProperty.dataType === "map" || childProperty === "array";
|
|
61
62
|
return (
|
|
62
63
|
<div
|
|
63
64
|
key={`map_preview_table_${key}}`}
|
|
@@ -75,7 +76,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
75
76
|
<div
|
|
76
77
|
className="flex-grow max-w-[75%]">
|
|
77
78
|
<ErrorBoundary>
|
|
78
|
-
{!
|
|
79
|
+
{!isArrayOrMap &&
|
|
79
80
|
<PropertyPreview
|
|
80
81
|
propertyKey={key}
|
|
81
82
|
value={(value)[key]}
|
|
@@ -86,7 +87,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
86
87
|
</div>
|
|
87
88
|
</div>
|
|
88
89
|
|
|
89
|
-
{
|
|
90
|
+
{isArrayOrMap &&
|
|
90
91
|
<div className={cls(defaultBorderMixin, "border-l pl-4 ml-2 my-2")}>
|
|
91
92
|
<PropertyPreview
|
|
92
93
|
propertyKey={key}
|
|
@@ -110,7 +111,7 @@ export function KeyValuePreview({ value }: { value: any }) {
|
|
|
110
111
|
return <div
|
|
111
112
|
className="flex flex-col gap-1 w-full">
|
|
112
113
|
{
|
|
113
|
-
Object.entries(value).map(([key, childValue]) => (
|
|
114
|
+
Object.entries(value).map(([key, childValue]: [string, any]) => (
|
|
114
115
|
<div
|
|
115
116
|
key={`map_preview_table_${key}}`}
|
|
116
117
|
className={cls(defaultBorderMixin, "last:border-b-0 border-b")}>
|
|
@@ -127,9 +128,9 @@ export function KeyValuePreview({ value }: { value: any }) {
|
|
|
127
128
|
</div>
|
|
128
129
|
<div
|
|
129
130
|
className="flex-grow max-w-[75%]">
|
|
130
|
-
{typeof childValue !== "object" && <Typography>
|
|
131
|
+
{childValue && typeof childValue !== "object" && <Typography>
|
|
131
132
|
<ErrorBoundary>
|
|
132
|
-
{childValue
|
|
133
|
+
{childValue.toString()}
|
|
133
134
|
</ErrorBoundary>
|
|
134
135
|
</Typography>}
|
|
135
136
|
</div>
|
|
@@ -46,7 +46,7 @@ export function SkeletonPropertyComponent({
|
|
|
46
46
|
content = <>{arrayProperty.of.map((p, i) => renderGenericArrayCell(p, i))} </>;
|
|
47
47
|
} else {
|
|
48
48
|
if (arrayProperty.of.dataType === "map" && arrayProperty.of.properties) {
|
|
49
|
-
content = renderArrayOfMaps(arrayProperty.of.properties, size, arrayProperty.of.
|
|
49
|
+
content = renderArrayOfMaps(arrayProperty.of.properties, size, arrayProperty.of.previewKeys);
|
|
50
50
|
} else if (arrayProperty.of.dataType === "string") {
|
|
51
51
|
if (arrayProperty.of.enumValues) {
|
|
52
52
|
content = renderArrayEnumTableCell();
|
|
@@ -81,17 +81,17 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
|
|
|
81
81
|
return <></>;
|
|
82
82
|
|
|
83
83
|
let mapPropertyKeys: string[];
|
|
84
|
-
if (size === "
|
|
84
|
+
if (size === "large") {
|
|
85
85
|
mapPropertyKeys = Object.keys(property.properties);
|
|
86
86
|
} else {
|
|
87
87
|
mapPropertyKeys = (property.previewProperties || Object.keys(property.properties)) as string[];
|
|
88
|
-
if (size === "
|
|
88
|
+
if (size === "medium")
|
|
89
89
|
mapPropertyKeys = mapPropertyKeys.slice(0, 3);
|
|
90
|
-
else if (size === "
|
|
90
|
+
else if (size === "small")
|
|
91
91
|
mapPropertyKeys = mapPropertyKeys.slice(0, 1);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
if (size !== "
|
|
94
|
+
if (size !== "large")
|
|
95
95
|
return (
|
|
96
96
|
<div
|
|
97
97
|
className="w-full flex flex-col space-y-4"
|
|
@@ -101,7 +101,7 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
|
|
|
101
101
|
{property.properties && property.properties[key] &&
|
|
102
102
|
<SkeletonPropertyComponent
|
|
103
103
|
property={property.properties[key]}
|
|
104
|
-
size={"
|
|
104
|
+
size={"medium"}/>}
|
|
105
105
|
</div>
|
|
106
106
|
))}
|
|
107
107
|
</div>
|
|
@@ -128,7 +128,7 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
|
|
|
128
128
|
{property.properties && property.properties[key] &&
|
|
129
129
|
<SkeletonPropertyComponent
|
|
130
130
|
property={property.properties[key]}
|
|
131
|
-
size={"
|
|
131
|
+
size={"medium"}/>}
|
|
132
132
|
</th>
|
|
133
133
|
</tr>
|
|
134
134
|
);
|
|
@@ -160,7 +160,7 @@ function renderArrayOfMaps<M extends Record<string, any>>(properties: ResolvedPr
|
|
|
160
160
|
>
|
|
161
161
|
<SkeletonPropertyComponent
|
|
162
162
|
property={(properties)[key]}
|
|
163
|
-
size={"
|
|
163
|
+
size={"medium"}/>
|
|
164
164
|
</th>
|
|
165
165
|
)
|
|
166
166
|
)}
|
|
@@ -210,7 +210,7 @@ function renderGenericArrayCell(
|
|
|
210
210
|
<>
|
|
211
211
|
<SkeletonPropertyComponent key={`i_${index}`}
|
|
212
212
|
property={property}
|
|
213
|
-
size={"
|
|
213
|
+
size={"medium"}/>
|
|
214
214
|
</>
|
|
215
215
|
)}
|
|
216
216
|
</div>
|
|
@@ -226,7 +226,7 @@ function renderUrlAudioComponent() {
|
|
|
226
226
|
|
|
227
227
|
export function renderSkeletonImageThumbnail(size: PreviewSize) {
|
|
228
228
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
229
|
-
const imageSize = size === "
|
|
229
|
+
const imageSize = size === "small" ? 40 : size === "medium" ? 100 : 200;
|
|
230
230
|
return (
|
|
231
231
|
<Skeleton width={imageSize}
|
|
232
232
|
height={imageSize}/>
|
|
@@ -236,8 +236,8 @@ export function renderSkeletonImageThumbnail(size: PreviewSize) {
|
|
|
236
236
|
function renderUrlVideo(size: PreviewSize) {
|
|
237
237
|
|
|
238
238
|
return (
|
|
239
|
-
<Skeleton width={size !== "
|
|
240
|
-
height={size !== "
|
|
239
|
+
<Skeleton width={size !== "large" ? 300 : 500}
|
|
240
|
+
height={size !== "large" ? 200 : 250}/>
|
|
241
241
|
);
|
|
242
242
|
}
|
|
243
243
|
|
|
@@ -245,7 +245,7 @@ function renderReference() {
|
|
|
245
245
|
return <Skeleton width={200} height={100}/>;
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
function renderUrlComponent(property: ResolvedStringProperty, size: PreviewSize = "
|
|
248
|
+
function renderUrlComponent(property: ResolvedStringProperty, size: PreviewSize = "large") {
|
|
249
249
|
|
|
250
250
|
if (typeof property.url === "boolean") {
|
|
251
251
|
return <div style={{
|
|
@@ -45,14 +45,14 @@ export function StringPropertyPreview({
|
|
|
45
45
|
if (!value) return <></>;
|
|
46
46
|
const lines = value.split("\n");
|
|
47
47
|
return value && value.includes("\n")
|
|
48
|
-
? <div className={cls("overflow-x-scroll", size === "
|
|
48
|
+
? <div className={cls("overflow-x-scroll overflow-hidden", size === "small" ? "text-sm" : "")}>
|
|
49
49
|
{lines.map((str, index) =>
|
|
50
50
|
<React.Fragment key={`string_preview_${index}`}>
|
|
51
51
|
<span>{str}</span>
|
|
52
52
|
{index !== lines.length - 1 && <br/>}
|
|
53
53
|
</React.Fragment>)}
|
|
54
54
|
</div>
|
|
55
|
-
: (size === "
|
|
55
|
+
: (size === "small"
|
|
56
56
|
? <span className={"text-sm"}>{value}</span>
|
|
57
57
|
: <>{value}</>
|
|
58
58
|
);
|
package/src/preview/util.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { CollectionSize } from "../types";
|
|
2
2
|
import { PreviewSize } from "./PropertyPreviewProps";
|
|
3
3
|
|
|
4
|
-
export const
|
|
5
|
-
export const
|
|
6
|
-
export const
|
|
4
|
+
export const SMALL_THUMBNAIL = 40;
|
|
5
|
+
export const MEDIUM_THUMBNAIL = 100;
|
|
6
|
+
export const LARGE_THUMBNAIL = 200;
|
|
7
7
|
|
|
8
8
|
export function getThumbnailMeasure(size: PreviewSize): number {
|
|
9
|
-
if (size === "
|
|
10
|
-
return TINY_THUMBNAIL;
|
|
11
|
-
else if (size === "small")
|
|
9
|
+
if (size === "small")
|
|
12
10
|
return SMALL_THUMBNAIL;
|
|
13
11
|
else if (size === "medium")
|
|
14
|
-
return
|
|
12
|
+
return MEDIUM_THUMBNAIL;
|
|
13
|
+
else if (size === "large")
|
|
14
|
+
return LARGE_THUMBNAIL;
|
|
15
15
|
else throw Error("Thumbnail size not mapped");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -19,12 +19,12 @@ export function getPreviewSizeFrom(size: CollectionSize): PreviewSize {
|
|
|
19
19
|
switch (size) {
|
|
20
20
|
case "xs":
|
|
21
21
|
case "s":
|
|
22
|
-
return "tiny";
|
|
23
|
-
case "m":
|
|
24
22
|
return "small";
|
|
23
|
+
case "m":
|
|
24
|
+
return "medium";
|
|
25
25
|
case "l":
|
|
26
26
|
case "xl":
|
|
27
|
-
return "
|
|
27
|
+
return "large";
|
|
28
28
|
default:
|
|
29
29
|
throw Error("Missing mapping value in getPreviewSizeFrom: " + size);
|
|
30
30
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CMSView } from "../types";
|
|
2
|
+
import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
|
|
5
|
+
export function CustomCMSRoute({ cmsView }: {
|
|
6
|
+
cmsView: CMSView
|
|
7
|
+
}) {
|
|
8
|
+
|
|
9
|
+
const breadcrumbs = useBreadcrumbsController();
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
breadcrumbs.set({
|
|
13
|
+
breadcrumbs: [{
|
|
14
|
+
title: cmsView.name,
|
|
15
|
+
url: cmsView.path
|
|
16
|
+
}]
|
|
17
|
+
});
|
|
18
|
+
}, [cmsView.path]);
|
|
19
|
+
|
|
20
|
+
return cmsView.view;
|
|
21
|
+
}
|