@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,12 +1,12 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
3
  import { EnumType, FieldProps } from "../../types";
4
- import { FieldHelperText } from "../components";
5
- import { LabelWithIcon } from "../../components";
6
- import { useClearRestoreValue } from "../../hooks";
4
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
5
  import { EnumValuesChip } from "../../preview";
8
- import { getIconForProperty } from "../../util";
9
- import { ClearIcon, cn, IconButton, Select, SelectItem } from "@firecms/ui";
6
+ import { getIconForProperty, resolveEnumValues } from "../../util";
7
+ import { ClearIcon, cls, IconButton, Select, SelectItem } from "@firecms/ui";
8
+ import { useClearRestoreValue } from "../useClearRestoreValue";
9
+ import { PropertyIdCopyTooltip } from "../../components";
10
10
 
11
11
  type SelectProps<T extends EnumType> = FieldProps<T>;
12
12
 
@@ -28,10 +28,11 @@ export function SelectFieldBinding<T extends EnumType>({
28
28
  autoFocus,
29
29
  touched,
30
30
  property,
31
- includeDescription
31
+ includeDescription,
32
+ size = "medium"
32
33
  }: SelectProps<T>) {
33
34
 
34
- const enumValues = property.enumValues;
35
+ const enumValues = resolveEnumValues(property.enumValues ?? []);
35
36
 
36
37
  useClearRestoreValue({
37
38
  property,
@@ -49,15 +50,20 @@ export function SelectFieldBinding<T extends EnumType>({
49
50
  <>
50
51
 
51
52
  <Select
52
- value={value ? value.toString() : ""}
53
+ size={size === "medium" ? "medium" : "small"}
54
+ value={value !== undefined && value != null ? value.toString() : ""}
53
55
  disabled={disabled}
54
56
  position="item-aligned"
55
- inputClassName={cn("w-full")}
56
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
57
- required={property.validation?.required}
58
- title={property.name}
59
- className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
60
- />}
57
+ inputClassName={cls("w-full")}
58
+ label={
59
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
60
+ <LabelWithIcon
61
+ icon={getIconForProperty(property, "small")}
62
+ required={property.validation?.required}
63
+ title={property.name}
64
+ className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
65
+ />
66
+ </PropertyIdCopyTooltip>}
61
67
  endAdornment={
62
68
  property.clearable && <IconButton
63
69
  onClick={handleClearClick}>
@@ -74,7 +80,7 @@ export function SelectFieldBinding<T extends EnumType>({
74
80
  return <EnumValuesChip
75
81
  enumKey={enumKey}
76
82
  enumValues={enumValues}
77
- size={"medium"}/>;
83
+ size={size}/>;
78
84
  }}
79
85
  >
80
86
  {enumValues && enumValues.map((option) => {
@@ -84,7 +90,7 @@ export function SelectFieldBinding<T extends EnumType>({
84
90
  <EnumValuesChip
85
91
  enumKey={String(option.id)}
86
92
  enumValues={enumValues}
87
- size={"medium"}/>
93
+ size={size}/>
88
94
  </SelectItem>
89
95
  })}
90
96
  </Select>
@@ -2,35 +2,34 @@ import React, { useCallback } from "react";
2
2
 
3
3
  import {
4
4
  ArrayProperty,
5
- Entity,
6
5
  FieldProps,
6
+ PropertyOrBuilder,
7
7
  ResolvedArrayProperty,
8
8
  ResolvedStringProperty,
9
9
  StorageConfig
10
10
  } from "../../types";
11
11
  import { useDropzone } from "react-dropzone";
12
12
  import { PreviewSize } from "../../preview";
13
- import { FieldHelperText } from "../components";
14
- import { LabelWithIcon } from "../../components";
13
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
15
14
 
16
- import { getIconForProperty, isReadOnly } from "../../util";
17
- import { useClearRestoreValue, useSnackbarController, useStorageSource } from "../../hooks";
15
+ import { getIconForProperty, isReadOnly, resolveProperty } from "../../util";
16
+ import { useSnackbarController, useStorageSource } from "../../hooks";
18
17
  import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
19
18
  import { StorageFieldItem, useStorageUploadController } from "../../util/useStorageUploadController";
20
19
  import { StorageUploadProgress } from "../components/StorageUploadProgress";
21
20
  import { StorageItemPreview } from "../components/StorageItemPreview";
22
21
  import {
23
- cn,
22
+ cls,
24
23
  fieldBackgroundDisabledMixin,
25
24
  fieldBackgroundHoverMixin,
26
25
  fieldBackgroundMixin,
27
- focusedMixin,
28
26
  Typography
29
27
  } from "@firecms/ui";
28
+ import { useClearRestoreValue } from "../useClearRestoreValue";
30
29
 
31
30
  const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
32
31
  const disabledClasses = "border-dotted-gray"
33
- const nonActiveDropClasses = "hover:bg-field-hover dark:hover:bg-field-hover-dark"
32
+ const nonActiveDropClasses = fieldBackgroundHoverMixin
34
33
  const activeDropClasses = "pt-0 border-2 border-solid"
35
34
  const acceptDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-green-500"
36
35
  const rejectDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-red-500"
@@ -51,17 +50,17 @@ export function StorageUploadFieldBinding({
51
50
  error,
52
51
  showError,
53
52
  autoFocus,
54
- tableMode,
53
+ minimalistView,
55
54
  property,
56
55
  includeDescription,
57
56
  context,
58
- isSubmitting
57
+ isSubmitting,
59
58
  }: StorageUploadFieldProps) {
60
59
 
61
60
  if (!context.entityId)
62
61
  throw new Error("StorageUploadFieldBinding: Entity id is null");
63
62
 
64
- const storageSource = useStorageSource();
63
+ const storageSource = useStorageSource(context.collection);
65
64
  const disabled = isReadOnly(property) || !!property.disabled || isSubmitting;
66
65
 
67
66
  const {
@@ -80,7 +79,7 @@ export function StorageUploadFieldBinding({
80
79
  propertyKey,
81
80
  value,
82
81
  storageSource,
83
- disabled,
82
+ disabled: disabled ?? false,
84
83
  onChange: setValue
85
84
  });
86
85
 
@@ -90,32 +89,31 @@ export function StorageUploadFieldBinding({
90
89
  setValue
91
90
  });
92
91
 
93
- const entity: Entity<any> = {
94
- id: context.entityId,
95
- values: context.values,
96
- path: context.path
97
- };
92
+ const resolvedProperty = resolveProperty({
93
+ propertyOrBuilder: property as PropertyOrBuilder,
94
+ }) as ResolvedStringProperty | ResolvedArrayProperty<string[]>;
98
95
 
99
96
  return (
100
97
 
101
98
  <>
102
99
 
103
- {!tableMode &&
104
- <LabelWithIcon icon={getIconForProperty(property, "small")}
105
- required={property.validation?.required}
106
- title={property.name}
107
- className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
100
+ {!minimalistView &&
101
+ <LabelWithIconAndTooltip
102
+ propertyKey={propertyKey}
103
+ icon={getIconForProperty(property, "small")}
104
+ required={property.validation?.required}
105
+ title={property.name}
106
+ className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
108
107
 
109
108
  <StorageUpload
110
109
  value={internalValue}
111
110
  name={propertyKey}
112
- disabled={disabled}
113
- autoFocus={autoFocus}
114
- property={property}
111
+ disabled={disabled ?? false}
112
+ autoFocus={autoFocus ?? false}
113
+ property={resolvedProperty}
115
114
  onChange={setValue}
116
115
  setInternalValue={setInternalValue}
117
116
  onFilesAdded={onFilesAdded}
118
- entity={entity}
119
117
  onFileUploadComplete={onFileUploadComplete}
120
118
  storagePathBuilder={storagePathBuilder}
121
119
  storage={storage}
@@ -141,7 +139,6 @@ function FileDropComponent({
141
139
  autoFocus,
142
140
  internalValue,
143
141
  property,
144
- entity,
145
142
  onClear,
146
143
  metadata,
147
144
  storagePathBuilder,
@@ -161,7 +158,6 @@ function FileDropComponent({
161
158
  property: ResolvedStringProperty,
162
159
  onClear: (clearedStoragePathOrDownloadUrl: string) => void,
163
160
  metadata: any,
164
- entity: Entity<any>;
165
161
  storagePathBuilder: (file: File) => string,
166
162
  onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: any) => Promise<void>,
167
163
  size: PreviewSize,
@@ -186,10 +182,18 @@ function FileDropComponent({
186
182
  onDropRejected: (fileRejections, event) => {
187
183
  for (const fileRejection of fileRejections) {
188
184
  for (const error of fileRejection.errors) {
189
- snackbarContext.open({
190
- type: "error",
191
- message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
192
- });
185
+ console.error("Error uploading file: ", error);
186
+ if (error.code === "file-too-large") {
187
+ snackbarContext.open({
188
+ type: "error",
189
+ message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
190
+ });
191
+ } else if (error.code === "file-invalid-type") {
192
+ snackbarContext.open({
193
+ type: "error",
194
+ message: "Error uploading file: File type is not supported"
195
+ });
196
+ }
193
197
  }
194
198
  }
195
199
  }
@@ -199,12 +203,11 @@ function FileDropComponent({
199
203
  return (
200
204
  <div
201
205
  {...getRootProps()}
202
- className={cn(
206
+ className={cls(
203
207
  fieldBackgroundMixin,
204
208
  disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
205
209
  dropZoneClasses,
206
210
  multipleFilesSupported && internalValue.length ? "" : "flex",
207
- focusedMixin,
208
211
  {
209
212
  [nonActiveDropClasses]: !isDragActive,
210
213
  [activeDropClasses]: isDragActive,
@@ -216,7 +219,7 @@ function FileDropComponent({
216
219
  <div
217
220
  {...droppableProvided.droppableProps}
218
221
  ref={droppableProvided.innerRef}
219
- className={cn("flex items-center p-1 no-scrollbar",
222
+ className={cls("flex items-center p-1 no-scrollbar",
220
223
  multipleFilesSupported && internalValue.length ? "overflow-auto" : "",
221
224
  multipleFilesSupported && internalValue.length ? "min-h-[180px]" : "min-h-[250px]"
222
225
  )}
@@ -234,7 +237,6 @@ function FileDropComponent({
234
237
  name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
235
238
  property={property}
236
239
  disabled={disabled}
237
- entity={entity}
238
240
  value={entry.storagePathOrDownloadUrl}
239
241
  onRemove={onClear}
240
242
  size={entry.size}/>
@@ -263,7 +265,7 @@ function FileDropComponent({
263
265
  ref={provided.innerRef}
264
266
  {...provided.draggableProps}
265
267
  {...provided.dragHandleProps}
266
- className={cn(focusedMixin, "rounded-md")}
268
+ className={cls("rounded-md")}
267
269
  style={{
268
270
  ...provided.draggableProps.style
269
271
  }}
@@ -301,7 +303,6 @@ export interface StorageUploadProps {
301
303
  multipleFilesSupported: boolean;
302
304
  autoFocus: boolean;
303
305
  disabled: boolean;
304
- entity: Entity<any>;
305
306
  storage: StorageConfig;
306
307
  onFilesAdded: (acceptedFiles: File[]) => void;
307
308
  storagePathBuilder: (file: File) => string;
@@ -320,8 +321,7 @@ export function StorageUpload({
320
321
  onFilesAdded,
321
322
  autoFocus,
322
323
  storage,
323
- entity,
324
- storagePathBuilder
324
+ storagePathBuilder,
325
325
  }: StorageUploadProps) {
326
326
 
327
327
  if (multipleFilesSupported) {
@@ -402,9 +402,9 @@ export function StorageUpload({
402
402
  >
403
403
  <StorageItemPreview
404
404
  name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
405
+ placeholder={true}
405
406
  property={renderProperty}
406
407
  disabled={true}
407
- entity={entity}
408
408
  value={entry.storagePathOrDownloadUrl as string}
409
409
  onRemove={onClear}
410
410
  size={entry.size}/>
@@ -422,7 +422,6 @@ export function StorageUpload({
422
422
  autoFocus={autoFocus}
423
423
  internalValue={value}
424
424
  property={renderProperty}
425
- entity={entity}
426
425
  onClear={onClear}
427
426
  metadata={metadata}
428
427
  storagePathBuilder={storagePathBuilder}
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
2
 
3
3
  import { FieldProps } from "../../types";
4
- import { useClearRestoreValue } from "../../hooks";
5
4
  import { getIconForProperty } from "../../util";
6
- import { FieldHelperText } from "../components/FieldHelperText";
5
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
6
  import { BooleanSwitchWithLabel } from "@firecms/ui";
8
- import { LabelWithIcon } from "../../components";
7
+ import { useClearRestoreValue } from "../useClearRestoreValue";
8
+ import { PropertyIdCopyTooltip } from "../../components";
9
9
 
10
10
  type SwitchFieldProps = FieldProps<boolean>;
11
11
 
@@ -24,7 +24,7 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
24
24
  showError,
25
25
  autoFocus,
26
26
  disabled,
27
- touched,
27
+ size = "medium",
28
28
  property,
29
29
  includeDescription
30
30
  }: SwitchFieldProps, ref) {
@@ -38,17 +38,20 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
38
38
  return (
39
39
  <>
40
40
 
41
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
41
42
  <BooleanSwitchWithLabel
42
43
  value={value}
43
44
  onValueChange={(v) => setValue(v)}
44
45
  error={showError}
45
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
46
- required={property.validation?.required}
47
- title={property.name}/>}
46
+ label={<LabelWithIcon
47
+ icon={getIconForProperty(property, "small")}
48
+ required={property.validation?.required}
49
+ title={property.name}/>}
48
50
  disabled={disabled}
49
51
  autoFocus={autoFocus}
50
- size={"medium"}
52
+ size={size}
51
53
  />
54
+ </PropertyIdCopyTooltip>
52
55
 
53
56
  <FieldHelperText includeDescription={includeDescription}
54
57
  showError={showError}
@@ -1,14 +1,14 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
+ import { ClearIcon, Collapse, IconButton, TextField } from "@firecms/ui";
3
4
  import { FieldProps, PreviewType } from "../../types";
4
- import { FieldHelperText } from "../components";
5
- import { useClearRestoreValue } from "../../hooks";
5
+ import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import { getIconForProperty } from "../../util";
7
- import { ClearIcon, Collapse, IconButton, TextField } from "@firecms/ui";
8
7
  import { PropertyPreview } from "../../preview";
9
- import { LabelWithIcon } from "../../components";
8
+ import { useClearRestoreValue } from "../useClearRestoreValue";
9
+ import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
10
10
 
11
- interface TextFieldProps<T extends string | number> extends FieldProps<T> {
11
+ interface TextFieldBindingProps<T extends string | number> extends FieldProps<T> {
12
12
  allowInfinity?: boolean
13
13
  }
14
14
 
@@ -28,7 +28,8 @@ export function TextFieldBinding<T extends string | number>({
28
28
  autoFocus,
29
29
  property,
30
30
  includeDescription,
31
- }: TextFieldProps<T>) {
31
+ size = "medium"
32
+ }: TextFieldBindingProps<T>) {
32
33
 
33
34
  let multiline: boolean | undefined;
34
35
  let url: boolean | PreviewType | undefined;
@@ -67,27 +68,29 @@ export function TextFieldBinding<T extends string | number>({
67
68
  const isMultiline = Boolean(multiline);
68
69
 
69
70
  const inputType = property.dataType === "number" ? "number" : undefined;
70
- return (
71
- <>
72
- <TextField
73
- value={value}
74
- onChange={onChange}
75
- autoFocus={autoFocus}
76
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
77
- required={property.validation?.required}
78
- title={property.name}/>}
79
- type={inputType}
80
- multiline={isMultiline}
81
- disabled={disabled}
82
- endAdornment={
83
- property.clearable && <IconButton
84
- onClick={handleClearClick}>
85
- <ClearIcon/>
86
- </IconButton>
87
- }
88
- error={showError ? error : undefined}
89
- inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
90
-
71
+ return (<>
72
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
73
+ <TextField
74
+ size={size}
75
+ value={value}
76
+ onChange={onChange}
77
+ autoFocus={autoFocus}
78
+ label={<LabelWithIcon
79
+ icon={getIconForProperty(property, "small")}
80
+ required={property.validation?.required}
81
+ title={property.name}/>}
82
+ type={inputType}
83
+ multiline={isMultiline}
84
+ disabled={disabled}
85
+ endAdornment={
86
+ property.clearable && <IconButton
87
+ onClick={handleClearClick}>
88
+ <ClearIcon/>
89
+ </IconButton>
90
+ }
91
+ error={showError ? error : undefined}
92
+ inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
93
+ </PropertyIdCopyTooltip>
91
94
  <FieldHelperText includeDescription={includeDescription}
92
95
  showError={showError}
93
96
  error={error}
@@ -97,9 +100,10 @@ export function TextFieldBinding<T extends string | number>({
97
100
  {url && <Collapse
98
101
  className="mt-1 ml-1"
99
102
  in={Boolean(value)}>
100
- <PropertyPreview value={value}
101
- property={property}
102
- size={"medium"}/>
103
+ <PropertyPreview
104
+ value={value}
105
+ property={property}
106
+ size={size}/>
103
107
  </Collapse>}
104
108
 
105
109
  </>
@@ -1,5 +1,5 @@
1
1
  import { SelectFieldBinding } from "./field_bindings/SelectFieldBinding";
2
- import { MultiSelectBinding } from "./field_bindings/MultiSelectBinding";
2
+ import { MultiSelectFieldBinding } from "./field_bindings/MultiSelectFieldBinding";
3
3
  import { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";
4
4
  import { StorageUploadFieldBinding } from "./field_bindings/StorageUploadFieldBinding";
5
5
  import { TextFieldBinding } from "./field_bindings/TextFieldBinding";
@@ -11,13 +11,13 @@ import { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
11
11
  import { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
12
12
  import { BlockFieldBinding } from "./field_bindings/BlockFieldBinding";
13
13
  import { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
14
- import { MarkdownFieldBinding } from "./field_bindings/MarkdownFieldBinding";
14
+ import { MarkdownEditorFieldBinding } from "./field_bindings/MarkdownEditorFieldBinding";
15
15
  import { ArrayCustomShapedFieldBinding } from "./field_bindings/ArrayCustomShapedFieldBinding";
16
16
 
17
17
  export {
18
18
  ArrayCustomShapedFieldBinding,
19
19
  RepeatFieldBinding,
20
- MultiSelectBinding,
20
+ MultiSelectFieldBinding,
21
21
  ArrayOfReferencesFieldBinding,
22
22
  BlockFieldBinding,
23
23
  DateTimeFieldBinding,
@@ -28,15 +28,11 @@ export {
28
28
  SelectFieldBinding,
29
29
  StorageUploadFieldBinding,
30
30
  SwitchFieldBinding,
31
- MarkdownFieldBinding,
31
+ MarkdownEditorFieldBinding,
32
32
  TextFieldBinding
33
33
  };
34
34
 
35
35
  export * from "./components";
36
36
 
37
- export type { EntityFormProps } from "./EntityForm";
38
- export {
39
- EntityForm
40
- } from "./EntityForm";
41
-
42
37
  export { PropertyFieldBinding } from "./PropertyFieldBinding";
38
+ export * from "./useClearRestoreValue";
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { CMSType, ResolvedProperty } from "../types";
2
+ import { CMSType, Property, ResolvedProperty } from "../types";
3
3
 
4
4
  /**
5
5
  * Hook we use to restore a value after it has been cleared
@@ -14,7 +14,7 @@ export function useClearRestoreValue<T extends CMSType>({
14
14
  setValue
15
15
  }:
16
16
  {
17
- property: ResolvedProperty<T>,
17
+ property: Property<T> | ResolvedProperty<T>,
18
18
  value: T,
19
19
  setValue: (value: T | null, shouldValidate?: boolean) => void
20
20
  }) {
@@ -9,8 +9,7 @@ import {
9
9
  } from "../types";
10
10
  import * as yup from "yup";
11
11
  import { AnySchema, ArraySchema, BooleanSchema, DateSchema, NumberSchema, ObjectSchema, StringSchema } from "yup";
12
- import { enumToObjectEntries } from "../util/enums";
13
- import { getValueInPath, hydrateRegExp, isPropertyBuilder } from "../util";
12
+ import { enumToObjectEntries, getValueInPath, hydrateRegExp, isPropertyBuilder } from "../util";
14
13
 
15
14
  // Add custom unique function for array values
16
15
  declare module "yup" {
@@ -90,12 +89,12 @@ export function mapPropertyToYup<T extends CMSType>(propertyContext: PropertyCon
90
89
  throw Error("Unsupported data type in yup mapping");
91
90
  }
92
91
 
93
- export function getYupMapObjectSchema<M extends Record<string, any>>({
92
+ export function getYupMapObjectSchema({
94
93
  property,
95
94
  entityId,
96
95
  customFieldValidator,
97
96
  name
98
- }: PropertyContext<M>): ObjectSchema<any> {
97
+ }: PropertyContext<Record<string, any>>): ObjectSchema<any> {
99
98
  const objectSchema: any = {};
100
99
  const validation = property.validation;
101
100
  if (property.properties)
@@ -113,23 +112,7 @@ export function getYupMapObjectSchema<M extends Record<string, any>>({
113
112
  if (validation?.required) {
114
113
  return shape.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true);
115
114
  }
116
- return shape.nullable(true);
117
- // const object: ObjectSchema<any> = yup.object().shape(objectSchema);
118
- // return validation?.required
119
- // ? object.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true)
120
- // : yup.object().optional().default(undefined).notRequired().nullable(true).test(
121
- // "empty-check",
122
- // "Optional map can be empty",
123
- // (o: any, testContext: any) => {
124
- // try {
125
- // if (!o || Object.keys(o).length === 0) return true;
126
- // return object.validateSync(o);
127
- // } catch (e) {
128
- // testContext.createError(e);
129
- // console.error(e);
130
- // return false;
131
- // }
132
- // });
115
+ return yup.object().shape(shape.fields).default(undefined).notRequired().nullable(true);
133
116
  }
134
117
 
135
118
  function getYupStringSchema({
@@ -12,10 +12,10 @@ import {
12
12
  /**
13
13
  * @group Hooks and utilities
14
14
  */
15
- export type DeleteEntityWithCallbacksProps<M extends Record<string, any>> =
15
+ export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, UserType extends User = User> =
16
16
  DeleteEntityProps<M>
17
17
  & {
18
- callbacks?: EntityCallbacks<M>;
18
+ callbacks?: EntityCallbacks<M, UserType>;
19
19
  onDeleteSuccess?: (entity: Entity<M>) => void;
20
20
  onDeleteFailure?: (entity: Entity<M>, e: Error) => void;
21
21
  onPreDeleteHookError?: (entity: Entity<M>, e: Error) => void;
@@ -62,7 +62,7 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
62
62
 
63
63
  console.debug("Deleting entity", entity.path, entity.id);
64
64
 
65
- const entityDeleteProps: EntityOnDeleteProps<M, UserType> = {
65
+ const entityDeleteProps: EntityOnDeleteProps<M, any> = {
66
66
  entity,
67
67
  collection,
68
68
  entityId: entity.id,
@@ -81,7 +81,8 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
81
81
  }
82
82
  }
83
83
  return dataSource.deleteEntity({
84
- entity
84
+ entity,
85
+ collection
85
86
  }).then(() => {
86
87
  onDeleteSuccess && onDeleteSuccess(entity);
87
88
  try {
@@ -17,7 +17,6 @@ import { resolveCollection } from "../../util";
17
17
  export type SaveEntityWithCallbacksProps<M extends Record<string, any>> =
18
18
  SaveEntityProps<M> &
19
19
  {
20
- callbacks?: EntityCallbacks<M>;
21
20
  onSaveSuccess?: (updatedEntity: Entity<M>) => void,
22
21
  onSaveFailure?: (e: Error) => void,
23
22
  onPreSaveHookError?: (e: Error) => void,
@@ -64,7 +63,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
64
63
  onPreSaveHookError,
65
64
  onSaveSuccessHookError
66
65
  }: SaveEntityWithCallbacksProps<M> & {
67
- collection: EntityCollection<M>,
66
+ collection: EntityCollection<M, UserType>,
68
67
  dataSource: DataSource,
69
68
  context: FireCMSContext<UserType>,
70
69
  }
@@ -109,6 +108,11 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
109
108
  updatedValues = values;
110
109
  }
111
110
 
111
+ console.log("Saving entity", {
112
+ entityId,
113
+ updatedValues,
114
+ collection
115
+ });
112
116
  return dataSource.saveEntity({
113
117
  collection,
114
118
  path: resolvedPath,
@@ -145,6 +149,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
145
149
  onSaveSuccess(entity);
146
150
  })
147
151
  .catch((e) => {
152
+ console.error("!!!", e);
148
153
  if (callbacks?.onSaveFailure) {
149
154
 
150
155
  const resolvedCollection = resolveCollection<M>({
@@ -70,7 +70,7 @@ export function useCollectionFetch<M extends Record<string, any>, UserType exten
70
70
  searchString
71
71
  }: CollectionFetchProps<M>): CollectionFetchResult<M> {
72
72
 
73
- const dataSource = useDataSource();
73
+ const dataSource = useDataSource(collection);
74
74
  const navigationController = useNavigationController();
75
75
 
76
76
  const path = navigationController.resolveAliasesFrom(inputPath);