@firecms/core 3.0.0-canary.11 → 3.0.0-canary.111
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 +1 -1
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +17 -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/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- 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 +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 +2 -2
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityPreview.d.ts +5 -4
- 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/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 +3 -1
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +9 -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 -0
- 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 +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +2 -4
- 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 +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +15632 -12442
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +19871 -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 +2 -1
- 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 +39 -5
- package/dist/types/datasource.d.ts +45 -31
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/fields.d.ts +45 -39
- 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 +32 -19
- package/dist/types/storage.d.ts +11 -3
- package/dist/util/entities.d.ts +1 -1
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +2 -2
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/resolutions.d.ts +14 -13
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +1 -1
- package/package.json +128 -119
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +25 -0
- package/src/app/Scaffold.tsx +245 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +9 -7
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- 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 +41 -35
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +22 -12
- 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 +17 -13
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +7 -10
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +75 -51
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityPreview.tsx +21 -15
- package/src/components/EntityView.tsx +5 -5
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +24 -15
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +2 -5
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +11 -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 +35 -15
- package/src/components/VirtualTable/VirtualTable.tsx +70 -37
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -1
- 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 +1 -1
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +2 -2
- 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 +11 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +3 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +52 -37
- package/src/core/DefaultDrawer.tsx +177 -0
- package/src/core/DrawerNavigationItem.tsx +64 -0
- package/src/core/EntityEditView.tsx +702 -137
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +39 -44
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +4 -0
- package/src/core/field_configs.tsx +4 -5
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +53 -21
- 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 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +15 -11
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +26 -21
- package/src/form/field_bindings/BlockFieldBinding.tsx +13 -12
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +52 -46
- package/src/form/field_bindings/MapFieldBinding.tsx +15 -15
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +138 -0
- package/src/form/field_bindings/MultiSelectBinding.tsx +9 -5
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +37 -27
- package/src/form/field_bindings/RepeatFieldBinding.tsx +20 -16
- package/src/form/field_bindings/SelectFieldBinding.tsx +47 -41
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +31 -52
- package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
- package/src/form/field_bindings/TextFieldBinding.tsx +26 -22
- package/src/form/index.tsx +6 -6
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/save.ts +6 -1
- package/src/hooks/data/useDataSource.tsx +1 -1
- 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 +94 -32
- package/src/hooks/useProjectLog.tsx +19 -8
- 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 +84 -62
- package/src/internal/useBuildSideEntityController.tsx +90 -21
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +10 -17
- 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 +24 -34
- package/src/preview/components/ReferencePreview.tsx +23 -23
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +3 -3
- package/src/types/collections.ts +48 -7
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +53 -39
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +16 -3
- package/src/types/fields.tsx +49 -43
- 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 +37 -20
- package/src/types/storage.ts +12 -3
- package/src/util/entities.ts +5 -4
- 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/index.ts +1 -0
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +1 -0
- package/src/util/plurals.ts +0 -2
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +44 -39
- package/src/util/storage.ts +76 -22
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +22 -4
- 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/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/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/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
package/src/types/collections.ts
CHANGED
|
@@ -51,6 +51,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
51
51
|
*/
|
|
52
52
|
path: string;
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Optional database id of this collection. If not specified, the default
|
|
56
|
+
* database id will be used.
|
|
57
|
+
*/
|
|
58
|
+
databaseId?: string;
|
|
59
|
+
|
|
54
60
|
/**
|
|
55
61
|
* If this collection is a top level navigation entry, you can set this
|
|
56
62
|
* property to `true` to indicate that this collection is a collection group.
|
|
@@ -61,7 +67,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
61
67
|
* Icon key to use in this collection.
|
|
62
68
|
* You can use any of the icons in the Material specs:
|
|
63
69
|
* https://fonts.google.com/icons
|
|
64
|
-
* e.g. 'account_tree' or 'person'
|
|
70
|
+
* e.g. 'account_tree' or 'person'.
|
|
71
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
65
72
|
*/
|
|
66
73
|
icon?: string;
|
|
67
74
|
|
|
@@ -82,7 +89,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
82
89
|
* as the title in entity related views and references.
|
|
83
90
|
* If not specified, the first property simple text property will be used.
|
|
84
91
|
*/
|
|
85
|
-
titleProperty?: keyof M
|
|
92
|
+
titleProperty?: keyof M;
|
|
86
93
|
|
|
87
94
|
/**
|
|
88
95
|
* Can this collection be edited by the end user.
|
|
@@ -107,8 +114,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
107
114
|
* `subcollection:`. e.g. `subcollection:orders`.
|
|
108
115
|
* - If you are using a collection group, you will also have an
|
|
109
116
|
* additional `collectionGroupParent` column.
|
|
117
|
+
* You can use this prop to hide some properties from the table view.
|
|
118
|
+
* Note that if you set this prop, other ways to hide fields, like
|
|
119
|
+
* `hidden` in the property definition,will be ignored.
|
|
120
|
+
* `propertiesOrder` has precedence over `hidden`.
|
|
110
121
|
*/
|
|
111
|
-
propertiesOrder?: Extract<keyof M, string>[];
|
|
122
|
+
propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
|
|
112
123
|
|
|
113
124
|
/**
|
|
114
125
|
* If enabled, content is loaded in batches. If `false` all entities in the
|
|
@@ -290,7 +301,21 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
|
|
|
290
301
|
* are writing custom code
|
|
291
302
|
*/
|
|
292
303
|
ownerId?: string;
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Overrides for the entity view, like the data source or the storage source.
|
|
307
|
+
*/
|
|
293
308
|
overrides?: EntityOverrides;
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Width of the side dialog (in pixels) when opening an entity in this collection.
|
|
312
|
+
*/
|
|
313
|
+
sideDialogWidth?: number | string;
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Default preview properties displayed when this collection is referenced to.
|
|
317
|
+
*/
|
|
318
|
+
previewProperties?: string[];
|
|
294
319
|
}
|
|
295
320
|
|
|
296
321
|
/**
|
|
@@ -349,14 +374,13 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
|
|
|
349
374
|
/**
|
|
350
375
|
* Use this controller to retrieve the selected entities or modify them in
|
|
351
376
|
* an {@link EntityCollection}
|
|
352
|
-
* If you want to pass a `SelectionController` to
|
|
353
377
|
* @group Models
|
|
354
378
|
*/
|
|
355
379
|
export type SelectionController<M extends Record<string, any> = any> = {
|
|
356
380
|
selectedEntities: Entity<M>[];
|
|
357
381
|
setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
|
|
358
382
|
isEntitySelected: (entity: Entity<M>) => boolean;
|
|
359
|
-
toggleEntitySelection: (entity: Entity<M
|
|
383
|
+
toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
|
|
360
384
|
}
|
|
361
385
|
|
|
362
386
|
/**
|
|
@@ -451,7 +475,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
451
475
|
* view.
|
|
452
476
|
* @param entity
|
|
453
477
|
*/
|
|
454
|
-
value?: (props: {
|
|
478
|
+
value?: (props: {
|
|
479
|
+
entity: Entity<M>,
|
|
480
|
+
context: FireCMSContext<any>
|
|
481
|
+
}) => string | number | Promise<string | number> | undefined;
|
|
455
482
|
}
|
|
456
483
|
|
|
457
484
|
/**
|
|
@@ -461,8 +488,22 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
|
|
|
461
488
|
*/
|
|
462
489
|
export type EntityCustomView<M extends Record<string, any> = any> =
|
|
463
490
|
{
|
|
491
|
+
/**
|
|
492
|
+
* Key of this custom view.
|
|
493
|
+
*/
|
|
464
494
|
key: string,
|
|
495
|
+
/**
|
|
496
|
+
* Name of this custom view.
|
|
497
|
+
*/
|
|
465
498
|
name: string,
|
|
499
|
+
/**
|
|
500
|
+
* If set to true, the actions of the entity will be included in the
|
|
501
|
+
* bottom of the panel (save buttons, delete buttons, etc.)
|
|
502
|
+
*/
|
|
503
|
+
includeActions?: boolean;
|
|
504
|
+
/**
|
|
505
|
+
* Builder for rendering the custom view
|
|
506
|
+
*/
|
|
466
507
|
Builder?: React.ComponentType<EntityCustomViewParams<M>>;
|
|
467
508
|
}
|
|
468
509
|
|
|
@@ -523,7 +564,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
|
|
|
523
564
|
filterValues?: FilterValues<Extract<keyof M, string>>;
|
|
524
565
|
setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
|
|
525
566
|
sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
|
|
526
|
-
setSortBy?: (sortBy
|
|
567
|
+
setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
|
|
527
568
|
searchString?: string;
|
|
528
569
|
setSearchString?: (searchString?: string) => void;
|
|
529
570
|
clearFilter?: () => void;
|
package/src/types/datasource.ts
CHANGED
|
@@ -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
|
/**
|
|
6
7
|
* @group Datasource
|
|
@@ -17,6 +18,7 @@ export interface FetchEntityProps<M extends Record<string, any> = any> {
|
|
|
17
18
|
export type ListenEntityProps<M extends Record<string, any> = any> =
|
|
18
19
|
FetchEntityProps<M>
|
|
19
20
|
& {
|
|
21
|
+
databaseId?: string;
|
|
20
22
|
onUpdate: (entity: Entity<M>) => void,
|
|
21
23
|
onError?: (error: Error) => void,
|
|
22
24
|
}
|
|
@@ -65,9 +67,8 @@ export interface DeleteEntityProps<M extends Record<string, any> = any> {
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
|
|
70
|
+
* Component in charge of communicating with the data source.
|
|
71
|
+
* Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
|
|
71
72
|
* @group Datasource
|
|
72
73
|
*/
|
|
73
74
|
export interface DataSource {
|
|
@@ -198,7 +199,8 @@ export interface DataSource {
|
|
|
198
199
|
path: string,
|
|
199
200
|
name: string,
|
|
200
201
|
value: any,
|
|
201
|
-
entityId?: string
|
|
202
|
+
entityId?: string,
|
|
203
|
+
databaseId?: string
|
|
202
204
|
): Promise<boolean>;
|
|
203
205
|
|
|
204
206
|
/**
|
|
@@ -216,6 +218,19 @@ export interface DataSource {
|
|
|
216
218
|
* @param props
|
|
217
219
|
*/
|
|
218
220
|
isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Called when the user clicks on the search bar in a collection view.
|
|
224
|
+
* Useful for initializing a text search index.
|
|
225
|
+
* @param props
|
|
226
|
+
*/
|
|
227
|
+
initTextSearch?: (props: {
|
|
228
|
+
context: FireCMSContext,
|
|
229
|
+
path: string,
|
|
230
|
+
collection: EntityCollection,
|
|
231
|
+
parentCollectionIds?: string[]
|
|
232
|
+
}) => Promise<boolean>;
|
|
233
|
+
|
|
219
234
|
}
|
|
220
235
|
|
|
221
236
|
export type FilterCombinationValidProps = {
|
|
@@ -225,21 +240,24 @@ export type FilterCombinationValidProps = {
|
|
|
225
240
|
sortBy?: [string, "asc" | "desc"];
|
|
226
241
|
};
|
|
227
242
|
|
|
228
|
-
export type SaveEntityDelegateProps<M extends Record<string, any> = any> =
|
|
243
|
+
export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
|
|
229
244
|
|
|
230
|
-
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
231
|
-
Omit<FetchCollectionProps<M>, "collection">
|
|
232
|
-
& {
|
|
233
|
-
isCollectionGroup?: boolean
|
|
234
|
-
};
|
|
245
|
+
export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
|
|
235
246
|
|
|
236
|
-
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
|
|
237
|
-
ListenCollectionProps<M>
|
|
238
|
-
& {
|
|
239
|
-
isCollectionGroup?: boolean;
|
|
240
|
-
};
|
|
247
|
+
export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
|
|
241
248
|
|
|
242
249
|
export interface DataSourceDelegate {
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Key that identifies this data source delegate
|
|
253
|
+
*/
|
|
254
|
+
key: string;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* If the data source has been initialised
|
|
258
|
+
*/
|
|
259
|
+
initialised?: boolean;
|
|
260
|
+
|
|
243
261
|
/**
|
|
244
262
|
* Fetch data from a collection
|
|
245
263
|
* @param path
|
|
@@ -297,7 +315,7 @@ export interface DataSourceDelegate {
|
|
|
297
315
|
fetchEntity<M extends Record<string, any> = any>({
|
|
298
316
|
path,
|
|
299
317
|
entityId,
|
|
300
|
-
}:
|
|
318
|
+
}: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
|
|
301
319
|
|
|
302
320
|
/**
|
|
303
321
|
* Get realtime updates on one entity.
|
|
@@ -313,13 +331,13 @@ export interface DataSourceDelegate {
|
|
|
313
331
|
entityId,
|
|
314
332
|
onUpdate,
|
|
315
333
|
onError
|
|
316
|
-
}:
|
|
334
|
+
}: ListenEntityProps<M>): () => void;
|
|
317
335
|
|
|
318
336
|
/**
|
|
319
337
|
* Save entity to the specified path
|
|
320
338
|
* @param path
|
|
321
|
-
* @param
|
|
322
|
-
* @param
|
|
339
|
+
* @param entityId
|
|
340
|
+
* @param values
|
|
323
341
|
* @param status
|
|
324
342
|
*/
|
|
325
343
|
saveEntity<M extends Record<string, any> = any>({
|
|
@@ -344,7 +362,7 @@ export interface DataSourceDelegate {
|
|
|
344
362
|
* @param entityId
|
|
345
363
|
* @return `true` if there are no other fields besides the given entity
|
|
346
364
|
*/
|
|
347
|
-
checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
|
|
365
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, databaseId?: string): Promise<boolean>;
|
|
348
366
|
|
|
349
367
|
/**
|
|
350
368
|
* Generate an id for a new entity
|
|
@@ -360,30 +378,26 @@ export interface DataSourceDelegate {
|
|
|
360
378
|
* Check if the given filter combination is valid
|
|
361
379
|
* @param props
|
|
362
380
|
*/
|
|
363
|
-
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
* Convert a FireCMS reference to a reference that can be used by the datasource
|
|
367
|
-
* @param reference
|
|
368
|
-
*/
|
|
369
|
-
buildReference: (reference: EntityReference) => any,
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Convert a FireCMS GeoPoint to a GeoPoint that can be used by the datasource
|
|
373
|
-
* @param geoPoint
|
|
374
|
-
*/
|
|
375
|
-
buildGeoPoint: (geoPoint: GeoPoint) => any,
|
|
381
|
+
isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
|
|
382
|
+
databaseId?: string
|
|
383
|
+
}): boolean;
|
|
376
384
|
|
|
377
385
|
/**
|
|
378
386
|
* Get the object to generate the current time in the datasource
|
|
379
387
|
*/
|
|
380
|
-
currentTime()
|
|
381
|
-
|
|
382
|
-
buildDate: (date: Date) => any;
|
|
383
|
-
|
|
384
|
-
buildDeleteFieldValue: () => any;
|
|
388
|
+
currentTime?: () => any;
|
|
385
389
|
|
|
386
390
|
delegateToCMSModel: (data: any) => any;
|
|
387
391
|
|
|
392
|
+
cmsToDelegateModel: (data: any) => any;
|
|
393
|
+
|
|
388
394
|
setDateToMidnight: (input?: any) => any;
|
|
395
|
+
|
|
396
|
+
initTextSearch?: (props: {
|
|
397
|
+
context: FireCMSContext,
|
|
398
|
+
path: string,
|
|
399
|
+
databaseId?: string,
|
|
400
|
+
collection: EntityCollection,
|
|
401
|
+
parentCollectionIds?: string[]
|
|
402
|
+
}) => Promise<boolean>;
|
|
389
403
|
}
|
package/src/types/entities.ts
CHANGED
|
@@ -25,6 +25,8 @@ export interface Entity<M extends object> {
|
|
|
25
25
|
* Current values
|
|
26
26
|
*/
|
|
27
27
|
values: EntityValues<M>;
|
|
28
|
+
|
|
29
|
+
databaseId?: string;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -37,7 +39,7 @@ export type EntityValues<M extends object> = M;
|
|
|
37
39
|
/**
|
|
38
40
|
* Class used to create a reference to an entity in a different path
|
|
39
41
|
*/
|
|
40
|
-
export class EntityReference
|
|
42
|
+
export class EntityReference {
|
|
41
43
|
/**
|
|
42
44
|
* ID of the entity
|
|
43
45
|
*/
|
|
@@ -78,3 +80,11 @@ export class GeoPoint {
|
|
|
78
80
|
this.longitude = longitude;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
83
|
+
|
|
84
|
+
export class Vector {
|
|
85
|
+
readonly value: number[];
|
|
86
|
+
|
|
87
|
+
constructor(value: number[]) {
|
|
88
|
+
this.value = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -4,11 +4,26 @@ 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
|
-
import { EntityOverrides } from "./entity_overrides";
|
|
8
7
|
|
|
8
|
+
/**
|
|
9
|
+
* An entity action is a custom action that can be performed on an entity.
|
|
10
|
+
* They are displayed in the entity view and in the collection view.
|
|
11
|
+
*/
|
|
9
12
|
export type EntityAction<M extends object = any, UserType extends User = User> = {
|
|
13
|
+
/**
|
|
14
|
+
* Title of the action
|
|
15
|
+
*/
|
|
10
16
|
name: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Icon of the action
|
|
20
|
+
*/
|
|
11
21
|
icon?: React.ReactElement;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Callback when the action is clicked
|
|
25
|
+
* @param props
|
|
26
|
+
*/
|
|
12
27
|
onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
|
|
13
28
|
|
|
14
29
|
/**
|
|
@@ -25,8 +40,6 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
|
|
|
25
40
|
|
|
26
41
|
}
|
|
27
42
|
|
|
28
|
-
|
|
29
|
-
|
|
30
43
|
export type EntityActionClickProps<M extends object, UserType extends User = User> = {
|
|
31
44
|
entity: Entity<M>;
|
|
32
45
|
context: FireCMSContext<UserType>;
|
package/src/types/fields.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EntityValues } from "./entities";
|
|
2
1
|
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
3
2
|
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
3
|
+
import { FormexController } from "@firecms/formex";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* When building a custom field you need to create a React component that takes
|
|
@@ -21,11 +21,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
21
21
|
*/
|
|
22
22
|
value: T;
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* Initial value of this field
|
|
26
|
-
*/
|
|
27
|
-
// initialValue: T | undefined;
|
|
28
|
-
|
|
29
24
|
/**
|
|
30
25
|
* Set value of field directly
|
|
31
26
|
*/
|
|
@@ -42,7 +37,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
42
37
|
/**
|
|
43
38
|
* Is the form currently submitting
|
|
44
39
|
*/
|
|
45
|
-
isSubmitting
|
|
40
|
+
isSubmitting?: boolean;
|
|
46
41
|
|
|
47
42
|
/**
|
|
48
43
|
* Should this field show the error indicator.
|
|
@@ -50,19 +45,19 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
50
45
|
* filled) but we don't want to show the error until the user has tried
|
|
51
46
|
* saving.
|
|
52
47
|
*/
|
|
53
|
-
showError
|
|
48
|
+
showError?: boolean;
|
|
54
49
|
|
|
55
50
|
/**
|
|
56
51
|
* Is there an error in this field. The error field has the same shape as
|
|
57
52
|
* the field, replacing values with a string containing the error.
|
|
58
53
|
* It takes the value `null` if there is no error
|
|
59
54
|
*/
|
|
60
|
-
error
|
|
55
|
+
error?: any | null;
|
|
61
56
|
|
|
62
57
|
/**
|
|
63
58
|
* Has this field been touched
|
|
64
59
|
*/
|
|
65
|
-
touched
|
|
60
|
+
touched?: boolean;
|
|
66
61
|
|
|
67
62
|
/**
|
|
68
63
|
* Property related to this field
|
|
@@ -72,33 +67,28 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
72
67
|
/**
|
|
73
68
|
* Should this field include a description
|
|
74
69
|
*/
|
|
75
|
-
includeDescription
|
|
70
|
+
includeDescription?: boolean;
|
|
76
71
|
|
|
77
72
|
/**
|
|
78
73
|
* Flag to indicate that the underlying value has been updated in the
|
|
79
74
|
* datasource
|
|
80
75
|
*/
|
|
81
|
-
underlyingValueHasChanged
|
|
76
|
+
underlyingValueHasChanged?: boolean;
|
|
82
77
|
|
|
83
78
|
/**
|
|
84
79
|
* Is this field part of an array
|
|
85
80
|
*/
|
|
86
|
-
partOfArray
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Is this field part of a block (oneOf array)
|
|
90
|
-
*/
|
|
91
|
-
partOfBlock: boolean;
|
|
81
|
+
partOfArray?: boolean;
|
|
92
82
|
|
|
93
83
|
/**
|
|
94
|
-
*
|
|
84
|
+
* Should this field render with the minimal amount of UI elements
|
|
95
85
|
*/
|
|
96
|
-
|
|
86
|
+
minimalistView?: boolean;
|
|
97
87
|
|
|
98
88
|
/**
|
|
99
89
|
* Should this field autofocus on mount
|
|
100
90
|
*/
|
|
101
|
-
autoFocus
|
|
91
|
+
autoFocus?: boolean;
|
|
102
92
|
|
|
103
93
|
/**
|
|
104
94
|
* Additional properties set by the developer
|
|
@@ -113,7 +103,12 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
113
103
|
/**
|
|
114
104
|
* Flag to indicate if this field should be disabled
|
|
115
105
|
*/
|
|
116
|
-
disabled
|
|
106
|
+
disabled?: boolean;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Size of the field
|
|
110
|
+
*/
|
|
111
|
+
size?: "smallest" | "small" | "medium";
|
|
117
112
|
|
|
118
113
|
}
|
|
119
114
|
|
|
@@ -124,37 +119,42 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
|
|
|
124
119
|
export interface FormContext<M extends Record<string, any> = any> {
|
|
125
120
|
|
|
126
121
|
/**
|
|
127
|
-
*
|
|
122
|
+
* Current values of the entity
|
|
128
123
|
*/
|
|
129
|
-
|
|
124
|
+
values: M;
|
|
130
125
|
|
|
131
126
|
/**
|
|
132
|
-
*
|
|
127
|
+
* Update the value of a field
|
|
128
|
+
* @param key
|
|
129
|
+
* @param value
|
|
130
|
+
* @param shouldValidate
|
|
133
131
|
*/
|
|
134
|
-
|
|
132
|
+
setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
|
|
135
133
|
|
|
136
134
|
/**
|
|
137
|
-
*
|
|
135
|
+
* Save the entity.
|
|
138
136
|
*/
|
|
139
|
-
|
|
137
|
+
save: (values: M) => void;
|
|
140
138
|
|
|
141
139
|
/**
|
|
142
|
-
*
|
|
140
|
+
* Collection of the entity being modified
|
|
143
141
|
*/
|
|
144
|
-
|
|
142
|
+
collection?: ResolvedEntityCollection<M>;
|
|
145
143
|
|
|
146
144
|
/**
|
|
147
|
-
*
|
|
148
|
-
* @param key
|
|
149
|
-
* @param value
|
|
150
|
-
* @param shouldValidate
|
|
145
|
+
* Entity id, it can be null if it's a new entity
|
|
151
146
|
*/
|
|
152
|
-
|
|
147
|
+
entityId: string;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Path this entity is located at
|
|
151
|
+
*/
|
|
152
|
+
path?: string;
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
|
-
*
|
|
155
|
+
* This is the underlying formex controller that powers the form
|
|
156
156
|
*/
|
|
157
|
-
|
|
157
|
+
formex: FormexController<M>;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
/**
|
|
@@ -192,11 +192,6 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
192
192
|
*/
|
|
193
193
|
underlyingValueHasChanged?: boolean;
|
|
194
194
|
|
|
195
|
-
/**
|
|
196
|
-
* Is this field being rendered in a table
|
|
197
|
-
*/
|
|
198
|
-
tableMode?: boolean;
|
|
199
|
-
|
|
200
195
|
/**
|
|
201
196
|
* Is this field part of an array
|
|
202
197
|
*/
|
|
@@ -205,7 +200,7 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
205
200
|
/**
|
|
206
201
|
* Is this field part of a block (oneOf array)
|
|
207
202
|
*/
|
|
208
|
-
|
|
203
|
+
minimalistView?: boolean;
|
|
209
204
|
|
|
210
205
|
/**
|
|
211
206
|
* Should the field take focus when rendered. When opening the popup view
|
|
@@ -217,4 +212,15 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
|
|
|
217
212
|
* Should this field be disabled
|
|
218
213
|
*/
|
|
219
214
|
disabled?: boolean;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Index of the field in the array.
|
|
218
|
+
* Only used when the field is part of an array.
|
|
219
|
+
*/
|
|
220
|
+
index?: number;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* The size of the field
|
|
224
|
+
*/
|
|
225
|
+
size?: "smallest" | "small" | "medium",
|
|
220
226
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -23,7 +23,6 @@ export * from "./plugins";
|
|
|
23
23
|
export * from "./analytics";
|
|
24
24
|
export * from "./firecms";
|
|
25
25
|
export * from "./roles";
|
|
26
|
-
export * from "./appcheck";
|
|
27
26
|
export * from "./export_import";
|
|
28
27
|
export * from "./modify_collections";
|
|
29
28
|
export * from "./analytics_controller";
|
package/src/types/navigation.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { EntityReference } from "./entities";
|
|
|
7
7
|
* attributes.
|
|
8
8
|
* @group Models
|
|
9
9
|
*/
|
|
10
|
-
export type NavigationController = {
|
|
10
|
+
export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* List of the mapped collections in the CMS.
|
|
@@ -56,18 +56,17 @@ export type NavigationController = {
|
|
|
56
56
|
* Get the collection configuration for a given path.
|
|
57
57
|
* The collection is resolved from the given path or alias.
|
|
58
58
|
*/
|
|
59
|
-
getCollection:
|
|
60
|
-
|
|
61
|
-
includeUserOverride?: boolean) => EC | undefined;
|
|
59
|
+
getCollection: (pathOrId: string,
|
|
60
|
+
includeUserOverride?: boolean) => EC | undefined;
|
|
62
61
|
/**
|
|
63
|
-
* Get the collection configuration from its parent
|
|
62
|
+
* Get the collection configuration from its parent ids.
|
|
64
63
|
*/
|
|
65
|
-
getCollectionFromIds:
|
|
64
|
+
getCollectionFromIds: (ids: string[]) => EC | undefined;
|
|
66
65
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the collection configuration from its parent path segments.
|
|
69
68
|
*/
|
|
70
|
-
getCollectionFromPaths:
|
|
69
|
+
getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
|
|
71
70
|
|
|
72
71
|
/**
|
|
73
72
|
* Default path under the navigation routes of the CMS will be created
|
|
@@ -174,6 +173,7 @@ export interface CMSView {
|
|
|
174
173
|
* You can use any of the icons in the Material specs:
|
|
175
174
|
* https://fonts.google.com/icons
|
|
176
175
|
* e.g. 'account_tree' or 'person'
|
|
176
|
+
* Find all the icons in https://firecms.co/docs/icons
|
|
177
177
|
*/
|
|
178
178
|
icon?: string;
|
|
179
179
|
|