@firecms/core 3.0.0-canary.6 → 3.0.0-canary.61
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/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -11
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +2 -0
- 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 +1 -1
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -3
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/FireCMSAppBar.d.ts +4 -2
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +2 -2
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- 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 +6 -7
- 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/useDataSourceEntityCollectionTableController.d.ts +3 -0
- package/dist/components/index.d.ts +5 -2
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- package/dist/core/Drawer.d.ts +5 -12
- package/dist/core/DrawerNavigationItem.d.ts +9 -0
- package/dist/core/{EntityView.d.ts → EntityEditView.d.ts} +2 -2
- package/dist/core/NavigationRoutes.d.ts +1 -1
- package/dist/core/Scaffold.d.ts +8 -12
- package/dist/core/index.d.ts +3 -4
- package/dist/form/EntityForm.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/StorageItemPreview.d.ts +3 -2
- package/dist/form/components/StorageUploadProgress.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/StorageUploadFieldBinding.d.ts +4 -3
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- package/dist/hooks/data/delete.d.ts +2 -2
- package/dist/hooks/data/save.d.ts +2 -3
- package/dist/hooks/data/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +3 -3
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useBuildNavigationController.d.ts +6 -4
- package/dist/hooks/useProjectLog.d.ts +6 -2
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.es.js +10498 -9944
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +5 -5
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +1 -4
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -8
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +37 -1
- package/dist/types/collections.d.ts +30 -6
- package/dist/types/datasource.d.ts +21 -14
- package/dist/types/entities.d.ts +5 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_callbacks.d.ts +2 -2
- package/dist/types/entity_overrides.d.ts +6 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/navigation.d.ts +15 -14
- package/dist/types/permissions.d.ts +5 -1
- package/dist/types/plugins.d.ts +20 -20
- package/dist/types/properties.d.ts +12 -4
- package/dist/types/property_config.d.ts +2 -2
- package/dist/types/roles.d.ts +31 -0
- package/dist/types/storage.d.ts +11 -3
- package/dist/types/user.d.ts +5 -0
- package/dist/util/collections.d.ts +9 -1
- package/dist/util/entities.d.ts +1 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +8 -2
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +14 -14
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +139 -119
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/DeleteEntityDialog.tsx +4 -4
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +4 -4
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +276 -279
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +9 -5
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +48 -45
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +18 -17
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +5 -5
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +16 -12
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +2 -4
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +73 -72
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +30 -0
- package/src/components/EntityPreview.tsx +209 -70
- package/src/components/EntityView.tsx +84 -0
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/FireCMSAppBar.tsx +40 -15
- package/src/components/HomePage/DefaultHomePage.tsx +15 -11
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
- package/src/components/HomePage/index.tsx +3 -1
- package/src/components/PropertyIdCopyTooltipContent.tsx +2 -3
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +4 -4
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +5 -5
- package/src/components/SelectableTable/SelectableTable.tsx +5 -3
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +23 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +38 -24
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +35 -15
- package/src/components/VirtualTable/VirtualTable.tsx +38 -29
- package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +7 -7
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +1 -1
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +11 -7
- 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 +10 -2
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +12 -1
- package/src/components/common/useTableSearchHelper.ts +39 -9
- package/src/components/index.tsx +5 -2
- package/src/contexts/AuthControllerContext.tsx +1 -1
- package/src/core/Drawer.tsx +78 -103
- package/src/core/DrawerNavigationItem.tsx +62 -0
- package/src/core/{EntityView.tsx → EntityEditView.tsx} +27 -45
- package/src/core/EntitySidePanel.tsx +3 -3
- package/src/core/FireCMS.tsx +54 -43
- package/src/core/NavigationRoutes.tsx +11 -4
- package/src/core/Scaffold.tsx +80 -66
- package/src/core/field_configs.tsx +2 -3
- package/src/core/index.tsx +3 -4
- package/src/form/EntityForm.tsx +42 -27
- package/src/form/PropertyFieldBinding.tsx +0 -2
- package/src/form/components/StorageItemPreview.tsx +7 -5
- package/src/form/components/StorageUploadProgress.tsx +9 -8
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +10 -12
- package/src/form/field_bindings/BlockFieldBinding.tsx +2 -2
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -1
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -19
- package/src/form/field_bindings/MapFieldBinding.tsx +15 -15
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +2 -2
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +3 -3
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +16 -13
- package/src/form/field_bindings/SelectFieldBinding.tsx +3 -3
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +18 -9
- package/src/form/field_bindings/TextFieldBinding.tsx +7 -5
- package/src/form/validation.ts +3 -4
- package/src/hooks/data/delete.ts +3 -3
- package/src/hooks/data/save.ts +4 -2
- package/src/hooks/data/useCollectionFetch.tsx +1 -1
- package/src/hooks/data/useDataSource.tsx +8 -3
- package/src/hooks/data/useEntityFetch.tsx +4 -4
- package/src/hooks/index.tsx +3 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +200 -83
- package/src/hooks/useProjectLog.tsx +17 -7
- package/src/hooks/useReferenceDialog.tsx +2 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/internal/useBuildDataSource.ts +54 -47
- package/src/internal/useBuildSideEntityController.tsx +88 -21
- package/src/preview/PropertyPreview.tsx +5 -15
- package/src/preview/PropertyPreviewProps.tsx +1 -11
- package/src/preview/components/BooleanPreview.tsx +19 -4
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ReferencePreview.tsx +72 -165
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +2 -1
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +2 -3
- package/src/preview/property_previews/MapPropertyPreview.tsx +5 -5
- package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +50 -1
- package/src/types/collections.ts +37 -6
- package/src/types/datasource.ts +24 -17
- package/src/types/entities.ts +9 -1
- package/src/types/entity_actions.tsx +17 -0
- package/src/types/entity_callbacks.ts +2 -2
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/firecms.tsx +0 -1
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +17 -17
- package/src/types/permissions.ts +6 -1
- package/src/types/plugins.tsx +26 -28
- package/src/types/properties.ts +18 -6
- package/src/types/property_config.tsx +2 -2
- package/src/types/roles.ts +41 -0
- package/src/types/side_entity_controller.tsx +1 -0
- package/src/types/storage.ts +12 -3
- package/src/types/user.ts +7 -0
- package/src/util/collections.ts +22 -0
- package/src/util/entities.ts +1 -1
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +2 -2
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +11 -3
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +8 -21
- package/src/util/permissions.ts +11 -8
- package/src/util/references.ts +36 -5
- package/src/util/resolutions.ts +32 -31
- package/src/util/strings.ts +2 -2
- package/src/util/useTraceUpdate.tsx +2 -1
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/SideEntityView.d.ts +0 -7
- 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/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/core/SideEntityView.tsx +0 -38
- 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;
|
|
@@ -4,4 +4,4 @@ import { PropertyPreviewProps } from "./PropertyPreviewProps";
|
|
|
4
4
|
/**
|
|
5
5
|
* @group Preview components
|
|
6
6
|
*/
|
|
7
|
-
export declare const PropertyPreview: React.MemoExoticComponent<(<T extends CMSType>(props: PropertyPreviewProps<T
|
|
7
|
+
export declare const PropertyPreview: React.MemoExoticComponent<(<T extends CMSType>(props: PropertyPreviewProps<T>) => any)>;
|
|
@@ -6,7 +6,7 @@ export type PreviewSize = "medium" | "small" | "tiny";
|
|
|
6
6
|
/**
|
|
7
7
|
* @group Preview components
|
|
8
8
|
*/
|
|
9
|
-
export interface PropertyPreviewProps<T extends CMSType = any, CustomProps = any
|
|
9
|
+
export interface PropertyPreviewProps<T extends CMSType = any, CustomProps = any> {
|
|
10
10
|
/**
|
|
11
11
|
* Name of the property
|
|
12
12
|
*/
|
|
@@ -19,9 +19,6 @@ export interface PropertyPreviewProps<T extends CMSType = any, CustomProps = any
|
|
|
19
19
|
* Property this display is related to
|
|
20
20
|
*/
|
|
21
21
|
property: Property<T> | ResolvedProperty<T>;
|
|
22
|
-
/**
|
|
23
|
-
* Click handler
|
|
24
|
-
*/
|
|
25
22
|
/**
|
|
26
23
|
* Desired size of the preview, depending on the context.
|
|
27
24
|
*/
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { PreviewSize } from "../PropertyPreviewProps";
|
|
3
|
+
import { Property } from "../../types";
|
|
2
4
|
/**
|
|
3
5
|
* @group Preview components
|
|
4
6
|
*/
|
|
5
|
-
export declare function BooleanPreview({ value }: {
|
|
7
|
+
export declare function BooleanPreview({ value, size, property }: {
|
|
6
8
|
value: boolean;
|
|
9
|
+
size: PreviewSize;
|
|
10
|
+
property: Property;
|
|
7
11
|
}): React.ReactElement;
|
|
@@ -7,16 +7,11 @@ export type ReferencePreviewProps = {
|
|
|
7
7
|
size: PreviewSize;
|
|
8
8
|
previewProperties?: string[];
|
|
9
9
|
onClick?: (e: React.SyntheticEvent) => void;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
hover?: boolean;
|
|
11
|
+
includeEntityLink?: boolean;
|
|
12
|
+
includeId?: boolean;
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
15
|
* @group Preview components
|
|
15
16
|
*/
|
|
16
17
|
export declare const ReferencePreview: React.FunctionComponent<ReferencePreviewProps>;
|
|
17
|
-
export declare function ReferencePreviewContainer({ children, onHover, size, onClick }: {
|
|
18
|
-
children: React.ReactNode;
|
|
19
|
-
onHover?: boolean;
|
|
20
|
-
size: PreviewSize;
|
|
21
|
-
onClick?: (e: React.SyntheticEvent) => void;
|
|
22
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type CMSAnalyticsEvent = "entity_click" | "entity_click_from_reference" | "reference_selection_clear" | "reference_selection_toggle" | "reference_selected_single" | "reference_selection_new_entity" | "edit_entity_clicked" | "entity_edited" | "new_entity_click" | "new_entity_saved" | "copy_entity_click" | "entity_copied" | "single_delete_dialog_open" | "multiple_delete_dialog_open" | "single_entity_deleted" | "multiple_entities_deleted" | "drawer_navigate_to_home" | "drawer_navigate_to_collection" | "drawer_navigate_to_view" | "home_navigate_to_collection" | "home_favorite_navigate_to_collection" | "home_navigate_to_view" | "home_favorite_navigate_to_view" | "collection_inline_editing" | "unmapped_event";
|
|
1
|
+
export type CMSAnalyticsEvent = "entity_click" | "entity_click_from_reference" | "reference_selection_clear" | "reference_selection_toggle" | "reference_selected_single" | "reference_selection_new_entity" | "edit_entity_clicked" | "entity_edited" | "new_entity_click" | "new_entity_saved" | "copy_entity_click" | "entity_copied" | "single_delete_dialog_open" | "multiple_delete_dialog_open" | "single_entity_deleted" | "multiple_entities_deleted" | "drawer_navigate_to_home" | "drawer_navigate_to_collection" | "drawer_navigate_to_view" | "home_navigate_to_collection" | "home_favorite_navigate_to_collection" | "home_navigate_to_view" | "home_navigate_to_admin_view" | "home_favorite_navigate_to_view" | "collection_inline_editing" | "unmapped_event";
|
package/dist/types/auth.d.ts
CHANGED
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import { User } from "./user";
|
|
2
|
+
import { Role } from "./roles";
|
|
3
|
+
import { DataSourceDelegate } from "./datasource";
|
|
4
|
+
import { StorageSource } from "./storage";
|
|
2
5
|
/**
|
|
3
6
|
* Controller for retrieving the logged user or performing auth related operations.
|
|
4
7
|
* Note that if you are implementing your AuthController, you probably will want
|
|
5
8
|
* to do it as the result of a hook.
|
|
6
9
|
* @group Hooks and utilities
|
|
7
10
|
*/
|
|
8
|
-
export type AuthController<UserType extends User =
|
|
11
|
+
export type AuthController<UserType extends User = any, ExtraData extends any = any> = {
|
|
9
12
|
/**
|
|
10
13
|
* The user currently logged in
|
|
11
14
|
* The values can be: the user object, null if they skipped login
|
|
12
15
|
*/
|
|
13
16
|
user: UserType | null;
|
|
17
|
+
/**
|
|
18
|
+
* Roles related to the logged user
|
|
19
|
+
*/
|
|
20
|
+
roles?: Role[];
|
|
14
21
|
/**
|
|
15
22
|
* Initial loading flag. It is used not to display the login screen
|
|
16
23
|
* when the app first loads, and it has not been checked whether the user
|
|
17
24
|
* is logged in or not.
|
|
18
25
|
*/
|
|
19
26
|
initialLoading?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Loading flag. It is used to display a loading screen when the user is
|
|
29
|
+
* logging in or out.
|
|
30
|
+
*/
|
|
31
|
+
authLoading: boolean;
|
|
20
32
|
/**
|
|
21
33
|
* Sign out
|
|
22
34
|
*/
|
|
@@ -37,4 +49,28 @@ export type AuthController<UserType extends User = User> = {
|
|
|
37
49
|
* Has the user skipped the login process
|
|
38
50
|
*/
|
|
39
51
|
loginSkipped: boolean;
|
|
52
|
+
extra: ExtraData;
|
|
53
|
+
setExtra: (extra: ExtraData) => void;
|
|
40
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Implement this function to allow access to specific users.
|
|
57
|
+
* @group Hooks and utilities
|
|
58
|
+
*/
|
|
59
|
+
export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (props: {
|
|
60
|
+
/**
|
|
61
|
+
* Logged-in user or null
|
|
62
|
+
*/
|
|
63
|
+
user: UserType | null;
|
|
64
|
+
/**
|
|
65
|
+
* AuthController
|
|
66
|
+
*/
|
|
67
|
+
authController: Controller;
|
|
68
|
+
/**
|
|
69
|
+
* Connector to your database, e.g. your Firestore database
|
|
70
|
+
*/
|
|
71
|
+
dataSourceDelegate: DataSourceDelegate;
|
|
72
|
+
/**
|
|
73
|
+
* Used storage implementation
|
|
74
|
+
*/
|
|
75
|
+
storageSource: StorageSource;
|
|
76
|
+
}) => boolean | Promise<boolean>;
|
|
@@ -8,6 +8,7 @@ import { EnumValues, PropertiesOrBuilders } from "./properties";
|
|
|
8
8
|
import { FormContext } from "./fields";
|
|
9
9
|
import { EntityAction } from "./entity_actions";
|
|
10
10
|
import { ExportConfig } from "./export_import";
|
|
11
|
+
import { EntityOverrides } from "./entity_overrides";
|
|
11
12
|
/**
|
|
12
13
|
* This interface represents a view that includes a collection of entities.
|
|
13
14
|
* It can be in the root level of the configuration, defining the main
|
|
@@ -15,7 +16,7 @@ import { ExportConfig } from "./export_import";
|
|
|
15
16
|
*
|
|
16
17
|
* @group Models
|
|
17
18
|
*/
|
|
18
|
-
export interface EntityCollection<M extends Record<string, any> = any, UserType extends User =
|
|
19
|
+
export interface EntityCollection<M extends Record<string, any> = any, UserType extends User = any> {
|
|
19
20
|
/**
|
|
20
21
|
* You can set an alias that will be used internally instead of the `path`.
|
|
21
22
|
* The `alias` value will be used to determine the URL of the collection,
|
|
@@ -65,6 +66,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
65
66
|
* Set of properties that compose an entity
|
|
66
67
|
*/
|
|
67
68
|
properties: PropertiesOrBuilders<M>;
|
|
69
|
+
/**
|
|
70
|
+
* Title property of the entity. This is the property that will be used
|
|
71
|
+
* as the title in entity related views and references.
|
|
72
|
+
* If not specified, the first property simple text property will be used.
|
|
73
|
+
*/
|
|
74
|
+
titleProperty?: keyof M;
|
|
68
75
|
/**
|
|
69
76
|
* Can this collection be edited by the end user.
|
|
70
77
|
* Defaults to `true`.
|
|
@@ -87,8 +94,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
87
94
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
88
95
|
* - If you are using a collection group, you will also have an
|
|
89
96
|
* additional `collectionGroupParent` column.
|
|
97
|
+
* You can use this prop to hide some properties from the table view.
|
|
98
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
99
|
+
* `hidden` in the property definition,will be ignored.
|
|
100
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
90
101
|
*/
|
|
91
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
102
|
+
propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
|
|
92
103
|
/**
|
|
93
104
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
94
105
|
* collection are loaded.
|
|
@@ -121,7 +132,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
121
132
|
* is being created, updated or deleted.
|
|
122
133
|
* Useful for adding your own logic or blocking the execution of the operation.
|
|
123
134
|
*/
|
|
124
|
-
callbacks?: EntityCallbacks<M>;
|
|
135
|
+
callbacks?: EntityCallbacks<M, UserType>;
|
|
125
136
|
/**
|
|
126
137
|
* Builder for rendering additional components such as buttons in the
|
|
127
138
|
* collection toolbar
|
|
@@ -241,6 +252,19 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
241
252
|
*
|
|
242
253
|
*/
|
|
243
254
|
exportable?: boolean | ExportConfig<UserType>;
|
|
255
|
+
/**
|
|
256
|
+
* User id of the owner of this collection. This is used only by plugins, or if you
|
|
257
|
+
* are writing custom code
|
|
258
|
+
*/
|
|
259
|
+
ownerId?: string;
|
|
260
|
+
/**
|
|
261
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
262
|
+
*/
|
|
263
|
+
overrides?: EntityOverrides;
|
|
264
|
+
/**
|
|
265
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
266
|
+
*/
|
|
267
|
+
sideDialogWidth?: number | string;
|
|
244
268
|
}
|
|
245
269
|
/**
|
|
246
270
|
* Parameter passed to the `Actions` prop in the collection configuration.
|
|
@@ -300,7 +324,7 @@ export type SelectionController<M extends Record<string, any> = any> = {
|
|
|
300
324
|
};
|
|
301
325
|
/**
|
|
302
326
|
* Filter conditions in a `Query.where()` clause are specified using the
|
|
303
|
-
* strings
|
|
327
|
+
* strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
|
|
304
328
|
* @group Models
|
|
305
329
|
*/
|
|
306
330
|
export type WhereFilterOp = "<" | "<=" | "==" | "!=" | ">=" | ">" | "array-contains" | "in" | "not-in" | "array-contains-any";
|
|
@@ -369,7 +393,7 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any, Us
|
|
|
369
393
|
*/
|
|
370
394
|
value?: (props: {
|
|
371
395
|
entity: Entity<M>;
|
|
372
|
-
context: FireCMSContext
|
|
396
|
+
context: FireCMSContext<any>;
|
|
373
397
|
}) => string | number | Promise<string | number> | undefined;
|
|
374
398
|
}
|
|
375
399
|
/**
|
|
@@ -432,7 +456,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
432
456
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
433
457
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
434
458
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
435
|
-
setSortBy?: (sortBy
|
|
459
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
436
460
|
searchString?: string;
|
|
437
461
|
setSearchString?: (searchString?: string) => void;
|
|
438
462
|
clearFilter?: () => void;
|
|
@@ -1,13 +1,14 @@
|
|
|
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
|
*/
|
|
7
8
|
export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
8
9
|
path: string;
|
|
9
10
|
entityId: string;
|
|
10
|
-
collection?: EntityCollection<M>;
|
|
11
|
+
collection?: EntityCollection<M, any>;
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
14
|
* @group Datasource
|
|
@@ -145,6 +146,17 @@ export interface DataSource {
|
|
|
145
146
|
* @param props
|
|
146
147
|
*/
|
|
147
148
|
isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Called when the user clicks on the search bar in a collection view.
|
|
151
|
+
* Useful for initializing a text search index.
|
|
152
|
+
* @param props
|
|
153
|
+
*/
|
|
154
|
+
initTextSearch?: (props: {
|
|
155
|
+
context: FireCMSContext;
|
|
156
|
+
path: string;
|
|
157
|
+
collection: EntityCollection;
|
|
158
|
+
parentCollectionIds?: string[];
|
|
159
|
+
}) => Promise<boolean>;
|
|
148
160
|
}
|
|
149
161
|
export type FilterCombinationValidProps = {
|
|
150
162
|
path: string;
|
|
@@ -241,22 +253,17 @@ export interface DataSourceDelegate {
|
|
|
241
253
|
* @param props
|
|
242
254
|
*/
|
|
243
255
|
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">): boolean;
|
|
244
|
-
/**
|
|
245
|
-
* Convert a FireCMS reference to a reference that can be used by the datasource
|
|
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;
|
|
254
256
|
/**
|
|
255
257
|
* Get the object to generate the current time in the datasource
|
|
256
258
|
*/
|
|
257
259
|
currentTime(): any;
|
|
258
|
-
buildDate: (date: Date) => any;
|
|
259
|
-
buildDeleteFieldValue: () => any;
|
|
260
260
|
delegateToCMSModel: (data: any) => any;
|
|
261
|
+
cmsToDelegateModel: (data: any) => any;
|
|
261
262
|
setDateToMidnight: (input?: any) => any;
|
|
263
|
+
initTextSearch?: (props: {
|
|
264
|
+
context: FireCMSContext;
|
|
265
|
+
path: string;
|
|
266
|
+
collection: EntityCollection;
|
|
267
|
+
parentCollectionIds?: string[];
|
|
268
|
+
}) => Promise<boolean>;
|
|
262
269
|
}
|
package/dist/types/entities.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type EntityValues<M extends object> = M;
|
|
|
31
31
|
/**
|
|
32
32
|
* Class used to create a reference to an entity in a different path
|
|
33
33
|
*/
|
|
34
|
-
export declare class EntityReference
|
|
34
|
+
export declare class EntityReference {
|
|
35
35
|
/**
|
|
36
36
|
* ID of the entity
|
|
37
37
|
*/
|
|
@@ -56,3 +56,7 @@ export declare class GeoPoint {
|
|
|
56
56
|
readonly longitude: number;
|
|
57
57
|
constructor(latitude: number, longitude: number);
|
|
58
58
|
}
|
|
59
|
+
export declare class Vector {
|
|
60
|
+
readonly value: number[];
|
|
61
|
+
constructor(value: number[]);
|
|
62
|
+
}
|
|
@@ -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.
|
|
@@ -63,7 +63,7 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
|
|
|
63
63
|
/**
|
|
64
64
|
* Collection of the entity
|
|
65
65
|
*/
|
|
66
|
-
collection: EntityCollection<M>;
|
|
66
|
+
collection: EntityCollection<M, UserType>;
|
|
67
67
|
/**
|
|
68
68
|
* Full path of the CMS where this collection is being fetched.
|
|
69
69
|
* Might contain unresolved aliases.
|
|
@@ -155,7 +155,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
|
|
|
155
155
|
/**
|
|
156
156
|
* Context of the app status
|
|
157
157
|
*/
|
|
158
|
-
context: FireCMSContext
|
|
158
|
+
context: FireCMSContext<UserType>;
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
161
161
|
* Parameters passed to hooks when an entity is deleted
|
package/dist/types/index.d.ts
CHANGED
|
@@ -17,11 +17,12 @@ export * from "./side_entity_controller";
|
|
|
17
17
|
export * from "./side_dialogs_controller";
|
|
18
18
|
export * from "./firecms_context";
|
|
19
19
|
export * from "./entity_callbacks";
|
|
20
|
+
export * from "./entity_overrides";
|
|
20
21
|
export * from "./local_config_persistence";
|
|
21
22
|
export * from "./plugins";
|
|
22
23
|
export * from "./analytics";
|
|
23
24
|
export * from "./firecms";
|
|
24
|
-
export * from "./
|
|
25
|
+
export * from "./roles";
|
|
25
26
|
export * from "./export_import";
|
|
26
27
|
export * from "./modify_collections";
|
|
27
28
|
export * from "./analytics_controller";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { EntityCollection } from "./collections";
|
|
2
3
|
import { EntityReference } from "./entities";
|
|
3
4
|
/**
|
|
@@ -5,7 +6,7 @@ import { EntityReference } from "./entities";
|
|
|
5
6
|
* attributes.
|
|
6
7
|
* @group Models
|
|
7
8
|
*/
|
|
8
|
-
export type NavigationController = {
|
|
9
|
+
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
9
10
|
/**
|
|
10
11
|
* List of the mapped collections in the CMS.
|
|
11
12
|
* Each entry relates to a collection in the root database.
|
|
@@ -18,6 +19,11 @@ export type NavigationController = {
|
|
|
18
19
|
* navigation
|
|
19
20
|
*/
|
|
20
21
|
views?: CMSView[];
|
|
22
|
+
/**
|
|
23
|
+
* Custom additional views created by the developer, added to the admin
|
|
24
|
+
* navigation
|
|
25
|
+
*/
|
|
26
|
+
adminViews?: CMSView[];
|
|
21
27
|
/**
|
|
22
28
|
* Configuration for the views that should be displayed at the top
|
|
23
29
|
* level of the navigation (e.g. in the home page or the navigation
|
|
@@ -41,15 +47,15 @@ export type NavigationController = {
|
|
|
41
47
|
* Get the collection configuration for a given path.
|
|
42
48
|
* The collection is resolved from the given path or alias.
|
|
43
49
|
*/
|
|
44
|
-
getCollection:
|
|
50
|
+
getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
|
|
45
51
|
/**
|
|
46
|
-
* Get the collection configuration from its parent
|
|
52
|
+
* Get the collection configuration from its parent ids.
|
|
47
53
|
*/
|
|
48
|
-
getCollectionFromIds:
|
|
54
|
+
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
49
55
|
/**
|
|
50
56
|
* Get the collection configuration from its parent path segments.
|
|
51
57
|
*/
|
|
52
|
-
getCollectionFromPaths:
|
|
58
|
+
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
53
59
|
/**
|
|
54
60
|
* Default path under the navigation routes of the CMS will be created
|
|
55
61
|
*/
|
|
@@ -95,12 +101,6 @@ export type NavigationController = {
|
|
|
95
101
|
* @param pathWithAliases
|
|
96
102
|
*/
|
|
97
103
|
resolveAliasesFrom: (pathWithAliases: string) => string;
|
|
98
|
-
/**
|
|
99
|
-
* Location used as the base for routes.
|
|
100
|
-
* This is the location that will be used underneath, when the url changes while
|
|
101
|
-
* opening a side dialog
|
|
102
|
-
*/
|
|
103
|
-
baseLocation: string;
|
|
104
104
|
/**
|
|
105
105
|
* Call this method to recalculate the navigation
|
|
106
106
|
*/
|
|
@@ -159,6 +159,7 @@ export interface CMSView {
|
|
|
159
159
|
/**
|
|
160
160
|
* Optional field used to group top level navigation entries under a
|
|
161
161
|
* navigation view.
|
|
162
|
+
* This prop is ignored for admin views.
|
|
162
163
|
*/
|
|
163
164
|
group?: string;
|
|
164
165
|
}
|
|
@@ -166,11 +167,11 @@ export interface TopNavigationEntry {
|
|
|
166
167
|
url: string;
|
|
167
168
|
name: string;
|
|
168
169
|
path: string;
|
|
169
|
-
type: "collection" | "view";
|
|
170
|
+
type: "collection" | "view" | "admin";
|
|
170
171
|
collection?: EntityCollection;
|
|
171
|
-
view
|
|
172
|
+
view?: CMSView;
|
|
172
173
|
description?: string;
|
|
173
|
-
group
|
|
174
|
+
group: string;
|
|
174
175
|
}
|
|
175
176
|
export type TopNavigationResult = {
|
|
176
177
|
navigationEntries: TopNavigationEntry[];
|
|
@@ -38,6 +38,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
38
38
|
* in a collection, the entity will be null.
|
|
39
39
|
*/
|
|
40
40
|
entity: Entity<M> | null;
|
|
41
|
+
/**
|
|
42
|
+
* Path of the collection e.g. 'products/12345/locales'
|
|
43
|
+
*/
|
|
44
|
+
path: string;
|
|
41
45
|
/**
|
|
42
46
|
* Path segments of the collection e.g. ['products', 'locales']
|
|
43
47
|
*/
|
|
@@ -60,4 +64,4 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
|
|
|
60
64
|
* based on the logged user or collection.
|
|
61
65
|
* @group Models
|
|
62
66
|
*/
|
|
63
|
-
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, UserType, M>) => Permissions);
|
|
67
|
+
export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);
|
package/dist/types/plugins.d.ts
CHANGED
|
@@ -11,33 +11,16 @@ import { ResolvedProperty } from "./resolved_entities";
|
|
|
11
11
|
* NOTE: This is a work in progress and the API is not stable yet.
|
|
12
12
|
* @group Core
|
|
13
13
|
*/
|
|
14
|
-
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
|
|
14
|
+
export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* Key of the plugin. This is used to identify the plugin in the CMS.
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
key: string;
|
|
19
19
|
/**
|
|
20
20
|
* If this flag is set to true, no content will be shown in the CMS
|
|
21
21
|
* until the plugin is fully loaded.
|
|
22
22
|
*/
|
|
23
23
|
loading?: boolean;
|
|
24
|
-
collections?: {
|
|
25
|
-
/**
|
|
26
|
-
* Use this component to add custom actions to the entity collections
|
|
27
|
-
* toolbar.
|
|
28
|
-
*/
|
|
29
|
-
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
30
|
-
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
31
|
-
};
|
|
32
|
-
form?: {
|
|
33
|
-
provider?: {
|
|
34
|
-
Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
|
|
35
|
-
props?: FORM_PROPS;
|
|
36
|
-
};
|
|
37
|
-
Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
38
|
-
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
39
|
-
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
40
|
-
};
|
|
41
24
|
/**
|
|
42
25
|
* You can use this prop to add higher order components to the CMS.
|
|
43
26
|
* The components will be added to the root of the CMS, so any component
|
|
@@ -89,6 +72,14 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
89
72
|
};
|
|
90
73
|
};
|
|
91
74
|
collectionView?: {
|
|
75
|
+
/**
|
|
76
|
+
* Use this component to add custom actions to the entity collections
|
|
77
|
+
* toolbar.
|
|
78
|
+
*/
|
|
79
|
+
CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
|
|
80
|
+
collectionActionsProps?: COL_ACTIONS_PROPS;
|
|
81
|
+
CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
|
|
82
|
+
collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
|
|
92
83
|
showTextSearchBar?: (props: {
|
|
93
84
|
context: FireCMSContext;
|
|
94
85
|
path: string;
|
|
@@ -123,6 +114,15 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
|
|
|
123
114
|
collection: EC;
|
|
124
115
|
}>;
|
|
125
116
|
};
|
|
117
|
+
form?: {
|
|
118
|
+
provider?: {
|
|
119
|
+
Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
|
|
120
|
+
props?: FORM_PROPS;
|
|
121
|
+
};
|
|
122
|
+
Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
|
|
123
|
+
fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
|
|
124
|
+
fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
|
|
125
|
+
};
|
|
126
126
|
};
|
|
127
127
|
/**
|
|
128
128
|
* Props passed to the {@link FireCMSPlugin.homePage.CollectionActions} method.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldProps } from "./fields";
|
|
3
3
|
import { PropertyPreviewProps } from "../preview";
|
|
4
|
-
import { EntityReference, EntityValues, GeoPoint } from "./entities";
|
|
4
|
+
import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
|
|
5
5
|
import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
|
|
6
6
|
import { FilterValues } from "./collections";
|
|
7
7
|
import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
|
|
8
8
|
/**
|
|
9
9
|
* @group Entity properties
|
|
10
10
|
*/
|
|
11
|
-
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends EntityReference ? "reference" : T extends Array<CMSType> ? "array" : T extends Record<string, any> ? "map" : never;
|
|
11
|
+
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<CMSType> ? "array" : T extends Record<string, any> ? "map" : never;
|
|
12
12
|
/**
|
|
13
13
|
* @group Entity properties
|
|
14
14
|
*/
|
|
@@ -474,6 +474,14 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
|
|
|
474
474
|
* specified values are considered.
|
|
475
475
|
*/
|
|
476
476
|
previewProperties?: string[];
|
|
477
|
+
/**
|
|
478
|
+
* Should the reference include the ID of the entity. Defaults to `true`
|
|
479
|
+
*/
|
|
480
|
+
includeId?: boolean;
|
|
481
|
+
/**
|
|
482
|
+
* Should the reference include a link to the entity (open the entity details). Defaults to `true`
|
|
483
|
+
*/
|
|
484
|
+
includeEntityLink?: boolean;
|
|
477
485
|
}
|
|
478
486
|
/**
|
|
479
487
|
* Rules to validate any property. Some properties have specific rules
|
|
@@ -552,7 +560,7 @@ export interface ArrayPropertyValidationSchema extends PropertyValidationSchema
|
|
|
552
560
|
* Additional configuration related to Storage related fields
|
|
553
561
|
* @group Entity properties
|
|
554
562
|
*/
|
|
555
|
-
export
|
|
563
|
+
export type StorageConfig = {
|
|
556
564
|
/**
|
|
557
565
|
* File MIME types that can be uploaded to this reference. Don't specify for
|
|
558
566
|
* all.
|
|
@@ -620,7 +628,7 @@ export interface StorageConfig {
|
|
|
620
628
|
* after it has been resolved.
|
|
621
629
|
*/
|
|
622
630
|
postProcess?: (pathOrUrl: string) => Promise<string>;
|
|
623
|
-
}
|
|
631
|
+
};
|
|
624
632
|
/**
|
|
625
633
|
* @group Entity properties
|
|
626
634
|
*/
|
|
@@ -9,7 +9,7 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
9
9
|
/**
|
|
10
10
|
* Key used to identify this property config.
|
|
11
11
|
*/
|
|
12
|
-
key: string;
|
|
12
|
+
key: PropertyConfigId | string;
|
|
13
13
|
/**
|
|
14
14
|
* Name of this field type.
|
|
15
15
|
* This is not the name of the property.
|
|
@@ -39,4 +39,4 @@ export type PropertyConfig<T extends CMSType = any> = {
|
|
|
39
39
|
*/
|
|
40
40
|
description?: string;
|
|
41
41
|
};
|
|
42
|
-
export type
|
|
42
|
+
export type PropertyConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
|