@firecms/core 3.0.0-canary.21 → 3.0.0-canary.211

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 (382) 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 +34 -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 +23 -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 +13 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  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/index.d.ts +1 -1
  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 +7 -4
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +16 -2
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  24. package/dist/components/EntityJsonPreview.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +5 -4
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  28. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  29. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  30. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  31. package/dist/components/ReferenceWidget.d.ts +3 -1
  32. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  33. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  34. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  35. package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
  36. package/dist/components/VirtualTable/types.d.ts +3 -3
  37. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  38. package/dist/components/common/index.d.ts +2 -1
  39. package/dist/components/common/table_height.d.ts +5 -0
  40. package/dist/components/common/types.d.ts +4 -6
  41. package/dist/components/common/useColumnsIds.d.ts +3 -1
  42. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  43. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  44. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  45. package/dist/components/index.d.ts +4 -2
  46. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  47. package/dist/core/DefaultAppBar.d.ts +29 -0
  48. package/dist/core/DefaultDrawer.d.ts +19 -0
  49. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  50. package/dist/core/EntityEditView.d.ts +35 -11
  51. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  52. package/dist/core/FireCMS.d.ts +3 -3
  53. package/dist/core/FireCMSRouter.d.ts +4 -0
  54. package/dist/core/NavigationRoutes.d.ts +2 -3
  55. package/dist/core/SideDialogs.d.ts +4 -2
  56. package/dist/core/index.d.ts +4 -4
  57. package/dist/form/EntityForm.d.ts +37 -69
  58. package/dist/form/EntityFormActions.d.ts +17 -0
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/ErrorFocus.d.ts +1 -1
  61. package/dist/form/components/FieldHelperText.d.ts +3 -3
  62. package/dist/form/components/FormEntry.d.ts +6 -0
  63. package/dist/form/components/FormLayout.d.ts +5 -0
  64. package/dist/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 -4
  67. package/dist/form/components/index.d.ts +3 -1
  68. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  74. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  75. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  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 -5
  80. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  81. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  82. package/dist/form/index.d.ts +16 -18
  83. package/dist/form/useClearRestoreValue.d.ts +2 -2
  84. package/dist/hooks/data/delete.d.ts +4 -4
  85. package/dist/hooks/data/save.d.ts +4 -5
  86. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  87. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  88. package/dist/hooks/index.d.ts +1 -0
  89. package/dist/hooks/useAuthController.d.ts +1 -1
  90. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  91. package/dist/hooks/useBuildNavigationController.d.ts +7 -5
  92. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  93. package/dist/hooks/useModeController.d.ts +1 -2
  94. package/dist/hooks/useProjectLog.d.ts +8 -2
  95. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  96. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.es.js +21921 -14330
  99. package/dist/index.es.js.map +1 -1
  100. package/dist/index.umd.js +24271 -588
  101. package/dist/index.umd.js.map +1 -1
  102. package/dist/internal/useBuildDataSource.d.ts +1 -16
  103. package/dist/internal/useBuildSideEntityController.d.ts +2 -2
  104. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  105. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  106. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  107. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  108. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  109. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  110. package/dist/preview/util.d.ts +3 -3
  111. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  112. package/dist/routes/FireCMSRoute.d.ts +1 -0
  113. package/dist/routes/HomePageRoute.d.ts +3 -0
  114. package/dist/types/auth.d.ts +8 -10
  115. package/dist/types/collections.d.ts +77 -22
  116. package/dist/types/datasource.d.ts +52 -36
  117. package/dist/types/dialogs_controller.d.ts +7 -3
  118. package/dist/types/entities.d.ts +7 -2
  119. package/dist/types/entity_actions.d.ts +28 -4
  120. package/dist/types/entity_callbacks.d.ts +16 -16
  121. package/dist/types/entity_overrides.d.ts +2 -2
  122. package/dist/types/export_import.d.ts +4 -4
  123. package/dist/types/fields.d.ts +71 -42
  124. package/dist/types/firecms.d.ts +6 -2
  125. package/dist/types/firecms_context.d.ts +1 -1
  126. package/dist/types/index.d.ts +0 -1
  127. package/dist/types/navigation.d.ts +32 -14
  128. package/dist/types/permissions.d.ts +4 -4
  129. package/dist/types/plugins.d.ts +23 -12
  130. package/dist/types/properties.d.ts +52 -24
  131. package/dist/types/property_config.d.ts +0 -2
  132. package/dist/types/side_dialogs_controller.d.ts +10 -0
  133. package/dist/types/side_entity_controller.d.ts +6 -1
  134. package/dist/types/storage.d.ts +86 -3
  135. package/dist/types/user.d.ts +1 -0
  136. package/dist/util/builders.d.ts +3 -3
  137. package/dist/util/entities.d.ts +3 -3
  138. package/dist/util/entity_actions.d.ts +2 -0
  139. package/dist/util/entity_cache.d.ts +23 -0
  140. package/dist/util/icon_list.d.ts +5 -1
  141. package/dist/util/icon_synonyms.d.ts +1 -98
  142. package/dist/util/icons.d.ts +6 -3
  143. package/dist/util/index.d.ts +2 -0
  144. package/dist/util/navigation_from_path.d.ts +6 -1
  145. package/dist/util/navigation_utils.d.ts +14 -3
  146. package/dist/util/objects.d.ts +2 -1
  147. package/dist/util/permissions.d.ts +4 -4
  148. package/dist/util/plurals.d.ts +0 -2
  149. package/dist/util/property_utils.d.ts +3 -3
  150. package/dist/util/resolutions.d.ts +36 -17
  151. package/dist/util/storage.d.ts +23 -2
  152. package/dist/util/useStorageUploadController.d.ts +3 -3
  153. package/package.json +62 -48
  154. package/src/app/AppBar.tsx +18 -0
  155. package/src/app/Drawer.tsx +24 -0
  156. package/src/app/Scaffold.tsx +253 -0
  157. package/src/app/index.ts +4 -0
  158. package/src/app/useApp.tsx +32 -0
  159. package/src/components/ArrayContainer.tsx +127 -41
  160. package/src/components/CircularProgressCenter.tsx +2 -2
  161. package/src/components/ClearFilterSortButton.tsx +41 -0
  162. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  163. package/src/components/DeleteEntityDialog.tsx +10 -19
  164. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
  165. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  166. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  167. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  168. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  169. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  170. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  171. package/src/components/EntityCollectionTable/index.tsx +1 -1
  172. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
  173. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  174. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  175. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
  176. package/src/components/EntityCollectionView/EntityCollectionView.tsx +207 -113
  177. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
  178. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  179. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  180. package/src/components/EntityCollectionView/utils.ts +19 -0
  181. package/src/components/EntityJsonPreview.tsx +66 -0
  182. package/src/components/EntityPreview.tsx +62 -52
  183. package/src/components/EntityView.tsx +10 -10
  184. package/src/components/ErrorView.tsx +4 -4
  185. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  186. package/src/components/HomePage/FavouritesView.tsx +6 -11
  187. package/src/components/HomePage/NavigationCard.tsx +3 -3
  188. package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
  189. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  190. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  191. package/src/components/NotFoundPage.tsx +2 -2
  192. package/src/components/PropertyConfigBadge.tsx +9 -3
  193. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  194. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
  195. package/src/components/ReferenceWidget.tsx +21 -11
  196. package/src/components/SearchIconsView.tsx +10 -7
  197. package/src/components/SelectableTable/SelectableTable.tsx +27 -12
  198. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  199. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  200. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  201. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  202. package/src/components/UnsavedChangesDialog.tsx +42 -0
  203. package/src/components/VirtualTable/VirtualTable.tsx +96 -48
  204. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  205. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  206. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  207. package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
  208. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  209. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  210. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
  211. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  212. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  213. package/src/components/VirtualTable/types.tsx +2 -3
  214. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +33 -40
  215. package/src/components/common/index.ts +2 -1
  216. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  217. package/src/components/common/types.tsx +4 -6
  218. package/src/components/common/useColumnsIds.tsx +24 -3
  219. package/src/components/common/useDataSourceTableController.tsx +420 -0
  220. package/src/components/common/useDebouncedCallback.tsx +20 -0
  221. package/src/components/common/useScrollRestoration.tsx +68 -0
  222. package/src/components/common/useTableSearchHelper.ts +53 -12
  223. package/src/components/index.tsx +4 -2
  224. package/src/contexts/BreacrumbsContext.tsx +38 -0
  225. package/src/contexts/DialogsProvider.tsx +5 -4
  226. package/src/contexts/ModeController.tsx +1 -3
  227. package/src/contexts/SnackbarProvider.tsx +2 -0
  228. package/src/core/DefaultAppBar.tsx +219 -0
  229. package/src/core/DefaultDrawer.tsx +185 -0
  230. package/src/core/DrawerNavigationItem.tsx +66 -0
  231. package/src/core/EntityEditView.tsx +345 -480
  232. package/src/core/EntityEditViewFormActions.tsx +199 -0
  233. package/src/core/EntitySidePanel.tsx +86 -17
  234. package/src/core/FireCMS.tsx +56 -49
  235. package/src/core/FireCMSRouter.tsx +17 -0
  236. package/src/core/NavigationRoutes.tsx +28 -38
  237. package/src/core/SideDialogs.tsx +22 -12
  238. package/src/core/field_configs.tsx +11 -12
  239. package/src/core/index.tsx +6 -5
  240. package/src/form/EntityForm.tsx +585 -539
  241. package/src/form/EntityFormActions.tsx +169 -0
  242. package/src/form/PropertyFieldBinding.tsx +85 -44
  243. package/src/form/components/CustomIdField.tsx +6 -2
  244. package/src/form/components/FieldHelperText.tsx +4 -4
  245. package/src/form/components/FormEntry.tsx +22 -0
  246. package/src/form/components/FormLayout.tsx +16 -0
  247. package/src/form/components/LabelWithIcon.tsx +30 -19
  248. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  249. package/src/form/components/StorageItemPreview.tsx +22 -12
  250. package/src/form/components/StorageUploadProgress.tsx +4 -5
  251. package/src/form/components/index.tsx +3 -1
  252. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +31 -19
  253. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -35
  254. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  255. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  256. package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
  257. package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
  258. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
  259. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  260. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  261. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  262. package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -35
  263. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
  264. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -50
  265. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  266. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  267. package/src/form/index.tsx +16 -37
  268. package/src/form/useClearRestoreValue.tsx +2 -2
  269. package/src/form/validation.ts +13 -23
  270. package/src/hooks/data/delete.ts +6 -5
  271. package/src/hooks/data/save.ts +13 -9
  272. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  273. package/src/hooks/data/useDataSource.tsx +11 -3
  274. package/src/hooks/data/useEntityFetch.tsx +10 -6
  275. package/src/hooks/index.tsx +1 -0
  276. package/src/hooks/useAuthController.tsx +1 -1
  277. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  278. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  279. package/src/hooks/useBuildModeController.tsx +22 -29
  280. package/src/hooks/useBuildNavigationController.tsx +159 -54
  281. package/src/hooks/useFireCMSContext.tsx +5 -5
  282. package/src/hooks/useLargeLayout.tsx +0 -35
  283. package/src/hooks/useModeController.tsx +1 -2
  284. package/src/hooks/useProjectLog.tsx +32 -10
  285. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  286. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  287. package/src/index.ts +1 -0
  288. package/src/internal/useBuildDataSource.ts +72 -82
  289. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  290. package/src/internal/useBuildSideEntityController.tsx +194 -73
  291. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  292. package/src/preview/PropertyPreview.tsx +17 -24
  293. package/src/preview/PropertyPreviewProps.tsx +7 -1
  294. package/src/preview/components/BooleanPreview.tsx +2 -2
  295. package/src/preview/components/EmptyValue.tsx +1 -1
  296. package/src/preview/components/EnumValuesChip.tsx +2 -2
  297. package/src/preview/components/ImagePreview.tsx +25 -36
  298. package/src/preview/components/ReferencePreview.tsx +22 -33
  299. package/src/preview/components/StorageThumbnail.tsx +5 -1
  300. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  301. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  302. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  303. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  304. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  305. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  306. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  307. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  308. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  309. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  310. package/src/preview/util.ts +10 -10
  311. package/src/routes/CustomCMSRoute.tsx +21 -0
  312. package/src/routes/FireCMSRoute.tsx +235 -0
  313. package/src/routes/HomePageRoute.tsx +17 -0
  314. package/src/types/auth.tsx +9 -13
  315. package/src/types/collections.ts +94 -27
  316. package/src/types/customization_controller.tsx +0 -1
  317. package/src/types/datasource.ts +61 -43
  318. package/src/types/dialogs_controller.tsx +7 -3
  319. package/src/types/entities.ts +12 -2
  320. package/src/types/entity_actions.tsx +32 -7
  321. package/src/types/entity_callbacks.ts +18 -18
  322. package/src/types/entity_overrides.tsx +2 -2
  323. package/src/types/export_import.ts +4 -4
  324. package/src/types/fields.tsx +81 -46
  325. package/src/types/firecms.tsx +7 -2
  326. package/src/types/firecms_context.tsx +1 -1
  327. package/src/types/index.ts +0 -1
  328. package/src/types/navigation.ts +38 -18
  329. package/src/types/permissions.ts +5 -5
  330. package/src/types/plugins.tsx +25 -14
  331. package/src/types/properties.ts +60 -25
  332. package/src/types/property_config.tsx +0 -2
  333. package/src/types/side_dialogs_controller.tsx +15 -0
  334. package/src/types/side_entity_controller.tsx +6 -1
  335. package/src/types/storage.ts +94 -3
  336. package/src/types/user.ts +2 -0
  337. package/src/util/builders.ts +10 -8
  338. package/src/util/entities.ts +9 -6
  339. package/src/util/entity_actions.ts +28 -0
  340. package/src/util/entity_cache.ts +204 -0
  341. package/src/util/enums.ts +1 -1
  342. package/src/util/icon_list.ts +16 -10
  343. package/src/util/icon_synonyms.ts +3 -100
  344. package/src/util/icons.tsx +17 -7
  345. package/src/util/index.ts +2 -0
  346. package/src/util/join_collections.ts +3 -0
  347. package/src/util/make_properties_editable.ts +13 -5
  348. package/src/util/navigation_from_path.ts +13 -6
  349. package/src/util/navigation_utils.ts +59 -7
  350. package/src/util/objects.ts +48 -28
  351. package/src/util/parent_references_from_path.ts +3 -3
  352. package/src/util/permissions.ts +9 -8
  353. package/src/util/plurals.ts +0 -2
  354. package/src/util/property_utils.tsx +11 -4
  355. package/src/util/references.ts +11 -2
  356. package/src/util/resolutions.ts +100 -46
  357. package/src/util/storage.ts +79 -21
  358. package/src/util/strings.ts +2 -2
  359. package/src/util/useStorageUploadController.tsx +71 -27
  360. package/dist/components/FireCMSAppBar.d.ts +0 -26
  361. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  362. package/dist/components/VirtualTable/common.d.ts +0 -2
  363. package/dist/core/Drawer.d.ts +0 -23
  364. package/dist/core/Scaffold.d.ts +0 -55
  365. package/dist/core/SideEntityView.d.ts +0 -7
  366. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  367. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  368. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  369. package/dist/internal/useLocaleConfig.d.ts +0 -1
  370. package/dist/types/appcheck.d.ts +0 -26
  371. package/src/components/FireCMSAppBar.tsx +0 -165
  372. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  373. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  374. package/src/core/Drawer.tsx +0 -191
  375. package/src/core/Scaffold.tsx +0 -281
  376. package/src/core/SideEntityView.tsx +0 -38
  377. package/src/form/components/FormikArrayContainer.tsx +0 -44
  378. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  379. package/src/internal/useBuildCustomizationController.tsx +0 -5
  380. package/src/internal/useLocaleConfig.tsx +0 -18
  381. package/src/types/appcheck.ts +0 -29
  382. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -2,7 +2,7 @@ import { useNavigate } from "react-router-dom";
2
2
  import { useNavigationController } from "../../hooks";
3
3
  import { useUserConfigurationPersistence } from "../../hooks/useUserConfigurationPersistence";
4
4
  import { TopNavigationEntry } from "../../types";
5
- import { Chip, Collapse, StarBorderIcon, StarIcon } from "@firecms/ui";
5
+ import { Chip, Collapse, StarIcon } from "@firecms/ui";
6
6
 
7
7
  function NavigationChip({ entry }: { entry: TopNavigationEntry }) {
8
8
 
@@ -29,16 +29,11 @@ function NavigationChip({ entry }: { entry: TopNavigationEntry }) {
29
29
  return <Chip
30
30
  key={entry.path}
31
31
  onClick={() => navigate(entry.url)}
32
- icon={
33
- favourite
34
- ? <StarIcon
35
- onClick={onIconClick}
36
- size={18}
37
- className={"text-secondary"}/>
38
- : <StarBorderIcon
39
- onClick={onIconClick}
40
- size={18}
41
- className={"text-gray-400 dark:text-gray-500"}/>}>
32
+ icon={<StarIcon
33
+ onClick={onIconClick}
34
+ size={18}
35
+ className={favourite ? "text-secondary" : "text-surface-400 dark:text-surface-500"}/>
36
+ }>
42
37
  {entry.name}
43
38
  </Chip>;
44
39
  }
@@ -1,4 +1,4 @@
1
- import { ArrowForwardIcon, Card, cn, Markdown, Typography, } from "@firecms/ui";
1
+ import { ArrowForwardIcon, Card, cls, Markdown, Typography, } from "@firecms/ui";
2
2
 
3
3
  export type NavigationCardProps = {
4
4
  name: string,
@@ -17,7 +17,7 @@ export function NavigationCard({
17
17
  }: NavigationCardProps) {
18
18
 
19
19
  return (<Card
20
- className={cn("h-full p-4 cursor-pointer min-h-[230px]")}
20
+ className={cls("h-full p-4 cursor-pointer min-h-[230px]")}
21
21
  onClick={() => {
22
22
  onClick?.();
23
23
  }}>
@@ -27,7 +27,7 @@ export function NavigationCard({
27
27
  className="flex-grow w-full">
28
28
 
29
29
  <div
30
- className="h-10 flex items-center w-full justify-between text-gray-300 dark:text-gray-600">
30
+ className="h-10 flex items-center w-full justify-between text-surface-300 dark:text-surface-600">
31
31
 
32
32
  {icon}
33
33
 
@@ -4,7 +4,7 @@ import { useCustomizationController, useFireCMSContext } from "../../hooks";
4
4
  import { PluginHomePageActionsProps, TopNavigationEntry } from "../../types";
5
5
  import { IconForView } from "../../util";
6
6
  import { useUserConfigurationPersistence } from "../../hooks/useUserConfigurationPersistence";
7
- import { IconButton, StarBorderIcon, StarIcon } from "@firecms/ui";
7
+ import { IconButton, StarIcon } from "@firecms/ui";
8
8
  import { NavigationCard } from "./NavigationCard";
9
9
  import { SmallNavigationCard } from "./SmallNavigationCard";
10
10
 
@@ -19,7 +19,7 @@ import { SmallNavigationCard } from "./SmallNavigationCard";
19
19
  * @param name
20
20
  * @param description
21
21
  * @param onClick
22
- * @constructor
22
+
23
23
  */
24
24
  export function NavigationCardBinding({
25
25
  path,
@@ -60,14 +60,9 @@ export function NavigationCardBinding({
60
60
  );
61
61
  }
62
62
  }}>
63
- {
64
- favourite
65
- ? <StarIcon
66
- size={18}
67
- className={"text-secondary"}/>
68
- : <StarBorderIcon
69
- size={18}
70
- className={"text-gray-400 dark:text-gray-500"}/>}
63
+ <StarIcon
64
+ size={18}
65
+ className={favourite ? "text-secondary" : "text-surface-400 dark:text-surface-500"}/>
71
66
  </IconButton>
72
67
  ]
73
68
  : [];
@@ -12,8 +12,8 @@ export function NavigationGroup({
12
12
  return (
13
13
  <ExpandablePanel
14
14
  invisible={true}
15
- titleClassName={"font-medium text-sm text-gray-600 dark:text-gray-400"}
16
- className={"py-4"}
15
+ titleClassName={"font-medium text-sm text-surface-600 dark:text-surface-400"}
16
+ innerClassName={"py-4"}
17
17
  initiallyExpanded={!(userConfigurationPersistence?.collapsedGroups ?? []).includes(group ?? "ungrouped")}
18
18
  onExpandedChange={expanded => {
19
19
  if (userConfigurationPersistence) {
@@ -1,6 +1,6 @@
1
- import { ArrowForwardIcon, cardClickableMixin, cardMixin, cn, focusedMixin, Typography, } from "@firecms/ui";
1
+ import { ArrowForwardIcon, cardClickableMixin, cardMixin, cls, Typography, } from "@firecms/ui";
2
2
 
3
- import { Link as ReactLink } from "react-router-dom";
3
+ import { Link } from "react-router-dom";
4
4
 
5
5
  export type SmallNavigationCardProps = {
6
6
  name: string,
@@ -17,11 +17,10 @@ export function SmallNavigationCard({
17
17
  return (
18
18
  <>
19
19
 
20
- <ReactLink
20
+ <Link
21
21
  tabIndex={0}
22
- className={cn(cardMixin,
22
+ className={cls(cardMixin,
23
23
  cardClickableMixin,
24
- focusedMixin,
25
24
  "cursor-pointer flex flex-row items-center px-4 py-2 text-inherit dark:text-inherit visited:text-inherit visited:dark:text-inherit hover:text-inherit hover:dark:text-inherit ")}
26
25
  to={url}
27
26
  >
@@ -39,7 +38,7 @@ export function SmallNavigationCard({
39
38
  <div className={"p-4"}>
40
39
  <ArrowForwardIcon color="primary"/>
41
40
  </div>
42
- </ReactLink>
41
+ </Link>
43
42
 
44
43
  </>);
45
44
  }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Link as ReactLink } from "react-router-dom";
2
+ import { Link } from "react-router-dom";
3
3
  import { Button, Typography } from "@firecms/ui";
4
4
 
5
5
  export function NotFoundPage() {
@@ -17,7 +17,7 @@ export function NotFoundPage() {
17
17
  </Typography>
18
18
  <Button
19
19
  variant={"text"}
20
- component={ReactLink}
20
+ component={Link}
21
21
  to={"/"}>Back to home</Button>
22
22
  </div>
23
23
  </div>
@@ -2,15 +2,21 @@ import { getIconForWidget } from "../util";
2
2
  import { PropertyConfig } from "../types";
3
3
  import { getDefaultFieldConfig } from "../core";
4
4
 
5
- export function PropertyConfigBadge({ propertyConfig }: { propertyConfig: PropertyConfig | undefined }): React.ReactNode {
6
- const classes = "h-8 w-8 p-1 rounded-full shadow text-white";
5
+ export function PropertyConfigBadge({
6
+ propertyConfig,
7
+ disabled
8
+ }: {
9
+ propertyConfig: PropertyConfig | undefined,
10
+ disabled?: boolean
11
+ }): React.ReactNode {
12
+ const classes = "h-8 w-8 p-1 rounded-full shadow text-white " + (disabled ? "bg-surface-400 dark:bg-surface-600" : "");
7
13
 
8
14
  const defaultPropertyConfig = typeof propertyConfig?.property === "object" ? getDefaultFieldConfig(propertyConfig.property) : undefined;
9
15
 
10
16
  return <div
11
17
  className={classes}
12
18
  style={{
13
- background: propertyConfig?.color ?? defaultPropertyConfig?.color ?? "#888"
19
+ background: !disabled ? (propertyConfig?.color ?? defaultPropertyConfig?.color ?? "#888") : undefined
14
20
  }}>
15
21
  {propertyConfig?.Icon ? getIconForWidget(propertyConfig, "medium") : getIconForWidget(defaultPropertyConfig, "medium")}
16
22
  </div>
@@ -0,0 +1,47 @@
1
+ import { ContentCopyIcon, IconButton, Tooltip, Typography } from "@firecms/ui";
2
+ import { useCallback, useState } from "react";
3
+
4
+ export function PropertyIdCopyTooltip({
5
+ propertyKey,
6
+ className,
7
+ children,
8
+ }: {
9
+ propertyKey: string,
10
+ className?: string,
11
+ children: React.ReactNode
12
+ }) {
13
+ return <Tooltip title={<PropertyIdCopyTooltipContent propertyKey={propertyKey}/>}
14
+ delayDuration={800}
15
+ side={"top"}
16
+ align={"start"}
17
+ sideOffset={8}
18
+ className={className}>
19
+ {children}
20
+ </Tooltip>
21
+
22
+ }
23
+
24
+ export function PropertyIdCopyTooltipContent({ propertyKey }: { propertyKey: string }) {
25
+
26
+ const [copied, setCopied] = useState(false);
27
+
28
+ return (
29
+ <div className={"flex flex-row gap-2 items-center justify-center text-white"}>
30
+ <div>
31
+ <Typography variant={"caption"} className={"min-w-20 text-surface-accent-400"}
32
+ color={"disabled"}>{copied ? "Copied" : "Property ID"}</Typography>
33
+ <Typography variant={"caption"} className={"text-white"}><code>{propertyKey}</code></Typography>
34
+ </div>
35
+ <IconButton size={"small"}>
36
+ <ContentCopyIcon size={"smallest"}
37
+ className={"text-white"}
38
+ onClick={useCallback(() => {
39
+ navigator.clipboard.writeText(propertyKey);
40
+ setCopied(true);
41
+ setTimeout(() => setCopied(false), 2000);
42
+ }, [propertyKey])}
43
+ />
44
+ </IconButton>
45
+ </div>
46
+ );
47
+ }
@@ -4,7 +4,7 @@ import { CollectionSize, Entity, EntityCollection, FilterValues } from "../../ty
4
4
  import {
5
5
  EntityCollectionRowActions,
6
6
  EntityCollectionTable,
7
- useDataSourceEntityCollectionTableController
7
+ useDataSourceTableController
8
8
  } from "../EntityCollectionTable";
9
9
  import {
10
10
  useAuthController,
@@ -16,7 +16,7 @@ import {
16
16
  } from "../../hooks";
17
17
  import { ErrorView } from "../ErrorView";
18
18
  import { AddIcon, Button, DialogActions, Typography } from "@firecms/ui";
19
- import { canCreateEntity, fullPathToCollectionSegments, resolveCollection } from "../../util";
19
+ import { canCreateEntity, IconForView, resolveCollection } from "../../util";
20
20
  import { useSelectionController } from "../EntityCollectionView/useSelectionController";
21
21
  import { useColumnIds, useTableSearchHelper } from "../common";
22
22
  import { useSideDialogContext } from "../../core";
@@ -107,7 +107,7 @@ export function ReferenceSelectionTable<M extends Record<string, any>>(
107
107
  const analyticsController = useAnalyticsController();
108
108
  const customizationController = useCustomizationController();
109
109
 
110
- const fullPath = navigation.resolveAliasesFrom(pathInput);
110
+ const fullPath = navigation.resolveIdsFrom(pathInput);
111
111
 
112
112
  const dataSource = useDataSource(collection);
113
113
 
@@ -233,7 +233,9 @@ export function ReferenceSelectionTable<M extends Record<string, any>>(
233
233
  selectionEnabled={multiselect}
234
234
  hideId={collection?.hideIdFromCollection}
235
235
  fullPath={fullPath}
236
- selectionController={selectionController}/>;
236
+ selectionController={selectionController}
237
+ openEntityMode={"side_panel"}
238
+ />;
237
239
 
238
240
  };
239
241
 
@@ -247,23 +249,21 @@ export function ReferenceSelectionTable<M extends Record<string, any>>(
247
249
  error={"Could not find collection with id " + collection}/>
248
250
  }
249
251
 
250
- // eslint-disable-next-line react-hooks/rules-of-hooks
251
252
  const resolvedCollection = useMemo(() => resolveCollection({
252
253
  collection: collection,
253
254
  path: fullPath,
254
255
  values: {},
255
- fields: customizationController.propertyConfigs
256
+ propertyConfigs: customizationController.propertyConfigs
256
257
  }), [collection, customizationController.propertyConfigs, fullPath]);
257
258
 
258
- // eslint-disable-next-line react-hooks/rules-of-hooks
259
259
  const displayedColumnIds = useColumnIds(resolvedCollection, false);
260
260
 
261
- // eslint-disable-next-line react-hooks/rules-of-hooks
262
- const tableController = useDataSourceEntityCollectionTableController<M>({
261
+ const tableController = useDataSourceTableController<M>({
263
262
  fullPath,
264
263
  collection,
265
264
  entitiesDisplayedFirst,
266
- forceFilter
265
+ forceFilter,
266
+ updateUrl: false,
267
267
  });
268
268
 
269
269
  const {
@@ -272,7 +272,6 @@ export function ReferenceSelectionTable<M extends Record<string, any>>(
272
272
  onTextSearchClick,
273
273
  textSearchEnabled
274
274
  } =
275
- // eslint-disable-next-line react-hooks/rules-of-hooks
276
275
  useTableSearchHelper({
277
276
  collection,
278
277
  fullPath,
@@ -291,9 +290,16 @@ export function ReferenceSelectionTable<M extends Record<string, any>>(
291
290
  displayedColumnIds={displayedColumnIds}
292
291
  onEntityClick={onEntityClick}
293
292
  tableController={tableController}
293
+ enablePopupIcon={false}
294
294
  tableRowActionsBuilder={tableRowActionsBuilder}
295
- title={<Typography variant={"subtitle2"}>
296
- {collection.singularName ? `Select ${collection.singularName}` : `Select from ${collection.name}`}
295
+ openEntityMode={"side_panel"}
296
+ title={<Typography variant={"subtitle2"} className={"flex flex-row gap-2"}>
297
+ <IconForView
298
+ size={"small"}
299
+ collectionOrView={collection}
300
+ className={"text-surface-300 dark:text-surface-600"}/>
301
+ {collection.singularName ? `Select ${collection.singularName}` : `Select
302
+ from ${collection.name}`}
297
303
  </Typography>}
298
304
  defaultSize={collection.defaultSize}
299
305
  properties={resolvedCollection.properties}
@@ -4,7 +4,7 @@ import { Entity, EntityCollection, EntityReference, FilterValues } from "../type
4
4
  import { getReferenceFrom } from "../util";
5
5
  import { PreviewSize, ReferencePreview } from "../preview";
6
6
  import { useNavigationController, useReferenceDialog } from "../hooks";
7
- import { Button, cn } from "@firecms/ui";
7
+ import { Button, cls } from "@firecms/ui";
8
8
 
9
9
  export type ReferenceWidgetProps<M extends Record<string, any>> = {
10
10
  name?: string,
@@ -27,6 +27,8 @@ export type ReferenceWidgetProps<M extends Record<string, any>> = {
27
27
  forceFilter?: FilterValues<string>;
28
28
  size: PreviewSize;
29
29
  className?: string;
30
+ includeId?: boolean;
31
+ includeEntityLink?: boolean;
30
32
  };
31
33
 
32
34
  /**
@@ -43,7 +45,9 @@ export function ReferenceWidget<M extends Record<string, any>>({
43
45
  previewProperties,
44
46
  forceFilter,
45
47
  size,
46
- className
48
+ className,
49
+ includeId,
50
+ includeEntityLink
47
51
  }: ReferenceWidgetProps<M>) {
48
52
 
49
53
  const navigationController = useNavigationController();
@@ -52,16 +56,15 @@ export function ReferenceWidget<M extends Record<string, any>>({
52
56
  return navigationController.getCollection(path);
53
57
  }, [path, navigationController.getCollection]);
54
58
 
55
- // if (!collection) {
56
- // throw Error(`Couldn't find the corresponding collection for the path: ${path}`);
57
- // }
58
-
59
59
  const onSingleEntitySelected = useCallback((entity: Entity<M> | null) => {
60
60
  if (disabled)
61
61
  return;
62
62
  if (onReferenceSelected) {
63
63
  const reference = entity ? getReferenceFrom(entity) : null;
64
- onReferenceSelected?.({ reference, entity });
64
+ onReferenceSelected?.({
65
+ reference,
66
+ entity
67
+ });
65
68
  }
66
69
  }, [disabled, onReferenceSelected]);
67
70
 
@@ -70,7 +73,10 @@ export function ReferenceWidget<M extends Record<string, any>>({
70
73
  return;
71
74
  if (onMultipleReferenceSelected) {
72
75
  const references = entities ? entities.map(e => getReferenceFrom(e)) : null;
73
- onMultipleReferenceSelected({ references, entities });
76
+ onMultipleReferenceSelected({
77
+ references,
78
+ entities
79
+ });
74
80
  }
75
81
  }, [disabled, onReferenceSelected]);
76
82
 
@@ -110,7 +116,9 @@ export function ReferenceWidget<M extends Record<string, any>>({
110
116
  reference={ref}
111
117
  disabled={disabled}
112
118
  previewProperties={previewProperties}
113
- size={size}/>
119
+ size={size}
120
+ includeId={includeId}
121
+ includeEntityLink={includeEntityLink}/>
114
122
  })}
115
123
  </div>
116
124
  } else if (value?.isEntityReference && value?.isEntityReference()) {
@@ -119,10 +127,12 @@ export function ReferenceWidget<M extends Record<string, any>>({
119
127
  onClick={onEntryClick}
120
128
  disabled={disabled}
121
129
  previewProperties={previewProperties}
122
- size={size}/>
130
+ size={size}
131
+ includeId={includeId}
132
+ includeEntityLink={includeEntityLink}/>
123
133
 
124
134
  }
125
- return <div className={cn("text-sm font-medium text-gray-500",
135
+ return <div className={cls("text-sm font-medium",
126
136
  "min-w-80 flex flex-col gap-4",
127
137
  "relative transition-colors duration-200 ease-in rounded font-medium",
128
138
  disabled ? "bg-opacity-50" : "hover:bg-opacity-75",
@@ -1,14 +1,14 @@
1
1
  import React from "react";
2
2
 
3
3
  import { coolIconKeys, debounce, Icon, IconButton, iconKeys, SearchBar, Tooltip } from "@firecms/ui";
4
- import { icon_synonyms, iconsSearch } from "../util";
4
+ import { iconSynonyms, iconsSearch } from "../util";
5
5
 
6
6
  const UPDATE_SEARCH_INDEX_WAIT_MS = 220;
7
7
 
8
- if (process.env.NODE_ENV !== "production") {
9
- Object.keys(icon_synonyms).forEach((icon: string) => {
8
+ if (iconSynonyms && process.env.NODE_ENV !== "production") {
9
+ Object.keys(iconSynonyms).forEach((icon: string) => {
10
10
  if (!iconKeys.includes(icon)) {
11
- console.warn(`The icon ${icon} no longer exists. Remove it from \`icon_synonyms\``);
11
+ console.warn(`The icon ${icon} no longer exists. Remove it from \`iconSynonyms\``);
12
12
  }
13
13
  });
14
14
  }
@@ -31,7 +31,9 @@ export function SearchIconsView({
31
31
  setKeys(null);
32
32
  } else {
33
33
  const searchResult = iconsSearch.search(value);
34
- setKeys(searchResult.map((e: any) => e.key));
34
+ const limit = 50;
35
+ const limited = searchResult.slice(0, limit);
36
+ setKeys(limited.map((e) => e.item.key));
35
37
  }
36
38
  }, UPDATE_SEARCH_INDEX_WAIT_MS), []
37
39
  );
@@ -48,7 +50,7 @@ export function SearchIconsView({
48
50
  return (
49
51
  <>
50
52
  <SearchBar
51
- autoFocus
53
+ autoFocus={false}
52
54
  innerClassName={"w-full sticky top-0 z-10"}
53
55
  onTextSearch={(value?: string) => setQuery(value ?? "")}
54
56
  placeholder="Search for more icons…"
@@ -57,7 +59,8 @@ export function SearchIconsView({
57
59
  <div className={"flex max-w-full flex-wrap mt-4"}>
58
60
  {icons.map((icon: string) => {
59
61
  return (
60
- <Tooltip title={icon} key={icon}>
62
+ <Tooltip title={icon} key={icon}
63
+ asChild={true}>
61
64
  <IconButton
62
65
  shape={"square"}
63
66
  toggled={selectedIcon === icon}
@@ -1,5 +1,4 @@
1
1
  import React, { useCallback, useEffect, useRef } from "react";
2
- import equal from "react-fast-compare";
3
2
  import {
4
3
  CollectionSize,
5
4
  Entity,
@@ -10,7 +9,7 @@ import {
10
9
  } from "../../types";
11
10
  import { CellRendererParams, VirtualTable, VirtualTableColumn } from "../VirtualTable";
12
11
  import { enumToObjectEntries } from "../../util";
13
- import { OnCellValueChange, OnColumnResizeParams } from "../common/types";
12
+ import { OnCellValueChange, OnColumnResizeParams } from "../common";
14
13
  import { FilterFormFieldProps } from "../VirtualTable/VirtualTableHeader";
15
14
  import { ReferenceFilterField } from "./filters/ReferenceFilterField";
16
15
  import { StringNumberFilterField } from "./filters/StringNumberFilterField";
@@ -18,6 +17,7 @@ import { BooleanFilterField } from "./filters/BooleanFilterField";
18
17
  import { DateTimeFilterField } from "./filters/DateTimeFilterField";
19
18
  import { useOutsideAlerter } from "@firecms/ui";
20
19
  import { SelectableTableContext } from "./SelectableTableContext";
20
+ import { getRowHeight } from "../common/table_height";
21
21
 
22
22
  export type SelectableTableProps<M extends Record<string, any>> = {
23
23
 
@@ -59,7 +59,7 @@ export type SelectableTableProps<M extends Record<string, any>> = {
59
59
 
60
60
  /**
61
61
  * Controller holding the logic for the table
62
- * {@link useDataSourceEntityCollectionTableController}
62
+ * {@link useDataSourceTableController}
63
63
  * {@link EntityTableController}
64
64
  */
65
65
  tableController: EntityTableController<M>;
@@ -76,6 +76,18 @@ export type SelectableTableProps<M extends Record<string, any>> = {
76
76
 
77
77
  size?: CollectionSize;
78
78
 
79
+ initialScroll?: number;
80
+
81
+ /**
82
+ * Callback when the table is scrolled
83
+ * @param props
84
+ */
85
+ onScroll?: (props: {
86
+ scrollDirection: "forward" | "backward",
87
+ scrollOffset: number,
88
+ scrollUpdateWasRequested: boolean
89
+ }) => void;
90
+
79
91
  emptyComponent?: React.ReactNode;
80
92
 
81
93
  endAdornment?: React.ReactNode;
@@ -100,7 +112,7 @@ export type SelectableTableProps<M extends Record<string, any>> = {
100
112
  *
101
113
  * The data displayed in the table is managed by a {@link EntityTableController}.
102
114
  * You can build the default, bound to a path in the datasource, by using the hook
103
- * {@link useDataSourceEntityCollectionTableController}
115
+ * {@link useDataSourceTableController}
104
116
  *
105
117
  * @see EntityCollectionTableProps
106
118
  * @see EntityCollectionView
@@ -115,7 +127,7 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
115
127
  onEntityClick,
116
128
  onColumnResize,
117
129
  hoverRow = true,
118
- size,
130
+ size = "m",
119
131
  inlineEditing = false,
120
132
  tableController:
121
133
  {
@@ -127,8 +139,6 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
127
139
  setFilterValues,
128
140
  sortBy,
129
141
  setSortBy,
130
- setSearchString,
131
- clearFilter,
132
142
  itemCount,
133
143
  setItemCount,
134
144
  pageSize = 50,
@@ -137,6 +147,8 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
137
147
  setPopupCell
138
148
  },
139
149
  filterable = true,
150
+ onScroll,
151
+ initialScroll,
140
152
  emptyComponent,
141
153
  columns,
142
154
  forceFilter,
@@ -211,7 +223,7 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
211
223
  selectedCell,
212
224
  }}
213
225
  >
214
- <div className="h-full w-full flex flex-col bg-white dark:bg-gray-950"
226
+ <div className="h-full w-full flex flex-col bg-white dark:bg-surface-950"
215
227
  ref={ref}>
216
228
 
217
229
  <VirtualTable
@@ -222,19 +234,20 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
222
234
  onEndReached={loadNextPage}
223
235
  onResetPagination={resetPagination}
224
236
  error={dataLoadingError}
225
- paginationEnabled={paginationEnabled}
226
237
  onColumnResize={onColumnResize}
227
- size={size}
238
+ rowHeight={getRowHeight(size)}
228
239
  loading={dataLoading}
229
240
  filter={filterValues}
230
241
  onFilterUpdate={setFilterValues ? onFilterUpdate : undefined}
231
242
  sortBy={sortBy}
232
243
  onSortByUpdate={setSortBy as ((sortBy?: [string, "asc" | "desc"]) => void)}
233
244
  hoverRow={hoverRow}
245
+ initialScroll={initialScroll}
246
+ onScroll={onScroll}
234
247
  checkFilterCombination={checkFilterCombination}
235
248
  createFilterField={filterable ? createFilterField : undefined}
236
249
  rowClassName={useCallback((entity: Entity<M>) => {
237
- return highlightedRow?.(entity) ? "bg-gray-100 bg-opacity-75 dark:bg-gray-800 dark:bg-opacity-75" : "";
250
+ return highlightedRow?.(entity) ? "bg-surface-100 bg-opacity-75 dark:bg-surface-800 dark:bg-opacity-75" : "";
238
251
  }, [highlightedRow])}
239
252
  className="flex-grow"
240
253
  emptyComponent={emptyComponent}
@@ -247,7 +260,8 @@ export const SelectableTable = React.memo<SelectableTableProps<any>>(
247
260
  );
248
261
 
249
262
  },
250
- equal
263
+ () => false,
264
+ // equal
251
265
  );
252
266
 
253
267
  function createFilterField({
@@ -280,6 +294,7 @@ function createFilterField({
280
294
  isArray={isArray}
281
295
  path={baseProperty.path}
282
296
  title={resolvedProperty?.name}
297
+ includeId={baseProperty.includeId}
283
298
  previewProperties={baseProperty?.previewProperties}
284
299
  hidden={hidden}
285
300
  setHidden={setHidden}/>;
@@ -32,7 +32,7 @@ export function BooleanFilterField({
32
32
  const valueSet = !!value;
33
33
 
34
34
  return (
35
- <div className="w-[200px]">
35
+ <div className="w-[300px]">
36
36
  <BooleanSwitchWithLabel
37
37
  value={valueSetToTrue}
38
38
  allowIndeterminate={true}
@@ -44,6 +44,5 @@ export function BooleanFilterField({
44
44
  : `${title} is false`}
45
45
  />
46
46
  </div>
47
- )
48
- ;
47
+ );
49
48
  }