@firecms/core 3.0.0-canary.99 → 3.0.0-rc.1

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 (349) hide show
  1. package/README.md +2 -2
  2. package/dist/app/Drawer.d.ts +0 -1
  3. package/dist/app/Scaffold.d.ts +4 -0
  4. package/dist/components/ArrayContainer.d.ts +31 -12
  5. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  6. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
  7. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  8. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
  9. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
  10. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  11. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
  12. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
  13. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  14. package/dist/components/EntityJsonPreview.d.ts +3 -0
  15. package/dist/components/EntityPreview.d.ts +8 -6
  16. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  17. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  18. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  19. package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
  20. package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
  21. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  22. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  23. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  24. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  25. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
  26. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  27. package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
  28. package/dist/components/common/default_entity_actions.d.ts +0 -2
  29. package/dist/components/common/index.d.ts +1 -1
  30. package/dist/components/common/useColumnsIds.d.ts +1 -0
  31. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -2
  32. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  33. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  34. package/dist/components/index.d.ts +3 -1
  35. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  36. package/dist/core/DefaultAppBar.d.ts +8 -2
  37. package/dist/core/DrawerNavigationItem.d.ts +2 -1
  38. package/dist/core/EntityEditView.d.ts +40 -22
  39. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  40. package/dist/core/FireCMS.d.ts +2 -2
  41. package/dist/core/FireCMSRouter.d.ts +4 -0
  42. package/dist/core/NavigationRoutes.d.ts +0 -1
  43. package/dist/core/SideDialogs.d.ts +4 -2
  44. package/dist/core/field_configs.d.ts +1 -1
  45. package/dist/core/index.d.ts +2 -1
  46. package/dist/form/EntityForm.d.ts +50 -0
  47. package/dist/form/EntityFormActions.d.ts +21 -0
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/FormEntry.d.ts +6 -0
  50. package/dist/form/components/FormLayout.d.ts +5 -0
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/index.d.ts +3 -1
  54. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  60. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  61. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  62. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +4 -10
  67. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  68. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  69. package/dist/form/index.d.ts +17 -16
  70. package/dist/form/useClearRestoreValue.d.ts +2 -2
  71. package/dist/hooks/data/delete.d.ts +4 -4
  72. package/dist/hooks/data/save.d.ts +3 -3
  73. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  74. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  75. package/dist/hooks/useAuthController.d.ts +1 -1
  76. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  77. package/dist/hooks/useBuildNavigationController.d.ts +57 -12
  78. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  79. package/dist/hooks/useModeController.d.ts +1 -2
  80. package/dist/hooks/useProjectLog.d.ts +7 -1
  81. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  82. package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
  83. package/dist/index.es.js +20108 -14471
  84. package/dist/index.es.js.map +1 -1
  85. package/dist/index.umd.js +20039 -14407
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/internal/useBuildDataSource.d.ts +3 -2
  88. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  89. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  90. package/dist/preview/PropertyPreviewProps.d.ts +1 -1
  91. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  92. package/dist/preview/components/ReferencePreview.d.ts +2 -2
  93. package/dist/preview/util.d.ts +3 -3
  94. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  95. package/dist/routes/FireCMSRoute.d.ts +1 -0
  96. package/dist/routes/HomePageRoute.d.ts +3 -0
  97. package/dist/types/analytics.d.ts +1 -1
  98. package/dist/types/auth.d.ts +7 -9
  99. package/dist/types/collections.d.ts +86 -25
  100. package/dist/types/customization_controller.d.ts +8 -0
  101. package/dist/types/datasource.d.ts +19 -17
  102. package/dist/types/dialogs_controller.d.ts +7 -3
  103. package/dist/types/entities.d.ts +2 -1
  104. package/dist/types/entity_actions.d.ts +58 -8
  105. package/dist/types/entity_callbacks.d.ts +16 -16
  106. package/dist/types/entity_overrides.d.ts +2 -2
  107. package/dist/types/export_import.d.ts +4 -4
  108. package/dist/types/fields.d.ts +43 -17
  109. package/dist/types/firecms.d.ts +16 -3
  110. package/dist/types/firecms_context.d.ts +1 -1
  111. package/dist/types/navigation.d.ts +60 -17
  112. package/dist/types/permissions.d.ts +4 -4
  113. package/dist/types/plugins.d.ts +42 -9
  114. package/dist/types/properties.d.ts +65 -22
  115. package/dist/types/property_config.d.ts +1 -3
  116. package/dist/types/roles.d.ts +3 -0
  117. package/dist/types/side_dialogs_controller.d.ts +10 -0
  118. package/dist/types/side_entity_controller.d.ts +14 -1
  119. package/dist/types/storage.d.ts +75 -0
  120. package/dist/types/user.d.ts +1 -0
  121. package/dist/util/builders.d.ts +3 -3
  122. package/dist/util/callbacks.d.ts +2 -0
  123. package/dist/util/createFormexStub.d.ts +2 -0
  124. package/dist/util/entities.d.ts +2 -2
  125. package/dist/util/entity_actions.d.ts +2 -0
  126. package/dist/util/entity_cache.d.ts +23 -0
  127. package/dist/util/icon_synonyms.d.ts +0 -1
  128. package/dist/util/icons.d.ts +5 -2
  129. package/dist/util/index.d.ts +3 -0
  130. package/dist/util/navigation_from_path.d.ts +10 -1
  131. package/dist/util/navigation_utils.d.ts +13 -1
  132. package/dist/util/objects.d.ts +2 -1
  133. package/dist/util/permissions.d.ts +4 -4
  134. package/dist/util/property_utils.d.ts +4 -4
  135. package/dist/util/references.d.ts +2 -2
  136. package/dist/util/resolutions.d.ts +30 -6
  137. package/dist/util/storage.d.ts +1 -1
  138. package/dist/util/useStorageUploadController.d.ts +2 -2
  139. package/package.json +133 -125
  140. package/src/app/Drawer.tsx +0 -1
  141. package/src/app/Scaffold.tsx +33 -29
  142. package/src/components/ArrayContainer.tsx +447 -229
  143. package/src/components/CircularProgressCenter.tsx +1 -1
  144. package/src/components/ClearFilterSortButton.tsx +1 -1
  145. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  146. package/src/components/DeleteEntityDialog.tsx +13 -20
  147. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
  148. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
  149. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
  150. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +35 -9
  151. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
  152. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
  153. package/src/components/EntityCollectionTable/index.tsx +1 -1
  154. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
  155. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
  156. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  157. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
  158. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  159. package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
  160. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  161. package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
  162. package/src/components/EntityCollectionView/utils.ts +19 -0
  163. package/src/components/EntityJsonPreview.tsx +66 -0
  164. package/src/components/EntityPreview.tsx +75 -57
  165. package/src/components/EntityView.tsx +8 -5
  166. package/src/components/ErrorView.tsx +3 -3
  167. package/src/components/FireCMSLogo.tsx +7 -51
  168. package/src/components/HomePage/DefaultHomePage.tsx +522 -160
  169. package/src/components/HomePage/FavouritesView.tsx +9 -14
  170. package/src/components/HomePage/HomePageDnD.tsx +642 -0
  171. package/src/components/HomePage/NavigationCard.tsx +47 -38
  172. package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
  173. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  174. package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
  175. package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
  176. package/src/components/NotFoundPage.tsx +2 -2
  177. package/src/components/PropertyConfigBadge.tsx +9 -3
  178. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  179. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -13
  180. package/src/components/SearchIconsView.tsx +2 -2
  181. package/src/components/SelectableTable/SelectableTable.tsx +154 -142
  182. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
  183. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
  184. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +59 -10
  185. package/src/components/UnsavedChangesDialog.tsx +46 -0
  186. package/src/components/VirtualTable/VirtualTable.tsx +65 -44
  187. package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
  188. package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
  189. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
  190. package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
  191. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  192. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  193. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  194. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  195. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  196. package/src/components/common/default_entity_actions.tsx +62 -42
  197. package/src/components/common/index.ts +1 -1
  198. package/src/components/common/useColumnsIds.tsx +1 -1
  199. package/src/components/common/useDataSourceTableController.tsx +420 -0
  200. package/src/components/common/useDebouncedCallback.tsx +20 -0
  201. package/src/components/common/useScrollRestoration.tsx +68 -0
  202. package/src/components/common/useTableSearchHelper.ts +1 -0
  203. package/src/components/index.tsx +4 -1
  204. package/src/contexts/BreacrumbsContext.tsx +38 -0
  205. package/src/contexts/DialogsProvider.tsx +3 -2
  206. package/src/contexts/ModeController.tsx +1 -3
  207. package/src/contexts/SnackbarProvider.tsx +2 -0
  208. package/src/core/DefaultAppBar.tsx +124 -85
  209. package/src/core/DefaultDrawer.tsx +30 -22
  210. package/src/core/DrawerNavigationItem.tsx +32 -28
  211. package/src/core/EntityEditView.tsx +388 -995
  212. package/src/core/EntityEditViewFormActions.tsx +329 -0
  213. package/src/core/EntitySidePanel.tsx +88 -20
  214. package/src/core/FireCMS.tsx +46 -25
  215. package/src/core/FireCMSRouter.tsx +17 -0
  216. package/src/core/NavigationRoutes.tsx +23 -32
  217. package/src/core/SideDialogs.tsx +22 -12
  218. package/src/core/field_configs.tsx +24 -10
  219. package/src/core/index.tsx +4 -2
  220. package/src/form/EntityForm.tsx +814 -0
  221. package/src/form/EntityFormActions.tsx +211 -0
  222. package/src/form/PropertyFieldBinding.tsx +55 -41
  223. package/src/form/components/CustomIdField.tsx +9 -3
  224. package/src/form/components/FieldHelperText.tsx +1 -1
  225. package/src/form/components/FormEntry.tsx +22 -0
  226. package/src/form/components/FormLayout.tsx +16 -0
  227. package/src/form/components/LabelWithIcon.tsx +30 -19
  228. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  229. package/src/form/components/StorageItemPreview.tsx +5 -4
  230. package/src/form/components/StorageUploadProgress.tsx +2 -3
  231. package/src/form/components/index.tsx +3 -1
  232. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
  233. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
  234. package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
  235. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  236. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
  237. package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
  238. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  239. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  240. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +10 -8
  241. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  242. package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
  243. package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
  244. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
  245. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
  246. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  247. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  248. package/src/form/index.tsx +17 -37
  249. package/src/form/useClearRestoreValue.tsx +2 -2
  250. package/src/form/validation.ts +12 -6
  251. package/src/hooks/data/delete.ts +6 -5
  252. package/src/hooks/data/save.ts +26 -35
  253. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  254. package/src/hooks/data/useDataSource.tsx +10 -2
  255. package/src/hooks/data/useEntityFetch.tsx +10 -6
  256. package/src/hooks/useAuthController.tsx +1 -1
  257. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  258. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  259. package/src/hooks/useBuildModeController.tsx +15 -28
  260. package/src/hooks/useBuildNavigationController.tsx +386 -124
  261. package/src/hooks/useFireCMSContext.tsx +3 -33
  262. package/src/hooks/useLargeLayout.tsx +0 -35
  263. package/src/hooks/useModeController.tsx +1 -2
  264. package/src/hooks/useProjectLog.tsx +16 -5
  265. package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
  266. package/src/hooks/useValidateAuthenticator.tsx +3 -3
  267. package/src/internal/useBuildDataSource.ts +67 -80
  268. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  269. package/src/internal/useBuildSideEntityController.tsx +149 -86
  270. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  271. package/src/preview/PropertyPreview.tsx +28 -12
  272. package/src/preview/PropertyPreviewProps.tsx +1 -1
  273. package/src/preview/components/BooleanPreview.tsx +1 -1
  274. package/src/preview/components/EmptyValue.tsx +1 -1
  275. package/src/preview/components/EnumValuesChip.tsx +1 -1
  276. package/src/preview/components/ImagePreview.tsx +10 -9
  277. package/src/preview/components/ReferencePreview.tsx +6 -16
  278. package/src/preview/components/UrlComponentPreview.tsx +20 -21
  279. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
  280. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
  281. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
  282. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
  283. package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
  284. package/src/preview/property_previews/ArrayPropertyPreview.tsx +5 -3
  285. package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
  286. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  287. package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
  288. package/src/preview/util.ts +10 -10
  289. package/src/routes/CustomCMSRoute.tsx +21 -0
  290. package/src/routes/FireCMSRoute.tsx +246 -0
  291. package/src/routes/HomePageRoute.tsx +17 -0
  292. package/src/types/analytics.ts +3 -0
  293. package/src/types/auth.tsx +8 -12
  294. package/src/types/collections.ts +101 -28
  295. package/src/types/customization_controller.tsx +9 -0
  296. package/src/types/datasource.ts +21 -20
  297. package/src/types/dialogs_controller.tsx +7 -3
  298. package/src/types/entities.ts +3 -1
  299. package/src/types/entity_actions.tsx +71 -8
  300. package/src/types/entity_callbacks.ts +18 -18
  301. package/src/types/entity_overrides.tsx +2 -2
  302. package/src/types/export_import.ts +4 -4
  303. package/src/types/fields.tsx +52 -19
  304. package/src/types/firecms.tsx +18 -4
  305. package/src/types/firecms_context.tsx +1 -1
  306. package/src/types/navigation.ts +76 -22
  307. package/src/types/permissions.ts +5 -5
  308. package/src/types/plugins.tsx +50 -9
  309. package/src/types/properties.ts +74 -22
  310. package/src/types/property_config.tsx +1 -2
  311. package/src/types/roles.ts +3 -0
  312. package/src/types/side_dialogs_controller.tsx +15 -0
  313. package/src/types/side_entity_controller.tsx +16 -1
  314. package/src/types/storage.ts +82 -0
  315. package/src/types/user.ts +2 -0
  316. package/src/util/builders.ts +10 -8
  317. package/src/util/callbacks.ts +119 -0
  318. package/src/util/createFormexStub.tsx +62 -0
  319. package/src/util/entities.ts +5 -3
  320. package/src/util/entity_actions.ts +28 -0
  321. package/src/util/entity_cache.ts +204 -0
  322. package/src/util/icon_list.ts +1 -1
  323. package/src/util/icon_synonyms.ts +0 -1
  324. package/src/util/icons.tsx +36 -11
  325. package/src/util/index.ts +3 -0
  326. package/src/util/join_collections.ts +9 -2
  327. package/src/util/make_properties_editable.ts +13 -5
  328. package/src/util/navigation_from_path.ts +33 -12
  329. package/src/util/navigation_utils.ts +135 -19
  330. package/src/util/objects.ts +74 -14
  331. package/src/util/parent_references_from_path.ts +3 -3
  332. package/src/util/permissions.ts +8 -8
  333. package/src/util/property_utils.tsx +17 -6
  334. package/src/util/references.ts +19 -8
  335. package/src/util/resolutions.ts +93 -24
  336. package/src/util/storage.ts +6 -2
  337. package/src/util/useStorageUploadController.tsx +74 -29
  338. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  339. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  340. package/dist/form/PropertiesForm.d.ts +0 -8
  341. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  344. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
  345. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
  346. package/src/form/PropertiesForm.tsx +0 -81
  347. package/src/form/components/FormikArrayContainer.tsx +0 -44
  348. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  349. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -9,6 +9,7 @@ import { FireCMSContext } from "./firecms_context";
9
9
  export interface FetchEntityProps<M extends Record<string, any> = any> {
10
10
  path: string;
11
11
  entityId: string;
12
+ databaseId?: string;
12
13
  collection?: EntityCollection<M, any>
13
14
  }
14
15
 
@@ -63,6 +64,7 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
63
64
  */
64
65
  export interface DeleteEntityProps<M extends Record<string, any> = any> {
65
66
  entity: Entity<M>;
67
+ collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
66
68
  }
67
69
 
68
70
  /**
@@ -137,6 +139,7 @@ export interface DataSource {
137
139
  fetchEntity<M extends Record<string, any> = any>({
138
140
  path,
139
141
  entityId,
142
+ databaseId,
140
143
  collection
141
144
  }: FetchEntityProps<M>
142
145
  ): Promise<Entity<M> | undefined>;
@@ -181,7 +184,8 @@ export interface DataSource {
181
184
  */
182
185
  deleteEntity<M extends Record<string, any> = any>(
183
186
  {
184
- entity
187
+ entity,
188
+ collection
185
189
  }: DeleteEntityProps<M>
186
190
  ): Promise<void>;
187
191
 
@@ -190,7 +194,7 @@ export interface DataSource {
190
194
  * @param path Collection path
191
195
  * @param name of the property
192
196
  * @param value
193
- * @param property
197
+ * @param collection
194
198
  * @param entityId
195
199
  * @return `true` if there are no other fields besides the given entity
196
200
  */
@@ -198,13 +202,14 @@ export interface DataSource {
198
202
  path: string,
199
203
  name: string,
200
204
  value: any,
201
- entityId?: string
205
+ entityId?: string,
206
+ collection?: EntityCollection
202
207
  ): Promise<boolean>;
203
208
 
204
209
  /**
205
210
  * Generate an id for a new entity
206
211
  */
207
- generateEntityId(path: string): string;
212
+ generateEntityId(path: string, collection: EntityCollection): string;
208
213
 
209
214
  /**
210
215
  * Count the number of entities in a collection
@@ -238,19 +243,11 @@ export type FilterCombinationValidProps = {
238
243
  sortBy?: [string, "asc" | "desc"];
239
244
  };
240
245
 
241
- export type SaveEntityDelegateProps<M extends Record<string, any> = any> = Omit<SaveEntityProps<M>, "collection">;
246
+ export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
242
247
 
243
- export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
244
- Omit<FetchCollectionProps<M>, "collection">
245
- & {
246
- isCollectionGroup?: boolean
247
- };
248
+ export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
248
249
 
249
- export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
250
- ListenCollectionProps<M>
251
- & {
252
- isCollectionGroup?: boolean;
253
- };
250
+ export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
254
251
 
255
252
  export interface DataSourceDelegate {
256
253
 
@@ -321,7 +318,7 @@ export interface DataSourceDelegate {
321
318
  fetchEntity<M extends Record<string, any> = any>({
322
319
  path,
323
320
  entityId,
324
- }: Omit<FetchEntityProps<M>, "collection">): Promise<Entity<M> | undefined>;
321
+ }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
325
322
 
326
323
  /**
327
324
  * Get realtime updates on one entity.
@@ -337,7 +334,7 @@ export interface DataSourceDelegate {
337
334
  entityId,
338
335
  onUpdate,
339
336
  onError
340
- }: Omit<ListenEntityProps<M>, "collection">): () => void;
337
+ }: ListenEntityProps<M>): () => void;
341
338
 
342
339
  /**
343
340
  * Save entity to the specified path
@@ -366,14 +363,15 @@ export interface DataSourceDelegate {
366
363
  * @param name of the property
367
364
  * @param value
368
365
  * @param entityId
366
+ * @param collection
369
367
  * @return `true` if there are no other fields besides the given entity
370
368
  */
371
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
369
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
372
370
 
373
371
  /**
374
372
  * Generate an id for a new entity
375
373
  */
376
- generateEntityId(path: string): string;
374
+ generateEntityId(path: string, collection?: EntityCollection): string;
377
375
 
378
376
  /**
379
377
  * Count the number of entities in a collection
@@ -384,7 +382,9 @@ export interface DataSourceDelegate {
384
382
  * Check if the given filter combination is valid
385
383
  * @param props
386
384
  */
387
- isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">): boolean;
385
+ isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
386
+ databaseId?: string
387
+ }): boolean;
388
388
 
389
389
  /**
390
390
  * Get the object to generate the current time in the datasource
@@ -400,6 +400,7 @@ export interface DataSourceDelegate {
400
400
  initTextSearch?: (props: {
401
401
  context: FireCMSContext,
402
402
  path: string,
403
+ databaseId?: string,
403
404
  collection: EntityCollection,
404
405
  parentCollectionIds?: string[]
405
406
  }) => Promise<boolean>;
@@ -15,19 +15,23 @@ export interface DialogsController {
15
15
  * Open a dialog
16
16
  * @param props
17
17
  */
18
- open: (props: DialogControllerEntryProps) => { closeDialog: () => void };
18
+ open: <T extends object = object>(props: DialogControllerEntryProps<T>) => { closeDialog: () => void };
19
19
  }
20
20
 
21
21
  /**
22
22
  * Props used to open a side dialog
23
23
  * @group Hooks and utilities
24
24
  */
25
- export interface DialogControllerEntryProps {
25
+ export interface DialogControllerEntryProps<T extends object = object> {
26
26
 
27
27
  key: string;
28
28
  /**
29
29
  * The component type that will be rendered
30
30
  */
31
- Component: React.ComponentType<{ open: boolean, closeDialog: () => void }>;
31
+ Component: React.ComponentType<{ open: boolean, closeDialog: () => void } & T>;
32
+ /**
33
+ * Props to pass to the dialog component
34
+ */
35
+ props?: T;
32
36
 
33
37
  }
@@ -8,7 +8,7 @@ export type EntityStatus = "new" | "existing" | "copy";
8
8
  * Representation of an entity fetched from the datasource
9
9
  * @group Models
10
10
  */
11
- export interface Entity<M extends object> {
11
+ export interface Entity<M extends object = any> {
12
12
 
13
13
  /**
14
14
  * ID of the entity
@@ -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
  /**
@@ -4,17 +4,31 @@ import { Entity } from "./entities";
4
4
  import { EntityCollection, SelectionController } from "./collections";
5
5
  import { User } from "./user";
6
6
  import { SideEntityController } from "./side_entity_controller";
7
+ import { FormContext } from "./fields";
7
8
 
8
9
  /**
9
10
  * An entity action is a custom action that can be performed on an entity.
10
11
  * They are displayed in the entity view and in the collection view.
11
12
  */
12
- export type EntityAction<M extends object = any, UserType extends User = User> = {
13
+ export type EntityAction<M extends object = any, USER extends User = User> = {
13
14
  /**
14
15
  * Title of the action
15
16
  */
16
17
  name: string;
17
18
 
19
+ /**
20
+ * Key of the action. You only need to provide this if you want to
21
+ * override the default actions, or if you are not passing the action
22
+ * directly to the `entityActions` prop of a collection.
23
+ * You can define your actions at the app level, in which case you
24
+ * must provide a key.
25
+ * The default actions are:
26
+ * - edit
27
+ * - delete
28
+ * - copy
29
+ */
30
+ key?: string;
31
+
18
32
  /**
19
33
  * Icon of the action
20
34
  */
@@ -24,7 +38,13 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
24
38
  * Callback when the action is clicked
25
39
  * @param props
26
40
  */
27
- onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
41
+ onClick: (props: EntityActionClickProps<M, USER>) => Promise<void> | void;
42
+
43
+ /**
44
+ * Optional callback in case you want to disable the action
45
+ * @param props
46
+ */
47
+ isEnabled?: (props: EntityActionClickProps<M, USER>) => boolean;
28
48
 
29
49
  /**
30
50
  * Show this action collapsed in the menu of the collection view.
@@ -40,17 +60,60 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
40
60
 
41
61
  }
42
62
 
43
- export type EntityActionClickProps<M extends object, UserType extends User = User> = {
44
- entity: Entity<M>;
45
- context: FireCMSContext<UserType>;
63
+ export type EntityActionClickProps<M extends object, USER extends User = User> = {
64
+ entity?: Entity<M>;
65
+ context: FireCMSContext<USER>;
66
+
46
67
  fullPath?: string;
68
+ fullIdPath?: string;
47
69
  collection?: EntityCollection<M>;
70
+
71
+ /**
72
+ * Optional form context, present if the action is being called from a form.
73
+ * This allows you to access the form state and methods, including modifying the form values.
74
+ */
75
+ formContext?: FormContext;
76
+
77
+ /**
78
+ * Present if this actions is being called from a side dialog only
79
+ */
80
+ sideEntityController?: SideEntityController;
81
+
82
+ /**
83
+ * Is the action being called from the collection view or from the entity form view?
84
+ */
85
+ view: "collection" | "form";
86
+
87
+ /**
88
+ * If the action is rendered in the form, is it open in a side panel or full screen?
89
+ */
90
+ openEntityMode: "side_panel" | "full_screen";
91
+
92
+ /**
93
+ * Optional selection controller, present if the action is being called from a collection view
94
+ */
48
95
  selectionController?: SelectionController;
96
+
97
+ /**
98
+ * Optional highlight function to highlight the entity in the collection view
99
+ * @param entity
100
+ */
49
101
  highlightEntity?: (entity: Entity<any>) => void;
102
+
103
+ /**
104
+ * Optional unhighlight function to remove the highlight from the entity in the collection view
105
+ * @param entity
106
+ */
50
107
  unhighlightEntity?: (entity: Entity<any>) => void;
51
- onCollectionChange?: () => void;
108
+
52
109
  /**
53
- * If this actions is being called from a side dialog
110
+ * Optional function to navigate back (e.g. when deleting an entity or navigating from a form)
54
111
  */
55
- sideEntityController?: SideEntityController;
112
+ navigateBack?: () => void;
113
+
114
+ /**
115
+ * Callback to be called when the collection changes, e.g. after an entity is deleted or created.
116
+ */
117
+ onCollectionChange?: () => void;
118
+
56
119
  };
@@ -10,27 +10,27 @@ import { User } from "./user";
10
10
  * Useful for adding your own logic or blocking the execution of the operation.
11
11
  * @group Models
12
12
  */
13
- export type EntityCallbacks<M extends Record<string, any> = any, UserType extends User = User> = {
13
+ export type EntityCallbacks<M extends Record<string, any> = any, USER extends User = User> = {
14
14
 
15
15
  /**
16
16
  * Callback used after fetching data
17
17
  * @param entityFetchProps
18
18
  */
19
- onFetch?(entityFetchProps: EntityOnFetchProps<M, UserType>)
19
+ onFetch?(entityFetchProps: EntityOnFetchProps<M, USER>)
20
20
  : Promise<Entity<M>> | Entity<M>;
21
21
 
22
22
  /**
23
23
  * Callback used when save is successful
24
24
  * @param entitySaveProps
25
25
  */
26
- onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, UserType>)
26
+ onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, USER>)
27
27
  : Promise<void> | void;
28
28
 
29
29
  /**
30
30
  * Callback used when saving fails
31
31
  * @param entitySaveProps
32
32
  */
33
- onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, UserType>)
33
+ onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, USER>)
34
34
  : Promise<void> | void;
35
35
 
36
36
  /**
@@ -39,7 +39,7 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
39
39
  * error snackbar gets displayed.
40
40
  * @param entitySaveProps
41
41
  */
42
- onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, UserType>)
42
+ onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, USER>)
43
43
  : Promise<Partial<EntityValues<M>>> | Partial<EntityValues<M>>;
44
44
 
45
45
  /**
@@ -49,14 +49,14 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
49
49
  *
50
50
  * @param entityDeleteProps
51
51
  */
52
- onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
52
+ onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
53
53
 
54
54
  /**
55
55
  * Callback used after the entity is deleted.
56
56
  *
57
57
  * @param entityDeleteProps
58
58
  */
59
- onDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
59
+ onDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
60
60
 
61
61
  /**
62
62
  * Callback fired when any value in the form changes. You can use it
@@ -73,12 +73,12 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
73
73
  * Parameters passed to hooks when an entity is fetched
74
74
  * @group Models
75
75
  */
76
- export interface EntityOnFetchProps<M extends Record<string, any> = any, UserType extends User = User> {
76
+ export interface EntityOnFetchProps<M extends Record<string, any> = any, USER extends User = User> {
77
77
 
78
78
  /**
79
79
  * Collection of the entity
80
80
  */
81
- collection: EntityCollection<M, UserType>;
81
+ collection: EntityCollection<M, USER>;
82
82
 
83
83
  /**
84
84
  * Full path of the CMS where this collection is being fetched.
@@ -94,15 +94,15 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
94
94
  /**
95
95
  * Context of the app status
96
96
  */
97
- context: FireCMSContext<UserType>;
97
+ context: FireCMSContext<USER>;
98
98
  }
99
99
 
100
100
  /**
101
101
  * Parameters passed to hooks before an entity is saved
102
102
  * @group Models
103
103
  */
104
- export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType extends User = User> =
105
- Omit<EntityOnSaveProps<M, UserType>, "entityId">
104
+ export type EntityOnPreSaveProps<M extends Record<string, any> = any, USER extends User = User> =
105
+ Omit<EntityOnSaveProps<M, USER>, "entityId">
106
106
  & {
107
107
  entityId?: string;
108
108
  }
@@ -110,8 +110,8 @@ export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType e
110
110
  * Parameters passed to hooks before an entity is saved
111
111
  * @group Models
112
112
  */
113
- export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserType extends User = User> =
114
- Omit<EntityOnSaveProps<M, UserType>, "entityId">
113
+ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, USER extends User = User> =
114
+ Omit<EntityOnSaveProps<M, USER>, "entityId">
115
115
  & {
116
116
  entityId?: string;
117
117
  }
@@ -120,7 +120,7 @@ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserTy
120
120
  * Parameters passed to hooks when an entity is saved
121
121
  * @group Models
122
122
  */
123
- export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType extends User = User> {
123
+ export interface EntityOnSaveProps<M extends Record<string, any> = any, USER extends User = User> {
124
124
 
125
125
  /**
126
126
  * Resolved collection of the entity
@@ -161,14 +161,14 @@ export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType
161
161
  /**
162
162
  * Context of the app status
163
163
  */
164
- context: FireCMSContext<UserType>;
164
+ context: FireCMSContext<USER>;
165
165
  }
166
166
 
167
167
  /**
168
168
  * Parameters passed to hooks when an entity is deleted
169
169
  * @group Models
170
170
  */
171
- export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserType extends User = User> {
171
+ export interface EntityOnDeleteProps<M extends Record<string, any> = any, USER extends User = User> {
172
172
 
173
173
  /**
174
174
  * collection of the entity being deleted
@@ -193,7 +193,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
193
193
  /**
194
194
  * Context of the app status
195
195
  */
196
- context: FireCMSContext<UserType>;
196
+ context: FireCMSContext<USER>;
197
197
  }
198
198
 
199
199
  /**
@@ -1,7 +1,7 @@
1
- import { DataSource } from "./datasource";
1
+ import { DataSource, DataSourceDelegate } from "./datasource";
2
2
  import { StorageSource } from "./storage";
3
3
 
4
4
  export type EntityOverrides = {
5
- dataSource?: DataSource;
5
+ dataSourceDelegate?: DataSourceDelegate;
6
6
  storageSource?: StorageSource;
7
7
  };
@@ -7,20 +7,20 @@ import { FireCMSContext } from "./firecms_context";
7
7
  * exports
8
8
  * @group Models
9
9
  */
10
- export interface ExportConfig<UserType extends User = User> {
11
- additionalFields: ExportMappingFunction<UserType> [];
10
+ export interface ExportConfig<USER extends User = User> {
11
+ additionalFields: ExportMappingFunction<USER> [];
12
12
  }
13
13
 
14
14
  /**
15
15
  * @group Models
16
16
  */
17
- export interface ExportMappingFunction<UserType extends User = User> {
17
+ export interface ExportMappingFunction<USER extends User = User> {
18
18
  key: string;
19
19
  builder: ({
20
20
  entity,
21
21
  context
22
22
  }: {
23
23
  entity: Entity<any>,
24
- context: FireCMSContext<UserType>
24
+ context: FireCMSContext<USER>
25
25
  }) => Promise<string> | string;
26
26
  }
@@ -1,6 +1,7 @@
1
- import { CMSType, PropertyOrBuilder } from "./properties";
1
+ import { CMSType, Property, PropertyOrBuilder } from "./properties";
2
2
  import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
3
3
  import { FormexController } from "@firecms/formex";
4
+ import { Entity } from "./entities";
4
5
 
5
6
  /**
6
7
  * When building a custom field you need to create a React component that takes
@@ -62,7 +63,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
62
63
  /**
63
64
  * Property related to this field
64
65
  */
65
- property: ResolvedProperty<T>;
66
+ property: Property<T> | ResolvedProperty<T>;
66
67
 
67
68
  /**
68
69
  * Should this field include a description
@@ -81,14 +82,10 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
81
82
  partOfArray?: boolean;
82
83
 
83
84
  /**
84
- * Is this field part of a block (oneOf array)
85
+ * Display the child properties directly, without being wrapped in an
86
+ * extendable panel. Note that this will also hide the title of this property.
85
87
  */
86
- partOfBlock?: boolean;
87
-
88
- /**
89
- * Is this field being rendered in the entity table popup
90
- */
91
- tableMode?: boolean;
88
+ minimalistView?: boolean;
92
89
 
93
90
  /**
94
91
  * Should this field autofocus on mount
@@ -98,7 +95,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
98
95
  /**
99
96
  * Additional properties set by the developer
100
97
  */
101
- customProps?: CustomProps
98
+ customProps: CustomProps
102
99
 
103
100
  /**
104
101
  * Additional values related to the state of the form or the entity
@@ -110,6 +107,20 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
110
107
  */
111
108
  disabled?: boolean;
112
109
 
110
+ /**
111
+ * Size of the field
112
+ */
113
+ size?: "small" | "medium" | "large";
114
+
115
+ /**
116
+ * Some properties might change internal state (like expanding a panel).
117
+ * This function should be called when the internal state changes.
118
+ * This is used to preserve state in array containers.
119
+ *
120
+ * @param property
121
+ */
122
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
123
+
113
124
  }
114
125
 
115
126
  /**
@@ -144,17 +155,29 @@ export interface FormContext<M extends Record<string, any> = any> {
144
155
  /**
145
156
  * Entity id, it can be null if it's a new entity
146
157
  */
147
- entityId?: string;
158
+ entityId: string;
148
159
 
149
160
  /**
150
161
  * Path this entity is located at
151
162
  */
152
163
  path?: string;
153
164
 
165
+ status: "new" | "existing" | "copy";
166
+
167
+ entity?: Entity<M>;
168
+
169
+ savingError?: Error;
170
+
171
+ openEntityMode: "side_panel" | "full_screen";
172
+
154
173
  /**
155
- * This is the underlying formex controller that powers the form
174
+ * This is the underlying formex controller that powers the form.
175
+ * If you are in a red only mode, the formex controller is there, but you can't
176
+ * operate with it
156
177
  */
157
178
  formex: FormexController<M>;
179
+
180
+ disabled: boolean;
158
181
  }
159
182
 
160
183
  /**
@@ -192,20 +215,16 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
192
215
  */
193
216
  underlyingValueHasChanged?: boolean;
194
217
 
195
- /**
196
- * Is this field being rendered in a table
197
- */
198
- tableMode?: boolean;
199
-
200
218
  /**
201
219
  * Is this field part of an array
202
220
  */
203
221
  partOfArray?: boolean;
204
222
 
205
223
  /**
206
- * Is this field part of a block (oneOf array)
224
+ * Display the child properties directly, without being wrapped in an
225
+ * extendable panel. Note that this will also hide the title of this property.
207
226
  */
208
- partOfBlock?: boolean;
227
+ minimalistView?: boolean;
209
228
 
210
229
  /**
211
230
  * Should the field take focus when rendered. When opening the popup view
@@ -223,4 +242,18 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
223
242
  * Only used when the field is part of an array.
224
243
  */
225
244
  index?: number;
245
+
246
+ /**
247
+ * The size of the field
248
+ */
249
+ size?: "small" | "medium" | "large",
250
+
251
+ /**
252
+ * Some properties might change internal state (like expanding a panel).
253
+ * This function should be called when the internal state changes.
254
+ * This is used to preserve state in array containers.
255
+ *
256
+ * @param property
257
+ */
258
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
226
259
  }
@@ -12,6 +12,7 @@ import { EntityLinkBuilder } from "./entity_link_builder";
12
12
  import { UserConfigurationPersistence } from "./local_config_persistence";
13
13
  import { FireCMSPlugin } from "./plugins";
14
14
  import { CMSAnalyticsEvent } from "./analytics";
15
+ import { EntityAction } from "./entity_actions";
15
16
 
16
17
  /**
17
18
  * Use this callback to build entity collections dynamically.
@@ -47,7 +48,7 @@ export type CMSViewsBuilder = (params: {
47
48
  /**
48
49
  * @group Models
49
50
  */
50
- export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
51
+ export type FireCMSProps<USER extends User> = {
51
52
 
52
53
  /**
53
54
  * Use this function to return the components you want to render under
@@ -67,6 +68,11 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
67
68
  loading: boolean;
68
69
  }) => React.ReactNode;
69
70
 
71
+ /**
72
+ * If you have a custom API key, you can use it here.
73
+ */
74
+ apiKey?: string;
75
+
70
76
  /**
71
77
  * Record of custom form fields to be used in the CMS.
72
78
  * You can use the key to reference the custom field in
@@ -87,9 +93,16 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
87
93
  *
88
94
  * You can also define an entity view from the UI.
89
95
  */
90
-
91
96
  entityViews?: EntityCustomView[];
92
97
 
98
+ /**
99
+ * List of actions that can be performed on entities.
100
+ * These actions are displayed in the entity view and in the collection view.
101
+ * You can later reuse these actions in the `entityActions` prop of a collection,
102
+ * by specifying the `key` of the action.
103
+ */
104
+ entityActions?: EntityAction[];
105
+
93
106
  /**
94
107
  * Format of the dates in the CMS.
95
108
  * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
@@ -114,7 +127,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
114
127
  /**
115
128
  * Delegate for implementing your auth operations.
116
129
  */
117
- authController: AuthController<UserType>;
130
+ authController: AuthController<USER>;
118
131
 
119
132
  /**
120
133
  * Use this controller to access the configuration that is stored locally,
@@ -124,7 +137,8 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
124
137
 
125
138
  /**
126
139
  * Use plugins to modify the behaviour of the CMS.
127
- * Currently, in ALPHA, and likely subject to change.
140
+ * DEPRECATED: use the `plugins` prop in the `useBuildNavigationController` instead.
141
+ * This prop will work as a fallback for the `plugins` prop in the `useBuildNavigationController`.
128
142
  */
129
143
  plugins?: FireCMSPlugin<any, any, any>[];
130
144
 
@@ -18,7 +18,7 @@ import { AnalyticsController } from "./analytics_controller";
18
18
  * @group Hooks and utilities
19
19
  * @see useFireCMSContext
20
20
  */
21
- export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
21
+ export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
22
22
 
23
23
  /**
24
24
  * Connector to your database, e.g. your Firestore database