@firecms/core 3.0.0-alpha.84 → 3.0.0-beta.10

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 (370) hide show
  1. package/README.md +6 -7
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +3 -4
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -18
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +2 -4
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +3 -3
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  24. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +26 -7
  26. package/dist/components/EntityView.d.ts +11 -0
  27. package/dist/components/ErrorView.d.ts +1 -1
  28. package/dist/components/FieldCaption.d.ts +5 -0
  29. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  30. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  31. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  32. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  33. package/dist/components/HomePage/index.d.ts +3 -1
  34. package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
  37. package/dist/components/ReferenceWidget.d.ts +6 -4
  38. package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
  39. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  40. package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  44. package/dist/components/common/index.d.ts +6 -0
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
  47. package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
  48. package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
  49. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  50. package/dist/components/index.d.ts +14 -8
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  53. package/dist/core/DefaultDrawer.d.ts +19 -0
  54. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  55. package/dist/core/EntityEditView.d.ts +36 -0
  56. package/dist/core/FireCMS.d.ts +1 -1
  57. package/dist/core/NavigationRoutes.d.ts +3 -3
  58. package/dist/core/index.d.ts +3 -6
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/CustomIdField.d.ts +2 -1
  61. package/dist/form/components/ErrorFocus.d.ts +1 -1
  62. package/dist/form/components/FieldHelperText.d.ts +3 -3
  63. package/dist/form/components/FormikArrayContainer.d.ts +2 -1
  64. package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
  65. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  66. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  67. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  68. package/dist/form/components/index.d.ts +2 -1
  69. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  75. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  76. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  80. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  81. package/dist/form/index.d.ts +4 -5
  82. package/dist/form/useClearRestoreValue.d.ts +2 -2
  83. package/dist/form/validation.d.ts +1 -1
  84. package/dist/hooks/data/delete.d.ts +2 -2
  85. package/dist/hooks/data/save.d.ts +2 -3
  86. package/dist/hooks/data/useDataSource.d.ts +2 -2
  87. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  88. package/dist/hooks/index.d.ts +5 -1
  89. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  90. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  91. package/dist/hooks/useProjectLog.d.ts +14 -0
  92. package/dist/hooks/useSnackbarController.d.ts +1 -0
  93. package/dist/hooks/useStorageSource.d.ts +2 -2
  94. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.es.js +16297 -12643
  97. package/dist/index.es.js.map +1 -1
  98. package/dist/index.umd.js +20043 -587
  99. package/dist/index.umd.js.map +1 -1
  100. package/dist/internal/useBuildDataSource.d.ts +1 -12
  101. package/dist/preview/PropertyPreview.d.ts +1 -1
  102. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  103. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  104. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  105. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  106. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  107. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  108. package/dist/types/analytics.d.ts +1 -1
  109. package/dist/types/auth.d.ts +38 -2
  110. package/dist/types/collections.d.ts +56 -9
  111. package/dist/types/datasource.d.ts +59 -39
  112. package/dist/types/entities.d.ts +7 -1
  113. package/dist/types/entity_actions.d.ts +14 -0
  114. package/dist/types/entity_callbacks.d.ts +3 -3
  115. package/dist/types/entity_overrides.d.ts +6 -0
  116. package/dist/types/fields.d.ts +47 -42
  117. package/dist/types/firecms.d.ts +8 -23
  118. package/dist/types/index.d.ts +2 -1
  119. package/dist/types/navigation.d.ts +18 -16
  120. package/dist/types/permissions.d.ts +5 -1
  121. package/dist/types/plugins.d.ts +31 -31
  122. package/dist/types/properties.d.ts +36 -23
  123. package/dist/types/property_config.d.ts +2 -2
  124. package/dist/types/roles.d.ts +31 -0
  125. package/dist/types/side_dialogs_controller.d.ts +10 -0
  126. package/dist/types/storage.d.ts +86 -3
  127. package/dist/types/user.d.ts +5 -0
  128. package/dist/util/collections.d.ts +9 -1
  129. package/dist/util/entities.d.ts +2 -2
  130. package/dist/util/icon_list.d.ts +5 -1
  131. package/dist/util/icon_synonyms.d.ts +1 -97
  132. package/dist/util/icons.d.ts +10 -3
  133. package/dist/util/index.d.ts +3 -1
  134. package/dist/util/navigation_utils.d.ts +2 -2
  135. package/dist/util/objects.d.ts +1 -1
  136. package/dist/util/permissions.d.ts +4 -4
  137. package/dist/util/plurals.d.ts +0 -2
  138. package/dist/util/property_utils.d.ts +1 -1
  139. package/dist/util/references.d.ts +4 -2
  140. package/dist/util/resolutions.d.ts +28 -14
  141. package/dist/util/storage.d.ts +23 -2
  142. package/dist/util/strings.d.ts +1 -1
  143. package/dist/util/useDebouncedCallback.d.ts +1 -0
  144. package/dist/util/useStorageUploadController.d.ts +3 -3
  145. package/dist/util/useTraceUpdate.d.ts +1 -0
  146. package/package.json +129 -112
  147. package/src/app/AppBar.tsx +18 -0
  148. package/src/app/Drawer.tsx +24 -0
  149. package/src/app/Scaffold.tsx +243 -0
  150. package/src/app/index.ts +4 -0
  151. package/src/app/useApp.tsx +32 -0
  152. package/src/components/ArrayContainer.tsx +45 -75
  153. package/src/components/CircularProgressCenter.tsx +1 -1
  154. package/src/components/ClearFilterSortButton.tsx +41 -0
  155. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  156. package/src/components/DeleteEntityDialog.tsx +4 -4
  157. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
  158. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
  159. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
  160. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
  161. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  162. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
  163. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  164. package/src/components/EntityCollectionTable/index.tsx +1 -9
  165. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  166. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  167. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  168. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
  169. package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
  170. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  171. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  172. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  173. package/src/components/EntityCollectionView/utils.ts +19 -0
  174. package/src/components/EntityPreview.tsx +208 -71
  175. package/src/components/EntityView.tsx +84 -0
  176. package/src/components/ErrorView.tsx +1 -1
  177. package/src/components/FieldCaption.tsx +14 -0
  178. package/src/components/HomePage/DefaultHomePage.tsx +38 -28
  179. package/src/components/HomePage/NavigationCard.tsx +69 -0
  180. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  181. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  182. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  183. package/src/components/HomePage/index.tsx +3 -1
  184. package/src/components/PropertyConfigBadge.tsx +23 -0
  185. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  186. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
  187. package/src/components/ReferenceWidget.tsx +26 -16
  188. package/src/components/SearchIconsView.tsx +10 -7
  189. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  190. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  191. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  192. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
  193. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
  194. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
  195. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  196. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  197. package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
  198. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  199. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  200. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  201. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  202. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  203. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  204. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  205. package/src/components/VirtualTable/types.tsx +2 -3
  206. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  207. package/src/components/common/index.ts +6 -0
  208. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  209. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  210. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  211. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
  212. package/src/components/common/useTableSearchHelper.ts +88 -0
  213. package/src/components/index.tsx +15 -8
  214. package/src/contexts/AuthControllerContext.tsx +1 -1
  215. package/src/contexts/DialogsProvider.tsx +2 -2
  216. package/src/core/DefaultAppBar.tsx +176 -0
  217. package/src/core/DefaultDrawer.tsx +183 -0
  218. package/src/core/DrawerNavigationItem.tsx +66 -0
  219. package/src/core/EntityEditView.tsx +1127 -0
  220. package/src/core/EntitySidePanel.tsx +9 -8
  221. package/src/core/FireCMS.tsx +67 -59
  222. package/src/core/NavigationRoutes.tsx +25 -17
  223. package/src/core/SideDialogs.tsx +1 -0
  224. package/src/core/field_configs.tsx +18 -19
  225. package/src/core/index.tsx +3 -6
  226. package/src/form/PropertyFieldBinding.tsx +60 -33
  227. package/src/form/components/CustomIdField.tsx +51 -36
  228. package/src/form/components/ErrorFocus.tsx +3 -3
  229. package/src/form/components/FieldHelperText.tsx +4 -4
  230. package/src/form/components/FormikArrayContainer.tsx +4 -1
  231. package/src/form/components/LabelWithIcon.tsx +41 -0
  232. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  233. package/src/form/components/StorageItemPreview.tsx +22 -10
  234. package/src/form/components/StorageUploadProgress.tsx +8 -8
  235. package/src/form/components/index.tsx +2 -1
  236. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
  237. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
  238. package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
  239. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  240. package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
  241. package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
  242. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  243. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  244. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  245. package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
  246. package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
  247. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
  248. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
  249. package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
  250. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  251. package/src/form/index.tsx +5 -9
  252. package/src/form/useClearRestoreValue.tsx +2 -2
  253. package/src/form/validation.ts +4 -21
  254. package/src/hooks/data/delete.ts +5 -4
  255. package/src/hooks/data/save.ts +7 -2
  256. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  257. package/src/hooks/data/useDataSource.tsx +15 -2
  258. package/src/hooks/data/useEntityFetch.tsx +4 -4
  259. package/src/hooks/index.tsx +7 -1
  260. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  261. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  262. package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
  263. package/src/hooks/useFireCMSContext.tsx +51 -3
  264. package/src/hooks/useLargeLayout.tsx +10 -7
  265. package/src/hooks/useProjectLog.tsx +63 -0
  266. package/src/hooks/useReferenceDialog.tsx +3 -3
  267. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  268. package/src/hooks/useSnackbarController.tsx +1 -2
  269. package/src/hooks/useStorageSource.tsx +7 -2
  270. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  271. package/src/index.ts +1 -0
  272. package/src/internal/useBuildDataSource.ts +79 -84
  273. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  274. package/src/internal/useBuildSideEntityController.tsx +103 -23
  275. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  276. package/src/preview/PropertyPreview.tsx +12 -19
  277. package/src/preview/PropertyPreviewProps.tsx +6 -10
  278. package/src/preview/components/BooleanPreview.tsx +19 -4
  279. package/src/preview/components/EnumValuesChip.tsx +2 -2
  280. package/src/preview/components/ImagePreview.tsx +24 -34
  281. package/src/preview/components/ReferencePreview.tsx +73 -176
  282. package/src/preview/components/StorageThumbnail.tsx +5 -1
  283. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  284. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
  285. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
  286. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
  287. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  288. package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
  289. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
  290. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  291. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  292. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  293. package/src/preview/util.ts +2 -2
  294. package/src/types/analytics.ts +1 -0
  295. package/src/types/auth.tsx +51 -2
  296. package/src/types/collections.ts +65 -9
  297. package/src/types/customization_controller.tsx +0 -1
  298. package/src/types/datasource.ts +69 -47
  299. package/src/types/entities.ts +15 -1
  300. package/src/types/entity_actions.tsx +17 -0
  301. package/src/types/entity_callbacks.ts +4 -3
  302. package/src/types/entity_overrides.tsx +7 -0
  303. package/src/types/fields.tsx +51 -45
  304. package/src/types/firecms.tsx +9 -26
  305. package/src/types/index.ts +2 -1
  306. package/src/types/navigation.ts +20 -19
  307. package/src/types/permissions.ts +6 -1
  308. package/src/types/plugins.tsx +38 -40
  309. package/src/types/properties.ts +42 -24
  310. package/src/types/property_config.tsx +2 -2
  311. package/src/types/roles.ts +41 -0
  312. package/src/types/side_dialogs_controller.tsx +13 -0
  313. package/src/types/side_entity_controller.tsx +1 -0
  314. package/src/types/storage.ts +94 -3
  315. package/src/types/user.ts +7 -0
  316. package/src/util/collections.ts +22 -0
  317. package/src/util/entities.ts +6 -5
  318. package/src/util/enums.ts +1 -1
  319. package/src/util/icon_list.ts +15 -10
  320. package/src/util/icon_synonyms.ts +3 -99
  321. package/src/util/icons.tsx +18 -4
  322. package/src/util/index.ts +3 -1
  323. package/src/util/make_properties_editable.ts +13 -5
  324. package/src/util/navigation_utils.ts +6 -6
  325. package/src/util/objects.ts +25 -28
  326. package/src/util/permissions.ts +12 -8
  327. package/src/util/plurals.ts +0 -2
  328. package/src/util/property_utils.tsx +1 -1
  329. package/src/util/references.ts +39 -5
  330. package/src/util/resolutions.ts +75 -42
  331. package/src/util/storage.ts +79 -21
  332. package/src/util/strings.ts +4 -3
  333. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  334. package/src/util/useStorageUploadController.tsx +33 -7
  335. package/src/util/useTraceUpdate.tsx +2 -1
  336. package/dist/components/VirtualTable/common.d.ts +0 -2
  337. package/dist/core/Drawer.d.ts +0 -23
  338. package/dist/core/Scaffold.d.ts +0 -52
  339. package/dist/form/EntityForm.d.ts +0 -75
  340. package/dist/form/components/SubmitListener.d.ts +0 -1
  341. package/dist/form/components/SwitchControl.d.ts +0 -8
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  344. package/dist/internal/EntityView.d.ts +0 -22
  345. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  346. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  347. package/dist/internal/useLocaleConfig.d.ts +0 -1
  348. package/dist/types/appcheck.d.ts +0 -26
  349. package/dist/util/useDebounce.d.ts +0 -1
  350. package/src/components/FieldConfigBadge.tsx +0 -17
  351. package/src/components/FireCMSAppBar.tsx +0 -157
  352. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  353. package/src/components/LabelWithIcon.tsx +0 -33
  354. package/src/core/Drawer.tsx +0 -162
  355. package/src/core/Scaffold.tsx +0 -278
  356. package/src/form/EntityForm.tsx +0 -657
  357. package/src/form/components/SubmitListener.tsx +0 -32
  358. package/src/form/components/SwitchControl.tsx +0 -39
  359. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  360. package/src/hooks/useVerifyLicense.tsx +0 -1
  361. package/src/internal/EntityView.tsx +0 -578
  362. package/src/internal/useBuildCustomizationController.tsx +0 -5
  363. package/src/internal/useLocaleConfig.tsx +0 -18
  364. package/src/types/appcheck.ts +0 -29
  365. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  366. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  367. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  368. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  369. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  370. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -1,6 +1,6 @@
1
- import { EntityValues } from "./entities";
2
- import { CMSType, PropertyOrBuilder } from "./properties";
1
+ import { CMSType, Property, PropertyOrBuilder } from "./properties";
3
2
  import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
3
+ import { FormexController } from "@firecms/formex";
4
4
  /**
5
5
  * When building a custom field you need to create a React component that takes
6
6
  * this interface as props.
@@ -17,10 +17,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
17
17
  * Current value of this field
18
18
  */
19
19
  value: T;
20
- /**
21
- * Initial value of this field
22
- */
23
- initialValue: T | undefined;
24
20
  /**
25
21
  * Set value of field directly
26
22
  */
@@ -35,53 +31,49 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
35
31
  /**
36
32
  * Is the form currently submitting
37
33
  */
38
- isSubmitting: boolean;
34
+ isSubmitting?: boolean;
39
35
  /**
40
36
  * Should this field show the error indicator.
41
37
  * Note that there might be an error (like an empty field that should be
42
38
  * filled) but we don't want to show the error until the user has tried
43
39
  * saving.
44
40
  */
45
- showError: boolean;
41
+ showError?: boolean;
46
42
  /**
47
43
  * Is there an error in this field. The error field has the same shape as
48
44
  * the field, replacing values with a string containing the error.
49
45
  * It takes the value `null` if there is no error
50
46
  */
51
- error: any | null;
47
+ error?: any | null;
52
48
  /**
53
49
  * Has this field been touched
54
50
  */
55
- touched: boolean;
51
+ touched?: boolean;
56
52
  /**
57
53
  * Property related to this field
58
54
  */
59
- property: ResolvedProperty<T>;
55
+ property: Property<T> | ResolvedProperty<T>;
60
56
  /**
61
57
  * Should this field include a description
62
58
  */
63
- includeDescription: boolean;
59
+ includeDescription?: boolean;
64
60
  /**
65
61
  * Flag to indicate that the underlying value has been updated in the
66
62
  * datasource
67
63
  */
68
- underlyingValueHasChanged: boolean;
64
+ underlyingValueHasChanged?: boolean;
69
65
  /**
70
66
  * Is this field part of an array
71
67
  */
72
- partOfArray: boolean;
73
- /**
74
- * Is this field part of a block (oneOf array)
75
- */
76
- partOfBlock: boolean;
68
+ partOfArray?: boolean;
77
69
  /**
78
- * Is this field being rendered in the entity table popup
70
+ * Should this field render with the minimal amount of UI elements
79
71
  */
80
- tableMode: boolean;
72
+ minimalistView?: boolean;
81
73
  /**
82
74
  * Should this field autofocus on mount
83
75
  */
84
- autoFocus: boolean;
76
+ autoFocus?: boolean;
85
77
  /**
86
78
  * Additional properties set by the developer
87
79
  */
@@ -93,29 +85,21 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
93
85
  /**
94
86
  * Flag to indicate if this field should be disabled
95
87
  */
96
- disabled: boolean;
88
+ disabled?: boolean;
89
+ /**
90
+ * Size of the field
91
+ */
92
+ size?: "smallest" | "small" | "medium";
97
93
  }
98
94
  /**
99
95
  * Context passed to custom fields
100
96
  * @group Form custom fields
101
97
  */
102
98
  export interface FormContext<M extends Record<string, any> = any> {
103
- /**
104
- * Collection of the entity being modified
105
- */
106
- collection: ResolvedEntityCollection<M>;
107
99
  /**
108
100
  * Current values of the entity
109
101
  */
110
- values: EntityValues<M>;
111
- /**
112
- * Entity id, it can be null if it's a new entity
113
- */
114
- entityId?: string;
115
- /**
116
- * Path this entity is located at
117
- */
118
- path: string;
102
+ values: M;
119
103
  /**
120
104
  * Update the value of a field
121
105
  * @param key
@@ -124,9 +108,25 @@ export interface FormContext<M extends Record<string, any> = any> {
124
108
  */
125
109
  setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
126
110
  /**
127
- * Save the entity
111
+ * Save the entity.
112
+ */
113
+ save: (values: M) => void;
114
+ /**
115
+ * Collection of the entity being modified
116
+ */
117
+ collection?: ResolvedEntityCollection<M>;
118
+ /**
119
+ * Entity id, it can be null if it's a new entity
128
120
  */
129
- save: (values: EntityValues<M>) => void;
121
+ entityId: string;
122
+ /**
123
+ * Path this entity is located at
124
+ */
125
+ path?: string;
126
+ /**
127
+ * This is the underlying formex controller that powers the form
128
+ */
129
+ formex: FormexController<M>;
130
130
  }
131
131
  /**
132
132
  * In case you need to render a field bound to a Property inside your
@@ -157,10 +157,6 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
157
157
  * field is being edited
158
158
  */
159
159
  underlyingValueHasChanged?: boolean;
160
- /**
161
- * Is this field being rendered in a table
162
- */
163
- tableMode?: boolean;
164
160
  /**
165
161
  * Is this field part of an array
166
162
  */
@@ -168,7 +164,7 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
168
164
  /**
169
165
  * Is this field part of a block (oneOf array)
170
166
  */
171
- partOfBlock?: boolean;
167
+ minimalistView?: boolean;
172
168
  /**
173
169
  * Should the field take focus when rendered. When opening the popup view
174
170
  * in table mode, it makes sense to put the focus on the only field rendered.
@@ -178,4 +174,13 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
178
174
  * Should this field be disabled
179
175
  */
180
176
  disabled?: boolean;
177
+ /**
178
+ * Index of the field in the array.
179
+ * Only used when the field is part of an array.
180
+ */
181
+ index?: number;
182
+ /**
183
+ * The size of the field
184
+ */
185
+ size?: "smallest" | "small" | "medium";
181
186
  }
@@ -3,7 +3,7 @@ import { User } from "./user";
3
3
  import { AuthController } from "./auth";
4
4
  import { DataSourceDelegate } from "./datasource";
5
5
  import { EntityCollection, EntityCustomView } from "./collections";
6
- import { CMSView } from "./navigation";
6
+ import { CMSView, NavigationController } from "./navigation";
7
7
  import { FireCMSContext } from "./firecms_context";
8
8
  import { PropertyConfig } from "./property_config";
9
9
  import { Locale } from "./locales";
@@ -63,23 +63,20 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
63
63
  loading: boolean;
64
64
  }) => React.ReactNode;
65
65
  /**
66
- * List of the mapped collections in the CMS.
67
- * Each entry relates to a collection in the root database.
68
- * Each of the navigation entries in this field
69
- * generates an entry in the main menu.
66
+ * If you have a custom API key, you can use it here.
70
67
  */
71
- collections?: EC[] | EntityCollectionsBuilder<EC>;
72
- /**
73
- * Custom additional views created by the developer, added to the main
74
- * navigation
75
- */
76
- views?: CMSView[] | CMSViewsBuilder;
68
+ apiKey?: string;
77
69
  /**
78
70
  * Record of custom form fields to be used in the CMS.
79
71
  * You can use the key to reference the custom field in
80
72
  * the `propertyConfig` prop of a property in a collection.
81
73
  */
82
74
  propertyConfigs?: Record<string, PropertyConfig>;
75
+ /**
76
+ * This controller is in charge of the navigation of the CMS.
77
+ * It is in charge of resolving the collection and entity paths.
78
+ */
79
+ navigationController: NavigationController;
83
80
  /**
84
81
  * List of additional custom views for entities.
85
82
  * You can use the key to reference the custom view in
@@ -109,18 +106,6 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
109
106
  * Delegate for implementing your auth operations.
110
107
  */
111
108
  authController: AuthController<UserType>;
112
- /**
113
- * Path under the navigation routes of the CMS will be created. Defaults to `/`.
114
- * Internally FireCMS uses `react-router` to create the routes, the base path is attached to the
115
- * `BrowserRouter` component. If you are using FireCMS in a subpath of your website, you can use
116
- * this prop to specify the base path.
117
- */
118
- basePath?: string;
119
- /**
120
- * Path under the collection routes of the CMS will be created.
121
- * Defaults to `/c`.
122
- */
123
- baseCollectionPath?: string;
124
109
  /**
125
110
  * Use this controller to access the configuration that is stored locally,
126
111
  * and not defined in code
@@ -17,11 +17,12 @@ export * from "./side_entity_controller";
17
17
  export * from "./side_dialogs_controller";
18
18
  export * from "./firecms_context";
19
19
  export * from "./entity_callbacks";
20
+ export * from "./entity_overrides";
20
21
  export * from "./local_config_persistence";
21
22
  export * from "./plugins";
22
23
  export * from "./analytics";
23
24
  export * from "./firecms";
24
- export * from "./appcheck";
25
+ export * from "./roles";
25
26
  export * from "./export_import";
26
27
  export * from "./modify_collections";
27
28
  export * from "./analytics_controller";
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import { EntityCollection } from "./collections";
2
3
  import { EntityReference } from "./entities";
3
4
  /**
@@ -5,19 +6,24 @@ import { EntityReference } from "./entities";
5
6
  * attributes.
6
7
  * @group Models
7
8
  */
8
- export type NavigationController = {
9
+ export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
9
10
  /**
10
11
  * List of the mapped collections in the CMS.
11
12
  * Each entry relates to a collection in the root database.
12
13
  * Each of the navigation entries in this field
13
14
  * generates an entry in the main menu.
14
15
  */
15
- collections: EntityCollection[];
16
+ collections?: EntityCollection[];
16
17
  /**
17
18
  * Custom additional views created by the developer, added to the main
18
19
  * navigation
19
20
  */
20
- views: CMSView[];
21
+ views?: CMSView[];
22
+ /**
23
+ * Custom additional views created by the developer, added to the admin
24
+ * navigation
25
+ */
26
+ adminViews?: CMSView[];
21
27
  /**
22
28
  * Configuration for the views that should be displayed at the top
23
29
  * level of the navigation (e.g. in the home page or the navigation
@@ -41,15 +47,15 @@ export type NavigationController = {
41
47
  * Get the collection configuration for a given path.
42
48
  * The collection is resolved from the given path or alias.
43
49
  */
44
- getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string, entityId?: string, includeUserOverride?: boolean) => EC | undefined;
50
+ getCollection: (pathOrId: string, includeUserOverride?: boolean) => EC | undefined;
45
51
  /**
46
- * Get the collection configuration from its parent path segments.
52
+ * Get the collection configuration from its parent ids.
47
53
  */
48
- getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
54
+ getCollectionFromIds: (ids: string[]) => EC | undefined;
49
55
  /**
50
56
  * Get the collection configuration from its parent path segments.
51
57
  */
52
- getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
58
+ getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
53
59
  /**
54
60
  * Default path under the navigation routes of the CMS will be created
55
61
  */
@@ -95,12 +101,6 @@ export type NavigationController = {
95
101
  * @param pathWithAliases
96
102
  */
97
103
  resolveAliasesFrom: (pathWithAliases: string) => string;
98
- /**
99
- * Location used as the base for routes.
100
- * This is the location that will be used underneath, when the url changes while
101
- * opening a side dialog
102
- */
103
- baseLocation: string;
104
104
  /**
105
105
  * Call this method to recalculate the navigation
106
106
  */
@@ -144,6 +144,7 @@ export interface CMSView {
144
144
  * You can use any of the icons in the Material specs:
145
145
  * https://fonts.google.com/icons
146
146
  * e.g. 'account_tree' or 'person'
147
+ * Find all the icons in https://firecms.co/docs/icons
147
148
  */
148
149
  icon?: string;
149
150
  /**
@@ -159,6 +160,7 @@ export interface CMSView {
159
160
  /**
160
161
  * Optional field used to group top level navigation entries under a
161
162
  * navigation view.
163
+ * This prop is ignored for admin views.
162
164
  */
163
165
  group?: string;
164
166
  }
@@ -166,11 +168,11 @@ export interface TopNavigationEntry {
166
168
  url: string;
167
169
  name: string;
168
170
  path: string;
169
- type: "collection" | "view";
171
+ type: "collection" | "view" | "admin";
170
172
  collection?: EntityCollection;
171
- view: CMSView;
173
+ view?: CMSView;
172
174
  description?: string;
173
- group?: string;
175
+ group: string;
174
176
  }
175
177
  export type TopNavigationResult = {
176
178
  navigationEntries: TopNavigationEntry[];
@@ -38,6 +38,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
38
38
  * in a collection, the entity will be null.
39
39
  */
40
40
  entity: Entity<M> | null;
41
+ /**
42
+ * Path of the collection e.g. 'products/12345/locales'
43
+ */
44
+ path: string;
41
45
  /**
42
46
  * Path segments of the collection e.g. ['products', 'locales']
43
47
  */
@@ -60,4 +64,4 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
60
64
  * based on the logged user or collection.
61
65
  * @group Models
62
66
  */
63
- export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, UserType, M>) => Permissions);
67
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> = (({ pathSegments, user, collection, authController }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);
@@ -1,6 +1,6 @@
1
1
  import React, { PropsWithChildren } from "react";
2
2
  import { FireCMSContext } from "./firecms_context";
3
- import { CollectionActionsProps, EntityCollection } from "./collections";
3
+ import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
4
4
  import { User } from "./user";
5
5
  import { FieldProps, FormContext } from "./fields";
6
6
  import { CMSType, Property } from "./properties";
@@ -11,41 +11,16 @@ import { ResolvedProperty } from "./resolved_entities";
11
11
  * NOTE: This is a work in progress and the API is not stable yet.
12
12
  * @group Core
13
13
  */
14
- export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
14
+ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
15
15
  /**
16
- * Name of the plugin
16
+ * Key of the plugin. This is used to identify the plugin in the CMS.
17
17
  */
18
- name: string;
18
+ key: string;
19
19
  /**
20
20
  * If this flag is set to true, no content will be shown in the CMS
21
21
  * until the plugin is fully loaded.
22
22
  */
23
23
  loading?: boolean;
24
- collections?: {
25
- /**
26
- * Use this method to inject collections to the CMS.
27
- * You receive the current collections as a parameter, and you can return
28
- * a new list of collections.
29
- * @see {@link joinCollectionLists}
30
- * @param collections
31
- */
32
- injectCollections?: (collections: EntityCollection[]) => EntityCollection[];
33
- /**
34
- * Use this component to add custom actions to the entity collections
35
- * toolbar.
36
- */
37
- CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
38
- collectionActionsProps?: COL_ACTIONS_PROPS;
39
- };
40
- form?: {
41
- provider?: {
42
- Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
43
- props?: FORM_PROPS;
44
- };
45
- Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
46
- fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
47
- fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
48
- };
49
24
  /**
50
25
  * You can use this prop to add higher order components to the CMS.
51
26
  * The components will be added to the root of the CMS, so any component
@@ -97,6 +72,20 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
97
72
  };
98
73
  };
99
74
  collectionView?: {
75
+ /**
76
+ * Use this component to add custom actions to the entity collections
77
+ * toolbar.
78
+ */
79
+ CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
80
+ collectionActionsProps?: COL_ACTIONS_PROPS;
81
+ CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
82
+ collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
83
+ blockSearch?: (props: {
84
+ context: FireCMSContext;
85
+ path: string;
86
+ collection: EC;
87
+ parentCollectionIds?: string[];
88
+ }) => boolean;
100
89
  showTextSearchBar?: (props: {
101
90
  context: FireCMSContext;
102
91
  path: string;
@@ -120,6 +109,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
120
109
  parentCollectionIds: string[];
121
110
  onHover: boolean;
122
111
  collection: EC;
112
+ tableController: EntityTableController;
123
113
  }>;
124
114
  /**
125
115
  * If you add this callback to your plugin, an add button will be added to the collection table.
@@ -129,8 +119,18 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
129
119
  fullPath: string;
130
120
  parentCollectionIds: string[];
131
121
  collection: EC;
122
+ tableController: EntityTableController;
132
123
  }>;
133
124
  };
125
+ form?: {
126
+ provider?: {
127
+ Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
128
+ props?: FORM_PROPS;
129
+ };
130
+ Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
131
+ fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
132
+ fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
133
+ };
134
134
  };
135
135
  /**
136
136
  * Props passed to the {@link FireCMSPlugin.homePage.CollectionActions} method.
@@ -169,8 +169,8 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
169
169
  property: Property<T> | ResolvedProperty<T>;
170
170
  Field: React.ComponentType<FieldProps<T, any, M>>;
171
171
  plugin: FireCMSPlugin;
172
- path: string;
173
- collection: EC;
172
+ path?: string;
173
+ collection?: EC;
174
174
  };
175
175
  export interface PluginGenericProps<UserType extends User = User> {
176
176
  context: FireCMSContext<UserType>;
@@ -1,14 +1,14 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "./fields";
3
3
  import { PropertyPreviewProps } from "../preview";
4
- import { EntityReference, EntityValues, GeoPoint } from "./entities";
4
+ import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
5
5
  import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
6
6
  import { FilterValues } from "./collections";
7
7
  import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
8
8
  /**
9
9
  * @group Entity properties
10
10
  */
11
- export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends EntityReference ? "reference" : T extends Array<CMSType> ? "array" : T extends Record<string, any> ? "map" : never;
11
+ export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<any> ? "array" : T extends Record<string, any> ? "map" : never;
12
12
  /**
13
13
  * @group Entity properties
14
14
  */
@@ -20,7 +20,7 @@ export type AnyProperty = StringProperty | NumberProperty | BooleanProperty | Da
20
20
  /**
21
21
  * @group Entity properties
22
22
  */
23
- export type Property<T extends CMSType = CMSType> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
23
+ export type Property<T extends CMSType = any> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
24
24
  /**
25
25
  * Interface including all common properties of a CMS property
26
26
  * @group Entity properties
@@ -97,7 +97,7 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
97
97
  /**
98
98
  * This value will be set by default for new entities.
99
99
  */
100
- defaultValue?: T;
100
+ defaultValue?: T | null;
101
101
  /**
102
102
  * Should this property be editable. If set to true, the user will be able to modify the property and
103
103
  * save the new config. The saved config will then become the source of truth.
@@ -207,7 +207,7 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
207
207
  * current value of the property, as well as the path and entity ID.
208
208
  * @group Entity properties
209
209
  */
210
- export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
210
+ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, index, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
211
211
  /**
212
212
  * @group Entity properties
213
213
  */
@@ -306,7 +306,7 @@ export interface StringProperty extends BaseProperty<string> {
306
306
  /**
307
307
  * @group Entity properties
308
308
  */
309
- export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> extends BaseProperty<T> {
309
+ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
310
310
  dataType: "array";
311
311
  /**
312
312
  * The property of this array.
@@ -474,6 +474,14 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
474
474
  * specified values are considered.
475
475
  */
476
476
  previewProperties?: string[];
477
+ /**
478
+ * Should the reference include the ID of the entity. Defaults to `true`
479
+ */
480
+ includeId?: boolean;
481
+ /**
482
+ * Should the reference include a link to the entity (open the entity details). Defaults to `true`
483
+ */
484
+ includeEntityLink?: boolean;
477
485
  }
478
486
  /**
479
487
  * Rules to validate any property. Some properties have specific rules
@@ -552,7 +560,7 @@ export interface ArrayPropertyValidationSchema extends PropertyValidationSchema
552
560
  * Additional configuration related to Storage related fields
553
561
  * @group Entity properties
554
562
  */
555
- export interface StorageConfig {
563
+ export type StorageConfig = {
556
564
  /**
557
565
  * File MIME types that can be uploaded to this reference. Don't specify for
558
566
  * all.
@@ -575,13 +583,13 @@ export interface StorageConfig {
575
583
  * You can use this prop to customize the uploaded filename.
576
584
  * You can use a function as a callback or a string where you
577
585
  * specify some placeholders that get replaced with the corresponding values.
578
- * - {file} - Full file name
579
- * - {file.name} - Name of the file without extension
580
- * - {file.ext} - Extension of the file
581
- * - {rand} - Random value used to avoid name collisions
582
- * - {entityId} - ID of the entity
583
- * - {propertyKey} - ID of this property
584
- * - {path} - Path of this entity
586
+ * - `{file}` - Full file name
587
+ * - `{file.name}` - Name of the file without extension
588
+ * - `{file.ext}` - Extension of the file
589
+ * - `{rand}` - Random value used to avoid name collisions
590
+ * - `{entityId}` - ID of the entity
591
+ * - `{propertyKey}` - ID of this property
592
+ * - `{path}` - Path of this entity
585
593
  *
586
594
  * @param context
587
595
  */
@@ -591,13 +599,13 @@ export interface StorageConfig {
591
599
  *
592
600
  * You can use a function as a callback or a string where you
593
601
  * specify some placeholders that get replaced with the corresponding values.
594
- * - {file} - Full file name
595
- * - {file.name} - Name of the file without extension
596
- * - {file.ext} - Extension of the file
597
- * - {rand} - Random value used to avoid name collisions
598
- * - {entityId} - ID of the entity
599
- * - {propertyKey} - ID of this property
600
- * - {path} - Path of this entity
602
+ * - `{file}` - Full file name
603
+ * - `{file.name}` - Name of the file without extension
604
+ * - `{file.ext}` - Extension of the file
605
+ * - `{rand}` - Random value used to avoid name collisions
606
+ * - `{entityId}` - ID of the entity
607
+ * - `{propertyKey}` - ID of this property
608
+ * - `{path}` - Path of this entity
601
609
  */
602
610
  storagePath: string | ((context: UploadedFileContext) => string);
603
611
  /**
@@ -620,7 +628,12 @@ export interface StorageConfig {
620
628
  * after it has been resolved.
621
629
  */
622
630
  postProcess?: (pathOrUrl: string) => Promise<string>;
623
- }
631
+ /**
632
+ * You can use this prop in order to provide a custom preview URL.
633
+ * Useful when the file's path is different from the original field value
634
+ */
635
+ previewUrl?: (fileName: string) => string;
636
+ };
624
637
  /**
625
638
  * @group Entity properties
626
639
  */
@@ -644,7 +657,7 @@ export interface UploadedFileContext {
644
657
  /**
645
658
  * Entity path. E.g. `products/PID/locales`
646
659
  */
647
- path: string;
660
+ path?: string;
648
661
  /**
649
662
  * Values of the current entity
650
663
  */
@@ -9,7 +9,7 @@ export type PropertyConfig<T extends CMSType = any> = {
9
9
  /**
10
10
  * Key used to identify this property config.
11
11
  */
12
- key: string;
12
+ key: PropertyConfigId | string;
13
13
  /**
14
14
  * Name of this field type.
15
15
  * This is not the name of the property.
@@ -39,4 +39,4 @@ export type PropertyConfig<T extends CMSType = any> = {
39
39
  */
40
40
  description?: string;
41
41
  };
42
- export type FieldConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
42
+ export type PropertyConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
@@ -0,0 +1,31 @@
1
+ import { Permissions } from "../index";
2
+ export type Role = {
3
+ /**
4
+ * ID of the role
5
+ */
6
+ id: string;
7
+ /**
8
+ * Name of the role
9
+ */
10
+ name: string;
11
+ /**
12
+ * If this flag is true, the user can perform any action
13
+ */
14
+ isAdmin?: boolean;
15
+ /**
16
+ * Default permissions for all collections for this role.
17
+ * You can override this values at the collection level using
18
+ * {@link collectionPermissions}
19
+ */
20
+ defaultPermissions?: Permissions;
21
+ /**
22
+ * Record of stripped collection ids to their permissions.
23
+ * @see stripCollectionPath
24
+ */
25
+ collectionPermissions?: Record<string, Permissions>;
26
+ config?: {
27
+ createCollections?: boolean;
28
+ editCollections?: boolean | "own";
29
+ deleteCollections?: boolean | "own";
30
+ };
31
+ };