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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/README.md +1 -1
  2. package/dist/components/ArrayContainer.d.ts +42 -0
  3. package/dist/components/CircularProgressCenter.d.ts +11 -0
  4. package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
  5. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
  6. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
  7. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
  8. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  9. package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
  10. package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
  11. package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
  12. package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
  13. package/dist/components/EntityCollectionTable/index.d.ts +4 -0
  14. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  15. package/dist/components/EntityCollectionTable/internal/DeleteEntityDialog.d.ts +12 -0
  16. package/dist/components/EntityCollectionTable/internal/EntityCollectionRowActions.d.ts +35 -0
  17. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  19. package/dist/components/EntityCollectionTable/internal/PropertyTableCell.d.ts +18 -0
  20. package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
  21. package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  22. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  23. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  24. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  25. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  26. package/dist/components/EntityCollectionTable/types.d.ts +39 -0
  27. package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
  28. package/dist/components/EntityCollectionTable/useEntityCollectionTableController.d.ts +21 -0
  29. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
  30. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  31. package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
  32. package/dist/components/EntityPreview.d.ts +11 -0
  33. package/dist/components/ErrorBoundary.d.ts +11 -0
  34. package/dist/components/ErrorTooltip.d.ts +2 -0
  35. package/dist/components/ErrorView.d.ts +19 -0
  36. package/dist/components/FieldConfigBadge.d.ts +4 -0
  37. package/dist/components/FireCMSAppBar.d.ts +26 -0
  38. package/dist/components/FireCMSLogo.d.ts +7 -0
  39. package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
  40. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  41. package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
  42. package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
  43. package/dist/components/HomePage/index.d.ts +3 -0
  44. package/dist/components/LabelWithIcon.d.ts +14 -0
  45. package/dist/components/NotFoundPage.d.ts +1 -0
  46. package/dist/components/ReferenceSelectionInner.d.ts +58 -0
  47. package/dist/components/ReferenceWidget.d.ts +28 -0
  48. package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
  49. package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  50. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  51. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  52. package/dist/components/VirtualTable/VirtualTableProps.d.ts +215 -0
  53. package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  54. package/dist/components/VirtualTable/common.d.ts +2 -0
  55. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  56. package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  57. package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  58. package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  59. package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  60. package/dist/components/VirtualTable/index.d.ts +2 -0
  61. package/dist/components/VirtualTable/types.d.ts +34 -0
  62. package/dist/components/index.d.ts +20 -0
  63. package/dist/contexts/AuthControllerContext.d.ts +3 -0
  64. package/dist/contexts/DataSourceContext.d.ts +3 -0
  65. package/dist/contexts/DialogsProvider.d.ts +4 -0
  66. package/dist/contexts/ModeController.d.ts +4 -0
  67. package/dist/contexts/NavigationContext.d.ts +3 -0
  68. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  69. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  70. package/dist/contexts/SnackbarProvider.d.ts +2 -0
  71. package/dist/contexts/StorageSourceContext.d.ts +3 -0
  72. package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  73. package/dist/contexts/index.d.ts +3 -0
  74. package/dist/core/Drawer.d.ts +23 -0
  75. package/dist/core/EntitySidePanel.d.ts +10 -0
  76. package/dist/core/FireCMS.d.ts +14 -0
  77. package/dist/core/NavigationRoutes.d.ts +21 -0
  78. package/dist/core/Scaffold.d.ts +52 -0
  79. package/dist/core/SideDialogs.d.ts +23 -0
  80. package/dist/core/field_configs.d.ts +7 -0
  81. package/dist/core/index.d.ts +10 -0
  82. package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
  83. package/dist/core/useBuildModeController.d.ts +6 -0
  84. package/dist/form/EntityForm.d.ts +75 -0
  85. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  86. package/dist/form/components/CustomIdField.d.ts +9 -0
  87. package/dist/form/components/ErrorFocus.d.ts +4 -0
  88. package/dist/form/components/FieldHelperText.d.ts +12 -0
  89. package/dist/form/components/FormikArrayContainer.d.ts +18 -0
  90. package/dist/form/components/StorageItemPreview.d.ts +13 -0
  91. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  92. package/dist/form/components/SubmitListener.d.ts +1 -0
  93. package/dist/form/components/SwitchControl.d.ts +8 -0
  94. package/dist/form/components/index.d.ts +3 -0
  95. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  96. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  97. package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  98. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  99. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  100. package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
  101. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  102. package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  103. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  104. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  105. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  106. package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  107. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
  108. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  109. package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
  110. package/dist/form/index.d.ts +20 -0
  111. package/dist/form/useClearRestoreValue.d.ts +13 -0
  112. package/dist/form/validation.d.ts +25 -0
  113. package/dist/hooks/data/delete.d.ts +37 -0
  114. package/dist/hooks/data/save.d.ts +42 -0
  115. package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
  116. package/dist/hooks/data/useDataOrder.d.ts +12 -0
  117. package/dist/hooks/data/useDataSource.d.ts +6 -0
  118. package/dist/hooks/data/useEntityFetch.d.ts +28 -0
  119. package/dist/hooks/index.d.ts +19 -0
  120. package/dist/hooks/useAuthController.d.ts +11 -0
  121. package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  122. package/dist/hooks/useClipboard.d.ts +57 -0
  123. package/dist/hooks/useDialogsController.d.ts +11 -0
  124. package/dist/hooks/useFireCMSContext.d.ts +12 -0
  125. package/dist/hooks/useLargeLayout.d.ts +1 -0
  126. package/dist/hooks/useModeController.d.ts +20 -0
  127. package/dist/hooks/useNavigationController.d.ts +9 -0
  128. package/dist/hooks/useReferenceDialog.d.ts +18 -0
  129. package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
  130. package/dist/hooks/useSideDialogsController.d.ts +18 -0
  131. package/dist/hooks/useSideEntityController.d.ts +12 -0
  132. package/dist/hooks/useSnackbarController.d.ts +41 -0
  133. package/dist/hooks/useStorageSource.d.ts +6 -0
  134. package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
  135. package/dist/index.d.ts +8 -0
  136. package/dist/index.es.js +12415 -25618
  137. package/dist/index.es.js.map +1 -1
  138. package/dist/index.umd.js +5 -1027
  139. package/dist/index.umd.js.map +1 -1
  140. package/dist/internal/EntityView.d.ts +22 -0
  141. package/dist/internal/common.d.ts +3 -0
  142. package/dist/internal/useBuildDataSource.d.ts +22 -0
  143. package/dist/internal/useBuildNavigationController.d.ts +14 -0
  144. package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
  145. package/dist/internal/useBuildSideEntityController.d.ts +4 -0
  146. package/dist/internal/useLocaleConfig.d.ts +1 -0
  147. package/dist/internal/useRestoreScroll.d.ts +6 -0
  148. package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
  149. package/dist/preview/PropertyPreview.d.ts +7 -0
  150. package/dist/preview/PropertyPreviewProps.d.ts +43 -0
  151. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  152. package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
  153. package/dist/preview/components/BooleanPreview.d.ts +7 -0
  154. package/dist/preview/components/DatePreview.d.ts +7 -0
  155. package/dist/preview/components/EmptyValue.d.ts +4 -0
  156. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  157. package/dist/preview/components/ImagePreview.d.ts +12 -0
  158. package/dist/preview/components/ReferencePreview.d.ts +22 -0
  159. package/dist/preview/components/StorageThumbnail.d.ts +13 -0
  160. package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
  161. package/dist/preview/index.d.ts +23 -0
  162. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  163. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  164. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  165. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  166. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  167. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  168. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  169. package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  170. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  171. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  172. package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  173. package/dist/preview/util.d.ts +7 -0
  174. package/dist/types/analytics.d.ts +1 -0
  175. package/dist/types/appcheck.d.ts +26 -0
  176. package/dist/types/auth.d.ts +40 -0
  177. package/dist/types/collections.d.ts +451 -0
  178. package/dist/types/datasource.d.ts +262 -0
  179. package/dist/types/dialogs_controller.d.ts +32 -0
  180. package/dist/types/entities.d.ts +57 -0
  181. package/dist/types/entity_actions.d.ts +35 -0
  182. package/dist/types/entity_callbacks.d.ts +171 -0
  183. package/dist/types/entity_link_builder.d.ts +7 -0
  184. package/dist/types/export_import.d.ts +21 -0
  185. package/dist/types/fields.d.ts +181 -0
  186. package/dist/types/firecms.d.ts +151 -0
  187. package/dist/types/firecms_context.d.ts +110 -0
  188. package/dist/types/index.d.ts +26 -0
  189. package/dist/types/local_config_persistence.d.ts +21 -0
  190. package/dist/types/locales.d.ts +4 -0
  191. package/dist/types/modify_collections.d.ts +5 -0
  192. package/dist/types/navigation.d.ts +178 -0
  193. package/dist/types/permissions.d.ts +63 -0
  194. package/dist/types/plugins.d.ts +179 -0
  195. package/dist/types/properties.d.ts +681 -0
  196. package/dist/types/property_config.d.ts +42 -0
  197. package/dist/types/resolved_entities.d.ts +98 -0
  198. package/dist/types/side_dialogs_controller.d.ts +57 -0
  199. package/dist/types/side_entity_controller.d.ts +83 -0
  200. package/dist/types/storage.d.ts +82 -0
  201. package/dist/types/user.d.ts +36 -0
  202. package/dist/util/arrays.d.ts +1 -0
  203. package/dist/util/builders.d.ts +64 -0
  204. package/dist/util/chip_utils.d.ts +3 -0
  205. package/dist/util/collections.d.ts +3 -0
  206. package/dist/util/common.d.ts +2 -0
  207. package/dist/util/dates.d.ts +1 -0
  208. package/dist/util/entities.d.ts +28 -0
  209. package/dist/util/enums.d.ts +7 -0
  210. package/dist/util/flatten_object.d.ts +3 -0
  211. package/dist/util/hash.d.ts +1 -0
  212. package/dist/util/icons.d.ts +4 -0
  213. package/dist/util/index.d.ts +20 -0
  214. package/dist/util/join_collections.d.ts +9 -0
  215. package/dist/util/make_properties_editable.d.ts +3 -0
  216. package/dist/util/navigation_from_path.d.ts +24 -0
  217. package/dist/util/navigation_utils.d.ts +20 -0
  218. package/dist/util/objects.d.ts +10 -0
  219. package/dist/util/os.d.ts +2 -0
  220. package/dist/util/parent_references_from_path.d.ts +6 -0
  221. package/dist/util/paths.d.ts +14 -0
  222. package/dist/util/permissions.d.ts +5 -0
  223. package/dist/util/plurals.d.ts +18 -0
  224. package/dist/util/property_utils.d.ts +23 -0
  225. package/dist/util/references.d.ts +2 -0
  226. package/dist/util/regexp.d.ts +7 -0
  227. package/dist/util/resolutions.d.ts +64 -0
  228. package/dist/util/storage.d.ts +3 -0
  229. package/dist/util/strings.d.ts +6 -0
  230. package/dist/util/useDebounce.d.ts +1 -0
  231. package/dist/util/useStorageUploadController.d.ts +36 -0
  232. package/dist/util/useTraceUpdate.d.ts +1 -0
  233. package/package.json +114 -142
  234. package/src/components/ArrayContainer.tsx +369 -0
  235. package/src/components/CircularProgressCenter.tsx +26 -0
  236. package/src/components/DeleteConfirmationDialog.tsx +47 -0
  237. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +520 -0
  238. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
  239. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
  240. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
  241. package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
  242. package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
  243. package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
  244. package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
  245. package/src/components/EntityCollectionTable/index.tsx +16 -0
  246. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
  247. package/src/components/EntityCollectionTable/internal/DeleteEntityDialog.tsx +207 -0
  248. package/src/components/EntityCollectionTable/internal/EntityCollectionRowActions.tsx +174 -0
  249. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +264 -0
  250. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
  251. package/src/components/EntityCollectionTable/internal/PropertyTableCell.tsx +460 -0
  252. package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
  253. package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
  254. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
  255. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
  256. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
  257. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  258. package/src/components/EntityCollectionTable/types.tsx +44 -0
  259. package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
  260. package/src/components/EntityCollectionTable/useEntityCollectionTableController.tsx +213 -0
  261. package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
  262. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
  263. package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
  264. package/src/components/EntityPreview.tsx +83 -0
  265. package/src/components/ErrorBoundary.tsx +40 -0
  266. package/src/components/ErrorTooltip.tsx +11 -0
  267. package/src/components/ErrorView.tsx +52 -0
  268. package/src/components/FieldConfigBadge.tsx +17 -0
  269. package/src/components/FireCMSAppBar.tsx +157 -0
  270. package/src/components/FireCMSLogo.tsx +73 -0
  271. package/src/components/HomePage/DefaultHomePage.tsx +209 -0
  272. package/src/components/HomePage/FavouritesView.tsx +64 -0
  273. package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
  274. package/src/components/HomePage/NavigationGroup.tsx +39 -0
  275. package/src/components/HomePage/index.tsx +3 -0
  276. package/src/components/LabelWithIcon.tsx +33 -0
  277. package/src/components/NotFoundPage.tsx +25 -0
  278. package/src/components/ReferenceSelectionInner.tsx +364 -0
  279. package/src/components/ReferenceWidget.tsx +145 -0
  280. package/src/components/VirtualTable/VirtualTable.tsx +402 -0
  281. package/src/components/VirtualTable/VirtualTableCell.tsx +36 -0
  282. package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
  283. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
  284. package/src/components/VirtualTable/VirtualTableProps.tsx +270 -0
  285. package/src/components/VirtualTable/VirtualTableRow.tsx +54 -0
  286. package/src/components/VirtualTable/common.tsx +18 -0
  287. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
  288. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
  289. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
  290. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
  291. package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
  292. package/src/components/VirtualTable/index.tsx +2 -0
  293. package/src/components/VirtualTable/types.tsx +44 -0
  294. package/src/components/index.tsx +30 -0
  295. package/src/contexts/AuthControllerContext.tsx +4 -0
  296. package/src/contexts/DataSourceContext.tsx +4 -0
  297. package/src/contexts/DialogsProvider.tsx +52 -0
  298. package/src/contexts/ModeController.tsx +13 -0
  299. package/src/contexts/NavigationContext.tsx +4 -0
  300. package/src/contexts/SideDialogsControllerContext.tsx +4 -0
  301. package/src/contexts/SideEntityControllerContext.tsx +4 -0
  302. package/src/contexts/SnackbarProvider.tsx +12 -0
  303. package/src/contexts/StorageSourceContext.tsx +4 -0
  304. package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
  305. package/src/contexts/index.ts +3 -0
  306. package/src/core/Drawer.tsx +161 -0
  307. package/src/core/EntitySidePanel.tsx +90 -0
  308. package/src/core/FireCMS.tsx +184 -0
  309. package/src/core/NavigationRoutes.tsx +118 -0
  310. package/src/core/Scaffold.tsx +278 -0
  311. package/src/core/SideDialogs.tsx +156 -0
  312. package/src/core/field_configs.tsx +400 -0
  313. package/src/core/index.tsx +14 -0
  314. package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
  315. package/src/core/useBuildModeController.tsx +60 -0
  316. package/src/form/EntityForm.tsx +647 -0
  317. package/src/form/PropertyFieldBinding.tsx +311 -0
  318. package/src/form/components/CustomIdField.tsx +124 -0
  319. package/src/form/components/ErrorFocus.tsx +51 -0
  320. package/src/form/components/FieldHelperText.tsx +58 -0
  321. package/src/form/components/FormikArrayContainer.tsx +44 -0
  322. package/src/form/components/StorageItemPreview.tsx +66 -0
  323. package/src/form/components/StorageUploadProgress.tsx +104 -0
  324. package/src/form/components/SubmitListener.tsx +32 -0
  325. package/src/form/components/SwitchControl.tsx +39 -0
  326. package/src/form/components/index.tsx +3 -0
  327. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
  328. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
  329. package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
  330. package/src/form/field_bindings/DateTimeFieldBinding.tsx +66 -0
  331. package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
  332. package/src/form/field_bindings/MapFieldBinding.tsx +142 -0
  333. package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
  334. package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
  335. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
  336. package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
  337. package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
  338. package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
  339. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
  340. package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
  341. package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
  342. package/src/form/index.tsx +42 -0
  343. package/src/form/useClearRestoreValue.tsx +35 -0
  344. package/src/form/validation.ts +409 -0
  345. package/src/hooks/data/delete.ts +101 -0
  346. package/src/hooks/data/save.ts +165 -0
  347. package/src/hooks/data/useCollectionFetch.tsx +162 -0
  348. package/src/hooks/data/useDataOrder.ts +26 -0
  349. package/src/hooks/data/useDataSource.tsx +9 -0
  350. package/src/hooks/data/useEntityFetch.tsx +129 -0
  351. package/src/hooks/index.tsx +23 -0
  352. package/src/hooks/useAuthController.tsx +14 -0
  353. package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
  354. package/src/hooks/useClipboard.tsx +158 -0
  355. package/src/hooks/useDialogsController.tsx +14 -0
  356. package/src/hooks/useFireCMSContext.tsx +50 -0
  357. package/src/hooks/useLargeLayout.tsx +34 -0
  358. package/src/hooks/useModeController.tsx +24 -0
  359. package/src/hooks/useNavigationController.tsx +12 -0
  360. package/src/hooks/useReferenceDialog.tsx +56 -0
  361. package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
  362. package/src/hooks/useSideDialogsController.tsx +21 -0
  363. package/src/hooks/useSideEntityController.tsx +15 -0
  364. package/src/hooks/useSnackbarController.tsx +76 -0
  365. package/src/hooks/useStorageSource.tsx +9 -0
  366. package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
  367. package/src/index.ts +8 -0
  368. package/src/internal/EntityView.tsx +576 -0
  369. package/src/internal/common.tsx +5 -0
  370. package/src/internal/useBuildDataSource.ts +360 -0
  371. package/src/internal/useBuildNavigationController.tsx +371 -0
  372. package/src/internal/useBuildSideDialogsController.tsx +125 -0
  373. package/src/internal/useBuildSideEntityController.tsx +160 -0
  374. package/src/internal/useLocaleConfig.tsx +18 -0
  375. package/src/internal/useRestoreScroll.tsx +48 -0
  376. package/src/internal/useUnsavedChangesDialog.tsx +106 -0
  377. package/src/preview/PropertyPreview.tsx +222 -0
  378. package/src/preview/PropertyPreviewProps.tsx +59 -0
  379. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  380. package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
  381. package/src/preview/components/BooleanPreview.tsx +11 -0
  382. package/src/preview/components/DatePreview.tsx +27 -0
  383. package/src/preview/components/EmptyValue.tsx +10 -0
  384. package/src/preview/components/EnumValuesChip.tsx +38 -0
  385. package/src/preview/components/ImagePreview.tsx +106 -0
  386. package/src/preview/components/ReferencePreview.tsx +249 -0
  387. package/src/preview/components/StorageThumbnail.tsx +84 -0
  388. package/src/preview/components/UrlComponentPreview.tsx +79 -0
  389. package/src/preview/index.ts +27 -0
  390. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
  391. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
  392. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
  393. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
  394. package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
  395. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
  396. package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
  397. package/src/preview/property_previews/MapPropertyPreview.tsx +144 -0
  398. package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
  399. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
  400. package/src/preview/property_previews/StringPropertyPreview.tsx +60 -0
  401. package/src/preview/util.ts +31 -0
  402. package/src/types/analytics.ts +34 -0
  403. package/src/types/appcheck.ts +29 -0
  404. package/src/types/auth.tsx +49 -0
  405. package/src/types/collections.ts +530 -0
  406. package/src/types/datasource.ts +389 -0
  407. package/src/types/dialogs_controller.tsx +33 -0
  408. package/src/types/entities.ts +76 -0
  409. package/src/types/entity_actions.tsx +39 -0
  410. package/src/types/entity_callbacks.ts +209 -0
  411. package/src/types/entity_link_builder.ts +8 -0
  412. package/src/types/export_import.ts +26 -0
  413. package/src/types/fields.tsx +220 -0
  414. package/src/types/firecms.tsx +175 -0
  415. package/src/types/firecms_context.tsx +128 -0
  416. package/src/types/index.ts +26 -0
  417. package/src/types/local_config_persistence.tsx +23 -0
  418. package/src/types/locales.ts +81 -0
  419. package/src/types/modify_collections.tsx +6 -0
  420. package/src/types/navigation.ts +214 -0
  421. package/src/types/permissions.ts +76 -0
  422. package/src/types/plugins.tsx +217 -0
  423. package/src/types/properties.ts +851 -0
  424. package/src/types/property_config.tsx +72 -0
  425. package/src/types/resolved_entities.ts +148 -0
  426. package/src/types/side_dialogs_controller.tsx +68 -0
  427. package/src/types/side_entity_controller.tsx +96 -0
  428. package/src/types/storage.ts +96 -0
  429. package/src/types/user.ts +37 -0
  430. package/src/util/arrays.ts +3 -0
  431. package/src/util/builders.ts +139 -0
  432. package/src/util/chip_utils.ts +13 -0
  433. package/src/util/collections.ts +50 -0
  434. package/src/util/common.tsx +2 -0
  435. package/src/util/dates.ts +1 -0
  436. package/src/util/entities.ts +196 -0
  437. package/src/util/enums.ts +57 -0
  438. package/src/util/flatten_object.ts +45 -0
  439. package/src/util/hash.ts +11 -0
  440. package/src/util/icons.tsx +45 -0
  441. package/src/util/index.ts +20 -0
  442. package/src/util/join_collections.ts +172 -0
  443. package/src/util/make_properties_editable.ts +29 -0
  444. package/src/util/navigation_from_path.ts +107 -0
  445. package/src/util/navigation_utils.ts +111 -0
  446. package/src/util/objects.ts +168 -0
  447. package/src/util/os.ts +13 -0
  448. package/src/util/parent_references_from_path.ts +56 -0
  449. package/src/util/paths.ts +27 -0
  450. package/src/util/permissions.ts +80 -0
  451. package/src/util/plurals.ts +190 -0
  452. package/src/util/property_utils.tsx +130 -0
  453. package/src/util/references.ts +20 -0
  454. package/src/util/regexp.ts +32 -0
  455. package/src/util/resolutions.ts +399 -0
  456. package/src/util/storage.ts +92 -0
  457. package/src/util/strings.ts +62 -0
  458. package/src/util/useDebounce.ts +25 -0
  459. package/src/util/useStorageUploadController.tsx +243 -0
  460. package/src/util/useTraceUpdate.tsx +23 -0
@@ -0,0 +1,851 @@
1
+ import React from "react";
2
+ import { FieldProps } from "./fields";
3
+ import { PropertyPreviewProps } from "../preview";
4
+ import { EntityReference, EntityValues, GeoPoint } from "./entities";
5
+ import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
6
+ import { FilterValues } from "./collections";
7
+ import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
8
+
9
+ /**
10
+ * @group Entity properties
11
+ */
12
+ export type DataType<T extends CMSType = CMSType> =
13
+ T extends string ? "string" :
14
+ T extends number ? "number" :
15
+ T extends boolean ? "boolean" :
16
+ T extends Date ? "date" :
17
+ T extends GeoPoint ? "geopoint" :
18
+ T extends EntityReference ? "reference" :
19
+ T extends Array<CMSType> ? "array" :
20
+ T extends Record<string, any> ? "map" : never;
21
+
22
+ /**
23
+ * @group Entity properties
24
+ */
25
+ export type CMSType =
26
+ | string
27
+ | number
28
+ | boolean
29
+ | Date
30
+ | GeoPoint
31
+ | EntityReference
32
+ | Record<string, any>
33
+ | CMSType[];
34
+
35
+ /**
36
+ * @ignore
37
+ */
38
+ export type AnyProperty =
39
+ StringProperty |
40
+ NumberProperty |
41
+ BooleanProperty |
42
+ DateProperty |
43
+ GeopointProperty |
44
+ ReferenceProperty |
45
+ ArrayProperty |
46
+ MapProperty;
47
+
48
+ /**
49
+ * @group Entity properties
50
+ */
51
+ export type Property<T extends CMSType = CMSType> =
52
+ T extends string ? StringProperty :
53
+ T extends number ? NumberProperty :
54
+ T extends boolean ? BooleanProperty :
55
+ T extends Date ? DateProperty :
56
+ T extends GeoPoint ? GeopointProperty :
57
+ T extends EntityReference ? ReferenceProperty :
58
+ T extends Array<CMSType> ? ArrayProperty<T> :
59
+ T extends Record<string, any> ? MapProperty<T> : AnyProperty;
60
+
61
+ /**
62
+ * Interface including all common properties of a CMS property
63
+ * @group Entity properties
64
+ */
65
+ export interface BaseProperty<T extends CMSType, CustomProps = any> {
66
+
67
+ /**
68
+ * Datatype of the property
69
+ */
70
+ dataType: DataType;
71
+
72
+ /**
73
+ * Property name (e.g. Product)
74
+ */
75
+ name?: string;
76
+
77
+ /**
78
+ * Property description, always displayed under the field
79
+ */
80
+ description?: string;
81
+
82
+ /**
83
+ * You can use this prop to reuse a property that has been defined
84
+ * in the top level of the CMS in the prop `fields`.
85
+ * All the configuration will be taken from the inherited config, and
86
+ * overwritten by the current property config.
87
+ */
88
+ propertyConfig?: string;
89
+
90
+ /**
91
+ * Longer description of a field, displayed under a popover
92
+ */
93
+ longDescription?: string;
94
+
95
+ /**
96
+ * Width in pixels of this column in the collection view. If not set
97
+ * the width is inferred based on the other configurations
98
+ */
99
+ columnWidth?: number;
100
+
101
+ /**
102
+ * Do not show this property in the collection view
103
+ */
104
+ hideFromCollection?: boolean;
105
+
106
+ /**
107
+ * Is this a read only property. When set to true, it gets rendered as a
108
+ * preview.
109
+ */
110
+ readOnly?: boolean;
111
+
112
+ /**
113
+ * Is this field disabled.
114
+ * When set to true, it gets rendered as a
115
+ * disabled field. You can also specify a configuration for defining the
116
+ * behaviour of disabled properties (including custom messages, clear value on
117
+ * disabled or hide the field completely)
118
+ */
119
+ disabled?: boolean | PropertyDisabledConfig;
120
+
121
+ /**
122
+ * Rules for validating this property
123
+ */
124
+ validation?: PropertyValidationSchema;
125
+
126
+ /**
127
+ * If you need to render a custom field, you can create a component that
128
+ * takes `FieldProps` as props. You receive the value, a function to
129
+ * update the value and additional utility props such as if there is an error.
130
+ * You can customize it by passing custom props that are received
131
+ * in the component.
132
+ */
133
+ Field?: React.ComponentType<FieldProps<T, CustomProps>>;
134
+
135
+ /**
136
+ * Configure how a property is displayed as a preview, e.g. in the collection
137
+ * view. You can customize it by passing custom props that are received
138
+ * in the component.
139
+ */
140
+ Preview?: React.ComponentType<PropertyPreviewProps<T, CustomProps>>;
141
+
142
+ /**
143
+ * Additional props that are passed to the components defined in `field`
144
+ * or in `preview`.
145
+ */
146
+ customProps?: CustomProps;
147
+
148
+ /**
149
+ * This value will be set by default for new entities.
150
+ */
151
+ defaultValue?: T;
152
+
153
+ /**
154
+ * Should this property be editable. If set to true, the user will be able to modify the property and
155
+ * save the new config. The saved config will then become the source of truth.
156
+ */
157
+ editable?: boolean;
158
+ }
159
+
160
+ /**
161
+ * @group Entity properties
162
+ */
163
+ export interface PropertyDisabledConfig {
164
+
165
+ /**
166
+ * Enable this flag if you would like to clear the value of the field
167
+ * when the corresponding property gets disabled.
168
+ *
169
+ * This is useful for keeping data consistency when you have conditional
170
+ * properties.
171
+ */
172
+ clearOnDisabled?: boolean;
173
+
174
+ /**
175
+ * Explanation of why this property is disabled (e.g. a different field
176
+ * needs to be enabled)
177
+ */
178
+ disabledMessage?: string;
179
+
180
+ /**
181
+ * Set this flag to true if you want to hide this field when disabled
182
+ */
183
+ hidden?: boolean;
184
+ }
185
+
186
+ /**
187
+ * @group Entity properties
188
+ */
189
+ export type EnumType = number | string;
190
+
191
+ /**
192
+ * We use this type to define mapping between string or number values in
193
+ * the data source to a label (such in a select dropdown).
194
+ * The key in this Record is the value saved in the datasource, and the value in
195
+ * this record is the label displayed in the UI.
196
+ * You can add additional customization by assigning a {@link EnumValueConfig} for the
197
+ * label instead of a simple string (for enabling or disabling options and
198
+ * choosing colors).
199
+ * If you need to ensure the order of the elements use an array of {@link EnumValueConfig}
200
+ * @group Entity properties
201
+ */
202
+ export type EnumValues = EnumValueConfig[]
203
+ | Record<string | number, string | EnumValueConfig>;
204
+
205
+ /**
206
+ * Configuration for a particular entry in an `EnumValues`
207
+ * @group Entity properties
208
+ */
209
+ export type EnumValueConfig = {
210
+ /**
211
+ * Value stored in the data source.
212
+ */
213
+ id: string | number;
214
+ /**
215
+ * Displayed label
216
+ */
217
+ label: string;
218
+ /**
219
+ * This value will not be selectable
220
+ */
221
+ disabled?: boolean;
222
+ /**
223
+ * You can pick from a list of predefined color combinations or define
224
+ * your own {@link ChipColorScheme}
225
+ */
226
+ color?: ChipColorKey | ChipColorScheme;
227
+ }
228
+
229
+ /**
230
+ * Record of properties of an entity or a map property
231
+ * @group Entity properties
232
+ */
233
+ export type Properties<M extends Record<string, any> = any> = {
234
+ [k in keyof M]: Property<M[keyof M]>;
235
+ };
236
+
237
+ /**
238
+ * @group Entity properties
239
+ */
240
+ export type PropertyBuilderProps<M extends Record<string, any> = any> =
241
+ {
242
+ /**
243
+ * Current values of the entity
244
+ */
245
+ values: Partial<M>;
246
+ /**
247
+ * Previous values of the entity before being saved
248
+ */
249
+ previousValues?: Partial<M>;
250
+ /**
251
+ * Current value of this property
252
+ */
253
+ propertyValue?: any;
254
+ /**
255
+ * Index of this property (only for arrays)
256
+ */
257
+ index?: number;
258
+ /**
259
+ * Path of the entity in the data source
260
+ */
261
+ path: string;
262
+ /**
263
+ * Entity ID
264
+ */
265
+ entityId?: string;
266
+ };
267
+
268
+ /**
269
+ * You can use this type to define a property dynamically, based
270
+ * on the current values of the entity, the previous values and the
271
+ * current value of the property, as well as the path and entity ID.
272
+ * @group Entity properties
273
+ */
274
+ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> =
275
+ ({
276
+ values,
277
+ previousValues,
278
+ propertyValue,
279
+ path,
280
+ entityId
281
+ }: PropertyBuilderProps<M>) => Property<T> | null;
282
+
283
+ /**
284
+ * @group Entity properties
285
+ */
286
+ export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = Record<string, any>> =
287
+ Property<T>
288
+ | PropertyBuilder<T, M>;
289
+
290
+ /**
291
+ * @group Entity properties
292
+ */
293
+ export type PropertiesOrBuilders<M extends Record<string, any> = Record<string, any>> =
294
+ {
295
+ [k in keyof M]: PropertyOrBuilder<M[k], M>;
296
+ };
297
+
298
+ /**
299
+ * @group Entity properties
300
+ */
301
+ export interface NumberProperty extends BaseProperty<number> {
302
+
303
+ dataType: "number";
304
+
305
+ /**
306
+ * You can use the enum values providing a map of possible
307
+ * exclusive values the property can take, mapped to the label that it is
308
+ * displayed in the dropdown.
309
+ */
310
+ enumValues?: EnumValues;
311
+
312
+ /**
313
+ * Rules for validating this property
314
+ */
315
+ validation?: NumberPropertyValidationSchema,
316
+
317
+ /**
318
+ * Add an icon to clear the value and set it to `null`. Defaults to `false`
319
+ */
320
+ clearable?: boolean;
321
+ }
322
+
323
+ /**
324
+ * @group Entity properties
325
+ */
326
+ export interface BooleanProperty extends BaseProperty<boolean> {
327
+
328
+ dataType: "boolean";
329
+
330
+ /**
331
+ * Rules for validating this property
332
+ */
333
+ validation?: PropertyValidationSchema,
334
+
335
+ }
336
+
337
+ /**
338
+ * @group Entity properties
339
+ */
340
+ export interface StringProperty extends BaseProperty<string> {
341
+
342
+ dataType: "string";
343
+
344
+ /**
345
+ * Is this string property long enough so it should be displayed in
346
+ * a multiple line field. Defaults to false. If set to true,
347
+ * the number of lines adapts to the content
348
+ */
349
+ multiline?: boolean;
350
+
351
+ /**
352
+ * Should this string property be displayed as a markdown field. If true,
353
+ * the field is rendered as a text editors that supports markdown highlight
354
+ * syntax. It also includes a preview of the result.
355
+ */
356
+ markdown?: boolean;
357
+
358
+ /**
359
+ * You can use the enum values providing a map of possible
360
+ * exclusive values the property can take, mapped to the label that it is
361
+ * displayed in the dropdown. You can use a simple object with the format
362
+ * `value` => `label`, or with the format `value` => `EnumValueConfig` if you
363
+ * need extra customization, (like disabling specific options or assigning
364
+ * colors). If you need to ensure the order of the elements, you can pass
365
+ * a `Map` instead of a plain object.
366
+ *
367
+ */
368
+ enumValues?: EnumValues;
369
+
370
+ /**
371
+ * You can specify a `Storage` configuration. It is used to
372
+ * indicate that this string refers to a path in Google Cloud Storage.
373
+ */
374
+ storage?: StorageConfig;
375
+
376
+ /**
377
+ * If the value of this property is a URL, you can set this flag to true
378
+ * to add a link, or one of the supported media types to render a preview
379
+ */
380
+ url?: boolean | PreviewType;
381
+
382
+ /**
383
+ * Does this field include an email
384
+ */
385
+ email?: boolean;
386
+
387
+ /**
388
+ * Should this string be rendered as a tag instead of just text.
389
+ */
390
+ previewAsTag?: boolean;
391
+
392
+ /**
393
+ * Rules for validating this property
394
+ */
395
+ validation?: StringPropertyValidationSchema;
396
+
397
+ /**
398
+ * Add an icon to clear the value and set it to `null`. Defaults to `false`
399
+ */
400
+ clearable?: boolean;
401
+ }
402
+
403
+ /**
404
+ * @group Entity properties
405
+ */
406
+ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> extends BaseProperty<T> {
407
+
408
+ dataType: "array";
409
+
410
+ /**
411
+ * The property of this array.
412
+ * You can specify any property (except another Array property)
413
+ * You can leave this field empty only if you are providing a custom field,
414
+ * or using the `oneOf` prop, otherwise an error will be thrown.
415
+ */
416
+ of?: PropertyOrBuilder<ArrayT> | Property<ArrayT>[];
417
+
418
+ /**
419
+ * Use this field if you would like to have an array of typed objects.
420
+ * It is useful if you need to have values of different types in the same
421
+ * array.
422
+ * Each entry of the array is an object with the shape:
423
+ * ```
424
+ * { type: "YOUR_TYPE", value: "YOUR_VALUE"}
425
+ * ```
426
+ * Note that you can use any property so `value` can take any value (strings,
427
+ * numbers, array, objects...)
428
+ * You can customise the `type` and `value` fields to suit your needs.
429
+ *
430
+ * An example use case for this feature may be a blog entry, where you have
431
+ * images and text blocks using markdown.
432
+ */
433
+ oneOf?: {
434
+ /**
435
+ * Record of properties, where the key is the `type` and the value
436
+ * is the corresponding property
437
+ */
438
+ properties: Properties;
439
+
440
+ /**
441
+ * Order in which the properties are displayed.
442
+ * If you are specifying your collection as code, the order is the same as the
443
+ * one you define in `properties`, and you don't need to specify this prop.
444
+ */
445
+ propertiesOrder?: string[];
446
+
447
+ /**
448
+ * Name of the field to use as the discriminator for type
449
+ * Defaults to `type`
450
+ */
451
+ typeField?: string;
452
+
453
+ /**
454
+ * Name of the field to use as the value
455
+ * Defaults to `value`
456
+ */
457
+ valueField?: string;
458
+ };
459
+
460
+ /**
461
+ * Rules for validating this property
462
+ */
463
+ validation?: ArrayPropertyValidationSchema;
464
+
465
+ /**
466
+ * Should the field be initially expanded. Defaults to `true`
467
+ */
468
+ expanded?: boolean;
469
+
470
+ }
471
+
472
+ /**
473
+ * @group Entity properties
474
+ */
475
+ export interface MapProperty<T extends Record<string, CMSType> = Record<string, CMSType>> extends BaseProperty<T> {
476
+
477
+ dataType: "map";
478
+
479
+ /**
480
+ * Record of properties included in this map.
481
+ */
482
+ properties?: PropertiesOrBuilders<T>;
483
+
484
+ /**
485
+ * Order in which the properties are displayed.
486
+ * If you are specifying your collection as code, the order is the same as the
487
+ * one you define in `properties`, and you don't need to specify this prop.
488
+ */
489
+ propertiesOrder?: Extract<keyof T, string>[];
490
+
491
+ /**
492
+ * Rules for validating this property.
493
+ * NOTE: If you don't set `required` in the map property, an empty object
494
+ * will be considered valid, even if you set `required` in the properties.
495
+ */
496
+ validation?: PropertyValidationSchema,
497
+
498
+ /**
499
+ * Properties that are displayed when rendered as a preview
500
+ */
501
+ previewProperties?: Partial<Extract<keyof T, string>>[];
502
+
503
+ /**
504
+ * Allow the user to add only some keys in this map.
505
+ * By default, all properties of the map have the corresponding field in
506
+ * the form view. Setting this flag to true allows to pick only some.
507
+ * Useful for map that can have a lot of sub-properties that may not be
508
+ * needed
509
+ */
510
+ pickOnlySomeKeys?: boolean;
511
+
512
+ /**
513
+ * Display the child properties as independent columns in the collection
514
+ * view
515
+ */
516
+ spreadChildren?: boolean;
517
+
518
+ /**
519
+ * Should the field be initially expanded. Defaults to `true`
520
+ */
521
+ expanded?: boolean;
522
+
523
+ /**
524
+ * Render this map as a key-value table that allows to use
525
+ * arbitrary keys. You don't need to define the properties in this case.
526
+ */
527
+ keyValue?: boolean;
528
+
529
+ }
530
+
531
+ /**
532
+ * @group Entity properties
533
+ */
534
+ export interface DateProperty extends BaseProperty<Date> {
535
+
536
+ dataType: "date";
537
+
538
+ /**
539
+ * Set the granularity of the field to a date or date + time.
540
+ * Defaults to `date_time`.
541
+ *
542
+ */
543
+ mode?: "date" | "date_time";
544
+
545
+ /**
546
+ * Rules for validating this property
547
+ */
548
+ validation?: DatePropertyValidationSchema;
549
+
550
+ /**
551
+ * If this flag is set to `on_create` or `on_update` this timestamp is
552
+ * updated automatically on creation of the entity only or on every
553
+ * update (including creation). Useful for creating `created_on` or
554
+ * `updated_on` fields
555
+ */
556
+ autoValue?: "on_create" | "on_update"
557
+
558
+ /**
559
+ * Add an icon to clear the value and set it to `null`. Defaults to `false`
560
+ */
561
+ clearable?: boolean;
562
+ }
563
+
564
+ /**
565
+ * @group Entity properties
566
+ */
567
+ // TODO: currently this is the only unsupported field
568
+ export interface GeopointProperty extends BaseProperty<GeoPoint> {
569
+
570
+ dataType: "geopoint";
571
+
572
+ /**
573
+ * Rules for validating this property
574
+ */
575
+ validation?: PropertyValidationSchema,
576
+
577
+ }
578
+
579
+ /**
580
+ * @group Entity properties
581
+ */
582
+ export interface ReferenceProperty extends BaseProperty<EntityReference> {
583
+
584
+ dataType: "reference";
585
+
586
+ /**
587
+ * Absolute collection path of the collection this reference points to.
588
+ * The collection of the entity is inferred based on the root navigation, so
589
+ * the filters and search delegate existing there are applied to this view
590
+ * as well.
591
+ * You can leave this prop undefined if the path is not yet know, e.g.
592
+ * you are using a property builder and the path depends on a different
593
+ * property.
594
+ * Note that you can also use a collection alias.
595
+ */
596
+ path?: string;
597
+
598
+ /**
599
+ * Allow selection of entities that pass the given filter only.
600
+ * e.g. `forceFilter: { age: [">=", 18] }`
601
+ */
602
+ forceFilter?: FilterValues<string>;
603
+
604
+ /**
605
+ * Properties that need to be rendered when displaying a preview of this
606
+ * reference. If not specified the first 3 are used. Only the first 3
607
+ * specified values are considered.
608
+ */
609
+ previewProperties?: string[];
610
+
611
+ }
612
+
613
+ /**
614
+ * Rules to validate any property. Some properties have specific rules
615
+ * additionally to these.
616
+ * @group Entity properties
617
+ */
618
+ export interface PropertyValidationSchema {
619
+ /**
620
+ * Is this field required
621
+ */
622
+ required?: boolean;
623
+
624
+ /**
625
+ * Customize the required message when the property is not set
626
+ */
627
+ requiredMessage?: string;
628
+
629
+ /**
630
+ * If the unique flag is set to `true`, you can only have one entity in the
631
+ * collection with this value.
632
+ */
633
+ unique?: boolean;
634
+
635
+ /**
636
+ * If the uniqueInArray flag is set to `true`, you can only have this value
637
+ * once per entry in the parent `ArrayProperty`. It has no effect if this
638
+ * property is not a child of an `ArrayProperty`. It works on direct
639
+ * children of an `ArrayProperty` or first level children of `MapProperty`
640
+ */
641
+ uniqueInArray?: boolean;
642
+ }
643
+
644
+ /**
645
+ * Validation rules for numbers
646
+ * @group Entity properties
647
+ */
648
+ export interface NumberPropertyValidationSchema extends PropertyValidationSchema {
649
+ min?: number;
650
+ max?: number;
651
+ lessThan?: number;
652
+ moreThan?: number;
653
+ positive?: boolean;
654
+ negative?: boolean;
655
+ integer?: boolean;
656
+ }
657
+
658
+ /**
659
+ * Validation rules for strings
660
+ * @group Entity properties
661
+ */
662
+ export interface StringPropertyValidationSchema extends PropertyValidationSchema {
663
+ length?: number;
664
+ min?: number;
665
+ max?: number;
666
+ matches?: string | RegExp;
667
+ /**
668
+ * Message displayed when the input does not satisfy the regex in `matches`
669
+ */
670
+ matchesMessage?: string;
671
+ trim?: boolean;
672
+ lowercase?: boolean;
673
+ uppercase?: boolean;
674
+ }
675
+
676
+ /**
677
+ * Validation rules for dates
678
+ * @group Entity properties
679
+ */
680
+ export interface DatePropertyValidationSchema extends PropertyValidationSchema {
681
+ min?: Date;
682
+ max?: Date;
683
+ }
684
+
685
+ /**
686
+ * Validation rules for arrays
687
+ * @group Entity properties
688
+ */
689
+ export interface ArrayPropertyValidationSchema extends PropertyValidationSchema {
690
+ min?: number;
691
+ max?: number;
692
+ }
693
+
694
+ /**
695
+ * Additional configuration related to Storage related fields
696
+ * @group Entity properties
697
+ */
698
+ export interface StorageConfig {
699
+
700
+ /**
701
+ * File MIME types that can be uploaded to this reference. Don't specify for
702
+ * all.
703
+ * Note that you can also use the asterisk notation, so `image/*`
704
+ * accepts any image file, and so on.
705
+ */
706
+ acceptedFiles?: FileType[];
707
+
708
+ /**
709
+ * Use client side image compression and resizing
710
+ * Will only be applied to these MIME types: image/jpeg, image/png and image/webp
711
+ */
712
+ imageCompression?: ImageCompression;
713
+
714
+ /**
715
+ * Specific metadata set in your uploaded file.
716
+ * For the default Firebase implementation, the values passed here are of type
717
+ * `firebase.storage.UploadMetadata`
718
+ */
719
+ metadata?: Record<string, unknown>,
720
+
721
+ /**
722
+ * You can use this prop to customize the uploaded filename.
723
+ * You can use a function as a callback or a string where you
724
+ * specify some placeholders that get replaced with the corresponding values.
725
+ * - {file} - Full file name
726
+ * - {file.name} - Name of the file without extension
727
+ * - {file.ext} - Extension of the file
728
+ * - {rand} - Random value used to avoid name collisions
729
+ * - {entityId} - ID of the entity
730
+ * - {propertyKey} - ID of this property
731
+ * - {path} - Path of this entity
732
+ *
733
+ * @param context
734
+ */
735
+ fileName?: string | ((context: UploadedFileContext) => string | Promise<string>);
736
+
737
+ /**
738
+ * Absolute path in your bucket.
739
+ *
740
+ * You can use a function as a callback or a string where you
741
+ * specify some placeholders that get replaced with the corresponding values.
742
+ * - {file} - Full file name
743
+ * - {file.name} - Name of the file without extension
744
+ * - {file.ext} - Extension of the file
745
+ * - {rand} - Random value used to avoid name collisions
746
+ * - {entityId} - ID of the entity
747
+ * - {propertyKey} - ID of this property
748
+ * - {path} - Path of this entity
749
+ */
750
+ storagePath: string | ((context: UploadedFileContext) => string);
751
+
752
+ /**
753
+ * When set to true, this flag indicates that the download URL of the file
754
+ * will be saved in the datasource, instead of the storage path.
755
+ *
756
+ * Note that the generated URL may use a token that, if disabled, may
757
+ * make the URL unusable and lose the original reference to Cloud Storage,
758
+ * so it is not encouraged to use this flag.
759
+ *
760
+ * Defaults to false.
761
+ */
762
+ storeUrl?: boolean,
763
+
764
+ /**
765
+ * Define maximal file size in bytes
766
+ */
767
+ maxSize?: number,
768
+
769
+ /**
770
+ * Postprocess the saved value (storage path or URL)
771
+ * after it has been resolved.
772
+ */
773
+ postProcess?: (pathOrUrl: string) => Promise<string>
774
+ }
775
+
776
+ /**
777
+ * @group Entity properties
778
+ */
779
+ export interface UploadedFileContext {
780
+ /**
781
+ * Uploaded file
782
+ */
783
+ file: File;
784
+
785
+ /**
786
+ * Property field name
787
+ */
788
+ propertyKey: string;
789
+
790
+ /**
791
+ * Property related to this upload
792
+ */
793
+ property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
794
+
795
+ /**
796
+ * Entity ID
797
+ */
798
+ entityId?: string;
799
+
800
+ /**
801
+ * Entity path. E.g. `products/PID/locales`
802
+ */
803
+ path: string;
804
+
805
+ /**
806
+ * Values of the current entity
807
+ */
808
+ values: EntityValues<any>;
809
+
810
+ /**
811
+ * Storage meta specified by the developer
812
+ */
813
+ storage: StorageConfig;
814
+ }
815
+
816
+ /**
817
+ * Used for previewing urls if the download file is known
818
+ * @group Entity properties
819
+ */
820
+ export type PreviewType = "image" | "video" | "audio" | "file";
821
+
822
+ /**
823
+ * MIME types for storage fields
824
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
825
+ * @group Entity properties
826
+ */
827
+ export type FileType =
828
+ "image/*"
829
+ | "video/*"
830
+ | "audio/*"
831
+ | "application/*"
832
+ | "text/*"
833
+ | "font/*"
834
+ | string;
835
+
836
+ export interface ImageCompression {
837
+ /**
838
+ * New image max height (ratio is preserved)
839
+ */
840
+ maxHeight?: number;
841
+
842
+ /**
843
+ * New image max width (ratio is preserved)
844
+ */
845
+ maxWidth?: number;
846
+
847
+ /**
848
+ * A number between 0 and 100. Used for the JPEG compression.(if no compress is needed, just set it to 100)
849
+ */
850
+ quality?: number;
851
+ }