@coveord/plasma-mantine 53.1.4 → 54.0.0

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 (354) hide show
  1. package/.eslintrc.js +1 -5
  2. package/.turbo/turbo-build.log +3 -3
  3. package/.turbo/turbo-test.log +36 -35
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/cjs/components/button/Button.d.ts +1 -2
  6. package/dist/cjs/components/button/Button.d.ts.map +1 -1
  7. package/dist/cjs/components/button/Button.js.map +1 -1
  8. package/dist/cjs/components/code-editor/CodeEditor.d.ts.map +1 -1
  9. package/dist/cjs/components/code-editor/CodeEditor.js +2 -4
  10. package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
  11. package/dist/cjs/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  12. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +10 -2
  13. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  14. package/dist/cjs/components/inline-confirm/InlineConfirm.js +2 -1
  15. package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
  16. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
  17. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
  18. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js +5 -5
  19. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
  20. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
  21. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
  22. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js +3 -3
  23. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
  24. package/dist/cjs/components/table/Table.d.ts +68 -55
  25. package/dist/cjs/components/table/Table.d.ts.map +1 -1
  26. package/dist/cjs/components/table/Table.js +129 -174
  27. package/dist/cjs/components/table/Table.js.map +1 -1
  28. package/dist/cjs/components/table/Table.module.css +8 -1
  29. package/dist/cjs/components/table/Table.types.d.ts +52 -147
  30. package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
  31. package/dist/cjs/components/table/TableContext.d.ts +15 -10
  32. package/dist/cjs/components/table/TableContext.d.ts.map +1 -1
  33. package/dist/cjs/components/table/TableContext.js +5 -20
  34. package/dist/cjs/components/table/TableContext.js.map +1 -1
  35. package/dist/cjs/components/table/index.d.ts +3 -3
  36. package/dist/cjs/components/table/index.d.ts.map +1 -1
  37. package/dist/cjs/components/table/index.js +5 -1
  38. package/dist/cjs/components/table/index.js.map +1 -1
  39. package/dist/cjs/components/table/layouts/TableLayoutControl.js +6 -6
  40. package/dist/cjs/components/table/layouts/TableLayoutControl.js.map +1 -1
  41. package/dist/cjs/components/table/layouts/TableLayouts.d.ts +1 -22
  42. package/dist/cjs/components/table/layouts/TableLayouts.d.ts.map +1 -1
  43. package/dist/cjs/components/table/layouts/TableLayouts.js.map +1 -1
  44. package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
  45. package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
  46. package/dist/cjs/components/table/layouts/row-layout/RowLayout.js.map +1 -1
  47. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
  48. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
  49. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js +17 -18
  50. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
  51. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
  52. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  53. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js +9 -8
  54. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  55. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
  56. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
  57. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js +3 -9
  58. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
  59. package/dist/cjs/components/table/table-actions/TableActionContext.d.ts +9 -0
  60. package/dist/cjs/components/table/table-actions/TableActionContext.d.ts.map +1 -0
  61. package/dist/cjs/components/table/table-actions/TableActionContext.js +24 -0
  62. package/dist/cjs/components/table/table-actions/TableActionContext.js.map +1 -0
  63. package/dist/cjs/components/table/table-actions/TableActionItem.d.ts +44 -0
  64. package/dist/cjs/components/table/table-actions/TableActionItem.d.ts.map +1 -0
  65. package/dist/cjs/components/table/table-actions/TableActionItem.js +59 -0
  66. package/dist/cjs/components/table/table-actions/TableActionItem.js.map +1 -0
  67. package/dist/cjs/components/table/table-actions/TableActionsList.d.ts +37 -0
  68. package/dist/cjs/components/table/table-actions/TableActionsList.d.ts.map +1 -0
  69. package/dist/cjs/components/table/table-actions/TableActionsList.js +217 -0
  70. package/dist/cjs/components/table/table-actions/TableActionsList.js.map +1 -0
  71. package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts +11 -0
  72. package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
  73. package/dist/cjs/components/table/table-actions/TableHeaderActions.js +59 -0
  74. package/dist/cjs/components/table/table-actions/TableHeaderActions.js.map +1 -0
  75. package/dist/cjs/components/table/table-actions/index.d.ts +3 -0
  76. package/dist/cjs/components/table/table-actions/index.d.ts.map +1 -0
  77. package/dist/cjs/components/table/table-actions/index.js +9 -0
  78. package/dist/cjs/components/table/table-actions/index.js.map +1 -0
  79. package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts +6 -0
  80. package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
  81. package/dist/cjs/components/table/table-column/TableActionsColumn.js +53 -0
  82. package/dist/cjs/components/table/table-column/TableActionsColumn.js.map +1 -0
  83. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
  84. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js +6 -2
  85. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  86. package/dist/cjs/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
  87. package/dist/cjs/components/table/table-column/TableSelectableColumn.js +4 -0
  88. package/dist/cjs/components/table/table-column/TableSelectableColumn.js.map +1 -1
  89. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
  90. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
  91. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js +24 -20
  92. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
  93. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
  94. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
  95. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js +7 -7
  96. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
  97. package/dist/cjs/components/table/table-filter/TableFilter.d.ts +1 -2
  98. package/dist/cjs/components/table/table-filter/TableFilter.d.ts.map +1 -1
  99. package/dist/cjs/components/table/table-filter/TableFilter.js +11 -16
  100. package/dist/cjs/components/table/table-filter/TableFilter.js.map +1 -1
  101. package/dist/cjs/components/table/table-header/TableHeader.d.ts +7 -2
  102. package/dist/cjs/components/table/table-header/TableHeader.d.ts.map +1 -1
  103. package/dist/cjs/components/table/table-header/TableHeader.js +15 -12
  104. package/dist/cjs/components/table/table-header/TableHeader.js.map +1 -1
  105. package/dist/cjs/components/table/table-header/Th.d.ts +1 -2
  106. package/dist/cjs/components/table/table-header/Th.d.ts.map +1 -1
  107. package/dist/cjs/components/table/table-header/Th.js +7 -3
  108. package/dist/cjs/components/table/table-header/Th.js.map +1 -1
  109. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
  110. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
  111. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js +6 -9
  112. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
  113. package/dist/cjs/components/table/table-no-data/TableNoData.d.ts +6 -0
  114. package/dist/cjs/components/table/table-no-data/TableNoData.d.ts.map +1 -0
  115. package/dist/cjs/components/table/{table-consumer/TableConsumer.js → table-no-data/TableNoData.js} +4 -4
  116. package/dist/cjs/components/table/table-no-data/TableNoData.js.map +1 -0
  117. package/dist/cjs/components/table/table-pagination/TablePagination.d.ts.map +1 -1
  118. package/dist/cjs/components/table/table-pagination/TablePagination.js +9 -11
  119. package/dist/cjs/components/table/table-pagination/TablePagination.js.map +1 -1
  120. package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts +0 -4
  121. package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
  122. package/dist/cjs/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  123. package/dist/cjs/components/table/table-per-page/TablePerPage.js +16 -16
  124. package/dist/cjs/components/table/table-per-page/TablePerPage.js.map +1 -1
  125. package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts +1 -2
  126. package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
  127. package/dist/cjs/components/table/table-predicate/TablePredicate.js +12 -14
  128. package/dist/cjs/components/table/table-predicate/TablePredicate.js.map +1 -1
  129. package/dist/cjs/components/table/use-table.d.ts +182 -0
  130. package/dist/cjs/components/table/use-table.d.ts.map +1 -0
  131. package/dist/cjs/components/table/use-table.js +145 -0
  132. package/dist/cjs/components/table/use-table.js.map +1 -0
  133. package/dist/cjs/index.d.ts +11 -1
  134. package/dist/cjs/index.d.ts.map +1 -1
  135. package/dist/cjs/index.js.map +1 -1
  136. package/dist/cjs/theme/Theme.d.ts.map +1 -1
  137. package/dist/cjs/theme/Theme.js +0 -1
  138. package/dist/cjs/theme/Theme.js.map +1 -1
  139. package/dist/esm/components/button/Button.d.ts +1 -2
  140. package/dist/esm/components/button/Button.d.ts.map +1 -1
  141. package/dist/esm/components/button/Button.js.map +1 -1
  142. package/dist/esm/components/code-editor/CodeEditor.d.ts.map +1 -1
  143. package/dist/esm/components/code-editor/CodeEditor.js +2 -4
  144. package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
  145. package/dist/esm/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  146. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +10 -2
  147. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  148. package/dist/esm/components/inline-confirm/InlineConfirm.js +1 -1
  149. package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
  150. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
  151. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
  152. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js +4 -4
  153. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
  154. package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
  155. package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
  156. package/dist/esm/components/inline-confirm/InlineConfirmTarget.js +2 -2
  157. package/dist/esm/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
  158. package/dist/esm/components/table/Table.d.ts +68 -55
  159. package/dist/esm/components/table/Table.d.ts.map +1 -1
  160. package/dist/esm/components/table/Table.js +122 -157
  161. package/dist/esm/components/table/Table.js.map +1 -1
  162. package/dist/esm/components/table/Table.module.css +8 -1
  163. package/dist/esm/components/table/Table.types.d.ts +52 -147
  164. package/dist/esm/components/table/Table.types.d.ts.map +1 -1
  165. package/dist/esm/components/table/Table.types.js.map +1 -1
  166. package/dist/esm/components/table/TableContext.d.ts +15 -10
  167. package/dist/esm/components/table/TableContext.d.ts.map +1 -1
  168. package/dist/esm/components/table/TableContext.js +1 -10
  169. package/dist/esm/components/table/TableContext.js.map +1 -1
  170. package/dist/esm/components/table/index.d.ts +3 -3
  171. package/dist/esm/components/table/index.d.ts.map +1 -1
  172. package/dist/esm/components/table/index.js +2 -1
  173. package/dist/esm/components/table/index.js.map +1 -1
  174. package/dist/esm/components/table/layouts/TableLayoutControl.js +4 -4
  175. package/dist/esm/components/table/layouts/TableLayoutControl.js.map +1 -1
  176. package/dist/esm/components/table/layouts/TableLayouts.d.ts +1 -22
  177. package/dist/esm/components/table/layouts/TableLayouts.d.ts.map +1 -1
  178. package/dist/esm/components/table/layouts/TableLayouts.js.map +1 -1
  179. package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
  180. package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
  181. package/dist/esm/components/table/layouts/row-layout/RowLayout.js.map +1 -1
  182. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
  183. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
  184. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js +13 -11
  185. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
  186. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
  187. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  188. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js +5 -5
  189. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  190. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
  191. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
  192. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js +2 -8
  193. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
  194. package/dist/esm/components/table/table-actions/TableActionContext.d.ts +9 -0
  195. package/dist/esm/components/table/table-actions/TableActionContext.d.ts.map +1 -0
  196. package/dist/esm/components/table/table-actions/TableActionContext.js +4 -0
  197. package/dist/esm/components/table/table-actions/TableActionContext.js.map +1 -0
  198. package/dist/esm/components/table/table-actions/TableActionItem.d.ts +44 -0
  199. package/dist/esm/components/table/table-actions/TableActionItem.d.ts.map +1 -0
  200. package/dist/esm/components/table/table-actions/TableActionItem.js +40 -0
  201. package/dist/esm/components/table/table-actions/TableActionItem.js.map +1 -0
  202. package/dist/esm/components/table/table-actions/TableActionsList.d.ts +37 -0
  203. package/dist/esm/components/table/table-actions/TableActionsList.d.ts.map +1 -0
  204. package/dist/esm/components/table/table-actions/TableActionsList.js +187 -0
  205. package/dist/esm/components/table/table-actions/TableActionsList.js.map +1 -0
  206. package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts +11 -0
  207. package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
  208. package/dist/esm/components/table/table-actions/TableHeaderActions.js +43 -0
  209. package/dist/esm/components/table/table-actions/TableHeaderActions.js.map +1 -0
  210. package/dist/esm/components/table/table-actions/index.d.ts +3 -0
  211. package/dist/esm/components/table/table-actions/index.d.ts.map +1 -0
  212. package/dist/esm/components/table/table-actions/index.js +4 -0
  213. package/dist/esm/components/table/table-actions/index.js.map +1 -0
  214. package/dist/esm/components/table/table-column/TableActionsColumn.d.ts +6 -0
  215. package/dist/esm/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
  216. package/dist/esm/components/table/table-column/TableActionsColumn.js +40 -0
  217. package/dist/esm/components/table/table-column/TableActionsColumn.js.map +1 -0
  218. package/dist/esm/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
  219. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +7 -3
  220. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  221. package/dist/esm/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
  222. package/dist/esm/components/table/table-column/TableSelectableColumn.js +4 -0
  223. package/dist/esm/components/table/table-column/TableSelectableColumn.js.map +1 -1
  224. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
  225. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
  226. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js +22 -20
  227. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
  228. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
  229. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
  230. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js +8 -8
  231. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
  232. package/dist/esm/components/table/table-filter/TableFilter.d.ts +1 -2
  233. package/dist/esm/components/table/table-filter/TableFilter.d.ts.map +1 -1
  234. package/dist/esm/components/table/table-filter/TableFilter.js +14 -18
  235. package/dist/esm/components/table/table-filter/TableFilter.js.map +1 -1
  236. package/dist/esm/components/table/table-header/TableHeader.d.ts +7 -2
  237. package/dist/esm/components/table/table-header/TableHeader.d.ts.map +1 -1
  238. package/dist/esm/components/table/table-header/TableHeader.js +15 -13
  239. package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
  240. package/dist/esm/components/table/table-header/Th.d.ts +1 -2
  241. package/dist/esm/components/table/table-header/Th.d.ts.map +1 -1
  242. package/dist/esm/components/table/table-header/Th.js +8 -4
  243. package/dist/esm/components/table/table-header/Th.js.map +1 -1
  244. package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
  245. package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
  246. package/dist/esm/components/table/table-last-updated/TableLastUpdated.js +6 -8
  247. package/dist/esm/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
  248. package/dist/esm/components/table/table-no-data/TableNoData.d.ts +6 -0
  249. package/dist/esm/components/table/table-no-data/TableNoData.d.ts.map +1 -0
  250. package/dist/esm/components/table/table-no-data/TableNoData.js +6 -0
  251. package/dist/esm/components/table/table-no-data/TableNoData.js.map +1 -0
  252. package/dist/esm/components/table/table-pagination/TablePagination.d.ts.map +1 -1
  253. package/dist/esm/components/table/table-pagination/TablePagination.js +10 -13
  254. package/dist/esm/components/table/table-pagination/TablePagination.js.map +1 -1
  255. package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts +0 -4
  256. package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
  257. package/dist/esm/components/table/table-pagination/TablePagination.types.js.map +1 -1
  258. package/dist/esm/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  259. package/dist/esm/components/table/table-per-page/TablePerPage.js +13 -12
  260. package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
  261. package/dist/esm/components/table/table-predicate/TablePredicate.d.ts +1 -2
  262. package/dist/esm/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
  263. package/dist/esm/components/table/table-predicate/TablePredicate.js +14 -18
  264. package/dist/esm/components/table/table-predicate/TablePredicate.js.map +1 -1
  265. package/dist/esm/components/table/use-table.d.ts +182 -0
  266. package/dist/esm/components/table/use-table.d.ts.map +1 -0
  267. package/dist/esm/components/table/use-table.js +122 -0
  268. package/dist/esm/components/table/use-table.js.map +1 -0
  269. package/dist/esm/index.d.ts +11 -1
  270. package/dist/esm/index.d.ts.map +1 -1
  271. package/dist/esm/index.js.map +1 -1
  272. package/dist/esm/theme/Theme.d.ts.map +1 -1
  273. package/dist/esm/theme/Theme.js +0 -1
  274. package/dist/esm/theme/Theme.js.map +1 -1
  275. package/package.json +36 -22
  276. package/src/__tests__/Utils.tsx +3 -1
  277. package/src/components/button/Button.tsx +3 -1
  278. package/src/components/code-editor/CodeEditor.tsx +1 -7
  279. package/src/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  280. package/src/components/inline-confirm/InlineConfirm.tsx +12 -4
  281. package/src/components/inline-confirm/InlineConfirmPrompt.tsx +6 -9
  282. package/src/components/inline-confirm/InlineConfirmTarget.tsx +9 -4
  283. package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +37 -12
  284. package/src/components/table/Table.module.css +8 -1
  285. package/src/components/table/Table.tsx +148 -170
  286. package/src/components/table/Table.types.ts +57 -160
  287. package/src/components/table/TableContext.tsx +17 -16
  288. package/src/components/table/__tests__/Table.spec.tsx +176 -200
  289. package/src/components/table/__tests__/TableActions.spec.tsx +142 -31
  290. package/src/components/table/__tests__/TableCollapsibleColumn.spec.tsx +88 -0
  291. package/src/components/table/__tests__/TableColumnsSelector.spec.tsx +160 -119
  292. package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +13 -17
  293. package/src/components/table/__tests__/TableFilter.spec.tsx +52 -96
  294. package/src/components/table/__tests__/TableLastUpdated.spec.tsx +18 -37
  295. package/src/components/table/__tests__/TablePagination.spec.tsx +84 -100
  296. package/src/components/table/__tests__/TablePerPage.spec.tsx +81 -104
  297. package/src/components/table/__tests__/TablePredicate.spec.tsx +26 -80
  298. package/src/components/table/__tests__/Th.spec.tsx +24 -19
  299. package/src/components/table/index.ts +3 -9
  300. package/src/components/table/layouts/TableLayoutControl.tsx +4 -4
  301. package/src/components/table/layouts/TableLayouts.tsx +0 -22
  302. package/src/components/table/layouts/__tests__/RowLayout.spec.tsx +210 -182
  303. package/src/components/table/layouts/row-layout/RowLayout.tsx +2 -2
  304. package/src/components/table/layouts/row-layout/RowLayoutBody.tsx +17 -17
  305. package/src/components/table/layouts/row-layout/RowLayoutHeader.tsx +18 -9
  306. package/src/components/table/layouts/row-layout/RowLayoutIcon.tsx +3 -8
  307. package/src/components/table/table-actions/TableActionContext.ts +9 -0
  308. package/src/components/table/table-actions/TableActionItem.tsx +80 -0
  309. package/src/components/table/table-actions/TableActionsList.tsx +209 -0
  310. package/src/components/table/table-actions/TableHeaderActions.tsx +56 -0
  311. package/src/components/table/table-actions/index.ts +2 -0
  312. package/src/components/table/table-column/TableActionsColumn.tsx +39 -0
  313. package/src/components/table/table-column/TableCollapsibleColumn.tsx +7 -3
  314. package/src/components/table/table-column/TableSelectableColumn.tsx +4 -0
  315. package/src/components/table/table-columns-selector/TableColumnsSelector.tsx +33 -28
  316. package/src/components/table/table-date-range-picker/TableDateRangePicker.tsx +9 -11
  317. package/src/components/table/table-filter/TableFilter.tsx +12 -18
  318. package/src/components/table/table-header/TableHeader.tsx +32 -15
  319. package/src/components/table/table-header/Th.tsx +8 -7
  320. package/src/components/table/table-last-updated/TableLastUpdated.tsx +7 -10
  321. package/src/components/table/table-no-data/TableNoData.tsx +7 -0
  322. package/src/components/table/table-pagination/TablePagination.tsx +8 -11
  323. package/src/components/table/table-pagination/TablePagination.types.ts +0 -4
  324. package/src/components/table/table-per-page/TablePerPage.tsx +8 -10
  325. package/src/components/table/table-predicate/TablePredicate.tsx +21 -17
  326. package/src/components/table/use-table.ts +323 -0
  327. package/src/index.ts +11 -1
  328. package/src/theme/Theme.tsx +0 -1
  329. package/dist/cjs/components/table/table-actions/TableActions.d.ts +0 -38
  330. package/dist/cjs/components/table/table-actions/TableActions.d.ts.map +0 -1
  331. package/dist/cjs/components/table/table-actions/TableActions.js +0 -47
  332. package/dist/cjs/components/table/table-actions/TableActions.js.map +0 -1
  333. package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts +0 -5
  334. package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
  335. package/dist/cjs/components/table/table-consumer/TableConsumer.js.map +0 -1
  336. package/dist/cjs/hooks/useRowSelection.d.ts +0 -10
  337. package/dist/cjs/hooks/useRowSelection.d.ts.map +0 -1
  338. package/dist/cjs/hooks/useRowSelection.js +0 -80
  339. package/dist/cjs/hooks/useRowSelection.js.map +0 -1
  340. package/dist/esm/components/table/table-actions/TableActions.d.ts +0 -38
  341. package/dist/esm/components/table/table-actions/TableActions.d.ts.map +0 -1
  342. package/dist/esm/components/table/table-actions/TableActions.js +0 -29
  343. package/dist/esm/components/table/table-actions/TableActions.js.map +0 -1
  344. package/dist/esm/components/table/table-consumer/TableConsumer.d.ts +0 -5
  345. package/dist/esm/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
  346. package/dist/esm/components/table/table-consumer/TableConsumer.js +0 -6
  347. package/dist/esm/components/table/table-consumer/TableConsumer.js.map +0 -1
  348. package/dist/esm/hooks/useRowSelection.d.ts +0 -10
  349. package/dist/esm/hooks/useRowSelection.d.ts.map +0 -1
  350. package/dist/esm/hooks/useRowSelection.js +0 -59
  351. package/dist/esm/hooks/useRowSelection.js.map +0 -1
  352. package/src/components/table/table-actions/TableActions.tsx +0 -67
  353. package/src/components/table/table-consumer/TableConsumer.tsx +0 -3
  354. package/src/hooks/useRowSelection.ts +0 -76
@@ -1,8 +1,9 @@
1
1
  import {Box} from '@mantine/core';
2
2
  import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
3
- import {render, screen, userEvent, waitFor} from '@test-utils';
3
+ import {render, screen, userEvent, waitFor, within} from '@test-utils';
4
4
  import {Table} from '../Table';
5
5
  import {TableColumnsSelector} from '../table-columns-selector/TableColumnsSelector';
6
+ import {useTable} from '../use-table';
6
7
 
7
8
  const mockData = [
8
9
  {
@@ -21,13 +22,6 @@ const mockData = [
21
22
  },
22
23
  ];
23
24
 
24
- const columnNames: Record<string, string> = {
25
- name: 'Name',
26
- age: 'Age',
27
- email: 'Email',
28
- phone: 'Phone',
29
- };
30
-
31
25
  type RowData = {
32
26
  name: string;
33
27
  age: number;
@@ -37,92 +31,107 @@ type RowData = {
37
31
  };
38
32
 
39
33
  const columnHelper = createColumnHelper<RowData>();
40
- const columns: Array<ColumnDef<RowData>> = [
41
- columnHelper.accessor('name', {enableSorting: false}),
42
- columnHelper.accessor('age', {enableSorting: false}),
43
- columnHelper.accessor('email', {enableSorting: false}),
44
- columnHelper.accessor('phone', {enableSorting: false}),
34
+ const baseColumns: Array<ColumnDef<RowData>> = [
35
+ columnHelper.accessor('name', {header: 'Name', enableSorting: false}),
36
+ columnHelper.accessor('age', {header: 'Age', enableSorting: false}),
37
+ columnHelper.accessor('email', {header: 'Email', enableSorting: false}),
38
+ columnHelper.accessor('phone', {header: 'Phone', enableSorting: false}),
45
39
  Table.CollapsibleColumn as ColumnDef<RowData>,
46
40
  ];
47
41
 
48
42
  describe('TableColumnsSelector', () => {
49
43
  it('render the edit button in the table header', () => {
50
- render(
51
- <Table data={mockData} columns={columns}>
52
- <Table.Header>
53
- <TableColumnsSelector columnNames={columnNames} />
54
- </Table.Header>
55
- </Table>,
56
- );
44
+ const Fixture = () => {
45
+ const store = useTable<RowData>();
46
+ return (
47
+ <Table store={store} data={mockData} columns={baseColumns}>
48
+ <Table.Header>
49
+ <TableColumnsSelector />
50
+ </Table.Header>
51
+ </Table>
52
+ );
53
+ };
54
+ render(<Fixture />);
57
55
 
58
56
  expect(screen.getByRole('button', {name: 'Edit columns'})).toBeVisible();
59
57
  expect(screen.queryByRole('button', {name: 'Edit columns (4)'})).not.toBeInTheDocument();
60
58
  });
61
59
 
62
60
  it('renders the custom label when defined', () => {
63
- render(
64
- <Table data={mockData} columns={columns}>
65
- <Table.Header>
66
- <TableColumnsSelector columnNames={columnNames} label="Custom label" />
67
- </Table.Header>
68
- </Table>,
69
- );
61
+ const Fixture = () => {
62
+ const store = useTable<RowData>();
63
+ return (
64
+ <Table store={store} data={mockData} columns={baseColumns}>
65
+ <Table.Header>
66
+ <TableColumnsSelector label="Custom label" />
67
+ </Table.Header>
68
+ </Table>
69
+ );
70
+ };
71
+ render(<Fixture />);
70
72
 
71
73
  expect(screen.getByRole('button', {name: 'Custom label'})).toBeVisible();
72
74
  });
73
75
 
74
76
  it('renders the count of visible columns if showVisibleCountLabel is true', () => {
75
- render(
76
- <Table data={mockData} columns={columns}>
77
- <Table.Header>
78
- <TableColumnsSelector columnNames={columnNames} showVisibleCountLabel />
79
- </Table.Header>
80
- </Table>,
81
- );
77
+ const Fixture = () => {
78
+ const store = useTable<RowData>();
79
+ return (
80
+ <Table store={store} data={mockData} columns={baseColumns}>
81
+ <Table.Header>
82
+ <TableColumnsSelector showVisibleCountLabel />
83
+ </Table.Header>
84
+ </Table>
85
+ );
86
+ };
87
+ render(<Fixture />);
82
88
 
83
89
  expect(screen.getByRole('button', {name: 'Edit columns (4)'})).toBeVisible();
84
90
  });
85
91
 
86
92
  it('renders all columns in the dropdown, except the collapsible and the multiselectRow by default', async () => {
87
93
  const user = userEvent.setup();
88
- render(
89
- <Table
90
- data={mockData}
91
- columns={columns}
92
- multiRowSelectionEnabled
93
- getExpandChildren={(datum) => <Box py="xs">{datum.body}</Box>}
94
- >
95
- <Table.Header>
96
- <TableColumnsSelector columnNames={columnNames} />
97
- </Table.Header>
98
- </Table>,
99
- );
94
+ const Fixture = () => {
95
+ const store = useTable<RowData>({enableMultiRowSelection: true});
96
+ return (
97
+ <Table
98
+ store={store}
99
+ data={mockData}
100
+ columns={baseColumns}
101
+ getRowExpandedContent={(datum) => <Box py="xs">{datum.body}</Box>}
102
+ >
103
+ <Table.Header>
104
+ <TableColumnsSelector />
105
+ </Table.Header>
106
+ </Table>
107
+ );
108
+ };
109
+ render(<Fixture />);
100
110
 
101
111
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
102
-
103
- // columns are rendered
104
- expect(screen.getAllByRole('button', {name: /arrowheaddown/i})).toHaveLength(2);
105
- expect(screen.getAllByRole('checkbox', {name: /select row/i})).toHaveLength(2);
106
-
107
- await waitFor(() => expect(screen.getByRole('checkbox', {name: 'Name'})).toBeVisible());
108
- await waitFor(() => expect(screen.getByRole('checkbox', {name: 'Age'})).toBeVisible());
109
- await waitFor(() => expect(screen.getByRole('checkbox', {name: 'Email'})).toBeVisible());
110
- await waitFor(() => expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeVisible());
111
-
112
- // columns are not in the dropdown
113
- expect(screen.queryByRole('checkbox', {name: /collapsible/i})).not.toBeInTheDocument();
114
- expect(screen.queryByRole('checkbox', {name: 'select'})).not.toBeInTheDocument();
112
+ const dropdown = screen.getByRole('dialog', {name: 'Edit columns'});
113
+ const columnsCheckboxes = within(dropdown).getAllByRole('checkbox');
114
+
115
+ expect(columnsCheckboxes).toHaveLength(4);
116
+ expect(columnsCheckboxes[0]).toHaveAccessibleName('Name');
117
+ expect(columnsCheckboxes[1]).toHaveAccessibleName('Age');
118
+ expect(columnsCheckboxes[2]).toHaveAccessibleName('Email');
119
+ expect(columnsCheckboxes[3]).toHaveAccessibleName('Phone');
115
120
  });
116
121
 
117
122
  it('renders all checkboxes checked by default', async () => {
118
123
  const user = userEvent.setup();
119
- render(
120
- <Table data={mockData} columns={columns}>
121
- <Table.Header>
122
- <TableColumnsSelector columnNames={columnNames} />
123
- </Table.Header>
124
- </Table>,
125
- );
124
+ const Fixture = () => {
125
+ const store = useTable<RowData>();
126
+ return (
127
+ <Table store={store} data={mockData} columns={baseColumns}>
128
+ <Table.Header>
129
+ <TableColumnsSelector />
130
+ </Table.Header>
131
+ </Table>
132
+ );
133
+ };
134
+ render(<Fixture />);
126
135
 
127
136
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
128
137
 
@@ -132,33 +141,54 @@ describe('TableColumnsSelector', () => {
132
141
  expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeChecked();
133
142
  });
134
143
 
135
- it('does not render the checkboxes for the columns that are in the nonHideableColumns prop', async () => {
144
+ it('renders a disabled checked checkbox for columns that are always visible', async () => {
145
+ const columns: Array<ColumnDef<RowData>> = [
146
+ columnHelper.accessor('name', {header: 'Name', enableSorting: false}),
147
+ columnHelper.accessor('age', {header: 'Age', enableSorting: false, enableHiding: false}),
148
+ columnHelper.accessor('email', {header: 'Email', enableSorting: false}),
149
+ columnHelper.accessor('phone', {header: 'Phone', enableSorting: false}),
150
+ ];
136
151
  const user = userEvent.setup();
137
- render(
138
- <Table data={mockData} columns={columns}>
139
- <Table.Header>
140
- <TableColumnsSelector columnNames={columnNames} nonHideableColumns={['name']} />
141
- </Table.Header>
142
- </Table>,
143
- );
152
+ const Fixture = () => {
153
+ const store = useTable<RowData>();
154
+ return (
155
+ <Table store={store} data={mockData} columns={columns}>
156
+ <Table.Header>
157
+ <TableColumnsSelector />
158
+ </Table.Header>
159
+ </Table>
160
+ );
161
+ };
162
+ render(<Fixture />);
144
163
 
145
164
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
146
165
 
147
- expect(screen.queryByRole('checkbox', {name: 'Name'})).not.toBeInTheDocument();
148
- expect(screen.getByRole('checkbox', {name: 'Age'})).toBeChecked();
166
+ expect(screen.queryByRole('checkbox', {name: 'Name'})).toBeChecked();
149
167
  expect(screen.getByRole('checkbox', {name: 'Email'})).toBeChecked();
150
168
  expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeChecked();
169
+
170
+ const ageColumn = screen.getByRole('checkbox', {name: 'Age'});
171
+ expect(ageColumn).toBeChecked();
172
+ expect(ageColumn).toBeDisabled();
173
+ await user.hover(ageColumn.parentElement);
174
+ await waitFor(() => {
175
+ expect(screen.getByRole('tooltip', {name: 'This column is always visible.'})).toBeVisible();
176
+ });
151
177
  });
152
178
 
153
179
  it('renders unchecked checkboxes for the columns that are not visible in the inital state of the table', async () => {
154
180
  const user = userEvent.setup();
155
- render(
156
- <Table data={mockData} columns={columns} initialState={{columnVisibility: {email: false}}}>
157
- <Table.Header>
158
- <TableColumnsSelector columnNames={columnNames} />
159
- </Table.Header>
160
- </Table>,
161
- );
181
+ const Fixture = () => {
182
+ const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
183
+ return (
184
+ <Table store={store} data={mockData} columns={baseColumns}>
185
+ <Table.Header>
186
+ <TableColumnsSelector />
187
+ </Table.Header>
188
+ </Table>
189
+ );
190
+ };
191
+ render(<Fixture />);
162
192
 
163
193
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
164
194
 
@@ -170,13 +200,17 @@ describe('TableColumnsSelector', () => {
170
200
 
171
201
  it('renders disabled checkboxes when the maxSelectableColumns is set and the maximum number of columns is checked', async () => {
172
202
  const user = userEvent.setup();
173
- render(
174
- <Table data={mockData} columns={columns} initialState={{columnVisibility: {email: false}}}>
175
- <Table.Header>
176
- <TableColumnsSelector columnNames={columnNames} maxSelectableColumns={3} />
177
- </Table.Header>
178
- </Table>,
179
- );
203
+ const Fixture = () => {
204
+ const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
205
+ return (
206
+ <Table store={store} data={mockData} columns={baseColumns}>
207
+ <Table.Header>
208
+ <TableColumnsSelector maxSelectableColumns={3} />
209
+ </Table.Header>
210
+ </Table>
211
+ );
212
+ };
213
+ render(<Fixture />);
180
214
 
181
215
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
182
216
 
@@ -201,17 +235,20 @@ describe('TableColumnsSelector', () => {
201
235
 
202
236
  it('renders a tooltip when the maxSelectableColumns is set and the maximum number of columns is checked and the user hover a disabled checkbox', async () => {
203
237
  const user = userEvent.setup();
204
- render(
205
- <Table data={mockData} columns={columns} initialState={{columnVisibility: {email: false}}}>
206
- <Table.Header>
207
- <TableColumnsSelector
208
- columnNames={columnNames}
209
- maxSelectableColumns={3}
210
- limitReachedTooltip="You can display up to 3 columns"
211
- />
212
- </Table.Header>
213
- </Table>,
214
- );
238
+ const Fixture = () => {
239
+ const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
240
+ return (
241
+ <Table store={store} data={mockData} columns={baseColumns}>
242
+ <Table.Header>
243
+ <TableColumnsSelector
244
+ maxSelectableColumns={3}
245
+ limitReachedTooltip="You can display up to 3 columns"
246
+ />
247
+ </Table.Header>
248
+ </Table>
249
+ );
250
+ };
251
+ render(<Fixture />);
215
252
 
216
253
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
217
254
 
@@ -225,13 +262,17 @@ describe('TableColumnsSelector', () => {
225
262
  describe('footer', () => {
226
263
  it('does not render the footer when maxSelectableColumns is not defined', async () => {
227
264
  const user = userEvent.setup();
228
- render(
229
- <Table data={mockData} columns={columns}>
230
- <Table.Header>
231
- <TableColumnsSelector columnNames={columnNames} />
232
- </Table.Header>
233
- </Table>,
234
- );
265
+ const Fixture = () => {
266
+ const store = useTable<RowData>();
267
+ return (
268
+ <Table store={store} data={mockData} columns={baseColumns}>
269
+ <Table.Header>
270
+ <TableColumnsSelector />
271
+ </Table.Header>
272
+ </Table>
273
+ );
274
+ };
275
+ render(<Fixture />);
235
276
 
236
277
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
237
278
 
@@ -240,17 +281,17 @@ describe('TableColumnsSelector', () => {
240
281
 
241
282
  it('renders the footer when maxSelectableColumns is defined and footer is defined', async () => {
242
283
  const user = userEvent.setup();
243
- render(
244
- <Table data={mockData} columns={columns}>
245
- <Table.Header>
246
- <TableColumnsSelector
247
- columnNames={columnNames}
248
- maxSelectableColumns={3}
249
- footer="You can display so many patate"
250
- />
251
- </Table.Header>
252
- </Table>,
253
- );
284
+ const Fixture = () => {
285
+ const store = useTable<RowData>();
286
+ return (
287
+ <Table store={store} data={mockData} columns={baseColumns}>
288
+ <Table.Header>
289
+ <TableColumnsSelector maxSelectableColumns={3} footer="You can display so many patate" />
290
+ </Table.Header>
291
+ </Table>
292
+ );
293
+ };
294
+ render(<Fixture />);
254
295
 
255
296
  await user.click(screen.getByRole('button', {name: 'Edit columns'}));
256
297
 
@@ -2,31 +2,27 @@ import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
2
2
  import {render, screen} from '@test-utils';
3
3
 
4
4
  import {Table} from '../Table';
5
+ import {useTable} from '../use-table';
5
6
 
6
7
  type RowData = {name: string};
7
8
 
8
9
  const columnHelper = createColumnHelper<RowData>();
9
10
  const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
10
- const basicTableWithDateRangePicker = (
11
- <Table
12
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
13
- columns={columns}
14
- initialState={{dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}}
15
- >
16
- <Table.Header>
17
- <Table.DateRangePicker />
18
- </Table.Header>
19
- </Table>
20
- );
21
11
 
22
12
  describe('Table.DateRangePicker', () => {
23
13
  it('displays the initial dates', async () => {
24
- render(basicTableWithDateRangePicker);
14
+ const Fixture = () => {
15
+ const store = useTable<RowData>({initialState: {dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}});
16
+ return (
17
+ <Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
18
+ <Table.Header>
19
+ <Table.DateRangePicker />
20
+ </Table.Header>
21
+ </Table>
22
+ );
23
+ };
24
+ render(<Fixture />);
25
25
 
26
- expect(
27
- screen.getByRole('button', {
28
- name: /jan 01, 2022 \- jan 07, 2022/i,
29
- }),
30
- ).toBeVisible();
26
+ expect(screen.getByRole('button', {name: /jan 01, 2022 \- jan 07, 2022/i})).toBeVisible();
31
27
  });
32
28
  });
@@ -1,9 +1,8 @@
1
1
  import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
2
2
  import {act, render, screen, userEvent, within} from '@test-utils';
3
3
 
4
- import {Button} from '@mantine/core';
5
4
  import {Table} from '../Table';
6
- import {useTable} from '../TableContext';
5
+ import {useTable} from '../use-table';
7
6
 
8
7
  type RowData = {name: string};
9
8
 
@@ -18,126 +17,83 @@ describe('Table.Filter', () => {
18
17
  vi.useRealTimers();
19
18
  });
20
19
  it('displays the placeholder', () => {
21
- const onChange = vi.fn();
22
- render(
23
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
24
- <Table.Header>
25
- <Table.Filter placeholder="hello fruits" />
26
- </Table.Header>
27
- </Table>,
28
- );
20
+ const Fixture = () => {
21
+ const store = useTable<RowData>();
22
+ return (
23
+ <Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
24
+ <Table.Header>
25
+ <Table.Filter placeholder="hello fruits" />
26
+ </Table.Header>
27
+ </Table>
28
+ );
29
+ };
30
+ render(<Fixture />);
29
31
 
30
32
  expect(screen.getByPlaceholderText('hello fruits')).toBeVisible();
31
33
  });
32
34
 
33
- it('calls onChange when typing something in the filter', async () => {
34
- const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
35
- const onChange = vi.fn();
36
- render(
37
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
38
- <Table.Header>
39
- <Table.Filter />
40
- </Table.Header>
41
- </Table>,
42
- );
43
-
44
- await user.type(screen.getByRole('textbox'), 'vegetable');
45
-
46
- act(() => {
47
- // 300 ms debounce on TableFilter input
48
- vi.advanceTimersByTime(300);
49
- });
50
- act(() => {
51
- // 500 ms debounce on Table onChange callback
52
- vi.advanceTimersByTime(500);
53
- });
54
-
55
- expect(onChange).toHaveBeenCalledWith(expect.objectContaining({globalFilter: 'vegetable'}));
56
- });
57
-
58
35
  it('goes back to the first page when changing the filter', async () => {
59
36
  const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
60
- const onChange = vi.fn();
61
- render(
62
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
63
- <Table.Header>
64
- <Table.Filter />
65
- </Table.Header>
66
- <Table.Footer>
67
- <Table.PerPage />
68
- <Table.Pagination totalPages={2} />
69
- </Table.Footer>
70
- </Table>,
71
- );
37
+ const Fixture = () => {
38
+ const store = useTable<RowData>({initialState: {pagination: {pageIndex: 1}, totalEntries: 52}});
39
+ return (
40
+ <Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
41
+ <Table.Header>
42
+ <Table.Filter />
43
+ </Table.Header>
44
+ <Table.Footer>
45
+ <Table.Pagination />
46
+ </Table.Footer>
47
+ </Table>
48
+ );
49
+ };
50
+ render(<Fixture />);
51
+
52
+ expect(screen.getByRole('button', {name: '1'})).toBeVisible();
53
+ expect(screen.getByRole('button', {name: '2', current: 'page'})).toBeVisible();
72
54
 
73
55
  await user.type(screen.getByRole('textbox'), 'veg');
74
56
  act(() => {
75
57
  // 300 ms debounce on TableFilter input
76
58
  vi.advanceTimersByTime(300);
77
59
  });
78
- act(() => {
79
- // 500 ms debounce on Table onChange callback
80
- vi.advanceTimersByTime(500);
81
- });
82
60
 
83
- expect(onChange).toHaveBeenCalledWith(
84
- expect.objectContaining({globalFilter: 'veg', pagination: {pageIndex: 0, pageSize: 50}}),
85
- );
61
+ expect(screen.getByRole('button', {name: '1', current: 'page'})).toBeVisible();
62
+ expect(screen.getByRole('button', {name: '2'})).toBeVisible();
86
63
  });
87
64
 
88
65
  it('clears the filter when clicking on the cross icon', async () => {
89
66
  const user = userEvent.setup({delay: null});
90
- render(
91
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} initialState={{globalFilter: 'foo'}}>
92
- <Table.Header>
93
- <Table.Filter placeholder="hello fruits" />
94
- </Table.Header>
95
- </Table>,
96
- );
97
- expect(screen.getByRole('textbox')).toHaveValue('foo');
98
- await user.click(screen.getByRole('button', {name: /cross/i}));
99
- expect(screen.getByRole('textbox')).toHaveValue('');
100
- });
101
-
102
- it('clear the filter if the global state filter is cleared', async () => {
103
- const user = userEvent.setup({delay: null});
104
-
105
67
  const Fixture = () => {
106
- const {clearFilters} = useTable();
107
- return <Button data-testid="clear-button" onClick={clearFilters} />;
68
+ const store = useTable<RowData>({initialState: {globalFilter: 'foo'}});
69
+ return (
70
+ <Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
71
+ <Table.Header>
72
+ <Table.Filter placeholder="hello fruits" />
73
+ </Table.Header>
74
+ </Table>
75
+ );
108
76
  };
109
-
110
- render(
111
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} initialState={{globalFilter: 'foo'}}>
112
- <Table.Header>
113
- <Table.Consumer>
114
- <Fixture />
115
- </Table.Consumer>
116
- <Table.Filter />
117
- </Table.Header>
118
- </Table>,
119
- );
77
+ render(<Fixture />);
120
78
  expect(screen.getByRole('textbox')).toHaveValue('foo');
121
- await user.click(screen.getByTestId('clear-button'));
79
+ await user.click(screen.getByRole('button', {name: /cross/i}));
122
80
  expect(screen.getByRole('textbox')).toHaveValue('');
123
81
  });
124
82
 
125
83
  describe('when multi row selection is enabled', () => {
126
84
  it('does not unselect rows that get filtered out', async () => {
127
85
  const user = userEvent.setup({delay: null});
128
- const onChange = vi.fn();
129
- render(
130
- <Table
131
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
132
- columns={columns}
133
- onChange={onChange}
134
- multiRowSelectionEnabled
135
- >
136
- <Table.Header>
137
- <Table.Filter />
138
- </Table.Header>
139
- </Table>,
140
- );
86
+ const Fixture = () => {
87
+ const store = useTable<RowData>({enableMultiRowSelection: true});
88
+ return (
89
+ <Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
90
+ <Table.Header>
91
+ <Table.Filter />
92
+ </Table.Header>
93
+ </Table>
94
+ );
95
+ };
96
+ render(<Fixture />);
141
97
 
142
98
  await user.click(
143
99
  within(screen.getByRole('row', {name: /fruit/i})).getByRole('checkbox', {name: /select row/i}),