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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/components/ArrayContainer.d.ts +40 -0
  4. package/dist/components/CircularProgressCenter.d.ts +11 -0
  5. package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
  6. package/dist/components/DeleteEntityDialog.d.ts +12 -0
  7. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +31 -0
  8. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +27 -0
  9. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +99 -0
  10. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
  11. package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
  12. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +19 -0
  13. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  14. package/dist/components/EntityCollectionTable/index.d.ts +6 -0
  15. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  16. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  17. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  18. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  19. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  20. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  21. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  22. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  23. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  24. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +36 -0
  25. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  26. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  27. package/dist/components/EntityPreview.d.ts +29 -0
  28. package/dist/components/EntityView.d.ts +11 -0
  29. package/dist/components/ErrorBoundary.d.ts +11 -0
  30. package/dist/components/ErrorTooltip.d.ts +2 -0
  31. package/dist/components/ErrorView.d.ts +19 -0
  32. package/dist/components/FieldCaption.d.ts +4 -0
  33. package/dist/components/FireCMSAppBar.d.ts +26 -0
  34. package/dist/components/FireCMSLogo.d.ts +7 -0
  35. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  36. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  37. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  38. package/dist/components/HomePage/NavigationCardBinding.d.ts +17 -0
  39. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  40. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  41. package/dist/components/HomePage/index.d.ts +5 -0
  42. package/dist/components/NotFoundPage.d.ts +1 -0
  43. package/dist/components/PropertyConfigBadge.d.ts +4 -0
  44. package/dist/components/PropertyIdCopyTooltipContent.d.ts +3 -0
  45. package/dist/components/ReferenceTable/ReferenceSelectionTable.d.ts +58 -0
  46. package/dist/components/ReferenceWidget.d.ts +28 -0
  47. package/dist/components/SearchIconsView.d.ts +5 -0
  48. package/dist/components/SelectableTable/SelectableTable.d.ts +75 -0
  49. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  50. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -0
  51. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +11 -0
  52. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +14 -0
  53. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +13 -0
  54. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  55. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  56. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  57. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  58. package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
  59. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  60. package/dist/components/VirtualTable/common.d.ts +2 -0
  61. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  62. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  63. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  64. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  65. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  66. package/dist/components/VirtualTable/index.d.ts +2 -0
  67. package/dist/components/VirtualTable/types.d.ts +34 -0
  68. package/dist/components/common/index.d.ts +5 -0
  69. package/dist/components/common/types.d.ts +60 -0
  70. package/dist/components/common/useColumnsIds.d.ts +4 -0
  71. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +32 -0
  72. package/dist/components/common/useDebouncedData.d.ts +9 -0
  73. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  74. package/dist/components/index.d.ts +25 -0
  75. package/dist/contexts/AnalyticsContext.d.ts +3 -0
  76. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  77. package/dist/contexts/CustomizationControllerContext.d.ts +3 -0
  78. package/dist/contexts/DataSourceContext.d.ts +3 -0
  79. package/dist/contexts/DialogsProvider.d.ts +4 -0
  80. package/dist/contexts/ModeController.d.ts +4 -0
  81. package/dist/contexts/NavigationContext.d.ts +3 -0
  82. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  83. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  84. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  85. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  86. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  87. package/dist/contexts/index.d.ts +3 -0
  88. package/dist/core/Drawer.d.ts +23 -0
  89. package/dist/core/EntityEditView.d.ts +22 -0
  90. package/dist/core/EntitySidePanel.d.ts +10 -0
  91. package/dist/core/FireCMS.d.ts +14 -0
  92. package/dist/core/NavigationRoutes.d.ts +21 -0
  93. package/dist/core/Scaffold.d.ts +55 -0
  94. package/dist/core/SideDialogs.d.ts +23 -0
  95. package/dist/core/SideEntityView.d.ts +7 -0
  96. package/dist/core/field_configs.d.ts +7 -0
  97. package/dist/core/index.d.ts +8 -0
  98. package/dist/form/EntityForm.d.ts +77 -0
  99. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  100. package/dist/form/components/CustomIdField.d.ts +10 -0
  101. package/dist/form/components/ErrorFocus.d.ts +4 -0
  102. package/dist/form/components/FieldHelperText.d.ts +12 -0
  103. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  104. package/dist/form/components/LabelWithIcon.d.ts +14 -0
  105. package/dist/form/components/StorageItemPreview.d.ts +14 -0
  106. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  107. package/dist/form/components/index.d.ts +3 -0
  108. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  109. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  110. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  111. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  112. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  113. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  114. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  115. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  116. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  117. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  118. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  119. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  120. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +29 -0
  121. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  122. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  123. package/dist/form/index.d.ts +21 -0
  124. package/dist/form/useClearRestoreValue.d.ts +13 -0
  125. package/dist/form/validation.d.ts +25 -0
  126. package/dist/hooks/data/delete.d.ts +37 -0
  127. package/dist/hooks/data/save.d.ts +42 -0
  128. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  129. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  130. package/dist/hooks/data/useDataSource.d.ts +6 -0
  131. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  132. package/dist/hooks/index.d.ts +22 -0
  133. package/dist/hooks/useAnalyticsController.d.ts +5 -0
  134. package/dist/hooks/useAuthController.d.ts +11 -0
  135. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  136. package/dist/hooks/useBuildLocalConfigurationPersistence.d.ts +2 -0
  137. package/dist/hooks/useBuildModeController.d.ts +6 -0
  138. package/dist/hooks/useBuildNavigationController.d.ts +24 -0
  139. package/dist/hooks/useClipboard.d.ts +57 -0
  140. package/dist/hooks/useCustomizationController.d.ts +11 -0
  141. package/dist/hooks/useDialogsController.d.ts +11 -0
  142. package/dist/hooks/useFireCMSContext.d.ts +11 -0
  143. package/dist/hooks/useLargeLayout.d.ts +1 -0
  144. package/dist/hooks/useModeController.d.ts +20 -0
  145. package/dist/hooks/useNavigationController.d.ts +9 -0
  146. package/dist/hooks/useProjectLog.d.ts +8 -0
  147. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  148. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  149. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  150. package/dist/hooks/useSideEntityController.d.ts +12 -0
  151. package/dist/hooks/useSnackbarController.d.ts +42 -0
  152. package/dist/hooks/useStorageSource.d.ts +6 -0
  153. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  154. package/dist/index.d.ts +8 -0
  155. package/dist/index.es.js +16602 -0
  156. package/dist/index.es.js.map +1 -0
  157. package/dist/index.umd.js +589 -0
  158. package/dist/index.umd.js.map +1 -0
  159. package/dist/internal/common.d.ts +3 -0
  160. package/dist/internal/useBuildCustomizationController.d.ts +2 -0
  161. package/dist/internal/useBuildDataSource.d.ts +26 -0
  162. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  163. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  164. package/dist/internal/useLocaleConfig.d.ts +1 -0
  165. package/dist/internal/useRestoreScroll.d.ts +6 -0
  166. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  167. package/dist/preview/PropertyPreview.d.ts +7 -0
  168. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  169. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  170. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  171. package/dist/preview/components/BooleanPreview.d.ts +11 -0
  172. package/dist/preview/components/DatePreview.d.ts +7 -0
  173. package/dist/preview/components/EmptyValue.d.ts +4 -0
  174. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  175. package/dist/preview/components/ImagePreview.d.ts +12 -0
  176. package/dist/preview/components/ReferencePreview.d.ts +16 -0
  177. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  178. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  179. package/dist/preview/index.d.ts +23 -0
  180. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  181. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  182. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  183. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  184. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  185. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  186. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  187. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  188. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  189. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  190. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  191. package/dist/preview/util.d.ts +7 -0
  192. package/dist/types/analytics.d.ts +1 -0
  193. package/dist/types/analytics_controller.d.ts +7 -0
  194. package/dist/types/appcheck.d.ts +26 -0
  195. package/dist/types/auth.d.ts +47 -0
  196. package/dist/types/collections.d.ts +467 -0
  197. package/dist/types/customization_controller.d.ts +47 -0
  198. package/dist/types/datasource.d.ts +262 -0
  199. package/dist/types/dialogs_controller.d.ts +32 -0
  200. package/dist/types/entities.d.ts +58 -0
  201. package/dist/types/entity_actions.d.ts +35 -0
  202. package/dist/types/entity_callbacks.d.ts +185 -0
  203. package/dist/types/entity_link_builder.d.ts +7 -0
  204. package/dist/types/entity_overrides.d.ts +6 -0
  205. package/dist/types/export_import.d.ts +21 -0
  206. package/dist/types/fields.d.ts +180 -0
  207. package/dist/types/firecms.d.ts +132 -0
  208. package/dist/types/firecms_context.d.ts +70 -0
  209. package/dist/types/index.d.ts +29 -0
  210. package/dist/types/local_config_persistence.d.ts +21 -0
  211. package/dist/types/locales.d.ts +4 -0
  212. package/dist/types/modify_collections.d.ts +5 -0
  213. package/dist/types/navigation.d.ts +179 -0
  214. package/dist/types/permissions.d.ts +67 -0
  215. package/dist/types/plugins.d.ts +171 -0
  216. package/dist/types/properties.d.ts +681 -0
  217. package/dist/types/property_config.d.ts +42 -0
  218. package/dist/types/resolved_entities.d.ts +98 -0
  219. package/dist/types/side_dialogs_controller.d.ts +57 -0
  220. package/dist/types/side_entity_controller.d.ts +83 -0
  221. package/dist/types/storage.d.ts +82 -0
  222. package/dist/types/user.d.ts +36 -0
  223. package/dist/util/arrays.d.ts +1 -0
  224. package/dist/util/builders.d.ts +64 -0
  225. package/dist/util/collections.d.ts +11 -0
  226. package/dist/util/common.d.ts +2 -0
  227. package/dist/util/dates.d.ts +1 -0
  228. package/dist/util/entities.d.ts +28 -0
  229. package/dist/util/enums.d.ts +7 -0
  230. package/dist/util/flatten_object.d.ts +3 -0
  231. package/dist/util/hash.d.ts +1 -0
  232. package/dist/util/icon_list.d.ts +1 -0
  233. package/dist/util/icon_synonyms.d.ts +1950 -0
  234. package/dist/util/icons.d.ts +13 -0
  235. package/dist/util/index.d.ts +23 -0
  236. package/dist/util/join_collections.d.ts +9 -0
  237. package/dist/util/make_properties_editable.d.ts +3 -0
  238. package/dist/util/navigation_from_path.d.ts +24 -0
  239. package/dist/util/navigation_utils.d.ts +20 -0
  240. package/dist/util/objects.d.ts +10 -0
  241. package/dist/util/os.d.ts +2 -0
  242. package/dist/util/parent_references_from_path.d.ts +6 -0
  243. package/dist/util/paths.d.ts +14 -0
  244. package/dist/util/permissions.d.ts +5 -0
  245. package/dist/util/plurals.d.ts +18 -0
  246. package/dist/util/property_utils.d.ts +23 -0
  247. package/dist/util/references.d.ts +4 -0
  248. package/dist/util/regexp.d.ts +7 -0
  249. package/dist/util/resolutions.d.ts +64 -0
  250. package/dist/util/storage.d.ts +3 -0
  251. package/dist/util/strings.d.ts +6 -0
  252. package/dist/util/useDebouncedCallback.d.ts +1 -0
  253. package/dist/util/useStorageUploadController.d.ts +36 -0
  254. package/dist/util/useTraceUpdate.d.ts +1 -0
  255. package/package.json +122 -0
  256. package/src/components/ArrayContainer.tsx +334 -0
  257. package/src/components/CircularProgressCenter.tsx +26 -0
  258. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  259. package/src/components/DeleteEntityDialog.tsx +213 -0
  260. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +170 -0
  261. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +325 -0
  262. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +145 -0
  263. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
  264. package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
  265. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +155 -0
  266. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  267. package/src/components/EntityCollectionTable/index.tsx +12 -0
  268. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +116 -0
  269. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
  270. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  271. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  272. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +126 -0
  273. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  274. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +408 -0
  275. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  276. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  277. package/src/components/EntityCollectionView/EntityCollectionView.tsx +804 -0
  278. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +132 -0
  279. package/src/components/EntityCollectionView/useSelectionController.tsx +30 -0
  280. package/src/components/EntityPreview.tsx +218 -0
  281. package/src/components/EntityView.tsx +84 -0
  282. package/src/components/ErrorBoundary.tsx +40 -0
  283. package/src/components/ErrorTooltip.tsx +11 -0
  284. package/src/components/ErrorView.tsx +52 -0
  285. package/src/components/FieldCaption.tsx +13 -0
  286. package/src/components/FireCMSAppBar.tsx +165 -0
  287. package/src/components/FireCMSLogo.tsx +73 -0
  288. package/src/components/HomePage/DefaultHomePage.tsx +214 -0
  289. package/src/components/HomePage/FavouritesView.tsx +64 -0
  290. package/src/components/HomePage/NavigationCard.tsx +69 -0
  291. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  292. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  293. package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
  294. package/src/components/HomePage/index.tsx +5 -0
  295. package/src/components/NotFoundPage.tsx +25 -0
  296. package/src/components/PropertyConfigBadge.tsx +17 -0
  297. package/src/components/PropertyIdCopyTooltipContent.tsx +28 -0
  298. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +379 -0
  299. package/src/components/ReferenceWidget.tsx +145 -0
  300. package/src/components/SearchIconsView.tsx +75 -0
  301. package/src/components/SelectableTable/SelectableTable.tsx +329 -0
  302. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  303. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +49 -0
  304. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +109 -0
  305. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +179 -0
  306. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +158 -0
  307. package/src/components/VirtualTable/VirtualTable.tsx +405 -0
  308. package/src/components/VirtualTable/VirtualTableCell.tsx +50 -0
  309. package/src/components/VirtualTable/VirtualTableHeader.tsx +266 -0
  310. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  311. package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
  312. package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
  313. package/src/components/VirtualTable/common.tsx +18 -0
  314. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  315. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  316. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  317. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  318. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  319. package/src/components/VirtualTable/index.tsx +2 -0
  320. package/src/components/VirtualTable/types.tsx +44 -0
  321. package/src/components/common/index.ts +5 -0
  322. package/src/components/common/types.tsx +63 -0
  323. package/src/components/common/useColumnsIds.tsx +100 -0
  324. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +225 -0
  325. package/src/components/common/useDebouncedData.ts +49 -0
  326. package/src/components/common/useTableSearchHelper.ts +47 -0
  327. package/src/components/index.tsx +36 -0
  328. package/src/contexts/AnalyticsContext.tsx +4 -0
  329. package/src/contexts/AuthControllerContext.tsx +4 -0
  330. package/src/contexts/CustomizationControllerContext.tsx +4 -0
  331. package/src/contexts/DataSourceContext.tsx +4 -0
  332. package/src/contexts/DialogsProvider.tsx +52 -0
  333. package/src/contexts/ModeController.tsx +13 -0
  334. package/src/contexts/NavigationContext.tsx +4 -0
  335. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  336. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  337. package/src/contexts/SnackbarProvider.tsx +12 -0
  338. package/src/contexts/StorageSourceContext.tsx +4 -0
  339. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  340. package/src/contexts/index.ts +3 -0
  341. package/src/core/Drawer.tsx +191 -0
  342. package/src/core/EntityEditView.tsx +561 -0
  343. package/src/core/EntitySidePanel.tsx +91 -0
  344. package/src/core/FireCMS.tsx +198 -0
  345. package/src/core/NavigationRoutes.tsx +127 -0
  346. package/src/core/Scaffold.tsx +281 -0
  347. package/src/core/SideDialogs.tsx +156 -0
  348. package/src/core/SideEntityView.tsx +38 -0
  349. package/src/core/field_configs.tsx +400 -0
  350. package/src/core/index.tsx +12 -0
  351. package/src/form/EntityForm.tsx +728 -0
  352. package/src/form/PropertyFieldBinding.tsx +306 -0
  353. package/src/form/components/CustomIdField.tsx +139 -0
  354. package/src/form/components/ErrorFocus.tsx +51 -0
  355. package/src/form/components/FieldHelperText.tsx +58 -0
  356. package/src/form/components/FormikArrayContainer.tsx +44 -0
  357. package/src/form/components/LabelWithIcon.tsx +33 -0
  358. package/src/form/components/StorageItemPreview.tsx +68 -0
  359. package/src/form/components/StorageUploadProgress.tsx +105 -0
  360. package/src/form/components/index.tsx +3 -0
  361. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +86 -0
  362. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +149 -0
  363. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  364. package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
  365. package/src/form/field_bindings/KeyValueFieldBinding.tsx +558 -0
  366. package/src/form/field_bindings/MapFieldBinding.tsx +138 -0
  367. package/src/form/field_bindings/MarkdownFieldBinding.tsx +695 -0
  368. package/src/form/field_bindings/MultiSelectBinding.tsx +114 -0
  369. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +69 -0
  370. package/src/form/field_bindings/ReferenceFieldBinding.tsx +123 -0
  371. package/src/form/field_bindings/RepeatFieldBinding.tsx +105 -0
  372. package/src/form/field_bindings/SelectFieldBinding.tsx +99 -0
  373. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +447 -0
  374. package/src/form/field_bindings/SwitchFieldBinding.tsx +60 -0
  375. package/src/form/field_bindings/TextFieldBinding.tsx +109 -0
  376. package/src/form/index.tsx +43 -0
  377. package/src/form/useClearRestoreValue.tsx +35 -0
  378. package/src/form/validation.ts +412 -0
  379. package/src/hooks/data/delete.ts +101 -0
  380. package/src/hooks/data/save.ts +170 -0
  381. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  382. package/src/hooks/data/useDataOrder.ts +26 -0
  383. package/src/hooks/data/useDataSource.tsx +14 -0
  384. package/src/hooks/data/useEntityFetch.tsx +129 -0
  385. package/src/hooks/index.tsx +27 -0
  386. package/src/hooks/useAnalyticsController.tsx +8 -0
  387. package/src/hooks/useAuthController.tsx +14 -0
  388. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  389. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +67 -0
  390. package/src/hooks/useBuildModeController.tsx +60 -0
  391. package/src/hooks/useBuildNavigationController.tsx +433 -0
  392. package/src/hooks/useClipboard.tsx +158 -0
  393. package/src/hooks/useCustomizationController.tsx +14 -0
  394. package/src/hooks/useDialogsController.tsx +14 -0
  395. package/src/hooks/useFireCMSContext.tsx +99 -0
  396. package/src/hooks/useLargeLayout.tsx +100 -0
  397. package/src/hooks/useModeController.tsx +24 -0
  398. package/src/hooks/useNavigationController.tsx +12 -0
  399. package/src/hooks/useProjectLog.tsx +39 -0
  400. package/src/hooks/useReferenceDialog.tsx +56 -0
  401. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  402. package/src/hooks/useSideDialogsController.tsx +21 -0
  403. package/src/hooks/useSideEntityController.tsx +15 -0
  404. package/src/hooks/useSnackbarController.tsx +75 -0
  405. package/src/hooks/useStorageSource.tsx +14 -0
  406. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  407. package/src/index.ts +8 -0
  408. package/src/internal/common.tsx +5 -0
  409. package/src/internal/useBuildCustomizationController.tsx +5 -0
  410. package/src/internal/useBuildDataSource.ts +363 -0
  411. package/src/internal/useBuildSideDialogsController.tsx +125 -0
  412. package/src/internal/useBuildSideEntityController.tsx +172 -0
  413. package/src/internal/useLocaleConfig.tsx +18 -0
  414. package/src/internal/useRestoreScroll.tsx +48 -0
  415. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  416. package/src/preview/PropertyPreview.tsx +225 -0
  417. package/src/preview/PropertyPreviewProps.tsx +59 -0
  418. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  419. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  420. package/src/preview/components/BooleanPreview.tsx +24 -0
  421. package/src/preview/components/DatePreview.tsx +26 -0
  422. package/src/preview/components/EmptyValue.tsx +10 -0
  423. package/src/preview/components/EnumValuesChip.tsx +38 -0
  424. package/src/preview/components/ImagePreview.tsx +106 -0
  425. package/src/preview/components/ReferencePreview.tsx +166 -0
  426. package/src/preview/components/StorageThumbnail.tsx +84 -0
  427. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  428. package/src/preview/index.ts +27 -0
  429. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  430. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  431. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  432. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  433. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  434. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  435. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  436. package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
  437. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  438. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  439. package/src/preview/property_previews/StringPropertyPreview.tsx +60 -0
  440. package/src/preview/util.ts +31 -0
  441. package/src/types/analytics.ts +35 -0
  442. package/src/types/analytics_controller.tsx +10 -0
  443. package/src/types/appcheck.ts +29 -0
  444. package/src/types/auth.tsx +59 -0
  445. package/src/types/collections.ts +548 -0
  446. package/src/types/customization_controller.tsx +58 -0
  447. package/src/types/datasource.ts +389 -0
  448. package/src/types/dialogs_controller.tsx +33 -0
  449. package/src/types/entities.ts +80 -0
  450. package/src/types/entity_actions.tsx +43 -0
  451. package/src/types/entity_callbacks.ts +229 -0
  452. package/src/types/entity_link_builder.ts +8 -0
  453. package/src/types/entity_overrides.tsx +7 -0
  454. package/src/types/export_import.ts +26 -0
  455. package/src/types/fields.tsx +220 -0
  456. package/src/types/firecms.tsx +153 -0
  457. package/src/types/firecms_context.tsx +83 -0
  458. package/src/types/index.ts +29 -0
  459. package/src/types/local_config_persistence.tsx +23 -0
  460. package/src/types/locales.ts +81 -0
  461. package/src/types/modify_collections.tsx +6 -0
  462. package/src/types/navigation.ts +215 -0
  463. package/src/types/permissions.ts +81 -0
  464. package/src/types/plugins.tsx +207 -0
  465. package/src/types/properties.ts +851 -0
  466. package/src/types/property_config.tsx +72 -0
  467. package/src/types/resolved_entities.ts +148 -0
  468. package/src/types/side_dialogs_controller.tsx +68 -0
  469. package/src/types/side_entity_controller.tsx +97 -0
  470. package/src/types/storage.ts +96 -0
  471. package/src/types/user.ts +37 -0
  472. package/src/util/arrays.ts +3 -0
  473. package/src/util/builders.ts +139 -0
  474. package/src/util/collections.ts +72 -0
  475. package/src/util/common.tsx +2 -0
  476. package/src/util/dates.ts +1 -0
  477. package/src/util/entities.ts +196 -0
  478. package/src/util/enums.ts +56 -0
  479. package/src/util/flatten_object.ts +45 -0
  480. package/src/util/hash.ts +11 -0
  481. package/src/util/icon_list.ts +17 -0
  482. package/src/util/icon_synonyms.ts +1950 -0
  483. package/src/util/icons.tsx +56 -0
  484. package/src/util/index.ts +23 -0
  485. package/src/util/join_collections.ts +172 -0
  486. package/src/util/make_properties_editable.ts +29 -0
  487. package/src/util/navigation_from_path.ts +107 -0
  488. package/src/util/navigation_utils.ts +111 -0
  489. package/src/util/objects.ts +168 -0
  490. package/src/util/os.ts +13 -0
  491. package/src/util/parent_references_from_path.ts +56 -0
  492. package/src/util/paths.ts +27 -0
  493. package/src/util/permissions.ts +83 -0
  494. package/src/util/plurals.ts +190 -0
  495. package/src/util/property_utils.tsx +130 -0
  496. package/src/util/references.ts +51 -0
  497. package/src/util/regexp.ts +32 -0
  498. package/src/util/resolutions.ts +399 -0
  499. package/src/util/storage.ts +92 -0
  500. package/src/util/strings.ts +63 -0
  501. package/src/util/useDebouncedCallback.ts +25 -0
  502. package/src/util/useStorageUploadController.tsx +243 -0
  503. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,180 @@
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
+ /**
24
+ * Set value of field directly
25
+ */
26
+ setValue: (value: T | null, shouldValidate?: boolean) => void;
27
+ /**
28
+ * Set value of a different field directly
29
+ * @param propertyKey
30
+ * @param value
31
+ * @param shouldValidate
32
+ */
33
+ setFieldValue: (propertyKey: string, value: CMSType | null, shouldValidate?: boolean) => void;
34
+ /**
35
+ * Is the form currently submitting
36
+ */
37
+ isSubmitting: boolean;
38
+ /**
39
+ * Should this field show the error indicator.
40
+ * Note that there might be an error (like an empty field that should be
41
+ * filled) but we don't want to show the error until the user has tried
42
+ * saving.
43
+ */
44
+ showError: boolean;
45
+ /**
46
+ * Is there an error in this field. The error field has the same shape as
47
+ * the field, replacing values with a string containing the error.
48
+ * It takes the value `null` if there is no error
49
+ */
50
+ error: any | null;
51
+ /**
52
+ * Has this field been touched
53
+ */
54
+ touched: boolean;
55
+ /**
56
+ * Property related to this field
57
+ */
58
+ property: ResolvedProperty<T>;
59
+ /**
60
+ * Should this field include a description
61
+ */
62
+ includeDescription: boolean;
63
+ /**
64
+ * Flag to indicate that the underlying value has been updated in the
65
+ * datasource
66
+ */
67
+ underlyingValueHasChanged: boolean;
68
+ /**
69
+ * Is this field part of an array
70
+ */
71
+ partOfArray: boolean;
72
+ /**
73
+ * Is this field part of a block (oneOf array)
74
+ */
75
+ partOfBlock: boolean;
76
+ /**
77
+ * Is this field being rendered in the entity table popup
78
+ */
79
+ tableMode: boolean;
80
+ /**
81
+ * Should this field autofocus on mount
82
+ */
83
+ autoFocus: boolean;
84
+ /**
85
+ * Additional properties set by the developer
86
+ */
87
+ customProps: CustomProps;
88
+ /**
89
+ * Additional values related to the state of the form or the entity
90
+ */
91
+ context: FormContext<M>;
92
+ /**
93
+ * Flag to indicate if this field should be disabled
94
+ */
95
+ disabled: boolean;
96
+ }
97
+ /**
98
+ * Context passed to custom fields
99
+ * @group Form custom fields
100
+ */
101
+ export interface FormContext<M extends Record<string, any> = any> {
102
+ /**
103
+ * Collection of the entity being modified
104
+ */
105
+ collection: ResolvedEntityCollection<M>;
106
+ /**
107
+ * Current values of the entity
108
+ */
109
+ values: EntityValues<M>;
110
+ /**
111
+ * Entity id, it can be null if it's a new entity
112
+ */
113
+ entityId?: string;
114
+ /**
115
+ * Path this entity is located at
116
+ */
117
+ path: string;
118
+ /**
119
+ * Update the value of a field
120
+ * @param key
121
+ * @param value
122
+ * @param shouldValidate
123
+ */
124
+ setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
125
+ /**
126
+ * Save the entity
127
+ */
128
+ save: (values: EntityValues<M>) => void;
129
+ }
130
+ /**
131
+ * In case you need to render a field bound to a Property inside your
132
+ * custom field you can use {@link PropertyFieldBinding} with these props.
133
+ * @group Form custom fields
134
+ */
135
+ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<string, any> = any> {
136
+ /**
137
+ * The key/path of the property, such as `age`. You can use nested and array
138
+ * indexed such as `address.street` or `people[3]`
139
+ */
140
+ propertyKey: string;
141
+ /**
142
+ * The CMS property you are binding this field to
143
+ */
144
+ property: PropertyOrBuilder<T> | ResolvedProperty<T>;
145
+ /**
146
+ * The context where this field is being rendered. You get a context as a
147
+ * prop when creating a custom field.
148
+ */
149
+ context: FormContext<M>;
150
+ /**
151
+ * Should the description be included in this field
152
+ */
153
+ includeDescription?: boolean;
154
+ /**
155
+ * Has the value of this property been updated in the database while this
156
+ * field is being edited
157
+ */
158
+ underlyingValueHasChanged?: boolean;
159
+ /**
160
+ * Is this field being rendered in a table
161
+ */
162
+ tableMode?: boolean;
163
+ /**
164
+ * Is this field part of an array
165
+ */
166
+ partOfArray?: boolean;
167
+ /**
168
+ * Is this field part of a block (oneOf array)
169
+ */
170
+ partOfBlock?: boolean;
171
+ /**
172
+ * Should the field take focus when rendered. When opening the popup view
173
+ * in table mode, it makes sense to put the focus on the only field rendered.
174
+ */
175
+ autoFocus?: boolean;
176
+ /**
177
+ * Should this field be disabled
178
+ */
179
+ disabled?: boolean;
180
+ }
@@ -0,0 +1,132 @@
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, NavigationController } 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
+ * Record of custom form fields to be used in the CMS.
67
+ * You can use the key to reference the custom field in
68
+ * the `propertyConfig` prop of a property in a collection.
69
+ */
70
+ propertyConfigs?: Record<string, PropertyConfig>;
71
+ /**
72
+ * This controller is in charge of the navigation of the CMS.
73
+ * It is in charge of resolving the collection and entity paths.
74
+ */
75
+ navigationController: NavigationController;
76
+ /**
77
+ * List of additional custom views for entities.
78
+ * You can use the key to reference the custom view in
79
+ * the `entityViews` prop of a collection.
80
+ *
81
+ * You can also define an entity view from the UI.
82
+ */
83
+ entityViews?: EntityCustomView[];
84
+ /**
85
+ * Format of the dates in the CMS.
86
+ * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
87
+ */
88
+ dateTimeFormat?: string;
89
+ /**
90
+ * Locale of the CMS, currently only affecting dates
91
+ */
92
+ locale?: Locale;
93
+ /**
94
+ * Connector to your database
95
+ */
96
+ dataSourceDelegate: DataSourceDelegate;
97
+ /**
98
+ * Connector to your file upload/fetch implementation
99
+ */
100
+ storageSource: StorageSource;
101
+ /**
102
+ * Delegate for implementing your auth operations.
103
+ */
104
+ authController: AuthController<UserType>;
105
+ /**
106
+ * Use this controller to access the configuration that is stored locally,
107
+ * and not defined in code
108
+ */
109
+ userConfigPersistence?: UserConfigurationPersistence;
110
+ /**
111
+ * Use plugins to modify the behaviour of the CMS.
112
+ * Currently, in ALPHA, and likely subject to change.
113
+ */
114
+ plugins?: FireCMSPlugin<any, any, any>[];
115
+ /**
116
+ * Callback used to get analytics events from the CMS
117
+ */
118
+ onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
119
+ /**
120
+ * Optional link builder you can add to generate a button in your entity forms.
121
+ * The function must return a URL that gets opened when the button is clicked
122
+ */
123
+ entityLinkBuilder?: EntityLinkBuilder;
124
+ components?: {
125
+ /**
126
+ * Component to render when a reference is missing
127
+ */
128
+ missingReference?: React.ComponentType<{
129
+ path: string;
130
+ }>;
131
+ };
132
+ };
@@ -0,0 +1,70 @@
1
+ import { DataSource } from "./datasource";
2
+ import { StorageSource } from "./storage";
3
+ import { NavigationController } from "./navigation";
4
+ import { SideEntityController } from "./side_entity_controller";
5
+ import { AuthController } from "./auth";
6
+ import { User } from "./user";
7
+ import { SnackbarController } from "../hooks";
8
+ import { UserConfigurationPersistence } from "./local_config_persistence";
9
+ import { SideDialogsController } from "./side_dialogs_controller";
10
+ import { DialogsController } from "./dialogs_controller";
11
+ import { CustomizationController } from "./customization_controller";
12
+ import { AnalyticsController } from "./analytics_controller";
13
+ /**
14
+ * Context that includes the internal controllers and contexts used by the app.
15
+ * Some controllers and context included in this context can be accessed
16
+ * directly from their respective hooks.
17
+ * @group Hooks and utilities
18
+ * @see useFireCMSContext
19
+ */
20
+ export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
21
+ /**
22
+ * Connector to your database, e.g. your Firestore database
23
+ */
24
+ dataSource: DataSource;
25
+ /**
26
+ * Used storage implementation
27
+ */
28
+ storageSource: StorageSource;
29
+ /**
30
+ * Context that includes the resolved navigation and utility methods and
31
+ * attributes.
32
+ * @see useNavigation
33
+ */
34
+ navigation: NavigationController;
35
+ /**
36
+ * Controller to open the side dialog displaying entity forms
37
+ * @see useSideEntityController
38
+ */
39
+ sideEntityController: SideEntityController;
40
+ /**
41
+ * Controller used to open side dialogs
42
+ * This is the controller used internally by side entity dialogs
43
+ * or reference dialogs.
44
+ */
45
+ sideDialogsController: SideDialogsController;
46
+ /**
47
+ * Controller used to open regular dialogs
48
+ */
49
+ dialogsController: DialogsController;
50
+ /**
51
+ * Used auth controller
52
+ */
53
+ authController: AuthControllerType;
54
+ /**
55
+ * This controller holds the customization options for the CMS.
56
+ */
57
+ customizationController: CustomizationController;
58
+ /**
59
+ * Use this controller to display snackbars
60
+ */
61
+ snackbarController: SnackbarController;
62
+ /**
63
+ * Use this controller to access data stored in the browser for the user
64
+ */
65
+ userConfigPersistence?: UserConfigurationPersistence;
66
+ /**
67
+ * Callback to send analytics events
68
+ */
69
+ analyticsController?: AnalyticsController;
70
+ };
@@ -0,0 +1,29 @@
1
+ export * from "./auth";
2
+ export * from "./entities";
3
+ export * from "./entity_actions";
4
+ export * from "./resolved_entities";
5
+ export * from "./properties";
6
+ export * from "./collections";
7
+ export * from "./permissions";
8
+ export * from "./navigation";
9
+ export * from "./locales";
10
+ export * from "./user";
11
+ export * from "./storage";
12
+ export * from "./fields";
13
+ export * from "./property_config";
14
+ export * from "./datasource";
15
+ export * from "./entity_link_builder";
16
+ export * from "./side_entity_controller";
17
+ export * from "./side_dialogs_controller";
18
+ export * from "./firecms_context";
19
+ export * from "./entity_callbacks";
20
+ export * from "./entity_overrides";
21
+ export * from "./local_config_persistence";
22
+ export * from "./plugins";
23
+ export * from "./analytics";
24
+ export * from "./firecms";
25
+ export * from "./appcheck";
26
+ export * from "./export_import";
27
+ export * from "./modify_collections";
28
+ export * from "./analytics_controller";
29
+ export * from "./customization_controller";
@@ -0,0 +1,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,179 @@
1
+ import React from "react";
2
+ import { EntityCollection } from "./collections";
3
+ import { EntityReference } from "./entities";
4
+ /**
5
+ * Controller that includes the resolved navigation and utility methods and
6
+ * attributes.
7
+ * @group Models
8
+ */
9
+ export type NavigationController = {
10
+ /**
11
+ * List of the mapped collections in the CMS.
12
+ * Each entry relates to a collection in the root database.
13
+ * Each of the navigation entries in this field
14
+ * generates an entry in the main menu.
15
+ */
16
+ collections?: EntityCollection[];
17
+ /**
18
+ * Custom additional views created by the developer, added to the main
19
+ * navigation
20
+ */
21
+ views?: CMSView[];
22
+ /**
23
+ * Custom additional views created by the developer, added to the admin
24
+ * navigation
25
+ */
26
+ adminViews?: CMSView[];
27
+ /**
28
+ * Configuration for the views that should be displayed at the top
29
+ * level of the navigation (e.g. in the home page or the navigation
30
+ * drawer)
31
+ */
32
+ topLevelNavigation?: TopNavigationResult;
33
+ /**
34
+ * Is the navigation loading (the configuration persistence has not
35
+ * loaded yet, or a specified navigation builder has not completed)
36
+ */
37
+ loading: boolean;
38
+ /**
39
+ * Was there an error while loading the navigation data
40
+ */
41
+ navigationLoadingError?: any;
42
+ /**
43
+ * Is the registry ready to be used
44
+ */
45
+ initialised: boolean;
46
+ /**
47
+ * Get the collection configuration for a given path.
48
+ * The collection is resolved from the given path or alias.
49
+ */
50
+ getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string, entityId?: string, includeUserOverride?: boolean) => EC | undefined;
51
+ /**
52
+ * Get the collection configuration from its parent path segments.
53
+ */
54
+ getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
55
+ /**
56
+ * Get the collection configuration from its parent path segments.
57
+ */
58
+ getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
59
+ /**
60
+ * Default path under the navigation routes of the CMS will be created
61
+ */
62
+ basePath: string;
63
+ /**
64
+ * Default path under the collection routes of the CMS will be created
65
+ */
66
+ baseCollectionPath: string;
67
+ /**
68
+ * Convert a URL path to a collection or entity path
69
+ * `/c/products` => `products`
70
+ * `/my_cms/c/products/B34SAP8Z` => `products/B34SAP8Z`
71
+ * `/my_cms/my_view` => `my_view`
72
+ * @param cmsPath
73
+ */
74
+ urlPathToDataPath: (cmsPath: string) => string;
75
+ /**
76
+ * Convert a collection or entity path to a URL path
77
+ * @param path
78
+ */
79
+ buildCMSUrlPath: (path: string) => string;
80
+ buildUrlEditCollectionPath: (props: {
81
+ path: string;
82
+ }) => string;
83
+ /**
84
+ * Base url path for the home screen
85
+ */
86
+ homeUrl: string;
87
+ /**
88
+ * Check if a url path belongs to a collection
89
+ * @param path
90
+ */
91
+ isUrlCollectionPath: (urlPath: string) => boolean;
92
+ /**
93
+ * Build a URL collection path from a data path
94
+ * `products` => `/c/products`
95
+ * `products/B34SAP8Z` => `/c/products/B34SAP8Z`
96
+ * @param path
97
+ */
98
+ buildUrlCollectionPath: (path: string) => string;
99
+ /**
100
+ * Turn a path with aliases into a resolved path
101
+ * @param pathWithAliases
102
+ */
103
+ resolveAliasesFrom: (pathWithAliases: string) => 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
+ * This prop is ignored for admin views.
163
+ */
164
+ group?: string;
165
+ }
166
+ export interface TopNavigationEntry {
167
+ url: string;
168
+ name: string;
169
+ path: string;
170
+ type: "collection" | "view" | "admin";
171
+ collection?: EntityCollection;
172
+ view?: CMSView;
173
+ description?: string;
174
+ group: string;
175
+ }
176
+ export type TopNavigationResult = {
177
+ navigationEntries: TopNavigationEntry[];
178
+ groups: string[];
179
+ };
@@ -0,0 +1,67 @@
1
+ import { User } from "./user";
2
+ import { AuthController } from "./auth";
3
+ import { EntityCollection, InferCollectionType } from "./collections";
4
+ import { Entity } from "./entities";
5
+ /**
6
+ * Define the operations that can be performed in a collection.
7
+ * @group Models
8
+ */
9
+ export interface Permissions {
10
+ /**
11
+ * Can the user see this collection.
12
+ * If `false` it will not show in the user's navigation
13
+ * Defaults to `true`
14
+ */
15
+ read?: boolean;
16
+ /**
17
+ * Can the user add new entities. Defaults to `true`
18
+ */
19
+ create?: boolean;
20
+ /**
21
+ * Can the elements in this collection be edited. Defaults to `true`
22
+ */
23
+ edit?: boolean;
24
+ /**
25
+ * Can the user delete entities. Defaults to `true`
26
+ */
27
+ delete?: boolean;
28
+ }
29
+ /**
30
+ * Props passed to a {@link PermissionsBuilder}
31
+ * @group Models
32
+ */
33
+ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> {
34
+ /**
35
+ * Entity being edited, might be null in some cases, when the operation
36
+ * refers to the collection.
37
+ * For example, when deciding whether a user can create a new entity
38
+ * in a collection, the entity will be null.
39
+ */
40
+ entity: Entity<M> | null;
41
+ /**
42
+ * Path of the collection e.g. 'products/12345/locales'
43
+ */
44
+ path: string;
45
+ /**
46
+ * Path segments of the collection e.g. ['products', 'locales']
47
+ */
48
+ pathSegments: string[];
49
+ /**
50
+ * Logged in user
51
+ */
52
+ user: UserType | null;
53
+ /**
54
+ * Collection these permissions apply to
55
+ */
56
+ collection: EC;
57
+ /**
58
+ * Auth controller
59
+ */
60
+ authController: AuthController<UserType>;
61
+ }
62
+ /**
63
+ * Builder used to assign permissions to entities,
64
+ * based on the logged user or collection.
65
+ * @group Models
66
+ */
67
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);