@firecms/core 3.0.0-alpha.7 → 3.0.0-alpha.70

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 (460) 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/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
  6. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
  7. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
  8. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  9. package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
  10. package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
  11. package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
  12. package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
  13. package/dist/components/EntityCollectionTable/index.d.ts +4 -0
  14. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  15. package/dist/components/EntityCollectionTable/internal/DeleteEntityDialog.d.ts +12 -0
  16. package/dist/components/EntityCollectionTable/internal/EntityCollectionRowActions.d.ts +35 -0
  17. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  19. package/dist/components/EntityCollectionTable/internal/PropertyTableCell.d.ts +18 -0
  20. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  21. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  22. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  23. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  24. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  25. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  26. package/dist/components/EntityCollectionTable/types.d.ts +39 -0
  27. package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
  28. package/dist/components/EntityCollectionTable/useEntityCollectionTableController.d.ts +21 -0
  29. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
  30. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  31. package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
  32. package/dist/components/EntityPreview.d.ts +11 -0
  33. package/dist/components/ErrorBoundary.d.ts +11 -0
  34. package/dist/components/ErrorTooltip.d.ts +2 -0
  35. package/dist/components/ErrorView.d.ts +19 -0
  36. package/dist/components/FieldConfigBadge.d.ts +4 -0
  37. package/dist/components/FireCMSAppBar.d.ts +26 -0
  38. package/dist/components/FireCMSLogo.d.ts +7 -0
  39. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  40. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  41. package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
  42. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  43. package/dist/components/HomePage/index.d.ts +3 -0
  44. package/dist/components/LabelWithIcon.d.ts +14 -0
  45. package/dist/components/NotFoundPage.d.ts +1 -0
  46. package/dist/components/ReferenceSelectionInner.d.ts +58 -0
  47. package/dist/components/ReferenceWidget.d.ts +28 -0
  48. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  49. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  50. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  51. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  52. package/dist/components/VirtualTable/VirtualTableProps.d.ts +215 -0
  53. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  54. package/dist/components/VirtualTable/common.d.ts +2 -0
  55. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  56. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  57. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  58. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  59. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  60. package/dist/components/VirtualTable/index.d.ts +2 -0
  61. package/dist/components/VirtualTable/types.d.ts +34 -0
  62. package/dist/components/index.d.ts +20 -0
  63. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  64. package/dist/contexts/DataSourceContext.d.ts +3 -0
  65. package/dist/contexts/DialogsProvider.d.ts +4 -0
  66. package/dist/contexts/ModeController.d.ts +4 -0
  67. package/dist/contexts/NavigationContext.d.ts +3 -0
  68. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  69. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  70. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  71. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  72. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  73. package/dist/contexts/index.d.ts +3 -0
  74. package/dist/core/Drawer.d.ts +23 -0
  75. package/dist/core/EntitySidePanel.d.ts +10 -0
  76. package/dist/core/FireCMS.d.ts +14 -0
  77. package/dist/core/NavigationRoutes.d.ts +21 -0
  78. package/dist/core/Scaffold.d.ts +52 -0
  79. package/dist/core/SideDialogs.d.ts +23 -0
  80. package/dist/core/field_configs.d.ts +7 -0
  81. package/dist/core/index.d.ts +10 -0
  82. package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
  83. package/dist/core/useBuildModeController.d.ts +6 -0
  84. package/dist/form/EntityForm.d.ts +75 -0
  85. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  86. package/dist/form/components/CustomIdField.d.ts +9 -0
  87. package/dist/form/components/ErrorFocus.d.ts +4 -0
  88. package/dist/form/components/FieldHelperText.d.ts +12 -0
  89. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  90. package/dist/form/components/StorageItemPreview.d.ts +13 -0
  91. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  92. package/dist/form/components/SubmitListener.d.ts +1 -0
  93. package/dist/form/components/SwitchControl.d.ts +8 -0
  94. package/dist/form/components/index.d.ts +3 -0
  95. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  96. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  97. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  98. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  99. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  100. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  101. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  102. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  103. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  104. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  105. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  106. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  107. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
  108. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  109. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  110. package/dist/form/index.d.ts +20 -0
  111. package/dist/form/useClearRestoreValue.d.ts +13 -0
  112. package/dist/form/validation.d.ts +25 -0
  113. package/dist/hooks/data/delete.d.ts +37 -0
  114. package/dist/hooks/data/save.d.ts +42 -0
  115. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  116. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  117. package/dist/hooks/data/useDataSource.d.ts +6 -0
  118. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  119. package/dist/hooks/index.d.ts +19 -0
  120. package/dist/hooks/useAuthController.d.ts +11 -0
  121. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  122. package/dist/hooks/useClipboard.d.ts +57 -0
  123. package/dist/hooks/useDialogsController.d.ts +11 -0
  124. package/dist/hooks/useFireCMSContext.d.ts +12 -0
  125. package/dist/hooks/useLargeLayout.d.ts +1 -0
  126. package/dist/hooks/useModeController.d.ts +20 -0
  127. package/dist/hooks/useNavigationController.d.ts +9 -0
  128. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  129. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  130. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  131. package/dist/hooks/useSideEntityController.d.ts +12 -0
  132. package/dist/hooks/useSnackbarController.d.ts +41 -0
  133. package/dist/hooks/useStorageSource.d.ts +6 -0
  134. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  135. package/dist/index.d.ts +8 -0
  136. package/dist/index.es.js +12415 -25618
  137. package/dist/index.es.js.map +1 -1
  138. package/dist/index.umd.js +5 -1027
  139. package/dist/index.umd.js.map +1 -1
  140. package/dist/internal/EntityView.d.ts +22 -0
  141. package/dist/internal/common.d.ts +3 -0
  142. package/dist/internal/useBuildDataSource.d.ts +22 -0
  143. package/dist/internal/useBuildNavigationController.d.ts +14 -0
  144. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  145. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  146. package/dist/internal/useLocaleConfig.d.ts +1 -0
  147. package/dist/internal/useRestoreScroll.d.ts +6 -0
  148. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  149. package/dist/preview/PropertyPreview.d.ts +7 -0
  150. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  151. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  152. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  153. package/dist/preview/components/BooleanPreview.d.ts +7 -0
  154. package/dist/preview/components/DatePreview.d.ts +7 -0
  155. package/dist/preview/components/EmptyValue.d.ts +4 -0
  156. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  157. package/dist/preview/components/ImagePreview.d.ts +12 -0
  158. package/dist/preview/components/ReferencePreview.d.ts +22 -0
  159. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  160. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  161. package/dist/preview/index.d.ts +23 -0
  162. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  163. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  164. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  165. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  166. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  167. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  168. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  169. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  170. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  171. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  172. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  173. package/dist/preview/util.d.ts +7 -0
  174. package/dist/types/analytics.d.ts +1 -0
  175. package/dist/types/appcheck.d.ts +26 -0
  176. package/dist/types/auth.d.ts +40 -0
  177. package/dist/types/collections.d.ts +451 -0
  178. package/dist/types/datasource.d.ts +262 -0
  179. package/dist/types/dialogs_controller.d.ts +32 -0
  180. package/dist/types/entities.d.ts +57 -0
  181. package/dist/types/entity_actions.d.ts +35 -0
  182. package/dist/types/entity_callbacks.d.ts +171 -0
  183. package/dist/types/entity_link_builder.d.ts +7 -0
  184. package/dist/types/export_import.d.ts +21 -0
  185. package/dist/types/fields.d.ts +181 -0
  186. package/dist/types/firecms.d.ts +151 -0
  187. package/dist/types/firecms_context.d.ts +110 -0
  188. package/dist/types/index.d.ts +26 -0
  189. package/dist/types/local_config_persistence.d.ts +21 -0
  190. package/dist/types/locales.d.ts +4 -0
  191. package/dist/types/modify_collections.d.ts +5 -0
  192. package/dist/types/navigation.d.ts +178 -0
  193. package/dist/types/permissions.d.ts +63 -0
  194. package/dist/types/plugins.d.ts +179 -0
  195. package/dist/types/properties.d.ts +681 -0
  196. package/dist/types/property_config.d.ts +42 -0
  197. package/dist/types/resolved_entities.d.ts +98 -0
  198. package/dist/types/side_dialogs_controller.d.ts +57 -0
  199. package/dist/types/side_entity_controller.d.ts +83 -0
  200. package/dist/types/storage.d.ts +82 -0
  201. package/dist/types/user.d.ts +36 -0
  202. package/dist/util/arrays.d.ts +1 -0
  203. package/dist/util/builders.d.ts +64 -0
  204. package/dist/util/chip_utils.d.ts +3 -0
  205. package/dist/util/collections.d.ts +3 -0
  206. package/dist/util/common.d.ts +2 -0
  207. package/dist/util/dates.d.ts +1 -0
  208. package/dist/util/entities.d.ts +28 -0
  209. package/dist/util/enums.d.ts +7 -0
  210. package/dist/util/flatten_object.d.ts +3 -0
  211. package/dist/util/hash.d.ts +1 -0
  212. package/dist/util/icons.d.ts +4 -0
  213. package/dist/util/index.d.ts +20 -0
  214. package/dist/util/join_collections.d.ts +9 -0
  215. package/dist/util/make_properties_editable.d.ts +3 -0
  216. package/dist/util/navigation_from_path.d.ts +24 -0
  217. package/dist/util/navigation_utils.d.ts +20 -0
  218. package/dist/util/objects.d.ts +10 -0
  219. package/dist/util/os.d.ts +2 -0
  220. package/dist/util/parent_references_from_path.d.ts +6 -0
  221. package/dist/util/paths.d.ts +14 -0
  222. package/dist/util/permissions.d.ts +5 -0
  223. package/dist/util/plurals.d.ts +18 -0
  224. package/dist/util/property_utils.d.ts +23 -0
  225. package/dist/util/references.d.ts +2 -0
  226. package/dist/util/regexp.d.ts +7 -0
  227. package/dist/util/resolutions.d.ts +64 -0
  228. package/dist/util/storage.d.ts +3 -0
  229. package/dist/util/strings.d.ts +6 -0
  230. package/dist/util/useDebounce.d.ts +1 -0
  231. package/dist/util/useStorageUploadController.d.ts +36 -0
  232. package/dist/util/useTraceUpdate.d.ts +1 -0
  233. package/package.json +114 -142
  234. package/src/components/ArrayContainer.tsx +369 -0
  235. package/src/components/CircularProgressCenter.tsx +26 -0
  236. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  237. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +520 -0
  238. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
  239. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
  240. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  241. package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
  242. package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
  243. package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
  244. package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
  245. package/src/components/EntityCollectionTable/index.tsx +16 -0
  246. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
  247. package/src/components/EntityCollectionTable/internal/DeleteEntityDialog.tsx +207 -0
  248. package/src/components/EntityCollectionTable/internal/EntityCollectionRowActions.tsx +174 -0
  249. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +264 -0
  250. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  251. package/src/components/EntityCollectionTable/internal/PropertyTableCell.tsx +460 -0
  252. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  253. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
  254. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  255. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
  256. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  257. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  258. package/src/components/EntityCollectionTable/types.tsx +44 -0
  259. package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
  260. package/src/components/EntityCollectionTable/useEntityCollectionTableController.tsx +213 -0
  261. package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
  262. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
  263. package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
  264. package/src/components/EntityPreview.tsx +83 -0
  265. package/src/components/ErrorBoundary.tsx +40 -0
  266. package/src/components/ErrorTooltip.tsx +11 -0
  267. package/src/components/ErrorView.tsx +52 -0
  268. package/src/components/FieldConfigBadge.tsx +17 -0
  269. package/src/components/FireCMSAppBar.tsx +157 -0
  270. package/src/components/FireCMSLogo.tsx +73 -0
  271. package/src/components/HomePage/DefaultHomePage.tsx +209 -0
  272. package/src/components/HomePage/FavouritesView.tsx +64 -0
  273. package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
  274. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  275. package/src/components/HomePage/index.tsx +3 -0
  276. package/src/components/LabelWithIcon.tsx +33 -0
  277. package/src/components/NotFoundPage.tsx +25 -0
  278. package/src/components/ReferenceSelectionInner.tsx +364 -0
  279. package/src/components/ReferenceWidget.tsx +145 -0
  280. package/src/components/VirtualTable/VirtualTable.tsx +402 -0
  281. package/src/components/VirtualTable/VirtualTableCell.tsx +36 -0
  282. package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
  283. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  284. package/src/components/VirtualTable/VirtualTableProps.tsx +270 -0
  285. package/src/components/VirtualTable/VirtualTableRow.tsx +54 -0
  286. package/src/components/VirtualTable/common.tsx +18 -0
  287. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  288. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  289. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  290. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  291. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  292. package/src/components/VirtualTable/index.tsx +2 -0
  293. package/src/components/VirtualTable/types.tsx +44 -0
  294. package/src/components/index.tsx +30 -0
  295. package/src/contexts/AuthControllerContext.tsx +4 -0
  296. package/src/contexts/DataSourceContext.tsx +4 -0
  297. package/src/contexts/DialogsProvider.tsx +52 -0
  298. package/src/contexts/ModeController.tsx +13 -0
  299. package/src/contexts/NavigationContext.tsx +4 -0
  300. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  301. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  302. package/src/contexts/SnackbarProvider.tsx +12 -0
  303. package/src/contexts/StorageSourceContext.tsx +4 -0
  304. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  305. package/src/contexts/index.ts +3 -0
  306. package/src/core/Drawer.tsx +161 -0
  307. package/src/core/EntitySidePanel.tsx +90 -0
  308. package/src/core/FireCMS.tsx +184 -0
  309. package/src/core/NavigationRoutes.tsx +118 -0
  310. package/src/core/Scaffold.tsx +278 -0
  311. package/src/core/SideDialogs.tsx +156 -0
  312. package/src/core/field_configs.tsx +400 -0
  313. package/src/core/index.tsx +14 -0
  314. package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
  315. package/src/core/useBuildModeController.tsx +60 -0
  316. package/src/form/EntityForm.tsx +647 -0
  317. package/src/form/PropertyFieldBinding.tsx +311 -0
  318. package/src/form/components/CustomIdField.tsx +124 -0
  319. package/src/form/components/ErrorFocus.tsx +51 -0
  320. package/src/form/components/FieldHelperText.tsx +58 -0
  321. package/src/form/components/FormikArrayContainer.tsx +44 -0
  322. package/src/form/components/StorageItemPreview.tsx +66 -0
  323. package/src/form/components/StorageUploadProgress.tsx +104 -0
  324. package/src/form/components/SubmitListener.tsx +32 -0
  325. package/src/form/components/SwitchControl.tsx +39 -0
  326. package/src/form/components/index.tsx +3 -0
  327. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
  328. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
  329. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  330. package/src/form/field_bindings/DateTimeFieldBinding.tsx +66 -0
  331. package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
  332. package/src/form/field_bindings/MapFieldBinding.tsx +142 -0
  333. package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
  334. package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
  335. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
  336. package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
  337. package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
  338. package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
  339. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
  340. package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
  341. package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
  342. package/src/form/index.tsx +42 -0
  343. package/src/form/useClearRestoreValue.tsx +35 -0
  344. package/src/form/validation.ts +409 -0
  345. package/src/hooks/data/delete.ts +101 -0
  346. package/src/hooks/data/save.ts +165 -0
  347. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  348. package/src/hooks/data/useDataOrder.ts +26 -0
  349. package/src/hooks/data/useDataSource.tsx +9 -0
  350. package/src/hooks/data/useEntityFetch.tsx +129 -0
  351. package/src/hooks/index.tsx +23 -0
  352. package/src/hooks/useAuthController.tsx +14 -0
  353. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  354. package/src/hooks/useClipboard.tsx +158 -0
  355. package/src/hooks/useDialogsController.tsx +14 -0
  356. package/src/hooks/useFireCMSContext.tsx +50 -0
  357. package/src/hooks/useLargeLayout.tsx +34 -0
  358. package/src/hooks/useModeController.tsx +24 -0
  359. package/src/hooks/useNavigationController.tsx +12 -0
  360. package/src/hooks/useReferenceDialog.tsx +56 -0
  361. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  362. package/src/hooks/useSideDialogsController.tsx +21 -0
  363. package/src/hooks/useSideEntityController.tsx +15 -0
  364. package/src/hooks/useSnackbarController.tsx +76 -0
  365. package/src/hooks/useStorageSource.tsx +9 -0
  366. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  367. package/src/index.ts +8 -0
  368. package/src/internal/EntityView.tsx +576 -0
  369. package/src/internal/common.tsx +5 -0
  370. package/src/internal/useBuildDataSource.ts +360 -0
  371. package/src/internal/useBuildNavigationController.tsx +371 -0
  372. package/src/internal/useBuildSideDialogsController.tsx +125 -0
  373. package/src/internal/useBuildSideEntityController.tsx +160 -0
  374. package/src/internal/useLocaleConfig.tsx +18 -0
  375. package/src/internal/useRestoreScroll.tsx +48 -0
  376. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  377. package/src/preview/PropertyPreview.tsx +222 -0
  378. package/src/preview/PropertyPreviewProps.tsx +59 -0
  379. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  380. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  381. package/src/preview/components/BooleanPreview.tsx +11 -0
  382. package/src/preview/components/DatePreview.tsx +27 -0
  383. package/src/preview/components/EmptyValue.tsx +10 -0
  384. package/src/preview/components/EnumValuesChip.tsx +38 -0
  385. package/src/preview/components/ImagePreview.tsx +106 -0
  386. package/src/preview/components/ReferencePreview.tsx +249 -0
  387. package/src/preview/components/StorageThumbnail.tsx +84 -0
  388. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  389. package/src/preview/index.ts +27 -0
  390. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  391. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  392. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  393. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  394. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  395. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  396. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  397. package/src/preview/property_previews/MapPropertyPreview.tsx +144 -0
  398. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  399. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  400. package/src/preview/property_previews/StringPropertyPreview.tsx +60 -0
  401. package/src/preview/util.ts +31 -0
  402. package/src/types/analytics.ts +34 -0
  403. package/src/types/appcheck.ts +29 -0
  404. package/src/types/auth.tsx +49 -0
  405. package/src/types/collections.ts +530 -0
  406. package/src/types/datasource.ts +389 -0
  407. package/src/types/dialogs_controller.tsx +33 -0
  408. package/src/types/entities.ts +76 -0
  409. package/src/types/entity_actions.tsx +39 -0
  410. package/src/types/entity_callbacks.ts +209 -0
  411. package/src/types/entity_link_builder.ts +8 -0
  412. package/src/types/export_import.ts +26 -0
  413. package/src/types/fields.tsx +220 -0
  414. package/src/types/firecms.tsx +175 -0
  415. package/src/types/firecms_context.tsx +128 -0
  416. package/src/types/index.ts +26 -0
  417. package/src/types/local_config_persistence.tsx +23 -0
  418. package/src/types/locales.ts +81 -0
  419. package/src/types/modify_collections.tsx +6 -0
  420. package/src/types/navigation.ts +214 -0
  421. package/src/types/permissions.ts +76 -0
  422. package/src/types/plugins.tsx +217 -0
  423. package/src/types/properties.ts +851 -0
  424. package/src/types/property_config.tsx +72 -0
  425. package/src/types/resolved_entities.ts +148 -0
  426. package/src/types/side_dialogs_controller.tsx +68 -0
  427. package/src/types/side_entity_controller.tsx +96 -0
  428. package/src/types/storage.ts +96 -0
  429. package/src/types/user.ts +37 -0
  430. package/src/util/arrays.ts +3 -0
  431. package/src/util/builders.ts +139 -0
  432. package/src/util/chip_utils.ts +13 -0
  433. package/src/util/collections.ts +50 -0
  434. package/src/util/common.tsx +2 -0
  435. package/src/util/dates.ts +1 -0
  436. package/src/util/entities.ts +196 -0
  437. package/src/util/enums.ts +57 -0
  438. package/src/util/flatten_object.ts +45 -0
  439. package/src/util/hash.ts +11 -0
  440. package/src/util/icons.tsx +45 -0
  441. package/src/util/index.ts +20 -0
  442. package/src/util/join_collections.ts +172 -0
  443. package/src/util/make_properties_editable.ts +29 -0
  444. package/src/util/navigation_from_path.ts +107 -0
  445. package/src/util/navigation_utils.ts +111 -0
  446. package/src/util/objects.ts +168 -0
  447. package/src/util/os.ts +13 -0
  448. package/src/util/parent_references_from_path.ts +56 -0
  449. package/src/util/paths.ts +27 -0
  450. package/src/util/permissions.ts +80 -0
  451. package/src/util/plurals.ts +190 -0
  452. package/src/util/property_utils.tsx +130 -0
  453. package/src/util/references.ts +20 -0
  454. package/src/util/regexp.ts +32 -0
  455. package/src/util/resolutions.ts +399 -0
  456. package/src/util/storage.ts +92 -0
  457. package/src/util/strings.ts +62 -0
  458. package/src/util/useDebounce.ts +25 -0
  459. package/src/util/useStorageUploadController.tsx +243 -0
  460. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,181 @@
1
+ import { EntityValues } from "./entities";
2
+ import { CMSType, PropertyOrBuilder } from "./properties";
3
+ import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
4
+ /**
5
+ * When building a custom field you need to create a React component that takes
6
+ * this interface as props.
7
+ *
8
+ * @group Form custom fields
9
+ */
10
+ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extends Record<string, any> = any> {
11
+ /**
12
+ * Key of the property
13
+ * E.g. "user.name" for a property with path "user.name"
14
+ */
15
+ propertyKey: string;
16
+ /**
17
+ * Current value of this field
18
+ */
19
+ value: T;
20
+ /**
21
+ * Initial value of this field
22
+ */
23
+ initialValue: T | undefined;
24
+ /**
25
+ * Set value of field directly
26
+ */
27
+ setValue: (value: T | null, shouldValidate?: boolean) => void;
28
+ /**
29
+ * Set value of a different field directly
30
+ * @param propertyKey
31
+ * @param value
32
+ * @param shouldValidate
33
+ */
34
+ setFieldValue: (propertyKey: string, value: CMSType | null, shouldValidate?: boolean) => void;
35
+ /**
36
+ * Is the form currently submitting
37
+ */
38
+ isSubmitting: boolean;
39
+ /**
40
+ * Should this field show the error indicator.
41
+ * Note that there might be an error (like an empty field that should be
42
+ * filled) but we don't want to show the error until the user has tried
43
+ * saving.
44
+ */
45
+ showError: boolean;
46
+ /**
47
+ * Is there an error in this field. The error field has the same shape as
48
+ * the field, replacing values with a string containing the error.
49
+ * It takes the value `null` if there is no error
50
+ */
51
+ error: any | null;
52
+ /**
53
+ * Has this field been touched
54
+ */
55
+ touched: boolean;
56
+ /**
57
+ * Property related to this field
58
+ */
59
+ property: ResolvedProperty<T>;
60
+ /**
61
+ * Should this field include a description
62
+ */
63
+ includeDescription: boolean;
64
+ /**
65
+ * Flag to indicate that the underlying value has been updated in the
66
+ * datasource
67
+ */
68
+ underlyingValueHasChanged: boolean;
69
+ /**
70
+ * Is this field part of an array
71
+ */
72
+ partOfArray: boolean;
73
+ /**
74
+ * Is this field part of a block (oneOf array)
75
+ */
76
+ partOfBlock: boolean;
77
+ /**
78
+ * Is this field being rendered in the entity table popup
79
+ */
80
+ tableMode: boolean;
81
+ /**
82
+ * Should this field autofocus on mount
83
+ */
84
+ autoFocus: boolean;
85
+ /**
86
+ * Additional properties set by the developer
87
+ */
88
+ customProps: CustomProps;
89
+ /**
90
+ * Additional values related to the state of the form or the entity
91
+ */
92
+ context: FormContext<M>;
93
+ /**
94
+ * Flag to indicate if this field should be disabled
95
+ */
96
+ disabled: boolean;
97
+ }
98
+ /**
99
+ * Context passed to custom fields
100
+ * @group Form custom fields
101
+ */
102
+ export interface FormContext<M extends Record<string, any> = any> {
103
+ /**
104
+ * Collection of the entity being modified
105
+ */
106
+ collection: ResolvedEntityCollection<M>;
107
+ /**
108
+ * Current values of the entity
109
+ */
110
+ values: EntityValues<M>;
111
+ /**
112
+ * Entity id, it can be null if it's a new entity
113
+ */
114
+ entityId?: string;
115
+ /**
116
+ * Path this entity is located at
117
+ */
118
+ path: string;
119
+ /**
120
+ * Update the value of a field
121
+ * @param key
122
+ * @param value
123
+ * @param shouldValidate
124
+ */
125
+ setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
126
+ /**
127
+ * Save the entity
128
+ */
129
+ save: (values: EntityValues<M>) => void;
130
+ }
131
+ /**
132
+ * In case you need to render a field bound to a Property inside your
133
+ * custom field you can use {@link PropertyFieldBinding} with these props.
134
+ * @group Form custom fields
135
+ */
136
+ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<string, any> = any> {
137
+ /**
138
+ * The key/path of the property, such as `age`. You can use nested and array
139
+ * indexed such as `address.street` or `people[3]`
140
+ */
141
+ propertyKey: string;
142
+ /**
143
+ * The CMS property you are binding this field to
144
+ */
145
+ property: PropertyOrBuilder<T> | ResolvedProperty<T>;
146
+ /**
147
+ * The context where this field is being rendered. You get a context as a
148
+ * prop when creating a custom field.
149
+ */
150
+ context: FormContext<M>;
151
+ /**
152
+ * Should the description be included in this field
153
+ */
154
+ includeDescription?: boolean;
155
+ /**
156
+ * Has the value of this property been updated in the database while this
157
+ * field is being edited
158
+ */
159
+ underlyingValueHasChanged?: boolean;
160
+ /**
161
+ * Is this field being rendered in a table
162
+ */
163
+ tableMode?: boolean;
164
+ /**
165
+ * Is this field part of an array
166
+ */
167
+ partOfArray?: boolean;
168
+ /**
169
+ * Is this field part of a block (oneOf array)
170
+ */
171
+ partOfBlock?: boolean;
172
+ /**
173
+ * Should the field take focus when rendered. When opening the popup view
174
+ * in table mode, it makes sense to put the focus on the only field rendered.
175
+ */
176
+ autoFocus?: boolean;
177
+ /**
178
+ * Should this field be disabled
179
+ */
180
+ disabled?: boolean;
181
+ }
@@ -0,0 +1,151 @@
1
+ import React from "react";
2
+ import { User } from "./user";
3
+ import { AuthController } from "./auth";
4
+ import { DataSourceDelegate } from "./datasource";
5
+ import { EntityCollection, EntityCustomView } from "./collections";
6
+ import { CMSView } from "./navigation";
7
+ import { FireCMSContext } from "./firecms_context";
8
+ import { PropertyConfig } from "./property_config";
9
+ import { Locale } from "./locales";
10
+ import { StorageSource } from "./storage";
11
+ import { EntityLinkBuilder } from "./entity_link_builder";
12
+ import { UserConfigurationPersistence } from "./local_config_persistence";
13
+ import { FireCMSPlugin } from "./plugins";
14
+ import { CMSAnalyticsEvent } from "./analytics";
15
+ /**
16
+ * Use this callback to build entity collections dynamically.
17
+ * You can use the user to decide which collections to show.
18
+ * You can also use the data source to fetch additional data to build the
19
+ * collections.
20
+ * Note: you can use any type of synchronous or asynchronous code here,
21
+ * including fetching data from external sources, like using the Firestore
22
+ * APIs directly, or a REST API.
23
+ * @group Models
24
+ */
25
+ export type EntityCollectionsBuilder<EC extends EntityCollection = EntityCollection> = (params: {
26
+ user: User | null;
27
+ authController: AuthController;
28
+ dataSource: DataSourceDelegate;
29
+ }) => EC[] | Promise<EC[]>;
30
+ /**
31
+ * Use this callback to build custom views dynamically.
32
+ * You can use the user to decide which views to show.
33
+ * You can also use the data source to fetch additional data to build the
34
+ * views. Note: you can use any type of synchronous or asynchronous code here,
35
+ * including fetching data from external sources, like using the Firestore
36
+ * APIs directly, or a REST API.
37
+ * @group Models
38
+ */
39
+ export type CMSViewsBuilder = (params: {
40
+ user: User | null;
41
+ authController: AuthController;
42
+ dataSource: DataSourceDelegate;
43
+ }) => CMSView[] | Promise<CMSView[]>;
44
+ /**
45
+ * @group Models
46
+ */
47
+ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
48
+ /**
49
+ * Use this function to return the components you want to render under
50
+ * FireCMS
51
+ * @param props
52
+ */
53
+ children: (props: {
54
+ /**
55
+ * Context of the app
56
+ */
57
+ context: FireCMSContext;
58
+ /**
59
+ * Is one of the main processes, auth and navigation resolving, currently
60
+ * loading. If you are building your custom implementation, you probably
61
+ * want to show a loading indicator if this flag is `true`
62
+ */
63
+ loading: boolean;
64
+ }) => React.ReactNode;
65
+ /**
66
+ * List of the mapped collections in the CMS.
67
+ * Each entry relates to a collection in the root database.
68
+ * Each of the navigation entries in this field
69
+ * generates an entry in the main menu.
70
+ */
71
+ collections?: EC[] | EntityCollectionsBuilder<EC>;
72
+ /**
73
+ * Custom additional views created by the developer, added to the main
74
+ * navigation
75
+ */
76
+ views?: CMSView[] | CMSViewsBuilder;
77
+ /**
78
+ * Record of custom form fields to be used in the CMS.
79
+ * You can use the key to reference the custom field in
80
+ * the `propertyConfig` prop of a property in a collection.
81
+ */
82
+ propertyConfigs?: Record<string, PropertyConfig>;
83
+ /**
84
+ * List of additional custom views for entities.
85
+ * You can use the key to reference the custom view in
86
+ * the `entityViews` prop of a collection.
87
+ *
88
+ * You can also define an entity view from the UI.
89
+ */
90
+ entityViews?: EntityCustomView[];
91
+ /**
92
+ * Format of the dates in the CMS.
93
+ * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
94
+ */
95
+ dateTimeFormat?: string;
96
+ /**
97
+ * Locale of the CMS, currently only affecting dates
98
+ */
99
+ locale?: Locale;
100
+ /**
101
+ * Connector to your database
102
+ */
103
+ dataSourceDelegate: DataSourceDelegate;
104
+ /**
105
+ * Connector to your file upload/fetch implementation
106
+ */
107
+ storageSource: StorageSource;
108
+ /**
109
+ * Delegate for implementing your auth operations.
110
+ */
111
+ authController: AuthController<UserType>;
112
+ /**
113
+ * Path under the navigation routes of the CMS will be created. Defaults to `/`.
114
+ * Internally FireCMS uses `react-router` to create the routes, the base path is attached to the
115
+ * `BrowserRouter` component. If you are using FireCMS in a subpath of your website, you can use
116
+ * this prop to specify the base path.
117
+ */
118
+ basePath?: string;
119
+ /**
120
+ * Path under the collection routes of the CMS will be created.
121
+ * Defaults to `/c`.
122
+ */
123
+ baseCollectionPath?: string;
124
+ /**
125
+ * Use this controller to access the configuration that is stored locally,
126
+ * and not defined in code
127
+ */
128
+ userConfigPersistence?: UserConfigurationPersistence;
129
+ /**
130
+ * Use plugins to modify the behaviour of the CMS.
131
+ * Currently, in ALPHA, and likely subject to change.
132
+ */
133
+ plugins?: FireCMSPlugin<any, any, any>[];
134
+ /**
135
+ * Callback used to get analytics events from the CMS
136
+ */
137
+ onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
138
+ /**
139
+ * Optional link builder you can add to generate a button in your entity forms.
140
+ * The function must return a URL that gets opened when the button is clicked
141
+ */
142
+ entityLinkBuilder?: EntityLinkBuilder;
143
+ components?: {
144
+ /**
145
+ * Component to render when a reference is missing
146
+ */
147
+ missingReference?: React.ComponentType<{
148
+ path: string;
149
+ }>;
150
+ };
151
+ };
@@ -0,0 +1,110 @@
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
+ * Context that includes the internal controllers and contexts used by the app.
19
+ * Some controllers and context included in this context can be accessed
20
+ * directly from their respective hooks.
21
+ * @group Hooks and utilities
22
+ * @see useFireCMSContext
23
+ */
24
+ export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
25
+ /**
26
+ * Connector to your database, e.g. your Firestore database
27
+ */
28
+ dataSource: DataSource;
29
+ /**
30
+ * Used storage implementation
31
+ */
32
+ storageSource: StorageSource;
33
+ /**
34
+ * Context that includes the resolved navigation and utility methods and
35
+ * attributes.
36
+ * @see useNavigation
37
+ */
38
+ navigation: NavigationController;
39
+ /**
40
+ * Controller to open the side dialog displaying entity forms
41
+ * @see useSideEntityController
42
+ */
43
+ sideEntityController: SideEntityController;
44
+ /**
45
+ * Controller used to open side dialogs
46
+ * This is the controller used internally by side entity dialogs
47
+ * or reference dialogs.
48
+ */
49
+ sideDialogsController: SideDialogsController;
50
+ /**
51
+ * Controller used to open regular dialogs
52
+ */
53
+ dialogsController: DialogsController;
54
+ /**
55
+ * Used auth controller
56
+ */
57
+ authController: AuthControllerType;
58
+ /**
59
+ * Builder for generating utility links for entities
60
+ */
61
+ entityLinkBuilder?: EntityLinkBuilder;
62
+ /**
63
+ * Use this controller to display snackbars
64
+ */
65
+ snackbarController: SnackbarController;
66
+ /**
67
+ * Use this controller to access data stored in the browser for the user
68
+ */
69
+ userConfigPersistence?: UserConfigurationPersistence;
70
+ /**
71
+ * Use plugins to modify the behaviour of the CMS.
72
+ * Currently, in ALPHA, and likely subject to change.
73
+ */
74
+ plugins?: FireCMSPlugin[];
75
+ /**
76
+ * Callback used to get analytics events from the CMS
77
+ */
78
+ onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
79
+ /**
80
+ * Record of custom form fields to be used in the CMS.
81
+ * You can use the key to reference the custom field in
82
+ * the `propertyConfig` prop of a property in a collection.
83
+ */
84
+ propertyConfigs: Record<string, PropertyConfig>;
85
+ /**
86
+ * List of additional custom views for entities.
87
+ * You can use the key to reference the custom view in
88
+ * the `entityViews` prop of a collection.
89
+ *
90
+ * You can also define an entity view from the UI.
91
+ */
92
+ entityViews?: EntityCustomView[];
93
+ /**
94
+ * Format of the dates in the CMS.
95
+ * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
96
+ */
97
+ dateTimeFormat?: string;
98
+ /**
99
+ * Locale of the CMS, currently only affecting dates
100
+ */
101
+ locale?: Locale;
102
+ components?: {
103
+ /**
104
+ * Component to render when a reference is missing
105
+ */
106
+ missingReference?: React.ComponentType<{
107
+ path: string;
108
+ }>;
109
+ };
110
+ };
@@ -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,21 @@
1
+ import { EntityCollection } from "./collections";
2
+ /**
3
+ * Use to resolve the collection properties for specific path, entity id or values.
4
+ * @group Models
5
+ */
6
+ export type PartialEntityCollection<M extends Record<string, any> = any> = Partial<EntityCollection<M>>;
7
+ /**
8
+ * This interface is in charge of defining the controller that persists
9
+ * modifications to a collection or collection, and retrieves them back from
10
+ * a data source, such as local storage or Firestore.
11
+ */
12
+ export interface UserConfigurationPersistence {
13
+ onCollectionModified: <M extends Record<string, any> = any>(path: string, partialCollection: PartialEntityCollection<M>) => void;
14
+ getCollectionConfig: <M extends Record<string, any> = any>(path: string) => PartialEntityCollection<M>;
15
+ recentlyVisitedPaths: string[];
16
+ setRecentlyVisitedPaths: (paths: string[]) => void;
17
+ favouritePaths: string[];
18
+ setFavouritePaths: (paths: string[]) => void;
19
+ collapsedGroups: string[];
20
+ setCollapsedGroups: (paths: string[]) => void;
21
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @group Models
3
+ */
4
+ export type Locale = "af" | "ar" | "arDZ" | "arMA" | "arSA" | "az" | "be" | "bg" | "bn" | "ca" | "cs" | "cy" | "da" | "de" | "el" | "enAU" | "enCA" | "enGB" | "enIN" | "enNZ" | "enUS" | "eo" | "es" | "et" | "eu" | "faIR" | "fi" | "fil" | "fr" | "frCA" | "frCH" | "gd" | "gl" | "gu" | "he" | "hi" | "hr" | "hu" | "hy" | "id" | "is" | "it" | "ja" | "ka" | "kk" | "kn" | "ko" | "lb" | "lt" | "lv" | "mk" | "ms" | "mt" | "nb" | "nl" | "nlBE" | "nn" | "pl" | "pt" | "ptBR" | "ro" | "ru" | "sk" | "sl" | "sr" | "srLatn" | "sv" | "ta" | "te" | "th" | "tr" | "ug" | "uk" | "uz" | "vi" | "zhCN" | "zhTW";
@@ -0,0 +1,5 @@
1
+ import { EntityCollection } from "./collections";
2
+ export type ModifyCollectionProps = {
3
+ collection: EntityCollection;
4
+ parentPaths: string[];
5
+ };
@@ -0,0 +1,178 @@
1
+ import { EntityCollection } from "./collections";
2
+ import { EntityReference } from "./entities";
3
+ /**
4
+ * Controller that includes the resolved navigation and utility methods and
5
+ * attributes.
6
+ * @group Models
7
+ */
8
+ export type NavigationController = {
9
+ /**
10
+ * List of the mapped collections in the CMS.
11
+ * Each entry relates to a collection in the root database.
12
+ * Each of the navigation entries in this field
13
+ * generates an entry in the main menu.
14
+ */
15
+ collections: EntityCollection[];
16
+ /**
17
+ * Custom additional views created by the developer, added to the main
18
+ * navigation
19
+ */
20
+ views: CMSView[];
21
+ /**
22
+ * Configuration for the views that should be displayed at the top
23
+ * level of the navigation (e.g. in the home page or the navigation
24
+ * drawer)
25
+ */
26
+ topLevelNavigation?: TopNavigationResult;
27
+ /**
28
+ * Is the navigation loading (the configuration persistence has not
29
+ * loaded yet, or a specified navigation builder has not completed)
30
+ */
31
+ loading: boolean;
32
+ /**
33
+ * Was there an error while loading the navigation data
34
+ */
35
+ navigationLoadingError?: any;
36
+ /**
37
+ * Is the registry ready to be used
38
+ */
39
+ initialised: boolean;
40
+ /**
41
+ * Get the collection configuration for a given path.
42
+ * The collection is resolved from the given path or alias.
43
+ */
44
+ getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string, entityId?: string, includeUserOverride?: boolean) => EC | undefined;
45
+ /**
46
+ * Get the collection configuration from its parent path segments.
47
+ */
48
+ getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
49
+ /**
50
+ * Get the collection configuration from its parent path segments.
51
+ */
52
+ getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
53
+ /**
54
+ * Default path under the navigation routes of the CMS will be created
55
+ */
56
+ basePath: string;
57
+ /**
58
+ * Default path under the collection routes of the CMS will be created
59
+ */
60
+ baseCollectionPath: string;
61
+ /**
62
+ * Convert a URL path to a collection or entity path
63
+ * `/c/products` => `products`
64
+ * `/my_cms/c/products/B34SAP8Z` => `products/B34SAP8Z`
65
+ * `/my_cms/my_view` => `my_view`
66
+ * @param cmsPath
67
+ */
68
+ urlPathToDataPath: (cmsPath: string) => string;
69
+ /**
70
+ * Convert a collection or entity path to a URL path
71
+ * @param path
72
+ */
73
+ buildCMSUrlPath: (path: string) => string;
74
+ buildUrlEditCollectionPath: (props: {
75
+ path: string;
76
+ }) => string;
77
+ /**
78
+ * Base url path for the home screen
79
+ */
80
+ homeUrl: string;
81
+ /**
82
+ * Check if a url path belongs to a collection
83
+ * @param path
84
+ */
85
+ isUrlCollectionPath: (urlPath: string) => boolean;
86
+ /**
87
+ * Build a URL collection path from a data path
88
+ * `products` => `/c/products`
89
+ * `products/B34SAP8Z` => `/c/products/B34SAP8Z`
90
+ * @param path
91
+ */
92
+ buildUrlCollectionPath: (path: string) => string;
93
+ /**
94
+ * Turn a path with aliases into a resolved path
95
+ * @param pathWithAliases
96
+ */
97
+ resolveAliasesFrom: (pathWithAliases: string) => string;
98
+ /**
99
+ * Location used as the base for routes.
100
+ * This is the location that will be used underneath, when the url changes while
101
+ * opening a side dialog
102
+ */
103
+ baseLocation: string;
104
+ /**
105
+ * Call this method to recalculate the navigation
106
+ */
107
+ refreshNavigation: () => void;
108
+ /**
109
+ * Retrieve all the related parent references for a given path
110
+ * @param path
111
+ */
112
+ getParentReferencesFromPath: (path: string) => EntityReference[];
113
+ /**
114
+ * Retrieve all the related parent collection ids for a given path
115
+ * @param path
116
+ */
117
+ getParentCollectionIds: (path: string) => string[];
118
+ /**
119
+ * Resolve paths from a list of ids
120
+ * @param ids
121
+ */
122
+ convertIdsToPaths: (ids: string[]) => string[];
123
+ };
124
+ /**
125
+ * Custom additional views created by the developer, added to the main
126
+ * navigation.
127
+ * @group Models
128
+ */
129
+ export interface CMSView {
130
+ /**
131
+ * CMS Path you can reach this view from.
132
+ */
133
+ path: string;
134
+ /**
135
+ * Name of this view
136
+ */
137
+ name: string;
138
+ /**
139
+ * Optional description of this view. You can use Markdown
140
+ */
141
+ description?: string;
142
+ /**
143
+ * Icon key to use in this view.
144
+ * You can use any of the icons in the Material specs:
145
+ * https://fonts.google.com/icons
146
+ * e.g. 'account_tree' or 'person'
147
+ */
148
+ icon?: string;
149
+ /**
150
+ * Should this view be hidden from the main navigation panel.
151
+ * It will still be accessible if you reach the specified path
152
+ */
153
+ hideFromNavigation?: boolean;
154
+ /**
155
+ * Component to be rendered. This can be any React component, and can use
156
+ * any of the provided hooks
157
+ */
158
+ view: React.ReactNode;
159
+ /**
160
+ * Optional field used to group top level navigation entries under a
161
+ * navigation view.
162
+ */
163
+ group?: string;
164
+ }
165
+ export interface TopNavigationEntry {
166
+ url: string;
167
+ name: string;
168
+ path: string;
169
+ type: "collection" | "view";
170
+ collection?: EntityCollection;
171
+ view: CMSView;
172
+ description?: string;
173
+ group?: string;
174
+ }
175
+ export type TopNavigationResult = {
176
+ navigationEntries: TopNavigationEntry[];
177
+ groups: string[];
178
+ };