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