@firecms/core 3.0.0-3.0.0-beta.4.pre.1.0

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 (503) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/components/ArrayContainer.d.ts +40 -0
  4. package/dist/components/CircularProgressCenter.d.ts +11 -0
  5. package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
  6. package/dist/components/DeleteEntityDialog.d.ts +12 -0
  7. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +31 -0
  8. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +27 -0
  9. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +99 -0
  10. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
  11. package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
  12. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +19 -0
  13. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  14. package/dist/components/EntityCollectionTable/index.d.ts +6 -0
  15. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  16. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  17. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  18. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  19. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  20. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  21. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  22. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  23. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  24. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +36 -0
  25. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  26. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  27. package/dist/components/EntityPreview.d.ts +29 -0
  28. package/dist/components/EntityView.d.ts +11 -0
  29. package/dist/components/ErrorBoundary.d.ts +11 -0
  30. package/dist/components/ErrorTooltip.d.ts +2 -0
  31. package/dist/components/ErrorView.d.ts +19 -0
  32. package/dist/components/FieldCaption.d.ts +4 -0
  33. package/dist/components/FireCMSAppBar.d.ts +26 -0
  34. package/dist/components/FireCMSLogo.d.ts +7 -0
  35. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  36. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  37. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  38. package/dist/components/HomePage/NavigationCardBinding.d.ts +17 -0
  39. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  40. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  41. package/dist/components/HomePage/index.d.ts +5 -0
  42. package/dist/components/NotFoundPage.d.ts +1 -0
  43. package/dist/components/PropertyConfigBadge.d.ts +4 -0
  44. package/dist/components/PropertyIdCopyTooltipContent.d.ts +3 -0
  45. package/dist/components/ReferenceTable/ReferenceSelectionTable.d.ts +58 -0
  46. package/dist/components/ReferenceWidget.d.ts +28 -0
  47. package/dist/components/SearchIconsView.d.ts +5 -0
  48. package/dist/components/SelectableTable/SelectableTable.d.ts +75 -0
  49. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  50. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -0
  51. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +11 -0
  52. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +14 -0
  53. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +13 -0
  54. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  55. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  56. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  57. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  58. package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
  59. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  60. package/dist/components/VirtualTable/common.d.ts +2 -0
  61. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  62. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  63. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  64. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  65. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  66. package/dist/components/VirtualTable/index.d.ts +2 -0
  67. package/dist/components/VirtualTable/types.d.ts +34 -0
  68. package/dist/components/common/index.d.ts +5 -0
  69. package/dist/components/common/types.d.ts +60 -0
  70. package/dist/components/common/useColumnsIds.d.ts +4 -0
  71. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +32 -0
  72. package/dist/components/common/useDebouncedData.d.ts +9 -0
  73. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  74. package/dist/components/index.d.ts +25 -0
  75. package/dist/contexts/AnalyticsContext.d.ts +3 -0
  76. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  77. package/dist/contexts/CustomizationControllerContext.d.ts +3 -0
  78. package/dist/contexts/DataSourceContext.d.ts +3 -0
  79. package/dist/contexts/DialogsProvider.d.ts +4 -0
  80. package/dist/contexts/ModeController.d.ts +4 -0
  81. package/dist/contexts/NavigationContext.d.ts +3 -0
  82. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  83. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  84. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  85. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  86. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  87. package/dist/contexts/index.d.ts +3 -0
  88. package/dist/core/Drawer.d.ts +23 -0
  89. package/dist/core/EntityEditView.d.ts +22 -0
  90. package/dist/core/EntitySidePanel.d.ts +10 -0
  91. package/dist/core/FireCMS.d.ts +14 -0
  92. package/dist/core/NavigationRoutes.d.ts +21 -0
  93. package/dist/core/Scaffold.d.ts +55 -0
  94. package/dist/core/SideDialogs.d.ts +23 -0
  95. package/dist/core/SideEntityView.d.ts +7 -0
  96. package/dist/core/field_configs.d.ts +7 -0
  97. package/dist/core/index.d.ts +8 -0
  98. package/dist/form/EntityForm.d.ts +77 -0
  99. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  100. package/dist/form/components/CustomIdField.d.ts +10 -0
  101. package/dist/form/components/ErrorFocus.d.ts +4 -0
  102. package/dist/form/components/FieldHelperText.d.ts +12 -0
  103. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  104. package/dist/form/components/LabelWithIcon.d.ts +14 -0
  105. package/dist/form/components/StorageItemPreview.d.ts +14 -0
  106. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  107. package/dist/form/components/index.d.ts +3 -0
  108. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  109. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  110. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  111. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  112. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  113. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  114. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  115. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  116. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  117. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  118. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  119. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  120. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +29 -0
  121. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  122. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  123. package/dist/form/index.d.ts +21 -0
  124. package/dist/form/useClearRestoreValue.d.ts +13 -0
  125. package/dist/form/validation.d.ts +25 -0
  126. package/dist/hooks/data/delete.d.ts +37 -0
  127. package/dist/hooks/data/save.d.ts +42 -0
  128. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  129. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  130. package/dist/hooks/data/useDataSource.d.ts +6 -0
  131. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  132. package/dist/hooks/index.d.ts +22 -0
  133. package/dist/hooks/useAnalyticsController.d.ts +5 -0
  134. package/dist/hooks/useAuthController.d.ts +11 -0
  135. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  136. package/dist/hooks/useBuildLocalConfigurationPersistence.d.ts +2 -0
  137. package/dist/hooks/useBuildModeController.d.ts +6 -0
  138. package/dist/hooks/useBuildNavigationController.d.ts +24 -0
  139. package/dist/hooks/useClipboard.d.ts +57 -0
  140. package/dist/hooks/useCustomizationController.d.ts +11 -0
  141. package/dist/hooks/useDialogsController.d.ts +11 -0
  142. package/dist/hooks/useFireCMSContext.d.ts +11 -0
  143. package/dist/hooks/useLargeLayout.d.ts +1 -0
  144. package/dist/hooks/useModeController.d.ts +20 -0
  145. package/dist/hooks/useNavigationController.d.ts +9 -0
  146. package/dist/hooks/useProjectLog.d.ts +8 -0
  147. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  148. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  149. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  150. package/dist/hooks/useSideEntityController.d.ts +12 -0
  151. package/dist/hooks/useSnackbarController.d.ts +42 -0
  152. package/dist/hooks/useStorageSource.d.ts +6 -0
  153. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  154. package/dist/index.d.ts +8 -0
  155. package/dist/index.es.js +16602 -0
  156. package/dist/index.es.js.map +1 -0
  157. package/dist/index.umd.js +589 -0
  158. package/dist/index.umd.js.map +1 -0
  159. package/dist/internal/common.d.ts +3 -0
  160. package/dist/internal/useBuildCustomizationController.d.ts +2 -0
  161. package/dist/internal/useBuildDataSource.d.ts +26 -0
  162. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  163. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  164. package/dist/internal/useLocaleConfig.d.ts +1 -0
  165. package/dist/internal/useRestoreScroll.d.ts +6 -0
  166. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  167. package/dist/preview/PropertyPreview.d.ts +7 -0
  168. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  169. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  170. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  171. package/dist/preview/components/BooleanPreview.d.ts +11 -0
  172. package/dist/preview/components/DatePreview.d.ts +7 -0
  173. package/dist/preview/components/EmptyValue.d.ts +4 -0
  174. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  175. package/dist/preview/components/ImagePreview.d.ts +12 -0
  176. package/dist/preview/components/ReferencePreview.d.ts +16 -0
  177. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  178. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  179. package/dist/preview/index.d.ts +23 -0
  180. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  181. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  182. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  183. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  184. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  185. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  186. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  187. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  188. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  189. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  190. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  191. package/dist/preview/util.d.ts +7 -0
  192. package/dist/types/analytics.d.ts +1 -0
  193. package/dist/types/analytics_controller.d.ts +7 -0
  194. package/dist/types/appcheck.d.ts +26 -0
  195. package/dist/types/auth.d.ts +47 -0
  196. package/dist/types/collections.d.ts +467 -0
  197. package/dist/types/customization_controller.d.ts +47 -0
  198. package/dist/types/datasource.d.ts +262 -0
  199. package/dist/types/dialogs_controller.d.ts +32 -0
  200. package/dist/types/entities.d.ts +58 -0
  201. package/dist/types/entity_actions.d.ts +35 -0
  202. package/dist/types/entity_callbacks.d.ts +185 -0
  203. package/dist/types/entity_link_builder.d.ts +7 -0
  204. package/dist/types/entity_overrides.d.ts +6 -0
  205. package/dist/types/export_import.d.ts +21 -0
  206. package/dist/types/fields.d.ts +180 -0
  207. package/dist/types/firecms.d.ts +132 -0
  208. package/dist/types/firecms_context.d.ts +70 -0
  209. package/dist/types/index.d.ts +29 -0
  210. package/dist/types/local_config_persistence.d.ts +21 -0
  211. package/dist/types/locales.d.ts +4 -0
  212. package/dist/types/modify_collections.d.ts +5 -0
  213. package/dist/types/navigation.d.ts +179 -0
  214. package/dist/types/permissions.d.ts +67 -0
  215. package/dist/types/plugins.d.ts +171 -0
  216. package/dist/types/properties.d.ts +681 -0
  217. package/dist/types/property_config.d.ts +42 -0
  218. package/dist/types/resolved_entities.d.ts +98 -0
  219. package/dist/types/side_dialogs_controller.d.ts +57 -0
  220. package/dist/types/side_entity_controller.d.ts +83 -0
  221. package/dist/types/storage.d.ts +82 -0
  222. package/dist/types/user.d.ts +36 -0
  223. package/dist/util/arrays.d.ts +1 -0
  224. package/dist/util/builders.d.ts +64 -0
  225. package/dist/util/collections.d.ts +11 -0
  226. package/dist/util/common.d.ts +2 -0
  227. package/dist/util/dates.d.ts +1 -0
  228. package/dist/util/entities.d.ts +28 -0
  229. package/dist/util/enums.d.ts +7 -0
  230. package/dist/util/flatten_object.d.ts +3 -0
  231. package/dist/util/hash.d.ts +1 -0
  232. package/dist/util/icon_list.d.ts +1 -0
  233. package/dist/util/icon_synonyms.d.ts +1950 -0
  234. package/dist/util/icons.d.ts +13 -0
  235. package/dist/util/index.d.ts +23 -0
  236. package/dist/util/join_collections.d.ts +9 -0
  237. package/dist/util/make_properties_editable.d.ts +3 -0
  238. package/dist/util/navigation_from_path.d.ts +24 -0
  239. package/dist/util/navigation_utils.d.ts +20 -0
  240. package/dist/util/objects.d.ts +10 -0
  241. package/dist/util/os.d.ts +2 -0
  242. package/dist/util/parent_references_from_path.d.ts +6 -0
  243. package/dist/util/paths.d.ts +14 -0
  244. package/dist/util/permissions.d.ts +5 -0
  245. package/dist/util/plurals.d.ts +18 -0
  246. package/dist/util/property_utils.d.ts +23 -0
  247. package/dist/util/references.d.ts +4 -0
  248. package/dist/util/regexp.d.ts +7 -0
  249. package/dist/util/resolutions.d.ts +64 -0
  250. package/dist/util/storage.d.ts +3 -0
  251. package/dist/util/strings.d.ts +6 -0
  252. package/dist/util/useDebouncedCallback.d.ts +1 -0
  253. package/dist/util/useStorageUploadController.d.ts +36 -0
  254. package/dist/util/useTraceUpdate.d.ts +1 -0
  255. package/package.json +122 -0
  256. package/src/components/ArrayContainer.tsx +334 -0
  257. package/src/components/CircularProgressCenter.tsx +26 -0
  258. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  259. package/src/components/DeleteEntityDialog.tsx +213 -0
  260. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +170 -0
  261. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +325 -0
  262. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +145 -0
  263. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
  264. package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
  265. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +155 -0
  266. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  267. package/src/components/EntityCollectionTable/index.tsx +12 -0
  268. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +116 -0
  269. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
  270. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  271. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  272. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +126 -0
  273. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  274. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +408 -0
  275. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  276. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  277. package/src/components/EntityCollectionView/EntityCollectionView.tsx +804 -0
  278. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +132 -0
  279. package/src/components/EntityCollectionView/useSelectionController.tsx +30 -0
  280. package/src/components/EntityPreview.tsx +218 -0
  281. package/src/components/EntityView.tsx +84 -0
  282. package/src/components/ErrorBoundary.tsx +40 -0
  283. package/src/components/ErrorTooltip.tsx +11 -0
  284. package/src/components/ErrorView.tsx +52 -0
  285. package/src/components/FieldCaption.tsx +13 -0
  286. package/src/components/FireCMSAppBar.tsx +165 -0
  287. package/src/components/FireCMSLogo.tsx +73 -0
  288. package/src/components/HomePage/DefaultHomePage.tsx +214 -0
  289. package/src/components/HomePage/FavouritesView.tsx +64 -0
  290. package/src/components/HomePage/NavigationCard.tsx +69 -0
  291. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  292. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  293. package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
  294. package/src/components/HomePage/index.tsx +5 -0
  295. package/src/components/NotFoundPage.tsx +25 -0
  296. package/src/components/PropertyConfigBadge.tsx +17 -0
  297. package/src/components/PropertyIdCopyTooltipContent.tsx +28 -0
  298. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +379 -0
  299. package/src/components/ReferenceWidget.tsx +145 -0
  300. package/src/components/SearchIconsView.tsx +75 -0
  301. package/src/components/SelectableTable/SelectableTable.tsx +329 -0
  302. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  303. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +49 -0
  304. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +109 -0
  305. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +179 -0
  306. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +158 -0
  307. package/src/components/VirtualTable/VirtualTable.tsx +405 -0
  308. package/src/components/VirtualTable/VirtualTableCell.tsx +50 -0
  309. package/src/components/VirtualTable/VirtualTableHeader.tsx +266 -0
  310. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  311. package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
  312. package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
  313. package/src/components/VirtualTable/common.tsx +18 -0
  314. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  315. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  316. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  317. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  318. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  319. package/src/components/VirtualTable/index.tsx +2 -0
  320. package/src/components/VirtualTable/types.tsx +44 -0
  321. package/src/components/common/index.ts +5 -0
  322. package/src/components/common/types.tsx +63 -0
  323. package/src/components/common/useColumnsIds.tsx +100 -0
  324. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +225 -0
  325. package/src/components/common/useDebouncedData.ts +49 -0
  326. package/src/components/common/useTableSearchHelper.ts +47 -0
  327. package/src/components/index.tsx +36 -0
  328. package/src/contexts/AnalyticsContext.tsx +4 -0
  329. package/src/contexts/AuthControllerContext.tsx +4 -0
  330. package/src/contexts/CustomizationControllerContext.tsx +4 -0
  331. package/src/contexts/DataSourceContext.tsx +4 -0
  332. package/src/contexts/DialogsProvider.tsx +52 -0
  333. package/src/contexts/ModeController.tsx +13 -0
  334. package/src/contexts/NavigationContext.tsx +4 -0
  335. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  336. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  337. package/src/contexts/SnackbarProvider.tsx +12 -0
  338. package/src/contexts/StorageSourceContext.tsx +4 -0
  339. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  340. package/src/contexts/index.ts +3 -0
  341. package/src/core/Drawer.tsx +191 -0
  342. package/src/core/EntityEditView.tsx +561 -0
  343. package/src/core/EntitySidePanel.tsx +91 -0
  344. package/src/core/FireCMS.tsx +198 -0
  345. package/src/core/NavigationRoutes.tsx +127 -0
  346. package/src/core/Scaffold.tsx +281 -0
  347. package/src/core/SideDialogs.tsx +156 -0
  348. package/src/core/SideEntityView.tsx +38 -0
  349. package/src/core/field_configs.tsx +400 -0
  350. package/src/core/index.tsx +12 -0
  351. package/src/form/EntityForm.tsx +728 -0
  352. package/src/form/PropertyFieldBinding.tsx +306 -0
  353. package/src/form/components/CustomIdField.tsx +139 -0
  354. package/src/form/components/ErrorFocus.tsx +51 -0
  355. package/src/form/components/FieldHelperText.tsx +58 -0
  356. package/src/form/components/FormikArrayContainer.tsx +44 -0
  357. package/src/form/components/LabelWithIcon.tsx +33 -0
  358. package/src/form/components/StorageItemPreview.tsx +68 -0
  359. package/src/form/components/StorageUploadProgress.tsx +105 -0
  360. package/src/form/components/index.tsx +3 -0
  361. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +86 -0
  362. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +149 -0
  363. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  364. package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
  365. package/src/form/field_bindings/KeyValueFieldBinding.tsx +558 -0
  366. package/src/form/field_bindings/MapFieldBinding.tsx +138 -0
  367. package/src/form/field_bindings/MarkdownFieldBinding.tsx +695 -0
  368. package/src/form/field_bindings/MultiSelectBinding.tsx +114 -0
  369. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +69 -0
  370. package/src/form/field_bindings/ReferenceFieldBinding.tsx +123 -0
  371. package/src/form/field_bindings/RepeatFieldBinding.tsx +105 -0
  372. package/src/form/field_bindings/SelectFieldBinding.tsx +99 -0
  373. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +447 -0
  374. package/src/form/field_bindings/SwitchFieldBinding.tsx +60 -0
  375. package/src/form/field_bindings/TextFieldBinding.tsx +109 -0
  376. package/src/form/index.tsx +43 -0
  377. package/src/form/useClearRestoreValue.tsx +35 -0
  378. package/src/form/validation.ts +412 -0
  379. package/src/hooks/data/delete.ts +101 -0
  380. package/src/hooks/data/save.ts +170 -0
  381. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  382. package/src/hooks/data/useDataOrder.ts +26 -0
  383. package/src/hooks/data/useDataSource.tsx +14 -0
  384. package/src/hooks/data/useEntityFetch.tsx +129 -0
  385. package/src/hooks/index.tsx +27 -0
  386. package/src/hooks/useAnalyticsController.tsx +8 -0
  387. package/src/hooks/useAuthController.tsx +14 -0
  388. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  389. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +67 -0
  390. package/src/hooks/useBuildModeController.tsx +60 -0
  391. package/src/hooks/useBuildNavigationController.tsx +433 -0
  392. package/src/hooks/useClipboard.tsx +158 -0
  393. package/src/hooks/useCustomizationController.tsx +14 -0
  394. package/src/hooks/useDialogsController.tsx +14 -0
  395. package/src/hooks/useFireCMSContext.tsx +99 -0
  396. package/src/hooks/useLargeLayout.tsx +100 -0
  397. package/src/hooks/useModeController.tsx +24 -0
  398. package/src/hooks/useNavigationController.tsx +12 -0
  399. package/src/hooks/useProjectLog.tsx +39 -0
  400. package/src/hooks/useReferenceDialog.tsx +56 -0
  401. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  402. package/src/hooks/useSideDialogsController.tsx +21 -0
  403. package/src/hooks/useSideEntityController.tsx +15 -0
  404. package/src/hooks/useSnackbarController.tsx +75 -0
  405. package/src/hooks/useStorageSource.tsx +14 -0
  406. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  407. package/src/index.ts +8 -0
  408. package/src/internal/common.tsx +5 -0
  409. package/src/internal/useBuildCustomizationController.tsx +5 -0
  410. package/src/internal/useBuildDataSource.ts +363 -0
  411. package/src/internal/useBuildSideDialogsController.tsx +125 -0
  412. package/src/internal/useBuildSideEntityController.tsx +172 -0
  413. package/src/internal/useLocaleConfig.tsx +18 -0
  414. package/src/internal/useRestoreScroll.tsx +48 -0
  415. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  416. package/src/preview/PropertyPreview.tsx +225 -0
  417. package/src/preview/PropertyPreviewProps.tsx +59 -0
  418. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  419. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  420. package/src/preview/components/BooleanPreview.tsx +24 -0
  421. package/src/preview/components/DatePreview.tsx +26 -0
  422. package/src/preview/components/EmptyValue.tsx +10 -0
  423. package/src/preview/components/EnumValuesChip.tsx +38 -0
  424. package/src/preview/components/ImagePreview.tsx +106 -0
  425. package/src/preview/components/ReferencePreview.tsx +166 -0
  426. package/src/preview/components/StorageThumbnail.tsx +84 -0
  427. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  428. package/src/preview/index.ts +27 -0
  429. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  430. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  431. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  432. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  433. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  434. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  435. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  436. package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
  437. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  438. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  439. package/src/preview/property_previews/StringPropertyPreview.tsx +60 -0
  440. package/src/preview/util.ts +31 -0
  441. package/src/types/analytics.ts +35 -0
  442. package/src/types/analytics_controller.tsx +10 -0
  443. package/src/types/appcheck.ts +29 -0
  444. package/src/types/auth.tsx +59 -0
  445. package/src/types/collections.ts +548 -0
  446. package/src/types/customization_controller.tsx +58 -0
  447. package/src/types/datasource.ts +389 -0
  448. package/src/types/dialogs_controller.tsx +33 -0
  449. package/src/types/entities.ts +80 -0
  450. package/src/types/entity_actions.tsx +43 -0
  451. package/src/types/entity_callbacks.ts +229 -0
  452. package/src/types/entity_link_builder.ts +8 -0
  453. package/src/types/entity_overrides.tsx +7 -0
  454. package/src/types/export_import.ts +26 -0
  455. package/src/types/fields.tsx +220 -0
  456. package/src/types/firecms.tsx +153 -0
  457. package/src/types/firecms_context.tsx +83 -0
  458. package/src/types/index.ts +29 -0
  459. package/src/types/local_config_persistence.tsx +23 -0
  460. package/src/types/locales.ts +81 -0
  461. package/src/types/modify_collections.tsx +6 -0
  462. package/src/types/navigation.ts +215 -0
  463. package/src/types/permissions.ts +81 -0
  464. package/src/types/plugins.tsx +207 -0
  465. package/src/types/properties.ts +851 -0
  466. package/src/types/property_config.tsx +72 -0
  467. package/src/types/resolved_entities.ts +148 -0
  468. package/src/types/side_dialogs_controller.tsx +68 -0
  469. package/src/types/side_entity_controller.tsx +97 -0
  470. package/src/types/storage.ts +96 -0
  471. package/src/types/user.ts +37 -0
  472. package/src/util/arrays.ts +3 -0
  473. package/src/util/builders.ts +139 -0
  474. package/src/util/collections.ts +72 -0
  475. package/src/util/common.tsx +2 -0
  476. package/src/util/dates.ts +1 -0
  477. package/src/util/entities.ts +196 -0
  478. package/src/util/enums.ts +56 -0
  479. package/src/util/flatten_object.ts +45 -0
  480. package/src/util/hash.ts +11 -0
  481. package/src/util/icon_list.ts +17 -0
  482. package/src/util/icon_synonyms.ts +1950 -0
  483. package/src/util/icons.tsx +56 -0
  484. package/src/util/index.ts +23 -0
  485. package/src/util/join_collections.ts +172 -0
  486. package/src/util/make_properties_editable.ts +29 -0
  487. package/src/util/navigation_from_path.ts +107 -0
  488. package/src/util/navigation_utils.ts +111 -0
  489. package/src/util/objects.ts +168 -0
  490. package/src/util/os.ts +13 -0
  491. package/src/util/parent_references_from_path.ts +56 -0
  492. package/src/util/paths.ts +27 -0
  493. package/src/util/permissions.ts +83 -0
  494. package/src/util/plurals.ts +190 -0
  495. package/src/util/property_utils.tsx +130 -0
  496. package/src/util/references.ts +51 -0
  497. package/src/util/regexp.ts +32 -0
  498. package/src/util/resolutions.ts +399 -0
  499. package/src/util/storage.ts +92 -0
  500. package/src/util/strings.ts +63 -0
  501. package/src/util/useDebouncedCallback.ts +25 -0
  502. package/src/util/useStorageUploadController.tsx +243 -0
  503. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,83 @@
1
+ import { DataSource } from "./datasource";
2
+ import { StorageSource } from "./storage";
3
+ import { NavigationController } from "./navigation";
4
+ import { SideEntityController } from "./side_entity_controller";
5
+ import { AuthController } from "./auth";
6
+ import { User } from "./user";
7
+ import { SnackbarController } from "../hooks";
8
+ import { UserConfigurationPersistence } from "./local_config_persistence";
9
+ import { SideDialogsController } from "./side_dialogs_controller";
10
+ import { DialogsController } from "./dialogs_controller";
11
+ import { CustomizationController } from "./customization_controller";
12
+ import { AnalyticsController } from "./analytics_controller";
13
+
14
+ /**
15
+ * Context that includes the internal controllers and contexts used by the app.
16
+ * Some controllers and context included in this context can be accessed
17
+ * directly from their respective hooks.
18
+ * @group Hooks and utilities
19
+ * @see useFireCMSContext
20
+ */
21
+ export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
22
+
23
+ /**
24
+ * Connector to your database, e.g. your Firestore database
25
+ */
26
+ dataSource: DataSource;
27
+
28
+ /**
29
+ * Used storage implementation
30
+ */
31
+ storageSource: StorageSource;
32
+
33
+ /**
34
+ * Context that includes the resolved navigation and utility methods and
35
+ * attributes.
36
+ * @see useNavigation
37
+ */
38
+ navigation: NavigationController;
39
+
40
+ /**
41
+ * Controller to open the side dialog displaying entity forms
42
+ * @see useSideEntityController
43
+ */
44
+ sideEntityController: SideEntityController;
45
+
46
+ /**
47
+ * Controller used to open side dialogs
48
+ * This is the controller used internally by side entity dialogs
49
+ * or reference dialogs.
50
+ */
51
+ sideDialogsController: SideDialogsController;
52
+
53
+ /**
54
+ * Controller used to open regular dialogs
55
+ */
56
+ dialogsController: DialogsController;
57
+
58
+ /**
59
+ * Used auth controller
60
+ */
61
+ authController: AuthControllerType;
62
+
63
+ /**
64
+ * This controller holds the customization options for the CMS.
65
+ */
66
+ customizationController: CustomizationController;
67
+
68
+ /**
69
+ * Use this controller to display snackbars
70
+ */
71
+ snackbarController: SnackbarController;
72
+
73
+ /**
74
+ * Use this controller to access data stored in the browser for the user
75
+ */
76
+ userConfigPersistence?: UserConfigurationPersistence;
77
+
78
+ /**
79
+ * Callback to send analytics events
80
+ */
81
+ analyticsController?: AnalyticsController;
82
+
83
+ };
@@ -0,0 +1,29 @@
1
+ export * from "./auth";
2
+ export * from "./entities";
3
+ export * from "./entity_actions";
4
+ export * from "./resolved_entities";
5
+ export * from "./properties";
6
+ export * from "./collections";
7
+ export * from "./permissions";
8
+ export * from "./navigation";
9
+ export * from "./locales";
10
+ export * from "./user";
11
+ export * from "./storage";
12
+ export * from "./fields";
13
+ export * from "./property_config";
14
+ export * from "./datasource";
15
+ export * from "./entity_link_builder";
16
+ export * from "./side_entity_controller";
17
+ export * from "./side_dialogs_controller";
18
+ export * from "./firecms_context";
19
+ export * from "./entity_callbacks";
20
+ export * from "./entity_overrides";
21
+ export * from "./local_config_persistence";
22
+ export * from "./plugins";
23
+ export * from "./analytics";
24
+ export * from "./firecms";
25
+ export * from "./appcheck";
26
+ export * from "./export_import";
27
+ export * from "./modify_collections";
28
+ export * from "./analytics_controller";
29
+ export * from "./customization_controller";
@@ -0,0 +1,23 @@
1
+ import { EntityCollection } from "./collections";
2
+
3
+ /**
4
+ * Use to resolve the collection properties for specific path, entity id or values.
5
+ * @group Models
6
+ */
7
+ export type PartialEntityCollection<M extends Record<string, any> = any> = Partial<EntityCollection<M>>;
8
+
9
+ /**
10
+ * This interface is in charge of defining the controller that persists
11
+ * modifications to a collection or collection, and retrieves them back from
12
+ * a data source, such as local storage or Firestore.
13
+ */
14
+ export interface UserConfigurationPersistence {
15
+ onCollectionModified: <M extends Record<string, any> = any>(path: string, partialCollection: PartialEntityCollection<M>) => void;
16
+ getCollectionConfig: <M extends Record<string, any> = any>(path: string) => PartialEntityCollection<M>;
17
+ recentlyVisitedPaths: string[];
18
+ setRecentlyVisitedPaths: (paths: string[]) => void;
19
+ favouritePaths: string[];
20
+ setFavouritePaths: (paths: string[]) => void;
21
+ collapsedGroups: string[];
22
+ setCollapsedGroups: (paths: string[]) => void;
23
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @group Models
3
+ */
4
+ export type Locale =
5
+ "af" |
6
+ "ar" |
7
+ "arDZ" |
8
+ "arMA" |
9
+ "arSA" |
10
+ "az" |
11
+ "be" |
12
+ "bg" |
13
+ "bn" |
14
+ "ca" |
15
+ "cs" |
16
+ "cy" |
17
+ "da" |
18
+ "de" |
19
+ "el" |
20
+ "enAU" |
21
+ "enCA" |
22
+ "enGB" |
23
+ "enIN" |
24
+ "enNZ" |
25
+ "enUS" |
26
+ "eo" |
27
+ "es" |
28
+ "et" |
29
+ "eu" |
30
+ "faIR" |
31
+ "fi" |
32
+ "fil" |
33
+ "fr" |
34
+ "frCA" |
35
+ "frCH" |
36
+ "gd" |
37
+ "gl" |
38
+ "gu" |
39
+ "he" |
40
+ "hi" |
41
+ "hr" |
42
+ "hu" |
43
+ "hy" |
44
+ "id" |
45
+ "is" |
46
+ "it" |
47
+ "ja" |
48
+ "ka" |
49
+ "kk" |
50
+ "kn" |
51
+ "ko" |
52
+ "lb" |
53
+ "lt" |
54
+ "lv" |
55
+ "mk" |
56
+ "ms" |
57
+ "mt" |
58
+ "nb" |
59
+ "nl" |
60
+ "nlBE" |
61
+ "nn" |
62
+ "pl" |
63
+ "pt" |
64
+ "ptBR" |
65
+ "ro" |
66
+ "ru" |
67
+ "sk" |
68
+ "sl" |
69
+ "sr" |
70
+ "srLatn" |
71
+ "sv" |
72
+ "ta" |
73
+ "te" |
74
+ "th" |
75
+ "tr" |
76
+ "ug" |
77
+ "uk" |
78
+ "uz" |
79
+ "vi" |
80
+ "zhCN" |
81
+ "zhTW";
@@ -0,0 +1,6 @@
1
+ import { EntityCollection } from "./collections";
2
+
3
+ export type ModifyCollectionProps = {
4
+ collection: EntityCollection,
5
+ parentPaths: string[],
6
+ };
@@ -0,0 +1,215 @@
1
+ import React from "react";
2
+ import { EntityCollection } from "./collections";
3
+ import { EntityReference } from "./entities";
4
+
5
+ /**
6
+ * Controller that includes the resolved navigation and utility methods and
7
+ * attributes.
8
+ * @group Models
9
+ */
10
+ export type NavigationController = {
11
+
12
+ /**
13
+ * List of the mapped collections in the CMS.
14
+ * Each entry relates to a collection in the root database.
15
+ * Each of the navigation entries in this field
16
+ * generates an entry in the main menu.
17
+ */
18
+ collections?: EntityCollection[];
19
+
20
+ /**
21
+ * Custom additional views created by the developer, added to the main
22
+ * navigation
23
+ */
24
+ views?: CMSView[];
25
+
26
+ /**
27
+ * Custom additional views created by the developer, added to the admin
28
+ * navigation
29
+ */
30
+ adminViews?: CMSView[];
31
+
32
+ /**
33
+ * Configuration for the views that should be displayed at the top
34
+ * level of the navigation (e.g. in the home page or the navigation
35
+ * drawer)
36
+ */
37
+ topLevelNavigation?: TopNavigationResult;
38
+
39
+ /**
40
+ * Is the navigation loading (the configuration persistence has not
41
+ * loaded yet, or a specified navigation builder has not completed)
42
+ */
43
+ loading: boolean;
44
+
45
+ /**
46
+ * Was there an error while loading the navigation data
47
+ */
48
+ navigationLoadingError?: any;
49
+
50
+ /**
51
+ * Is the registry ready to be used
52
+ */
53
+ initialised: boolean;
54
+
55
+ /**
56
+ * Get the collection configuration for a given path.
57
+ * The collection is resolved from the given path or alias.
58
+ */
59
+ getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string,
60
+ entityId?: string,
61
+ includeUserOverride?: boolean) => EC | undefined;
62
+ /**
63
+ * Get the collection configuration from its parent path segments.
64
+ */
65
+ getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
66
+
67
+ /**
68
+ * Get the collection configuration from its parent path segments.
69
+ */
70
+ getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
71
+
72
+ /**
73
+ * Default path under the navigation routes of the CMS will be created
74
+ */
75
+ basePath: string;
76
+
77
+ /**
78
+ * Default path under the collection routes of the CMS will be created
79
+ */
80
+ baseCollectionPath: string;
81
+
82
+ /**
83
+ * Convert a URL path to a collection or entity path
84
+ * `/c/products` => `products`
85
+ * `/my_cms/c/products/B34SAP8Z` => `products/B34SAP8Z`
86
+ * `/my_cms/my_view` => `my_view`
87
+ * @param cmsPath
88
+ */
89
+ urlPathToDataPath: (cmsPath: string) => string;
90
+
91
+ /**
92
+ * Convert a collection or entity path to a URL path
93
+ * @param path
94
+ */
95
+ buildCMSUrlPath: (path: string) => string;
96
+
97
+ buildUrlEditCollectionPath: (props: {
98
+ path: string
99
+ }) => string;
100
+
101
+ /**
102
+ * Base url path for the home screen
103
+ */
104
+ homeUrl: string;
105
+
106
+ /**
107
+ * Check if a url path belongs to a collection
108
+ * @param path
109
+ */
110
+ isUrlCollectionPath: (urlPath: string) => boolean;
111
+
112
+ /**
113
+ * Build a URL collection path from a data path
114
+ * `products` => `/c/products`
115
+ * `products/B34SAP8Z` => `/c/products/B34SAP8Z`
116
+ * @param path
117
+ */
118
+ buildUrlCollectionPath: (path: string) => string;
119
+
120
+ /**
121
+ * Turn a path with aliases into a resolved path
122
+ * @param pathWithAliases
123
+ */
124
+ resolveAliasesFrom: (pathWithAliases: string) => string;
125
+
126
+ /**
127
+ * Call this method to recalculate the navigation
128
+ */
129
+ refreshNavigation: () => void;
130
+
131
+ /**
132
+ * Retrieve all the related parent references for a given path
133
+ * @param path
134
+ */
135
+ getParentReferencesFromPath: (path: string) => EntityReference[];
136
+
137
+ /**
138
+ * Retrieve all the related parent collection ids for a given path
139
+ * @param path
140
+ */
141
+ getParentCollectionIds: (path: string) => string[];
142
+
143
+ /**
144
+ * Resolve paths from a list of ids
145
+ * @param ids
146
+ */
147
+ convertIdsToPaths: (ids: string[]) => string[];
148
+ }
149
+
150
+ /**
151
+ * Custom additional views created by the developer, added to the main
152
+ * navigation.
153
+ * @group Models
154
+ */
155
+ export interface CMSView {
156
+
157
+ /**
158
+ * CMS Path you can reach this view from.
159
+ */
160
+ path: string;
161
+
162
+ /**
163
+ * Name of this view
164
+ */
165
+ name: string;
166
+
167
+ /**
168
+ * Optional description of this view. You can use Markdown
169
+ */
170
+ description?: string;
171
+
172
+ /**
173
+ * Icon key to use in this view.
174
+ * You can use any of the icons in the Material specs:
175
+ * https://fonts.google.com/icons
176
+ * e.g. 'account_tree' or 'person'
177
+ */
178
+ icon?: string;
179
+
180
+ /**
181
+ * Should this view be hidden from the main navigation panel.
182
+ * It will still be accessible if you reach the specified path
183
+ */
184
+ hideFromNavigation?: boolean;
185
+
186
+ /**
187
+ * Component to be rendered. This can be any React component, and can use
188
+ * any of the provided hooks
189
+ */
190
+ view: React.ReactNode;
191
+
192
+ /**
193
+ * Optional field used to group top level navigation entries under a
194
+ * navigation view.
195
+ * This prop is ignored for admin views.
196
+ */
197
+ group?: string;
198
+
199
+ }
200
+
201
+ export interface TopNavigationEntry {
202
+ url: string;
203
+ name: string;
204
+ path: string;
205
+ type: "collection" | "view" | "admin";
206
+ collection?: EntityCollection;
207
+ view?: CMSView;
208
+ description?: string;
209
+ group: string;
210
+ }
211
+
212
+ export type TopNavigationResult = {
213
+ navigationEntries: TopNavigationEntry[],
214
+ groups: string[]
215
+ };
@@ -0,0 +1,81 @@
1
+ import { User } from "./user";
2
+ import { AuthController } from "./auth";
3
+ import { EntityCollection, InferCollectionType } from "./collections";
4
+ import { Entity } from "./entities";
5
+
6
+ /**
7
+ * Define the operations that can be performed in a collection.
8
+ * @group Models
9
+ */
10
+ export interface Permissions {
11
+ /**
12
+ * Can the user see this collection.
13
+ * If `false` it will not show in the user's navigation
14
+ * Defaults to `true`
15
+ */
16
+ read?: boolean;
17
+ /**
18
+ * Can the user add new entities. Defaults to `true`
19
+ */
20
+ create?: boolean;
21
+ /**
22
+ * Can the elements in this collection be edited. Defaults to `true`
23
+ */
24
+ edit?: boolean;
25
+ /**
26
+ * Can the user delete entities. Defaults to `true`
27
+ */
28
+ delete?: boolean;
29
+ }
30
+
31
+ /**
32
+ * Props passed to a {@link PermissionsBuilder}
33
+ * @group Models
34
+ */
35
+ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> {
36
+ /**
37
+ * Entity being edited, might be null in some cases, when the operation
38
+ * refers to the collection.
39
+ * For example, when deciding whether a user can create a new entity
40
+ * in a collection, the entity will be null.
41
+ */
42
+ entity: Entity<M> | null;
43
+
44
+ /**
45
+ * Path of the collection e.g. 'products/12345/locales'
46
+ */
47
+ path: string;
48
+
49
+ /**
50
+ * Path segments of the collection e.g. ['products', 'locales']
51
+ */
52
+ pathSegments: string[];
53
+
54
+ /**
55
+ * Logged in user
56
+ */
57
+ user: UserType | null;
58
+
59
+ /**
60
+ * Collection these permissions apply to
61
+ */
62
+ collection: EC;
63
+
64
+ /**
65
+ * Auth controller
66
+ */
67
+ authController: AuthController<UserType>;
68
+ }
69
+
70
+ /**
71
+ * Builder used to assign permissions to entities,
72
+ * based on the logged user or collection.
73
+ * @group Models
74
+ */
75
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> =
76
+ (({
77
+ pathSegments,
78
+ user,
79
+ collection,
80
+ authController
81
+ }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);