@firecms/core 3.0.0-canary.25 → 3.0.0-canary.250

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 (401) 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 +31 -12
  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 +20 -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/EntityJsonPreview.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +8 -5
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  28. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  29. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  30. package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
  31. package/dist/components/HomePage/NavigationGroup.d.ts +7 -1
  32. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  33. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  34. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  35. package/dist/components/ReferenceWidget.d.ts +3 -1
  36. package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
  37. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  38. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  39. package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
  40. package/dist/components/VirtualTable/types.d.ts +3 -3
  41. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  42. package/dist/components/common/index.d.ts +2 -1
  43. package/dist/components/common/table_height.d.ts +5 -0
  44. package/dist/components/common/types.d.ts +4 -6
  45. package/dist/components/common/useColumnsIds.d.ts +3 -1
  46. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  47. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  48. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  49. package/dist/components/index.d.ts +5 -2
  50. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  51. package/dist/core/DefaultAppBar.d.ts +29 -0
  52. package/dist/core/DefaultDrawer.d.ts +19 -0
  53. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  54. package/dist/core/EntityEditView.d.ts +40 -11
  55. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  56. package/dist/core/FireCMS.d.ts +3 -3
  57. package/dist/core/FireCMSRouter.d.ts +4 -0
  58. package/dist/core/NavigationRoutes.d.ts +2 -3
  59. package/dist/core/SideDialogs.d.ts +4 -2
  60. package/dist/core/field_configs.d.ts +1 -1
  61. package/dist/core/index.d.ts +4 -4
  62. package/dist/form/EntityForm.d.ts +36 -64
  63. package/dist/form/EntityFormActions.d.ts +17 -0
  64. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  65. package/dist/form/components/ErrorFocus.d.ts +1 -1
  66. package/dist/form/components/FieldHelperText.d.ts +3 -3
  67. package/dist/form/components/FormEntry.d.ts +6 -0
  68. package/dist/form/components/FormLayout.d.ts +5 -0
  69. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  70. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  71. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  72. package/dist/form/components/index.d.ts +3 -1
  73. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  75. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  79. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  80. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  81. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  82. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  83. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  84. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  85. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
  86. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  87. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  88. package/dist/form/index.d.ts +17 -18
  89. package/dist/form/useClearRestoreValue.d.ts +2 -2
  90. package/dist/hooks/data/delete.d.ts +4 -4
  91. package/dist/hooks/data/save.d.ts +4 -5
  92. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  93. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  94. package/dist/hooks/index.d.ts +1 -0
  95. package/dist/hooks/useAuthController.d.ts +1 -1
  96. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  97. package/dist/hooks/useBuildNavigationController.d.ts +57 -13
  98. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  99. package/dist/hooks/useModeController.d.ts +1 -2
  100. package/dist/hooks/useProjectLog.d.ts +8 -2
  101. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  102. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.es.js +22839 -13875
  105. package/dist/index.es.js.map +1 -1
  106. package/dist/index.umd.js +25639 -588
  107. package/dist/index.umd.js.map +1 -1
  108. package/dist/internal/useBuildDataSource.d.ts +3 -17
  109. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  110. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  111. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  112. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  113. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  114. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  115. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  116. package/dist/preview/util.d.ts +3 -3
  117. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  118. package/dist/routes/FireCMSRoute.d.ts +1 -0
  119. package/dist/routes/HomePageRoute.d.ts +3 -0
  120. package/dist/types/analytics.d.ts +1 -1
  121. package/dist/types/auth.d.ts +8 -10
  122. package/dist/types/collections.d.ts +106 -24
  123. package/dist/types/datasource.d.ts +52 -36
  124. package/dist/types/dialogs_controller.d.ts +7 -3
  125. package/dist/types/entities.d.ts +7 -2
  126. package/dist/types/entity_actions.d.ts +28 -4
  127. package/dist/types/entity_callbacks.d.ts +16 -16
  128. package/dist/types/entity_overrides.d.ts +2 -2
  129. package/dist/types/export_import.d.ts +4 -4
  130. package/dist/types/fields.d.ts +74 -42
  131. package/dist/types/firecms.d.ts +8 -3
  132. package/dist/types/firecms_context.d.ts +1 -1
  133. package/dist/types/index.d.ts +0 -1
  134. package/dist/types/navigation.d.ts +61 -18
  135. package/dist/types/permissions.d.ts +4 -4
  136. package/dist/types/plugins.d.ts +48 -12
  137. package/dist/types/properties.d.ts +80 -24
  138. package/dist/types/property_config.d.ts +1 -3
  139. package/dist/types/side_dialogs_controller.d.ts +10 -0
  140. package/dist/types/side_entity_controller.d.ts +10 -1
  141. package/dist/types/storage.d.ts +75 -0
  142. package/dist/types/user.d.ts +1 -0
  143. package/dist/util/builders.d.ts +3 -3
  144. package/dist/util/callbacks.d.ts +2 -0
  145. package/dist/util/createFormexStub.d.ts +2 -0
  146. package/dist/util/entities.d.ts +3 -3
  147. package/dist/util/entity_actions.d.ts +2 -0
  148. package/dist/util/entity_cache.d.ts +23 -0
  149. package/dist/util/icon_list.d.ts +5 -1
  150. package/dist/util/icon_synonyms.d.ts +1 -98
  151. package/dist/util/icons.d.ts +6 -3
  152. package/dist/util/index.d.ts +3 -0
  153. package/dist/util/navigation_from_path.d.ts +6 -1
  154. package/dist/util/navigation_utils.d.ts +15 -3
  155. package/dist/util/objects.d.ts +2 -1
  156. package/dist/util/permissions.d.ts +4 -4
  157. package/dist/util/plurals.d.ts +0 -2
  158. package/dist/util/property_utils.d.ts +4 -4
  159. package/dist/util/references.d.ts +2 -2
  160. package/dist/util/resolutions.d.ts +41 -17
  161. package/dist/util/storage.d.ts +23 -2
  162. package/dist/util/useStorageUploadController.d.ts +3 -3
  163. package/package.json +64 -48
  164. package/src/app/AppBar.tsx +18 -0
  165. package/src/app/Drawer.tsx +24 -0
  166. package/src/app/Scaffold.tsx +253 -0
  167. package/src/app/index.ts +4 -0
  168. package/src/app/useApp.tsx +32 -0
  169. package/src/components/ArrayContainer.tsx +447 -229
  170. package/src/components/CircularProgressCenter.tsx +2 -2
  171. package/src/components/ClearFilterSortButton.tsx +41 -0
  172. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
  173. package/src/components/DeleteEntityDialog.tsx +13 -20
  174. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
  175. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  176. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  177. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +72 -42
  178. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  179. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  180. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  181. package/src/components/EntityCollectionTable/index.tsx +1 -1
  182. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +32 -37
  183. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
  184. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  185. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
  186. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  187. package/src/components/EntityCollectionView/EntityCollectionView.tsx +231 -117
  188. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
  189. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  190. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  191. package/src/components/EntityCollectionView/utils.ts +19 -0
  192. package/src/components/EntityJsonPreview.tsx +66 -0
  193. package/src/components/EntityPreview.tsx +80 -59
  194. package/src/components/EntityView.tsx +13 -10
  195. package/src/components/ErrorView.tsx +4 -4
  196. package/src/components/HomePage/DefaultHomePage.tsx +486 -159
  197. package/src/components/HomePage/FavouritesView.tsx +9 -14
  198. package/src/components/HomePage/HomePageDnD.tsx +613 -0
  199. package/src/components/HomePage/NavigationCard.tsx +48 -39
  200. package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
  201. package/src/components/HomePage/NavigationGroup.tsx +63 -29
  202. package/src/components/HomePage/RenameGroupDialog.tsx +113 -0
  203. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  204. package/src/components/NotFoundPage.tsx +2 -2
  205. package/src/components/PropertyConfigBadge.tsx +9 -3
  206. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  207. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
  208. package/src/components/ReferenceWidget.tsx +21 -11
  209. package/src/components/SearchIconsView.tsx +10 -7
  210. package/src/components/SelectableTable/SelectableTable.tsx +157 -145
  211. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  212. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  213. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  214. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  215. package/src/components/UnsavedChangesDialog.tsx +42 -0
  216. package/src/components/VirtualTable/VirtualTable.tsx +105 -51
  217. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  218. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  219. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  220. package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
  221. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  222. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  223. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  224. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  225. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  226. package/src/components/VirtualTable/types.tsx +2 -3
  227. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
  228. package/src/components/common/index.ts +2 -1
  229. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  230. package/src/components/common/types.tsx +4 -6
  231. package/src/components/common/useColumnsIds.tsx +24 -3
  232. package/src/components/common/useDataSourceTableController.tsx +420 -0
  233. package/src/components/common/useDebouncedCallback.tsx +20 -0
  234. package/src/components/common/useScrollRestoration.tsx +68 -0
  235. package/src/components/common/useTableSearchHelper.ts +53 -12
  236. package/src/components/index.tsx +6 -2
  237. package/src/contexts/BreacrumbsContext.tsx +38 -0
  238. package/src/contexts/DialogsProvider.tsx +5 -4
  239. package/src/contexts/ModeController.tsx +1 -3
  240. package/src/contexts/SnackbarProvider.tsx +2 -0
  241. package/src/core/DefaultAppBar.tsx +219 -0
  242. package/src/core/DefaultDrawer.tsx +185 -0
  243. package/src/core/DrawerNavigationItem.tsx +66 -0
  244. package/src/core/EntityEditView.tsx +408 -478
  245. package/src/core/EntityEditViewFormActions.tsx +199 -0
  246. package/src/core/EntitySidePanel.tsx +85 -21
  247. package/src/core/FireCMS.tsx +72 -58
  248. package/src/core/FireCMSRouter.tsx +17 -0
  249. package/src/core/NavigationRoutes.tsx +28 -38
  250. package/src/core/SideDialogs.tsx +22 -12
  251. package/src/core/field_configs.tsx +26 -13
  252. package/src/core/index.tsx +6 -5
  253. package/src/form/EntityForm.tsx +589 -535
  254. package/src/form/EntityFormActions.tsx +169 -0
  255. package/src/form/PropertyFieldBinding.tsx +88 -45
  256. package/src/form/components/CustomIdField.tsx +9 -3
  257. package/src/form/components/FieldHelperText.tsx +4 -4
  258. package/src/form/components/FormEntry.tsx +22 -0
  259. package/src/form/components/FormLayout.tsx +16 -0
  260. package/src/form/components/LabelWithIcon.tsx +30 -19
  261. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  262. package/src/form/components/StorageItemPreview.tsx +22 -12
  263. package/src/form/components/StorageUploadProgress.tsx +4 -5
  264. package/src/form/components/index.tsx +3 -1
  265. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  266. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
  267. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  268. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  269. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  270. package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
  271. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
  272. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  273. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  274. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  275. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  276. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  277. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
  278. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +265 -202
  279. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  280. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  281. package/src/form/index.tsx +17 -37
  282. package/src/form/useClearRestoreValue.tsx +2 -2
  283. package/src/form/validation.ts +13 -23
  284. package/src/hooks/data/delete.ts +6 -5
  285. package/src/hooks/data/save.ts +26 -33
  286. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  287. package/src/hooks/data/useDataSource.tsx +11 -3
  288. package/src/hooks/data/useEntityFetch.tsx +10 -6
  289. package/src/hooks/index.tsx +1 -0
  290. package/src/hooks/useAuthController.tsx +1 -1
  291. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  292. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  293. package/src/hooks/useBuildModeController.tsx +22 -29
  294. package/src/hooks/useBuildNavigationController.tsx +440 -119
  295. package/src/hooks/useFireCMSContext.tsx +3 -33
  296. package/src/hooks/useLargeLayout.tsx +0 -35
  297. package/src/hooks/useModeController.tsx +1 -2
  298. package/src/hooks/useProjectLog.tsx +32 -10
  299. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  300. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  301. package/src/index.ts +1 -0
  302. package/src/internal/useBuildDataSource.ts +79 -85
  303. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  304. package/src/internal/useBuildSideEntityController.tsx +201 -77
  305. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  306. package/src/preview/PropertyPreview.tsx +34 -25
  307. package/src/preview/PropertyPreviewProps.tsx +7 -1
  308. package/src/preview/components/BooleanPreview.tsx +2 -2
  309. package/src/preview/components/EmptyValue.tsx +1 -1
  310. package/src/preview/components/EnumValuesChip.tsx +2 -2
  311. package/src/preview/components/ImagePreview.tsx +26 -37
  312. package/src/preview/components/ReferencePreview.tsx +23 -34
  313. package/src/preview/components/StorageThumbnail.tsx +5 -1
  314. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  315. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
  316. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  317. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  318. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  319. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  320. package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
  321. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  322. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  323. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  324. package/src/preview/util.ts +10 -10
  325. package/src/routes/CustomCMSRoute.tsx +21 -0
  326. package/src/routes/FireCMSRoute.tsx +246 -0
  327. package/src/routes/HomePageRoute.tsx +17 -0
  328. package/src/types/analytics.ts +3 -0
  329. package/src/types/auth.tsx +9 -13
  330. package/src/types/collections.ts +128 -29
  331. package/src/types/customization_controller.tsx +0 -1
  332. package/src/types/datasource.ts +61 -43
  333. package/src/types/dialogs_controller.tsx +7 -3
  334. package/src/types/entities.ts +12 -2
  335. package/src/types/entity_actions.tsx +32 -7
  336. package/src/types/entity_callbacks.ts +18 -18
  337. package/src/types/entity_overrides.tsx +2 -2
  338. package/src/types/export_import.ts +4 -4
  339. package/src/types/fields.tsx +85 -46
  340. package/src/types/firecms.tsx +9 -4
  341. package/src/types/firecms_context.tsx +1 -1
  342. package/src/types/index.ts +0 -1
  343. package/src/types/navigation.ts +76 -23
  344. package/src/types/permissions.ts +5 -5
  345. package/src/types/plugins.tsx +57 -14
  346. package/src/types/properties.ts +95 -26
  347. package/src/types/property_config.tsx +1 -2
  348. package/src/types/side_dialogs_controller.tsx +15 -0
  349. package/src/types/side_entity_controller.tsx +11 -1
  350. package/src/types/storage.ts +83 -1
  351. package/src/types/user.ts +2 -0
  352. package/src/util/builders.ts +10 -8
  353. package/src/util/callbacks.ts +119 -0
  354. package/src/util/createFormexStub.tsx +62 -0
  355. package/src/util/entities.ts +9 -6
  356. package/src/util/entity_actions.ts +28 -0
  357. package/src/util/entity_cache.ts +204 -0
  358. package/src/util/enums.ts +1 -1
  359. package/src/util/icon_list.ts +16 -10
  360. package/src/util/icon_synonyms.ts +3 -100
  361. package/src/util/icons.tsx +21 -7
  362. package/src/util/index.ts +3 -0
  363. package/src/util/join_collections.ts +6 -1
  364. package/src/util/make_properties_editable.ts +13 -5
  365. package/src/util/navigation_from_path.ts +18 -7
  366. package/src/util/navigation_utils.ts +141 -25
  367. package/src/util/objects.ts +90 -33
  368. package/src/util/parent_references_from_path.ts +3 -3
  369. package/src/util/permissions.ts +9 -8
  370. package/src/util/plurals.ts +0 -2
  371. package/src/util/property_utils.tsx +17 -6
  372. package/src/util/references.ts +19 -8
  373. package/src/util/resolutions.ts +110 -48
  374. package/src/util/storage.ts +79 -21
  375. package/src/util/strings.ts +2 -2
  376. package/src/util/useStorageUploadController.tsx +91 -28
  377. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  378. package/dist/components/FireCMSAppBar.d.ts +0 -26
  379. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  380. package/dist/components/VirtualTable/common.d.ts +0 -2
  381. package/dist/core/Drawer.d.ts +0 -23
  382. package/dist/core/Scaffold.d.ts +0 -55
  383. package/dist/core/SideEntityView.d.ts +0 -7
  384. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  385. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  386. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  387. package/dist/internal/useLocaleConfig.d.ts +0 -1
  388. package/dist/types/appcheck.d.ts +0 -26
  389. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  390. package/src/components/FireCMSAppBar.tsx +0 -165
  391. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  392. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  393. package/src/core/Drawer.tsx +0 -191
  394. package/src/core/Scaffold.tsx +0 -281
  395. package/src/core/SideEntityView.tsx +0 -38
  396. package/src/form/components/FormikArrayContainer.tsx +0 -44
  397. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  398. package/src/internal/useBuildCustomizationController.tsx +0 -5
  399. package/src/internal/useLocaleConfig.tsx +0 -18
  400. package/src/types/appcheck.ts +0 -29
  401. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -1,12 +1,14 @@
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
  * @group Datasource
6
7
  */
7
8
  export interface FetchEntityProps<M extends Record<string, any> = any> {
8
9
  path: string;
9
10
  entityId: string;
11
+ databaseId?: string;
10
12
  collection?: EntityCollection<M, any>;
11
13
  }
12
14
  /**
@@ -52,11 +54,11 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
52
54
  */
53
55
  export interface DeleteEntityProps<M extends Record<string, any> = any> {
54
56
  entity: Entity<M>;
57
+ collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
55
58
  }
56
59
  /**
57
- * Implement this interface and pass it to a {@link FireCMS}
58
- * to connect it to your data source.
59
- * A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
60
+ * Component in charge of communicating with the data source.
61
+ * Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
60
62
  * @group Datasource
61
63
  */
62
64
  export interface DataSource {
@@ -97,7 +99,7 @@ export interface DataSource {
97
99
  * @param entityId
98
100
  * @param collection
99
101
  */
100
- fetchEntity<M extends Record<string, any> = any>({ path, entityId, collection }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
102
+ fetchEntity<M extends Record<string, any> = any>({ path, entityId, databaseId, collection }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
101
103
  /**
102
104
  * Get realtime updates on one entity.
103
105
  * @param path
@@ -121,21 +123,21 @@ export interface DataSource {
121
123
  * @param entity
122
124
  * @return was the whole deletion flow successful
123
125
  */
124
- deleteEntity<M extends Record<string, any> = any>({ entity }: DeleteEntityProps<M>): Promise<void>;
126
+ deleteEntity<M extends Record<string, any> = any>({ entity, collection }: DeleteEntityProps<M>): Promise<void>;
125
127
  /**
126
128
  * Check if the given property is unique in the given collection
127
129
  * @param path Collection path
128
130
  * @param name of the property
129
131
  * @param value
130
- * @param property
132
+ * @param collection
131
133
  * @param entityId
132
134
  * @return `true` if there are no other fields besides the given entity
133
135
  */
134
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
136
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
135
137
  /**
136
138
  * Generate an id for a new entity
137
139
  */
138
- generateEntityId(path: string): string;
140
+ generateEntityId(path: string, collection: EntityCollection): string;
139
141
  /**
140
142
  * Count the number of entities in a collection
141
143
  */
@@ -145,6 +147,17 @@ export interface DataSource {
145
147
  * @param props
146
148
  */
147
149
  isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
150
+ /**
151
+ * Called when the user clicks on the search bar in a collection view.
152
+ * Useful for initializing a text search index.
153
+ * @param props
154
+ */
155
+ initTextSearch?: (props: {
156
+ context: FireCMSContext;
157
+ path: string;
158
+ collection: EntityCollection;
159
+ parentCollectionIds?: string[];
160
+ }) => Promise<boolean>;
148
161
  }
149
162
  export type FilterCombinationValidProps = {
150
163
  path: string;
@@ -152,14 +165,18 @@ export type FilterCombinationValidProps = {
152
165
  filterValues: FilterValues<any>;
153
166
  sortBy?: [string, "asc" | "desc"];
154
167
  };
155
- export type SaveEntityDelegateProps<M extends Record<string, any> = any> = Omit<SaveEntityProps<M>, "collection">;
156
- export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = Omit<FetchCollectionProps<M>, "collection"> & {
157
- isCollectionGroup?: boolean;
158
- };
159
- export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M> & {
160
- isCollectionGroup?: boolean;
161
- };
168
+ export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
169
+ export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
170
+ export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
162
171
  export interface DataSourceDelegate {
172
+ /**
173
+ * Key that identifies this data source delegate
174
+ */
175
+ key: string;
176
+ /**
177
+ * If the data source has been initialised
178
+ */
179
+ initialised?: boolean;
163
180
  /**
164
181
  * Fetch data from a collection
165
182
  * @param path
@@ -194,7 +211,7 @@ export interface DataSourceDelegate {
194
211
  * @param path
195
212
  * @param entityId
196
213
  */
197
- fetchEntity<M extends Record<string, any> = any>({ path, entityId, }: Omit<FetchEntityProps<M>, "collection">): Promise<Entity<M> | undefined>;
214
+ fetchEntity<M extends Record<string, any> = any>({ path, entityId, }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
198
215
  /**
199
216
  * Get realtime updates on one entity.
200
217
  * @param path
@@ -204,12 +221,12 @@ export interface DataSourceDelegate {
204
221
  * @param onError
205
222
  * @return Function to cancel subscription
206
223
  */
207
- listenEntity?<M extends Record<string, any> = any>({ path, entityId, onUpdate, onError }: Omit<ListenEntityProps<M>, "collection">): () => void;
224
+ listenEntity?<M extends Record<string, any> = any>({ path, entityId, onUpdate, onError }: ListenEntityProps<M>): () => void;
208
225
  /**
209
226
  * Save entity to the specified path
210
227
  * @param path
211
- * @param id
212
- * @param collection
228
+ * @param entityId
229
+ * @param values
213
230
  * @param status
214
231
  */
215
232
  saveEntity<M extends Record<string, any> = any>({ path, entityId, values, status }: SaveEntityDelegateProps<M>): Promise<Entity<M>>;
@@ -225,13 +242,14 @@ export interface DataSourceDelegate {
225
242
  * @param name of the property
226
243
  * @param value
227
244
  * @param entityId
245
+ * @param collection
228
246
  * @return `true` if there are no other fields besides the given entity
229
247
  */
230
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
248
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
231
249
  /**
232
250
  * Generate an id for a new entity
233
251
  */
234
- generateEntityId(path: string): string;
252
+ generateEntityId(path: string, collection?: EntityCollection): string;
235
253
  /**
236
254
  * Count the number of entities in a collection
237
255
  */
@@ -240,23 +258,21 @@ export interface DataSourceDelegate {
240
258
  * Check if the given filter combination is valid
241
259
  * @param props
242
260
  */
243
- isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">): boolean;
244
- /**
245
- * Convert a FireCMS reference to a reference that can be used by the datasource
246
- * @param reference
247
- */
248
- buildReference: (reference: EntityReference) => any;
249
- /**
250
- * Convert a FireCMS GeoPoint to a GeoPoint that can be used by the datasource
251
- * @param geoPoint
252
- */
253
- buildGeoPoint: (geoPoint: GeoPoint) => any;
261
+ isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
262
+ databaseId?: string;
263
+ }): boolean;
254
264
  /**
255
265
  * Get the object to generate the current time in the datasource
256
266
  */
257
- currentTime(): any;
258
- buildDate: (date: Date) => any;
259
- buildDeleteFieldValue: () => any;
267
+ currentTime?: () => any;
260
268
  delegateToCMSModel: (data: any) => any;
269
+ cmsToDelegateModel: (data: any) => any;
261
270
  setDateToMidnight: (input?: any) => any;
271
+ initTextSearch?: (props: {
272
+ context: FireCMSContext;
273
+ path: string;
274
+ databaseId?: string;
275
+ collection: EntityCollection;
276
+ parentCollectionIds?: string[];
277
+ }) => Promise<boolean>;
262
278
  }
@@ -12,7 +12,7 @@ export interface DialogsController {
12
12
  * Open a dialog
13
13
  * @param props
14
14
  */
15
- open: (props: DialogControllerEntryProps) => {
15
+ open: <T extends object = object>(props: DialogControllerEntryProps<T>) => {
16
16
  closeDialog: () => void;
17
17
  };
18
18
  }
@@ -20,7 +20,7 @@ export interface DialogsController {
20
20
  * Props used to open a side dialog
21
21
  * @group Hooks and utilities
22
22
  */
23
- export interface DialogControllerEntryProps {
23
+ export interface DialogControllerEntryProps<T extends object = object> {
24
24
  key: string;
25
25
  /**
26
26
  * The component type that will be rendered
@@ -28,5 +28,9 @@ export interface DialogControllerEntryProps {
28
28
  Component: React.ComponentType<{
29
29
  open: boolean;
30
30
  closeDialog: () => void;
31
- }>;
31
+ } & T>;
32
+ /**
33
+ * Props to pass to the dialog component
34
+ */
35
+ props?: T;
32
36
  }
@@ -7,7 +7,7 @@ export type EntityStatus = "new" | "existing" | "copy";
7
7
  * Representation of an entity fetched from the datasource
8
8
  * @group Models
9
9
  */
10
- export interface Entity<M extends object> {
10
+ export interface Entity<M extends object = any> {
11
11
  /**
12
12
  * ID of the entity
13
13
  */
@@ -21,6 +21,7 @@ export interface Entity<M extends object> {
21
21
  * Current values
22
22
  */
23
23
  values: EntityValues<M>;
24
+ databaseId?: string;
24
25
  }
25
26
  /**
26
27
  * This type represents a record of key value pairs as described in an
@@ -31,7 +32,7 @@ export type EntityValues<M extends object> = M;
31
32
  /**
32
33
  * Class used to create a reference to an entity in a different path
33
34
  */
34
- export declare class EntityReference<M extends Record<string, any> = any> {
35
+ export declare class EntityReference {
35
36
  /**
36
37
  * ID of the entity
37
38
  */
@@ -56,3 +57,7 @@ export declare class GeoPoint {
56
57
  readonly longitude: number;
57
58
  constructor(latitude: number, longitude: number);
58
59
  }
60
+ export declare class Vector {
61
+ readonly value: number[];
62
+ constructor(value: number[]);
63
+ }
@@ -4,10 +4,33 @@ 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
- export type EntityAction<M extends object = any, UserType extends User = User> = {
7
+ /**
8
+ * An entity action is a custom action that can be performed on an entity.
9
+ * They are displayed in the entity view and in the collection view.
10
+ */
11
+ export type EntityAction<M extends object = any, USER extends User = User> = {
12
+ /**
13
+ * Title of the action
14
+ */
8
15
  name: string;
16
+ /**
17
+ * Key of the action. You only need to provide this if you want to
18
+ * override the default actions.
19
+ * The default actions are:
20
+ * - edit
21
+ * - delete
22
+ * - copy
23
+ */
24
+ key?: string;
25
+ /**
26
+ * Icon of the action
27
+ */
9
28
  icon?: React.ReactElement;
10
- onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
29
+ /**
30
+ * Callback when the action is clicked
31
+ * @param props
32
+ */
33
+ onClick: (props: EntityActionClickProps<M, USER>) => Promise<void> | void;
11
34
  /**
12
35
  * Show this action collapsed in the menu of the collection view.
13
36
  * Defaults to true
@@ -19,9 +42,9 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
19
42
  */
20
43
  includeInForm?: boolean;
21
44
  };
22
- export type EntityActionClickProps<M extends object, UserType extends User = User> = {
45
+ export type EntityActionClickProps<M extends object, USER extends User = User> = {
23
46
  entity: Entity<M>;
24
- context: FireCMSContext<UserType>;
47
+ context: FireCMSContext<USER>;
25
48
  fullPath?: string;
26
49
  collection?: EntityCollection<M>;
27
50
  selectionController?: SelectionController;
@@ -32,4 +55,5 @@ export type EntityActionClickProps<M extends object, UserType extends User = Use
32
55
  * If this actions is being called from a side dialog
33
56
  */
34
57
  sideEntityController?: SideEntityController;
58
+ openEntityMode: "side_panel" | "full_screen";
35
59
  };
@@ -9,29 +9,29 @@ import { User } from "./user";
9
9
  * Useful for adding your own logic or blocking the execution of the operation.
10
10
  * @group Models
11
11
  */
12
- export type EntityCallbacks<M extends Record<string, any> = any, UserType extends User = User> = {
12
+ export type EntityCallbacks<M extends Record<string, any> = any, USER extends User = User> = {
13
13
  /**
14
14
  * Callback used after fetching data
15
15
  * @param entityFetchProps
16
16
  */
17
- onFetch?(entityFetchProps: EntityOnFetchProps<M, UserType>): Promise<Entity<M>> | Entity<M>;
17
+ onFetch?(entityFetchProps: EntityOnFetchProps<M, USER>): Promise<Entity<M>> | Entity<M>;
18
18
  /**
19
19
  * Callback used when save is successful
20
20
  * @param entitySaveProps
21
21
  */
22
- onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, UserType>): Promise<void> | void;
22
+ onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, USER>): Promise<void> | void;
23
23
  /**
24
24
  * Callback used when saving fails
25
25
  * @param entitySaveProps
26
26
  */
27
- onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, UserType>): Promise<void> | void;
27
+ onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, USER>): Promise<void> | void;
28
28
  /**
29
29
  * Callback used before saving, you need to return the values that will get
30
30
  * saved. If you throw an error in this method the process stops, and an
31
31
  * error snackbar gets displayed.
32
32
  * @param entitySaveProps
33
33
  */
34
- onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, UserType>): Promise<Partial<EntityValues<M>>> | Partial<EntityValues<M>>;
34
+ onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, USER>): Promise<Partial<EntityValues<M>>> | Partial<EntityValues<M>>;
35
35
  /**
36
36
  * Callback used after the entity is deleted.
37
37
  * If you throw an error in this method the process stops, and an
@@ -39,13 +39,13 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
39
39
  *
40
40
  * @param entityDeleteProps
41
41
  */
42
- onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
42
+ onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
43
43
  /**
44
44
  * Callback used after the entity is deleted.
45
45
  *
46
46
  * @param entityDeleteProps
47
47
  */
48
- onDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
48
+ onDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
49
49
  /**
50
50
  * Callback fired when any value in the form changes. You can use it
51
51
  * to define the ID of a `new` entity based on the current values.
@@ -59,11 +59,11 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
59
59
  * Parameters passed to hooks when an entity is fetched
60
60
  * @group Models
61
61
  */
62
- export interface EntityOnFetchProps<M extends Record<string, any> = any, UserType extends User = User> {
62
+ export interface EntityOnFetchProps<M extends Record<string, any> = any, USER extends User = User> {
63
63
  /**
64
64
  * Collection of the entity
65
65
  */
66
- collection: EntityCollection<M, UserType>;
66
+ collection: EntityCollection<M, USER>;
67
67
  /**
68
68
  * Full path of the CMS where this collection is being fetched.
69
69
  * Might contain unresolved aliases.
@@ -76,27 +76,27 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
76
76
  /**
77
77
  * Context of the app status
78
78
  */
79
- context: FireCMSContext<UserType>;
79
+ context: FireCMSContext<USER>;
80
80
  }
81
81
  /**
82
82
  * Parameters passed to hooks before an entity is saved
83
83
  * @group Models
84
84
  */
85
- export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType extends User = User> = Omit<EntityOnSaveProps<M, UserType>, "entityId"> & {
85
+ export type EntityOnPreSaveProps<M extends Record<string, any> = any, USER extends User = User> = Omit<EntityOnSaveProps<M, USER>, "entityId"> & {
86
86
  entityId?: string;
87
87
  };
88
88
  /**
89
89
  * Parameters passed to hooks before an entity is saved
90
90
  * @group Models
91
91
  */
92
- export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserType extends User = User> = Omit<EntityOnSaveProps<M, UserType>, "entityId"> & {
92
+ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, USER extends User = User> = Omit<EntityOnSaveProps<M, USER>, "entityId"> & {
93
93
  entityId?: string;
94
94
  };
95
95
  /**
96
96
  * Parameters passed to hooks when an entity is saved
97
97
  * @group Models
98
98
  */
99
- export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType extends User = User> {
99
+ export interface EntityOnSaveProps<M extends Record<string, any> = any, USER extends User = User> {
100
100
  /**
101
101
  * Resolved collection of the entity
102
102
  */
@@ -129,13 +129,13 @@ export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType
129
129
  /**
130
130
  * Context of the app status
131
131
  */
132
- context: FireCMSContext<UserType>;
132
+ context: FireCMSContext<USER>;
133
133
  }
134
134
  /**
135
135
  * Parameters passed to hooks when an entity is deleted
136
136
  * @group Models
137
137
  */
138
- export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserType extends User = User> {
138
+ export interface EntityOnDeleteProps<M extends Record<string, any> = any, USER extends User = User> {
139
139
  /**
140
140
  * collection of the entity being deleted
141
141
  */
@@ -155,7 +155,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
155
155
  /**
156
156
  * Context of the app status
157
157
  */
158
- context: FireCMSContext<UserType>;
158
+ context: FireCMSContext<USER>;
159
159
  }
160
160
  /**
161
161
  * Parameters passed to hooks when an entity is deleted
@@ -1,6 +1,6 @@
1
- import { DataSource } from "./datasource";
1
+ import { DataSourceDelegate } from "./datasource";
2
2
  import { StorageSource } from "./storage";
3
3
  export type EntityOverrides = {
4
- dataSource?: DataSource;
4
+ dataSourceDelegate?: DataSourceDelegate;
5
5
  storageSource?: StorageSource;
6
6
  };
@@ -6,16 +6,16 @@ import { FireCMSContext } from "./firecms_context";
6
6
  * exports
7
7
  * @group Models
8
8
  */
9
- export interface ExportConfig<UserType extends User = User> {
10
- additionalFields: ExportMappingFunction<UserType>[];
9
+ export interface ExportConfig<USER extends User = User> {
10
+ additionalFields: ExportMappingFunction<USER>[];
11
11
  }
12
12
  /**
13
13
  * @group Models
14
14
  */
15
- export interface ExportMappingFunction<UserType extends User = User> {
15
+ export interface ExportMappingFunction<USER extends User = User> {
16
16
  key: string;
17
17
  builder: ({ entity, context }: {
18
18
  entity: Entity<any>;
19
- context: FireCMSContext<UserType>;
19
+ context: FireCMSContext<USER>;
20
20
  }) => Promise<string> | string;
21
21
  }
@@ -1,6 +1,7 @@
1
- import { EntityValues } from "./entities";
2
- import { CMSType, PropertyOrBuilder } from "./properties";
1
+ import { CMSType, Property, PropertyOrBuilder } from "./properties";
3
2
  import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
3
+ import { FormexController } from "@firecms/formex";
4
+ import { Entity } from "./entities";
4
5
  /**
5
6
  * When building a custom field you need to create a React component that takes
6
7
  * this interface as props.
@@ -17,9 +18,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
17
18
  * Current value of this field
18
19
  */
19
20
  value: T;
20
- /**
21
- * Initial value of this field
22
- */
23
21
  /**
24
22
  * Set value of field directly
25
23
  */
@@ -34,53 +32,50 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
34
32
  /**
35
33
  * Is the form currently submitting
36
34
  */
37
- isSubmitting: boolean;
35
+ isSubmitting?: boolean;
38
36
  /**
39
37
  * Should this field show the error indicator.
40
38
  * Note that there might be an error (like an empty field that should be
41
39
  * filled) but we don't want to show the error until the user has tried
42
40
  * saving.
43
41
  */
44
- showError: boolean;
42
+ showError?: boolean;
45
43
  /**
46
44
  * Is there an error in this field. The error field has the same shape as
47
45
  * the field, replacing values with a string containing the error.
48
46
  * It takes the value `null` if there is no error
49
47
  */
50
- error: any | null;
48
+ error?: any | null;
51
49
  /**
52
50
  * Has this field been touched
53
51
  */
54
- touched: boolean;
52
+ touched?: boolean;
55
53
  /**
56
54
  * Property related to this field
57
55
  */
58
- property: ResolvedProperty<T>;
56
+ property: Property<T> | ResolvedProperty<T>;
59
57
  /**
60
58
  * Should this field include a description
61
59
  */
62
- includeDescription: boolean;
60
+ includeDescription?: boolean;
63
61
  /**
64
62
  * Flag to indicate that the underlying value has been updated in the
65
63
  * datasource
66
64
  */
67
- underlyingValueHasChanged: boolean;
65
+ underlyingValueHasChanged?: boolean;
68
66
  /**
69
67
  * Is this field part of an array
70
68
  */
71
- partOfArray: boolean;
72
- /**
73
- * Is this field part of a block (oneOf array)
74
- */
75
- partOfBlock: boolean;
69
+ partOfArray?: boolean;
76
70
  /**
77
- * Is this field being rendered in the entity table popup
71
+ * Display the child properties directly, without being wrapped in an
72
+ * extendable panel. Note that this will also hide the title of this property.
78
73
  */
79
- tableMode: boolean;
74
+ minimalistView?: boolean;
80
75
  /**
81
76
  * Should this field autofocus on mount
82
77
  */
83
- autoFocus: boolean;
78
+ autoFocus?: boolean;
84
79
  /**
85
80
  * Additional properties set by the developer
86
81
  */
@@ -92,29 +87,29 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
92
87
  /**
93
88
  * Flag to indicate if this field should be disabled
94
89
  */
95
- disabled: boolean;
90
+ disabled?: boolean;
91
+ /**
92
+ * Size of the field
93
+ */
94
+ size?: "small" | "medium" | "large";
95
+ /**
96
+ * Some properties might change internal state (like expanding a panel).
97
+ * This function should be called when the internal state changes.
98
+ * This is used to preserve state in array containers.
99
+ *
100
+ * @param property
101
+ */
102
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
96
103
  }
97
104
  /**
98
105
  * Context passed to custom fields
99
106
  * @group Form custom fields
100
107
  */
101
108
  export interface FormContext<M extends Record<string, any> = any> {
102
- /**
103
- * Collection of the entity being modified
104
- */
105
- collection: ResolvedEntityCollection<M>;
106
109
  /**
107
110
  * Current values of the entity
108
111
  */
109
- values: EntityValues<M>;
110
- /**
111
- * Entity id, it can be null if it's a new entity
112
- */
113
- entityId?: string;
114
- /**
115
- * Path this entity is located at
116
- */
117
- path: string;
112
+ values: M;
118
113
  /**
119
114
  * Update the value of a field
120
115
  * @param key
@@ -123,9 +118,32 @@ export interface FormContext<M extends Record<string, any> = any> {
123
118
  */
124
119
  setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
125
120
  /**
126
- * Save the entity
121
+ * Save the entity.
122
+ */
123
+ save: (values: M) => void;
124
+ /**
125
+ * Collection of the entity being modified
127
126
  */
128
- save: (values: EntityValues<M>) => void;
127
+ collection?: ResolvedEntityCollection<M>;
128
+ /**
129
+ * Entity id, it can be null if it's a new entity
130
+ */
131
+ entityId: string;
132
+ /**
133
+ * Path this entity is located at
134
+ */
135
+ path?: string;
136
+ status: "new" | "existing" | "copy";
137
+ entity?: Entity<M>;
138
+ savingError?: Error;
139
+ openEntityMode: "side_panel" | "full_screen";
140
+ /**
141
+ * This is the underlying formex controller that powers the form.
142
+ * If you are in a red only mode, the formex controller is there, but you can't
143
+ * operate with it
144
+ */
145
+ formex: FormexController<M>;
146
+ disabled: boolean;
129
147
  }
130
148
  /**
131
149
  * In case you need to render a field bound to a Property inside your
@@ -156,18 +174,15 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
156
174
  * field is being edited
157
175
  */
158
176
  underlyingValueHasChanged?: boolean;
159
- /**
160
- * Is this field being rendered in a table
161
- */
162
- tableMode?: boolean;
163
177
  /**
164
178
  * Is this field part of an array
165
179
  */
166
180
  partOfArray?: boolean;
167
181
  /**
168
- * Is this field part of a block (oneOf array)
182
+ * Display the child properties directly, without being wrapped in an
183
+ * extendable panel. Note that this will also hide the title of this property.
169
184
  */
170
- partOfBlock?: boolean;
185
+ minimalistView?: boolean;
171
186
  /**
172
187
  * Should the field take focus when rendered. When opening the popup view
173
188
  * in table mode, it makes sense to put the focus on the only field rendered.
@@ -177,4 +192,21 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
177
192
  * Should this field be disabled
178
193
  */
179
194
  disabled?: boolean;
195
+ /**
196
+ * Index of the field in the array.
197
+ * Only used when the field is part of an array.
198
+ */
199
+ index?: number;
200
+ /**
201
+ * The size of the field
202
+ */
203
+ size?: "small" | "medium" | "large";
204
+ /**
205
+ * Some properties might change internal state (like expanding a panel).
206
+ * This function should be called when the internal state changes.
207
+ * This is used to preserve state in array containers.
208
+ *
209
+ * @param property
210
+ */
211
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
180
212
  }