@firecms/core 3.0.0-alpha.8 → 3.0.0-alpha.81

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 (470) hide show
  1. package/README.md +1 -1
  2. package/dist/components/ArrayContainer.d.ts +42 -0
  3. package/dist/components/CircularProgressCenter.d.ts +11 -0
  4. package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
  5. package/dist/components/DeleteEntityDialog.d.ts +12 -0
  6. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +35 -0
  7. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
  8. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
  9. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
  10. package/dist/components/EntityCollectionTable/SimpleEntityCollectionTable.d.ts +95 -0
  11. package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
  12. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
  13. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  14. package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
  15. package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
  16. package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
  17. package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
  18. package/dist/components/EntityCollectionTable/index.d.ts +8 -0
  19. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  20. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  21. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  22. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  23. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  24. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  25. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  26. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  27. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  28. package/dist/components/EntityCollectionTable/types.d.ts +53 -0
  29. package/dist/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.d.ts +32 -0
  30. package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
  31. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
  32. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  33. package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
  34. package/dist/components/EntityPreview.d.ts +11 -0
  35. package/dist/components/ErrorBoundary.d.ts +11 -0
  36. package/dist/components/ErrorTooltip.d.ts +2 -0
  37. package/dist/components/ErrorView.d.ts +19 -0
  38. package/dist/components/FieldConfigBadge.d.ts +4 -0
  39. package/dist/components/FireCMSAppBar.d.ts +26 -0
  40. package/dist/components/FireCMSLogo.d.ts +7 -0
  41. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  42. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  43. package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
  44. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  45. package/dist/components/HomePage/index.d.ts +3 -0
  46. package/dist/components/LabelWithIcon.d.ts +14 -0
  47. package/dist/components/NotFoundPage.d.ts +1 -0
  48. package/dist/components/ReferenceSelectionInner.d.ts +58 -0
  49. package/dist/components/ReferenceWidget.d.ts +28 -0
  50. package/dist/components/SearchIconsView.d.ts +5 -0
  51. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  52. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  53. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  54. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  55. package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
  56. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  57. package/dist/components/VirtualTable/common.d.ts +2 -0
  58. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  59. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  60. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  61. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  62. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  63. package/dist/components/VirtualTable/index.d.ts +2 -0
  64. package/dist/components/VirtualTable/types.d.ts +34 -0
  65. package/dist/components/index.d.ts +21 -0
  66. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  67. package/dist/contexts/DataSourceContext.d.ts +3 -0
  68. package/dist/contexts/DialogsProvider.d.ts +4 -0
  69. package/dist/contexts/ModeController.d.ts +4 -0
  70. package/dist/contexts/NavigationContext.d.ts +3 -0
  71. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  72. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  73. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  74. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  75. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  76. package/dist/contexts/index.d.ts +3 -0
  77. package/dist/core/Drawer.d.ts +23 -0
  78. package/dist/core/EntitySidePanel.d.ts +10 -0
  79. package/dist/core/FireCMS.d.ts +14 -0
  80. package/dist/core/NavigationRoutes.d.ts +21 -0
  81. package/dist/core/Scaffold.d.ts +52 -0
  82. package/dist/core/SideDialogs.d.ts +23 -0
  83. package/dist/core/field_configs.d.ts +7 -0
  84. package/dist/core/index.d.ts +10 -0
  85. package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
  86. package/dist/core/useBuildModeController.d.ts +6 -0
  87. package/dist/form/EntityForm.d.ts +75 -0
  88. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  89. package/dist/form/components/CustomIdField.d.ts +9 -0
  90. package/dist/form/components/ErrorFocus.d.ts +4 -0
  91. package/dist/form/components/FieldHelperText.d.ts +12 -0
  92. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  93. package/dist/form/components/StorageItemPreview.d.ts +13 -0
  94. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  95. package/dist/form/components/SubmitListener.d.ts +1 -0
  96. package/dist/form/components/SwitchControl.d.ts +8 -0
  97. package/dist/form/components/index.d.ts +3 -0
  98. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  99. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  100. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  101. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  102. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  103. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  104. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  105. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  106. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  107. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  108. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  109. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  110. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
  111. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  112. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  113. package/dist/form/index.d.ts +20 -0
  114. package/dist/form/useClearRestoreValue.d.ts +13 -0
  115. package/dist/form/validation.d.ts +25 -0
  116. package/dist/hooks/data/delete.d.ts +37 -0
  117. package/dist/hooks/data/save.d.ts +42 -0
  118. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  119. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  120. package/dist/hooks/data/useDataSource.d.ts +6 -0
  121. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  122. package/dist/hooks/index.d.ts +19 -0
  123. package/dist/hooks/useAuthController.d.ts +11 -0
  124. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  125. package/dist/hooks/useClipboard.d.ts +57 -0
  126. package/dist/hooks/useDialogsController.d.ts +11 -0
  127. package/dist/hooks/useFireCMSContext.d.ts +12 -0
  128. package/dist/hooks/useLargeLayout.d.ts +1 -0
  129. package/dist/hooks/useModeController.d.ts +20 -0
  130. package/dist/hooks/useNavigationController.d.ts +9 -0
  131. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  132. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  133. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  134. package/dist/hooks/useSideEntityController.d.ts +12 -0
  135. package/dist/hooks/useSnackbarController.d.ts +41 -0
  136. package/dist/hooks/useStorageSource.d.ts +6 -0
  137. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  138. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  139. package/dist/index.d.ts +8 -0
  140. package/dist/index.es.js +15810 -26791
  141. package/dist/index.es.js.map +1 -1
  142. package/dist/index.umd.js +5 -1027
  143. package/dist/index.umd.js.map +1 -1
  144. package/dist/internal/EntityView.d.ts +22 -0
  145. package/dist/internal/common.d.ts +3 -0
  146. package/dist/internal/useBuildDataSource.d.ts +22 -0
  147. package/dist/internal/useBuildNavigationController.d.ts +14 -0
  148. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  149. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  150. package/dist/internal/useLocaleConfig.d.ts +1 -0
  151. package/dist/internal/useRestoreScroll.d.ts +6 -0
  152. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  153. package/dist/preview/PropertyPreview.d.ts +7 -0
  154. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  155. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  156. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  157. package/dist/preview/components/BooleanPreview.d.ts +7 -0
  158. package/dist/preview/components/DatePreview.d.ts +7 -0
  159. package/dist/preview/components/EmptyValue.d.ts +4 -0
  160. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  161. package/dist/preview/components/ImagePreview.d.ts +12 -0
  162. package/dist/preview/components/ReferencePreview.d.ts +22 -0
  163. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  164. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  165. package/dist/preview/index.d.ts +23 -0
  166. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  167. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  168. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  169. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  170. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  171. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  172. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  173. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  174. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  175. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  176. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  177. package/dist/preview/util.d.ts +7 -0
  178. package/dist/types/analytics.d.ts +1 -0
  179. package/dist/types/appcheck.d.ts +26 -0
  180. package/dist/types/auth.d.ts +40 -0
  181. package/dist/types/collections.d.ts +451 -0
  182. package/dist/types/datasource.d.ts +262 -0
  183. package/dist/types/dialogs_controller.d.ts +32 -0
  184. package/dist/types/entities.d.ts +57 -0
  185. package/dist/types/entity_actions.d.ts +35 -0
  186. package/dist/types/entity_callbacks.d.ts +171 -0
  187. package/dist/types/entity_link_builder.d.ts +7 -0
  188. package/dist/types/export_import.d.ts +21 -0
  189. package/dist/types/fields.d.ts +181 -0
  190. package/dist/types/firecms.d.ts +151 -0
  191. package/dist/types/firecms_context.d.ts +110 -0
  192. package/dist/types/index.d.ts +26 -0
  193. package/dist/types/local_config_persistence.d.ts +21 -0
  194. package/dist/types/locales.d.ts +4 -0
  195. package/dist/types/modify_collections.d.ts +5 -0
  196. package/dist/types/navigation.d.ts +178 -0
  197. package/dist/types/permissions.d.ts +63 -0
  198. package/dist/types/plugins.d.ts +181 -0
  199. package/dist/types/properties.d.ts +681 -0
  200. package/dist/types/property_config.d.ts +42 -0
  201. package/dist/types/resolved_entities.d.ts +98 -0
  202. package/dist/types/side_dialogs_controller.d.ts +57 -0
  203. package/dist/types/side_entity_controller.d.ts +83 -0
  204. package/dist/types/storage.d.ts +82 -0
  205. package/dist/types/user.d.ts +36 -0
  206. package/dist/util/arrays.d.ts +1 -0
  207. package/dist/util/builders.d.ts +64 -0
  208. package/dist/util/collections.d.ts +3 -0
  209. package/dist/util/common.d.ts +2 -0
  210. package/dist/util/dates.d.ts +1 -0
  211. package/dist/util/entities.d.ts +28 -0
  212. package/dist/util/enums.d.ts +7 -0
  213. package/dist/util/flatten_object.d.ts +3 -0
  214. package/dist/util/hash.d.ts +1 -0
  215. package/dist/util/icon_list.d.ts +1 -0
  216. package/dist/util/icon_synonyms.d.ts +1950 -0
  217. package/dist/util/icons.d.ts +4 -0
  218. package/dist/util/index.d.ts +22 -0
  219. package/dist/util/join_collections.d.ts +9 -0
  220. package/dist/util/make_properties_editable.d.ts +3 -0
  221. package/dist/util/navigation_from_path.d.ts +24 -0
  222. package/dist/util/navigation_utils.d.ts +20 -0
  223. package/dist/util/objects.d.ts +10 -0
  224. package/dist/util/os.d.ts +2 -0
  225. package/dist/util/parent_references_from_path.d.ts +6 -0
  226. package/dist/util/paths.d.ts +14 -0
  227. package/dist/util/permissions.d.ts +5 -0
  228. package/dist/util/plurals.d.ts +18 -0
  229. package/dist/util/property_utils.d.ts +23 -0
  230. package/dist/util/references.d.ts +2 -0
  231. package/dist/util/regexp.d.ts +7 -0
  232. package/dist/util/resolutions.d.ts +64 -0
  233. package/dist/util/storage.d.ts +3 -0
  234. package/dist/util/strings.d.ts +6 -0
  235. package/dist/util/useDebounce.d.ts +1 -0
  236. package/dist/util/useStorageUploadController.d.ts +36 -0
  237. package/dist/util/useTraceUpdate.d.ts +1 -0
  238. package/package.json +112 -142
  239. package/src/components/ArrayContainer.tsx +369 -0
  240. package/src/components/CircularProgressCenter.tsx +26 -0
  241. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  242. package/src/components/DeleteEntityDialog.tsx +207 -0
  243. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +174 -0
  244. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +496 -0
  245. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
  246. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
  247. package/src/components/EntityCollectionTable/SimpleEntityCollectionTable.tsx +369 -0
  248. package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
  249. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
  250. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  251. package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
  252. package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
  253. package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
  254. package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
  255. package/src/components/EntityCollectionTable/index.tsx +20 -0
  256. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
  257. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
  258. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  259. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  260. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
  261. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  262. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
  263. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  264. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  265. package/src/components/EntityCollectionTable/types.tsx +58 -0
  266. package/src/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.tsx +225 -0
  267. package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
  268. package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
  269. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
  270. package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
  271. package/src/components/EntityPreview.tsx +83 -0
  272. package/src/components/ErrorBoundary.tsx +40 -0
  273. package/src/components/ErrorTooltip.tsx +11 -0
  274. package/src/components/ErrorView.tsx +52 -0
  275. package/src/components/FieldConfigBadge.tsx +17 -0
  276. package/src/components/FireCMSAppBar.tsx +157 -0
  277. package/src/components/FireCMSLogo.tsx +73 -0
  278. package/src/components/HomePage/DefaultHomePage.tsx +209 -0
  279. package/src/components/HomePage/FavouritesView.tsx +64 -0
  280. package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
  281. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  282. package/src/components/HomePage/index.tsx +3 -0
  283. package/src/components/LabelWithIcon.tsx +33 -0
  284. package/src/components/NotFoundPage.tsx +25 -0
  285. package/src/components/ReferenceSelectionInner.tsx +364 -0
  286. package/src/components/ReferenceWidget.tsx +145 -0
  287. package/src/components/SearchIconsView.tsx +75 -0
  288. package/src/components/VirtualTable/VirtualTable.tsx +402 -0
  289. package/src/components/VirtualTable/VirtualTableCell.tsx +32 -0
  290. package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
  291. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  292. package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
  293. package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
  294. package/src/components/VirtualTable/common.tsx +18 -0
  295. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  296. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  297. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  298. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  299. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  300. package/src/components/VirtualTable/index.tsx +2 -0
  301. package/src/components/VirtualTable/types.tsx +44 -0
  302. package/src/components/index.tsx +31 -0
  303. package/src/contexts/AuthControllerContext.tsx +4 -0
  304. package/src/contexts/DataSourceContext.tsx +4 -0
  305. package/src/contexts/DialogsProvider.tsx +52 -0
  306. package/src/contexts/ModeController.tsx +13 -0
  307. package/src/contexts/NavigationContext.tsx +4 -0
  308. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  309. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  310. package/src/contexts/SnackbarProvider.tsx +12 -0
  311. package/src/contexts/StorageSourceContext.tsx +4 -0
  312. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  313. package/src/contexts/index.ts +3 -0
  314. package/src/core/Drawer.tsx +161 -0
  315. package/src/core/EntitySidePanel.tsx +89 -0
  316. package/src/core/FireCMS.tsx +184 -0
  317. package/src/core/NavigationRoutes.tsx +118 -0
  318. package/src/core/Scaffold.tsx +278 -0
  319. package/src/core/SideDialogs.tsx +156 -0
  320. package/src/core/field_configs.tsx +400 -0
  321. package/src/core/index.tsx +14 -0
  322. package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
  323. package/src/core/useBuildModeController.tsx +60 -0
  324. package/src/form/EntityForm.tsx +646 -0
  325. package/src/form/PropertyFieldBinding.tsx +313 -0
  326. package/src/form/components/CustomIdField.tsx +124 -0
  327. package/src/form/components/ErrorFocus.tsx +51 -0
  328. package/src/form/components/FieldHelperText.tsx +58 -0
  329. package/src/form/components/FormikArrayContainer.tsx +44 -0
  330. package/src/form/components/StorageItemPreview.tsx +66 -0
  331. package/src/form/components/StorageUploadProgress.tsx +104 -0
  332. package/src/form/components/SubmitListener.tsx +32 -0
  333. package/src/form/components/SwitchControl.tsx +39 -0
  334. package/src/form/components/index.tsx +3 -0
  335. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
  336. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
  337. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  338. package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
  339. package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
  340. package/src/form/field_bindings/MapFieldBinding.tsx +136 -0
  341. package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
  342. package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
  343. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
  344. package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
  345. package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
  346. package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
  347. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
  348. package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
  349. package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
  350. package/src/form/index.tsx +42 -0
  351. package/src/form/useClearRestoreValue.tsx +35 -0
  352. package/src/form/validation.ts +413 -0
  353. package/src/hooks/data/delete.ts +101 -0
  354. package/src/hooks/data/save.ts +165 -0
  355. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  356. package/src/hooks/data/useDataOrder.ts +26 -0
  357. package/src/hooks/data/useDataSource.tsx +9 -0
  358. package/src/hooks/data/useEntityFetch.tsx +129 -0
  359. package/src/hooks/index.tsx +23 -0
  360. package/src/hooks/useAuthController.tsx +14 -0
  361. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  362. package/src/hooks/useClipboard.tsx +158 -0
  363. package/src/hooks/useDialogsController.tsx +14 -0
  364. package/src/hooks/useFireCMSContext.tsx +50 -0
  365. package/src/hooks/useLargeLayout.tsx +97 -0
  366. package/src/hooks/useModeController.tsx +24 -0
  367. package/src/hooks/useNavigationController.tsx +12 -0
  368. package/src/hooks/useReferenceDialog.tsx +56 -0
  369. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  370. package/src/hooks/useSideDialogsController.tsx +21 -0
  371. package/src/hooks/useSideEntityController.tsx +15 -0
  372. package/src/hooks/useSnackbarController.tsx +76 -0
  373. package/src/hooks/useStorageSource.tsx +9 -0
  374. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  375. package/src/hooks/useVerifyLicense.tsx +1 -0
  376. package/src/index.ts +8 -0
  377. package/src/internal/EntityView.tsx +576 -0
  378. package/src/internal/common.tsx +5 -0
  379. package/src/internal/useBuildDataSource.ts +358 -0
  380. package/src/internal/useBuildNavigationController.tsx +371 -0
  381. package/src/internal/useBuildSideDialogsController.tsx +126 -0
  382. package/src/internal/useBuildSideEntityController.tsx +172 -0
  383. package/src/internal/useLocaleConfig.tsx +18 -0
  384. package/src/internal/useRestoreScroll.tsx +48 -0
  385. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  386. package/src/preview/PropertyPreview.tsx +222 -0
  387. package/src/preview/PropertyPreviewProps.tsx +59 -0
  388. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  389. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  390. package/src/preview/components/BooleanPreview.tsx +11 -0
  391. package/src/preview/components/DatePreview.tsx +27 -0
  392. package/src/preview/components/EmptyValue.tsx +10 -0
  393. package/src/preview/components/EnumValuesChip.tsx +38 -0
  394. package/src/preview/components/ImagePreview.tsx +106 -0
  395. package/src/preview/components/ReferencePreview.tsx +249 -0
  396. package/src/preview/components/StorageThumbnail.tsx +84 -0
  397. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  398. package/src/preview/index.ts +27 -0
  399. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  400. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  401. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  402. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  403. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  404. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  405. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  406. package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
  407. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  408. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  409. package/src/preview/property_previews/StringPropertyPreview.tsx +59 -0
  410. package/src/preview/util.ts +31 -0
  411. package/src/types/analytics.ts +34 -0
  412. package/src/types/appcheck.ts +29 -0
  413. package/src/types/auth.tsx +49 -0
  414. package/src/types/collections.ts +530 -0
  415. package/src/types/datasource.ts +389 -0
  416. package/src/types/dialogs_controller.tsx +33 -0
  417. package/src/types/entities.ts +76 -0
  418. package/src/types/entity_actions.tsx +39 -0
  419. package/src/types/entity_callbacks.ts +209 -0
  420. package/src/types/entity_link_builder.ts +8 -0
  421. package/src/types/export_import.ts +26 -0
  422. package/src/types/fields.tsx +220 -0
  423. package/src/types/firecms.tsx +175 -0
  424. package/src/types/firecms_context.tsx +128 -0
  425. package/src/types/index.ts +26 -0
  426. package/src/types/local_config_persistence.tsx +23 -0
  427. package/src/types/locales.ts +81 -0
  428. package/src/types/modify_collections.tsx +6 -0
  429. package/src/types/navigation.ts +214 -0
  430. package/src/types/permissions.ts +76 -0
  431. package/src/types/plugins.tsx +219 -0
  432. package/src/types/properties.ts +851 -0
  433. package/src/types/property_config.tsx +72 -0
  434. package/src/types/resolved_entities.ts +148 -0
  435. package/src/types/side_dialogs_controller.tsx +68 -0
  436. package/src/types/side_entity_controller.tsx +96 -0
  437. package/src/types/storage.ts +96 -0
  438. package/src/types/user.ts +37 -0
  439. package/src/util/arrays.ts +3 -0
  440. package/src/util/builders.ts +139 -0
  441. package/src/util/collections.ts +50 -0
  442. package/src/util/common.tsx +2 -0
  443. package/src/util/dates.ts +1 -0
  444. package/src/util/entities.ts +196 -0
  445. package/src/util/enums.ts +56 -0
  446. package/src/util/flatten_object.ts +45 -0
  447. package/src/util/hash.ts +11 -0
  448. package/src/util/icon_list.ts +17 -0
  449. package/src/util/icon_synonyms.ts +1950 -0
  450. package/src/util/icons.tsx +45 -0
  451. package/src/util/index.ts +22 -0
  452. package/src/util/join_collections.ts +172 -0
  453. package/src/util/make_properties_editable.ts +29 -0
  454. package/src/util/navigation_from_path.ts +107 -0
  455. package/src/util/navigation_utils.ts +111 -0
  456. package/src/util/objects.ts +168 -0
  457. package/src/util/os.ts +13 -0
  458. package/src/util/parent_references_from_path.ts +56 -0
  459. package/src/util/paths.ts +27 -0
  460. package/src/util/permissions.ts +80 -0
  461. package/src/util/plurals.ts +190 -0
  462. package/src/util/property_utils.tsx +130 -0
  463. package/src/util/references.ts +20 -0
  464. package/src/util/regexp.ts +32 -0
  465. package/src/util/resolutions.ts +399 -0
  466. package/src/util/storage.ts +92 -0
  467. package/src/util/strings.ts +62 -0
  468. package/src/util/useDebounce.ts +25 -0
  469. package/src/util/useStorageUploadController.tsx +243 -0
  470. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,128 @@
1
+ import { Locale } from "./locales";
2
+ import { DataSource } from "./datasource";
3
+ import { StorageSource } from "./storage";
4
+ import { NavigationController } from "./navigation";
5
+ import { SideEntityController } from "./side_entity_controller";
6
+ import { AuthController } from "./auth";
7
+ import { EntityLinkBuilder } from "./entity_link_builder";
8
+ import { User } from "./user";
9
+ import { SnackbarController } from "../hooks";
10
+ import { UserConfigurationPersistence } from "./local_config_persistence";
11
+ import { SideDialogsController } from "./side_dialogs_controller";
12
+ import { FireCMSPlugin } from "./plugins";
13
+ import { CMSAnalyticsEvent } from "./analytics";
14
+ import { PropertyConfig } from "./property_config";
15
+ import { EntityCustomView } from "./collections";
16
+ import { DialogsController } from "./dialogs_controller";
17
+
18
+ /**
19
+ * Context that includes the internal controllers and contexts used by the app.
20
+ * Some controllers and context included in this context can be accessed
21
+ * directly from their respective hooks.
22
+ * @group Hooks and utilities
23
+ * @see useFireCMSContext
24
+ */
25
+ export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
26
+
27
+ /**
28
+ * Connector to your database, e.g. your Firestore database
29
+ */
30
+ dataSource: DataSource;
31
+
32
+ /**
33
+ * Used storage implementation
34
+ */
35
+ storageSource: StorageSource;
36
+
37
+ /**
38
+ * Context that includes the resolved navigation and utility methods and
39
+ * attributes.
40
+ * @see useNavigation
41
+ */
42
+ navigation: NavigationController;
43
+
44
+ /**
45
+ * Controller to open the side dialog displaying entity forms
46
+ * @see useSideEntityController
47
+ */
48
+ sideEntityController: SideEntityController;
49
+
50
+ /**
51
+ * Controller used to open side dialogs
52
+ * This is the controller used internally by side entity dialogs
53
+ * or reference dialogs.
54
+ */
55
+ sideDialogsController: SideDialogsController;
56
+
57
+ /**
58
+ * Controller used to open regular dialogs
59
+ */
60
+ dialogsController: DialogsController;
61
+
62
+ /**
63
+ * Used auth controller
64
+ */
65
+ authController: AuthControllerType;
66
+
67
+ /**
68
+ * Builder for generating utility links for entities
69
+ */
70
+ entityLinkBuilder?: EntityLinkBuilder;
71
+
72
+ /**
73
+ * Use this controller to display snackbars
74
+ */
75
+ snackbarController: SnackbarController;
76
+
77
+ /**
78
+ * Use this controller to access data stored in the browser for the user
79
+ */
80
+ userConfigPersistence?: UserConfigurationPersistence;
81
+
82
+ /**
83
+ * Use plugins to modify the behaviour of the CMS.
84
+ * Currently, in ALPHA, and likely subject to change.
85
+ */
86
+ plugins?: FireCMSPlugin[];
87
+
88
+ /**
89
+ * Callback used to get analytics events from the CMS
90
+ */
91
+ onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
92
+
93
+ /**
94
+ * Record of custom form fields to be used in the CMS.
95
+ * You can use the key to reference the custom field in
96
+ * the `propertyConfig` prop of a property in a collection.
97
+ */
98
+ propertyConfigs: Record<string, PropertyConfig>;
99
+
100
+ /**
101
+ * List of additional custom views for entities.
102
+ * You can use the key to reference the custom view in
103
+ * the `entityViews` prop of a collection.
104
+ *
105
+ * You can also define an entity view from the UI.
106
+ */
107
+ entityViews?: EntityCustomView[];
108
+
109
+ /**
110
+ * Format of the dates in the CMS.
111
+ * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
112
+ */
113
+ dateTimeFormat?: string;
114
+
115
+ /**
116
+ * Locale of the CMS, currently only affecting dates
117
+ */
118
+ locale?: Locale;
119
+
120
+ components?: {
121
+
122
+ /**
123
+ * Component to render when a reference is missing
124
+ */
125
+ missingReference?: React.ComponentType<{ path: string }>;
126
+
127
+ }
128
+ };
@@ -0,0 +1,26 @@
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 "./local_config_persistence";
21
+ export * from "./plugins";
22
+ export * from "./analytics";
23
+ export * from "./firecms";
24
+ export * from "./appcheck";
25
+ export * from "./export_import";
26
+ export * from "./modify_collections";
@@ -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,214 @@
1
+ import { EntityCollection } from "./collections";
2
+ import { EntityReference } from "./entities";
3
+
4
+ /**
5
+ * Controller that includes the resolved navigation and utility methods and
6
+ * attributes.
7
+ * @group Models
8
+ */
9
+ export type NavigationController = {
10
+
11
+ /**
12
+ * List of the mapped collections in the CMS.
13
+ * Each entry relates to a collection in the root database.
14
+ * Each of the navigation entries in this field
15
+ * generates an entry in the main menu.
16
+ */
17
+ collections: EntityCollection[];
18
+
19
+ /**
20
+ * Custom additional views created by the developer, added to the main
21
+ * navigation
22
+ */
23
+ views: CMSView[];
24
+
25
+ /**
26
+ * Configuration for the views that should be displayed at the top
27
+ * level of the navigation (e.g. in the home page or the navigation
28
+ * drawer)
29
+ */
30
+ topLevelNavigation?: TopNavigationResult;
31
+
32
+ /**
33
+ * Is the navigation loading (the configuration persistence has not
34
+ * loaded yet, or a specified navigation builder has not completed)
35
+ */
36
+ loading: boolean;
37
+
38
+ /**
39
+ * Was there an error while loading the navigation data
40
+ */
41
+ navigationLoadingError?: any;
42
+
43
+ /**
44
+ * Is the registry ready to be used
45
+ */
46
+ initialised: boolean;
47
+
48
+ /**
49
+ * Get the collection configuration for a given path.
50
+ * The collection is resolved from the given path or alias.
51
+ */
52
+ getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string,
53
+ entityId?: string,
54
+ includeUserOverride?: boolean) => EC | undefined;
55
+ /**
56
+ * Get the collection configuration from its parent path segments.
57
+ */
58
+ getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
59
+
60
+ /**
61
+ * Get the collection configuration from its parent path segments.
62
+ */
63
+ getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
64
+
65
+ /**
66
+ * Default path under the navigation routes of the CMS will be created
67
+ */
68
+ basePath: string;
69
+
70
+ /**
71
+ * Default path under the collection routes of the CMS will be created
72
+ */
73
+ baseCollectionPath: string;
74
+
75
+ /**
76
+ * Convert a URL path to a collection or entity path
77
+ * `/c/products` => `products`
78
+ * `/my_cms/c/products/B34SAP8Z` => `products/B34SAP8Z`
79
+ * `/my_cms/my_view` => `my_view`
80
+ * @param cmsPath
81
+ */
82
+ urlPathToDataPath: (cmsPath: string) => string;
83
+
84
+ /**
85
+ * Convert a collection or entity path to a URL path
86
+ * @param path
87
+ */
88
+ buildCMSUrlPath: (path: string) => string;
89
+
90
+ buildUrlEditCollectionPath: (props: {
91
+ path: string
92
+ }) => string;
93
+
94
+ /**
95
+ * Base url path for the home screen
96
+ */
97
+ homeUrl: string;
98
+
99
+ /**
100
+ * Check if a url path belongs to a collection
101
+ * @param path
102
+ */
103
+ isUrlCollectionPath: (urlPath: string) => boolean;
104
+
105
+ /**
106
+ * Build a URL collection path from a data path
107
+ * `products` => `/c/products`
108
+ * `products/B34SAP8Z` => `/c/products/B34SAP8Z`
109
+ * @param path
110
+ */
111
+ buildUrlCollectionPath: (path: string) => string;
112
+
113
+ /**
114
+ * Turn a path with aliases into a resolved path
115
+ * @param pathWithAliases
116
+ */
117
+ resolveAliasesFrom: (pathWithAliases: string) => string;
118
+
119
+ /**
120
+ * Location used as the base for routes.
121
+ * This is the location that will be used underneath, when the url changes while
122
+ * opening a side dialog
123
+ */
124
+ baseLocation: 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
+ */
196
+ group?: string;
197
+
198
+ }
199
+
200
+ export interface TopNavigationEntry {
201
+ url: string;
202
+ name: string;
203
+ path: string;
204
+ type: "collection" | "view";
205
+ collection?: EntityCollection;
206
+ view: CMSView;
207
+ description?: string;
208
+ group?: string;
209
+ }
210
+
211
+ export type TopNavigationResult = {
212
+ navigationEntries: TopNavigationEntry[],
213
+ groups: string[]
214
+ };
@@ -0,0 +1,76 @@
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 segments of the collection e.g. ['products', 'locales']
46
+ */
47
+ pathSegments: string[];
48
+
49
+ /**
50
+ * Logged in user
51
+ */
52
+ user: UserType | null;
53
+
54
+ /**
55
+ * Collection these permissions apply to
56
+ */
57
+ collection: EC;
58
+
59
+ /**
60
+ * Auth controller
61
+ */
62
+ authController: AuthController<UserType>;
63
+ }
64
+
65
+ /**
66
+ * Builder used to assign permissions to entities,
67
+ * based on the logged user or collection.
68
+ * @group Models
69
+ */
70
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> =
71
+ (({
72
+ pathSegments,
73
+ user,
74
+ collection,
75
+ authController
76
+ }: PermissionsBuilderProps<EC, UserType, M>) => Permissions);