@firecms/core 3.0.0-canary.16 → 3.0.0-canary.161

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 (329) hide show
  1. package/README.md +3 -3
  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 +19 -6
  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 +11 -12
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -5
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  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/internal/CollectionTableToolbar.d.ts +1 -4
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  19. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  20. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
  21. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  22. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  23. package/dist/components/EntityPreview.d.ts +7 -6
  24. package/dist/components/ErrorView.d.ts +1 -1
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  27. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  28. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  29. package/dist/components/ReferenceWidget.d.ts +3 -1
  30. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  31. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  32. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  33. package/dist/components/VirtualTable/types.d.ts +3 -3
  34. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  35. package/dist/components/common/index.d.ts +1 -0
  36. package/dist/components/common/table_height.d.ts +5 -0
  37. package/dist/components/common/types.d.ts +4 -6
  38. package/dist/components/common/useColumnsIds.d.ts +2 -1
  39. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +4 -1
  40. package/dist/components/index.d.ts +4 -2
  41. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  42. package/dist/core/DefaultDrawer.d.ts +19 -0
  43. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  44. package/dist/core/EntityEditView.d.ts +18 -4
  45. package/dist/core/FireCMS.d.ts +2 -2
  46. package/dist/core/NavigationRoutes.d.ts +3 -3
  47. package/dist/core/index.d.ts +3 -4
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/ErrorFocus.d.ts +1 -1
  50. package/dist/form/components/FieldHelperText.d.ts +3 -3
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  54. package/dist/form/components/index.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  60. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  61. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  62. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  67. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  68. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  69. package/dist/form/index.d.ts +3 -5
  70. package/dist/form/useClearRestoreValue.d.ts +2 -2
  71. package/dist/hooks/data/delete.d.ts +4 -4
  72. package/dist/hooks/data/save.d.ts +4 -5
  73. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  74. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  75. package/dist/hooks/index.d.ts +1 -0
  76. package/dist/hooks/useAuthController.d.ts +1 -1
  77. package/dist/hooks/useBuildNavigationController.d.ts +3 -4
  78. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  79. package/dist/hooks/useProjectLog.d.ts +8 -2
  80. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  81. package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.es.js +20199 -14111
  84. package/dist/index.es.js.map +1 -1
  85. package/dist/index.umd.js +22769 -588
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/internal/useBuildDataSource.d.ts +1 -16
  88. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  89. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  90. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  91. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  92. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  93. package/dist/preview/util.d.ts +3 -3
  94. package/dist/types/auth.d.ts +8 -10
  95. package/dist/types/collections.d.ts +53 -18
  96. package/dist/types/datasource.d.ts +51 -35
  97. package/dist/types/entities.d.ts +6 -1
  98. package/dist/types/entity_actions.d.ts +18 -4
  99. package/dist/types/entity_callbacks.d.ts +16 -16
  100. package/dist/types/entity_overrides.d.ts +2 -2
  101. package/dist/types/export_import.d.ts +4 -4
  102. package/dist/types/fields.d.ts +63 -41
  103. package/dist/types/firecms.d.ts +6 -2
  104. package/dist/types/firecms_context.d.ts +1 -1
  105. package/dist/types/index.d.ts +0 -1
  106. package/dist/types/navigation.d.ts +6 -5
  107. package/dist/types/permissions.d.ts +4 -4
  108. package/dist/types/plugins.d.ts +22 -12
  109. package/dist/types/properties.d.ts +34 -21
  110. package/dist/types/property_config.d.ts +0 -2
  111. package/dist/types/side_dialogs_controller.d.ts +10 -0
  112. package/dist/types/storage.d.ts +86 -3
  113. package/dist/types/user.d.ts +1 -0
  114. package/dist/util/builders.d.ts +2 -2
  115. package/dist/util/entities.d.ts +2 -2
  116. package/dist/util/icon_list.d.ts +5 -1
  117. package/dist/util/icon_synonyms.d.ts +1 -98
  118. package/dist/util/icons.d.ts +6 -3
  119. package/dist/util/index.d.ts +1 -0
  120. package/dist/util/navigation_utils.d.ts +2 -2
  121. package/dist/util/objects.d.ts +2 -1
  122. package/dist/util/permissions.d.ts +4 -4
  123. package/dist/util/plurals.d.ts +0 -2
  124. package/dist/util/property_utils.d.ts +3 -3
  125. package/dist/util/resolutions.d.ts +30 -16
  126. package/dist/util/storage.d.ts +23 -2
  127. package/dist/util/useStorageUploadController.d.ts +3 -3
  128. package/package.json +59 -44
  129. package/src/app/AppBar.tsx +18 -0
  130. package/src/app/Drawer.tsx +24 -0
  131. package/src/app/Scaffold.tsx +243 -0
  132. package/src/app/index.ts +4 -0
  133. package/src/app/useApp.tsx +32 -0
  134. package/src/components/ArrayContainer.tsx +92 -25
  135. package/src/components/CircularProgressCenter.tsx +2 -2
  136. package/src/components/ClearFilterSortButton.tsx +41 -0
  137. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  138. package/src/components/DeleteEntityDialog.tsx +9 -18
  139. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
  140. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +28 -25
  141. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
  142. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  143. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  144. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
  145. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  146. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +30 -35
  147. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  148. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  149. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -77
  150. package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
  151. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  152. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  153. package/src/components/EntityCollectionView/utils.ts +19 -0
  154. package/src/components/EntityPreview.tsx +60 -51
  155. package/src/components/EntityView.tsx +10 -10
  156. package/src/components/ErrorView.tsx +4 -4
  157. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  158. package/src/components/HomePage/FavouritesView.tsx +6 -11
  159. package/src/components/HomePage/NavigationCard.tsx +4 -4
  160. package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
  161. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  162. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  163. package/src/components/PropertyConfigBadge.tsx +9 -3
  164. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  165. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
  166. package/src/components/ReferenceWidget.tsx +22 -12
  167. package/src/components/SearchIconsView.tsx +10 -7
  168. package/src/components/SelectableTable/SelectableTable.tsx +9 -9
  169. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  170. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  171. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +30 -6
  172. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  173. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  174. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  175. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  176. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  177. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  178. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  179. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  180. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  181. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  182. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  183. package/src/components/VirtualTable/types.tsx +2 -3
  184. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
  185. package/src/components/common/index.ts +1 -0
  186. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  187. package/src/components/common/types.tsx +4 -6
  188. package/src/components/common/useColumnsIds.tsx +23 -2
  189. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
  190. package/src/components/common/useTableSearchHelper.ts +53 -12
  191. package/src/components/index.tsx +4 -2
  192. package/src/contexts/DialogsProvider.tsx +2 -2
  193. package/src/contexts/SnackbarProvider.tsx +2 -0
  194. package/src/core/DefaultAppBar.tsx +178 -0
  195. package/src/core/DefaultDrawer.tsx +184 -0
  196. package/src/core/DrawerNavigationItem.tsx +66 -0
  197. package/src/core/EntityEditView.tsx +721 -156
  198. package/src/core/EntitySidePanel.tsx +1 -2
  199. package/src/core/FireCMS.tsx +57 -53
  200. package/src/core/NavigationRoutes.tsx +7 -8
  201. package/src/core/SideDialogs.tsx +2 -1
  202. package/src/core/field_configs.tsx +11 -12
  203. package/src/core/index.tsx +3 -4
  204. package/src/form/PropertyFieldBinding.tsx +74 -35
  205. package/src/form/components/CustomIdField.tsx +6 -2
  206. package/src/form/components/FieldHelperText.tsx +4 -4
  207. package/src/form/components/LabelWithIcon.tsx +27 -19
  208. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  209. package/src/form/components/StorageItemPreview.tsx +22 -12
  210. package/src/form/components/StorageUploadProgress.tsx +3 -4
  211. package/src/form/components/index.tsx +1 -1
  212. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  213. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  214. package/src/form/field_bindings/BlockFieldBinding.tsx +53 -33
  215. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  216. package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
  217. package/src/form/field_bindings/MapFieldBinding.tsx +67 -48
  218. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  219. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  220. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  221. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  222. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  223. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
  224. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +37 -47
  225. package/src/form/field_bindings/SwitchFieldBinding.tsx +28 -24
  226. package/src/form/field_bindings/TextFieldBinding.tsx +27 -24
  227. package/src/form/index.tsx +4 -9
  228. package/src/form/useClearRestoreValue.tsx +2 -2
  229. package/src/form/validation.ts +1 -17
  230. package/src/hooks/data/delete.ts +6 -5
  231. package/src/hooks/data/save.ts +12 -8
  232. package/src/hooks/data/useCollectionFetch.tsx +2 -2
  233. package/src/hooks/data/useDataSource.tsx +11 -3
  234. package/src/hooks/data/useEntityFetch.tsx +5 -5
  235. package/src/hooks/index.tsx +1 -0
  236. package/src/hooks/useAuthController.tsx +1 -1
  237. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  238. package/src/hooks/useBuildModeController.tsx +11 -5
  239. package/src/hooks/useBuildNavigationController.tsx +93 -34
  240. package/src/hooks/useFireCMSContext.tsx +5 -5
  241. package/src/hooks/useProjectLog.tsx +32 -10
  242. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  243. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  244. package/src/index.ts +1 -0
  245. package/src/internal/useBuildDataSource.ts +72 -82
  246. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  247. package/src/internal/useBuildSideEntityController.tsx +102 -22
  248. package/src/internal/useUnsavedChangesDialog.tsx +5 -3
  249. package/src/preview/PropertyPreview.tsx +11 -18
  250. package/src/preview/PropertyPreviewProps.tsx +7 -1
  251. package/src/preview/components/BooleanPreview.tsx +2 -2
  252. package/src/preview/components/EmptyValue.tsx +1 -1
  253. package/src/preview/components/EnumValuesChip.tsx +2 -2
  254. package/src/preview/components/ImagePreview.tsx +25 -36
  255. package/src/preview/components/ReferencePreview.tsx +23 -34
  256. package/src/preview/components/StorageThumbnail.tsx +5 -1
  257. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  258. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  259. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  260. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  261. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  262. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  263. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  264. package/src/preview/property_previews/MapPropertyPreview.tsx +9 -9
  265. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  266. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  267. package/src/preview/util.ts +10 -10
  268. package/src/types/auth.tsx +9 -13
  269. package/src/types/collections.ts +62 -20
  270. package/src/types/customization_controller.tsx +0 -1
  271. package/src/types/datasource.ts +60 -43
  272. package/src/types/entities.ts +11 -1
  273. package/src/types/entity_actions.tsx +20 -7
  274. package/src/types/entity_callbacks.ts +18 -18
  275. package/src/types/entity_overrides.tsx +2 -2
  276. package/src/types/export_import.ts +4 -4
  277. package/src/types/fields.tsx +69 -45
  278. package/src/types/firecms.tsx +7 -2
  279. package/src/types/firecms_context.tsx +1 -1
  280. package/src/types/index.ts +0 -1
  281. package/src/types/navigation.ts +7 -7
  282. package/src/types/permissions.ts +5 -5
  283. package/src/types/plugins.tsx +24 -14
  284. package/src/types/properties.ts +39 -22
  285. package/src/types/property_config.tsx +0 -2
  286. package/src/types/side_dialogs_controller.tsx +13 -0
  287. package/src/types/storage.ts +94 -3
  288. package/src/types/user.ts +2 -0
  289. package/src/util/builders.ts +6 -6
  290. package/src/util/entities.ts +6 -5
  291. package/src/util/enums.ts +1 -1
  292. package/src/util/icon_list.ts +16 -10
  293. package/src/util/icon_synonyms.ts +3 -100
  294. package/src/util/icons.tsx +17 -7
  295. package/src/util/index.ts +1 -0
  296. package/src/util/make_properties_editable.ts +13 -5
  297. package/src/util/navigation_utils.ts +6 -6
  298. package/src/util/objects.ts +45 -28
  299. package/src/util/permissions.ts +9 -8
  300. package/src/util/plurals.ts +0 -2
  301. package/src/util/property_utils.tsx +11 -4
  302. package/src/util/references.ts +11 -2
  303. package/src/util/resolutions.ts +79 -46
  304. package/src/util/storage.ts +79 -21
  305. package/src/util/strings.ts +2 -2
  306. package/src/util/useStorageUploadController.tsx +34 -8
  307. package/src/util/useTraceUpdate.tsx +1 -0
  308. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  309. package/dist/components/VirtualTable/common.d.ts +0 -2
  310. package/dist/core/Drawer.d.ts +0 -23
  311. package/dist/core/Scaffold.d.ts +0 -55
  312. package/dist/core/SideEntityView.d.ts +0 -7
  313. package/dist/form/EntityForm.d.ts +0 -77
  314. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  315. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  316. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  317. package/dist/internal/useLocaleConfig.d.ts +0 -1
  318. package/dist/types/appcheck.d.ts +0 -26
  319. package/src/components/FireCMSAppBar.tsx +0 -165
  320. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  321. package/src/core/Drawer.tsx +0 -191
  322. package/src/core/Scaffold.tsx +0 -281
  323. package/src/core/SideEntityView.tsx +0 -38
  324. package/src/form/EntityForm.tsx +0 -728
  325. package/src/form/components/FormikArrayContainer.tsx +0 -44
  326. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  327. package/src/internal/useBuildCustomizationController.tsx +0 -5
  328. package/src/internal/useLocaleConfig.tsx +0 -18
  329. package/src/types/appcheck.ts +0 -29
@@ -47,7 +47,7 @@ export type CMSViewsBuilder = (params: {
47
47
  /**
48
48
  * @group Models
49
49
  */
50
- export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
50
+ export type FireCMSProps<USER extends User, EC extends EntityCollection> = {
51
51
 
52
52
  /**
53
53
  * Use this function to return the components you want to render under
@@ -67,6 +67,11 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
67
67
  loading: boolean;
68
68
  }) => React.ReactNode;
69
69
 
70
+ /**
71
+ * If you have a custom API key, you can use it here.
72
+ */
73
+ apiKey?: string;
74
+
70
75
  /**
71
76
  * Record of custom form fields to be used in the CMS.
72
77
  * You can use the key to reference the custom field in
@@ -114,7 +119,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
114
119
  /**
115
120
  * Delegate for implementing your auth operations.
116
121
  */
117
- authController: AuthController<UserType>;
122
+ authController: AuthController<USER>;
118
123
 
119
124
  /**
120
125
  * Use this controller to access the configuration that is stored locally,
@@ -18,7 +18,7 @@ import { AnalyticsController } from "./analytics_controller";
18
18
  * @group Hooks and utilities
19
19
  * @see useFireCMSContext
20
20
  */
21
- export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
21
+ export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
22
22
 
23
23
  /**
24
24
  * Connector to your database, e.g. your Firestore database
@@ -23,7 +23,6 @@ export * from "./plugins";
23
23
  export * from "./analytics";
24
24
  export * from "./firecms";
25
25
  export * from "./roles";
26
- export * from "./appcheck";
27
26
  export * from "./export_import";
28
27
  export * from "./modify_collections";
29
28
  export * from "./analytics_controller";
@@ -7,7 +7,7 @@ import { EntityReference } from "./entities";
7
7
  * attributes.
8
8
  * @group Models
9
9
  */
10
- export type NavigationController = {
10
+ export type NavigationController<EC extends EntityCollection = EntityCollection<any>> = {
11
11
 
12
12
  /**
13
13
  * List of the mapped collections in the CMS.
@@ -56,18 +56,17 @@ export type NavigationController = {
56
56
  * Get the collection configuration for a given path.
57
57
  * The collection is resolved from the given path or alias.
58
58
  */
59
- getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string,
60
- entityId?: string,
61
- includeUserOverride?: boolean) => EC | undefined;
59
+ getCollection: (pathOrId: string,
60
+ includeUserOverride?: boolean) => EC | undefined;
62
61
  /**
63
- * Get the collection configuration from its parent path segments.
62
+ * Get the collection configuration from its parent ids.
64
63
  */
65
- getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
64
+ getCollectionFromIds: (ids: string[]) => EC | undefined;
66
65
 
67
66
  /**
68
67
  * Get the collection configuration from its parent path segments.
69
68
  */
70
- getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
69
+ getCollectionFromPaths: (pathSegments: string[]) => EC | undefined;
71
70
 
72
71
  /**
73
72
  * Default path under the navigation routes of the CMS will be created
@@ -174,6 +173,7 @@ export interface CMSView {
174
173
  * You can use any of the icons in the Material specs:
175
174
  * https://fonts.google.com/icons
176
175
  * e.g. 'account_tree' or 'person'
176
+ * Find all the icons in https://firecms.co/docs/icons
177
177
  */
178
178
  icon?: string;
179
179
 
@@ -32,7 +32,7 @@ export interface Permissions {
32
32
  * Props passed to a {@link PermissionsBuilder}
33
33
  * @group Models
34
34
  */
35
- export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> {
35
+ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> {
36
36
  /**
37
37
  * Entity being edited, might be null in some cases, when the operation
38
38
  * refers to the collection.
@@ -54,7 +54,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
54
54
  /**
55
55
  * Logged in user
56
56
  */
57
- user: UserType | null;
57
+ user: USER | null;
58
58
 
59
59
  /**
60
60
  * Collection these permissions apply to
@@ -64,7 +64,7 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
64
64
  /**
65
65
  * Auth controller
66
66
  */
67
- authController: AuthController<UserType>;
67
+ authController: AuthController<USER>;
68
68
  }
69
69
 
70
70
  /**
@@ -72,10 +72,10 @@ export interface PermissionsBuilderProps<EC extends EntityCollection = EntityCol
72
72
  * based on the logged user or collection.
73
73
  * @group Models
74
74
  */
75
- export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, UserType extends User = User, M extends object = InferCollectionType<EC>> =
75
+ export type PermissionsBuilder<EC extends EntityCollection = EntityCollection, USER extends User = User, M extends object = InferCollectionType<EC>> =
76
76
  (({
77
77
  pathSegments,
78
78
  user,
79
79
  collection,
80
80
  authController
81
- }: PermissionsBuilderProps<EC, UserType, M>) => Permissions | undefined);
81
+ }: PermissionsBuilderProps<EC, USER, M>) => Permissions | undefined);
@@ -1,20 +1,19 @@
1
1
  import React, { PropsWithChildren } from "react";
2
2
 
3
3
  import { FireCMSContext } from "./firecms_context";
4
- import { CollectionActionsProps, EntityCollection } from "./collections";
4
+ import { CollectionActionsProps, EntityCollection, EntityTableController } from "./collections";
5
5
  import { User } from "./user";
6
6
  import { FieldProps, FormContext } from "./fields";
7
7
  import { CMSType, Property } from "./properties";
8
8
  import { EntityStatus } from "./entities";
9
9
  import { ResolvedProperty } from "./resolved_entities";
10
- import { CMSView } from "./navigation";
11
10
 
12
11
  /**
13
12
  * Interface used to define plugins for FireCMS.
14
13
  * NOTE: This is a work in progress and the API is not stable yet.
15
14
  * @group Core
16
15
  */
17
- export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any> = {
16
+ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollection = EntityCollection, COL_ACTIONS_PROPS = any, COL_ACTIONS_START__PROPS = any> = {
18
17
 
19
18
  /**
20
19
  * Key of the plugin. This is used to identify the plugin in the CMS.
@@ -94,9 +93,18 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
94
93
  * toolbar.
95
94
  */
96
95
  CollectionActions?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_PROPS>[];
97
-
98
96
  collectionActionsProps?: COL_ACTIONS_PROPS;
99
97
 
98
+ CollectionActionsStart?: React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS> | React.ComponentType<CollectionActionsProps<any, any, EC> & COL_ACTIONS_START__PROPS>[];
99
+ collectionActionsStartProps?: COL_ACTIONS_START__PROPS;
100
+
101
+ blockSearch?: (props: {
102
+ context: FireCMSContext,
103
+ path: string,
104
+ collection: EC,
105
+ parentCollectionIds?: string[]
106
+ }) => boolean;
107
+
100
108
  showTextSearchBar?: (props: {
101
109
  context: FireCMSContext,
102
110
  path: string,
@@ -122,6 +130,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
122
130
  parentCollectionIds: string[],
123
131
  onHover: boolean,
124
132
  collection: EC;
133
+ tableController: EntityTableController;
125
134
  }>;
126
135
 
127
136
  /**
@@ -132,6 +141,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
132
141
  fullPath: string,
133
142
  parentCollectionIds: string[],
134
143
  collection: EC;
144
+ tableController: EntityTableController;
135
145
  }>;
136
146
  }
137
147
 
@@ -156,7 +166,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
156
166
  *
157
167
  * @group Models
158
168
  */
159
- export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
169
+ export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
160
170
  /**
161
171
  * Collection path of this entity. This is the full path, like
162
172
  * `users/1234/addresses`
@@ -171,19 +181,19 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
171
181
  /**
172
182
  * Context of the app status
173
183
  */
174
- context: FireCMSContext<UserType>;
184
+ context: FireCMSContext<USER>;
175
185
 
176
186
  extraProps?: EP;
177
187
 
178
188
  }
179
189
 
180
- export interface PluginFormActionProps<UserType extends User = User, EC extends EntityCollection = EntityCollection> {
190
+ export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
181
191
  entityId?: string;
182
192
  path: string;
183
193
  status: EntityStatus;
184
194
  collection: EC;
185
195
  formContext?: FormContext<any>;
186
- context: FireCMSContext<UserType>;
196
+ context: FireCMSContext<USER>;
187
197
  currentEntityId?: string;
188
198
  }
189
199
 
@@ -193,15 +203,15 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
193
203
  property: Property<T> | ResolvedProperty<T>;
194
204
  Field: React.ComponentType<FieldProps<T, any, M>>;
195
205
  plugin: FireCMSPlugin;
196
- path: string;
197
- collection: EC;
206
+ path?: string;
207
+ collection?: EC;
198
208
  };
199
209
 
200
- export interface PluginGenericProps<UserType extends User = User> {
201
- context: FireCMSContext<UserType>;
210
+ export interface PluginGenericProps<USER extends User = User> {
211
+ context: FireCMSContext<USER>;
202
212
  }
203
213
 
204
- export interface PluginHomePageAdditionalCardsProps<UserType extends User = User> {
214
+ export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
205
215
  group?: string;
206
- context: FireCMSContext<UserType>;
216
+ context: FireCMSContext<USER>;
207
217
  }
@@ -1,7 +1,7 @@
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";
@@ -15,9 +15,10 @@ export type DataType<T extends CMSType = CMSType> =
15
15
  T extends boolean ? "boolean" :
16
16
  T extends Date ? "date" :
17
17
  T extends GeoPoint ? "geopoint" :
18
- T extends EntityReference ? "reference" :
19
- T extends Array<CMSType> ? "array" :
20
- T extends Record<string, any> ? "map" : never;
18
+ T extends Vector ? "vector" :
19
+ T extends EntityReference ? "reference" :
20
+ T extends Array<any> ? "array" :
21
+ T extends Record<string, any> ? "map" : never;
21
22
 
22
23
  /**
23
24
  * @group Entity properties
@@ -48,7 +49,7 @@ export type AnyProperty =
48
49
  /**
49
50
  * @group Entity properties
50
51
  */
51
- export type Property<T extends CMSType = CMSType> =
52
+ export type Property<T extends CMSType = any> =
52
53
  T extends string ? StringProperty :
53
54
  T extends number ? NumberProperty :
54
55
  T extends boolean ? BooleanProperty :
@@ -148,7 +149,7 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
148
149
  /**
149
150
  * This value will be set by default for new entities.
150
151
  */
151
- defaultValue?: T;
152
+ defaultValue?: T | null;
152
153
 
153
154
  /**
154
155
  * Should this property be editable. If set to true, the user will be able to modify the property and
@@ -276,6 +277,7 @@ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, an
276
277
  values,
277
278
  previousValues,
278
279
  propertyValue,
280
+ index,
279
281
  path,
280
282
  entityId
281
283
  }: PropertyBuilderProps<M>) => Property<T> | null;
@@ -403,7 +405,7 @@ export interface StringProperty extends BaseProperty<string> {
403
405
  /**
404
406
  * @group Entity properties
405
407
  */
406
- export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> extends BaseProperty<T> {
408
+ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
407
409
 
408
410
  dataType: "array";
409
411
 
@@ -608,6 +610,16 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
608
610
  */
609
611
  previewProperties?: string[];
610
612
 
613
+ /**
614
+ * Should the reference include the ID of the entity. Defaults to `true`
615
+ */
616
+ includeId?: boolean;
617
+
618
+ /**
619
+ * Should the reference include a link to the entity (open the entity details). Defaults to `true`
620
+ */
621
+ includeEntityLink?: boolean;
622
+
611
623
  }
612
624
 
613
625
  /**
@@ -722,13 +734,13 @@ export type StorageConfig = {
722
734
  * You can use this prop to customize the uploaded filename.
723
735
  * You can use a function as a callback or a string where you
724
736
  * 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
737
+ * - `{file}` - Full file name
738
+ * - `{file.name}` - Name of the file without extension
739
+ * - `{file.ext}` - Extension of the file
740
+ * - `{rand}` - Random value used to avoid name collisions
741
+ * - `{entityId}` - ID of the entity
742
+ * - `{propertyKey}` - ID of this property
743
+ * - `{path}` - Path of this entity
732
744
  *
733
745
  * @param context
734
746
  */
@@ -739,13 +751,13 @@ export type StorageConfig = {
739
751
  *
740
752
  * You can use a function as a callback or a string where you
741
753
  * 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
754
+ * - `{file}` - Full file name
755
+ * - `{file.name}` - Name of the file without extension
756
+ * - `{file.ext}` - Extension of the file
757
+ * - `{rand}` - Random value used to avoid name collisions
758
+ * - `{entityId}` - ID of the entity
759
+ * - `{propertyKey}` - ID of this property
760
+ * - `{path}` - Path of this entity
749
761
  */
750
762
  storagePath: string | ((context: UploadedFileContext) => string);
751
763
 
@@ -772,6 +784,11 @@ export type StorageConfig = {
772
784
  */
773
785
  postProcess?: (pathOrUrl: string) => Promise<string>;
774
786
 
787
+ /**
788
+ * You can use this prop in order to provide a custom preview URL.
789
+ * Useful when the file's path is different from the original field value
790
+ */
791
+ previewUrl?: (fileName: string) => string;
775
792
  }
776
793
 
777
794
  /**
@@ -801,7 +818,7 @@ export interface UploadedFileContext {
801
818
  /**
802
819
  * Entity path. E.g. `products/PID/locales`
803
820
  */
804
- path: string;
821
+ path?: string;
805
822
 
806
823
  /**
807
824
  * Values of the current entity
@@ -23,8 +23,6 @@ export type PropertyConfig<T extends CMSType = any> = {
23
23
  * Default config for the property.
24
24
  * This property or builder will be used as the base values for the resulting property.
25
25
  * You can also use a builder function to generate the base property.
26
- * You can use a builder function to generate the property based on the values or the path.
27
- * You can also define a custom Field as a React component to be used for this property.
28
26
  */
29
27
  property: PropertyOrBuilder<T>;
30
28
 
@@ -1,3 +1,5 @@
1
+ import React from "react";
2
+
1
3
  /**
2
4
  * Controller to open the side dialog
3
5
  * @group Hooks and utilities
@@ -14,6 +16,12 @@ export interface SideDialogsController {
14
16
  */
15
17
  sidePanels: SideDialogPanelProps[];
16
18
 
19
+ /**
20
+ * Override the current side panels
21
+ * @param panels
22
+ */
23
+ setSidePanels: (panels: SideDialogPanelProps[]) => void;
24
+
17
25
  /**
18
26
  * Open one or multiple side panels
19
27
  * @param props
@@ -65,4 +73,9 @@ export interface SideDialogPanelProps {
65
73
  * Callback when the panel is closed
66
74
  */
67
75
  onClose?: () => void;
76
+
77
+ /**
78
+ * Use this prop to store additional data in the panel
79
+ */
80
+ additional?: any;
68
81
  }
@@ -6,6 +6,7 @@ export interface UploadFileProps {
6
6
  fileName?: string,
7
7
  path?: string,
8
8
  metadata?: any,
9
+ bucket?: string
9
10
  }
10
11
 
11
12
  /**
@@ -16,6 +17,10 @@ export interface UploadFileResult {
16
17
  * Storage path including the file name where the file was uploaded.
17
18
  */
18
19
  path: string;
20
+ /**
21
+ * Bucket where the file was uploaded
22
+ */
23
+ bucket: string;
19
24
  }
20
25
 
21
26
  /**
@@ -73,24 +78,110 @@ export interface StorageSource {
73
78
  * @param fileName
74
79
  * @param path
75
80
  * @param metadata
81
+ * @param bucket
76
82
  */
77
83
  uploadFile: ({
78
84
  file,
79
85
  fileName,
80
86
  path,
81
- metadata
87
+ metadata,
88
+ bucket
82
89
  }: UploadFileProps) => Promise<UploadFileResult>;
83
90
 
84
91
  /**
85
92
  * Convert a storage path or URL into a download configuration
86
93
  * @param path
94
+ * @param bucket
87
95
  */
88
- getDownloadURL: (pathOrUrl: string) => Promise<DownloadConfig>;
96
+ getDownloadURL: (pathOrUrl: string, bucket?: string) => Promise<DownloadConfig>;
89
97
 
90
98
  /**
91
99
  * Get a file from a storage path.
92
100
  * It returns null if the file does not exist.
93
101
  * @param props
102
+ * @param bucket
103
+ */
104
+ getFile: (path: string, bucket?: string) => Promise<File | null>;
105
+
106
+ /**
107
+ * Delete a file.
108
+ * @param path
109
+ * @param bucket
110
+ */
111
+ deleteFile: (path: string, bucket?: string) => Promise<void>;
112
+
113
+ /**
114
+ * List the contents of a path.
115
+ * @param path
116
+ * @param options
117
+ */
118
+ list: (path: string, options?: {
119
+ bucket?: string,
120
+ maxResults?: number,
121
+ pageToken?: string
122
+ }) => Promise<StorageListResult>;
123
+
124
+ }
125
+
126
+ /**
127
+ * Result returned by list().
128
+ * @public
129
+ */
130
+ export declare interface StorageListResult {
131
+ /**
132
+ * References to prefixes (sub-folders). You can call list() on them to
133
+ * get its contents.
134
+ *
135
+ * Folders are implicit based on '/' in the object paths.
136
+ * For example, if a bucket has two objects '/a/b/1' and '/a/b/2', list('/a')
137
+ * will return '/a/b' as a prefix.
138
+ */
139
+ prefixes: StorageReference[];
140
+ /**
141
+ * Objects in this directory.
142
+ * You can call getMetadata() and getDownloadUrl() on them.
143
+ */
144
+ items: StorageReference[];
145
+ /**
146
+ * If set, there might be more results for this list. Use this token to resume the list.
147
+ */
148
+ nextPageToken?: string;
149
+ }
150
+
151
+ /**
152
+ * Represents a reference to a Google Cloud Storage object. Developers can
153
+ * upload, download, and delete objects, as well as get/set object metadata.
154
+ * @public
155
+ */
156
+ export declare interface StorageReference {
157
+ /**
158
+ * Returns a gs:// URL for this object in the form
159
+ * `gs://<bucket>/<path>/<to>/<object>`
160
+ * @returns The gs:// URL.
161
+ */
162
+ toString(): string;
163
+
164
+ /**
165
+ * A reference to the root of this object's bucket.
166
+ */
167
+ root: StorageReference;
168
+ /**
169
+ * The name of the bucket containing this reference's object.
170
+ */
171
+ bucket: string;
172
+ /**
173
+ * The full path of this object.
174
+ */
175
+ fullPath: string;
176
+ /**
177
+ * The short name of this object, which is the last component of the full path.
178
+ * For example, if fullPath is 'full/path/image.png', name is 'image.png'.
179
+ */
180
+ name: string;
181
+
182
+ /**
183
+ * A reference pointing to the parent location of this reference, or null if
184
+ * this reference is the root.
94
185
  */
95
- getFile: (path:string) => Promise<File | null>;
186
+ parent: StorageReference | null;
96
187
  }
package/src/types/user.ts CHANGED
@@ -41,4 +41,6 @@ export type User = {
41
41
  */
42
42
  roles?: Role[];
43
43
 
44
+ getIdToken?: (forceRefresh?: boolean) => Promise<string>;
45
+
44
46
  };
@@ -27,9 +27,9 @@ import {
27
27
  * @group Builder
28
28
  */
29
29
  export function buildCollection<M extends Record<string, any> = any,
30
- UserType extends User = User>(
31
- collection: EntityCollection<M, UserType>
32
- ): EntityCollection<M, UserType> {
30
+ USER extends User = User>(
31
+ collection: EntityCollection<M, USER>
32
+ ): EntityCollection<M, USER> {
33
33
  return collection;
34
34
  }
35
35
 
@@ -120,9 +120,9 @@ export function buildEntityCallbacks<M extends Record<string, any> = any>(
120
120
  * @param additionalFieldDelegate
121
121
  * @group Builder
122
122
  */
123
- export function buildAdditionalFieldDelegate<M extends Record<string, any>, UserType extends User = User>(
124
- additionalFieldDelegate: AdditionalFieldDelegate<M, UserType>
125
- ): AdditionalFieldDelegate<M, UserType> {
123
+ export function buildAdditionalFieldDelegate<M extends Record<string, any>, USER extends User = User>(
124
+ additionalFieldDelegate: AdditionalFieldDelegate<M, USER>
125
+ ): AdditionalFieldDelegate<M, USER> {
126
126
  return additionalFieldDelegate;
127
127
  }
128
128
 
@@ -15,7 +15,7 @@ import {
15
15
  } from "../types";
16
16
  import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "./common";
17
17
 
18
- export function isReadOnly(property: Property | ResolvedProperty): boolean {
18
+ export function isReadOnly(property: Property<any> | ResolvedProperty<any>): boolean {
19
19
  if (property.readOnly)
20
20
  return true;
21
21
  if (property.dataType === "date") {
@@ -48,12 +48,12 @@ export function getDefaultValuesFor<M extends Record<string, any>>(properties: P
48
48
 
49
49
  export function getDefaultValueFor(property: PropertyOrBuilder) {
50
50
  if (isPropertyBuilder(property)) return undefined;
51
- if (property.dataType === "map" && property.properties) {
51
+ if (property.defaultValue || property.defaultValue === null) {
52
+ return property.defaultValue;
53
+ } else if (property.dataType === "map" && property.properties) {
52
54
  const defaultValuesFor = getDefaultValuesFor(property.properties as Properties);
53
55
  if (Object.keys(defaultValuesFor).length === 0) return undefined;
54
56
  return defaultValuesFor;
55
- } else if (property.defaultValue) {
56
- return property.defaultValue;
57
57
  } else {
58
58
  return getDefaultValueForDataType(property.dataType);
59
59
  }
@@ -139,7 +139,7 @@ export function sanitizeData<M extends Record<string, any>>
139
139
  return result;
140
140
  }
141
141
 
142
- export function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference<M> {
142
+ export function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference {
143
143
  return new EntityReference(entity.id, entity.path);
144
144
  }
145
145
 
@@ -152,6 +152,7 @@ export function traverseValuesProperties<M extends Record<string, any>>(
152
152
  .map(([key, property]) => {
153
153
  const inputValue = inputValues && (inputValues)[key];
154
154
  const updatedValue = traverseValueProperty(inputValue, property as Property, operation);
155
+ if (updatedValue === null) return null;
155
156
  if (updatedValue === undefined) return undefined;
156
157
  return ({ [key]: updatedValue });
157
158
  })
package/src/util/enums.ts CHANGED
@@ -22,7 +22,7 @@ export function enumToObjectEntries(enumValues: EnumValues): EnumValueConfig[] {
22
22
  }
23
23
 
24
24
  export function getLabelOrConfigFrom(enumValues: EnumValueConfig[], key?: string | number): EnumValueConfig | undefined {
25
- if (!key) return undefined;
25
+ if (key === null || key === undefined) return undefined;
26
26
  return enumValues.find((entry) => String(entry.id) === String(key));
27
27
  }
28
28
 
@@ -1,17 +1,23 @@
1
- import { icon_synonyms } from "./icon_synonyms";
1
+ import { iconSynonyms } from "./icon_synonyms";
2
2
  import { iconKeys } from "@firecms/ui";
3
+ import Fuse from "fuse.js";
3
4
 
4
- // @ts-ignore
5
- import * as JsSearch from "js-search";
6
5
 
7
- export const iconsSearch = new JsSearch.Search("key");
8
- iconsSearch.addIndex("synonyms");
9
-
10
- iconsSearch.addDocuments(iconKeys
6
+ const map = iconKeys
11
7
  .map((importName) => {
8
+ // @ts-ignore
9
+ const iconSynonym = importName in iconSynonyms ? iconSynonyms[importName] : "";
12
10
  return {
13
11
  key: importName,
14
- // @ts-ignore
15
- synonyms: icon_synonyms[importName] ?? [],
12
+ synonyms: iconSynonym,
16
13
  }
17
- }));
14
+ });
15
+ export const iconsSearch = new Fuse(map, {
16
+ isCaseSensitive: false,
17
+ shouldSort: true,
18
+ ignoreLocation: true,
19
+ distance: 0,
20
+ keys: ["key", "synonyms"]
21
+ })
22
+
23
+