@firecms/core 3.0.0-canary.27 → 3.0.0-canary.271

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 (408) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +34 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +31 -12
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +14 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  24. package/dist/components/EntityJsonPreview.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +10 -7
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  28. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  29. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  30. package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
  31. package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
  32. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  33. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  34. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  35. package/dist/components/ReferenceWidget.d.ts +3 -1
  36. package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
  37. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  38. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  39. package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
  40. package/dist/components/VirtualTable/types.d.ts +3 -3
  41. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  42. package/dist/components/common/index.d.ts +2 -1
  43. package/dist/components/common/table_height.d.ts +5 -0
  44. package/dist/components/common/types.d.ts +4 -6
  45. package/dist/components/common/useColumnsIds.d.ts +3 -1
  46. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  47. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  48. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  49. package/dist/components/index.d.ts +5 -2
  50. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  51. package/dist/core/DefaultAppBar.d.ts +29 -0
  52. package/dist/core/DefaultDrawer.d.ts +19 -0
  53. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  54. package/dist/core/EntityEditView.d.ts +43 -11
  55. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  56. package/dist/core/FireCMS.d.ts +3 -3
  57. package/dist/core/FireCMSRouter.d.ts +4 -0
  58. package/dist/core/NavigationRoutes.d.ts +2 -3
  59. package/dist/core/SideDialogs.d.ts +4 -2
  60. package/dist/core/field_configs.d.ts +1 -1
  61. package/dist/core/index.d.ts +4 -4
  62. package/dist/form/EntityForm.d.ts +37 -64
  63. package/dist/form/EntityFormActions.d.ts +21 -0
  64. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  65. package/dist/form/components/ErrorFocus.d.ts +1 -1
  66. package/dist/form/components/FieldHelperText.d.ts +3 -3
  67. package/dist/form/components/FormEntry.d.ts +6 -0
  68. package/dist/form/components/FormLayout.d.ts +5 -0
  69. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  70. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  71. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  72. package/dist/form/components/index.d.ts +3 -1
  73. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  75. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  79. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  80. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  81. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  82. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  83. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  84. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  85. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
  86. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  87. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  88. package/dist/form/index.d.ts +17 -18
  89. package/dist/form/useClearRestoreValue.d.ts +2 -2
  90. package/dist/hooks/data/delete.d.ts +4 -4
  91. package/dist/hooks/data/save.d.ts +4 -5
  92. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  93. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  94. package/dist/hooks/index.d.ts +2 -0
  95. package/dist/hooks/useAuthController.d.ts +1 -1
  96. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  97. package/dist/hooks/useBuildNavigationController.d.ts +57 -13
  98. package/dist/hooks/useCollapsedGroups.d.ts +9 -0
  99. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  100. package/dist/hooks/useModeController.d.ts +1 -2
  101. package/dist/hooks/useProjectLog.d.ts +8 -2
  102. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  103. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.es.js +23154 -13912
  106. package/dist/index.es.js.map +1 -1
  107. package/dist/index.umd.js +25917 -588
  108. package/dist/index.umd.js.map +1 -1
  109. package/dist/internal/useBuildDataSource.d.ts +3 -17
  110. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  111. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  112. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  113. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  114. package/dist/preview/components/ReferencePreview.d.ts +4 -3
  115. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  116. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  117. package/dist/preview/util.d.ts +3 -3
  118. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  119. package/dist/routes/FireCMSRoute.d.ts +1 -0
  120. package/dist/routes/HomePageRoute.d.ts +3 -0
  121. package/dist/types/analytics.d.ts +1 -1
  122. package/dist/types/auth.d.ts +8 -10
  123. package/dist/types/collections.d.ts +112 -25
  124. package/dist/types/customization_controller.d.ts +8 -0
  125. package/dist/types/datasource.d.ts +52 -36
  126. package/dist/types/dialogs_controller.d.ts +7 -3
  127. package/dist/types/entities.d.ts +7 -2
  128. package/dist/types/entity_actions.d.ts +72 -8
  129. package/dist/types/entity_callbacks.d.ts +16 -16
  130. package/dist/types/entity_overrides.d.ts +2 -2
  131. package/dist/types/export_import.d.ts +4 -4
  132. package/dist/types/fields.d.ts +74 -42
  133. package/dist/types/firecms.d.ts +16 -3
  134. package/dist/types/firecms_context.d.ts +1 -1
  135. package/dist/types/index.d.ts +0 -1
  136. package/dist/types/navigation.d.ts +62 -19
  137. package/dist/types/permissions.d.ts +4 -4
  138. package/dist/types/plugins.d.ts +56 -13
  139. package/dist/types/properties.d.ts +81 -25
  140. package/dist/types/property_config.d.ts +1 -3
  141. package/dist/types/roles.d.ts +3 -0
  142. package/dist/types/side_dialogs_controller.d.ts +10 -0
  143. package/dist/types/side_entity_controller.d.ts +14 -1
  144. package/dist/types/storage.d.ts +75 -0
  145. package/dist/types/user.d.ts +1 -0
  146. package/dist/util/builders.d.ts +3 -3
  147. package/dist/util/callbacks.d.ts +2 -0
  148. package/dist/util/createFormexStub.d.ts +2 -0
  149. package/dist/util/entities.d.ts +3 -3
  150. package/dist/util/entity_actions.d.ts +2 -0
  151. package/dist/util/entity_cache.d.ts +23 -0
  152. package/dist/util/icon_list.d.ts +5 -1
  153. package/dist/util/icon_synonyms.d.ts +1 -98
  154. package/dist/util/icons.d.ts +7 -4
  155. package/dist/util/index.d.ts +3 -0
  156. package/dist/util/navigation_from_path.d.ts +10 -1
  157. package/dist/util/navigation_utils.d.ts +15 -3
  158. package/dist/util/objects.d.ts +2 -1
  159. package/dist/util/permissions.d.ts +4 -4
  160. package/dist/util/plurals.d.ts +0 -2
  161. package/dist/util/property_utils.d.ts +4 -4
  162. package/dist/util/references.d.ts +2 -2
  163. package/dist/util/resolutions.d.ts +42 -17
  164. package/dist/util/storage.d.ts +23 -2
  165. package/dist/util/useStorageUploadController.d.ts +3 -3
  166. package/package.json +69 -52
  167. package/src/app/AppBar.tsx +18 -0
  168. package/src/app/Drawer.tsx +24 -0
  169. package/src/app/Scaffold.tsx +253 -0
  170. package/src/app/index.ts +4 -0
  171. package/src/app/useApp.tsx +32 -0
  172. package/src/components/ArrayContainer.tsx +447 -229
  173. package/src/components/CircularProgressCenter.tsx +2 -2
  174. package/src/components/ClearFilterSortButton.tsx +41 -0
  175. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  176. package/src/components/DeleteEntityDialog.tsx +13 -20
  177. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +65 -40
  178. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  179. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  180. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +72 -42
  181. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  182. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  183. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  184. package/src/components/EntityCollectionTable/index.tsx +1 -1
  185. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +34 -39
  186. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
  187. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  188. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
  189. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  190. package/src/components/EntityCollectionView/EntityCollectionView.tsx +235 -118
  191. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  192. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  193. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  194. package/src/components/EntityCollectionView/utils.ts +19 -0
  195. package/src/components/EntityJsonPreview.tsx +66 -0
  196. package/src/components/EntityPreview.tsx +83 -62
  197. package/src/components/EntityView.tsx +13 -10
  198. package/src/components/ErrorView.tsx +4 -4
  199. package/src/components/FireCMSLogo.tsx +7 -51
  200. package/src/components/HomePage/DefaultHomePage.tsx +512 -157
  201. package/src/components/HomePage/FavouritesView.tsx +9 -14
  202. package/src/components/HomePage/HomePageDnD.tsx +599 -0
  203. package/src/components/HomePage/NavigationCard.tsx +48 -39
  204. package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
  205. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  206. package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
  207. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  208. package/src/components/NotFoundPage.tsx +2 -2
  209. package/src/components/PropertyConfigBadge.tsx +9 -3
  210. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  211. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
  212. package/src/components/ReferenceWidget.tsx +21 -11
  213. package/src/components/SearchIconsView.tsx +10 -7
  214. package/src/components/SelectableTable/SelectableTable.tsx +157 -145
  215. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  216. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  217. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  218. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +93 -24
  219. package/src/components/UnsavedChangesDialog.tsx +46 -0
  220. package/src/components/VirtualTable/VirtualTable.tsx +105 -51
  221. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  222. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  223. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  224. package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
  225. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  226. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  227. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  228. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  229. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  230. package/src/components/VirtualTable/types.tsx +2 -3
  231. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +64 -44
  232. package/src/components/common/index.ts +2 -1
  233. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  234. package/src/components/common/types.tsx +4 -6
  235. package/src/components/common/useColumnsIds.tsx +24 -3
  236. package/src/components/common/useDataSourceTableController.tsx +420 -0
  237. package/src/components/common/useDebouncedCallback.tsx +20 -0
  238. package/src/components/common/useScrollRestoration.tsx +68 -0
  239. package/src/components/common/useTableSearchHelper.ts +53 -12
  240. package/src/components/index.tsx +6 -2
  241. package/src/contexts/BreacrumbsContext.tsx +38 -0
  242. package/src/contexts/DialogsProvider.tsx +5 -4
  243. package/src/contexts/ModeController.tsx +1 -3
  244. package/src/contexts/SnackbarProvider.tsx +2 -0
  245. package/src/core/DefaultAppBar.tsx +219 -0
  246. package/src/core/DefaultDrawer.tsx +185 -0
  247. package/src/core/DrawerNavigationItem.tsx +66 -0
  248. package/src/core/EntityEditView.tsx +435 -470
  249. package/src/core/EntityEditViewFormActions.tsx +329 -0
  250. package/src/core/EntitySidePanel.tsx +88 -21
  251. package/src/core/FireCMS.tsx +74 -58
  252. package/src/core/FireCMSRouter.tsx +17 -0
  253. package/src/core/NavigationRoutes.tsx +28 -38
  254. package/src/core/SideDialogs.tsx +22 -12
  255. package/src/core/field_configs.tsx +26 -13
  256. package/src/core/index.tsx +6 -5
  257. package/src/form/EntityForm.tsx +620 -534
  258. package/src/form/EntityFormActions.tsx +211 -0
  259. package/src/form/PropertyFieldBinding.tsx +88 -45
  260. package/src/form/components/CustomIdField.tsx +9 -3
  261. package/src/form/components/FieldHelperText.tsx +4 -4
  262. package/src/form/components/FormEntry.tsx +22 -0
  263. package/src/form/components/FormLayout.tsx +16 -0
  264. package/src/form/components/LabelWithIcon.tsx +30 -19
  265. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  266. package/src/form/components/StorageItemPreview.tsx +23 -13
  267. package/src/form/components/StorageUploadProgress.tsx +5 -6
  268. package/src/form/components/index.tsx +3 -1
  269. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  270. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
  271. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  272. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  273. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  274. package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
  275. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  276. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  277. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  278. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  279. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  280. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  281. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
  282. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
  283. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  284. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  285. package/src/form/index.tsx +17 -37
  286. package/src/form/useClearRestoreValue.tsx +2 -2
  287. package/src/form/validation.ts +13 -23
  288. package/src/hooks/data/delete.ts +6 -5
  289. package/src/hooks/data/save.ts +26 -33
  290. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  291. package/src/hooks/data/useDataSource.tsx +11 -3
  292. package/src/hooks/data/useEntityFetch.tsx +10 -6
  293. package/src/hooks/index.tsx +2 -0
  294. package/src/hooks/useAuthController.tsx +1 -1
  295. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  296. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  297. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  298. package/src/hooks/useBuildModeController.tsx +22 -29
  299. package/src/hooks/useBuildNavigationController.tsx +440 -119
  300. package/src/hooks/useCollapsedGroups.ts +64 -0
  301. package/src/hooks/useFireCMSContext.tsx +3 -33
  302. package/src/hooks/useLargeLayout.tsx +0 -35
  303. package/src/hooks/useModeController.tsx +1 -2
  304. package/src/hooks/useProjectLog.tsx +32 -10
  305. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  306. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  307. package/src/index.ts +1 -0
  308. package/src/internal/useBuildDataSource.ts +79 -85
  309. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  310. package/src/internal/useBuildSideEntityController.tsx +204 -77
  311. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  312. package/src/preview/PropertyPreview.tsx +34 -25
  313. package/src/preview/PropertyPreviewProps.tsx +7 -1
  314. package/src/preview/components/BooleanPreview.tsx +2 -2
  315. package/src/preview/components/EmptyValue.tsx +1 -1
  316. package/src/preview/components/EnumValuesChip.tsx +2 -2
  317. package/src/preview/components/ImagePreview.tsx +26 -37
  318. package/src/preview/components/ReferencePreview.tsx +26 -36
  319. package/src/preview/components/StorageThumbnail.tsx +5 -1
  320. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  321. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
  322. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  323. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  324. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  325. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  326. package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
  327. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  328. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  329. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  330. package/src/preview/util.ts +10 -10
  331. package/src/routes/CustomCMSRoute.tsx +21 -0
  332. package/src/routes/FireCMSRoute.tsx +246 -0
  333. package/src/routes/HomePageRoute.tsx +17 -0
  334. package/src/types/analytics.ts +3 -0
  335. package/src/types/auth.tsx +9 -13
  336. package/src/types/collections.ts +134 -30
  337. package/src/types/customization_controller.tsx +9 -1
  338. package/src/types/datasource.ts +61 -43
  339. package/src/types/dialogs_controller.tsx +7 -3
  340. package/src/types/entities.ts +12 -2
  341. package/src/types/entity_actions.tsx +86 -10
  342. package/src/types/entity_callbacks.ts +18 -18
  343. package/src/types/entity_overrides.tsx +2 -2
  344. package/src/types/export_import.ts +4 -4
  345. package/src/types/fields.tsx +85 -46
  346. package/src/types/firecms.tsx +18 -4
  347. package/src/types/firecms_context.tsx +1 -1
  348. package/src/types/index.ts +0 -1
  349. package/src/types/navigation.ts +77 -24
  350. package/src/types/permissions.ts +5 -5
  351. package/src/types/plugins.tsx +66 -15
  352. package/src/types/properties.ts +96 -27
  353. package/src/types/property_config.tsx +1 -2
  354. package/src/types/roles.ts +3 -0
  355. package/src/types/side_dialogs_controller.tsx +15 -0
  356. package/src/types/side_entity_controller.tsx +16 -1
  357. package/src/types/storage.ts +83 -1
  358. package/src/types/user.ts +2 -0
  359. package/src/util/builders.ts +10 -8
  360. package/src/util/callbacks.ts +119 -0
  361. package/src/util/createFormexStub.tsx +62 -0
  362. package/src/util/entities.ts +10 -7
  363. package/src/util/entity_actions.ts +28 -0
  364. package/src/util/entity_cache.ts +204 -0
  365. package/src/util/enums.ts +1 -1
  366. package/src/util/icon_list.ts +16 -10
  367. package/src/util/icon_synonyms.ts +3 -100
  368. package/src/util/icons.tsx +36 -11
  369. package/src/util/index.ts +3 -0
  370. package/src/util/join_collections.ts +9 -2
  371. package/src/util/make_properties_editable.ts +13 -5
  372. package/src/util/navigation_from_path.ts +33 -12
  373. package/src/util/navigation_utils.ts +141 -25
  374. package/src/util/objects.ts +90 -33
  375. package/src/util/parent_references_from_path.ts +3 -3
  376. package/src/util/permissions.ts +9 -8
  377. package/src/util/plurals.ts +0 -2
  378. package/src/util/property_utils.tsx +17 -6
  379. package/src/util/references.ts +19 -8
  380. package/src/util/resolutions.ts +122 -48
  381. package/src/util/storage.ts +79 -21
  382. package/src/util/strings.ts +2 -2
  383. package/src/util/useStorageUploadController.tsx +91 -28
  384. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  385. package/dist/components/FireCMSAppBar.d.ts +0 -26
  386. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  387. package/dist/components/VirtualTable/common.d.ts +0 -2
  388. package/dist/core/Drawer.d.ts +0 -23
  389. package/dist/core/Scaffold.d.ts +0 -55
  390. package/dist/core/SideEntityView.d.ts +0 -7
  391. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  392. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  393. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  394. package/dist/internal/useLocaleConfig.d.ts +0 -1
  395. package/dist/types/appcheck.d.ts +0 -26
  396. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  397. package/src/components/FireCMSAppBar.tsx +0 -165
  398. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  399. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  400. package/src/core/Drawer.tsx +0 -191
  401. package/src/core/Scaffold.tsx +0 -281
  402. package/src/core/SideEntityView.tsx +0 -38
  403. package/src/form/components/FormikArrayContainer.tsx +0 -44
  404. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  405. package/src/internal/useBuildCustomizationController.tsx +0 -5
  406. package/src/internal/useLocaleConfig.tsx +0 -18
  407. package/src/types/appcheck.ts +0 -29
  408. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -1,20 +1,20 @@
1
1
  import React, { PropsWithChildren } from "react";
2
2
 
3
3
  import { FireCMSContext } from "./firecms_context";
4
- import { CollectionActionsProps, EntityCollection } from "./collections";
4
+ import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
5
5
  import { User } from "./user";
6
6
  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 { CMSView } from "./navigation";
10
+ import { NavigationGroupMapping } from "./navigation";
11
11
 
12
12
  /**
13
13
  * Interface used to define plugins for FireCMS.
14
14
  * NOTE: This is a work in progress and the API is not stable yet.
15
15
  * @group Core
16
16
  */
17
- export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
17
+ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
18
18
 
19
19
  /**
20
20
  * Key of the plugin. This is used to identify the plugin in the CMS.
@@ -85,6 +85,20 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
85
85
  children: React.ReactNode;
86
86
  }
87
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
+
88
102
  }
89
103
 
90
104
  collectionView?: {
@@ -94,9 +108,18 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
94
108
  * toolbar.
95
109
  */
96
110
  CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
97
-
98
111
  collectionActionsProps?: COL_ACTIONS_PROPS;
99
112
 
113
+ CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
114
+ collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
115
+
116
+ blockSearch?: (props: {
117
+ context: FireCMSContext,
118
+ path: string,
119
+ collection: EC,
120
+ parentCollectionIds?: string[]
121
+ }) => boolean;
122
+
100
123
  showTextSearchBar?: (props: {
101
124
  context: FireCMSContext,
102
125
  path: string,
@@ -122,6 +145,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
122
145
  parentCollectionIds: string[],
123
146
  onHover: boolean,
124
147
  collection: EC;
148
+ tableController: EntityTableController;
125
149
  }>;
126
150
 
127
151
  /**
@@ -132,6 +156,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
132
156
  fullPath: string,
133
157
  parentCollectionIds: string[],
134
158
  collection: EC;
159
+ tableController: EntityTableController;
135
160
  }>;
136
161
  }
137
162
 
@@ -141,13 +166,37 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
141
166
  props?: FORM_PROPS;
142
167
  }
143
168
 
169
+ /**
170
+ * Add custom actions to the default ones ("Save", "Discard"...)
171
+ */
144
172
  Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
145
173
 
174
+ /**
175
+ * Add custom actions to the top of the form
176
+ */
177
+ ActionsTop?: React.ComponentType<PluginFormActionProps<any, EC>>;
178
+
146
179
  fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
147
180
 
148
181
  fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
149
182
  }
150
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
+
151
200
  }
152
201
 
153
202
  /**
@@ -156,7 +205,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
156
205
  *
157
206
  * @group Models
158
207
  */
159
- 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>> {
160
209
  /**
161
210
  * Collection path of this entity. This is the full path, like
162
211
  * `users/1234/addresses`
@@ -171,20 +220,22 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
171
220
  /**
172
221
  * Context of the app status
173
222
  */
174
- context: FireCMSContext<UserType>;
223
+ context: FireCMSContext<USER>;
175
224
 
176
225
  extraProps?: EP;
177
226
 
178
227
  }
179
228
 
180
- export interface PluginFormActionProps<UserType extends User = User, EC extends EntityCollection = EntityCollection> {
229
+ export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
181
230
  entityId?: string;
182
231
  path: string;
232
+ parentCollectionIds: string[];
183
233
  status: EntityStatus;
184
234
  collection: EC;
235
+ disabled: boolean;
185
236
  formContext?: FormContext<any>;
186
- context: FireCMSContext<UserType>;
187
- currentEntityId?: string;
237
+ context: FireCMSContext<USER>;
238
+ openEntityMode: "side_panel" | "full_screen";
188
239
  }
189
240
 
190
241
  export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
@@ -193,15 +244,15 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
193
244
  property: Property<T> | ResolvedProperty<T>;
194
245
  Field: React.ComponentType<FieldProps<T, any, M>>;
195
246
  plugin: FireCMSPlugin;
196
- path: string;
197
- collection: EC;
247
+ path?: string;
248
+ collection?: EC;
198
249
  };
199
250
 
200
- export interface PluginGenericProps<UserType extends User = User> {
201
- context: FireCMSContext<UserType>;
251
+ export interface PluginGenericProps<USER extends User = User> {
252
+ context: FireCMSContext<USER>;
202
253
  }
203
254
 
204
- export interface PluginHomePageAdditionalCardsProps<UserType extends User = User> {
255
+ export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
205
256
  group?: string;
206
- context: FireCMSContext<UserType>;
257
+ context: FireCMSContext<USER>;
207
258
  }
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "./fields";
3
3
  import { PropertyPreviewProps } from "../preview";
4
- import { EntityReference, EntityValues, GeoPoint } from "./entities";
4
+ 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
@@ -15,9 +16,10 @@ export type DataType<T extends CMSType = CMSType> =
15
16
  T extends boolean ? "boolean" :
16
17
  T extends Date ? "date" :
17
18
  T extends GeoPoint ? "geopoint" :
18
- T extends EntityReference ? "reference" :
19
- T extends Array<CMSType> ? "array" :
20
- T extends Record<string, any> ? "map" : never;
19
+ T extends Vector ? "vector" :
20
+ T extends EntityReference ? "reference" :
21
+ T extends Array<any> ? "array" :
22
+ T extends Record<string, any> ? "map" : never;
21
23
 
22
24
  /**
23
25
  * @group Entity properties
@@ -48,7 +50,7 @@ export type AnyProperty =
48
50
  /**
49
51
  * @group Entity properties
50
52
  */
51
- export type Property<T extends CMSType = CMSType> =
53
+ export type Property<T extends CMSType = any> =
52
54
  T extends string ? StringProperty :
53
55
  T extends number ? NumberProperty :
54
56
  T extends boolean ? BooleanProperty :
@@ -148,13 +150,19 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
148
150
  /**
149
151
  * This value will be set by default for new entities.
150
152
  */
151
- defaultValue?: T;
153
+ defaultValue?: T | null;
152
154
 
153
155
  /**
154
156
  * Should this property be editable. If set to true, the user will be able to modify the property and
155
157
  * save the new config. The saved config will then become the source of truth.
156
158
  */
157
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;
158
166
  }
159
167
 
160
168
  /**
@@ -263,6 +271,11 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> =
263
271
  * Entity ID
264
272
  */
265
273
  entityId?: string;
274
+
275
+ /**
276
+ * Controller to manage authentication
277
+ */
278
+ authController: AuthController;
266
279
  };
267
280
 
268
281
  /**
@@ -276,21 +289,23 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
276
289
  values,
277
290
  previousValues,
278
291
  propertyValue,
292
+ index,
279
293
  path,
280
- entityId
294
+ entityId,
295
+ authController
281
296
  }: PropertyBuilderProps<M>) => Property<T> | null;
282
297
 
283
298
  /**
284
299
  * @group Entity properties
285
300
  */
286
- 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> =
287
302
  Property<T>
288
303
  | PropertyBuilder<T, M>;
289
304
 
290
305
  /**
291
306
  * @group Entity properties
292
307
  */
293
- export type PropertiesOrBuilders<M extends Record<string, any> = Record<string, any>> =
308
+ export type PropertiesOrBuilders<M extends Record<string, any> = any> =
294
309
  {
295
310
  [k in keyof M]: PropertyOrBuilder<M[k], M>;
296
311
  };
@@ -369,7 +384,7 @@ export interface StringProperty extends BaseProperty<string> {
369
384
 
370
385
  /**
371
386
  * You can specify a `Storage` configuration. It is used to
372
- * 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.
373
388
  */
374
389
  storage?: StorageConfig;
375
390
 
@@ -398,12 +413,20 @@ export interface StringProperty extends BaseProperty<string> {
398
413
  * Add an icon to clear the value and set it to `null`. Defaults to `false`
399
414
  */
400
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;
401
424
  }
402
425
 
403
426
  /**
404
427
  * @group Entity properties
405
428
  */
406
- 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> {
407
430
 
408
431
  dataType: "array";
409
432
 
@@ -467,6 +490,24 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
467
490
  */
468
491
  expanded?: boolean;
469
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
+
470
511
  }
471
512
 
472
513
  /**
@@ -515,6 +556,12 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
515
556
  */
516
557
  spreadChildren?: boolean;
517
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
+
518
565
  /**
519
566
  * Should the field be initially expanded. Defaults to `true`
520
567
  */
@@ -591,7 +638,7 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
591
638
  * You can leave this prop undefined if the path is not yet know, e.g.
592
639
  * you are using a property builder and the path depends on a different
593
640
  * property.
594
- * Note that you can also use a collection alias.
641
+ * Note that you can also use a collection id.
595
642
  */
596
643
  path?: string;
597
644
 
@@ -608,6 +655,16 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
608
655
  */
609
656
  previewProperties?: string[];
610
657
 
658
+ /**
659
+ * Should the reference include the ID of the entity. Defaults to `true`
660
+ */
661
+ includeId?: boolean;
662
+
663
+ /**
664
+ * Should the reference include a link to the entity (open the entity details). Defaults to `true`
665
+ */
666
+ includeEntityLink?: boolean;
667
+
611
668
  }
612
669
 
613
670
  /**
@@ -722,13 +779,13 @@ export type StorageConfig = {
722
779
  * You can use this prop to customize the uploaded filename.
723
780
  * You can use a function as a callback or a string where you
724
781
  * specify some placeholders that get replaced with the corresponding values.
725
- * - {file} - Full file name
726
- * - {file.name} - Name of the file without extension
727
- * - {file.ext} - Extension of the file
728
- * - {rand} - Random value used to avoid name collisions
729
- * - {entityId} - ID of the entity
730
- * - {propertyKey} - ID of this property
731
- * - {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
732
789
  *
733
790
  * @param context
734
791
  */
@@ -739,13 +796,13 @@ export type StorageConfig = {
739
796
  *
740
797
  * You can use a function as a callback or a string where you
741
798
  * specify some placeholders that get replaced with the corresponding values.
742
- * - {file} - Full file name
743
- * - {file.name} - Name of the file without extension
744
- * - {file.ext} - Extension of the file
745
- * - {rand} - Random value used to avoid name collisions
746
- * - {entityId} - ID of the entity
747
- * - {propertyKey} - ID of this property
748
- * - {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
749
806
  */
750
807
  storagePath: string | ((context: UploadedFileContext) => string);
751
808
 
@@ -766,12 +823,24 @@ export type StorageConfig = {
766
823
  */
767
824
  maxSize?: number,
768
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
+
769
833
  /**
770
834
  * Postprocess the saved value (storage path or URL)
771
835
  * after it has been resolved.
772
836
  */
773
837
  postProcess?: (pathOrUrl: string) => Promise<string>;
774
838
 
839
+ /**
840
+ * You can use this prop in order to provide a custom preview URL.
841
+ * Useful when the file's path is different from the original field value
842
+ */
843
+ previewUrl?: (fileName: string) => string;
775
844
  }
776
845
 
777
846
  /**
@@ -801,7 +870,7 @@ export interface UploadedFileContext {
801
870
  /**
802
871
  * Entity path. E.g. `products/PID/locales`
803
872
  */
804
- path: string;
873
+ path?: string;
805
874
 
806
875
  /**
807
876
  * Values of the current entity
@@ -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
  /**
@@ -101,5 +101,87 @@ export interface StorageSource {
101
101
  * @param props
102
102
  * @param bucket
103
103
  */
104
- getFile: (path:string, bucket?: string) => Promise<File | null>;
104
+ getFile: (path: string, bucket?: string) => Promise<File | null>;
105
+
106
+ /**
107
+ * Delete a file.
108
+ * @param path
109
+ * @param bucket
110
+ */
111
+ deleteFile: (path: string, bucket?: string) => Promise<void>;
112
+
113
+ /**
114
+ * List the contents of a path.
115
+ * @param path
116
+ * @param options
117
+ */
118
+ list: (path: string, options?: {
119
+ bucket?: string,
120
+ maxResults?: number,
121
+ pageToken?: string
122
+ }) => Promise<StorageListResult>;
123
+
124
+ }
125
+
126
+ /**
127
+ * Result returned by list().
128
+ * @public
129
+ */
130
+ export declare interface StorageListResult {
131
+ /**
132
+ * References to prefixes (sub-folders). You can call list() on them to
133
+ * get its contents.
134
+ *
135
+ * Folders are implicit based on '/' in the object paths.
136
+ * For example, if a bucket has two objects '/a/b/1' and '/a/b/2', list('/a')
137
+ * will return '/a/b' as a prefix.
138
+ */
139
+ prefixes: StorageReference[];
140
+ /**
141
+ * Objects in this directory.
142
+ * You can call getMetadata() and getDownloadUrl() on them.
143
+ */
144
+ items: StorageReference[];
145
+ /**
146
+ * If set, there might be more results for this list. Use this token to resume the list.
147
+ */
148
+ nextPageToken?: string;
149
+ }
150
+
151
+ /**
152
+ * Represents a reference to a Google Cloud Storage object. Developers can
153
+ * upload, download, and delete objects, as well as get/set object metadata.
154
+ * @public
155
+ */
156
+ export declare interface StorageReference {
157
+ /**
158
+ * Returns a gs:// URL for this object in the form
159
+ * `gs://<bucket>/<path>/<to>/<object>`
160
+ * @returns The gs:// URL.
161
+ */
162
+ toString(): string;
163
+
164
+ /**
165
+ * A reference to the root of this object's bucket.
166
+ */
167
+ root: StorageReference;
168
+ /**
169
+ * The name of the bucket containing this reference's object.
170
+ */
171
+ bucket: string;
172
+ /**
173
+ * The full path of this object.
174
+ */
175
+ fullPath: string;
176
+ /**
177
+ * The short name of this object, which is the last component of the full path.
178
+ * For example, if fullPath is 'full/path/image.png', name is 'image.png'.
179
+ */
180
+ name: string;
181
+
182
+ /**
183
+ * A reference pointing to the parent location of this reference, or null if
184
+ * this reference is the root.
185
+ */
186
+ parent: StorageReference | null;
105
187
  }
package/src/types/user.ts CHANGED
@@ -41,4 +41,6 @@ export type User = {
41
41
  */
42
42
  roles?: Role[];
43
43
 
44
+ getIdToken?: (forceRefresh?: boolean) => Promise<string>;
45
+
44
46
  };
@@ -26,10 +26,12 @@ import {
26
26
  * @param collection
27
27
  * @group Builder
28
28
  */
29
- export function buildCollection<M extends Record<string, any> = any,
30
- UserType extends User = User>(
31
- collection: EntityCollection<M, UserType>
32
- ): EntityCollection<M, UserType> {
29
+ export function buildCollection<
30
+ M extends Record<string, any> = any,
31
+ USER extends User = User>
32
+ (
33
+ collection: EntityCollection<M, USER>
34
+ ): EntityCollection<M, USER> {
33
35
  return collection;
34
36
  }
35
37
 
@@ -39,7 +41,7 @@ export function buildCollection<M extends Record<string, any> = any,
39
41
  * @param property
40
42
  * @group Builder
41
43
  */
42
- export function buildProperty<T extends CMSType = CMSType, P extends PropertyOrBuilder<T> = PropertyOrBuilder<T>, M extends Record<string, any> = Record<string, any>>(
44
+ export function buildProperty<T extends CMSType = CMSType, P extends PropertyOrBuilder<T> = PropertyOrBuilder<T>, M extends Record<string, any> = any>(
43
45
  property: P
44
46
  ):
45
47
  P extends StringProperty ? StringProperty :
@@ -120,9 +122,9 @@ export function buildEntityCallbacks<M extends Record<string, any> = any>(
120
122
  * @param additionalFieldDelegate
121
123
  * @group Builder
122
124
  */
123
- export function buildAdditionalFieldDelegate<M extends Record<string, any>, UserType extends User = User>(
124
- additionalFieldDelegate: AdditionalFieldDelegate<M, UserType>
125
- ): AdditionalFieldDelegate<M, UserType> {
125
+ export function buildAdditionalFieldDelegate<M extends Record<string, any>, USER extends User = User>(
126
+ additionalFieldDelegate: AdditionalFieldDelegate<M, USER>
127
+ ): AdditionalFieldDelegate<M, USER> {
126
128
  return additionalFieldDelegate;
127
129
  }
128
130