@firecms/core 3.0.0-canary.15 → 3.0.0-canary.150

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 (326) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +19 -6
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -5
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  19. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  20. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
  21. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  22. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  23. package/dist/components/EntityPreview.d.ts +7 -6
  24. package/dist/components/ErrorView.d.ts +1 -1
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  27. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  28. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  29. package/dist/components/ReferenceWidget.d.ts +3 -1
  30. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  31. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  32. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  33. package/dist/components/VirtualTable/types.d.ts +3 -3
  34. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  35. package/dist/components/common/index.d.ts +1 -0
  36. package/dist/components/common/table_height.d.ts +5 -0
  37. package/dist/components/common/types.d.ts +4 -6
  38. package/dist/components/common/useColumnsIds.d.ts +2 -1
  39. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +4 -1
  40. package/dist/components/index.d.ts +4 -2
  41. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  42. package/dist/core/DefaultDrawer.d.ts +19 -0
  43. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  44. package/dist/core/EntityEditView.d.ts +18 -4
  45. package/dist/core/FireCMS.d.ts +2 -2
  46. package/dist/core/NavigationRoutes.d.ts +3 -3
  47. package/dist/core/index.d.ts +3 -4
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/ErrorFocus.d.ts +1 -1
  50. package/dist/form/components/FieldHelperText.d.ts +3 -3
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  54. package/dist/form/components/index.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  60. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  61. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  62. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  67. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  68. package/dist/form/index.d.ts +3 -5
  69. package/dist/form/useClearRestoreValue.d.ts +2 -2
  70. package/dist/hooks/data/delete.d.ts +4 -4
  71. package/dist/hooks/data/save.d.ts +4 -5
  72. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  73. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  74. package/dist/hooks/index.d.ts +1 -0
  75. package/dist/hooks/useAuthController.d.ts +1 -1
  76. package/dist/hooks/useBuildNavigationController.d.ts +3 -4
  77. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  78. package/dist/hooks/useProjectLog.d.ts +8 -2
  79. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  80. package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.es.js +16536 -13058
  83. package/dist/index.es.js.map +1 -1
  84. package/dist/index.umd.js +20159 -587
  85. package/dist/index.umd.js.map +1 -1
  86. package/dist/internal/useBuildDataSource.d.ts +1 -16
  87. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  88. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  89. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  90. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  91. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  92. package/dist/types/auth.d.ts +7 -11
  93. package/dist/types/collections.d.ts +53 -18
  94. package/dist/types/datasource.d.ts +51 -35
  95. package/dist/types/entities.d.ts +6 -1
  96. package/dist/types/entity_actions.d.ts +18 -4
  97. package/dist/types/entity_callbacks.d.ts +16 -16
  98. package/dist/types/entity_overrides.d.ts +2 -2
  99. package/dist/types/export_import.d.ts +4 -4
  100. package/dist/types/fields.d.ts +63 -41
  101. package/dist/types/firecms.d.ts +6 -2
  102. package/dist/types/firecms_context.d.ts +1 -1
  103. package/dist/types/index.d.ts +0 -1
  104. package/dist/types/navigation.d.ts +6 -5
  105. package/dist/types/permissions.d.ts +4 -4
  106. package/dist/types/plugins.d.ts +22 -12
  107. package/dist/types/properties.d.ts +34 -21
  108. package/dist/types/property_config.d.ts +0 -2
  109. package/dist/types/side_dialogs_controller.d.ts +10 -0
  110. package/dist/types/storage.d.ts +86 -3
  111. package/dist/types/user.d.ts +1 -0
  112. package/dist/util/builders.d.ts +2 -2
  113. package/dist/util/entities.d.ts +2 -2
  114. package/dist/util/icon_list.d.ts +5 -1
  115. package/dist/util/icon_synonyms.d.ts +1 -97
  116. package/dist/util/icons.d.ts +6 -3
  117. package/dist/util/index.d.ts +1 -0
  118. package/dist/util/navigation_utils.d.ts +2 -2
  119. package/dist/util/objects.d.ts +2 -1
  120. package/dist/util/permissions.d.ts +4 -4
  121. package/dist/util/plurals.d.ts +0 -2
  122. package/dist/util/property_utils.d.ts +3 -3
  123. package/dist/util/resolutions.d.ts +30 -16
  124. package/dist/util/storage.d.ts +23 -2
  125. package/dist/util/useStorageUploadController.d.ts +3 -3
  126. package/package.json +128 -119
  127. package/src/app/AppBar.tsx +18 -0
  128. package/src/app/Drawer.tsx +24 -0
  129. package/src/app/Scaffold.tsx +243 -0
  130. package/src/app/index.ts +4 -0
  131. package/src/app/useApp.tsx +32 -0
  132. package/src/components/ArrayContainer.tsx +92 -25
  133. package/src/components/CircularProgressCenter.tsx +2 -2
  134. package/src/components/ClearFilterSortButton.tsx +41 -0
  135. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  136. package/src/components/DeleteEntityDialog.tsx +1 -1
  137. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
  138. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +25 -24
  139. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
  140. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  141. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  142. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
  143. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +16 -8
  144. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  145. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  146. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  147. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +82 -75
  148. package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
  149. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  150. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  151. package/src/components/EntityCollectionView/utils.ts +19 -0
  152. package/src/components/EntityPreview.tsx +47 -41
  153. package/src/components/EntityView.tsx +10 -10
  154. package/src/components/ErrorView.tsx +3 -3
  155. package/src/components/HomePage/DefaultHomePage.tsx +25 -19
  156. package/src/components/HomePage/FavouritesView.tsx +1 -1
  157. package/src/components/HomePage/NavigationCard.tsx +4 -4
  158. package/src/components/HomePage/NavigationCardBinding.tsx +2 -2
  159. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  160. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  161. package/src/components/PropertyConfigBadge.tsx +9 -3
  162. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  163. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
  164. package/src/components/ReferenceWidget.tsx +22 -12
  165. package/src/components/SearchIconsView.tsx +10 -7
  166. package/src/components/SelectableTable/SelectableTable.tsx +9 -9
  167. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  168. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  169. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
  170. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
  171. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  172. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  173. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  174. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  175. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  176. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  177. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  178. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  179. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  180. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  181. package/src/components/VirtualTable/types.tsx +2 -3
  182. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
  183. package/src/components/common/index.ts +1 -0
  184. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  185. package/src/components/common/types.tsx +4 -6
  186. package/src/components/common/useColumnsIds.tsx +23 -2
  187. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
  188. package/src/components/common/useTableSearchHelper.ts +53 -12
  189. package/src/components/index.tsx +4 -2
  190. package/src/contexts/DialogsProvider.tsx +2 -2
  191. package/src/core/DefaultAppBar.tsx +178 -0
  192. package/src/core/DefaultDrawer.tsx +183 -0
  193. package/src/core/DrawerNavigationItem.tsx +66 -0
  194. package/src/core/EntityEditView.tsx +717 -154
  195. package/src/core/EntitySidePanel.tsx +1 -2
  196. package/src/core/FireCMS.tsx +54 -53
  197. package/src/core/NavigationRoutes.tsx +7 -8
  198. package/src/core/SideDialogs.tsx +2 -1
  199. package/src/core/field_configs.tsx +8 -9
  200. package/src/core/index.tsx +3 -4
  201. package/src/form/PropertyFieldBinding.tsx +74 -35
  202. package/src/form/components/CustomIdField.tsx +4 -2
  203. package/src/form/components/FieldHelperText.tsx +4 -4
  204. package/src/form/components/LabelWithIcon.tsx +27 -19
  205. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  206. package/src/form/components/StorageItemPreview.tsx +22 -12
  207. package/src/form/components/StorageUploadProgress.tsx +3 -4
  208. package/src/form/components/index.tsx +1 -1
  209. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  210. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  211. package/src/form/field_bindings/BlockFieldBinding.tsx +51 -32
  212. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  213. package/src/form/field_bindings/KeyValueFieldBinding.tsx +54 -45
  214. package/src/form/field_bindings/MapFieldBinding.tsx +65 -48
  215. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  216. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  217. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  218. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  219. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  220. package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
  221. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
  222. package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
  223. package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
  224. package/src/form/index.tsx +4 -9
  225. package/src/form/useClearRestoreValue.tsx +2 -2
  226. package/src/form/validation.ts +1 -17
  227. package/src/hooks/data/delete.ts +6 -5
  228. package/src/hooks/data/save.ts +12 -8
  229. package/src/hooks/data/useCollectionFetch.tsx +2 -2
  230. package/src/hooks/data/useDataSource.tsx +11 -3
  231. package/src/hooks/data/useEntityFetch.tsx +5 -5
  232. package/src/hooks/index.tsx +1 -0
  233. package/src/hooks/useAuthController.tsx +1 -1
  234. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  235. package/src/hooks/useBuildModeController.tsx +11 -5
  236. package/src/hooks/useBuildNavigationController.tsx +92 -34
  237. package/src/hooks/useFireCMSContext.tsx +5 -5
  238. package/src/hooks/useProjectLog.tsx +32 -10
  239. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  240. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  241. package/src/index.ts +1 -0
  242. package/src/internal/useBuildDataSource.ts +72 -82
  243. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  244. package/src/internal/useBuildSideEntityController.tsx +102 -22
  245. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  246. package/src/preview/PropertyPreview.tsx +11 -18
  247. package/src/preview/PropertyPreviewProps.tsx +7 -1
  248. package/src/preview/components/BooleanPreview.tsx +2 -2
  249. package/src/preview/components/EmptyValue.tsx +1 -1
  250. package/src/preview/components/EnumValuesChip.tsx +2 -2
  251. package/src/preview/components/ImagePreview.tsx +25 -35
  252. package/src/preview/components/ReferencePreview.tsx +23 -34
  253. package/src/preview/components/StorageThumbnail.tsx +5 -1
  254. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  255. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  256. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  257. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  258. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  259. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  260. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  261. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  262. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  263. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  264. package/src/preview/util.ts +2 -2
  265. package/src/types/auth.tsx +7 -13
  266. package/src/types/collections.ts +62 -20
  267. package/src/types/customization_controller.tsx +0 -1
  268. package/src/types/datasource.ts +60 -43
  269. package/src/types/entities.ts +11 -1
  270. package/src/types/entity_actions.tsx +20 -7
  271. package/src/types/entity_callbacks.ts +18 -18
  272. package/src/types/entity_overrides.tsx +2 -2
  273. package/src/types/export_import.ts +4 -4
  274. package/src/types/fields.tsx +69 -45
  275. package/src/types/firecms.tsx +7 -2
  276. package/src/types/firecms_context.tsx +1 -1
  277. package/src/types/index.ts +0 -1
  278. package/src/types/navigation.ts +7 -7
  279. package/src/types/permissions.ts +5 -5
  280. package/src/types/plugins.tsx +24 -14
  281. package/src/types/properties.ts +39 -22
  282. package/src/types/property_config.tsx +0 -2
  283. package/src/types/side_dialogs_controller.tsx +13 -0
  284. package/src/types/storage.ts +94 -3
  285. package/src/types/user.ts +2 -0
  286. package/src/util/builders.ts +6 -6
  287. package/src/util/entities.ts +6 -5
  288. package/src/util/enums.ts +1 -1
  289. package/src/util/icon_list.ts +15 -10
  290. package/src/util/icon_synonyms.ts +3 -99
  291. package/src/util/icons.tsx +17 -7
  292. package/src/util/index.ts +1 -0
  293. package/src/util/make_properties_editable.ts +13 -5
  294. package/src/util/navigation_utils.ts +6 -6
  295. package/src/util/objects.ts +45 -28
  296. package/src/util/permissions.ts +9 -8
  297. package/src/util/plurals.ts +0 -2
  298. package/src/util/property_utils.tsx +11 -4
  299. package/src/util/references.ts +3 -0
  300. package/src/util/resolutions.ts +79 -46
  301. package/src/util/storage.ts +79 -21
  302. package/src/util/strings.ts +2 -2
  303. package/src/util/useStorageUploadController.tsx +33 -7
  304. package/src/util/useTraceUpdate.tsx +1 -0
  305. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  306. package/dist/components/VirtualTable/common.d.ts +0 -2
  307. package/dist/core/Drawer.d.ts +0 -23
  308. package/dist/core/Scaffold.d.ts +0 -55
  309. package/dist/core/SideEntityView.d.ts +0 -7
  310. package/dist/form/EntityForm.d.ts +0 -77
  311. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  312. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  313. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  314. package/dist/internal/useLocaleConfig.d.ts +0 -1
  315. package/dist/types/appcheck.d.ts +0 -26
  316. package/src/components/FireCMSAppBar.tsx +0 -165
  317. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  318. package/src/core/Drawer.tsx +0 -191
  319. package/src/core/Scaffold.tsx +0 -281
  320. package/src/core/SideEntityView.tsx +0 -38
  321. package/src/form/EntityForm.tsx +0 -728
  322. package/src/form/components/FormikArrayContainer.tsx +0 -44
  323. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  324. package/src/internal/useBuildCustomizationController.tsx +0 -5
  325. package/src/internal/useLocaleConfig.tsx +0 -18
  326. package/src/types/appcheck.ts +0 -29
@@ -9,18 +9,13 @@ import { StorageSource } from "./storage";
9
9
  * to do it as the result of a hook.
10
10
  * @group Hooks and utilities
11
11
  */
12
- export type AuthController<UserType extends User = any, ExtraData extends any = any> = {
12
+ export type AuthController<USER extends User = any, ExtraData = any> = {
13
13
 
14
14
  /**
15
15
  * The user currently logged in
16
16
  * The values can be: the user object, null if they skipped login
17
17
  */
18
- user: UserType | null;
19
-
20
- /**
21
- * Roles related to the logged user
22
- */
23
- roles?: Role[];
18
+ user: USER | null;
24
19
 
25
20
  /**
26
21
  * Initial loading flag. It is used not to display the login screen
@@ -38,7 +33,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
38
33
  /**
39
34
  * Sign out
40
35
  */
41
- signOut: () => void;
36
+ signOut: () => Promise<void>;
42
37
 
43
38
  /**
44
39
  * Error initializing the authentication
@@ -64,26 +59,25 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
64
59
 
65
60
  setExtra: (extra: ExtraData) => void;
66
61
 
67
- // setUser?: (user: UserType | null) => void;
62
+ setUser?: (user: USER | null) => void;
68
63
 
69
- // setRoles?: (roles: Role[]) => void;
70
64
  };
71
65
 
72
66
  /**
73
67
  * Implement this function to allow access to specific users.
74
68
  * @group Hooks and utilities
75
69
  */
76
- export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = ({ user }: {
70
+ export type Authenticator<USER extends User = User> = (props: {
77
71
 
78
72
  /**
79
73
  * Logged-in user or null
80
74
  */
81
- user: UserType | null;
75
+ user: USER | null;
82
76
 
83
77
  /**
84
78
  * AuthController
85
79
  */
86
- authController: Controller;
80
+ authController: AuthController<USER>;
87
81
 
88
82
  /**
89
83
  * Connector to your database, e.g. your Firestore database
@@ -17,7 +17,7 @@ import { EntityOverrides } from "./entity_overrides";
17
17
  *
18
18
  * @group Models
19
19
  */
20
- export interface EntityCollection<M extends Record<string, any> = any, UserType extends User = any> {
20
+ export interface EntityCollection<M extends Record<string, any> = any, USER extends User = any> {
21
21
 
22
22
  /**
23
23
  * You can set an alias that will be used internally instead of the `path`.
@@ -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
@@ -128,7 +139,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
128
139
  * Permissions the logged-in user can perform on this collection.
129
140
  * If not specified everything defaults to `true`.
130
141
  */
131
- permissions?: Permissions | PermissionsBuilder<EntityCollection, UserType, M>;
142
+ permissions?: Permissions | PermissionsBuilder<EntityCollection, USER, M>;
132
143
 
133
144
  /**
134
145
  * Are the entities in this collection selectable. Defaults to `true`
@@ -147,7 +158,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
147
158
  * is being created, updated or deleted.
148
159
  * Useful for adding your own logic or blocking the execution of the operation.
149
160
  */
150
- callbacks?: EntityCallbacks<M, UserType>;
161
+ callbacks?: EntityCallbacks<M, USER>;
151
162
 
152
163
  /**
153
164
  * Builder for rendering additional components such as buttons in the
@@ -178,7 +189,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
178
189
  * }
179
190
  * ```
180
191
  */
181
- entityActions?: EntityAction<M, UserType>[];
192
+ entityActions?: EntityAction<M, USER>[];
182
193
 
183
194
  /**
184
195
  * Pass your own selection controller if you want to control selected
@@ -230,7 +241,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
230
241
  * You can add additional fields to the collection view by implementing
231
242
  * an additional field delegate.
232
243
  */
233
- additionalFields?: AdditionalFieldDelegate<M, UserType>[];
244
+ additionalFields?: AdditionalFieldDelegate<M, USER>[];
234
245
 
235
246
  /**
236
247
  * Default size of the rendered collection
@@ -283,14 +294,28 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
283
294
  /**
284
295
  *
285
296
  */
286
- exportable?: boolean | ExportConfig<UserType>;
297
+ exportable?: boolean | ExportConfig<USER>;
287
298
 
288
299
  /**
289
300
  * User id of the owner of this collection. This is used only by plugins, or if you
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
  /**
@@ -300,7 +325,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
300
325
  *
301
326
  * @group Models
302
327
  */
303
- export interface CollectionActionsProps<M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
328
+ export interface CollectionActionsProps<M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
304
329
  /**
305
330
  * Full collection path of this entity. This is the full path, like
306
331
  * `users/1234/addresses`
@@ -337,7 +362,7 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
337
362
  /**
338
363
  * Context of the app status
339
364
  */
340
- context: FireCMSContext<UserType>;
365
+ context: FireCMSContext<USER>;
341
366
 
342
367
  /**
343
368
  * Count of the entities in this collection
@@ -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>) => void;
383
+ toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
360
384
  }
361
385
 
362
386
  /**
@@ -400,9 +424,9 @@ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" |
400
424
  */
401
425
  export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
402
426
 
403
- export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, UserType extends User = User> = {
427
+ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, USER extends User = User> = {
404
428
  entity: Entity<M>,
405
- context: FireCMSContext<UserType>
429
+ context: FireCMSContext<USER>
406
430
  };
407
431
 
408
432
  /**
@@ -411,7 +435,7 @@ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, Us
411
435
  * @group Models
412
436
  */
413
437
  export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
414
- UserType extends User = User> {
438
+ USER extends User = User> {
415
439
 
416
440
  /**
417
441
  * ID of this column. You can use this id in the `properties` field of the
@@ -432,7 +456,7 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
432
456
  /**
433
457
  * Builder for the content of the cell for this column
434
458
  */
435
- Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, UserType>>;
459
+ Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, USER>>;
436
460
 
437
461
  /**
438
462
  * If this column needs to update dynamically based on other properties,
@@ -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: { entity: Entity<M>, context: FireCMSContext<any> }) => string | number | Promise<string | number> | undefined;
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: [Extract<keyof M, string>, "asc" | "desc"]) => void;
567
+ setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
527
568
  searchString?: string;
528
569
  setSearchString?: (searchString?: string) => void;
529
570
  clearFilter?: () => void;
@@ -544,5 +585,6 @@ export type SelectedCellProps<M extends Record<string, any>> = {
544
585
  cellRect: DOMRect;
545
586
  width: number;
546
587
  height: number;
547
- entity: Entity<M>;
588
+ entityPath: string;
589
+ entityId: string;
548
590
  };
@@ -24,7 +24,6 @@ export type CustomizationController = {
24
24
  *
25
25
  * You can also define an entity view from the UI.
26
26
  */
27
-
28
27
  entityViews?: EntityCustomView[];
29
28
 
30
29
  /**
@@ -1,6 +1,7 @@
1
- import { Entity, EntityReference, EntityStatus, EntityValues, GeoPoint } from "./entities";
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
  }
@@ -62,12 +64,12 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
62
64
  */
63
65
  export interface DeleteEntityProps<M extends Record<string, any> = any> {
64
66
  entity: Entity<M>;
67
+ collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
65
68
  }
66
69
 
67
70
  /**
68
- * Implement this interface and pass it to a {@link FireCMS}
69
- * to connect it to your data source.
70
- * A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
71
+ * Component in charge of communicating with the data source.
72
+ * Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
71
73
  * @group Datasource
72
74
  */
73
75
  export interface DataSource {
@@ -181,7 +183,8 @@ export interface DataSource {
181
183
  */
182
184
  deleteEntity<M extends Record<string, any> = any>(
183
185
  {
184
- entity
186
+ entity,
187
+ collection
185
188
  }: DeleteEntityProps<M>
186
189
  ): Promise<void>;
187
190
 
@@ -190,7 +193,7 @@ export interface DataSource {
190
193
  * @param path Collection path
191
194
  * @param name of the property
192
195
  * @param value
193
- * @param property
196
+ * @param collection
194
197
  * @param entityId
195
198
  * @return `true` if there are no other fields besides the given entity
196
199
  */
@@ -198,13 +201,14 @@ export interface DataSource {
198
201
  path: string,
199
202
  name: string,
200
203
  value: any,
201
- entityId?: string
204
+ entityId?: string,
205
+ collection?: EntityCollection
202
206
  ): Promise<boolean>;
203
207
 
204
208
  /**
205
209
  * Generate an id for a new entity
206
210
  */
207
- generateEntityId(path: string): string;
211
+ generateEntityId(path: string, collection: EntityCollection): string;
208
212
 
209
213
  /**
210
214
  * Count the number of entities in a collection
@@ -216,6 +220,19 @@ export interface DataSource {
216
220
  * @param props
217
221
  */
218
222
  isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
223
+
224
+ /**
225
+ * Called when the user clicks on the search bar in a collection view.
226
+ * Useful for initializing a text search index.
227
+ * @param props
228
+ */
229
+ initTextSearch?: (props: {
230
+ context: FireCMSContext,
231
+ path: string,
232
+ collection: EntityCollection,
233
+ parentCollectionIds?: string[]
234
+ }) => Promise<boolean>;
235
+
219
236
  }
220
237
 
221
238
  export type FilterCombinationValidProps = {
@@ -225,21 +242,24 @@ export type FilterCombinationValidProps = {
225
242
  sortBy?: [string, "asc" | "desc"];
226
243
  };
227
244
 
228
- export type SaveEntityDelegateProps<M extends Record<string, any> = any> = Omit<SaveEntityProps<M>, "collection">;
245
+ export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
229
246
 
230
- export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
231
- Omit<FetchCollectionProps<M>, "collection">
232
- & {
233
- isCollectionGroup?: boolean
234
- };
247
+ export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
235
248
 
236
- export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
237
- ListenCollectionProps<M>
238
- & {
239
- isCollectionGroup?: boolean;
240
- };
249
+ export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
241
250
 
242
251
  export interface DataSourceDelegate {
252
+
253
+ /**
254
+ * Key that identifies this data source delegate
255
+ */
256
+ key: string;
257
+
258
+ /**
259
+ * If the data source has been initialised
260
+ */
261
+ initialised?: boolean;
262
+
243
263
  /**
244
264
  * Fetch data from a collection
245
265
  * @param path
@@ -297,7 +317,7 @@ export interface DataSourceDelegate {
297
317
  fetchEntity<M extends Record<string, any> = any>({
298
318
  path,
299
319
  entityId,
300
- }: Omit<FetchEntityProps<M>, "collection">): Promise<Entity<M> | undefined>;
320
+ }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
301
321
 
302
322
  /**
303
323
  * Get realtime updates on one entity.
@@ -313,13 +333,13 @@ export interface DataSourceDelegate {
313
333
  entityId,
314
334
  onUpdate,
315
335
  onError
316
- }: Omit<ListenEntityProps<M>, "collection">): () => void;
336
+ }: ListenEntityProps<M>): () => void;
317
337
 
318
338
  /**
319
339
  * Save entity to the specified path
320
340
  * @param path
321
- * @param id
322
- * @param collection
341
+ * @param entityId
342
+ * @param values
323
343
  * @param status
324
344
  */
325
345
  saveEntity<M extends Record<string, any> = any>({
@@ -342,14 +362,15 @@ export interface DataSourceDelegate {
342
362
  * @param name of the property
343
363
  * @param value
344
364
  * @param entityId
365
+ * @param collection
345
366
  * @return `true` if there are no other fields besides the given entity
346
367
  */
347
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
368
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
348
369
 
349
370
  /**
350
371
  * Generate an id for a new entity
351
372
  */
352
- generateEntityId(path: string): string;
373
+ generateEntityId(path: string, collection?: EntityCollection): string;
353
374
 
354
375
  /**
355
376
  * Count the number of entities in a collection
@@ -360,30 +381,26 @@ export interface DataSourceDelegate {
360
381
  * Check if the given filter combination is valid
361
382
  * @param props
362
383
  */
363
- isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">): boolean;
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,
384
+ isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
385
+ databaseId?: string
386
+ }): boolean;
376
387
 
377
388
  /**
378
389
  * Get the object to generate the current time in the datasource
379
390
  */
380
- currentTime(): any;
381
-
382
- buildDate: (date: Date) => any;
383
-
384
- buildDeleteFieldValue: () => any;
391
+ currentTime?: () => any;
385
392
 
386
393
  delegateToCMSModel: (data: any) => any;
387
394
 
395
+ cmsToDelegateModel: (data: any) => any;
396
+
388
397
  setDateToMidnight: (input?: any) => any;
398
+
399
+ initTextSearch?: (props: {
400
+ context: FireCMSContext,
401
+ path: string,
402
+ databaseId?: string,
403
+ collection: EntityCollection,
404
+ parentCollectionIds?: string[]
405
+ }) => Promise<boolean>;
389
406
  }
@@ -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<M extends Record<string, any> = any> {
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,12 +4,27 @@ 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
 
9
- export type EntityAction<M extends object = any, UserType extends User = User> = {
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
+ */
12
+ export type EntityAction<M extends object = any, USER 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;
12
- onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
22
+
23
+ /**
24
+ * Callback when the action is clicked
25
+ * @param props
26
+ */
27
+ onClick: (props: EntityActionClickProps<M, USER>) => Promise<void> | void;
13
28
 
14
29
  /**
15
30
  * Show this action collapsed in the menu of the collection view.
@@ -25,11 +40,9 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
25
40
 
26
41
  }
27
42
 
28
-
29
-
30
- export type EntityActionClickProps<M extends object, UserType extends User = User> = {
43
+ export type EntityActionClickProps<M extends object, USER extends User = User> = {
31
44
  entity: Entity<M>;
32
- context: FireCMSContext<UserType>;
45
+ context: FireCMSContext<USER>;
33
46
  fullPath?: string;
34
47
  collection?: EntityCollection<M>;
35
48
  selectionController?: SelectionController;