@firecms/core 3.0.0-canary.144 → 3.0.0-canary.146

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.
Files changed (97) hide show
  1. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  2. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +2 -2
  3. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +1 -1
  4. package/dist/core/EntityEditView.d.ts +1 -1
  5. package/dist/core/FireCMS.d.ts +1 -1
  6. package/dist/hooks/data/delete.d.ts +4 -4
  7. package/dist/hooks/data/save.d.ts +3 -3
  8. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  9. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  10. package/dist/hooks/useAuthController.d.ts +1 -1
  11. package/dist/hooks/useBuildNavigationController.d.ts +3 -3
  12. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  13. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  14. package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
  15. package/dist/index.es.js +85 -78
  16. package/dist/index.es.js.map +1 -1
  17. package/dist/index.umd.js +85 -78
  18. package/dist/index.umd.js.map +1 -1
  19. package/dist/types/auth.d.ts +6 -10
  20. package/dist/types/collections.d.ts +12 -12
  21. package/dist/types/datasource.d.ts +0 -4
  22. package/dist/types/entity_actions.d.ts +4 -4
  23. package/dist/types/entity_callbacks.d.ts +16 -16
  24. package/dist/types/export_import.d.ts +4 -4
  25. package/dist/types/firecms.d.ts +2 -2
  26. package/dist/types/firecms_context.d.ts +1 -1
  27. package/dist/types/permissions.d.ts +4 -4
  28. package/dist/types/plugins.d.ts +8 -8
  29. package/dist/types/user.d.ts +1 -0
  30. package/dist/util/builders.d.ts +2 -2
  31. package/dist/util/icons.d.ts +3 -1
  32. package/dist/util/permissions.d.ts +4 -4
  33. package/package.json +5 -5
  34. package/src/app/Scaffold.tsx +2 -2
  35. package/src/components/ArrayContainer.tsx +1 -1
  36. package/src/components/CircularProgressCenter.tsx +1 -1
  37. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +1 -1
  38. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +5 -5
  39. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +2 -2
  40. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +7 -8
  41. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +2 -2
  42. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +1 -1
  43. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +4 -4
  44. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +3 -3
  45. package/src/components/EntityCollectionView/EntityCollectionView.tsx +3 -3
  46. package/src/components/EntityPreview.tsx +7 -5
  47. package/src/components/EntityView.tsx +4 -4
  48. package/src/components/HomePage/FavouritesView.tsx +1 -1
  49. package/src/components/HomePage/NavigationCard.tsx +1 -1
  50. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  51. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  52. package/src/components/PropertyConfigBadge.tsx +1 -1
  53. package/src/components/PropertyIdCopyTooltip.tsx +1 -1
  54. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +1 -1
  55. package/src/components/SelectableTable/SelectableTable.tsx +2 -2
  56. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -1
  57. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +1 -1
  58. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +1 -1
  59. package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
  60. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
  61. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  62. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +2 -2
  63. package/src/core/DefaultDrawer.tsx +2 -2
  64. package/src/core/DrawerNavigationItem.tsx +3 -3
  65. package/src/core/EntityEditView.tsx +4 -4
  66. package/src/core/FireCMS.tsx +1 -1
  67. package/src/core/SideDialogs.tsx +1 -1
  68. package/src/core/field_configs.tsx +1 -1
  69. package/src/form/components/StorageItemPreview.tsx +2 -2
  70. package/src/form/field_bindings/MapFieldBinding.tsx +1 -1
  71. package/src/form/field_bindings/ReferenceFieldBinding.tsx +3 -3
  72. package/src/hooks/data/delete.ts +4 -4
  73. package/src/hooks/data/save.ts +3 -3
  74. package/src/hooks/data/useCollectionFetch.tsx +2 -2
  75. package/src/hooks/data/useEntityFetch.tsx +5 -5
  76. package/src/hooks/useAuthController.tsx +1 -1
  77. package/src/hooks/useBuildNavigationController.tsx +4 -6
  78. package/src/hooks/useFireCMSContext.tsx +5 -5
  79. package/src/hooks/useResolvedNavigationFrom.tsx +5 -5
  80. package/src/hooks/useValidateAuthenticator.tsx +3 -3
  81. package/src/preview/components/EmptyValue.tsx +1 -1
  82. package/src/preview/components/ImagePreview.tsx +2 -2
  83. package/src/preview/components/UrlComponentPreview.tsx +1 -1
  84. package/src/types/auth.tsx +6 -12
  85. package/src/types/collections.ts +12 -12
  86. package/src/types/datasource.ts +0 -5
  87. package/src/types/entity_actions.tsx +4 -4
  88. package/src/types/entity_callbacks.ts +18 -18
  89. package/src/types/export_import.ts +4 -4
  90. package/src/types/firecms.tsx +2 -2
  91. package/src/types/firecms_context.tsx +1 -1
  92. package/src/types/permissions.ts +5 -5
  93. package/src/types/plugins.tsx +8 -8
  94. package/src/types/user.ts +2 -0
  95. package/src/util/builders.ts +6 -6
  96. package/src/util/icons.tsx +12 -8
  97. package/src/util/permissions.ts +8 -8
@@ -47,7 +47,7 @@ export type CMSViewsBuilder = (params: {
47
47
  /**
48
48
  * @group Models
49
49
  */
50
- export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
50
+ export type FireCMSProps<USER extends User, EC extends EntityCollection> = {
51
51
 
52
52
  /**
53
53
  * Use this function to return the components you want to render under
@@ -119,7 +119,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
119
119
  /**
120
120
  * Delegate for implementing your auth operations.
121
121
  */
122
- authController: AuthController<UserType>;
122
+ authController: AuthController<USER>;
123
123
 
124
124
  /**
125
125
  * Use this controller to access the configuration that is stored locally,
@@ -18,7 +18,7 @@ import { AnalyticsController } from "./analytics_controller";
18
18
  * @group Hooks and utilities
19
19
  * @see useFireCMSContext
20
20
  */
21
- export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
21
+ export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
22
22
 
23
23
  /**
24
24
  * Connector to your database, e.g. your Firestore database
@@ -32,7 +32,7 @@ export interface Permissions {
32
32
  * Props passed to a {@link PermissionsBuilder}
33
33
  * @group Models
34
34
  */
35
- export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> {
35
+ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
36
36
  /**
37
37
  * Entity being edited, might be null in some cases, when the operation
38
38
  * refers to the collection.
@@ -54,7 +54,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
54
54
  /**
55
55
  * Logged in user
56
56
  */
57
- user: UserType | null;
57
+ user: USER | null;
58
58
 
59
59
  /**
60
60
  * Collection these permissions apply to
@@ -64,7 +64,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
64
64
  /**
65
65
  * Auth controller
66
66
  */
67
- authController: AuthController<UserType>;
67
+ authController: AuthController<USER>;
68
68
  }
69
69
 
70
70
  /**
@@ -72,10 +72,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
72
72
  * based on the logged user or collection.
73
73
  * @group Models
74
74
  */
75
- export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> =
75
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> =
76
76
  (({
77
77
  pathSegments,
78
78
  user,
79
79
  collection,
80
80
  authController
81
- }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);
81
+ }: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
@@ -166,7 +166,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
166
166
  *
167
167
  * @group Models
168
168
  */
169
- export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
169
+ export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
170
170
  /**
171
171
  * Collection path of this entity. This is the full path, like
172
172
  * `users/1234/addresses`
@@ -181,19 +181,19 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
181
181
  /**
182
182
  * Context of the app status
183
183
  */
184
- context: FireCMSContext<UserType>;
184
+ context: FireCMSContext<USER>;
185
185
 
186
186
  extraProps?: EP;
187
187
 
188
188
  }
189
189
 
190
- export interface PluginFormActionProps<UserType extends User = User, EC extends EntityCollection = EntityCollection> {
190
+ export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
191
191
  entityId?: string;
192
192
  path: string;
193
193
  status: EntityStatus;
194
194
  collection: EC;
195
195
  formContext?: FormContext<any>;
196
- context: FireCMSContext<UserType>;
196
+ context: FireCMSContext<USER>;
197
197
  currentEntityId?: string;
198
198
  }
199
199
 
@@ -207,11 +207,11 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
207
207
  collection?: EC;
208
208
  };
209
209
 
210
- export interface PluginGenericProps<UserType extends User = User> {
211
- context: FireCMSContext<UserType>;
210
+ export interface PluginGenericProps<USER extends User = User> {
211
+ context: FireCMSContext<USER>;
212
212
  }
213
213
 
214
- export interface PluginHomePageAdditionalCardsProps<UserType extends User = User> {
214
+ export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
215
215
  group?: string;
216
- context: FireCMSContext<UserType>;
216
+ context: FireCMSContext<USER>;
217
217
  }
package/src/types/user.ts CHANGED
@@ -41,4 +41,6 @@ export type User = {
41
41
  */
42
42
  roles?: Role[];
43
43
 
44
+ getIdToken?: (forceRefresh?: boolean) => Promise<string>;
45
+
44
46
  };
@@ -27,9 +27,9 @@ import {
27
27
  * @group Builder
28
28
  */
29
29
  export function buildCollection<M extends Record<string, any> = any,
30
- UserType extends User = User>(
31
- collection: EntityCollection<M, UserType>
32
- ): EntityCollection<M, UserType> {
30
+ USER extends User = User>(
31
+ collection: EntityCollection<M, USER>
32
+ ): EntityCollection<M, USER> {
33
33
  return collection;
34
34
  }
35
35
 
@@ -120,9 +120,9 @@ export function buildEntityCallbacks<M extends Record<string, any> = any>(
120
120
  * @param additionalFieldDelegate
121
121
  * @group Builder
122
122
  */
123
- export function buildAdditionalFieldDelegate<M extends Record<string, any>, UserType extends User = User>(
124
- additionalFieldDelegate: AdditionalFieldDelegate<M, UserType>
125
- ): AdditionalFieldDelegate<M, UserType> {
123
+ export function buildAdditionalFieldDelegate<M extends Record<string, any>, USER extends User = User>(
124
+ additionalFieldDelegate: AdditionalFieldDelegate<M, USER>
125
+ ): AdditionalFieldDelegate<M, USER> {
126
126
  return additionalFieldDelegate;
127
127
  }
128
128
 
@@ -1,16 +1,16 @@
1
1
  import React from "react";
2
2
  import { hashString } from "./hash";
3
- import { coolIconKeys, Icon, iconKeys } from "@firecms/ui";
3
+ import { coolIconKeys, Icon, IconColor, iconKeys } from "@firecms/ui";
4
4
  import { slugify } from "./strings";
5
5
  import equal from "react-fast-compare"
6
6
 
7
- export function getIcon(iconKey?: string, className?: string): React.ReactElement | undefined {
7
+ export function getIcon(iconKey?: string, className?: string, color?:IconColor): React.ReactElement | undefined {
8
8
  if (!iconKey) return undefined;
9
9
  iconKey = slugify(iconKey);
10
10
  if (!(iconKey in iconKeysMap)) {
11
11
  return undefined;
12
12
  }
13
- return iconKey in iconKeysMap ? <Icon iconKey={iconKey} size={"medium"} className={className}/> : undefined;
13
+ return iconKey in iconKeysMap ? <Icon iconKey={iconKey} size={"medium"} className={className} color={color}/> : undefined;
14
14
  }
15
15
 
16
16
  export type IconViewProps = {
@@ -25,12 +25,16 @@ export const IconForView = React.memo(
25
25
  function IconForView({
26
26
  collectionOrView,
27
27
  className,
28
- size = "medium"
28
+ color,
29
+ size = "medium",
29
30
  }: {
30
- collectionOrView?: IconViewProps, className?: string, size?: "smallest" | "small" | "medium" | "large" | number,
31
+ collectionOrView?: IconViewProps,
32
+ color?: IconColor,
33
+ className?: string,
34
+ size?: "smallest" | "small" | "medium" | "large" | number,
31
35
  }): React.ReactElement {
32
36
  if (!collectionOrView) return <></>;
33
- const icon = getIcon(collectionOrView.icon, className);
37
+ const icon = getIcon(collectionOrView.icon, className, color);
34
38
  if (collectionOrView?.icon && icon)
35
39
  return icon;
36
40
 
@@ -51,9 +55,9 @@ export const IconForView = React.memo(
51
55
  if (!key)
52
56
  key = coolIconKeys[hashString(collectionOrView.path) % iconsCount];
53
57
 
54
- return <Icon iconKey={key} size={size} className={className}/>;
58
+ return <Icon iconKey={key} size={size} className={className} color={color}/>;
55
59
  }, (prevProps, nextProps) => {
56
- return equal(prevProps.collectionOrView?.icon, nextProps.collectionOrView?.icon);
60
+ return equal(prevProps.collectionOrView?.icon, nextProps.collectionOrView?.icon) && equal(prevProps.color, nextProps.color);
57
61
  });
58
62
 
59
63
  const iconKeysMap: Record<string, string> = iconKeys.reduce((acc: Record<string, string>, key) => {
@@ -8,9 +8,9 @@ const DEFAULT_PERMISSIONS = {
8
8
  delete: true
9
9
  };
10
10
 
11
- export function resolvePermissions<M extends Record<string, any>, UserType extends User>
11
+ export function resolvePermissions<M extends Record<string, any>, USER extends User>
12
12
  (collection: EntityCollection<M>,
13
- authController: AuthController<UserType>,
13
+ authController: AuthController<USER>,
14
14
  path: string,
15
15
  entity: Entity<M> | null): Permissions | undefined {
16
16
 
@@ -34,29 +34,29 @@ export function resolvePermissions<M extends Record<string, any>, UserType exten
34
34
  throw Error("New type of permission added and not mapped");
35
35
  }
36
36
 
37
- export function canEditEntity<M extends Record<string, any>, UserType extends User>
37
+ export function canEditEntity<M extends Record<string, any>, USER extends User>
38
38
  (
39
39
  collection: EntityCollection<M>,
40
- authController: AuthController<UserType>,
40
+ authController: AuthController<USER>,
41
41
  path: string,
42
42
  entity: Entity<M> | null): boolean {
43
43
  return resolvePermissions(collection, authController, path, entity)?.edit ?? DEFAULT_PERMISSIONS.edit;
44
44
  }
45
45
 
46
- export function canCreateEntity<M extends Record<string, any>, UserType extends User>
46
+ export function canCreateEntity<M extends Record<string, any>, USER extends User>
47
47
  (
48
48
  collection: EntityCollection<M>,
49
- authController: AuthController<UserType>,
49
+ authController: AuthController<USER>,
50
50
  path: string,
51
51
  entity: Entity<M> | null): boolean {
52
52
  if (collection.collectionGroup) return false;
53
53
  return resolvePermissions(collection, authController, path, entity)?.create ?? DEFAULT_PERMISSIONS.create;
54
54
  }
55
55
 
56
- export function canDeleteEntity<M extends Record<string, any>, UserType extends User>
56
+ export function canDeleteEntity<M extends Record<string, any>, USER extends User>
57
57
  (
58
58
  collection: EntityCollection<M>,
59
- authController: AuthController<UserType>,
59
+ authController: AuthController<USER>,
60
60
  path: string,
61
61
  entity: Entity<M> | null): boolean {
62
62
  return resolvePermissions(collection, authController, path, entity)?.delete ?? DEFAULT_PERMISSIONS.delete;