@firecms/core 3.0.0-beta.1 → 3.0.0-beta.10

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 (370) hide show
  1. package/README.md +6 -7
  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 +3 -4
  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 +13 -18
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  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/index.d.ts +2 -4
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +3 -3
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  24. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +26 -7
  26. package/dist/components/EntityView.d.ts +11 -0
  27. package/dist/components/ErrorView.d.ts +1 -1
  28. package/dist/components/FieldCaption.d.ts +5 -0
  29. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  30. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  31. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  32. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  33. package/dist/components/HomePage/index.d.ts +3 -1
  34. package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
  37. package/dist/components/ReferenceWidget.d.ts +6 -4
  38. package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
  39. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  40. package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  44. package/dist/components/common/index.d.ts +6 -0
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
  47. package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
  48. package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
  49. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  50. package/dist/components/index.d.ts +14 -8
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  53. package/dist/core/DefaultDrawer.d.ts +19 -0
  54. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  55. package/dist/core/EntityEditView.d.ts +36 -0
  56. package/dist/core/FireCMS.d.ts +1 -1
  57. package/dist/core/NavigationRoutes.d.ts +3 -3
  58. package/dist/core/index.d.ts +3 -6
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/CustomIdField.d.ts +2 -1
  61. package/dist/form/components/ErrorFocus.d.ts +1 -1
  62. package/dist/form/components/FieldHelperText.d.ts +3 -3
  63. package/dist/form/components/FormikArrayContainer.d.ts +2 -1
  64. package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
  65. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  66. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  67. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  68. package/dist/form/components/index.d.ts +2 -1
  69. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  75. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  76. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  80. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  81. package/dist/form/index.d.ts +4 -5
  82. package/dist/form/useClearRestoreValue.d.ts +2 -2
  83. package/dist/form/validation.d.ts +1 -1
  84. package/dist/hooks/data/delete.d.ts +2 -2
  85. package/dist/hooks/data/save.d.ts +2 -3
  86. package/dist/hooks/data/useDataSource.d.ts +2 -2
  87. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  88. package/dist/hooks/index.d.ts +5 -1
  89. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  90. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  91. package/dist/hooks/useProjectLog.d.ts +14 -0
  92. package/dist/hooks/useSnackbarController.d.ts +1 -0
  93. package/dist/hooks/useStorageSource.d.ts +2 -2
  94. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.es.js +16297 -12643
  97. package/dist/index.es.js.map +1 -1
  98. package/dist/index.umd.js +20043 -587
  99. package/dist/index.umd.js.map +1 -1
  100. package/dist/internal/useBuildDataSource.d.ts +1 -12
  101. package/dist/preview/PropertyPreview.d.ts +1 -1
  102. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  103. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  104. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  105. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  106. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  107. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  108. package/dist/types/analytics.d.ts +1 -1
  109. package/dist/types/auth.d.ts +38 -2
  110. package/dist/types/collections.d.ts +56 -9
  111. package/dist/types/datasource.d.ts +59 -39
  112. package/dist/types/entities.d.ts +7 -1
  113. package/dist/types/entity_actions.d.ts +14 -0
  114. package/dist/types/entity_callbacks.d.ts +3 -3
  115. package/dist/types/entity_overrides.d.ts +6 -0
  116. package/dist/types/fields.d.ts +47 -42
  117. package/dist/types/firecms.d.ts +8 -23
  118. package/dist/types/index.d.ts +2 -1
  119. package/dist/types/navigation.d.ts +18 -16
  120. package/dist/types/permissions.d.ts +5 -1
  121. package/dist/types/plugins.d.ts +31 -31
  122. package/dist/types/properties.d.ts +36 -23
  123. package/dist/types/property_config.d.ts +2 -2
  124. package/dist/types/roles.d.ts +31 -0
  125. package/dist/types/side_dialogs_controller.d.ts +10 -0
  126. package/dist/types/storage.d.ts +86 -3
  127. package/dist/types/user.d.ts +5 -0
  128. package/dist/util/collections.d.ts +9 -1
  129. package/dist/util/entities.d.ts +2 -2
  130. package/dist/util/icon_list.d.ts +5 -1
  131. package/dist/util/icon_synonyms.d.ts +1 -97
  132. package/dist/util/icons.d.ts +10 -3
  133. package/dist/util/index.d.ts +3 -1
  134. package/dist/util/navigation_utils.d.ts +2 -2
  135. package/dist/util/objects.d.ts +1 -1
  136. package/dist/util/permissions.d.ts +4 -4
  137. package/dist/util/plurals.d.ts +0 -2
  138. package/dist/util/property_utils.d.ts +1 -1
  139. package/dist/util/references.d.ts +4 -2
  140. package/dist/util/resolutions.d.ts +28 -14
  141. package/dist/util/storage.d.ts +23 -2
  142. package/dist/util/strings.d.ts +1 -1
  143. package/dist/util/useDebouncedCallback.d.ts +1 -0
  144. package/dist/util/useStorageUploadController.d.ts +3 -3
  145. package/dist/util/useTraceUpdate.d.ts +1 -0
  146. package/package.json +129 -112
  147. package/src/app/AppBar.tsx +18 -0
  148. package/src/app/Drawer.tsx +24 -0
  149. package/src/app/Scaffold.tsx +243 -0
  150. package/src/app/index.ts +4 -0
  151. package/src/app/useApp.tsx +32 -0
  152. package/src/components/ArrayContainer.tsx +45 -75
  153. package/src/components/CircularProgressCenter.tsx +1 -1
  154. package/src/components/ClearFilterSortButton.tsx +41 -0
  155. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  156. package/src/components/DeleteEntityDialog.tsx +4 -4
  157. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
  158. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
  159. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
  160. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
  161. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  162. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
  163. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  164. package/src/components/EntityCollectionTable/index.tsx +1 -9
  165. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  166. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  167. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  168. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
  169. package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
  170. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  171. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  172. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  173. package/src/components/EntityCollectionView/utils.ts +19 -0
  174. package/src/components/EntityPreview.tsx +208 -71
  175. package/src/components/EntityView.tsx +84 -0
  176. package/src/components/ErrorView.tsx +1 -1
  177. package/src/components/FieldCaption.tsx +14 -0
  178. package/src/components/HomePage/DefaultHomePage.tsx +38 -28
  179. package/src/components/HomePage/NavigationCard.tsx +69 -0
  180. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  181. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  182. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  183. package/src/components/HomePage/index.tsx +3 -1
  184. package/src/components/PropertyConfigBadge.tsx +23 -0
  185. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  186. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
  187. package/src/components/ReferenceWidget.tsx +26 -16
  188. package/src/components/SearchIconsView.tsx +10 -7
  189. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  190. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  191. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  192. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
  193. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
  194. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
  195. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  196. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  197. package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
  198. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  199. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  200. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  201. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  202. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  203. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  204. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  205. package/src/components/VirtualTable/types.tsx +2 -3
  206. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  207. package/src/components/common/index.ts +6 -0
  208. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  209. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  210. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  211. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
  212. package/src/components/common/useTableSearchHelper.ts +88 -0
  213. package/src/components/index.tsx +15 -8
  214. package/src/contexts/AuthControllerContext.tsx +1 -1
  215. package/src/contexts/DialogsProvider.tsx +2 -2
  216. package/src/core/DefaultAppBar.tsx +176 -0
  217. package/src/core/DefaultDrawer.tsx +183 -0
  218. package/src/core/DrawerNavigationItem.tsx +66 -0
  219. package/src/core/EntityEditView.tsx +1127 -0
  220. package/src/core/EntitySidePanel.tsx +9 -8
  221. package/src/core/FireCMS.tsx +67 -59
  222. package/src/core/NavigationRoutes.tsx +25 -17
  223. package/src/core/SideDialogs.tsx +1 -0
  224. package/src/core/field_configs.tsx +18 -19
  225. package/src/core/index.tsx +3 -6
  226. package/src/form/PropertyFieldBinding.tsx +60 -33
  227. package/src/form/components/CustomIdField.tsx +51 -36
  228. package/src/form/components/ErrorFocus.tsx +3 -3
  229. package/src/form/components/FieldHelperText.tsx +4 -4
  230. package/src/form/components/FormikArrayContainer.tsx +4 -1
  231. package/src/form/components/LabelWithIcon.tsx +41 -0
  232. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  233. package/src/form/components/StorageItemPreview.tsx +22 -10
  234. package/src/form/components/StorageUploadProgress.tsx +8 -8
  235. package/src/form/components/index.tsx +2 -1
  236. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
  237. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
  238. package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
  239. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  240. package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
  241. package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
  242. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  243. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  244. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  245. package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
  246. package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
  247. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
  248. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
  249. package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
  250. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  251. package/src/form/index.tsx +5 -9
  252. package/src/form/useClearRestoreValue.tsx +2 -2
  253. package/src/form/validation.ts +4 -21
  254. package/src/hooks/data/delete.ts +5 -4
  255. package/src/hooks/data/save.ts +7 -2
  256. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  257. package/src/hooks/data/useDataSource.tsx +15 -2
  258. package/src/hooks/data/useEntityFetch.tsx +4 -4
  259. package/src/hooks/index.tsx +7 -1
  260. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  261. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  262. package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
  263. package/src/hooks/useFireCMSContext.tsx +51 -3
  264. package/src/hooks/useLargeLayout.tsx +10 -7
  265. package/src/hooks/useProjectLog.tsx +63 -0
  266. package/src/hooks/useReferenceDialog.tsx +3 -3
  267. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  268. package/src/hooks/useSnackbarController.tsx +1 -2
  269. package/src/hooks/useStorageSource.tsx +7 -2
  270. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  271. package/src/index.ts +1 -0
  272. package/src/internal/useBuildDataSource.ts +79 -84
  273. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  274. package/src/internal/useBuildSideEntityController.tsx +103 -23
  275. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  276. package/src/preview/PropertyPreview.tsx +12 -19
  277. package/src/preview/PropertyPreviewProps.tsx +6 -10
  278. package/src/preview/components/BooleanPreview.tsx +19 -4
  279. package/src/preview/components/EnumValuesChip.tsx +2 -2
  280. package/src/preview/components/ImagePreview.tsx +24 -34
  281. package/src/preview/components/ReferencePreview.tsx +73 -176
  282. package/src/preview/components/StorageThumbnail.tsx +5 -1
  283. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  284. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
  285. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
  286. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
  287. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  288. package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
  289. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
  290. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  291. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  292. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  293. package/src/preview/util.ts +2 -2
  294. package/src/types/analytics.ts +1 -0
  295. package/src/types/auth.tsx +51 -2
  296. package/src/types/collections.ts +65 -9
  297. package/src/types/customization_controller.tsx +0 -1
  298. package/src/types/datasource.ts +69 -47
  299. package/src/types/entities.ts +15 -1
  300. package/src/types/entity_actions.tsx +17 -0
  301. package/src/types/entity_callbacks.ts +4 -3
  302. package/src/types/entity_overrides.tsx +7 -0
  303. package/src/types/fields.tsx +51 -45
  304. package/src/types/firecms.tsx +9 -26
  305. package/src/types/index.ts +2 -1
  306. package/src/types/navigation.ts +20 -19
  307. package/src/types/permissions.ts +6 -1
  308. package/src/types/plugins.tsx +38 -40
  309. package/src/types/properties.ts +42 -24
  310. package/src/types/property_config.tsx +2 -2
  311. package/src/types/roles.ts +41 -0
  312. package/src/types/side_dialogs_controller.tsx +13 -0
  313. package/src/types/side_entity_controller.tsx +1 -0
  314. package/src/types/storage.ts +94 -3
  315. package/src/types/user.ts +7 -0
  316. package/src/util/collections.ts +22 -0
  317. package/src/util/entities.ts +6 -5
  318. package/src/util/enums.ts +1 -1
  319. package/src/util/icon_list.ts +15 -10
  320. package/src/util/icon_synonyms.ts +3 -99
  321. package/src/util/icons.tsx +18 -4
  322. package/src/util/index.ts +3 -1
  323. package/src/util/make_properties_editable.ts +13 -5
  324. package/src/util/navigation_utils.ts +6 -6
  325. package/src/util/objects.ts +25 -28
  326. package/src/util/permissions.ts +12 -8
  327. package/src/util/plurals.ts +0 -2
  328. package/src/util/property_utils.tsx +1 -1
  329. package/src/util/references.ts +39 -5
  330. package/src/util/resolutions.ts +75 -42
  331. package/src/util/storage.ts +79 -21
  332. package/src/util/strings.ts +4 -3
  333. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  334. package/src/util/useStorageUploadController.tsx +33 -7
  335. package/src/util/useTraceUpdate.tsx +2 -1
  336. package/dist/components/VirtualTable/common.d.ts +0 -2
  337. package/dist/core/Drawer.d.ts +0 -23
  338. package/dist/core/Scaffold.d.ts +0 -52
  339. package/dist/form/EntityForm.d.ts +0 -75
  340. package/dist/form/components/SubmitListener.d.ts +0 -1
  341. package/dist/form/components/SwitchControl.d.ts +0 -8
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  344. package/dist/internal/EntityView.d.ts +0 -22
  345. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  346. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  347. package/dist/internal/useLocaleConfig.d.ts +0 -1
  348. package/dist/types/appcheck.d.ts +0 -26
  349. package/dist/util/useDebounce.d.ts +0 -1
  350. package/src/components/FieldConfigBadge.tsx +0 -17
  351. package/src/components/FireCMSAppBar.tsx +0 -157
  352. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  353. package/src/components/LabelWithIcon.tsx +0 -33
  354. package/src/core/Drawer.tsx +0 -162
  355. package/src/core/Scaffold.tsx +0 -278
  356. package/src/form/EntityForm.tsx +0 -657
  357. package/src/form/components/SubmitListener.tsx +0 -32
  358. package/src/form/components/SwitchControl.tsx +0 -39
  359. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  360. package/src/hooks/useVerifyLicense.tsx +0 -1
  361. package/src/internal/EntityView.tsx +0 -578
  362. package/src/internal/useBuildCustomizationController.tsx +0 -5
  363. package/src/internal/useLocaleConfig.tsx +0 -18
  364. package/src/types/appcheck.ts +0 -29
  365. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  366. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  367. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  368. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  369. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  370. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -6,7 +6,7 @@ import { PreviewType } from "../../types";
6
6
  import { UrlComponentPreview } from "../components/UrlComponentPreview";
7
7
  import { PropertyPreviewProps } from "../PropertyPreviewProps";
8
8
  import { ErrorBoundary } from "../../components";
9
- import { Chip, getColorSchemeForSeed } from "@firecms/ui";
9
+ import { Chip, cls, getColorSchemeForSeed } from "@firecms/ui";
10
10
 
11
11
  /**
12
12
  * @group Preview components
@@ -24,14 +24,14 @@ export function StringPropertyPreview({
24
24
  return <EnumValuesChip
25
25
  enumKey={enumKey}
26
26
  enumValues={resolvedProperty.enumValues}
27
- size={size !== "medium" ? "small" : "medium"}/>;
27
+ size={size}/>;
28
28
  } else if (property.previewAsTag) {
29
29
  const colorScheme = getColorSchemeForSeed(propertyKey ?? "");
30
30
  return (
31
31
  <ErrorBoundary>
32
32
  <Chip
33
33
  colorScheme={colorScheme}
34
- size={size !== "medium" ? "small" : "medium"}>
34
+ size={size}>
35
35
  {value}
36
36
  </Chip>
37
37
  </ErrorBoundary>);
@@ -45,15 +45,16 @@ export function StringPropertyPreview({
45
45
  if (!value) return <></>;
46
46
  const lines = value.split("\n");
47
47
  return value && value.includes("\n")
48
- ? <div className={"overflow-x-scroll"}>
48
+ ? <div className={cls("overflow-x-scroll", size === "smallest" ? "text-sm" : "")}>
49
49
  {lines.map((str, index) =>
50
50
  <React.Fragment key={`string_preview_${index}`}>
51
51
  <span>{str}</span>
52
52
  {index !== lines.length - 1 && <br/>}
53
53
  </React.Fragment>)}
54
54
  </div>
55
- : <>
56
- {value}
57
- </>;
55
+ : (size === "smallest"
56
+ ? <span className={"text-sm"}>{value}</span>
57
+ : <>{value}</>
58
+ );
58
59
  }
59
60
  }
@@ -6,7 +6,7 @@ export const SMALL_THUMBNAIL = 100;
6
6
  export const REGULAR_THUMBNAIL = 200;
7
7
 
8
8
  export function getThumbnailMeasure(size: PreviewSize): number {
9
- if (size === "tiny")
9
+ if (size === "smallest")
10
10
  return TINY_THUMBNAIL;
11
11
  else if (size === "small")
12
12
  return SMALL_THUMBNAIL;
@@ -19,7 +19,7 @@ export function getPreviewSizeFrom(size: CollectionSize): PreviewSize {
19
19
  switch (size) {
20
20
  case "xs":
21
21
  case "s":
22
- return "tiny";
22
+ return "smallest";
23
23
  case "m":
24
24
  return "small";
25
25
  case "l":
@@ -26,6 +26,7 @@ export type CMSAnalyticsEvent =
26
26
  | "home_navigate_to_collection"
27
27
  | "home_favorite_navigate_to_collection"
28
28
  | "home_navigate_to_view"
29
+ | "home_navigate_to_admin_view"
29
30
  | "home_favorite_navigate_to_view"
30
31
 
31
32
  | "collection_inline_editing"
@@ -1,4 +1,7 @@
1
1
  import { User } from "./user";
2
+ import { Role } from "./roles";
3
+ import { DataSourceDelegate } from "./datasource";
4
+ import { StorageSource } from "./storage";
2
5
 
3
6
  /**
4
7
  * Controller for retrieving the logged user or performing auth related operations.
@@ -6,7 +9,7 @@ import { User } from "./user";
6
9
  * to do it as the result of a hook.
7
10
  * @group Hooks and utilities
8
11
  */
9
- export type AuthController<UserType extends User = User> = {
12
+ export type AuthController<UserType extends User = any, ExtraData = any> = {
10
13
 
11
14
  /**
12
15
  * The user currently logged in
@@ -14,6 +17,11 @@ export type AuthController<UserType extends User = User> = {
14
17
  */
15
18
  user: UserType | null;
16
19
 
20
+ /**
21
+ * Roles related to the logged user
22
+ */
23
+ roles?: Role[];
24
+
17
25
  /**
18
26
  * Initial loading flag. It is used not to display the login screen
19
27
  * when the app first loads, and it has not been checked whether the user
@@ -21,10 +29,16 @@ export type AuthController<UserType extends User = User> = {
21
29
  */
22
30
  initialLoading?: boolean;
23
31
 
32
+ /**
33
+ * Loading flag. It is used to display a loading screen when the user is
34
+ * logging in or out.
35
+ */
36
+ authLoading: boolean;
37
+
24
38
  /**
25
39
  * Sign out
26
40
  */
27
- signOut: () => void;
41
+ signOut: () => Promise<void>;
28
42
 
29
43
  /**
30
44
  * Error initializing the authentication
@@ -46,4 +60,39 @@ export type AuthController<UserType extends User = User> = {
46
60
  */
47
61
  loginSkipped: boolean;
48
62
 
63
+ extra: ExtraData;
64
+
65
+ setExtra: (extra: ExtraData) => void;
66
+
67
+ // setUser?: (user: UserType | null) => void;
68
+
69
+ // setRoles?: (roles: Role[]) => void;
49
70
  };
71
+
72
+ /**
73
+ * Implement this function to allow access to specific users.
74
+ * @group Hooks and utilities
75
+ */
76
+ export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (props: {
77
+
78
+ /**
79
+ * Logged-in user or null
80
+ */
81
+ user: UserType | null;
82
+
83
+ /**
84
+ * AuthController
85
+ */
86
+ authController: Controller;
87
+
88
+ /**
89
+ * Connector to your database, e.g. your Firestore database
90
+ */
91
+ dataSourceDelegate: DataSourceDelegate;
92
+
93
+ /**
94
+ * Used storage implementation
95
+ */
96
+ storageSource: StorageSource;
97
+
98
+ }) => boolean | Promise<boolean>;
@@ -8,6 +8,7 @@ import { EnumValues, PropertiesOrBuilders } from "./properties";
8
8
  import { FormContext } from "./fields";
9
9
  import { EntityAction } from "./entity_actions";
10
10
  import { ExportConfig } from "./export_import";
11
+ import { EntityOverrides } from "./entity_overrides";
11
12
 
12
13
  /**
13
14
  * This interface represents a view that includes a collection of entities.
@@ -16,7 +17,7 @@ import { ExportConfig } from "./export_import";
16
17
  *
17
18
  * @group Models
18
19
  */
19
- export interface EntityCollection<M extends Record<string, any> = any, UserType extends User = User> {
20
+ export interface EntityCollection<M extends Record<string, any> = any, UserType extends User = any> {
20
21
 
21
22
  /**
22
23
  * You can set an alias that will be used internally instead of the `path`.
@@ -50,6 +51,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
50
51
  */
51
52
  path: string;
52
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
+
53
60
  /**
54
61
  * If this collection is a top level navigation entry, you can set this
55
62
  * property to `true` to indicate that this collection is a collection group.
@@ -60,7 +67,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
60
67
  * Icon key to use in this collection.
61
68
  * You can use any of the icons in the Material specs:
62
69
  * https://fonts.google.com/icons
63
- * e.g. 'account_tree' or 'person'
70
+ * e.g. 'account_tree' or 'person'.
71
+ * Find all the icons in https://firecms.co/docs/icons
64
72
  */
65
73
  icon?: string;
66
74
 
@@ -76,6 +84,13 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
76
84
  */
77
85
  properties: PropertiesOrBuilders<M>;
78
86
 
87
+ /**
88
+ * Title property of the entity. This is the property that will be used
89
+ * as the title in entity related views and references.
90
+ * If not specified, the first property simple text property will be used.
91
+ */
92
+ titleProperty?: keyof M;
93
+
79
94
  /**
80
95
  * Can this collection be edited by the end user.
81
96
  * Defaults to `true`.
@@ -99,8 +114,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
99
114
  * `subcollection:`. e.g. `subcollection:orders`.
100
115
  * - If you are using a collection group, you will also have an
101
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`.
102
121
  */
103
- propertiesOrder?: Extract<keyof M, string>[];
122
+ propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
104
123
 
105
124
  /**
106
125
  * If enabled, content is loaded in batches. If `false` all entities in the
@@ -139,7 +158,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
139
158
  * is being created, updated or deleted.
140
159
  * Useful for adding your own logic or blocking the execution of the operation.
141
160
  */
142
- callbacks?: EntityCallbacks<M>;
161
+ callbacks?: EntityCallbacks<M, UserType>;
143
162
 
144
163
  /**
145
164
  * Builder for rendering additional components such as buttons in the
@@ -276,6 +295,27 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
276
295
  *
277
296
  */
278
297
  exportable?: boolean | ExportConfig<UserType>;
298
+
299
+ /**
300
+ * User id of the owner of this collection. This is used only by plugins, or if you
301
+ * are writing custom code
302
+ */
303
+ ownerId?: string;
304
+
305
+ /**
306
+ * Overrides for the entity view, like the data source or the storage source.
307
+ */
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[];
279
319
  }
280
320
 
281
321
  /**
@@ -334,19 +374,18 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
334
374
  /**
335
375
  * Use this controller to retrieve the selected entities or modify them in
336
376
  * an {@link EntityCollection}
337
- * If you want to pass a `SelectionController` to
338
377
  * @group Models
339
378
  */
340
379
  export type SelectionController<M extends Record<string, any> = any> = {
341
380
  selectedEntities: Entity<M>[];
342
381
  setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
343
382
  isEntitySelected: (entity: Entity<M>) => boolean;
344
- toggleEntitySelection: (entity: Entity<M>) => void;
383
+ toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
345
384
  }
346
385
 
347
386
  /**
348
387
  * Filter conditions in a `Query.where()` clause are specified using the
349
- * strings '<', '<=', '==', '>=', '>', 'array-contains', 'in', and 'array-contains-any'.
388
+ * strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
350
389
  * @group Models
351
390
  */
352
391
  export type WhereFilterOp =
@@ -436,7 +475,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
436
475
  * view.
437
476
  * @param entity
438
477
  */
439
- value?: (props: { entity: Entity<M>, context: FireCMSContext }) => string | number | Promise<string | number> | undefined;
478
+ value?: (props: {
479
+ entity: Entity<M>,
480
+ context: FireCMSContext<any>
481
+ }) => string | number | Promise<string | number> | undefined;
440
482
  }
441
483
 
442
484
  /**
@@ -446,8 +488,22 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
446
488
  */
447
489
  export type EntityCustomView<M extends Record<string, any> = any> =
448
490
  {
491
+ /**
492
+ * Key of this custom view.
493
+ */
449
494
  key: string,
495
+ /**
496
+ * Name of this custom view.
497
+ */
450
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
+ */
451
507
  Builder?: React.ComponentType<EntityCustomViewParams<M>>;
452
508
  }
453
509
 
@@ -508,7 +564,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
508
564
  filterValues?: FilterValues<Extract<keyof M, string>>;
509
565
  setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
510
566
  sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
511
- setSortBy?: (sortBy: [Extract<keyof M, string>, "asc" | "desc"]) => void;
567
+ setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
512
568
  searchString?: string;
513
569
  setSearchString?: (searchString?: string) => void;
514
570
  clearFilter?: () => void;
@@ -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
@@ -8,7 +9,7 @@ import { ResolvedEntityCollection } from "./resolved_entities";
8
9
  export interface FetchEntityProps<M extends Record<string, any> = any> {
9
10
  path: string;
10
11
  entityId: string;
11
- collection?: EntityCollection<M>
12
+ collection?: EntityCollection<M, any>
12
13
  }
13
14
 
14
15
  /**
@@ -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
  }
@@ -29,7 +31,7 @@ export interface FetchCollectionProps<M extends Record<string, any> = any> {
29
31
  collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
30
32
  filter?: FilterValues<Extract<keyof M, string>>,
31
33
  limit?: number;
32
- startAfter?: any[];
34
+ startAfter?: any;
33
35
  orderBy?: string;
34
36
  searchString?: string;
35
37
  order?: "desc" | "asc";
@@ -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,24 +201,38 @@ 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
211
215
  */
212
- countEntities<M extends Record<string, any> = any>(props: FetchCollectionProps<M>): Promise<number>;
216
+ countEntities?<M extends Record<string, any> = any>(props: FetchCollectionProps<M>): Promise<number>;
213
217
 
214
218
  /**
215
219
  * Check if the given filter combination is valid
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,29 @@ 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
+
263
+ /**
264
+ * If the user is authenticated to use the data source
265
+ */
266
+ authenticated?: boolean;
267
+
243
268
  /**
244
269
  * Fetch data from a collection
245
270
  * @param path
@@ -297,7 +322,7 @@ export interface DataSourceDelegate {
297
322
  fetchEntity<M extends Record<string, any> = any>({
298
323
  path,
299
324
  entityId,
300
- }: Omit<FetchEntityProps<M>, "collection">): Promise<Entity<M> | undefined>;
325
+ }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
301
326
 
302
327
  /**
303
328
  * Get realtime updates on one entity.
@@ -313,13 +338,13 @@ export interface DataSourceDelegate {
313
338
  entityId,
314
339
  onUpdate,
315
340
  onError
316
- }: Omit<ListenEntityProps<M>, "collection">): () => void;
341
+ }: ListenEntityProps<M>): () => void;
317
342
 
318
343
  /**
319
344
  * Save entity to the specified path
320
345
  * @param path
321
- * @param id
322
- * @param collection
346
+ * @param entityId
347
+ * @param values
323
348
  * @param status
324
349
  */
325
350
  saveEntity<M extends Record<string, any> = any>({
@@ -342,48 +367,45 @@ export interface DataSourceDelegate {
342
367
  * @param name of the property
343
368
  * @param value
344
369
  * @param entityId
370
+ * @param collection
345
371
  * @return `true` if there are no other fields besides the given entity
346
372
  */
347
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
373
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
348
374
 
349
375
  /**
350
376
  * Generate an id for a new entity
351
377
  */
352
- generateEntityId(path: string): string;
378
+ generateEntityId(path: string, collection?: EntityCollection): string;
353
379
 
354
380
  /**
355
381
  * Count the number of entities in a collection
356
382
  */
357
- countEntities<M extends Record<string, any> = any>(props: FetchCollectionDelegateProps<M>): Promise<number>;
383
+ countEntities?<M extends Record<string, any> = any>(props: FetchCollectionDelegateProps<M>): Promise<number>;
358
384
 
359
385
  /**
360
386
  * Check if the given filter combination is valid
361
387
  * @param props
362
388
  */
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,
389
+ isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
390
+ databaseId?: string
391
+ }): boolean;
376
392
 
377
393
  /**
378
394
  * Get the object to generate the current time in the datasource
379
395
  */
380
- currentTime(): any;
381
-
382
- buildDate: (date: Date) => any;
383
-
384
- buildDeleteFieldValue: () => any;
396
+ currentTime?: () => any;
385
397
 
386
398
  delegateToCMSModel: (data: any) => any;
387
399
 
400
+ cmsToDelegateModel: (data: any) => any;
401
+
388
402
  setDateToMidnight: (input?: any) => any;
403
+
404
+ initTextSearch?: (props: {
405
+ context: FireCMSContext,
406
+ path: string,
407
+ databaseId?: string,
408
+ collection: EntityCollection,
409
+ parentCollectionIds?: string[]
410
+ }) => Promise<boolean>;
389
411
  }
@@ -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
  */
@@ -56,6 +58,10 @@ export class EntityReference<M extends Record<string, any> = any> {
56
58
  get pathWithId() {
57
59
  return `${this.path}/${this.id}`;
58
60
  }
61
+
62
+ isEntityReference() {
63
+ return true;
64
+ }
59
65
  }
60
66
 
61
67
  export class GeoPoint {
@@ -74,3 +80,11 @@ export class GeoPoint {
74
80
  this.longitude = longitude;
75
81
  }
76
82
  }
83
+
84
+ export class Vector {
85
+ readonly value: number[];
86
+
87
+ constructor(value: number[]) {
88
+ this.value = value;
89
+ }
90
+ }
@@ -5,9 +5,25 @@ import { EntityCollection, SelectionController } from "./collections";
5
5
  import { User } from "./user";
6
6
  import { SideEntityController } from "./side_entity_controller";
7
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
+ */
8
12
  export type EntityAction<M extends object = any, UserType extends User = User> = {
13
+ /**
14
+ * Title of the action
15
+ */
9
16
  name: string;
17
+
18
+ /**
19
+ * Icon of the action
20
+ */
10
21
  icon?: React.ReactElement;
22
+
23
+ /**
24
+ * Callback when the action is clicked
25
+ * @param props
26
+ */
11
27
  onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
12
28
 
13
29
  /**
@@ -21,6 +37,7 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
21
37
  * Show this action in the form, defaults to true
22
38
  */
23
39
  includeInForm?: boolean;
40
+
24
41
  }
25
42
 
26
43
  export type EntityActionClickProps<M extends object, UserType extends User = User> = {
@@ -65,7 +65,8 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
65
65
  *
66
66
  * @param idUpdateProps
67
67
  */
68
- onIdUpdate?(idUpdateProps: EntityIdUpdateProps<M>): string;
68
+ onIdUpdate?(idUpdateProps: EntityIdUpdateProps<M>): string | Promise<string>;
69
+
69
70
  }
70
71
 
71
72
  /**
@@ -77,7 +78,7 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
77
78
  /**
78
79
  * Collection of the entity
79
80
  */
80
- collection: EntityCollection<M>;
81
+ collection: EntityCollection<M, UserType>;
81
82
 
82
83
  /**
83
84
  * Full path of the CMS where this collection is being fetched.
@@ -192,7 +193,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
192
193
  /**
193
194
  * Context of the app status
194
195
  */
195
- context: FireCMSContext;
196
+ context: FireCMSContext<UserType>;
196
197
  }
197
198
 
198
199
  /**