@firecms/core 3.0.0-canary.21 → 3.0.0-canary.210

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 (380) 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 +34 -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 +23 -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 +13 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  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/index.d.ts +1 -1
  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 +7 -4
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +16 -2
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  24. package/dist/components/EntityPreview.d.ts +5 -4
  25. package/dist/components/ErrorView.d.ts +1 -1
  26. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  27. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  28. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  29. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  30. package/dist/components/ReferenceWidget.d.ts +3 -1
  31. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  32. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  33. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  34. package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
  35. package/dist/components/VirtualTable/types.d.ts +3 -3
  36. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  37. package/dist/components/common/index.d.ts +2 -1
  38. package/dist/components/common/table_height.d.ts +5 -0
  39. package/dist/components/common/types.d.ts +4 -6
  40. package/dist/components/common/useColumnsIds.d.ts +3 -1
  41. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  42. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  43. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  44. package/dist/components/index.d.ts +4 -2
  45. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  46. package/dist/core/DefaultAppBar.d.ts +29 -0
  47. package/dist/core/DefaultDrawer.d.ts +19 -0
  48. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  49. package/dist/core/EntityEditView.d.ts +33 -11
  50. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  51. package/dist/core/FireCMS.d.ts +3 -3
  52. package/dist/core/FireCMSRouter.d.ts +4 -0
  53. package/dist/core/NavigationRoutes.d.ts +2 -3
  54. package/dist/core/SideDialogs.d.ts +4 -2
  55. package/dist/core/index.d.ts +4 -4
  56. package/dist/form/EntityForm.d.ts +37 -69
  57. package/dist/form/EntityFormActions.d.ts +17 -0
  58. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  59. package/dist/form/components/ErrorFocus.d.ts +1 -1
  60. package/dist/form/components/FieldHelperText.d.ts +3 -3
  61. package/dist/form/components/FormEntry.d.ts +6 -0
  62. package/dist/form/components/FormLayout.d.ts +5 -0
  63. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  64. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  65. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  66. package/dist/form/components/index.d.ts +3 -1
  67. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  68. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  73. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  74. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  75. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  76. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  79. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  80. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  81. package/dist/form/index.d.ts +16 -18
  82. package/dist/form/useClearRestoreValue.d.ts +2 -2
  83. package/dist/hooks/data/delete.d.ts +4 -4
  84. package/dist/hooks/data/save.d.ts +4 -5
  85. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  86. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  87. package/dist/hooks/index.d.ts +1 -0
  88. package/dist/hooks/useAuthController.d.ts +1 -1
  89. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  90. package/dist/hooks/useBuildNavigationController.d.ts +7 -5
  91. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  92. package/dist/hooks/useModeController.d.ts +1 -2
  93. package/dist/hooks/useProjectLog.d.ts +8 -2
  94. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  95. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  96. package/dist/index.d.ts +1 -0
  97. package/dist/index.es.js +21823 -14330
  98. package/dist/index.es.js.map +1 -1
  99. package/dist/index.umd.js +24174 -588
  100. package/dist/index.umd.js.map +1 -1
  101. package/dist/internal/useBuildDataSource.d.ts +1 -16
  102. package/dist/internal/useBuildSideEntityController.d.ts +2 -2
  103. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  104. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  105. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  106. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  107. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  108. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  109. package/dist/preview/util.d.ts +3 -3
  110. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  111. package/dist/routes/FireCMSRoute.d.ts +1 -0
  112. package/dist/routes/HomePageRoute.d.ts +3 -0
  113. package/dist/types/auth.d.ts +8 -10
  114. package/dist/types/collections.d.ts +77 -22
  115. package/dist/types/datasource.d.ts +52 -36
  116. package/dist/types/dialogs_controller.d.ts +7 -3
  117. package/dist/types/entities.d.ts +7 -2
  118. package/dist/types/entity_actions.d.ts +28 -4
  119. package/dist/types/entity_callbacks.d.ts +16 -16
  120. package/dist/types/entity_overrides.d.ts +2 -2
  121. package/dist/types/export_import.d.ts +4 -4
  122. package/dist/types/fields.d.ts +71 -42
  123. package/dist/types/firecms.d.ts +6 -2
  124. package/dist/types/firecms_context.d.ts +1 -1
  125. package/dist/types/index.d.ts +0 -1
  126. package/dist/types/navigation.d.ts +32 -14
  127. package/dist/types/permissions.d.ts +4 -4
  128. package/dist/types/plugins.d.ts +23 -12
  129. package/dist/types/properties.d.ts +52 -24
  130. package/dist/types/property_config.d.ts +0 -2
  131. package/dist/types/side_dialogs_controller.d.ts +10 -0
  132. package/dist/types/side_entity_controller.d.ts +6 -1
  133. package/dist/types/storage.d.ts +86 -3
  134. package/dist/types/user.d.ts +1 -0
  135. package/dist/util/builders.d.ts +3 -3
  136. package/dist/util/entities.d.ts +3 -3
  137. package/dist/util/entity_actions.d.ts +2 -0
  138. package/dist/util/entity_cache.d.ts +23 -0
  139. package/dist/util/icon_list.d.ts +5 -1
  140. package/dist/util/icon_synonyms.d.ts +1 -98
  141. package/dist/util/icons.d.ts +6 -3
  142. package/dist/util/index.d.ts +2 -0
  143. package/dist/util/navigation_from_path.d.ts +6 -1
  144. package/dist/util/navigation_utils.d.ts +14 -3
  145. package/dist/util/objects.d.ts +2 -1
  146. package/dist/util/permissions.d.ts +4 -4
  147. package/dist/util/plurals.d.ts +0 -2
  148. package/dist/util/property_utils.d.ts +3 -3
  149. package/dist/util/resolutions.d.ts +36 -17
  150. package/dist/util/storage.d.ts +23 -2
  151. package/dist/util/useStorageUploadController.d.ts +3 -3
  152. package/package.json +61 -48
  153. package/src/app/AppBar.tsx +18 -0
  154. package/src/app/Drawer.tsx +24 -0
  155. package/src/app/Scaffold.tsx +253 -0
  156. package/src/app/index.ts +4 -0
  157. package/src/app/useApp.tsx +32 -0
  158. package/src/components/ArrayContainer.tsx +127 -41
  159. package/src/components/CircularProgressCenter.tsx +2 -2
  160. package/src/components/ClearFilterSortButton.tsx +41 -0
  161. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  162. package/src/components/DeleteEntityDialog.tsx +10 -19
  163. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
  164. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  165. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  166. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  167. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  168. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  169. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  170. package/src/components/EntityCollectionTable/index.tsx +1 -1
  171. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
  172. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  173. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  174. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
  175. package/src/components/EntityCollectionView/EntityCollectionView.tsx +207 -113
  176. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
  177. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  178. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  179. package/src/components/EntityCollectionView/utils.ts +19 -0
  180. package/src/components/EntityPreview.tsx +62 -52
  181. package/src/components/EntityView.tsx +10 -10
  182. package/src/components/ErrorView.tsx +4 -4
  183. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  184. package/src/components/HomePage/FavouritesView.tsx +6 -11
  185. package/src/components/HomePage/NavigationCard.tsx +3 -3
  186. package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
  187. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  188. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  189. package/src/components/NotFoundPage.tsx +2 -2
  190. package/src/components/PropertyConfigBadge.tsx +9 -3
  191. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  192. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
  193. package/src/components/ReferenceWidget.tsx +21 -11
  194. package/src/components/SearchIconsView.tsx +10 -7
  195. package/src/components/SelectableTable/SelectableTable.tsx +27 -12
  196. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  197. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  198. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  199. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  200. package/src/components/UnsavedChangesDialog.tsx +42 -0
  201. package/src/components/VirtualTable/VirtualTable.tsx +96 -48
  202. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  203. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  204. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  205. package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
  206. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  207. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  208. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
  209. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  210. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  211. package/src/components/VirtualTable/types.tsx +2 -3
  212. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +33 -40
  213. package/src/components/common/index.ts +2 -1
  214. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  215. package/src/components/common/types.tsx +4 -6
  216. package/src/components/common/useColumnsIds.tsx +24 -3
  217. package/src/components/common/useDataSourceTableController.tsx +420 -0
  218. package/src/components/common/useDebouncedCallback.tsx +20 -0
  219. package/src/components/common/useScrollRestoration.tsx +68 -0
  220. package/src/components/common/useTableSearchHelper.ts +53 -12
  221. package/src/components/index.tsx +4 -2
  222. package/src/contexts/BreacrumbsContext.tsx +38 -0
  223. package/src/contexts/DialogsProvider.tsx +5 -4
  224. package/src/contexts/ModeController.tsx +1 -3
  225. package/src/contexts/SnackbarProvider.tsx +2 -0
  226. package/src/core/DefaultAppBar.tsx +219 -0
  227. package/src/core/DefaultDrawer.tsx +185 -0
  228. package/src/core/DrawerNavigationItem.tsx +66 -0
  229. package/src/core/EntityEditView.tsx +321 -479
  230. package/src/core/EntityEditViewFormActions.tsx +199 -0
  231. package/src/core/EntitySidePanel.tsx +86 -17
  232. package/src/core/FireCMS.tsx +56 -49
  233. package/src/core/FireCMSRouter.tsx +17 -0
  234. package/src/core/NavigationRoutes.tsx +28 -38
  235. package/src/core/SideDialogs.tsx +22 -12
  236. package/src/core/field_configs.tsx +11 -12
  237. package/src/core/index.tsx +6 -5
  238. package/src/form/EntityForm.tsx +585 -539
  239. package/src/form/EntityFormActions.tsx +169 -0
  240. package/src/form/PropertyFieldBinding.tsx +85 -44
  241. package/src/form/components/CustomIdField.tsx +6 -2
  242. package/src/form/components/FieldHelperText.tsx +4 -4
  243. package/src/form/components/FormEntry.tsx +22 -0
  244. package/src/form/components/FormLayout.tsx +16 -0
  245. package/src/form/components/LabelWithIcon.tsx +30 -19
  246. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  247. package/src/form/components/StorageItemPreview.tsx +22 -12
  248. package/src/form/components/StorageUploadProgress.tsx +4 -5
  249. package/src/form/components/index.tsx +3 -1
  250. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +31 -19
  251. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -35
  252. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  253. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  254. package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
  255. package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
  256. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
  257. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  258. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  259. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  260. package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -35
  261. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
  262. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -50
  263. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  264. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  265. package/src/form/index.tsx +16 -37
  266. package/src/form/useClearRestoreValue.tsx +2 -2
  267. package/src/form/validation.ts +13 -23
  268. package/src/hooks/data/delete.ts +6 -5
  269. package/src/hooks/data/save.ts +13 -9
  270. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  271. package/src/hooks/data/useDataSource.tsx +11 -3
  272. package/src/hooks/data/useEntityFetch.tsx +10 -6
  273. package/src/hooks/index.tsx +1 -0
  274. package/src/hooks/useAuthController.tsx +1 -1
  275. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  276. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  277. package/src/hooks/useBuildModeController.tsx +22 -29
  278. package/src/hooks/useBuildNavigationController.tsx +159 -54
  279. package/src/hooks/useFireCMSContext.tsx +5 -5
  280. package/src/hooks/useLargeLayout.tsx +0 -35
  281. package/src/hooks/useModeController.tsx +1 -2
  282. package/src/hooks/useProjectLog.tsx +32 -10
  283. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  284. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  285. package/src/index.ts +1 -0
  286. package/src/internal/useBuildDataSource.ts +72 -82
  287. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  288. package/src/internal/useBuildSideEntityController.tsx +193 -73
  289. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  290. package/src/preview/PropertyPreview.tsx +17 -24
  291. package/src/preview/PropertyPreviewProps.tsx +7 -1
  292. package/src/preview/components/BooleanPreview.tsx +2 -2
  293. package/src/preview/components/EmptyValue.tsx +1 -1
  294. package/src/preview/components/EnumValuesChip.tsx +2 -2
  295. package/src/preview/components/ImagePreview.tsx +25 -36
  296. package/src/preview/components/ReferencePreview.tsx +22 -33
  297. package/src/preview/components/StorageThumbnail.tsx +5 -1
  298. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  299. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  300. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  301. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  302. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  303. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  304. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  305. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  306. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  307. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  308. package/src/preview/util.ts +10 -10
  309. package/src/routes/CustomCMSRoute.tsx +21 -0
  310. package/src/routes/FireCMSRoute.tsx +235 -0
  311. package/src/routes/HomePageRoute.tsx +17 -0
  312. package/src/types/auth.tsx +9 -13
  313. package/src/types/collections.ts +94 -27
  314. package/src/types/customization_controller.tsx +0 -1
  315. package/src/types/datasource.ts +61 -43
  316. package/src/types/dialogs_controller.tsx +7 -3
  317. package/src/types/entities.ts +12 -2
  318. package/src/types/entity_actions.tsx +32 -7
  319. package/src/types/entity_callbacks.ts +18 -18
  320. package/src/types/entity_overrides.tsx +2 -2
  321. package/src/types/export_import.ts +4 -4
  322. package/src/types/fields.tsx +81 -46
  323. package/src/types/firecms.tsx +7 -2
  324. package/src/types/firecms_context.tsx +1 -1
  325. package/src/types/index.ts +0 -1
  326. package/src/types/navigation.ts +38 -18
  327. package/src/types/permissions.ts +5 -5
  328. package/src/types/plugins.tsx +25 -14
  329. package/src/types/properties.ts +60 -25
  330. package/src/types/property_config.tsx +0 -2
  331. package/src/types/side_dialogs_controller.tsx +15 -0
  332. package/src/types/side_entity_controller.tsx +6 -1
  333. package/src/types/storage.ts +94 -3
  334. package/src/types/user.ts +2 -0
  335. package/src/util/builders.ts +10 -8
  336. package/src/util/entities.ts +9 -6
  337. package/src/util/entity_actions.ts +28 -0
  338. package/src/util/entity_cache.ts +204 -0
  339. package/src/util/enums.ts +1 -1
  340. package/src/util/icon_list.ts +16 -10
  341. package/src/util/icon_synonyms.ts +3 -100
  342. package/src/util/icons.tsx +17 -7
  343. package/src/util/index.ts +2 -0
  344. package/src/util/join_collections.ts +3 -0
  345. package/src/util/make_properties_editable.ts +13 -5
  346. package/src/util/navigation_from_path.ts +13 -6
  347. package/src/util/navigation_utils.ts +59 -7
  348. package/src/util/objects.ts +48 -28
  349. package/src/util/parent_references_from_path.ts +3 -3
  350. package/src/util/permissions.ts +9 -8
  351. package/src/util/plurals.ts +0 -2
  352. package/src/util/property_utils.tsx +11 -4
  353. package/src/util/references.ts +11 -2
  354. package/src/util/resolutions.ts +100 -46
  355. package/src/util/storage.ts +79 -21
  356. package/src/util/strings.ts +2 -2
  357. package/src/util/useStorageUploadController.tsx +71 -27
  358. package/dist/components/FireCMSAppBar.d.ts +0 -26
  359. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  360. package/dist/components/VirtualTable/common.d.ts +0 -2
  361. package/dist/core/Drawer.d.ts +0 -23
  362. package/dist/core/Scaffold.d.ts +0 -55
  363. package/dist/core/SideEntityView.d.ts +0 -7
  364. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  365. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  366. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  367. package/dist/internal/useLocaleConfig.d.ts +0 -1
  368. package/dist/types/appcheck.d.ts +0 -26
  369. package/src/components/FireCMSAppBar.tsx +0 -165
  370. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  371. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  372. package/src/core/Drawer.tsx +0 -191
  373. package/src/core/Scaffold.tsx +0 -281
  374. package/src/core/SideEntityView.tsx +0 -38
  375. package/src/form/components/FormikArrayContainer.tsx +0 -44
  376. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  377. package/src/internal/useBuildCustomizationController.tsx +0 -5
  378. package/src/internal/useLocaleConfig.tsx +0 -18
  379. package/src/types/appcheck.ts +0 -29
  380. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -1,36 +1,31 @@
1
1
  import { useCallback, useEffect, useRef, useState } from "react";
2
2
  import equal from "react-fast-compare";
3
3
 
4
- import { AppCheckTokenResult, AuthController, Authenticator, DataSourceDelegate, StorageSource, User } from "../index";
4
+ import { AuthController, Authenticator, DataSourceDelegate, StorageSource, User } from "../index";
5
5
 
6
6
  /**
7
7
  * This hook is used internally for validating an authenticator.
8
8
  *
9
9
  * @param authController
10
10
  * @param authentication
11
- * @param getAppCheckToken
12
- * @param appCheckForceRefresh
13
11
  * @param storageSource
14
12
  * @param dataSourceDelegate
15
13
  */
16
- export function useValidateAuthenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>>({
17
- disabled,
18
- authController,
19
- authenticator,
20
- getAppCheckToken,
21
- appCheckForceRefresh = false,
22
- storageSource,
23
- dataSourceDelegate
24
- }:
25
- {
26
- disabled?: boolean,
27
- authController: Controller,
28
- authenticator?: boolean | Authenticator<UserType, Controller>,
29
- getAppCheckToken?: (forceRefresh: boolean) => Promise<AppCheckTokenResult> | undefined,
30
- appCheckForceRefresh?: boolean,
31
- dataSourceDelegate: DataSourceDelegate;
32
- storageSource: StorageSource;
33
- }): {
14
+ export function useValidateAuthenticator<USER extends User = any>
15
+ ({
16
+ disabled,
17
+ authController,
18
+ authenticator,
19
+ storageSource,
20
+ dataSourceDelegate
21
+ }:
22
+ {
23
+ disabled?: boolean,
24
+ authController: AuthController<USER>,
25
+ authenticator?: boolean | Authenticator<USER>,
26
+ dataSourceDelegate: DataSourceDelegate;
27
+ storageSource: StorageSource;
28
+ }): {
34
29
  canAccessMainView: boolean,
35
30
  authLoading: boolean,
36
31
  notAllowedError: any,
@@ -76,21 +71,6 @@ export function useValidateAuthenticator<UserType extends User = User, Controlle
76
71
  }
77
72
 
78
73
  const delegateUser = authController.user;
79
- console.debug("Checking authentication for user", delegateUser);
80
-
81
- if (getAppCheckToken) {
82
- try {
83
- if (!await getAppCheckToken(appCheckForceRefresh)) {
84
- setNotAllowedError("App Check failed.");
85
- authController.signOut();
86
- } else {
87
- console.debug("App Check success.");
88
- }
89
- } catch (e: any) {
90
- setNotAllowedError(e.message);
91
- authController.signOut();
92
- }
93
- }
94
74
 
95
75
  if (authenticator instanceof Function && delegateUser && !equal(checkedUserRef.current?.uid, delegateUser.uid)) {
96
76
  setAuthLoading(true);
@@ -120,7 +100,7 @@ export function useValidateAuthenticator<UserType extends User = User, Controlle
120
100
  setAuthVerified(true);
121
101
  }
122
102
 
123
- }, [disabled, authController, authenticator, getAppCheckToken, appCheckForceRefresh, dataSourceDelegate, storageSource]);
103
+ }, [disabled, authController, authenticator, dataSourceDelegate, storageSource]);
124
104
 
125
105
  useEffect(() => {
126
106
  checkAuthentication();
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./core";
2
+ export * from "./app";
2
3
  export * from "./types";
3
4
  export * from "./form";
4
5
  export * from "./preview";
@@ -5,12 +5,11 @@ import {
5
5
  DeleteEntityProps,
6
6
  Entity,
7
7
  EntityCollection,
8
- EntityReference,
9
8
  EntityValues,
10
9
  FetchCollectionProps,
11
10
  FetchEntityProps,
12
11
  FilterValues,
13
- GeoPoint,
12
+ FireCMSContext,
14
13
  ListenCollectionProps,
15
14
  ListenEntityProps,
16
15
  NavigationController,
@@ -53,23 +52,25 @@ export function useBuildDataSource({
53
52
  */
54
53
  fetchCollection: useCallback(<M extends Record<string, any>>({
55
54
  path,
56
- collection: collectionProp,
55
+ collection,
57
56
  filter,
58
57
  limit,
59
58
  startAfter,
60
59
  searchString,
61
60
  orderBy,
62
- order
61
+ order,
63
62
  }: FetchCollectionProps<M>
64
63
  ): Promise<Entity<M>[]> => {
65
- return delegate.fetchCollection<M>({
64
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
65
+ return usedDelegate.fetchCollection<M>({
66
66
  path,
67
67
  filter,
68
68
  limit,
69
69
  startAfter,
70
70
  searchString,
71
71
  orderBy,
72
- order
72
+ order,
73
+ collection
73
74
  });
74
75
  }, [delegate]),
75
76
 
@@ -90,7 +91,6 @@ export function useBuildDataSource({
90
91
  * @group Firestore
91
92
  */
92
93
  listenCollection: delegate.listenCollection
93
- // eslint-disable-next-line react-hooks/rules-of-hooks
94
94
  ? useCallback(<M extends Record<string, any>>(
95
95
  {
96
96
  path,
@@ -107,11 +107,12 @@ export function useBuildDataSource({
107
107
  ): () => void => {
108
108
 
109
109
  const collection = collectionProp ?? navigationController.getCollection(path);
110
- const isCollectionGroup = Boolean(collection?.collectionGroup) ?? false;
111
- if (!delegate.listenCollection)
110
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
111
+
112
+ if (!usedDelegate.listenCollection)
112
113
  throw Error("useBuildDataSource delegate not initialised");
113
114
 
114
- return delegate.listenCollection<M>({
115
+ return usedDelegate.listenCollection<M>({
115
116
  path,
116
117
  filter,
117
118
  limit,
@@ -121,8 +122,7 @@ export function useBuildDataSource({
121
122
  order,
122
123
  onUpdate,
123
124
  onError,
124
- isCollectionGroup,
125
- collection
125
+ collection,
126
126
  });
127
127
  }, [delegate, navigationController.getCollection])
128
128
  : undefined,
@@ -136,12 +136,17 @@ export function useBuildDataSource({
136
136
  */
137
137
  fetchEntity: useCallback(<M extends Record<string, any>>({
138
138
  path,
139
- entityId
139
+ entityId,
140
+ collection
140
141
  }: FetchEntityProps<M>
141
- ): Promise<Entity<M> | undefined> => delegate.fetchEntity({
142
- path,
143
- entityId
144
- }), [delegate]),
142
+ ): Promise<Entity<M> | undefined> => {
143
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
144
+ return usedDelegate.fetchEntity({
145
+ path,
146
+ entityId,
147
+ collection
148
+ });
149
+ }, [delegate.fetchEntity]),
145
150
 
146
151
  /**
147
152
  *
@@ -154,7 +159,6 @@ export function useBuildDataSource({
154
159
  * @group Firestore
155
160
  */
156
161
  listenEntity: delegate.listenEntity
157
- // eslint-disable-next-line react-hooks/rules-of-hooks
158
162
  ? useCallback(<M extends Record<string, any>>(
159
163
  {
160
164
  path,
@@ -163,14 +167,17 @@ export function useBuildDataSource({
163
167
  onUpdate,
164
168
  onError
165
169
  }: ListenEntityProps<M>): () => void => {
166
- if (!delegate.listenEntity)
170
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
171
+
172
+ if (!usedDelegate.listenEntity)
167
173
  throw Error("useBuildDataSource delegate not initialised");
168
174
 
169
- return delegate.listenEntity<M>({
175
+ return usedDelegate.listenEntity<M>({
170
176
  path,
171
177
  entityId,
172
178
  onUpdate,
173
- onError
179
+ onError,
180
+ collection
174
181
  })
175
182
  }, [delegate.listenEntity]) : undefined,
176
183
 
@@ -195,46 +202,45 @@ export function useBuildDataSource({
195
202
  }: SaveEntityProps<M>): Promise<Entity<M>> => {
196
203
 
197
204
  const collection = collectionProp ?? navigationController.getCollection(path);
205
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
198
206
 
199
207
  const resolvedCollection = collection
200
208
  ? resolveCollection<M>({
201
209
  collection,
202
210
  path,
203
211
  entityId,
204
- fields: propertyConfigs
212
+ propertyConfigs: propertyConfigs
205
213
  })
206
214
  : undefined;
207
215
 
208
216
  const properties: ResolvedProperties<M> | undefined = resolvedCollection?.properties;
209
217
 
210
- const firestoreValues = cmsToDelegateModel(
218
+ const firestoreValues = usedDelegate.cmsToDelegateModel(
211
219
  values,
212
- delegate.buildReference,
213
- delegate.buildGeoPoint,
214
- delegate.buildDate,
215
- delegate.buildDeleteFieldValue
216
220
  );
217
- const updatedFirestoreValues: EntityValues<M> = properties
221
+
222
+ const updatedValues: EntityValues<M> = properties
218
223
  ? updateDateAutoValues(
219
224
  {
220
225
  inputValues: firestoreValues,
221
226
  properties,
222
227
  status,
223
- timestampNowValue: delegate.currentTime(),
224
- setDateToMidnight: delegate.setDateToMidnight
228
+ timestampNowValue: usedDelegate.currentTime?.() ?? new Date(),
229
+ setDateToMidnight: usedDelegate.setDateToMidnight
225
230
  })
226
231
  : firestoreValues;
227
232
 
228
- return delegate.saveEntity({
233
+ return usedDelegate.saveEntity({
229
234
  path,
235
+ collection,
230
236
  entityId,
231
- values: updatedFirestoreValues,
237
+ values: updatedValues,
232
238
  status
233
239
  }).then((res) => {
234
240
  return {
235
241
  id: res.id,
236
242
  path: res.path,
237
- values: delegate.delegateToCMSModel(updatedFirestoreValues)
243
+ values: usedDelegate.delegateToCMSModel(updatedValues)
238
244
  } as Entity<M>;
239
245
  });
240
246
  }, [delegate.saveEntity, navigationController.getCollection]),
@@ -247,10 +253,15 @@ export function useBuildDataSource({
247
253
  */
248
254
  deleteEntity: useCallback(<M extends Record<string, any>>(
249
255
  {
250
- entity
256
+ entity,
257
+ collection
251
258
  }: DeleteEntityProps<M>
252
259
  ): Promise<void> => {
253
- return delegate.deleteEntity({ entity });
260
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
261
+ return usedDelegate.deleteEntity({
262
+ entity,
263
+ collection
264
+ });
254
265
  }, [delegate.deleteEntity]),
255
266
 
256
267
  /**
@@ -267,13 +278,16 @@ export function useBuildDataSource({
267
278
  path: string,
268
279
  name: string,
269
280
  value: any,
270
- entityId?: string
281
+ entityId?: string,
282
+ collection?: EntityCollection
271
283
  ): Promise<boolean> => {
272
- return delegate.checkUniqueField(path, name, value, entityId);
284
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
285
+ return usedDelegate.checkUniqueField(path, name, value, entityId, collection);
273
286
  }, [delegate.checkUniqueField]),
274
287
 
275
- generateEntityId: useCallback((path: string): string => {
276
- return delegate.generateEntityId(path,);
288
+ generateEntityId: useCallback((path: string, collection: EntityCollection): string => {
289
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
290
+ return usedDelegate.generateEntityId(path, collection);
277
291
  }, [delegate.generateEntityId]),
278
292
 
279
293
  countEntities: delegate.countEntities ? async ({
@@ -289,21 +303,24 @@ export function useBuildDataSource({
289
303
  orderBy?: string,
290
304
  order?: "desc" | "asc",
291
305
  }): Promise<number> => {
292
- return delegate.countEntities!({
306
+ const usedDelegate = collection?.overrides?.dataSourceDelegate ?? delegate;
307
+ return usedDelegate.countEntities!({
293
308
  path,
294
309
  filter,
295
310
  orderBy,
296
311
  order,
297
- isCollectionGroup: Boolean(collection.collectionGroup) ?? false
312
+ collection
298
313
  });
299
314
  } : undefined,
300
315
 
301
316
  isFilterCombinationValid: useCallback(({
302
317
  path,
318
+ databaseId,
303
319
  filterValues,
304
320
  sortBy
305
321
  }: {
306
322
  path: string,
323
+ databaseId?: string,
307
324
  filterValues: FilterValues<any>,
308
325
  sortBy?: [string, "asc" | "desc"]
309
326
  }): boolean => {
@@ -312,52 +329,25 @@ export function useBuildDataSource({
312
329
  return delegate.isFilterCombinationValid(
313
330
  {
314
331
  path,
332
+ databaseId,
315
333
  filterValues,
316
334
  sortBy
317
335
  }
318
336
  )
319
- }, [delegate.isFilterCombinationValid])
337
+ }, [delegate.isFilterCombinationValid]),
320
338
 
321
- };
339
+ initTextSearch: useCallback(async (props: {
340
+ context: FireCMSContext,
341
+ path: string,
342
+ collection: EntityCollection,
343
+ parentCollectionIds?: string[]
344
+ }): Promise<boolean> => {
345
+ const usedDelegate = props.collection?.overrides?.dataSourceDelegate ?? delegate;
346
+ if (!usedDelegate.initTextSearch)
347
+ return false;
348
+ return usedDelegate.initTextSearch(props)
349
+ }, [delegate.initTextSearch]),
322
350
 
323
- }
351
+ };
324
352
 
325
- /**
326
- * Recursive function that converts Firestore data types into CMS or plain
327
- * JS types.
328
- * FireCMS uses Javascript dates internally instead of Firestore timestamps.
329
- * This makes it easier to interact with the rest of the libraries and
330
- * bindings.
331
- * Also, Firestore references are replaced with {@link EntityReference}
332
- * @param data
333
- * @param buildReference
334
- * @param buildGeoPoint
335
- * @param buildDate
336
- * @param buildDelete
337
- * @group Firestore
338
- */
339
- export function cmsToDelegateModel(data: any,
340
- buildReference: (reference: EntityReference) => any,
341
- buildGeoPoint: (geoPoint: GeoPoint) => any,
342
- buildDate: (date: Date) => any,
343
- buildDelete: () => any
344
- ): any {
345
- if (data === undefined) {
346
- return buildDelete();
347
- } else if (data === null) {
348
- return null;
349
- } else if (Array.isArray(data)) {
350
- return data.map(v => cmsToDelegateModel(v, buildReference, buildGeoPoint, buildDate, buildDelete));
351
- } else if (data.isEntityReference && data.isEntityReference()) {
352
- return buildReference(data);
353
- } else if (data instanceof GeoPoint) {
354
- return buildGeoPoint(data);
355
- } else if (data instanceof Date) {
356
- return buildDate(data);
357
- } else if (data && typeof data === "object") {
358
- return Object.entries(data)
359
- .map(([key, v]) => ({ [key]: cmsToDelegateModel(v, buildReference, buildGeoPoint, buildDate, buildDelete) }))
360
- .reduce((a, b) => ({ ...a, ...b }), {});
361
- }
362
- return data;
363
353
  }
@@ -25,8 +25,9 @@ export function useBuildSideDialogsController(): SideDialogsController {
25
25
  const newPanels = panelKeys
26
26
  .map(key => routesStore.current[key])
27
27
  .filter(p => Boolean(p)) as SideDialogPanelProps[];
28
- if (!equal(sidePanelsRef.current.map(p => p.key), newPanels.map(p => p.key)))
28
+ if (!equal(sidePanelsRef.current.map(p => p.key), newPanels.map(p => p.key))) {
29
29
  updateSidePanels(newPanels);
30
+ }
30
31
  }, [location]);
31
32
 
32
33
  const close = useCallback(() => {
@@ -39,7 +40,7 @@ export function useBuildSideDialogsController(): SideDialogsController {
39
40
  updateSidePanels(updatedPanels);
40
41
 
41
42
  if (routesCount.current > 0) {
42
- if (lastSidePanel.urlPath)
43
+ if (lastSidePanel.urlPath) // if it has a url path, we need to navigate back, don't remove this code
43
44
  navigate(-1);
44
45
  routesCount.current--;
45
46
  } else if (lastSidePanel.parentUrlPath) {
@@ -118,6 +119,7 @@ export function useBuildSideDialogsController(): SideDialogsController {
118
119
 
119
120
  return {
120
121
  sidePanels,
122
+ setSidePanels: updateSidePanels,
121
123
  close,
122
124
  open,
123
125
  replace