@firecms/core 3.0.0-canary.14 → 3.0.0-canary.141
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 +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +16 -5
- 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 +11 -12
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
- 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/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 +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +7 -6
- 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 +1 -1
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +1 -0
- 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 +2 -1
- package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
- package/dist/components/index.d.ts +4 -2
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +18 -4
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -4
- 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/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 +1 -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/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +3 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +1 -2
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useBuildNavigationController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +16760 -13321
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20120 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- 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/types/auth.d.ts +3 -3
- package/dist/types/collections.d.ts +41 -6
- package/dist/types/datasource.d.ts +55 -35
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/fields.d.ts +63 -41
- package/dist/types/firecms.d.ts +4 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +6 -5
- package/dist/types/plugins.d.ts +14 -4
- package/dist/types/properties.d.ts +34 -21
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +3 -2
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +3 -3
- package/dist/util/resolutions.d.ts +30 -16
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +128 -119
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +51 -24
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +1 -1
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +12 -19
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +72 -67
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +138 -86
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +43 -39
- package/src/components/EntityView.tsx +6 -6
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +25 -19
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +7 -7
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
- package/src/components/common/index.ts +1 -0
- 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 +23 -2
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +23 -12
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +176 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +716 -153
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +53 -52
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +7 -8
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +74 -35
- package/src/form/components/CustomIdField.tsx +4 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/LabelWithIcon.tsx +27 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +21 -11
- package/src/form/components/StorageUploadProgress.tsx +3 -4
- package/src/form/components/index.tsx +1 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +51 -32
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +54 -45
- package/src/form/field_bindings/MapFieldBinding.tsx +65 -48
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -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 +52 -34
- package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
- package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
- package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
- package/src/form/index.tsx +4 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/delete.ts +2 -1
- package/src/hooks/data/save.ts +9 -5
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +91 -31
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useValidateAuthenticator.tsx +21 -41
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +102 -22
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +11 -18
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -35
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +3 -3
- package/src/types/collections.ts +50 -8
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +65 -43
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +16 -3
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/fields.tsx +69 -45
- package/src/types/firecms.tsx +5 -0
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +7 -7
- package/src/types/plugins.tsx +16 -6
- package/src/types/properties.ts +39 -22
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +94 -3
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +8 -2
- package/src/util/index.ts +1 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +45 -28
- package/src/util/permissions.ts +1 -0
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +1 -0
- 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/EntityForm.d.ts +0 -77
- 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/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/EntityForm.tsx +0 -728
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataSource, DataSourceDelegate,
|
|
1
|
+
import { DataSource, DataSourceDelegate, NavigationController, PropertyConfig } from "../types";
|
|
2
2
|
/**
|
|
3
3
|
* Use this hook to build a {@link DataSource} based on Firestore
|
|
4
4
|
* @param firebaseApp
|
|
@@ -9,18 +9,3 @@ export declare function useBuildDataSource({ delegate, propertyConfigs, navigati
|
|
|
9
9
|
propertyConfigs?: Record<string, PropertyConfig>;
|
|
10
10
|
navigationController: NavigationController;
|
|
11
11
|
}): DataSource;
|
|
12
|
-
/**
|
|
13
|
-
* Recursive function that converts Firestore data types into CMS or plain
|
|
14
|
-
* JS types.
|
|
15
|
-
* FireCMS uses Javascript dates internally instead of Firestore timestamps.
|
|
16
|
-
* This makes it easier to interact with the rest of the libraries and
|
|
17
|
-
* bindings.
|
|
18
|
-
* Also, Firestore references are replaced with {@link EntityReference}
|
|
19
|
-
* @param data
|
|
20
|
-
* @param buildReference
|
|
21
|
-
* @param buildGeoPoint
|
|
22
|
-
* @param buildDate
|
|
23
|
-
* @param buildDelete
|
|
24
|
-
* @group Firestore
|
|
25
|
-
*/
|
|
26
|
-
export declare function cmsToDelegateModel(data: any, buildReference: (reference: EntityReference) => any, buildGeoPoint: (geoPoint: GeoPoint) => any, buildDate: (date: Date) => any, buildDelete: () => any): any;
|
|
@@ -2,7 +2,7 @@ import { CMSType, Property, ResolvedProperty } from "../types";
|
|
|
2
2
|
/**
|
|
3
3
|
* @group Preview components
|
|
4
4
|
*/
|
|
5
|
-
export type PreviewSize = "medium" | "small" | "
|
|
5
|
+
export type PreviewSize = "medium" | "small" | "smallest";
|
|
6
6
|
/**
|
|
7
7
|
* @group Preview components
|
|
8
8
|
*/
|
|
@@ -37,4 +37,9 @@ export interface PropertyPreviewProps<T extends CMSType = any, CustomProps = any
|
|
|
37
37
|
* Additional properties set by the developer
|
|
38
38
|
*/
|
|
39
39
|
customProps?: CustomProps;
|
|
40
|
+
/**
|
|
41
|
+
* If the preview should be interactive or not.
|
|
42
|
+
* This applies only to videos.
|
|
43
|
+
*/
|
|
44
|
+
interactive?: boolean;
|
|
40
45
|
}
|
|
@@ -3,7 +3,7 @@ import { EnumValues } from "../../types";
|
|
|
3
3
|
export interface EnumValuesChipProps {
|
|
4
4
|
enumValues?: EnumValues;
|
|
5
5
|
enumKey: string | number;
|
|
6
|
-
size: "
|
|
6
|
+
size: "smallest" | "small" | "medium";
|
|
7
7
|
className?: string;
|
|
8
8
|
children?: React.ReactNode;
|
|
9
9
|
}
|
|
@@ -8,9 +8,10 @@ export type ReferencePreviewProps = {
|
|
|
8
8
|
previewProperties?: string[];
|
|
9
9
|
onClick?: (e: React.SyntheticEvent) => void;
|
|
10
10
|
hover?: boolean;
|
|
11
|
-
|
|
11
|
+
includeEntityLink?: boolean;
|
|
12
|
+
includeId?: boolean;
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
15
|
* @group Preview components
|
|
15
16
|
*/
|
|
16
|
-
export declare const ReferencePreview:
|
|
17
|
+
export declare const ReferencePreview: (props: ReferencePreviewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,10 +4,11 @@ type StorageThumbnailProps = {
|
|
|
4
4
|
storagePathOrDownloadUrl: string;
|
|
5
5
|
storeUrl: boolean;
|
|
6
6
|
size: PreviewSize;
|
|
7
|
+
interactive?: boolean;
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
10
|
* @group Preview components
|
|
10
11
|
*/
|
|
11
12
|
export declare const StorageThumbnail: React.FunctionComponent<StorageThumbnailProps>;
|
|
12
|
-
export declare function StorageThumbnailInternal({ storeUrl, storagePathOrDownloadUrl, size }: StorageThumbnailProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export declare function StorageThumbnailInternal({ storeUrl, interactive, storagePathOrDownloadUrl, size }: StorageThumbnailProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
14
|
export {};
|
|
@@ -4,9 +4,10 @@ import { PreviewSize } from "../PropertyPreviewProps";
|
|
|
4
4
|
/**
|
|
5
5
|
* @group Preview components
|
|
6
6
|
*/
|
|
7
|
-
export declare function UrlComponentPreview({ url, previewType, size, hint }: {
|
|
7
|
+
export declare function UrlComponentPreview({ url, previewType, size, hint, interactive }: {
|
|
8
8
|
url: string;
|
|
9
9
|
previewType?: PreviewType;
|
|
10
10
|
size: PreviewSize;
|
|
11
11
|
hint?: string;
|
|
12
|
+
interactive?: boolean;
|
|
12
13
|
}): React.ReactElement;
|
package/dist/types/auth.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { StorageSource } from "./storage";
|
|
|
8
8
|
* to do it as the result of a hook.
|
|
9
9
|
* @group Hooks and utilities
|
|
10
10
|
*/
|
|
11
|
-
export type AuthController<UserType extends User = any, ExtraData
|
|
11
|
+
export type AuthController<UserType extends User = any, ExtraData = any> = {
|
|
12
12
|
/**
|
|
13
13
|
* The user currently logged in
|
|
14
14
|
* The values can be: the user object, null if they skipped login
|
|
@@ -32,7 +32,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
|
|
|
32
32
|
/**
|
|
33
33
|
* Sign out
|
|
34
34
|
*/
|
|
35
|
-
signOut: () => void
|
|
35
|
+
signOut: () => Promise<void>;
|
|
36
36
|
/**
|
|
37
37
|
* Error initializing the authentication
|
|
38
38
|
*/
|
|
@@ -56,7 +56,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
|
|
|
56
56
|
* Implement this function to allow access to specific users.
|
|
57
57
|
* @group Hooks and utilities
|
|
58
58
|
*/
|
|
59
|
-
export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (
|
|
59
|
+
export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (props: {
|
|
60
60
|
/**
|
|
61
61
|
* Logged-in user or null
|
|
62
62
|
*/
|
|
@@ -44,6 +44,11 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
44
44
|
* This path also determines the URL in FireCMS, unless an alias is specified
|
|
45
45
|
*/
|
|
46
46
|
path: string;
|
|
47
|
+
/**
|
|
48
|
+
* Optional database id of this collection. If not specified, the default
|
|
49
|
+
* database id will be used.
|
|
50
|
+
*/
|
|
51
|
+
databaseId?: string;
|
|
47
52
|
/**
|
|
48
53
|
* If this collection is a top level navigation entry, you can set this
|
|
49
54
|
* property to `true` to indicate that this collection is a collection group.
|
|
@@ -53,7 +58,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
53
58
|
* Icon key to use in this collection.
|
|
54
59
|
* You can use any of the icons in the Material specs:
|
|
55
60
|
* https://fonts.google.com/icons
|
|
56
|
-
* e.g. 'account_tree' or 'person'
|
|
61
|
+
* e.g. 'account_tree' or 'person'.
|
|
62
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
57
63
|
*/
|
|
58
64
|
icon?: string;
|
|
59
65
|
/**
|
|
@@ -94,8 +100,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
94
100
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
95
101
|
* - If you are using a collection group, you will also have an
|
|
96
102
|
* additional `collectionGroupParent` column.
|
|
103
|
+
* You can use this prop to hide some properties from the table view.
|
|
104
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
105
|
+
* `hidden` in the property definition,will be ignored.
|
|
106
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
97
107
|
*/
|
|
98
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
108
|
+
propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
|
|
99
109
|
/**
|
|
100
110
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
101
111
|
* collection are loaded.
|
|
@@ -253,7 +263,18 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
253
263
|
* are writing custom code
|
|
254
264
|
*/
|
|
255
265
|
ownerId?: string;
|
|
266
|
+
/**
|
|
267
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
268
|
+
*/
|
|
256
269
|
overrides?: EntityOverrides;
|
|
270
|
+
/**
|
|
271
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
272
|
+
*/
|
|
273
|
+
sideDialogWidth?: number | string;
|
|
274
|
+
/**
|
|
275
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
276
|
+
*/
|
|
277
|
+
previewProperties?: string[];
|
|
257
278
|
}
|
|
258
279
|
/**
|
|
259
280
|
* Parameter passed to the `Actions` prop in the collection configuration.
|
|
@@ -302,14 +323,13 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
302
323
|
/**
|
|
303
324
|
* Use this controller to retrieve the selected entities or modify them in
|
|
304
325
|
* an {@link EntityCollection}
|
|
305
|
-
* If you want to pass a `SelectionController` to
|
|
306
326
|
* @group Models
|
|
307
327
|
*/
|
|
308
328
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
309
329
|
selectedEntities: Entity<M>[];
|
|
310
330
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
311
331
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
312
|
-
toggleEntitySelection: (entity: Entity<M
|
|
332
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
313
333
|
};
|
|
314
334
|
/**
|
|
315
335
|
* Filter conditions in a `Query.where()` clause are specified using the
|
|
@@ -391,8 +411,22 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any, Us
|
|
|
391
411
|
* @group Models
|
|
392
412
|
*/
|
|
393
413
|
export type EntityCustomView<M extends Record<string, any> = any> = {
|
|
414
|
+
/**
|
|
415
|
+
* Key of this custom view.
|
|
416
|
+
*/
|
|
394
417
|
key: string;
|
|
418
|
+
/**
|
|
419
|
+
* Name of this custom view.
|
|
420
|
+
*/
|
|
395
421
|
name: string;
|
|
422
|
+
/**
|
|
423
|
+
* If set to true, the actions of the entity will be included in the
|
|
424
|
+
* bottom of the panel (save buttons, delete buttons, etc.)
|
|
425
|
+
*/
|
|
426
|
+
includeActions?: boolean;
|
|
427
|
+
/**
|
|
428
|
+
* Builder for rendering the custom view
|
|
429
|
+
*/
|
|
396
430
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
397
431
|
};
|
|
398
432
|
/**
|
|
@@ -445,7 +479,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
445
479
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
446
480
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
447
481
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
448
|
-
setSortBy?: (sortBy
|
|
482
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
449
483
|
searchString?: string;
|
|
450
484
|
setSearchString?: (searchString?: string) => void;
|
|
451
485
|
clearFilter?: () => void;
|
|
@@ -463,5 +497,6 @@ export type SelectedCellProps<M extends Record<string, any>> = {
|
|
|
463
497
|
cellRect: DOMRect;
|
|
464
498
|
width: number;
|
|
465
499
|
height: number;
|
|
466
|
-
|
|
500
|
+
entityPath: string;
|
|
501
|
+
entityId: string;
|
|
467
502
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Entity,
|
|
1
|
+
import { Entity, EntityStatus, EntityValues } from "./entities";
|
|
2
2
|
import { EntityCollection, FilterValues } from "./collections";
|
|
3
3
|
import { ResolvedEntityCollection } from "./resolved_entities";
|
|
4
|
+
import { FireCMSContext } from "./firecms_context";
|
|
4
5
|
/**
|
|
5
6
|
* @group Datasource
|
|
6
7
|
*/
|
|
@@ -13,6 +14,7 @@ export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
|
13
14
|
* @group Datasource
|
|
14
15
|
*/
|
|
15
16
|
export type ListenEntityProps<M extends Record<string, any> = any> = FetchEntityProps<M> & {
|
|
17
|
+
databaseId?: string;
|
|
16
18
|
onUpdate: (entity: Entity<M>) => void;
|
|
17
19
|
onError?: (error: Error) => void;
|
|
18
20
|
};
|
|
@@ -52,11 +54,11 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
|
|
|
52
54
|
*/
|
|
53
55
|
export interface DeleteEntityProps<M extends Record<string, any> = any> {
|
|
54
56
|
entity: Entity<M>;
|
|
57
|
+
collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
|
|
55
58
|
}
|
|
56
59
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
|
|
60
|
+
* Component in charge of communicating with the data source.
|
|
61
|
+
* Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
|
|
60
62
|
* @group Datasource
|
|
61
63
|
*/
|
|
62
64
|
export interface DataSource {
|
|
@@ -121,21 +123,21 @@ export interface DataSource {
|
|
|
121
123
|
* @param entity
|
|
122
124
|
* @return was the whole deletion flow successful
|
|
123
125
|
*/
|
|
124
|
-
deleteEntity<M extends Record<string, any> = any>({ entity }: DeleteEntityProps<M>): Promise<void>;
|
|
126
|
+
deleteEntity<M extends Record<string, any> = any>({ entity, collection }: DeleteEntityProps<M>): Promise<void>;
|
|
125
127
|
/**
|
|
126
128
|
* Check if the given property is unique in the given collection
|
|
127
129
|
* @param path Collection path
|
|
128
130
|
* @param name of the property
|
|
129
131
|
* @param value
|
|
130
|
-
* @param
|
|
132
|
+
* @param collection
|
|
131
133
|
* @param entityId
|
|
132
134
|
* @return `true` if there are no other fields besides the given entity
|
|
133
135
|
*/
|
|
134
|
-
checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
|
|
136
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
|
|
135
137
|
/**
|
|
136
138
|
* Generate an id for a new entity
|
|
137
139
|
*/
|
|
138
|
-
generateEntityId(path: string): string;
|
|
140
|
+
generateEntityId(path: string, collection: EntityCollection): string;
|
|
139
141
|
/**
|
|
140
142
|
* Count the number of entities in a collection
|
|
141
143
|
*/
|
|
@@ -145,6 +147,17 @@ export interface DataSource {
|
|
|
145
147
|
* @param props
|
|
146
148
|
*/
|
|
147
149
|
isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Called when the user clicks on the search bar in a collection view.
|
|
152
|
+
* Useful for initializing a text search index.
|
|
153
|
+
* @param props
|
|
154
|
+
*/
|
|
155
|
+
initTextSearch?: (props: {
|
|
156
|
+
context: FireCMSContext;
|
|
157
|
+
path: string;
|
|
158
|
+
collection: EntityCollection;
|
|
159
|
+
parentCollectionIds?: string[];
|
|
160
|
+
}) => Promise<boolean>;
|
|
148
161
|
}
|
|
149
162
|
export type FilterCombinationValidProps = {
|
|
150
163
|
path: string;
|
|
@@ -152,14 +165,22 @@ export type FilterCombinationValidProps = {
|
|
|
152
165
|
filterValues: FilterValues<any>;
|
|
153
166
|
sortBy?: [string, "asc" | "desc"];
|
|
154
167
|
};
|
|
155
|
-
export type SaveEntityDelegateProps<M extends Record<string, any> = any> =
|
|
156
|
-
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
157
|
-
|
|
158
|
-
};
|
|
159
|
-
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M> & {
|
|
160
|
-
isCollectionGroup?: boolean;
|
|
161
|
-
};
|
|
168
|
+
export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
|
|
169
|
+
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
|
|
170
|
+
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
|
|
162
171
|
export interface DataSourceDelegate {
|
|
172
|
+
/**
|
|
173
|
+
* Key that identifies this data source delegate
|
|
174
|
+
*/
|
|
175
|
+
key: string;
|
|
176
|
+
/**
|
|
177
|
+
* If the data source has been initialised
|
|
178
|
+
*/
|
|
179
|
+
initialised?: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* If the user is authenticated to use the data source
|
|
182
|
+
*/
|
|
183
|
+
authenticated?: boolean;
|
|
163
184
|
/**
|
|
164
185
|
* Fetch data from a collection
|
|
165
186
|
* @param path
|
|
@@ -194,7 +215,7 @@ export interface DataSourceDelegate {
|
|
|
194
215
|
* @param path
|
|
195
216
|
* @param entityId
|
|
196
217
|
*/
|
|
197
|
-
fetchEntity<M extends Record<string, any> = any>({ path, entityId, }:
|
|
218
|
+
fetchEntity<M extends Record<string, any> = any>({ path, entityId, }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
|
|
198
219
|
/**
|
|
199
220
|
* Get realtime updates on one entity.
|
|
200
221
|
* @param path
|
|
@@ -204,12 +225,12 @@ export interface DataSourceDelegate {
|
|
|
204
225
|
* @param onError
|
|
205
226
|
* @return Function to cancel subscription
|
|
206
227
|
*/
|
|
207
|
-
listenEntity?<M extends Record<string, any> = any>({ path, entityId, onUpdate, onError }:
|
|
228
|
+
listenEntity?<M extends Record<string, any> = any>({ path, entityId, onUpdate, onError }: ListenEntityProps<M>): () => void;
|
|
208
229
|
/**
|
|
209
230
|
* Save entity to the specified path
|
|
210
231
|
* @param path
|
|
211
|
-
* @param
|
|
212
|
-
* @param
|
|
232
|
+
* @param entityId
|
|
233
|
+
* @param values
|
|
213
234
|
* @param status
|
|
214
235
|
*/
|
|
215
236
|
saveEntity<M extends Record<string, any> = any>({ path, entityId, values, status }: SaveEntityDelegateProps<M>): Promise<Entity<M>>;
|
|
@@ -225,13 +246,14 @@ export interface DataSourceDelegate {
|
|
|
225
246
|
* @param name of the property
|
|
226
247
|
* @param value
|
|
227
248
|
* @param entityId
|
|
249
|
+
* @param collection
|
|
228
250
|
* @return `true` if there are no other fields besides the given entity
|
|
229
251
|
*/
|
|
230
|
-
checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
|
|
252
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
|
|
231
253
|
/**
|
|
232
254
|
* Generate an id for a new entity
|
|
233
255
|
*/
|
|
234
|
-
generateEntityId(path: string): string;
|
|
256
|
+
generateEntityId(path: string, collection?: EntityCollection): string;
|
|
235
257
|
/**
|
|
236
258
|
* Count the number of entities in a collection
|
|
237
259
|
*/
|
|
@@ -240,23 +262,21 @@ export interface DataSourceDelegate {
|
|
|
240
262
|
* Check if the given filter combination is valid
|
|
241
263
|
* @param props
|
|
242
264
|
*/
|
|
243
|
-
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
* @param reference
|
|
247
|
-
*/
|
|
248
|
-
buildReference: (reference: EntityReference) => any;
|
|
249
|
-
/**
|
|
250
|
-
* Convert a FireCMS GeoPoint to a GeoPoint that can be used by the datasource
|
|
251
|
-
* @param geoPoint
|
|
252
|
-
*/
|
|
253
|
-
buildGeoPoint: (geoPoint: GeoPoint) => any;
|
|
265
|
+
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
|
|
266
|
+
databaseId?: string;
|
|
267
|
+
}): boolean;
|
|
254
268
|
/**
|
|
255
269
|
* Get the object to generate the current time in the datasource
|
|
256
270
|
*/
|
|
257
|
-
currentTime()
|
|
258
|
-
buildDate: (date: Date) => any;
|
|
259
|
-
buildDeleteFieldValue: () => any;
|
|
271
|
+
currentTime?: () => any;
|
|
260
272
|
delegateToCMSModel: (data: any) => any;
|
|
273
|
+
cmsToDelegateModel: (data: any) => any;
|
|
261
274
|
setDateToMidnight: (input?: any) => any;
|
|
275
|
+
initTextSearch?: (props: {
|
|
276
|
+
context: FireCMSContext;
|
|
277
|
+
path: string;
|
|
278
|
+
databaseId?: string;
|
|
279
|
+
collection: EntityCollection;
|
|
280
|
+
parentCollectionIds?: string[];
|
|
281
|
+
}) => Promise<boolean>;
|
|
262
282
|
}
|
package/dist/types/entities.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface Entity<M extends object> {
|
|
|
21
21
|
* Current values
|
|
22
22
|
*/
|
|
23
23
|
values: EntityValues<M>;
|
|
24
|
+
databaseId?: string;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* This type represents a record of key value pairs as described in an
|
|
@@ -31,7 +32,7 @@ export type EntityValues<M extends object> = M;
|
|
|
31
32
|
/**
|
|
32
33
|
* Class used to create a reference to an entity in a different path
|
|
33
34
|
*/
|
|
34
|
-
export declare class EntityReference
|
|
35
|
+
export declare class EntityReference {
|
|
35
36
|
/**
|
|
36
37
|
* ID of the entity
|
|
37
38
|
*/
|
|
@@ -56,3 +57,7 @@ export declare class GeoPoint {
|
|
|
56
57
|
readonly longitude: number;
|
|
57
58
|
constructor(latitude: number, longitude: number);
|
|
58
59
|
}
|
|
60
|
+
export declare class Vector {
|
|
61
|
+
readonly value: number[];
|
|
62
|
+
constructor(value: number[]);
|
|
63
|
+
}
|
|
@@ -4,9 +4,23 @@ import { Entity } from "./entities";
|
|
|
4
4
|
import { EntityCollection, SelectionController } from "./collections";
|
|
5
5
|
import { User } from "./user";
|
|
6
6
|
import { SideEntityController } from "./side_entity_controller";
|
|
7
|
+
/**
|
|
8
|
+
* An entity action is a custom action that can be performed on an entity.
|
|
9
|
+
* They are displayed in the entity view and in the collection view.
|
|
10
|
+
*/
|
|
7
11
|
export type EntityAction<M extends object = any, UserType extends User = User> = {
|
|
12
|
+
/**
|
|
13
|
+
* Title of the action
|
|
14
|
+
*/
|
|
8
15
|
name: string;
|
|
16
|
+
/**
|
|
17
|
+
* Icon of the action
|
|
18
|
+
*/
|
|
9
19
|
icon?: React.ReactElement;
|
|
20
|
+
/**
|
|
21
|
+
* Callback when the action is clicked
|
|
22
|
+
* @param props
|
|
23
|
+
*/
|
|
10
24
|
onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
|
|
11
25
|
/**
|
|
12
26
|
* Show this action collapsed in the menu of the collection view.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataSourceDelegate } from "./datasource";
|
|
2
2
|
import { StorageSource } from "./storage";
|
|
3
3
|
export type EntityOverrides = {
|
|
4
|
-
|
|
4
|
+
dataSourceDelegate?: DataSourceDelegate;
|
|
5
5
|
storageSource?: StorageSource;
|
|
6
6
|
};
|
package/dist/types/fields.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
1
|
+
import { CMSType, Property, PropertyOrBuilder } from "./properties";
|
|
3
2
|
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
3
|
+
import { FormexController } from "@firecms/formex";
|
|
4
4
|
/**
|
|
5
5
|
* When building a custom field you need to create a React component that takes
|
|
6
6
|
* this interface as props.
|
|
@@ -17,9 +17,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
17
17
|
* Current value of this field
|
|
18
18
|
*/
|
|
19
19
|
value: T;
|
|
20
|
-
/**
|
|
21
|
-
* Initial value of this field
|
|
22
|
-
*/
|
|
23
20
|
/**
|
|
24
21
|
* Set value of field directly
|
|
25
22
|
*/
|
|
@@ -34,53 +31,49 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
34
31
|
/**
|
|
35
32
|
* Is the form currently submitting
|
|
36
33
|
*/
|
|
37
|
-
isSubmitting
|
|
34
|
+
isSubmitting?: boolean;
|
|
38
35
|
/**
|
|
39
36
|
* Should this field show the error indicator.
|
|
40
37
|
* Note that there might be an error (like an empty field that should be
|
|
41
38
|
* filled) but we don't want to show the error until the user has tried
|
|
42
39
|
* saving.
|
|
43
40
|
*/
|
|
44
|
-
showError
|
|
41
|
+
showError?: boolean;
|
|
45
42
|
/**
|
|
46
43
|
* Is there an error in this field. The error field has the same shape as
|
|
47
44
|
* the field, replacing values with a string containing the error.
|
|
48
45
|
* It takes the value `null` if there is no error
|
|
49
46
|
*/
|
|
50
|
-
error
|
|
47
|
+
error?: any | null;
|
|
51
48
|
/**
|
|
52
49
|
* Has this field been touched
|
|
53
50
|
*/
|
|
54
|
-
touched
|
|
51
|
+
touched?: boolean;
|
|
55
52
|
/**
|
|
56
53
|
* Property related to this field
|
|
57
54
|
*/
|
|
58
|
-
property: ResolvedProperty<T>;
|
|
55
|
+
property: Property<T> | ResolvedProperty<T>;
|
|
59
56
|
/**
|
|
60
57
|
* Should this field include a description
|
|
61
58
|
*/
|
|
62
|
-
includeDescription
|
|
59
|
+
includeDescription?: boolean;
|
|
63
60
|
/**
|
|
64
61
|
* Flag to indicate that the underlying value has been updated in the
|
|
65
62
|
* datasource
|
|
66
63
|
*/
|
|
67
|
-
underlyingValueHasChanged
|
|
64
|
+
underlyingValueHasChanged?: boolean;
|
|
68
65
|
/**
|
|
69
66
|
* Is this field part of an array
|
|
70
67
|
*/
|
|
71
|
-
partOfArray
|
|
72
|
-
/**
|
|
73
|
-
* Is this field part of a block (oneOf array)
|
|
74
|
-
*/
|
|
75
|
-
partOfBlock: boolean;
|
|
68
|
+
partOfArray?: boolean;
|
|
76
69
|
/**
|
|
77
|
-
*
|
|
70
|
+
* Should this field render with the minimal amount of UI elements
|
|
78
71
|
*/
|
|
79
|
-
|
|
72
|
+
minimalistView?: boolean;
|
|
80
73
|
/**
|
|
81
74
|
* Should this field autofocus on mount
|
|
82
75
|
*/
|
|
83
|
-
autoFocus
|
|
76
|
+
autoFocus?: boolean;
|
|
84
77
|
/**
|
|
85
78
|
* Additional properties set by the developer
|
|
86
79
|
*/
|
|
@@ -92,29 +85,29 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
92
85
|
/**
|
|
93
86
|
* Flag to indicate if this field should be disabled
|
|
94
87
|
*/
|
|
95
|
-
disabled
|
|
88
|
+
disabled?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Size of the field
|
|
91
|
+
*/
|
|
92
|
+
size?: "smallest" | "small" | "medium";
|
|
93
|
+
/**
|
|
94
|
+
* Some properties might change internal state (like expanding a panel).
|
|
95
|
+
* This function should be called when the internal state changes.
|
|
96
|
+
* This is used to preserve state in array containers.
|
|
97
|
+
*
|
|
98
|
+
* @param property
|
|
99
|
+
*/
|
|
100
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
96
101
|
}
|
|
97
102
|
/**
|
|
98
103
|
* Context passed to custom fields
|
|
99
104
|
* @group Form custom fields
|
|
100
105
|
*/
|
|
101
106
|
export interface FormContext<M extends Record<string, any> = any> {
|
|
102
|
-
/**
|
|
103
|
-
* Collection of the entity being modified
|
|
104
|
-
*/
|
|
105
|
-
collection: ResolvedEntityCollection<M>;
|
|
106
107
|
/**
|
|
107
108
|
* Current values of the entity
|
|
108
109
|
*/
|
|
109
|
-
values:
|
|
110
|
-
/**
|
|
111
|
-
* Entity id, it can be null if it's a new entity
|
|
112
|
-
*/
|
|
113
|
-
entityId?: string;
|
|
114
|
-
/**
|
|
115
|
-
* Path this entity is located at
|
|
116
|
-
*/
|
|
117
|
-
path: string;
|
|
110
|
+
values: M;
|
|
118
111
|
/**
|
|
119
112
|
* Update the value of a field
|
|
120
113
|
* @param key
|
|
@@ -123,9 +116,25 @@ export interface FormContext<M extends Record<string, any> = any> {
|
|
|
123
116
|
*/
|
|
124
117
|
setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
|
|
125
118
|
/**
|
|
126
|
-
* Save the entity
|
|
119
|
+
* Save the entity.
|
|
120
|
+
*/
|
|
121
|
+
save: (values: M) => void;
|
|
122
|
+
/**
|
|
123
|
+
* Collection of the entity being modified
|
|
124
|
+
*/
|
|
125
|
+
collection?: ResolvedEntityCollection<M>;
|
|
126
|
+
/**
|
|
127
|
+
* Entity id, it can be null if it's a new entity
|
|
128
|
+
*/
|
|
129
|
+
entityId: string;
|
|
130
|
+
/**
|
|
131
|
+
* Path this entity is located at
|
|
127
132
|
*/
|
|
128
|
-
|
|
133
|
+
path?: string;
|
|
134
|
+
/**
|
|
135
|
+
* This is the underlying formex controller that powers the form
|
|
136
|
+
*/
|
|
137
|
+
formex: FormexController<M>;
|
|
129
138
|
}
|
|
130
139
|
/**
|
|
131
140
|
* In case you need to render a field bound to a Property inside your
|
|
@@ -156,10 +165,6 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
156
165
|
* field is being edited
|
|
157
166
|
*/
|
|
158
167
|
underlyingValueHasChanged?: boolean;
|
|
159
|
-
/**
|
|
160
|
-
* Is this field being rendered in a table
|
|
161
|
-
*/
|
|
162
|
-
tableMode?: boolean;
|
|
163
168
|
/**
|
|
164
169
|
* Is this field part of an array
|
|
165
170
|
*/
|
|
@@ -167,7 +172,7 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
167
172
|
/**
|
|
168
173
|
* Is this field part of a block (oneOf array)
|
|
169
174
|
*/
|
|
170
|
-
|
|
175
|
+
minimalistView?: boolean;
|
|
171
176
|
/**
|
|
172
177
|
* Should the field take focus when rendered. When opening the popup view
|
|
173
178
|
* in table mode, it makes sense to put the focus on the only field rendered.
|
|
@@ -177,4 +182,21 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
177
182
|
* Should this field be disabled
|
|
178
183
|
*/
|
|
179
184
|
disabled?: boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Index of the field in the array.
|
|
187
|
+
* Only used when the field is part of an array.
|
|
188
|
+
*/
|
|
189
|
+
index?: number;
|
|
190
|
+
/**
|
|
191
|
+
* The size of the field
|
|
192
|
+
*/
|
|
193
|
+
size?: "smallest" | "small" | "medium";
|
|
194
|
+
/**
|
|
195
|
+
* Some properties might change internal state (like expanding a panel).
|
|
196
|
+
* This function should be called when the internal state changes.
|
|
197
|
+
* This is used to preserve state in array containers.
|
|
198
|
+
*
|
|
199
|
+
* @param property
|
|
200
|
+
*/
|
|
201
|
+
onPropertyChange?: (property: Partial<Property<any>>) => void;
|
|
180
202
|
}
|