@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,467 @@
1
+ import React, { Dispatch, SetStateAction } from "react";
2
+ import { Entity, EntityStatus, EntityValues } from "./entities";
3
+ import { User } from "./user";
4
+ import { FireCMSContext } from "./firecms_context";
5
+ import { EntityCallbacks } from "./entity_callbacks";
6
+ import { Permissions, PermissionsBuilder } from "./permissions";
7
+ import { EnumValues, PropertiesOrBuilders } from "./properties";
8
+ import { FormContext } from "./fields";
9
+ import { EntityAction } from "./entity_actions";
10
+ import { ExportConfig } from "./export_import";
11
+ import { EntityOverrides } from "./entity_overrides";
12
+ /**
13
+ * This interface represents a view that includes a collection of entities.
14
+ * It can be in the root level of the configuration, defining the main
15
+ * menu navigation. You can also find it as a subcollection of a different one.
16
+ *
17
+ * @group Models
18
+ */
19
+ export interface EntityCollection<M extends Record<string, any> = any, UserType extends User = User> {
20
+ /**
21
+ * You can set an alias that will be used internally instead of the `path`.
22
+ * The `alias` value will be used to determine the URL of the collection,
23
+ * while `path` will still be used in the datasource.
24
+ * Note that you can use this value in reference properties too.
25
+ */
26
+ id: string;
27
+ /**
28
+ * Name of the collection, typically plural.
29
+ * E.g. `Products`, `Blog`
30
+ */
31
+ name: string;
32
+ /**
33
+ * Singular name of an entry in this collection
34
+ * E.g. `Product`, `Blog entry`
35
+ */
36
+ singularName?: string;
37
+ /**
38
+ * Optional description of this view. You can use Markdown.
39
+ */
40
+ description?: string;
41
+ /**
42
+ * Relative path of this view to its parent.
43
+ * If this view is in the root the path is equal to the absolute one.
44
+ * This path also determines the URL in FireCMS, unless an alias is specified
45
+ */
46
+ path: string;
47
+ /**
48
+ * If this collection is a top level navigation entry, you can set this
49
+ * property to `true` to indicate that this collection is a collection group.
50
+ */
51
+ collectionGroup?: boolean;
52
+ /**
53
+ * Icon key to use in this collection.
54
+ * You can use any of the icons in the Material specs:
55
+ * https://fonts.google.com/icons
56
+ * e.g. 'account_tree' or 'person'
57
+ */
58
+ icon?: string;
59
+ /**
60
+ * Optional field used to group top level navigation entries under a~
61
+ * navigation view. If you set this value in a subcollection it has no
62
+ * effect.
63
+ */
64
+ group?: string;
65
+ /**
66
+ * Set of properties that compose an entity
67
+ */
68
+ properties: PropertiesOrBuilders<M>;
69
+ /**
70
+ * Title property of the entity. This is the property that will be used
71
+ * as the title in entity related views and references.
72
+ * If not specified, the first property simple text property will be used.
73
+ */
74
+ titleProperty?: keyof M;
75
+ /**
76
+ * Can this collection be edited by the end user.
77
+ * Defaults to `true`.
78
+ * Keep in mind that you can also set this prop to individual properties.
79
+ */
80
+ editable?: boolean;
81
+ /**
82
+ * Order in which the properties are displayed.
83
+ * If you are specifying your collection as code, the order is the same as the
84
+ * one you define in `properties`. Additional columns are added at the
85
+ * end of the list, if the order is not specified.
86
+ * You can use this prop to hide some properties from the table view.
87
+ * Note that if you set this prop, other ways to hide fields, like
88
+ * `hidden` in the property definition, will be ignored.
89
+ * `propertiesOrder` has precedence over `hidden`.
90
+ * - For properties use the property key.
91
+ * - For additional columns use the column id.
92
+ * - If you have subcollections, you get a column for each subcollection,
93
+ * with the path (or alias) as the subcollection, prefixed with
94
+ * `subcollection:`. e.g. `subcollection:orders`.
95
+ * - If you are using a collection group, you will also have an
96
+ * additional `collectionGroupParent` column.
97
+ */
98
+ propertiesOrder?: Extract<keyof M, string>[];
99
+ /**
100
+ * If enabled, content is loaded in batches. If `false` all entities in the
101
+ * collection are loaded.
102
+ * You can specify a number to specify the pagination size (50 by default)
103
+ * Defaults to `true`
104
+ */
105
+ pagination?: boolean | number;
106
+ /**
107
+ * Flag to indicate if a search bar should be displayed on top of
108
+ * the collection table.
109
+ */
110
+ textSearchEnabled?: boolean;
111
+ /**
112
+ * Permissions the logged-in user can perform on this collection.
113
+ * If not specified everything defaults to `true`.
114
+ */
115
+ permissions?: Permissions | PermissionsBuilder<EntityCollection, UserType, M>;
116
+ /**
117
+ * Are the entities in this collection selectable. Defaults to `true`
118
+ */
119
+ selectionEnabled?: boolean;
120
+ /**
121
+ * You can add subcollections to your entity in the same way you define the root
122
+ * collections. The collections added here will be displayed when opening
123
+ * the side dialog of an entity.
124
+ */
125
+ subcollections?: EntityCollection<any, any>[];
126
+ /**
127
+ * This interface defines all the callbacks that can be used when an entity
128
+ * is being created, updated or deleted.
129
+ * Useful for adding your own logic or blocking the execution of the operation.
130
+ */
131
+ callbacks?: EntityCallbacks<M>;
132
+ /**
133
+ * Builder for rendering additional components such as buttons in the
134
+ * collection toolbar
135
+ */
136
+ Actions?: React.ComponentType<CollectionActionsProps> | React.ComponentType<CollectionActionsProps>[];
137
+ /**
138
+ * You can define additional actions that can be performed on the entities
139
+ * in this collection. These actions can be displayed in the collection
140
+ * view or in the entity view.
141
+ *
142
+ * You can use the `onClick` method to implement your own logic.
143
+ * In the `context` prop you can access all the controllers of FireCMS.
144
+ *
145
+ * ```
146
+ * const archiveEntityAction: EntityAction = {
147
+ * icon: <ArchiveIcon/>,
148
+ * name: "Archive",
149
+ * onClick({
150
+ * entity,
151
+ * collection,
152
+ * context,
153
+ * }): Promise<void> {
154
+ * // Add your code here
155
+ * return Promise.resolve(undefined);
156
+ * }
157
+ * }
158
+ * ```
159
+ */
160
+ entityActions?: EntityAction<M, UserType>[];
161
+ /**
162
+ * Pass your own selection controller if you want to control selected
163
+ * entities externally.
164
+ * @see useSelectionController
165
+ */
166
+ selectionController?: SelectionController<M>;
167
+ /**
168
+ * If this property is not set, the property will be created by the
169
+ * datasource.
170
+ * You can set the value to true to allow the users to choose the ID.
171
+ * You can also pass a set of values (as an EnumValues object) to allow them
172
+ * to pick from only those.
173
+ */
174
+ customId?: boolean | EnumValues | "optional";
175
+ /**
176
+ * Force a filter in this view. If applied, the rest of the filters will
177
+ * be disabled. Filters applied with this prop cannot be changed.
178
+ * e.g. `forceFilter: { age: [">=", 18] }`
179
+ */
180
+ forceFilter?: FilterValues<Extract<keyof M, string>>;
181
+ /**
182
+ * Initial filters applied to the collection this collection is related to.
183
+ * Defaults to none. Filters applied with this prop can be changed.
184
+ * e.g. `initialFilter: { age: [">=", 18] }`
185
+ */
186
+ initialFilter?: FilterValues<Extract<keyof M, string>>;
187
+ /**
188
+ * Default sort applied to this collection.
189
+ * When setting this prop, entities will have a default order
190
+ * applied in the collection.
191
+ * e.g. `initialSort: ["order", "asc"]`
192
+ */
193
+ initialSort?: [Extract<keyof M, string>, "asc" | "desc"];
194
+ /**
195
+ * Array of builders for rendering additional panels in an entity view.
196
+ * Useful if you need to render custom views.
197
+ * You can either define the custom view inline or pass a reference to
198
+ * a custom view defined in the main configuration under `entityViews`
199
+ */
200
+ entityViews?: (string | EntityCustomView<M>)[];
201
+ /**
202
+ * You can add additional fields to the collection view by implementing
203
+ * an additional field delegate.
204
+ */
205
+ additionalFields?: AdditionalFieldDelegate<M, UserType>[];
206
+ /**
207
+ * Default size of the rendered collection
208
+ */
209
+ defaultSize?: CollectionSize;
210
+ /**
211
+ * Can the elements in this collection be edited inline in the collection
212
+ * view. If this flag is set to false but `permissions.edit` is `true`, entities
213
+ * can still be edited in the side panel
214
+ */
215
+ inlineEditing?: boolean;
216
+ /**
217
+ * Should this collection be hidden from the main navigation panel, if
218
+ * it is at the root level, or in the entity side panel if it's a
219
+ * subcollection.
220
+ * It will still be accessible if you reach the specified path.
221
+ * You can also use this collection as a reference target.
222
+ */
223
+ hideFromNavigation?: boolean;
224
+ /**
225
+ * If you want to open custom views or subcollections by default when opening the edit
226
+ * view of an entity, you can specify the path to the view here.
227
+ * The path is relative to the current collection. For example if you have a collection
228
+ * that has a custom view as well as a subcollection that refers to another entity, you can
229
+ * either specify the path to the custom view or the path to the subcollection.
230
+ */
231
+ defaultSelectedView?: string | DefaultSelectedViewBuilder;
232
+ /**
233
+ * Should the ID of this collection be hidden from the form view.
234
+ */
235
+ hideIdFromForm?: boolean;
236
+ /**
237
+ * Should the ID of this collection be hidden from the grid view.
238
+ */
239
+ hideIdFromCollection?: boolean;
240
+ /**
241
+ * If set to true, the form will be auto-saved when the user changes
242
+ * the value of a field.
243
+ * Defaults to false.
244
+ * You can't use this prop if you are using a `customId`
245
+ */
246
+ formAutoSave?: boolean;
247
+ /**
248
+ *
249
+ */
250
+ exportable?: boolean | ExportConfig<UserType>;
251
+ /**
252
+ * User id of the owner of this collection. This is used only by plugins, or if you
253
+ * are writing custom code
254
+ */
255
+ ownerId?: string;
256
+ overrides?: EntityOverrides;
257
+ }
258
+ /**
259
+ * Parameter passed to the `Actions` prop in the collection configuration.
260
+ * The component will receive this prop when it is rendered in the collection
261
+ * toolbar.
262
+ *
263
+ * @group Models
264
+ */
265
+ export interface CollectionActionsProps<M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
266
+ /**
267
+ * Full collection path of this entity. This is the full path, like
268
+ * `users/1234/addresses`
269
+ */
270
+ path: string;
271
+ /**
272
+ * Path of the last collection, like `addresses`
273
+ */
274
+ relativePath: string;
275
+ /**
276
+ * Array of the parent path segments like `['users']`
277
+ */
278
+ parentCollectionIds: string[];
279
+ /**
280
+ * The collection configuration
281
+ */
282
+ collection: EC;
283
+ /**
284
+ * Use this controller to get the selected entities and to update the
285
+ * selected entities state.
286
+ */
287
+ selectionController: SelectionController<M>;
288
+ /**
289
+ * Use this controller to get the table controller and to update the
290
+ * table controller state.
291
+ */
292
+ tableController: EntityTableController<M>;
293
+ /**
294
+ * Context of the app status
295
+ */
296
+ context: FireCMSContext<UserType>;
297
+ /**
298
+ * Count of the entities in this collection
299
+ */
300
+ collectionEntitiesCount: number;
301
+ }
302
+ /**
303
+ * Use this controller to retrieve the selected entities or modify them in
304
+ * an {@link EntityCollection}
305
+ * If you want to pass a `SelectionController` to
306
+ * @group Models
307
+ */
308
+ export type SelectionController<M extends Record<string, any> = any> = {
309
+ selectedEntities: Entity<M>[];
310
+ setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
311
+ isEntitySelected: (entity: Entity<M>) => boolean;
312
+ toggleEntitySelection: (entity: Entity<M>) => void;
313
+ };
314
+ /**
315
+ * Filter conditions in a `Query.where()` clause are specified using the
316
+ * strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
317
+ * @group Models
318
+ */
319
+ export type WhereFilterOp = "<" | "<=" | "==" | "!=" | ">=" | ">" | "array-contains" | "in" | "not-in" | "array-contains-any";
320
+ /**
321
+ * Used to define filters applied in collections
322
+ *
323
+ * e.g. `{ age: [">=", 18] }`
324
+ *
325
+ * @group Models
326
+ */
327
+ export type FilterValues<Key extends string> = Partial<Record<Key, [WhereFilterOp, any]>>;
328
+ /**
329
+ * Used to indicate valid filter combinations (e.g. created in Firestore)
330
+ * If the user selects a specific filter/sort combination, the CMS checks if it's
331
+ * valid, otherwise it reverts to the simpler valid case
332
+ * @group Models
333
+ */
334
+ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" | "desc">>;
335
+ /**
336
+ * Sizes in which a collection can be rendered
337
+ * @group Models
338
+ */
339
+ export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
340
+ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, UserType extends User = User> = {
341
+ entity: Entity<M>;
342
+ context: FireCMSContext<UserType>;
343
+ };
344
+ /**
345
+ * Use this interface for adding additional fields to entity collection views.
346
+ * If you need to do some async loading you can use {@link AsyncPreviewComponent}
347
+ * @group Models
348
+ */
349
+ export interface AdditionalFieldDelegate<M extends Record<string, any> = any, UserType extends User = User> {
350
+ /**
351
+ * ID of this column. You can use this id in the `properties` field of the
352
+ * collection in any order you want
353
+ */
354
+ key: string;
355
+ /**
356
+ * Header of this column
357
+ */
358
+ name: string;
359
+ /**
360
+ * Width of the generated column in pixels
361
+ */
362
+ width?: number;
363
+ /**
364
+ * Builder for the content of the cell for this column
365
+ */
366
+ Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, UserType>>;
367
+ /**
368
+ * If this column needs to update dynamically based on other properties,
369
+ * you can define an array of keys as strings with the
370
+ * `dependencies` prop.
371
+ * e.g. ["name", "surname"]
372
+ * This is a performance optimization, if you don't define dependencies
373
+ * it will be updated in every render.
374
+ */
375
+ dependencies?: Extract<keyof M, string>[];
376
+ /**
377
+ * Use this prop to define the value of the column as a string or number.
378
+ * This is the value that will be used for exporting the collection.
379
+ * If `Builder` is defined, this prop will be ignored in the collection
380
+ * view.
381
+ * @param entity
382
+ */
383
+ value?: (props: {
384
+ entity: Entity<M>;
385
+ context: FireCMSContext;
386
+ }) => string | number | Promise<string | number> | undefined;
387
+ }
388
+ /**
389
+ * You can use this builder to render a custom panel in the entity detail view.
390
+ * It gets rendered as a tab.
391
+ * @group Models
392
+ */
393
+ export type EntityCustomView<M extends Record<string, any> = any> = {
394
+ key: string;
395
+ name: string;
396
+ Builder?: React.ComponentType<EntityCustomViewParams<M>>;
397
+ };
398
+ /**
399
+ * Parameters passed to the builder in charge of rendering a custom panel for
400
+ * an entity view.
401
+ * @group Models
402
+ */
403
+ export interface EntityCustomViewParams<M extends Record<string, any> = any> {
404
+ /**
405
+ * collection used by this entity
406
+ */
407
+ collection: EntityCollection<M>;
408
+ /**
409
+ * Entity that this view refers to. It can be undefined if the entity is new
410
+ */
411
+ entity?: Entity<M>;
412
+ /**
413
+ * Modified values in the form that have not been saved yet.
414
+ * If the entity is not new and the values are not modified, these values
415
+ * are the same as in `entity`
416
+ */
417
+ modifiedValues?: EntityValues<M>;
418
+ /**
419
+ * Use the form context to access the form state and methods
420
+ */
421
+ formContext: FormContext;
422
+ }
423
+ export type InferCollectionType<S extends EntityCollection> = S extends EntityCollection<infer M> ? M : never;
424
+ /**
425
+ * Used in the {@link EntityCollection#defaultSelectedView} to define the default
426
+ * @group Models
427
+ */
428
+ export type DefaultSelectedViewBuilder = (params: DefaultSelectedViewParams) => string | undefined;
429
+ /**
430
+ * Used in the {@link EntityCollection#defaultSelectedView} to define the default
431
+ * @group Models
432
+ */
433
+ export type DefaultSelectedViewParams = {
434
+ status?: EntityStatus;
435
+ entityId?: string;
436
+ };
437
+ /**
438
+ * You can use this controller to control the table view of a collection.
439
+ */
440
+ export type EntityTableController<M extends Record<string, any> = any> = {
441
+ data: Entity<M>[];
442
+ dataLoading: boolean;
443
+ noMoreToLoad: boolean;
444
+ dataLoadingError?: Error;
445
+ filterValues?: FilterValues<Extract<keyof M, string>>;
446
+ setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
447
+ sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
448
+ setSortBy?: (sortBy: [Extract<keyof M, string>, "asc" | "desc"]) => void;
449
+ searchString?: string;
450
+ setSearchString?: (searchString?: string) => void;
451
+ clearFilter?: () => void;
452
+ itemCount?: number;
453
+ setItemCount?: (itemCount: number) => void;
454
+ paginationEnabled?: boolean;
455
+ pageSize?: number;
456
+ checkFilterCombination?: (filterValues: FilterValues<any>, sortBy?: [string, "asc" | "desc"]) => boolean;
457
+ popupCell?: SelectedCellProps<M>;
458
+ setPopupCell?: (popupCell?: SelectedCellProps<M>) => void;
459
+ onAddColumn?: (column: string) => void;
460
+ };
461
+ export type SelectedCellProps<M extends Record<string, any>> = {
462
+ propertyKey: Extract<keyof M, string>;
463
+ cellRect: DOMRect;
464
+ width: number;
465
+ height: number;
466
+ entity: Entity<M>;
467
+ };
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ import { EntityLinkBuilder } from "./entity_link_builder";
3
+ import { FireCMSPlugin } from "./plugins";
4
+ import { EntityCustomView } from "./collections";
5
+ import { Locale } from "./locales";
6
+ import { PropertyConfig } from "./property_config";
7
+ export type CustomizationController = {
8
+ /**
9
+ * Builder for generating utility links for entities
10
+ */
11
+ entityLinkBuilder?: EntityLinkBuilder;
12
+ /**
13
+ * Use plugins to modify the behaviour of the CMS.
14
+ */
15
+ plugins?: FireCMSPlugin<any, any, any>[];
16
+ /**
17
+ * List of additional custom views for entities.
18
+ * You can use the key to reference the custom view in
19
+ * the `entityViews` prop of a collection.
20
+ *
21
+ * You can also define an entity view from the UI.
22
+ */
23
+ entityViews?: EntityCustomView[];
24
+ /**
25
+ * Format of the dates in the CMS.
26
+ * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
27
+ */
28
+ dateTimeFormat?: string;
29
+ /**
30
+ * Locale of the CMS, currently only affecting dates
31
+ */
32
+ locale?: Locale;
33
+ /**
34
+ * Record of custom form fields to be used in the CMS.
35
+ * You can use the key to reference the custom field in
36
+ * the `propertyConfig` prop of a property in a collection.
37
+ */
38
+ propertyConfigs: Record<string, PropertyConfig>;
39
+ components?: {
40
+ /**
41
+ * Component to render when a reference is missing
42
+ */
43
+ missingReference?: React.ComponentType<{
44
+ path: string;
45
+ }>;
46
+ };
47
+ };