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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +19 -6
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -5
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  19. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  20. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
  21. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  22. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  23. package/dist/components/EntityPreview.d.ts +7 -6
  24. package/dist/components/ErrorView.d.ts +1 -1
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  27. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  28. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  29. package/dist/components/ReferenceWidget.d.ts +3 -1
  30. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  31. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  32. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  33. package/dist/components/VirtualTable/types.d.ts +3 -3
  34. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  35. package/dist/components/common/index.d.ts +1 -0
  36. package/dist/components/common/table_height.d.ts +5 -0
  37. package/dist/components/common/types.d.ts +4 -6
  38. package/dist/components/common/useColumnsIds.d.ts +2 -1
  39. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +4 -1
  40. package/dist/components/index.d.ts +4 -2
  41. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  42. package/dist/core/DefaultDrawer.d.ts +19 -0
  43. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  44. package/dist/core/EntityEditView.d.ts +18 -4
  45. package/dist/core/FireCMS.d.ts +2 -2
  46. package/dist/core/NavigationRoutes.d.ts +3 -3
  47. package/dist/core/index.d.ts +3 -4
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/ErrorFocus.d.ts +1 -1
  50. package/dist/form/components/FieldHelperText.d.ts +3 -3
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  54. package/dist/form/components/index.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  60. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  61. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  62. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  67. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  68. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  69. package/dist/form/index.d.ts +3 -5
  70. package/dist/form/useClearRestoreValue.d.ts +2 -2
  71. package/dist/hooks/data/delete.d.ts +4 -4
  72. package/dist/hooks/data/save.d.ts +4 -5
  73. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  74. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  75. package/dist/hooks/index.d.ts +1 -0
  76. package/dist/hooks/useAuthController.d.ts +1 -1
  77. package/dist/hooks/useBuildNavigationController.d.ts +3 -4
  78. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  79. package/dist/hooks/useProjectLog.d.ts +8 -2
  80. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  81. package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.es.js +20202 -14110
  84. package/dist/index.es.js.map +1 -1
  85. package/dist/index.umd.js +22773 -588
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/internal/useBuildDataSource.d.ts +1 -16
  88. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  89. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  90. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  91. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  92. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  93. package/dist/preview/util.d.ts +3 -3
  94. package/dist/types/auth.d.ts +8 -10
  95. package/dist/types/collections.d.ts +53 -18
  96. package/dist/types/datasource.d.ts +51 -35
  97. package/dist/types/entities.d.ts +6 -1
  98. package/dist/types/entity_actions.d.ts +18 -4
  99. package/dist/types/entity_callbacks.d.ts +16 -16
  100. package/dist/types/entity_overrides.d.ts +2 -2
  101. package/dist/types/export_import.d.ts +4 -4
  102. package/dist/types/fields.d.ts +63 -41
  103. package/dist/types/firecms.d.ts +6 -2
  104. package/dist/types/firecms_context.d.ts +1 -1
  105. package/dist/types/index.d.ts +0 -1
  106. package/dist/types/navigation.d.ts +6 -5
  107. package/dist/types/permissions.d.ts +4 -4
  108. package/dist/types/plugins.d.ts +22 -12
  109. package/dist/types/properties.d.ts +34 -21
  110. package/dist/types/property_config.d.ts +0 -2
  111. package/dist/types/side_dialogs_controller.d.ts +10 -0
  112. package/dist/types/storage.d.ts +86 -3
  113. package/dist/types/user.d.ts +1 -0
  114. package/dist/util/builders.d.ts +2 -2
  115. package/dist/util/entities.d.ts +2 -2
  116. package/dist/util/icon_list.d.ts +5 -1
  117. package/dist/util/icon_synonyms.d.ts +1 -97
  118. package/dist/util/icons.d.ts +6 -3
  119. package/dist/util/index.d.ts +1 -0
  120. package/dist/util/navigation_utils.d.ts +2 -2
  121. package/dist/util/objects.d.ts +2 -1
  122. package/dist/util/permissions.d.ts +4 -4
  123. package/dist/util/plurals.d.ts +0 -2
  124. package/dist/util/property_utils.d.ts +3 -3
  125. package/dist/util/resolutions.d.ts +30 -16
  126. package/dist/util/storage.d.ts +23 -2
  127. package/dist/util/useStorageUploadController.d.ts +3 -3
  128. package/package.json +59 -44
  129. package/src/app/AppBar.tsx +18 -0
  130. package/src/app/Drawer.tsx +24 -0
  131. package/src/app/Scaffold.tsx +243 -0
  132. package/src/app/index.ts +4 -0
  133. package/src/app/useApp.tsx +32 -0
  134. package/src/components/ArrayContainer.tsx +92 -25
  135. package/src/components/CircularProgressCenter.tsx +2 -2
  136. package/src/components/ClearFilterSortButton.tsx +41 -0
  137. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  138. package/src/components/DeleteEntityDialog.tsx +9 -18
  139. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
  140. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +28 -25
  141. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
  142. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  143. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  144. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
  145. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +16 -8
  146. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +30 -35
  147. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  148. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  149. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +82 -75
  150. package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
  151. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  152. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  153. package/src/components/EntityCollectionView/utils.ts +19 -0
  154. package/src/components/EntityPreview.tsx +55 -51
  155. package/src/components/EntityView.tsx +10 -10
  156. package/src/components/ErrorView.tsx +4 -4
  157. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  158. package/src/components/HomePage/FavouritesView.tsx +1 -1
  159. package/src/components/HomePage/NavigationCard.tsx +4 -4
  160. package/src/components/HomePage/NavigationCardBinding.tsx +2 -2
  161. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  162. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  163. package/src/components/PropertyConfigBadge.tsx +9 -3
  164. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  165. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
  166. package/src/components/ReferenceWidget.tsx +22 -12
  167. package/src/components/SearchIconsView.tsx +10 -7
  168. package/src/components/SelectableTable/SelectableTable.tsx +9 -9
  169. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  170. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  171. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +30 -6
  172. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +90 -21
  173. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  174. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  175. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  176. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  177. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  178. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  179. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  180. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  181. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  182. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  183. package/src/components/VirtualTable/types.tsx +2 -3
  184. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
  185. package/src/components/common/index.ts +1 -0
  186. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  187. package/src/components/common/types.tsx +4 -6
  188. package/src/components/common/useColumnsIds.tsx +23 -2
  189. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
  190. package/src/components/common/useTableSearchHelper.ts +53 -12
  191. package/src/components/index.tsx +4 -2
  192. package/src/contexts/DialogsProvider.tsx +2 -2
  193. package/src/contexts/SnackbarProvider.tsx +2 -0
  194. package/src/core/DefaultAppBar.tsx +178 -0
  195. package/src/core/DefaultDrawer.tsx +183 -0
  196. package/src/core/DrawerNavigationItem.tsx +66 -0
  197. package/src/core/EntityEditView.tsx +721 -156
  198. package/src/core/EntitySidePanel.tsx +1 -2
  199. package/src/core/FireCMS.tsx +57 -53
  200. package/src/core/NavigationRoutes.tsx +7 -8
  201. package/src/core/SideDialogs.tsx +2 -1
  202. package/src/core/field_configs.tsx +9 -10
  203. package/src/core/index.tsx +3 -4
  204. package/src/form/PropertyFieldBinding.tsx +74 -35
  205. package/src/form/components/CustomIdField.tsx +6 -2
  206. package/src/form/components/FieldHelperText.tsx +4 -4
  207. package/src/form/components/LabelWithIcon.tsx +27 -19
  208. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  209. package/src/form/components/StorageItemPreview.tsx +22 -12
  210. package/src/form/components/StorageUploadProgress.tsx +3 -4
  211. package/src/form/components/index.tsx +1 -1
  212. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  213. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  214. package/src/form/field_bindings/BlockFieldBinding.tsx +53 -33
  215. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  216. package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
  217. package/src/form/field_bindings/MapFieldBinding.tsx +67 -48
  218. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  219. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  220. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  221. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  222. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  223. package/src/form/field_bindings/SelectFieldBinding.tsx +21 -13
  224. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +37 -47
  225. package/src/form/field_bindings/SwitchFieldBinding.tsx +28 -24
  226. package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
  227. package/src/form/index.tsx +4 -9
  228. package/src/form/useClearRestoreValue.tsx +2 -2
  229. package/src/form/validation.ts +1 -17
  230. package/src/hooks/data/delete.ts +6 -5
  231. package/src/hooks/data/save.ts +12 -8
  232. package/src/hooks/data/useCollectionFetch.tsx +2 -2
  233. package/src/hooks/data/useDataSource.tsx +11 -3
  234. package/src/hooks/data/useEntityFetch.tsx +5 -5
  235. package/src/hooks/index.tsx +1 -0
  236. package/src/hooks/useAuthController.tsx +1 -1
  237. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  238. package/src/hooks/useBuildModeController.tsx +11 -5
  239. package/src/hooks/useBuildNavigationController.tsx +92 -34
  240. package/src/hooks/useFireCMSContext.tsx +5 -5
  241. package/src/hooks/useProjectLog.tsx +32 -10
  242. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  243. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  244. package/src/index.ts +1 -0
  245. package/src/internal/useBuildDataSource.ts +72 -82
  246. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  247. package/src/internal/useBuildSideEntityController.tsx +102 -22
  248. package/src/internal/useUnsavedChangesDialog.tsx +5 -3
  249. package/src/preview/PropertyPreview.tsx +11 -18
  250. package/src/preview/PropertyPreviewProps.tsx +7 -1
  251. package/src/preview/components/BooleanPreview.tsx +2 -2
  252. package/src/preview/components/EmptyValue.tsx +1 -1
  253. package/src/preview/components/EnumValuesChip.tsx +2 -2
  254. package/src/preview/components/ImagePreview.tsx +25 -35
  255. package/src/preview/components/ReferencePreview.tsx +23 -34
  256. package/src/preview/components/StorageThumbnail.tsx +5 -1
  257. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  258. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  259. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  260. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  261. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  262. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  263. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  264. package/src/preview/property_previews/MapPropertyPreview.tsx +9 -9
  265. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  266. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  267. package/src/preview/util.ts +10 -10
  268. package/src/types/auth.tsx +9 -13
  269. package/src/types/collections.ts +62 -20
  270. package/src/types/customization_controller.tsx +0 -1
  271. package/src/types/datasource.ts +60 -43
  272. package/src/types/entities.ts +11 -1
  273. package/src/types/entity_actions.tsx +20 -7
  274. package/src/types/entity_callbacks.ts +18 -18
  275. package/src/types/entity_overrides.tsx +2 -2
  276. package/src/types/export_import.ts +4 -4
  277. package/src/types/fields.tsx +69 -45
  278. package/src/types/firecms.tsx +7 -2
  279. package/src/types/firecms_context.tsx +1 -1
  280. package/src/types/index.ts +0 -1
  281. package/src/types/navigation.ts +7 -7
  282. package/src/types/permissions.ts +5 -5
  283. package/src/types/plugins.tsx +24 -14
  284. package/src/types/properties.ts +39 -22
  285. package/src/types/property_config.tsx +0 -2
  286. package/src/types/side_dialogs_controller.tsx +13 -0
  287. package/src/types/storage.ts +94 -3
  288. package/src/types/user.ts +2 -0
  289. package/src/util/builders.ts +6 -6
  290. package/src/util/entities.ts +6 -5
  291. package/src/util/enums.ts +1 -1
  292. package/src/util/icon_list.ts +15 -10
  293. package/src/util/icon_synonyms.ts +3 -99
  294. package/src/util/icons.tsx +17 -7
  295. package/src/util/index.ts +1 -0
  296. package/src/util/make_properties_editable.ts +13 -5
  297. package/src/util/navigation_utils.ts +6 -6
  298. package/src/util/objects.ts +45 -28
  299. package/src/util/permissions.ts +9 -8
  300. package/src/util/plurals.ts +0 -2
  301. package/src/util/property_utils.tsx +11 -4
  302. package/src/util/references.ts +3 -0
  303. package/src/util/resolutions.ts +79 -46
  304. package/src/util/storage.ts +79 -21
  305. package/src/util/strings.ts +2 -2
  306. package/src/util/useStorageUploadController.tsx +34 -8
  307. package/src/util/useTraceUpdate.tsx +1 -0
  308. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  309. package/dist/components/VirtualTable/common.d.ts +0 -2
  310. package/dist/core/Drawer.d.ts +0 -23
  311. package/dist/core/Scaffold.d.ts +0 -55
  312. package/dist/core/SideEntityView.d.ts +0 -7
  313. package/dist/form/EntityForm.d.ts +0 -77
  314. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  315. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  316. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  317. package/dist/internal/useLocaleConfig.d.ts +0 -1
  318. package/dist/types/appcheck.d.ts +0 -26
  319. package/src/components/FireCMSAppBar.tsx +0 -165
  320. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  321. package/src/core/Drawer.tsx +0 -191
  322. package/src/core/Scaffold.tsx +0 -281
  323. package/src/core/SideEntityView.tsx +0 -38
  324. package/src/form/EntityForm.tsx +0 -728
  325. package/src/form/components/FormikArrayContainer.tsx +0 -44
  326. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  327. package/src/internal/useBuildCustomizationController.tsx +0 -5
  328. package/src/internal/useLocaleConfig.tsx +0 -18
  329. package/src/types/appcheck.ts +0 -29
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import {
3
3
  AdditionalFieldDelegate,
4
4
  CollectionSize,
5
- Entity, EntityCollection,
5
+ Entity,
6
6
  EntityTableController,
7
7
  FilterValues,
8
8
  ResolvedProperties,
@@ -12,12 +12,15 @@ import {
12
12
  } from "../../types";
13
13
  import { OnCellValueChange, OnColumnResizeParams, UniqueFieldValidator } from "../common/types";
14
14
 
15
-
16
15
  /**
17
16
  * @group Collection components
18
17
  */
19
18
  export type EntityCollectionTableProps<M extends Record<string, any>,
20
- UserType extends User = User> = {
19
+ USER extends User = User> = {
20
+
21
+ className?: string;
22
+
23
+ style?: React.CSSProperties;
21
24
 
22
25
  /**
23
26
  * Display these entities as selected
@@ -92,7 +95,7 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
92
95
  */
93
96
  tableController: EntityTableController<M>;
94
97
 
95
- displayedColumnIds: PropertyColumnConfig[];
98
+ displayedColumnIds?: PropertyColumnConfig[];
96
99
 
97
100
  forceFilter?: FilterValues<Extract<keyof M, string>>;
98
101
 
@@ -100,7 +103,7 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
100
103
 
101
104
  inlineEditing?: boolean;
102
105
 
103
- additionalFields?: AdditionalFieldDelegate<M, UserType>[];
106
+ additionalFields?: AdditionalFieldDelegate<M, USER>[];
104
107
 
105
108
  defaultSize?: CollectionSize;
106
109
 
@@ -131,15 +134,16 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
131
134
  onTextSearchClick?: () => void;
132
135
 
133
136
  textSearchLoading?: boolean;
134
- }
137
+
138
+ enablePopupIcon: boolean;
139
+ };
135
140
 
136
141
  export type GetPropertyForProps<M extends Record<string, any>> = {
137
142
  propertyKey: string,
138
- propertyValue: any,
139
143
  entity: Entity<M>
140
144
  };
141
145
 
142
146
  export type PropertyColumnConfig = {
143
147
  key: string,
144
- disabled: boolean,
148
+ disabled?: boolean,
145
149
  };
@@ -24,14 +24,13 @@ import { getPreviewSizeFrom } from "../../preview/util";
24
24
  import { isReadOnly } from "../../util";
25
25
 
26
26
  import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
27
- import { useFireCMSContext } from "../../hooks";
28
27
 
29
28
  import { EntityTableCell } from "./internal/EntityTableCell";
30
29
  import { EntityTableCellActions } from "./internal/EntityTableCellActions";
31
30
 
32
- import { getRowHeight } from "../VirtualTable/common";
33
31
  import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
34
32
  import { useClearRestoreValue } from "../../form/useClearRestoreValue";
33
+ import { getRowHeight } from "../common/table_height";
35
34
 
36
35
  export interface PropertyTableCellProps<T extends CMSType> {
37
36
  propertyKey: string;
@@ -46,9 +45,12 @@ export interface PropertyTableCellProps<T extends CMSType> {
46
45
  entity: Entity<any>;
47
46
  path: string;
48
47
  disabled: boolean;
48
+ enablePopupIcon?: boolean;
49
49
  }
50
50
 
51
51
  function isStorageProperty(property: ResolvedProperty) {
52
+ if (property.dataType === "string" && property.markdown)
53
+ return false;
52
54
  if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
53
55
  return true;
54
56
  if (property.dataType === "array") {
@@ -74,11 +76,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
74
76
  path,
75
77
  entity,
76
78
  readonly,
77
- disabled: disabledProp
79
+ disabled: disabledProp,
80
+ enablePopupIcon = true
78
81
  }: PropertyTableCellProps<T>) {
79
82
 
80
- const context = useFireCMSContext();
81
-
82
83
  const {
83
84
  onValueChange,
84
85
  size,
@@ -88,13 +89,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
88
89
  } = useSelectableTableController();
89
90
 
90
91
  const selected = selectedCell?.propertyKey === propertyKey &&
91
- selectedCell?.entity.path === entity.path &&
92
- selectedCell?.entity.id === entity.id;
92
+ selectedCell?.entityPath === entity.path &&
93
+ selectedCell?.entityId === entity.id;
93
94
 
94
95
  const [internalValue, setInternalValue] = useState<any | null>(value);
95
96
  const internalValueRef = useRef(value);
96
97
 
97
98
  const [error, setError] = useState<Error | undefined>();
99
+ const [validationError, setValidationError] = useState<Error | undefined>();
98
100
  const [saved, setSaved] = useState<boolean>(false);
99
101
 
100
102
  const onValueUpdated = useCallback(() => {
@@ -120,7 +122,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
120
122
  useEffect(
121
123
  () => {
122
124
  if (!equal(value, internalValueRef.current)) {
123
- setError(undefined);
125
+ setValidationError(undefined);
124
126
  setInternalValue(value);
125
127
  internalValueRef.current = value;
126
128
  onValueUpdated();
@@ -136,32 +138,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
136
138
  validation
137
139
  .validate(value)
138
140
  .then(() => {
139
- setError(undefined);
141
+ setValidationError(undefined);
140
142
  internalValueRef.current = value;
141
143
  if (onValueChange) {
142
- onValueChange({
143
- value,
144
- propertyKey,
145
- setError,
146
- onValueUpdated,
147
- entity,
148
- fullPath: path,
149
- context
150
- });
144
+ try {
145
+ onValueChange({
146
+ value,
147
+ propertyKey,
148
+ setError,
149
+ onValueUpdated,
150
+ data: entity,
151
+ });
152
+ } catch (e: any) {
153
+ console.error("onValueChange error", e);
154
+ setError(e);
155
+ }
156
+
151
157
  }
152
158
  })
153
159
  .catch((e) => {
154
- setError(e);
160
+ setValidationError(e);
155
161
  });
156
162
  };
157
163
 
158
164
  useEffect(() => {
159
165
  validation
160
166
  .validate(internalValue)
161
- .then(() => setError(undefined))
162
- .catch((e) => {
163
- setError(e);
164
- });
167
+ .then(() => setValidationError(undefined))
168
+ .catch(setValidationError);
165
169
  }, [internalValue, validation, propertyKey, property, entity]);
166
170
 
167
171
  const updateValue = (newValue: any | null) => {
@@ -189,7 +193,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
189
193
  select({
190
194
  width,
191
195
  height,
192
- entity,
196
+ entityPath: entity.path,
197
+ entityId: entity.id,
193
198
  cellRect,
194
199
  propertyKey: propertyKey as Extract<keyof M, string>
195
200
  });
@@ -205,7 +210,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
205
210
  setPopupCell({
206
211
  width,
207
212
  height,
208
- entity,
213
+ entityPath: entity.path,
214
+ entityId: entity.id,
209
215
  cellRect,
210
216
  propertyKey: propertyKey as Extract<keyof M, string>
211
217
  });
@@ -237,7 +243,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
237
243
  height={getRowHeight(size)}
238
244
  propertyKey={propertyKey}
239
245
  property={property}
240
- // entity={entity}
241
246
  value={internalValue}
242
247
  size={getPreviewSizeFrom(size)}
243
248
  />
@@ -247,7 +252,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
247
252
  if (!customField && (!customPreview || selected)) {
248
253
  const isAStorageProperty = isStorageProperty(property);
249
254
  if (isAStorageProperty) {
250
- innerComponent = <TableStorageUpload error={error}
255
+ innerComponent = <TableStorageUpload error={validationError ?? error}
251
256
  disabled={disabled}
252
257
  focused={selected}
253
258
  selected={selected}
@@ -274,7 +279,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
274
279
  valueType={"number"}
275
280
  small={getPreviewSizeFrom(size) !== "medium"}
276
281
  enumValues={numberProperty.enumValues}
277
- error={error}
282
+ error={validationError ?? error}
278
283
  internalValue={internalValue as string | number}
279
284
  updateValue={updateValue}
280
285
  />;
@@ -282,7 +287,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
282
287
  } else {
283
288
  innerComponent = <VirtualTableNumberInput
284
289
  align={align}
285
- error={error}
290
+ error={validationError ?? error}
286
291
  focused={selected}
287
292
  disabled={disabled}
288
293
  value={internalValue as number}
@@ -300,14 +305,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
300
305
  valueType={"string"}
301
306
  small={getPreviewSizeFrom(size) !== "medium"}
302
307
  enumValues={stringProperty.enumValues}
303
- error={error}
308
+ error={validationError ?? error}
304
309
  internalValue={internalValue as string | number}
305
310
  updateValue={updateValue}
306
311
  />;
307
312
  fullHeight = true;
308
- } else if (!stringProperty.storage) {
313
+ } else if (stringProperty.markdown || !stringProperty.storage) {
309
314
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
310
- innerComponent = <VirtualTableInput error={error}
315
+ innerComponent = <VirtualTableInput error={validationError ?? error}
311
316
  disabled={disabled}
312
317
  multiline={multiline}
313
318
  focused={selected}
@@ -317,7 +322,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
317
322
  allowScroll = true;
318
323
  }
319
324
  } else if (property.dataType === "boolean") {
320
- innerComponent = <VirtualTableSwitch error={error}
325
+ innerComponent = <VirtualTableSwitch error={validationError ?? error}
321
326
  disabled={disabled}
322
327
  focused={selected}
323
328
  internalValue={internalValue as boolean}
@@ -325,7 +330,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
325
330
  />;
326
331
  } else if (property.dataType === "date") {
327
332
  innerComponent = <VirtualTableDateField name={propertyKey as string}
328
- error={error}
333
+ error={validationError ?? error}
329
334
  disabled={disabled}
330
335
  mode={property.mode}
331
336
  focused={selected}
@@ -346,6 +351,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
346
351
  path={property.path}
347
352
  multiselect={false}
348
353
  previewProperties={property.previewProperties}
354
+ includeId={property.includeId}
355
+ includeEntityLink={property.includeEntityLink}
349
356
  title={property.name}
350
357
  forceFilter={property.forceFilter}
351
358
  />;
@@ -368,7 +375,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
368
375
  small={getPreviewSizeFrom(size) !== "medium"}
369
376
  valueType={arrayProperty.of.dataType}
370
377
  enumValues={arrayProperty.of.enumValues}
371
- error={error}
378
+ error={validationError ?? error}
372
379
  internalValue={internalValue as string | number}
373
380
  updateValue={updateValue}
374
381
  />;
@@ -390,6 +397,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
390
397
  previewProperties={arrayProperty.of.previewProperties}
391
398
  title={arrayProperty.name}
392
399
  forceFilter={arrayProperty.of.forceFilter}
400
+ includeId={arrayProperty.of.includeId}
401
+ includeEntityLink={arrayProperty.of.includeEntityLink}
393
402
  />;
394
403
  }
395
404
  allowScroll = false;
@@ -401,11 +410,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
401
410
 
402
411
  if (!innerComponent) {
403
412
  allowScroll = false;
404
- showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
413
+ showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
405
414
  innerComponent = (
406
- <PropertyPreview width={width}
415
+ <PropertyPreview width={width}
407
416
  height={height}
408
- // entity={entity}
409
417
  propertyKey={propertyKey as string}
410
418
  value={internalValue}
411
419
  property={property}
@@ -426,7 +434,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
426
434
  removePadding={removePadding}
427
435
  fullHeight={fullHeight}
428
436
  saved={saved}
429
- error={error}
437
+ error={validationError ?? error}
430
438
  align={align}
431
439
  allowScroll={allowScroll}
432
440
  showExpandIcon={showExpandIcon}
@@ -21,7 +21,6 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
21
21
  properties: ResolvedProperties<M>;
22
22
  sortable?: boolean;
23
23
  forceFilter?: FilterValues<keyof M extends string ? keyof M : never>;
24
- disabledFilter?: boolean;
25
24
  AdditionalHeaderWidget?: React.ComponentType<{
26
25
  property: ResolvedProperty,
27
26
  propertyKey: string,
@@ -29,7 +28,8 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
29
28
  }>;
30
29
  }
31
30
 
32
- export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter, disabledFilter, AdditionalHeaderWidget }: PropertiesToColumnsParams<M>): VirtualTableColumn[] {
31
+ export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter, AdditionalHeaderWidget }: PropertiesToColumnsParams<M>): VirtualTableColumn[] {
32
+ const disabledFilter = Boolean(forceFilter);
33
33
  return Object.entries<ResolvedProperty>(properties)
34
34
  .flatMap(([key, property]) => getColumnKeysForProperty(property, key))
35
35
  .map(({
@@ -45,7 +45,7 @@ export function propertiesToColumns<M extends Record<string, any>>({ properties,
45
45
  align: getTableCellAlignment(property),
46
46
  icon: getIconForProperty(property, "small"),
47
47
  title: property.name ?? key as string,
48
- sortable: sortable && (forceFilter ? Object.keys(forceFilter).includes(key) : true),
48
+ sortable: sortable,
49
49
  filter: !disabledFilter && filterable,
50
50
  width: getTablePropertyColumnWidth(property),
51
51
  resizable: true,
@@ -1,14 +1,14 @@
1
- import React, { useCallback, useState } from "react";
1
+ import React, { useCallback } from "react";
2
2
  import equal from "react-fast-compare"
3
3
 
4
4
  import { ReferencePreview } from "../../../preview";
5
5
  import { CollectionSize, Entity, EntityCollection, EntityReference, FilterValues } from "../../../types";
6
6
 
7
7
  import { getPreviewSizeFrom } from "../../../preview/util";
8
- import { getReferenceFrom } from "../../../util";
8
+ import { getReferenceFrom, IconForView } from "../../../util";
9
9
  import { useCustomizationController, useNavigationController, useReferenceDialog } from "../../../hooks";
10
10
  import { ErrorView } from "../../ErrorView";
11
- import { Button } from "@firecms/ui";
11
+ import { cls, EditIcon } from "@firecms/ui";
12
12
  import { EntityPreviewContainer } from "../../EntityPreview";
13
13
 
14
14
  type TableReferenceFieldProps = {
@@ -22,6 +22,8 @@ type TableReferenceFieldProps = {
22
22
  title?: string;
23
23
  path: string;
24
24
  forceFilter?: FilterValues<string>;
25
+ includeId?: boolean;
26
+ includeEntityLink?: boolean;
25
27
  };
26
28
 
27
29
  export function TableReferenceField(props: TableReferenceFieldProps) {
@@ -29,7 +31,7 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
29
31
 
30
32
  const navigationController = useNavigationController();
31
33
  const { path } = props;
32
- const collection = navigationController.getCollection<EntityCollection>(path);
34
+ const collection = navigationController.getCollection(path);
33
35
  if (!collection) {
34
36
  if (customizationController.components?.missingReference) {
35
37
  return <customizationController.components.missingReference path={path}/>;
@@ -37,11 +39,11 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
37
39
  throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
38
40
  }
39
41
  }
40
- return <TableReferenceFieldSuccess {...props} collection={collection}/>;
42
+ return <TableReferenceFieldInternal {...props} collection={collection}/>;
41
43
  }
42
44
 
43
- export const TableReferenceFieldSuccess = React.memo(
44
- function TableReferenceFieldSuccess(props: TableReferenceFieldProps & {
45
+ export const TableReferenceFieldInternal = React.memo(
46
+ function TableReferenceFieldInternal(props: TableReferenceFieldProps & {
45
47
  collection: EntityCollection;
46
48
  }) {
47
49
  const {
@@ -55,7 +57,9 @@ export const TableReferenceFieldSuccess = React.memo(
55
57
  title,
56
58
  disabled,
57
59
  forceFilter,
58
- collection
60
+ collection,
61
+ includeId,
62
+ includeEntityLink
59
63
  } = props;
60
64
 
61
65
  const onSingleEntitySelected = useCallback((entity: Entity<any>) => {
@@ -83,11 +87,11 @@ export const TableReferenceFieldSuccess = React.memo(
83
87
  }
84
88
  );
85
89
 
86
- const handleOpen = useCallback(() => {
90
+ const handleOpen = () => {
87
91
  if (disabled)
88
92
  return;
89
93
  referenceDialogController.open();
90
- }, [disabled, referenceDialogController]);
94
+ };
91
95
 
92
96
  const valueNotSet = !internalValue || (Array.isArray(internalValue) && internalValue.length === 0);
93
97
 
@@ -100,6 +104,8 @@ export const TableReferenceFieldSuccess = React.memo(
100
104
  hover={!disabled}
101
105
  disabled={!path}
102
106
  previewProperties={previewProperties}
107
+ includeId={includeId}
108
+ includeEntityLink={includeEntityLink}
103
109
  />;
104
110
  else
105
111
  return <EntityPreviewContainer
@@ -117,11 +123,13 @@ export const TableReferenceFieldSuccess = React.memo(
117
123
  key={`preview_array_ref_${name}_${index}`}>
118
124
  <ReferencePreview
119
125
  onClick={disabled ? undefined : handleOpen}
120
- size={"tiny"}
126
+ size={"small"}
121
127
  reference={reference}
122
128
  hover={!disabled}
123
129
  disabled={!path}
124
130
  previewProperties={previewProperties}
131
+ includeId={includeId}
132
+ includeEntityLink={includeEntityLink}
125
133
  />
126
134
  </div>
127
135
  )
@@ -142,13 +150,19 @@ export const TableReferenceFieldSuccess = React.memo(
142
150
  {internalValue && multiselect && buildMultipleReferenceField()}
143
151
 
144
152
  {valueNotSet &&
145
- <Button
153
+ <EntityPreviewContainer
154
+ className={cls("px-3 py-2 text-sm font-medium flex items-center",
155
+ multiselect ? "gap-4" : "gap-6",
156
+ disabled
157
+ ? "text-surface-accent-500"
158
+ : "cursor-pointer text-text-secondary dark:text-text-secondary-dark hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800")}
146
159
  onClick={handleOpen}
147
- size={"small"}
148
- variant="outlined"
149
- color="primary">
150
- Edit {title}
151
- </Button>}
160
+ size={"medium"}>
161
+ <EditIcon
162
+ size={"small"}
163
+ className={"ml-2 mr-1 text-surface-300 dark:text-surface-600"}/>
164
+ {title}
165
+ </EntityPreviewContainer>}
152
166
 
153
167
  </div>
154
168
  );
@@ -9,7 +9,7 @@ import { useSnackbarController, useStorageSource } from "../../../hooks";
9
9
  import { getThumbnailMeasure } from "../../../preview/util";
10
10
  import { StorageFieldItem, useStorageUploadController } from "../../../util/useStorageUploadController";
11
11
  import { StorageUploadProgress } from "../../../form/components/StorageUploadProgress";
12
- import { cn, EditIcon, IconButton, Typography } from "@firecms/ui";
12
+ import { cls, EditIcon, IconButton, Typography } from "@firecms/ui";
13
13
  import { EntityTableCellActions } from "../internal/EntityTableCellActions";
14
14
 
15
15
  const dropZoneClasses = "max-w-full box-border relative pt-[2px] items-center border border-transparent outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
@@ -179,10 +179,18 @@ function StorageUpload({
179
179
  onDropRejected: (fileRejections, event) => {
180
180
  for (const fileRejection of fileRejections) {
181
181
  for (const error of fileRejection.errors) {
182
- snackbarContext.open({
183
- type: "error",
184
- message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
185
- });
182
+ console.error("Error uploading file: ", error);
183
+ if (error.code === "file-too-large") {
184
+ snackbarContext.open({
185
+ type: "error",
186
+ message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
187
+ });
188
+ } else if (error.code === "file-invalid-type") {
189
+ snackbarContext.open({
190
+ type: "error",
191
+ message: "Error uploading file: File type is not supported"
192
+ });
193
+ }
186
194
  }
187
195
  }
188
196
  }
@@ -207,7 +215,7 @@ function StorageUpload({
207
215
  onMouseEnter={() => setOnHover(true)}
208
216
  onMouseMove={() => setOnHover(true)}
209
217
  onMouseLeave={() => setOnHover(false)}
210
- className={cn(dropZoneClasses,
218
+ className={cls(dropZoneClasses,
211
219
  "relative w-full h-full flex",
212
220
  `justify-${hasValue ? "start" : "center"}`,
213
221
  isDragActive ? activeDropClasses : "",
@@ -251,7 +259,7 @@ function StorageUpload({
251
259
  className="flex-grow m-2 max-w-[200px]"
252
260
  onClick={open}>
253
261
  <Typography
254
- className="text-gray-400 dark:text-gray-600"
262
+ className="text-surface-400 dark:text-surface-600"
255
263
  variant={"body2"}
256
264
  align={"center"}>
257
265
  {helpText}
@@ -268,7 +276,7 @@ function StorageUpload({
268
276
  color={"inherit"}
269
277
  size={"small"}
270
278
  onClick={open}>
271
- <EditIcon size={"small"} className={"text-gray-500"}/>
279
+ <EditIcon size={"small"} className={"text-surface-500"}/>
272
280
  </IconButton>
273
281
  </EntityTableCellActions>
274
282
 
@@ -3,7 +3,7 @@ import React, { useEffect } from "react";
3
3
  import {
4
4
  Button,
5
5
  CircularProgress,
6
- cn,
6
+ cls,
7
7
  defaultBorderMixin,
8
8
  FilterListOffIcon,
9
9
  SearchBar,
@@ -16,20 +16,27 @@ import { useLargeLayout } from "../../../hooks";
16
16
 
17
17
  interface CollectionTableToolbarProps {
18
18
  size: CollectionSize;
19
- filterIsSet: boolean;
20
19
  loading: boolean;
21
- forceFilter?: boolean;
22
20
  actionsStart?: React.ReactNode;
23
21
  actions?: React.ReactNode;
24
22
  title?: React.ReactNode,
25
23
  onTextSearchClick?: () => void;
26
24
  onTextSearch?: (searchString?: string) => void;
27
25
  onSizeChanged: (size: CollectionSize) => void;
28
- clearFilter?: () => void;
29
26
  textSearchLoading?: boolean;
30
27
  }
31
28
 
32
- export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
29
+ export function CollectionTableToolbar({
30
+ actions,
31
+ actionsStart,
32
+ loading,
33
+ onSizeChanged,
34
+ onTextSearch,
35
+ onTextSearchClick,
36
+ size,
37
+ textSearchLoading,
38
+ title
39
+ }: CollectionTableToolbarProps) {
33
40
 
34
41
  const searchInputRef = React.useRef<HTMLInputElement>(null);
35
42
  const largeLayout = useLargeLayout();
@@ -37,30 +44,20 @@ export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
37
44
  const searchLoading = React.useRef<boolean>(false);
38
45
 
39
46
  useEffect(() => {
40
- if (searchInputRef.current && searchLoading.current && !props.textSearchLoading) {
47
+ if (searchInputRef.current && searchLoading.current && !textSearchLoading) {
41
48
  searchInputRef.current.focus();
42
49
  }
43
- searchLoading.current = props.textSearchLoading ?? false;
44
- }, [props.textSearchLoading]);
45
-
46
- const clearFilterButton = !props.forceFilter && props.filterIsSet && props.clearFilter &&
47
- <Button
48
- variant={"outlined"}
49
- className="h-fit-content"
50
- aria-label="filter clear"
51
- onClick={props.clearFilter}
52
- size={"small"}>
53
- <FilterListOffIcon/>
54
- Clear filter
55
- </Button>;
50
+ searchLoading.current = textSearchLoading ?? false;
51
+ }, [textSearchLoading]);
52
+
56
53
 
57
54
  const sizeSelect = (
58
55
  <Tooltip title={"Table row size"} side={"right"} sideOffset={4}>
59
56
  <Select
60
- value={props.size as string}
57
+ value={size as string}
61
58
  className="w-16 h-10"
62
- size={"small"}
63
- onValueChange={(v) => props.onSizeChanged(v as CollectionSize)}
59
+ size={"medium"}
60
+ onValueChange={(v) => onSizeChanged(v as CollectionSize)}
64
61
  renderValue={(v) => <div className={"font-medium"}>{v.toUpperCase()}</div>}
65
62
  >
66
63
  {["xs", "s", "m", "l", "xl"].map((size) => (
@@ -74,40 +71,38 @@ export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
74
71
 
75
72
  return (
76
73
  <div
77
- className={cn(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-2 md:px-4 bg-gray-50 dark:bg-gray-900 border-b flex flex-row justify-between items-center w-full")}>
74
+ className={cls(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-2 md:px-4 bg-surface-50 dark:bg-surface-900 border-b flex flex-row justify-between items-center w-full")}>
78
75
 
79
76
  <div className="flex items-center gap-2 md:mr-4 mr-2">
80
77
 
81
- {props.title && <div className={"hidden lg:block"}>
82
- {props.title}
78
+ {title && <div className={"hidden lg:block"}>
79
+ {title}
83
80
  </div>}
84
81
 
85
82
  {sizeSelect}
86
83
 
87
- {props.actionsStart}
88
-
89
- {clearFilterButton}
84
+ {actionsStart}
90
85
 
91
86
  </div>
92
87
 
93
88
  <div className="flex items-center gap-2">
94
89
 
95
90
  {largeLayout && <div className="w-[22px]">
96
- {props.loading &&
91
+ {loading &&
97
92
  <CircularProgress size={"small"}/>}
98
93
  </div>}
99
94
 
100
- {(props.onTextSearch || props.onTextSearchClick) &&
95
+ {(onTextSearch || onTextSearchClick) &&
101
96
  <SearchBar
102
97
  key={"search-bar"}
103
98
  inputRef={searchInputRef}
104
- loading={props.textSearchLoading}
105
- disabled={Boolean(props.onTextSearchClick)}
106
- onClick={props.onTextSearchClick}
107
- onTextSearch={props.onTextSearchClick ? undefined : props.onTextSearch}
99
+ loading={textSearchLoading}
100
+ disabled={Boolean(onTextSearchClick)}
101
+ onClick={onTextSearchClick}
102
+ onTextSearch={onTextSearchClick ? undefined : onTextSearch}
108
103
  expandable={true}/>}
109
104
 
110
- {props.actions}
105
+ {actions}
111
106
 
112
107
  </div>
113
108