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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/README.md +1 -1
  2. package/dist/components/ArrayContainer.d.ts +42 -0
  3. package/dist/components/CircularProgressCenter.d.ts +11 -0
  4. package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
  5. package/dist/components/DeleteEntityDialog.d.ts +12 -0
  6. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +35 -0
  7. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
  8. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
  9. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
  10. package/dist/components/EntityCollectionTable/SimpleEntityCollectionTable.d.ts +95 -0
  11. package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
  12. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
  13. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  14. package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
  15. package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
  16. package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
  17. package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
  18. package/dist/components/EntityCollectionTable/index.d.ts +8 -0
  19. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  20. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  21. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  22. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  23. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  24. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  25. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  26. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  27. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  28. package/dist/components/EntityCollectionTable/types.d.ts +53 -0
  29. package/dist/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.d.ts +32 -0
  30. package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
  31. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
  32. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  33. package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
  34. package/dist/components/EntityPreview.d.ts +11 -0
  35. package/dist/components/ErrorBoundary.d.ts +11 -0
  36. package/dist/components/ErrorTooltip.d.ts +2 -0
  37. package/dist/components/ErrorView.d.ts +19 -0
  38. package/dist/components/FieldConfigBadge.d.ts +4 -0
  39. package/dist/components/FireCMSAppBar.d.ts +26 -0
  40. package/dist/components/FireCMSLogo.d.ts +7 -0
  41. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  42. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  43. package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
  44. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  45. package/dist/components/HomePage/index.d.ts +3 -0
  46. package/dist/components/LabelWithIcon.d.ts +14 -0
  47. package/dist/components/NotFoundPage.d.ts +1 -0
  48. package/dist/components/ReferenceSelectionInner.d.ts +58 -0
  49. package/dist/components/ReferenceWidget.d.ts +28 -0
  50. package/dist/components/SearchIconsView.d.ts +5 -0
  51. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  52. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  53. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  54. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  55. package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
  56. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  57. package/dist/components/VirtualTable/common.d.ts +2 -0
  58. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  59. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  60. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  61. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  62. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  63. package/dist/components/VirtualTable/index.d.ts +2 -0
  64. package/dist/components/VirtualTable/types.d.ts +34 -0
  65. package/dist/components/index.d.ts +21 -0
  66. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  67. package/dist/contexts/DataSourceContext.d.ts +3 -0
  68. package/dist/contexts/DialogsProvider.d.ts +4 -0
  69. package/dist/contexts/ModeController.d.ts +4 -0
  70. package/dist/contexts/NavigationContext.d.ts +3 -0
  71. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  72. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  73. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  74. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  75. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  76. package/dist/contexts/index.d.ts +3 -0
  77. package/dist/core/Drawer.d.ts +23 -0
  78. package/dist/core/EntitySidePanel.d.ts +10 -0
  79. package/dist/core/FireCMS.d.ts +14 -0
  80. package/dist/core/NavigationRoutes.d.ts +21 -0
  81. package/dist/core/Scaffold.d.ts +52 -0
  82. package/dist/core/SideDialogs.d.ts +23 -0
  83. package/dist/core/field_configs.d.ts +7 -0
  84. package/dist/core/index.d.ts +10 -0
  85. package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
  86. package/dist/core/useBuildModeController.d.ts +6 -0
  87. package/dist/form/EntityForm.d.ts +75 -0
  88. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  89. package/dist/form/components/CustomIdField.d.ts +9 -0
  90. package/dist/form/components/ErrorFocus.d.ts +4 -0
  91. package/dist/form/components/FieldHelperText.d.ts +12 -0
  92. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  93. package/dist/form/components/StorageItemPreview.d.ts +13 -0
  94. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  95. package/dist/form/components/SubmitListener.d.ts +1 -0
  96. package/dist/form/components/SwitchControl.d.ts +8 -0
  97. package/dist/form/components/index.d.ts +3 -0
  98. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  99. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  100. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  101. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  102. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  103. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  104. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  105. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  106. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  107. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  108. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  109. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  110. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
  111. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  112. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  113. package/dist/form/index.d.ts +20 -0
  114. package/dist/form/useClearRestoreValue.d.ts +13 -0
  115. package/dist/form/validation.d.ts +25 -0
  116. package/dist/hooks/data/delete.d.ts +37 -0
  117. package/dist/hooks/data/save.d.ts +42 -0
  118. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  119. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  120. package/dist/hooks/data/useDataSource.d.ts +6 -0
  121. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  122. package/dist/hooks/index.d.ts +19 -0
  123. package/dist/hooks/useAuthController.d.ts +11 -0
  124. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  125. package/dist/hooks/useClipboard.d.ts +57 -0
  126. package/dist/hooks/useDialogsController.d.ts +11 -0
  127. package/dist/hooks/useFireCMSContext.d.ts +12 -0
  128. package/dist/hooks/useLargeLayout.d.ts +1 -0
  129. package/dist/hooks/useModeController.d.ts +20 -0
  130. package/dist/hooks/useNavigationController.d.ts +9 -0
  131. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  132. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  133. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  134. package/dist/hooks/useSideEntityController.d.ts +12 -0
  135. package/dist/hooks/useSnackbarController.d.ts +41 -0
  136. package/dist/hooks/useStorageSource.d.ts +6 -0
  137. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  138. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  139. package/dist/index.d.ts +8 -0
  140. package/dist/index.es.js +15810 -26791
  141. package/dist/index.es.js.map +1 -1
  142. package/dist/index.umd.js +5 -1027
  143. package/dist/index.umd.js.map +1 -1
  144. package/dist/internal/EntityView.d.ts +22 -0
  145. package/dist/internal/common.d.ts +3 -0
  146. package/dist/internal/useBuildDataSource.d.ts +22 -0
  147. package/dist/internal/useBuildNavigationController.d.ts +14 -0
  148. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  149. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  150. package/dist/internal/useLocaleConfig.d.ts +1 -0
  151. package/dist/internal/useRestoreScroll.d.ts +6 -0
  152. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  153. package/dist/preview/PropertyPreview.d.ts +7 -0
  154. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  155. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  156. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  157. package/dist/preview/components/BooleanPreview.d.ts +7 -0
  158. package/dist/preview/components/DatePreview.d.ts +7 -0
  159. package/dist/preview/components/EmptyValue.d.ts +4 -0
  160. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  161. package/dist/preview/components/ImagePreview.d.ts +12 -0
  162. package/dist/preview/components/ReferencePreview.d.ts +22 -0
  163. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  164. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  165. package/dist/preview/index.d.ts +23 -0
  166. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  167. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  168. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  169. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  170. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  171. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  172. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  173. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  174. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  175. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  176. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  177. package/dist/preview/util.d.ts +7 -0
  178. package/dist/types/analytics.d.ts +1 -0
  179. package/dist/types/appcheck.d.ts +26 -0
  180. package/dist/types/auth.d.ts +40 -0
  181. package/dist/types/collections.d.ts +451 -0
  182. package/dist/types/datasource.d.ts +262 -0
  183. package/dist/types/dialogs_controller.d.ts +32 -0
  184. package/dist/types/entities.d.ts +57 -0
  185. package/dist/types/entity_actions.d.ts +35 -0
  186. package/dist/types/entity_callbacks.d.ts +171 -0
  187. package/dist/types/entity_link_builder.d.ts +7 -0
  188. package/dist/types/export_import.d.ts +21 -0
  189. package/dist/types/fields.d.ts +181 -0
  190. package/dist/types/firecms.d.ts +151 -0
  191. package/dist/types/firecms_context.d.ts +110 -0
  192. package/dist/types/index.d.ts +26 -0
  193. package/dist/types/local_config_persistence.d.ts +21 -0
  194. package/dist/types/locales.d.ts +4 -0
  195. package/dist/types/modify_collections.d.ts +5 -0
  196. package/dist/types/navigation.d.ts +178 -0
  197. package/dist/types/permissions.d.ts +63 -0
  198. package/dist/types/plugins.d.ts +181 -0
  199. package/dist/types/properties.d.ts +681 -0
  200. package/dist/types/property_config.d.ts +42 -0
  201. package/dist/types/resolved_entities.d.ts +98 -0
  202. package/dist/types/side_dialogs_controller.d.ts +57 -0
  203. package/dist/types/side_entity_controller.d.ts +83 -0
  204. package/dist/types/storage.d.ts +82 -0
  205. package/dist/types/user.d.ts +36 -0
  206. package/dist/util/arrays.d.ts +1 -0
  207. package/dist/util/builders.d.ts +64 -0
  208. package/dist/util/collections.d.ts +3 -0
  209. package/dist/util/common.d.ts +2 -0
  210. package/dist/util/dates.d.ts +1 -0
  211. package/dist/util/entities.d.ts +28 -0
  212. package/dist/util/enums.d.ts +7 -0
  213. package/dist/util/flatten_object.d.ts +3 -0
  214. package/dist/util/hash.d.ts +1 -0
  215. package/dist/util/icon_list.d.ts +1 -0
  216. package/dist/util/icon_synonyms.d.ts +1950 -0
  217. package/dist/util/icons.d.ts +4 -0
  218. package/dist/util/index.d.ts +22 -0
  219. package/dist/util/join_collections.d.ts +9 -0
  220. package/dist/util/make_properties_editable.d.ts +3 -0
  221. package/dist/util/navigation_from_path.d.ts +24 -0
  222. package/dist/util/navigation_utils.d.ts +20 -0
  223. package/dist/util/objects.d.ts +10 -0
  224. package/dist/util/os.d.ts +2 -0
  225. package/dist/util/parent_references_from_path.d.ts +6 -0
  226. package/dist/util/paths.d.ts +14 -0
  227. package/dist/util/permissions.d.ts +5 -0
  228. package/dist/util/plurals.d.ts +18 -0
  229. package/dist/util/property_utils.d.ts +23 -0
  230. package/dist/util/references.d.ts +2 -0
  231. package/dist/util/regexp.d.ts +7 -0
  232. package/dist/util/resolutions.d.ts +64 -0
  233. package/dist/util/storage.d.ts +3 -0
  234. package/dist/util/strings.d.ts +6 -0
  235. package/dist/util/useDebounce.d.ts +1 -0
  236. package/dist/util/useStorageUploadController.d.ts +36 -0
  237. package/dist/util/useTraceUpdate.d.ts +1 -0
  238. package/package.json +112 -142
  239. package/src/components/ArrayContainer.tsx +369 -0
  240. package/src/components/CircularProgressCenter.tsx +26 -0
  241. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  242. package/src/components/DeleteEntityDialog.tsx +207 -0
  243. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +174 -0
  244. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +496 -0
  245. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
  246. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
  247. package/src/components/EntityCollectionTable/SimpleEntityCollectionTable.tsx +369 -0
  248. package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
  249. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
  250. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  251. package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
  252. package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
  253. package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
  254. package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
  255. package/src/components/EntityCollectionTable/index.tsx +20 -0
  256. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
  257. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
  258. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  259. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  260. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
  261. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  262. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
  263. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  264. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  265. package/src/components/EntityCollectionTable/types.tsx +58 -0
  266. package/src/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.tsx +225 -0
  267. package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
  268. package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
  269. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
  270. package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
  271. package/src/components/EntityPreview.tsx +83 -0
  272. package/src/components/ErrorBoundary.tsx +40 -0
  273. package/src/components/ErrorTooltip.tsx +11 -0
  274. package/src/components/ErrorView.tsx +52 -0
  275. package/src/components/FieldConfigBadge.tsx +17 -0
  276. package/src/components/FireCMSAppBar.tsx +157 -0
  277. package/src/components/FireCMSLogo.tsx +73 -0
  278. package/src/components/HomePage/DefaultHomePage.tsx +209 -0
  279. package/src/components/HomePage/FavouritesView.tsx +64 -0
  280. package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
  281. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  282. package/src/components/HomePage/index.tsx +3 -0
  283. package/src/components/LabelWithIcon.tsx +33 -0
  284. package/src/components/NotFoundPage.tsx +25 -0
  285. package/src/components/ReferenceSelectionInner.tsx +364 -0
  286. package/src/components/ReferenceWidget.tsx +145 -0
  287. package/src/components/SearchIconsView.tsx +75 -0
  288. package/src/components/VirtualTable/VirtualTable.tsx +402 -0
  289. package/src/components/VirtualTable/VirtualTableCell.tsx +32 -0
  290. package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
  291. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  292. package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
  293. package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
  294. package/src/components/VirtualTable/common.tsx +18 -0
  295. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  296. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  297. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  298. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  299. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  300. package/src/components/VirtualTable/index.tsx +2 -0
  301. package/src/components/VirtualTable/types.tsx +44 -0
  302. package/src/components/index.tsx +31 -0
  303. package/src/contexts/AuthControllerContext.tsx +4 -0
  304. package/src/contexts/DataSourceContext.tsx +4 -0
  305. package/src/contexts/DialogsProvider.tsx +52 -0
  306. package/src/contexts/ModeController.tsx +13 -0
  307. package/src/contexts/NavigationContext.tsx +4 -0
  308. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  309. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  310. package/src/contexts/SnackbarProvider.tsx +12 -0
  311. package/src/contexts/StorageSourceContext.tsx +4 -0
  312. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  313. package/src/contexts/index.ts +3 -0
  314. package/src/core/Drawer.tsx +161 -0
  315. package/src/core/EntitySidePanel.tsx +89 -0
  316. package/src/core/FireCMS.tsx +184 -0
  317. package/src/core/NavigationRoutes.tsx +118 -0
  318. package/src/core/Scaffold.tsx +278 -0
  319. package/src/core/SideDialogs.tsx +156 -0
  320. package/src/core/field_configs.tsx +400 -0
  321. package/src/core/index.tsx +14 -0
  322. package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
  323. package/src/core/useBuildModeController.tsx +60 -0
  324. package/src/form/EntityForm.tsx +646 -0
  325. package/src/form/PropertyFieldBinding.tsx +313 -0
  326. package/src/form/components/CustomIdField.tsx +124 -0
  327. package/src/form/components/ErrorFocus.tsx +51 -0
  328. package/src/form/components/FieldHelperText.tsx +58 -0
  329. package/src/form/components/FormikArrayContainer.tsx +44 -0
  330. package/src/form/components/StorageItemPreview.tsx +66 -0
  331. package/src/form/components/StorageUploadProgress.tsx +104 -0
  332. package/src/form/components/SubmitListener.tsx +32 -0
  333. package/src/form/components/SwitchControl.tsx +39 -0
  334. package/src/form/components/index.tsx +3 -0
  335. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
  336. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
  337. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  338. package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
  339. package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
  340. package/src/form/field_bindings/MapFieldBinding.tsx +136 -0
  341. package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
  342. package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
  343. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
  344. package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
  345. package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
  346. package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
  347. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
  348. package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
  349. package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
  350. package/src/form/index.tsx +42 -0
  351. package/src/form/useClearRestoreValue.tsx +35 -0
  352. package/src/form/validation.ts +413 -0
  353. package/src/hooks/data/delete.ts +101 -0
  354. package/src/hooks/data/save.ts +165 -0
  355. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  356. package/src/hooks/data/useDataOrder.ts +26 -0
  357. package/src/hooks/data/useDataSource.tsx +9 -0
  358. package/src/hooks/data/useEntityFetch.tsx +129 -0
  359. package/src/hooks/index.tsx +23 -0
  360. package/src/hooks/useAuthController.tsx +14 -0
  361. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  362. package/src/hooks/useClipboard.tsx +158 -0
  363. package/src/hooks/useDialogsController.tsx +14 -0
  364. package/src/hooks/useFireCMSContext.tsx +50 -0
  365. package/src/hooks/useLargeLayout.tsx +97 -0
  366. package/src/hooks/useModeController.tsx +24 -0
  367. package/src/hooks/useNavigationController.tsx +12 -0
  368. package/src/hooks/useReferenceDialog.tsx +56 -0
  369. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  370. package/src/hooks/useSideDialogsController.tsx +21 -0
  371. package/src/hooks/useSideEntityController.tsx +15 -0
  372. package/src/hooks/useSnackbarController.tsx +76 -0
  373. package/src/hooks/useStorageSource.tsx +9 -0
  374. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  375. package/src/hooks/useVerifyLicense.tsx +1 -0
  376. package/src/index.ts +8 -0
  377. package/src/internal/EntityView.tsx +576 -0
  378. package/src/internal/common.tsx +5 -0
  379. package/src/internal/useBuildDataSource.ts +358 -0
  380. package/src/internal/useBuildNavigationController.tsx +371 -0
  381. package/src/internal/useBuildSideDialogsController.tsx +126 -0
  382. package/src/internal/useBuildSideEntityController.tsx +172 -0
  383. package/src/internal/useLocaleConfig.tsx +18 -0
  384. package/src/internal/useRestoreScroll.tsx +48 -0
  385. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  386. package/src/preview/PropertyPreview.tsx +222 -0
  387. package/src/preview/PropertyPreviewProps.tsx +59 -0
  388. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  389. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  390. package/src/preview/components/BooleanPreview.tsx +11 -0
  391. package/src/preview/components/DatePreview.tsx +27 -0
  392. package/src/preview/components/EmptyValue.tsx +10 -0
  393. package/src/preview/components/EnumValuesChip.tsx +38 -0
  394. package/src/preview/components/ImagePreview.tsx +106 -0
  395. package/src/preview/components/ReferencePreview.tsx +249 -0
  396. package/src/preview/components/StorageThumbnail.tsx +84 -0
  397. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  398. package/src/preview/index.ts +27 -0
  399. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  400. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  401. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  402. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  403. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  404. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  405. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  406. package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
  407. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  408. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  409. package/src/preview/property_previews/StringPropertyPreview.tsx +59 -0
  410. package/src/preview/util.ts +31 -0
  411. package/src/types/analytics.ts +34 -0
  412. package/src/types/appcheck.ts +29 -0
  413. package/src/types/auth.tsx +49 -0
  414. package/src/types/collections.ts +530 -0
  415. package/src/types/datasource.ts +389 -0
  416. package/src/types/dialogs_controller.tsx +33 -0
  417. package/src/types/entities.ts +76 -0
  418. package/src/types/entity_actions.tsx +39 -0
  419. package/src/types/entity_callbacks.ts +209 -0
  420. package/src/types/entity_link_builder.ts +8 -0
  421. package/src/types/export_import.ts +26 -0
  422. package/src/types/fields.tsx +220 -0
  423. package/src/types/firecms.tsx +175 -0
  424. package/src/types/firecms_context.tsx +128 -0
  425. package/src/types/index.ts +26 -0
  426. package/src/types/local_config_persistence.tsx +23 -0
  427. package/src/types/locales.ts +81 -0
  428. package/src/types/modify_collections.tsx +6 -0
  429. package/src/types/navigation.ts +214 -0
  430. package/src/types/permissions.ts +76 -0
  431. package/src/types/plugins.tsx +219 -0
  432. package/src/types/properties.ts +851 -0
  433. package/src/types/property_config.tsx +72 -0
  434. package/src/types/resolved_entities.ts +148 -0
  435. package/src/types/side_dialogs_controller.tsx +68 -0
  436. package/src/types/side_entity_controller.tsx +96 -0
  437. package/src/types/storage.ts +96 -0
  438. package/src/types/user.ts +37 -0
  439. package/src/util/arrays.ts +3 -0
  440. package/src/util/builders.ts +139 -0
  441. package/src/util/collections.ts +50 -0
  442. package/src/util/common.tsx +2 -0
  443. package/src/util/dates.ts +1 -0
  444. package/src/util/entities.ts +196 -0
  445. package/src/util/enums.ts +56 -0
  446. package/src/util/flatten_object.ts +45 -0
  447. package/src/util/hash.ts +11 -0
  448. package/src/util/icon_list.ts +17 -0
  449. package/src/util/icon_synonyms.ts +1950 -0
  450. package/src/util/icons.tsx +45 -0
  451. package/src/util/index.ts +22 -0
  452. package/src/util/join_collections.ts +172 -0
  453. package/src/util/make_properties_editable.ts +29 -0
  454. package/src/util/navigation_from_path.ts +107 -0
  455. package/src/util/navigation_utils.ts +111 -0
  456. package/src/util/objects.ts +168 -0
  457. package/src/util/os.ts +13 -0
  458. package/src/util/parent_references_from_path.ts +56 -0
  459. package/src/util/paths.ts +27 -0
  460. package/src/util/permissions.ts +80 -0
  461. package/src/util/plurals.ts +190 -0
  462. package/src/util/property_utils.tsx +130 -0
  463. package/src/util/references.ts +20 -0
  464. package/src/util/regexp.ts +32 -0
  465. package/src/util/resolutions.ts +399 -0
  466. package/src/util/storage.ts +92 -0
  467. package/src/util/strings.ts +62 -0
  468. package/src/util/useDebounce.ts +25 -0
  469. package/src/util/useStorageUploadController.tsx +243 -0
  470. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,530 @@
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
+
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
+ /**
22
+ * You can set an alias that will be used internally instead of the `path`.
23
+ * The `alias` value will be used to determine the URL of the collection,
24
+ * while `path` will still be used in the datasource.
25
+ * Note that you can use this value in reference properties too.
26
+ */
27
+ id: string;
28
+
29
+ /**
30
+ * Name of the collection, typically plural.
31
+ * E.g. `Products`, `Blog`
32
+ */
33
+ name: string;
34
+
35
+ /**
36
+ * Singular name of an entry in this collection
37
+ * E.g. `Product`, `Blog entry`
38
+ */
39
+ singularName?: string;
40
+
41
+ /**
42
+ * Optional description of this view. You can use Markdown.
43
+ */
44
+ description?: string;
45
+
46
+ /**
47
+ * Relative path of this view to its parent.
48
+ * If this view is in the root the path is equal to the absolute one.
49
+ * This path also determines the URL in FireCMS, unless an alias is specified
50
+ */
51
+ path: string;
52
+
53
+ /**
54
+ * If this collection is a top level navigation entry, you can set this
55
+ * property to `true` to indicate that this collection is a collection group.
56
+ */
57
+ collectionGroup?: boolean;
58
+
59
+ /**
60
+ * Icon key to use in this collection.
61
+ * You can use any of the icons in the Material specs:
62
+ * https://fonts.google.com/icons
63
+ * e.g. 'account_tree' or 'person'
64
+ */
65
+ icon?: string;
66
+
67
+ /**
68
+ * Optional field used to group top level navigation entries under a~
69
+ * navigation view. If you set this value in a subcollection it has no
70
+ * effect.
71
+ */
72
+ group?: string;
73
+
74
+ /**
75
+ * Set of properties that compose an entity
76
+ */
77
+ properties: PropertiesOrBuilders<M>;
78
+
79
+ /**
80
+ * Can this collection be edited by the end user.
81
+ * Defaults to `true`.
82
+ * Keep in mind that you can also set this prop to individual properties.
83
+ */
84
+ editable?: boolean;
85
+
86
+ /**
87
+ * Order in which the properties are displayed.
88
+ * If you are specifying your collection as code, the order is the same as the
89
+ * one you define in `properties`. Additional columns are added at the
90
+ * end of the list, if the order is not specified.
91
+ * You can use this prop to hide some properties from the table view.
92
+ * Note that if you set this prop, other ways to hide fields, like
93
+ * `hidden` in the property definition, will be ignored.
94
+ * `propertiesOrder` has precedence over `hidden`.
95
+ * - For properties use the property key.
96
+ * - For additional columns use the column id.
97
+ * - If you have subcollections, you get a column for each subcollection,
98
+ * with the path (or alias) as the subcollection, prefixed with
99
+ * `subcollection:`. e.g. `subcollection:orders`.
100
+ * - If you are using a collection group, you will also have an
101
+ * additional `collectionGroupParent` column.
102
+ */
103
+ propertiesOrder?: Extract<keyof M, string>[];
104
+
105
+ /**
106
+ * If enabled, content is loaded in batches. If `false` all entities in the
107
+ * collection are loaded.
108
+ * You can specify a number to specify the pagination size (50 by default)
109
+ * Defaults to `true`
110
+ */
111
+ pagination?: boolean | number;
112
+
113
+ /**
114
+ * Flag to indicate if a search bar should be displayed on top of
115
+ * the collection table.
116
+ */
117
+ textSearchEnabled?: boolean;
118
+
119
+ /**
120
+ * Permissions the logged-in user can perform on this collection.
121
+ * If not specified everything defaults to `true`.
122
+ */
123
+ permissions?: Permissions | PermissionsBuilder<EntityCollection, UserType, M>;
124
+
125
+ /**
126
+ * Are the entities in this collection selectable. Defaults to `true`
127
+ */
128
+ selectionEnabled?: boolean;
129
+
130
+ /**
131
+ * You can add subcollections to your entity in the same way you define the root
132
+ * collections. The collections added here will be displayed when opening
133
+ * the side dialog of an entity.
134
+ */
135
+ subcollections?: EntityCollection<any, any>[];
136
+
137
+ /**
138
+ * This interface defines all the callbacks that can be used when an entity
139
+ * is being created, updated or deleted.
140
+ * Useful for adding your own logic or blocking the execution of the operation.
141
+ */
142
+ callbacks?: EntityCallbacks<M>;
143
+
144
+ /**
145
+ * Builder for rendering additional components such as buttons in the
146
+ * collection toolbar
147
+ */
148
+ Actions?: React.ComponentType<CollectionActionsProps> | React.ComponentType<CollectionActionsProps>[];
149
+
150
+ /**
151
+ * You can define additional actions that can be performed on the entities
152
+ * in this collection. These actions can be displayed in the collection
153
+ * view or in the entity view.
154
+ *
155
+ * You can use the `onClick` method to implement your own logic.
156
+ * In the `context` prop you can access all the controllers of FireCMS.
157
+ *
158
+ * ```
159
+ * const archiveEntityAction: EntityAction = {
160
+ * icon: <ArchiveIcon/>,
161
+ * name: "Archive",
162
+ * onClick({
163
+ * entity,
164
+ * collection,
165
+ * context,
166
+ * }): Promise<void> {
167
+ * // Add your code here
168
+ * return Promise.resolve(undefined);
169
+ * }
170
+ * }
171
+ * ```
172
+ */
173
+ entityActions?: EntityAction<M, UserType>[];
174
+
175
+ /**
176
+ * Pass your own selection controller if you want to control selected
177
+ * entities externally.
178
+ * @see useSelectionController
179
+ */
180
+ selectionController?: SelectionController<M>;
181
+
182
+ /**
183
+ * If this property is not set, the property will be created by the
184
+ * datasource.
185
+ * You can set the value to true to allow the users to choose the ID.
186
+ * You can also pass a set of values (as an EnumValues object) to allow them
187
+ * to pick from only those.
188
+ */
189
+ customId?: boolean | EnumValues | "optional";
190
+
191
+ /**
192
+ * Force a filter in this view. If applied, the rest of the filters will
193
+ * be disabled. Filters applied with this prop cannot be changed.
194
+ * e.g. `forceFilter: { age: [">=", 18] }`
195
+ */
196
+ forceFilter?: FilterValues<Extract<keyof M, string>>;
197
+
198
+ /**
199
+ * Initial filters applied to the collection this collection is related to.
200
+ * Defaults to none. Filters applied with this prop can be changed.
201
+ * e.g. `initialFilter: { age: [">=", 18] }`
202
+ */
203
+ initialFilter?: FilterValues<Extract<keyof M, string>>; // setting FilterValues<M> can break defining collections by code
204
+
205
+ /**
206
+ * Default sort applied to this collection.
207
+ * When setting this prop, entities will have a default order
208
+ * applied in the collection.
209
+ * e.g. `initialSort: ["order", "asc"]`
210
+ */
211
+ initialSort?: [Extract<keyof M, string>, "asc" | "desc"];
212
+
213
+ /**
214
+ * Array of builders for rendering additional panels in an entity view.
215
+ * Useful if you need to render custom views.
216
+ * You can either define the custom view inline or pass a reference to
217
+ * a custom view defined in the main configuration under `entityViews`
218
+ */
219
+ entityViews?: (string | EntityCustomView<M>)[];
220
+
221
+ /**
222
+ * You can add additional fields to the collection view by implementing
223
+ * an additional field delegate.
224
+ */
225
+ additionalFields?: AdditionalFieldDelegate<M, UserType>[];
226
+
227
+ /**
228
+ * Default size of the rendered collection
229
+ */
230
+ defaultSize?: CollectionSize;
231
+
232
+ /**
233
+ * Can the elements in this collection be edited inline in the collection
234
+ * view. If this flag is set to false but `permissions.edit` is `true`, entities
235
+ * can still be edited in the side panel
236
+ */
237
+ inlineEditing?: boolean;
238
+
239
+ /**
240
+ * Should this collection be hidden from the main navigation panel, if
241
+ * it is at the root level, or in the entity side panel if it's a
242
+ * subcollection.
243
+ * It will still be accessible if you reach the specified path.
244
+ * You can also use this collection as a reference target.
245
+ */
246
+ hideFromNavigation?: boolean;
247
+
248
+ /**
249
+ * If you want to open custom views or subcollections by default when opening the edit
250
+ * view of an entity, you can specify the path to the view here.
251
+ * The path is relative to the current collection. For example if you have a collection
252
+ * that has a custom view as well as a subcollection that refers to another entity, you can
253
+ * either specify the path to the custom view or the path to the subcollection.
254
+ */
255
+ defaultSelectedView?: string | DefaultSelectedViewBuilder;
256
+
257
+ /**
258
+ * Should the ID of this collection be hidden from the form view.
259
+ */
260
+ hideIdFromForm?: boolean;
261
+
262
+ /**
263
+ * Should the ID of this collection be hidden from the grid view.
264
+ */
265
+ hideIdFromCollection?: boolean;
266
+
267
+ /**
268
+ * If set to true, the form will be auto-saved when the user changes
269
+ * the value of a field.
270
+ * Defaults to false.
271
+ * You can't use this prop if you are using a `customId`
272
+ */
273
+ formAutoSave?: boolean;
274
+
275
+ /**
276
+ *
277
+ */
278
+ exportable?: boolean | ExportConfig<UserType>;
279
+ }
280
+
281
+ /**
282
+ * Parameter passed to the `Actions` prop in the collection configuration.
283
+ * The component will receive this prop when it is rendered in the collection
284
+ * toolbar.
285
+ *
286
+ * @group Models
287
+ */
288
+ export interface CollectionActionsProps<M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
289
+ /**
290
+ * Full collection path of this entity. This is the full path, like
291
+ * `users/1234/addresses`
292
+ */
293
+ path: string;
294
+
295
+ /**
296
+ * Path of the last collection, like `addresses`
297
+ */
298
+ relativePath: string;
299
+
300
+ /**
301
+ * Array of the parent path segments like `['users']`
302
+ */
303
+ parentCollectionIds: string[];
304
+
305
+ /**
306
+ * The collection configuration
307
+ */
308
+ collection: EC;
309
+
310
+ /**
311
+ * Use this controller to get the selected entities and to update the
312
+ * selected entities state.
313
+ */
314
+ selectionController: SelectionController<M>;
315
+
316
+ /**
317
+ * Use this controller to get the table controller and to update the
318
+ * table controller state.
319
+ */
320
+ tableController: EntityTableController<M>;
321
+
322
+ /**
323
+ * Context of the app status
324
+ */
325
+ context: FireCMSContext<UserType>;
326
+
327
+ /**
328
+ * Count of the entities in this collection
329
+ */
330
+ collectionEntitiesCount: number;
331
+
332
+ }
333
+
334
+ /**
335
+ * Use this controller to retrieve the selected entities or modify them in
336
+ * an {@link EntityCollection}
337
+ * If you want to pass a `SelectionController` to
338
+ * @group Models
339
+ */
340
+ export type SelectionController<M extends Record<string, any> = any> = {
341
+ selectedEntities: Entity<M>[];
342
+ setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
343
+ isEntitySelected: (entity: Entity<M>) => boolean;
344
+ toggleEntitySelection: (entity: Entity<M>) => void;
345
+ }
346
+
347
+ /**
348
+ * Filter conditions in a `Query.where()` clause are specified using the
349
+ * strings '<', '<=', '==', '>=', '>', 'array-contains', 'in', and 'array-contains-any'.
350
+ * @group Models
351
+ */
352
+ export type WhereFilterOp =
353
+ | "<"
354
+ | "<="
355
+ | "=="
356
+ | "!="
357
+ | ">="
358
+ | ">"
359
+ | "array-contains"
360
+ | "in"
361
+ | "not-in"
362
+ | "array-contains-any";
363
+
364
+ /**
365
+ * Used to define filters applied in collections
366
+ * @group Models
367
+ */
368
+ export type FilterValues<Key extends string> =
369
+ Partial<Record<Key, [WhereFilterOp, any]>>;
370
+
371
+ /**
372
+ * Used to indicate valid filter combinations (e.g. created in Firestore)
373
+ * If the user selects a specific filter/sort combination, the CMS checks if it's
374
+ * valid, otherwise it reverts to the simpler valid case
375
+ * @group Models
376
+ */
377
+ export type FilterCombination<Key extends string> = Partial<Record<Key, "asc" | "desc">>;
378
+
379
+ /**
380
+ * Sizes in which a collection can be rendered
381
+ * @group Models
382
+ */
383
+ export type CollectionSize = "xs" | "s" | "m" | "l" | "xl";
384
+
385
+ export type AdditionalFieldDelegateProps<M extends Record<string, any> = any, UserType extends User = User> = {
386
+ entity: Entity<M>,
387
+ context: FireCMSContext<UserType>
388
+ };
389
+
390
+ /**
391
+ * Use this interface for adding additional fields to entity collection views.
392
+ * If you need to do some async loading you can use {@link AsyncPreviewComponent}
393
+ * @group Models
394
+ */
395
+ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
396
+ UserType extends User = User> {
397
+
398
+ /**
399
+ * ID of this column. You can use this id in the `properties` field of the
400
+ * collection in any order you want
401
+ */
402
+ key: string;
403
+
404
+ /**
405
+ * Header of this column
406
+ */
407
+ name: string;
408
+
409
+ /**
410
+ * Width of the generated column in pixels
411
+ */
412
+ width?: number;
413
+
414
+ /**
415
+ * Builder for the content of the cell for this column
416
+ */
417
+ Builder?: React.ComponentType<AdditionalFieldDelegateProps<M, UserType>>;
418
+
419
+ /**
420
+ * If this column needs to update dynamically based on other properties,
421
+ * you can define an array of keys as strings with the
422
+ * `dependencies` prop.
423
+ * e.g. ["name", "surname"]
424
+ * This is a performance optimization, if you don't define dependencies
425
+ * it will be updated in every render.
426
+ */
427
+ dependencies?: Extract<keyof M, string>[];
428
+
429
+ /**
430
+ * Use this prop to define the value of the column as a string or number.
431
+ * This is the value that will be used for exporting the collection.
432
+ * If `Builder` is defined, this prop will be ignored in the collection
433
+ * view.
434
+ * @param entity
435
+ */
436
+ value?: (props: { entity: Entity<M>, context: FireCMSContext }) => string | number | Promise<string | number> | undefined;
437
+ }
438
+
439
+ /**
440
+ * You can use this builder to render a custom panel in the entity detail view.
441
+ * It gets rendered as a tab.
442
+ * @group Models
443
+ */
444
+ export type EntityCustomView<M extends Record<string, any> = any> =
445
+ {
446
+ key: string,
447
+ name: string,
448
+ Builder?: React.ComponentType<EntityCustomViewParams<M>>;
449
+ }
450
+
451
+ /**
452
+ * Parameters passed to the builder in charge of rendering a custom panel for
453
+ * an entity view.
454
+ * @group Models
455
+ */
456
+ export interface EntityCustomViewParams<M extends Record<string, any> = any> {
457
+
458
+ /**
459
+ * collection used by this entity
460
+ */
461
+ collection: EntityCollection<M>;
462
+
463
+ /**
464
+ * Entity that this view refers to. It can be undefined if the entity is new
465
+ */
466
+ entity?: Entity<M>;
467
+
468
+ /**
469
+ * Modified values in the form that have not been saved yet.
470
+ * If the entity is not new and the values are not modified, these values
471
+ * are the same as in `entity`
472
+ */
473
+ modifiedValues?: EntityValues<M>;
474
+
475
+ /**
476
+ * Use the form context to access the form state and methods
477
+ */
478
+ formContext: FormContext;
479
+ }
480
+
481
+ export type InferCollectionType<S extends EntityCollection> = S extends EntityCollection<infer M> ? M : never;
482
+
483
+ /**
484
+ * Used in the {@link EntityCollection#defaultSelectedView} to define the default
485
+ * @group Models
486
+ */
487
+ export type DefaultSelectedViewBuilder = (params: DefaultSelectedViewParams) => string | undefined;
488
+
489
+ /**
490
+ * Used in the {@link EntityCollection#defaultSelectedView} to define the default
491
+ * @group Models
492
+ */
493
+ export type DefaultSelectedViewParams = {
494
+ status?: EntityStatus;
495
+ entityId?: string;
496
+ };
497
+ /**
498
+ * You can use this controller to control the table view of a collection.
499
+ */
500
+ export type EntityTableController<M extends Record<string, any> = any> = {
501
+ data: Entity<M>[];
502
+ dataLoading: boolean;
503
+ noMoreToLoad: boolean;
504
+ dataLoadingError?: Error;
505
+ filterValues?: FilterValues<Extract<keyof M, string>>;
506
+ setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
507
+ sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
508
+ setSortBy?: (sortBy: [Extract<keyof M, string>, "asc" | "desc"]) => void;
509
+ searchString?: string;
510
+ setSearchString?: (searchString?: string) => void;
511
+ clearFilter?: () => void;
512
+ itemCount?: number;
513
+ setItemCount?: (itemCount: number) => void;
514
+ paginationEnabled?: boolean;
515
+ pageSize?: number;
516
+ checkFilterCombination?: (filterValues: FilterValues<any>,
517
+ sortBy?: [string, "asc" | "desc"]) => boolean;
518
+ popupCell?: SelectedCellProps<M>;
519
+ setPopupCell?: (popupCell?: SelectedCellProps<M>) => void;
520
+
521
+ onAddColumn?: (column: string) => void;
522
+ }
523
+
524
+ export type SelectedCellProps<M extends Record<string, any>> = {
525
+ propertyKey: Extract<keyof M, string>;
526
+ cellRect: DOMRect;
527
+ width: number;
528
+ height: number;
529
+ entity: Entity<M>;
530
+ };