@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
@@ -1,10 +1,12 @@
1
1
  import React from "react";
2
2
  import { EntityCollection } from "./collections";
3
3
  import { EntityReference } from "./entities";
4
+ import { FireCMSPlugin } from "./plugins";
4
5
 
5
6
  /**
6
7
  * Controller that includes the resolved navigation and utility methods and
7
8
  * attributes.
9
+ * This controller holds the state of the navigation including the collections.
8
10
  * @group Models
9
11
  */
10
12
  export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
@@ -34,7 +36,7 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
34
36
  * level of the navigation (e.g. in the home page or the navigation
35
37
  * drawer)
36
38
  */
37
- topLevelNavigation?: TopNavigationResult;
39
+ topLevelNavigation?: NavigationResult;
38
40
 
39
41
  /**
40
42
  * Is the navigation loading (the configuration persistence has not
@@ -56,8 +58,13 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
56
58
  * Get the collection configuration for a given path.
57
59
  * The collection is resolved from the given path or alias.
58
60
  */
59
- getCollection: (pathOrId: string,
60
- includeUserOverride?: boolean) => EC | undefined;
61
+ getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
62
+
63
+ /**
64
+ * Get the top level collection configuration for a given id
65
+ */
66
+ getCollectionById: (id: string) => EC | undefined;
67
+
61
68
  /**
62
69
  * Get the collection configuration from its parent ids.
63
70
  */
@@ -69,12 +76,14 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
69
76
  getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
70
77
 
71
78
  /**
72
- * Default path under the navigation routes of the CMS will be created
79
+ * Default path under the navigation routes of the CMS will be created.
80
+ * Defaults to '/'. You may want to change this `basepath` to 'admin' for example.
73
81
  */
74
82
  basePath: string;
75
83
 
76
84
  /**
77
- * Default path under the collection routes of the CMS will be created
85
+ * Default path under the collection routes of the CMS will be created.
86
+ * It defaults to '/c'
78
87
  */
79
88
  baseCollectionPath: string;
80
89
 
@@ -87,16 +96,6 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
87
96
  */
88
97
  urlPathToDataPath: (cmsPath: string) => string;
89
98
 
90
- /**
91
- * Convert a collection or entity path to a URL path
92
- * @param path
93
- */
94
- buildCMSUrlPath: (path: string) => string;
95
-
96
- buildUrlEditCollectionPath: (props: {
97
- path: string
98
- }) => string;
99
-
100
99
  /**
101
100
  * Base url path for the home screen
102
101
  */
@@ -117,10 +116,11 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
117
116
  buildUrlCollectionPath: (path: string) => string;
118
117
 
119
118
  /**
120
- * Turn a path with aliases into a resolved path
119
+ * Turn a path with collection ids into a resolved path.
120
+ * The ids (typically used in urls) will be replaced with relative paths (typically used in database paths)
121
121
  * @param pathWithAliases
122
122
  */
123
- resolveAliasesFrom: (pathWithAliases: string) => string;
123
+ resolveIdsFrom: (pathWithAliases: string) => string;
124
124
 
125
125
  /**
126
126
  * Call this method to recalculate the navigation
@@ -144,8 +144,39 @@ export type NavigationController<EC extends EntityCollection = EntityCollection<
144
144
  * @param ids
145
145
  */
146
146
  convertIdsToPaths: (ids: string[]) => string[];
147
+
148
+ /**
149
+ * A function to navigate to a specified route or URL.
150
+ *
151
+ * @param {string} to - The target route or URL to navigate to.
152
+ * @param {NavigateOptions} [options] - Optional configuration settings for navigation, such as replace behavior or state data.
153
+ */
154
+ navigate: (to: string, options?: NavigateOptions) => void;
155
+
156
+ /**
157
+ * Plugin system allowing to extend the CMS functionality.
158
+ */
159
+ plugins?: FireCMSPlugin<any, any, any>[];
160
+
161
+ }
162
+
163
+ export interface NavigateOptions {
164
+ replace?: boolean;
165
+ state?: any;
166
+ preventScrollReset?: boolean;
167
+ relative?: "route" | "path";
168
+ flushSync?: boolean;
169
+ viewTransition?: boolean;
147
170
  }
148
171
 
172
+ // currently not used, in favor of a single blocker in `FireCMSRoute`
173
+ export type NavigationBlocker = {
174
+ updateBlockListener: (path: string, block: boolean, basePath?: string) => () => void;
175
+ isBlocked: (path: string) => boolean;
176
+ proceed?: () => void;
177
+ reset?: () => void;
178
+ };
179
+
149
180
  /**
150
181
  * Custom additional views created by the developer, added to the main
151
182
  * navigation.
@@ -173,8 +204,9 @@ export interface CMSView {
173
204
  * You can use any of the icons in the Material specs:
174
205
  * https://fonts.google.com/icons
175
206
  * e.g. 'account_tree' or 'person'
207
+ * Find all the icons in https://firecms.co/docs/icons
176
208
  */
177
- icon?: string;
209
+ icon?: string | React.ReactNode;
178
210
 
179
211
  /**
180
212
  * Should this view be hidden from the main navigation panel.
@@ -197,7 +229,22 @@ export interface CMSView {
197
229
 
198
230
  }
199
231
 
200
- export interface TopNavigationEntry {
232
+ /**
233
+ * Used to group navigation entries in the main navigation.
234
+ */
235
+ export interface NavigationGroupMapping {
236
+ /**
237
+ * Name of the group, used to display the group header in the UI
238
+ */
239
+ name: string;
240
+ /**
241
+ * List of collection ids or view paths that belong to this group.
242
+ */
243
+ entries: string[];
244
+ }
245
+
246
+ export interface NavigationEntry {
247
+ id: string;
201
248
  url: string;
202
249
  name: string;
203
250
  path: string;
@@ -208,7 +255,14 @@ export interface TopNavigationEntry {
208
255
  group: string;
209
256
  }
210
257
 
211
- export type TopNavigationResult = {
212
- navigationEntries: TopNavigationEntry[],
213
- groups: string[]
258
+ export type NavigationResult = {
259
+
260
+ allowDragAndDrop: boolean;
261
+
262
+ navigationEntries: NavigationEntry[],
263
+
264
+ groups: string[],
265
+
266
+ onNavigationEntriesUpdate: (entries: NavigationGroupMapping[]) => void;
214
267
  };
268
+
@@ -32,7 +32,7 @@ export interface Permissions {
32
32
  * Props passed to a {@link PermissionsBuilder}
33
33
  * @group Models
34
34
  */
35
- export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> {
35
+ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
36
36
  /**
37
37
  * Entity being edited, might be null in some cases, when the operation
38
38
  * refers to the collection.
@@ -54,7 +54,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
54
54
  /**
55
55
  * Logged in user
56
56
  */
57
- user: UserType | null;
57
+ user: USER | null;
58
58
 
59
59
  /**
60
60
  * Collection these permissions apply to
@@ -64,7 +64,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
64
64
  /**
65
65
  * Auth controller
66
66
  */
67
- authController: AuthController<UserType>;
67
+ authController: AuthController<USER>;
68
68
  }
69
69
 
70
70
  /**
@@ -72,10 +72,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
72
72
  * based on the logged user or collection.
73
73
  * @group Models
74
74
  */
75
- export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> =
75
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> =
76
76
  (({
77
77
  pathSegments,
78
78
  user,
79
79
  collection,
80
80
  authController
81
- }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);
81
+ }: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
@@ -7,6 +7,7 @@ import { FieldProps, FormContext } from "./fields";
7
7
  import { CMSType, Property } from "./properties";
8
8
  import { EntityStatus } from "./entities";
9
9
  import { ResolvedProperty } from "./resolved_entities";
10
+ import { NavigationGroupMapping } from "./navigation";
10
11
 
11
12
  /**
12
13
  * Interface used to define plugins for FireCMS.
@@ -84,6 +85,20 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
84
85
  children: React.ReactNode;
85
86
  }
86
87
 
88
+ /**
89
+ * Allow reordering with drag and drop of the collections in the home page.
90
+ */
91
+ allowDragAndDrop?: boolean;
92
+
93
+ navigationEntries?: NavigationGroupMapping[];
94
+
95
+ /**
96
+ * This method will be called when the entries are updated in the home page.
97
+ * group => navigationEntriesOrder (path)
98
+ * @param entries
99
+ */
100
+ onNavigationEntriesUpdate?: (entries: NavigationGroupMapping[]) => void;
101
+
87
102
  }
88
103
 
89
104
  collectionView?: {
@@ -151,13 +166,37 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
151
166
  props?: FORM_PROPS;
152
167
  }
153
168
 
169
+ /**
170
+ * Add custom actions to the default ones ("Save", "Discard"...)
171
+ */
154
172
  Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
155
173
 
174
+ /**
175
+ * Add custom actions to the top of the form
176
+ */
177
+ ActionsTop?: React.ComponentType<PluginFormActionProps<any, EC>>;
178
+
156
179
  fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
157
180
 
158
181
  fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
159
182
  }
160
183
 
184
+ collection?: {
185
+
186
+ /**
187
+ * Use this method to modify a single collection before it is rendered.
188
+ * @param collection
189
+ */
190
+ modifyCollection?: (collection: EntityCollection) => EntityCollection;
191
+
192
+ /**
193
+ * Use this method to modify, add or remove collections.
194
+ * @param collections
195
+ */
196
+ injectCollections?: (collections: EntityCollection[]) => EntityCollection[];
197
+
198
+ }
199
+
161
200
  }
162
201
 
163
202
  /**
@@ -166,7 +205,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
166
205
  *
167
206
  * @group Models
168
207
  */
169
- export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
208
+ export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
170
209
  /**
171
210
  * Collection path of this entity. This is the full path, like
172
211
  * `users/1234/addresses`
@@ -181,20 +220,22 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
181
220
  /**
182
221
  * Context of the app status
183
222
  */
184
- context: FireCMSContext<UserType>;
223
+ context: FireCMSContext<USER>;
185
224
 
186
225
  extraProps?: EP;
187
226
 
188
227
  }
189
228
 
190
- export interface PluginFormActionProps<UserType extends User = User, EC extends EntityCollection = EntityCollection> {
229
+ export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
191
230
  entityId?: string;
192
231
  path: string;
232
+ parentCollectionIds: string[];
193
233
  status: EntityStatus;
194
234
  collection: EC;
235
+ disabled: boolean;
195
236
  formContext?: FormContext<any>;
196
- context: FireCMSContext<UserType>;
197
- currentEntityId?: string;
237
+ context: FireCMSContext<USER>;
238
+ openEntityMode: "side_panel" | "full_screen";
198
239
  }
199
240
 
200
241
  export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
@@ -207,11 +248,11 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
207
248
  collection?: EC;
208
249
  };
209
250
 
210
- export interface PluginGenericProps<UserType extends User = User> {
211
- context: FireCMSContext<UserType>;
251
+ export interface PluginGenericProps<USER extends User = User> {
252
+ context: FireCMSContext<USER>;
212
253
  }
213
254
 
214
- export interface PluginHomePageAdditionalCardsProps<UserType extends User = User> {
255
+ export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
215
256
  group?: string;
216
- context: FireCMSContext<UserType>;
257
+ context: FireCMSContext<USER>;
217
258
  }
@@ -5,6 +5,7 @@ import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
5
5
  import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
6
6
  import { FilterValues } from "./collections";
7
7
  import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
8
+ import { AuthController } from "./auth";
8
9
 
9
10
  /**
10
11
  * @group Entity properties
@@ -17,7 +18,7 @@ export type DataType<T extends CMSType = CMSType> =
17
18
  T extends GeoPoint ? "geopoint" :
18
19
  T extends Vector ? "vector" :
19
20
  T extends EntityReference ? "reference" :
20
- T extends Array<CMSType> ? "array" :
21
+ T extends Array<any> ? "array" :
21
22
  T extends Record<string, any> ? "map" : never;
22
23
 
23
24
  /**
@@ -49,7 +50,7 @@ export type AnyProperty =
49
50
  /**
50
51
  * @group Entity properties
51
52
  */
52
- export type Property<T extends CMSType = CMSType> =
53
+ export type Property<T extends CMSType = any> =
53
54
  T extends string ? StringProperty :
54
55
  T extends number ? NumberProperty :
55
56
  T extends boolean ? BooleanProperty :
@@ -156,6 +157,12 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
156
157
  * save the new config. The saved config will then become the source of truth.
157
158
  */
158
159
  editable?: boolean;
160
+
161
+ /**
162
+ * A number between 0 and 100 that indicates the width of the field in the form view.
163
+ * It defaults to 100, but you can set it to 50 to have two fields in the same row.
164
+ */
165
+ widthPercentage?: number;
159
166
  }
160
167
 
161
168
  /**
@@ -264,6 +271,11 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> =
264
271
  * Entity ID
265
272
  */
266
273
  entityId?: string;
274
+
275
+ /**
276
+ * Controller to manage authentication
277
+ */
278
+ authController: AuthController;
267
279
  };
268
280
 
269
281
  /**
@@ -279,20 +291,21 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
279
291
  propertyValue,
280
292
  index,
281
293
  path,
282
- entityId
294
+ entityId,
295
+ authController
283
296
  }: PropertyBuilderProps<M>) => Property<T> | null;
284
297
 
285
298
  /**
286
299
  * @group Entity properties
287
300
  */
288
- export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = Record<string, any>> =
301
+ export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any> =
289
302
  Property<T>
290
303
  | PropertyBuilder<T, M>;
291
304
 
292
305
  /**
293
306
  * @group Entity properties
294
307
  */
295
- export type PropertiesOrBuilders<M extends Record<string, any> = Record<string, any>> =
308
+ export type PropertiesOrBuilders<M extends Record<string, any> = any> =
296
309
  {
297
310
  [k in keyof M]: PropertyOrBuilder<M[k], M>;
298
311
  };
@@ -371,7 +384,7 @@ export interface StringProperty extends BaseProperty<string> {
371
384
 
372
385
  /**
373
386
  * You can specify a `Storage` configuration. It is used to
374
- * indicate that this string refers to a path in Google Cloud Storage.
387
+ * indicate that this string refers to a path in your storage provider.
375
388
  */
376
389
  storage?: StorageConfig;
377
390
 
@@ -400,12 +413,20 @@ export interface StringProperty extends BaseProperty<string> {
400
413
  * Add an icon to clear the value and set it to `null`. Defaults to `false`
401
414
  */
402
415
  clearable?: boolean;
416
+
417
+ /**
418
+ * You can use this property (a string) to behave as a reference to another
419
+ * collection. The stored value is the ID of the entity in the
420
+ * collection, and the `path` prop is used to
421
+ * define the collection this reference points to.
422
+ */
423
+ reference?: ReferenceProperty;
403
424
  }
404
425
 
405
426
  /**
406
427
  * @group Entity properties
407
428
  */
408
- export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> extends BaseProperty<T> {
429
+ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
409
430
 
410
431
  dataType: "array";
411
432
 
@@ -469,6 +490,24 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
469
490
  */
470
491
  expanded?: boolean;
471
492
 
493
+ /**
494
+ * Display the child properties directly, without being wrapped in an
495
+ * extendable panel.
496
+ */
497
+ minimalistView?: boolean;
498
+
499
+ /**
500
+ * Can the elements in this array be reordered. Defaults to `true`.
501
+ * This prop has no effect if `disabled` is set to true.
502
+ */
503
+ sortable?: boolean;
504
+
505
+ /**
506
+ * Can the elements in this array be added. Defaults to `true`
507
+ * This prop has no effect if `disabled` is set to true.
508
+ */
509
+ canAddElements?: boolean;
510
+
472
511
  }
473
512
 
474
513
  /**
@@ -517,6 +556,12 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
517
556
  */
518
557
  spreadChildren?: boolean;
519
558
 
559
+ /**
560
+ * Display the child properties directly, without being wrapped in an
561
+ * extendable panel. Note that this will also hide the title of this property.
562
+ */
563
+ minimalistView?: boolean;
564
+
520
565
  /**
521
566
  * Should the field be initially expanded. Defaults to `true`
522
567
  */
@@ -593,7 +638,7 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
593
638
  * You can leave this prop undefined if the path is not yet know, e.g.
594
639
  * you are using a property builder and the path depends on a different
595
640
  * property.
596
- * Note that you can also use a collection alias.
641
+ * Note that you can also use a collection id.
597
642
  */
598
643
  path?: string;
599
644
 
@@ -734,13 +779,13 @@ export type StorageConfig = {
734
779
  * You can use this prop to customize the uploaded filename.
735
780
  * You can use a function as a callback or a string where you
736
781
  * specify some placeholders that get replaced with the corresponding values.
737
- * - {file} - Full file name
738
- * - {file.name} - Name of the file without extension
739
- * - {file.ext} - Extension of the file
740
- * - {rand} - Random value used to avoid name collisions
741
- * - {entityId} - ID of the entity
742
- * - {propertyKey} - ID of this property
743
- * - {path} - Path of this entity
782
+ * - `{file}` - Full file name
783
+ * - `{file.name}` - Name of the file without extension
784
+ * - `{file.ext}` - Extension of the file
785
+ * - `{rand}` - Random value used to avoid name collisions
786
+ * - `{entityId}` - ID of the entity
787
+ * - `{propertyKey}` - ID of this property
788
+ * - `{path}` - Path of this entity
744
789
  *
745
790
  * @param context
746
791
  */
@@ -751,13 +796,13 @@ export type StorageConfig = {
751
796
  *
752
797
  * You can use a function as a callback or a string where you
753
798
  * specify some placeholders that get replaced with the corresponding values.
754
- * - {file} - Full file name
755
- * - {file.name} - Name of the file without extension
756
- * - {file.ext} - Extension of the file
757
- * - {rand} - Random value used to avoid name collisions
758
- * - {entityId} - ID of the entity
759
- * - {propertyKey} - ID of this property
760
- * - {path} - Path of this entity
799
+ * - `{file}` - Full file name
800
+ * - `{file.name}` - Name of the file without extension
801
+ * - `{file.ext}` - Extension of the file
802
+ * - `{rand}` - Random value used to avoid name collisions
803
+ * - `{entityId}` - ID of the entity
804
+ * - `{propertyKey}` - ID of this property
805
+ * - `{path}` - Path of this entity
761
806
  */
762
807
  storagePath: string | ((context: UploadedFileContext) => string);
763
808
 
@@ -778,6 +823,13 @@ export type StorageConfig = {
778
823
  */
779
824
  maxSize?: number,
780
825
 
826
+ /**
827
+ * Use this callback to process the file before uploading it to the storage.
828
+ * If nothing is returned, the file is uploaded as it is.
829
+ * @param file
830
+ */
831
+ processFile?: (file: File) => Promise<File> | undefined;
832
+
781
833
  /**
782
834
  * Postprocess the saved value (storage path or URL)
783
835
  * after it has been resolved.
@@ -23,8 +23,6 @@ export type PropertyConfig<T extends CMSType = any> = {
23
23
  * Default config for the property.
24
24
  * This property or builder will be used as the base values for the resulting property.
25
25
  * You can also use a builder function to generate the base property.
26
- * You can use a builder function to generate the property based on the values or the path.
27
- * You can also define a custom Field as a React component to be used for this property.
28
26
  */
29
27
  property: PropertyOrBuilder<T>;
30
28
 
@@ -64,6 +62,7 @@ export type PropertyConfigId =
64
62
  "group" |
65
63
  "key_value" |
66
64
  "reference" |
65
+ "reference_as_string" |
67
66
  "multi_references" |
68
67
  "switch" |
69
68
  "date_time" |
@@ -30,6 +30,9 @@ export type Role = {
30
30
  */
31
31
  collectionPermissions?: Record<string, Permissions>;
32
32
 
33
+ /**
34
+ * Permissions related to editing the collections
35
+ */
33
36
  config?: {
34
37
 
35
38
  createCollections?: boolean;
@@ -1,3 +1,6 @@
1
+ import React from "react";
2
+ import { EntityFormProps } from "../form";
3
+
1
4
  /**
2
5
  * Controller to open the side dialog
3
6
  * @group Hooks and utilities
@@ -14,6 +17,12 @@ export interface SideDialogsController {
14
17
  */
15
18
  sidePanels: SideDialogPanelProps[];
16
19
 
20
+ /**
21
+ * Override the current side panels
22
+ * @param panels
23
+ */
24
+ setSidePanels: (panels: SideDialogPanelProps[]) => void;
25
+
17
26
  /**
18
27
  * Open one or multiple side panels
19
28
  * @param props
@@ -65,4 +74,10 @@ export interface SideDialogPanelProps {
65
74
  * Callback when the panel is closed
66
75
  */
67
76
  onClose?: () => void;
77
+
78
+ /**
79
+ * Use this prop to store additional data in the panel
80
+ */
81
+ additional?: any;
82
+
68
83
  }
@@ -2,6 +2,7 @@ import { EntityCollection } from "./collections";
2
2
  import { ResolvedEntityCollection } from "./resolved_entities";
3
3
  import { Entity } from "./entities";
4
4
  import { EntityOverrides } from "./entity_overrides";
5
+ import { EntityFormProps } from "../form";
5
6
 
6
7
  /**
7
8
  * Props used to open a side dialog
@@ -14,6 +15,11 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
14
15
  */
15
16
  path: string;
16
17
 
18
+ /**
19
+ * Full CMS path of the entity, including the collection and sub-collections.
20
+ */
21
+ fullIdPath?: string;
22
+
17
23
  /**
18
24
  * ID of the entity, if not set, it means we are creating a new entity
19
25
  */
@@ -28,7 +34,7 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
28
34
  * Open the entity with a selected sub-collection view. If the panel for this
29
35
  * entity was already open, it is replaced.
30
36
  */
31
- selectedSubPath?: string;
37
+ selectedTab?: string;
32
38
 
33
39
  /**
34
40
  * Use this prop to override the width of the form view.
@@ -66,6 +72,15 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
66
72
  */
67
73
  closeOnSave?: boolean;
68
74
 
75
+ /**
76
+ * Override some form properties
77
+ */
78
+ formProps?: Partial<EntityFormProps<M>>;
79
+
80
+ /**
81
+ * Allow the user to open the entity fullscreen
82
+ */
83
+ allowFullScreen?: boolean;
69
84
  }
70
85
 
71
86
  /**