@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
@@ -3,6 +3,7 @@ import {render, screen, userEvent} from '@test-utils';
3
3
  import {useState} from 'react';
4
4
 
5
5
  import {Table} from '../Table';
6
+ import {useTable} from '../use-table';
6
7
 
7
8
  type RowData = {name: string};
8
9
 
@@ -19,64 +20,44 @@ describe('Table.LastUpdated', () => {
19
20
  });
20
21
 
21
22
  it('displays the label and time', () => {
22
- const {rerender} = render(
23
- <Table data={[{name: 'fruit'}]} columns={columns}>
24
- <Table.LastUpdated />
25
- </Table>,
26
- );
23
+ const Fixture = () => {
24
+ const store = useTable<RowData>();
25
+ return (
26
+ <Table store={store} data={[{name: 'fruit'}]} columns={columns}>
27
+ <Table.LastUpdated />
28
+ </Table>
29
+ );
30
+ };
31
+ render(<Fixture />);
27
32
 
28
33
  expect(screen.getByText('Last update:')).toBeVisible();
29
34
  expect(screen.getByRole('timer')).toHaveTextContent('1:05:50 PM');
30
-
31
- rerender(
32
- <Table data={[{name: 'fruit'}]} columns={columns}>
33
- <Table.LastUpdated label="CUSTOM label:" />
34
- </Table>,
35
- );
36
-
37
- expect(screen.queryByText('Last update:')).not.toBeInTheDocument();
38
- expect(screen.getByText('CUSTOM label:')).toBeVisible();
39
- expect(screen.getByRole('timer')).toHaveTextContent('1:05:50 PM');
40
35
  });
41
36
 
42
- it('updates the time when a dependency changes', async () => {
43
- const user = userEvent.setup({delay: null});
44
-
45
- // Using a fixture to have a button that will trigger a change of a dependency
37
+ it('displays the label and time', () => {
46
38
  const Fixture = () => {
47
- const [isClicked, setIsClicked] = useState(false);
39
+ const store = useTable<RowData>();
48
40
  return (
49
- <>
50
- <button onClick={() => setIsClicked(true)}>Click me</button>
51
- <Table data={[{name: 'fruit'}]} columns={columns}>
52
- <Table.LastUpdated dependencies={[isClicked]} />
53
- </Table>
54
- </>
41
+ <Table store={store} data={[{name: 'fruit'}]} columns={columns}>
42
+ <Table.LastUpdated label="CUSTOM label:" />
43
+ </Table>
55
44
  );
56
45
  };
57
46
  render(<Fixture />);
58
47
 
59
- expect(screen.getByText('Last update:')).toBeVisible();
60
- expect(screen.getByRole('timer')).toHaveTextContent('1:05:50 PM');
61
-
62
- vi.setSystemTime(new Date(2022, 0, 15, 14, 11, 22));
63
-
64
- // the date changed but the dependency didn't change yet, so the timer is still the same
48
+ expect(screen.getByText('CUSTOM label:')).toBeVisible();
65
49
  expect(screen.getByRole('timer')).toHaveTextContent('1:05:50 PM');
66
-
67
- // When we click on the button the isClicked switch from false to true which triggers an update
68
- await user.click(screen.getByRole('button', {name: 'Click me'}));
69
- expect(screen.getByRole('timer')).toHaveTextContent('2:11:22 PM');
70
50
  });
71
51
 
72
52
  it('updates the time when the data changes', async () => {
73
53
  const user = userEvent.setup({delay: null});
74
54
  const Fixture = () => {
55
+ const store = useTable<RowData>();
75
56
  const [data, setData] = useState([{name: 'fruit'}]);
76
57
  return (
77
58
  <>
78
59
  <button onClick={() => setData([{name: 'vegetable'}])}>Click me</button>
79
- <Table data={data} columns={columns}>
60
+ <Table store={store} data={data} columns={columns}>
80
61
  <Table.LastUpdated />
81
62
  </Table>
82
63
  </>
@@ -1,9 +1,8 @@
1
1
  import {ColumnDef, createColumnHelper, getPaginationRowModel} from '@tanstack/table-core';
2
2
  import {render, screen, userEvent, waitFor} from '@test-utils';
3
- import {useState} from 'react';
4
3
 
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
 
@@ -19,14 +18,24 @@ describe('Table.Pagination', () => {
19
18
  }
20
19
  });
21
20
 
22
- it('displays the number of pages', () => {
23
- render(
24
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
25
- <Table.Footer>
26
- <Table.Pagination totalPages={3} />
27
- </Table.Footer>
28
- </Table>,
29
- );
21
+ it('calculates the number of pages based on the pageSize and the total number of entries', () => {
22
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
23
+ const Fixture = () => {
24
+ const store = useTable<RowData>({
25
+ initialState: {
26
+ pagination: {pageSize: 1},
27
+ totalEntries: 3,
28
+ },
29
+ });
30
+ return (
31
+ <Table store={store} data={data} columns={columns}>
32
+ <Table.Footer>
33
+ <Table.Pagination />
34
+ </Table.Footer>
35
+ </Table>
36
+ );
37
+ };
38
+ render(<Fixture />);
30
39
 
31
40
  const buttons = screen.getAllByRole('button');
32
41
  expect(buttons).toHaveLength(5);
@@ -37,50 +46,34 @@ describe('Table.Pagination', () => {
37
46
  expect(buttons[4]).toHaveAccessibleName('next page');
38
47
  });
39
48
 
40
- it('calls onChange when clicking on a page number', async () => {
49
+ it('changes the page when the pagination is client side', async () => {
41
50
  const user = userEvent.setup();
42
- const onChange = vi.fn();
43
- render(
44
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
45
- <Table.Footer>
46
- <Table.Pagination totalPages={5} />
47
- </Table.Footer>
48
- </Table>,
49
- );
50
-
51
- onChange.mockReset();
52
-
53
- await user.click(screen.queryByRole('button', {name: '2'}));
51
+ const data = [
52
+ {name: 'fruits'},
53
+ {name: 'vegetables'},
54
+ {name: 'grains'},
55
+ {name: 'protein foods'},
56
+ {name: 'dairy'},
57
+ ];
58
+ const Fixture = () => {
59
+ const store = useTable<RowData>({initialState: {pagination: {pageSize: 3}}});
54
60
 
55
- await waitFor(() => {
56
- expect(onChange).toHaveBeenCalledWith(
57
- expect.objectContaining({pagination: expect.objectContaining({pageIndex: 1})}),
61
+ return (
62
+ <Table
63
+ store={store}
64
+ data={data}
65
+ columns={columns}
66
+ options={{
67
+ getPaginationRowModel: getPaginationRowModel(),
68
+ }}
69
+ >
70
+ <Table.Footer>
71
+ <Table.Pagination />
72
+ </Table.Footer>
73
+ </Table>
58
74
  );
59
- });
60
- });
61
-
62
- it('changes the page when the pagination is client side', async () => {
63
- const user = userEvent.setup();
64
- render(
65
- <Table
66
- data={[
67
- {name: 'fruits'},
68
- {name: 'vegetables'},
69
- {name: 'grains'},
70
- {name: 'protein foods'},
71
- {name: 'dairy'},
72
- ]}
73
- columns={columns}
74
- initialState={{pagination: {pageSize: 3}}}
75
- options={{
76
- getPaginationRowModel: getPaginationRowModel(),
77
- }}
78
- >
79
- <Table.Footer>
80
- <Table.Pagination totalPages={null} />
81
- </Table.Footer>
82
- </Table>,
83
- );
75
+ };
76
+ render(<Fixture />);
84
77
 
85
78
  expect(screen.getByText('fruits')).toBeVisible();
86
79
  expect(screen.getByText('vegetables')).toBeVisible();
@@ -94,9 +87,11 @@ describe('Table.Pagination', () => {
94
87
  expect(buttons[1]).toHaveAccessibleName('1');
95
88
  expect(buttons[2]).toHaveAccessibleName('2');
96
89
  expect(buttons[3]).toHaveAccessibleName('next page');
90
+ expect(screen.getByRole('button', {name: '1', current: 'page'})).toBeVisible();
97
91
 
98
92
  await user.click(screen.getByRole('button', {name: 'next page'}));
99
93
 
94
+ expect(screen.getByRole('button', {name: '2', current: 'page'})).toBeVisible();
100
95
  expect(screen.queryByText('fruits')).not.toBeInTheDocument();
101
96
  expect(screen.queryByText('vegetables')).not.toBeInTheDocument();
102
97
  expect(screen.queryByText('grains')).not.toBeInTheDocument();
@@ -107,18 +102,21 @@ describe('Table.Pagination', () => {
107
102
  it('triggers the onChangePage Callback with the right parameters', async () => {
108
103
  const user = userEvent.setup();
109
104
  const onChangePage = vi.fn();
110
- render(
111
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
112
- <Table.Footer>
113
- <Table.PerPage />
114
- <Table.Pagination totalPages={5} onPageChange={onChangePage} />
115
- </Table.Footer>
116
- </Table>,
117
- );
105
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
106
+ const Fixture = () => {
107
+ const store = useTable<RowData>({initialState: {pagination: {pageSize: 1}}});
108
+ return (
109
+ <Table store={store} data={data} columns={columns}>
110
+ <Table.Footer>
111
+ <Table.Pagination onPageChange={onChangePage} />
112
+ </Table.Footer>
113
+ </Table>
114
+ );
115
+ };
116
+ render(<Fixture />);
118
117
 
119
118
  onChangePage.mockReset();
120
119
 
121
- await user.click(screen.getByRole('radio', {name: /100/i}));
122
120
  await user.click(screen.queryByRole('button', {name: '2'}));
123
121
 
124
122
  await waitFor(() => {
@@ -127,62 +125,48 @@ describe('Table.Pagination', () => {
127
125
  });
128
126
 
129
127
  it('renders nothing when there are no pages to show', () => {
130
- render(
131
- <Table data={[]} columns={columns} initialState={{globalFilter: 'filter'}}>
132
- <Table.Footer data-testid="table-footer">
133
- <Table.Pagination totalPages={0} />
134
- </Table.Footer>
135
- </Table>,
136
- );
137
- expect(screen.getByTestId('table-footer')).toBeEmptyDOMElement();
138
- });
139
-
140
- it('renders nothing if pages is null', () => {
141
- render(
142
- <Table data={[]} columns={columns} initialState={{globalFilter: 'filter'}}>
143
- <Table.Footer data-testid="table-footer">
144
- <Table.Pagination totalPages={null} />
145
- </Table.Footer>
146
- </Table>,
147
- );
148
- expect(screen.getByTestId('table-footer')).toBeEmptyDOMElement();
149
- });
150
-
151
- it('renders nothing if pages is undefined', () => {
152
- render(
153
- <Table data={[]} columns={columns} initialState={{globalFilter: 'filter'}}>
154
- <Table.Footer data-testid="table-footer">
155
- <Table.Pagination totalPages={undefined} />
156
- </Table.Footer>
157
- </Table>,
158
- );
128
+ const data: RowData[] = [];
129
+ const Fixture = () => {
130
+ const store = useTable<RowData>({initialState: {globalFilter: 'filter'}});
131
+ return (
132
+ <Table store={store} data={data} columns={columns}>
133
+ <Table.Footer data-testid="table-footer">
134
+ <Table.Pagination />
135
+ </Table.Footer>
136
+ </Table>
137
+ );
138
+ };
139
+ render(<Fixture />);
159
140
  expect(screen.getByTestId('table-footer')).toBeEmptyDOMElement();
160
141
  });
161
142
 
162
143
  it('changes page when the current page is greater than the total number of pages', async () => {
163
144
  const user = userEvent.setup();
164
145
  const onChangePage = vi.fn();
146
+ const data = [{name: 'grains'}];
165
147
  const Fixture = () => {
166
- const {state} = useTable();
167
- const [totalPages, setTotalPages] = useState(state.pagination.pageIndex + 1);
168
- const removeAPage = () => setTotalPages(totalPages - 1);
148
+ const store = useTable<RowData>({
149
+ initialState: {
150
+ pagination: {pageSize: 1, pageIndex: 2},
151
+ totalEntries: 3,
152
+ },
153
+ });
154
+ const removeAPage = () => store.setTotalEntries((prev) => prev - 1);
169
155
 
170
156
  return (
171
157
  <>
172
158
  <button data-testid="remove-page" onClick={removeAPage}>
173
159
  change total pages
174
160
  </button>
175
- <Table.Pagination totalPages={totalPages} onPageChange={onChangePage} />
161
+ <Table store={store} data={data} columns={columns}>
162
+ <Table.Footer>
163
+ <Table.Pagination onPageChange={onChangePage} />
164
+ </Table.Footer>
165
+ </Table>
176
166
  </>
177
167
  );
178
168
  };
179
- render(
180
- <Table data={[{name: 'grains'}]} columns={columns} initialState={{pagination: {pageSize: 1, pageIndex: 2}}}>
181
- <Table.Footer>
182
- <Fixture />
183
- </Table.Footer>
184
- </Table>,
185
- );
169
+ render(<Fixture />);
186
170
 
187
171
  expect(screen.getByRole('cell', {name: 'grains'})).toBeVisible();
188
172
  let buttons = screen.getAllByRole('button');
@@ -2,6 +2,7 @@ import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
2
2
  import {render, screen, userEvent, waitFor} 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
 
@@ -9,36 +10,36 @@ const columnHelper = createColumnHelper<RowData>();
9
10
  const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
10
11
 
11
12
  describe('Table.PerPage', () => {
12
- beforeEach(() => {
13
- vi.useFakeTimers();
14
- });
15
- afterEach(() => {
16
- vi.useRealTimers();
17
- });
18
13
  it('displays the label', () => {
19
- render(
20
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
21
- <Table.Footer>
22
- <Table.PerPage label="Per page" />
23
- </Table.Footer>
24
- </Table>,
25
- );
14
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
15
+ const Fixture = () => {
16
+ const store = useTable<RowData>();
17
+ return (
18
+ <Table store={store} data={data} columns={columns}>
19
+ <Table.Footer>
20
+ <Table.PerPage label="Per page" />
21
+ </Table.Footer>
22
+ </Table>
23
+ );
24
+ };
25
+ render(<Fixture />);
26
26
 
27
27
  expect(screen.getByText('Per page')).toBeVisible();
28
28
  });
29
29
 
30
30
  it('displays the values', () => {
31
- render(
32
- <Table
33
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
34
- columns={columns}
35
- initialState={{pagination: {pageSize: 2}}}
36
- >
37
- <Table.Footer>
38
- <Table.PerPage label="Per page" values={[2, 7, 12, 17]} />
39
- </Table.Footer>
40
- </Table>,
41
- );
31
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
32
+ const Fixture = () => {
33
+ const store = useTable<RowData>({initialState: {pagination: {pageSize: 2}}});
34
+ return (
35
+ <Table store={store} data={data} columns={columns}>
36
+ <Table.Footer>
37
+ <Table.PerPage label="Per page" values={[2, 7, 12, 17]} />
38
+ </Table.Footer>
39
+ </Table>
40
+ );
41
+ };
42
+ render(<Fixture />);
42
43
 
43
44
  const radios = screen.getAllByRole('radio');
44
45
  expect(radios).toHaveLength(4);
@@ -48,83 +49,54 @@ describe('Table.PerPage', () => {
48
49
  expect(radios[3]).toHaveAccessibleName('17');
49
50
  });
50
51
 
51
- it('calls onMount with the initial value', () => {
52
- const onMount = vi.fn();
53
- render(
54
- <Table
55
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
56
- columns={columns}
57
- onMount={onMount}
58
- initialState={{pagination: {pageSize: 100}}}
59
- >
60
- <Table.Footer>
61
- <Table.PerPage />
62
- </Table.Footer>
63
- </Table>,
64
- );
65
-
66
- expect(onMount).toHaveBeenCalledWith(
67
- expect.objectContaining({pagination: expect.objectContaining({pageSize: 100})}),
68
- );
69
- });
70
-
71
- it('calls onChange when changing the number of items per page', async () => {
72
- const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
73
- const onChange = vi.fn();
74
- render(
75
- <Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
76
- <Table.Footer>
77
- <Table.PerPage />
78
- </Table.Footer>
79
- </Table>,
80
- );
81
-
82
- await user.click(screen.queryByRole('radio', {name: '100'}));
83
- vi.advanceTimersByTime(500);
84
- expect(onChange).toHaveBeenCalledWith(
85
- expect.objectContaining({pagination: expect.objectContaining({pageSize: 100})}),
86
- );
87
- });
88
-
89
52
  it('resets page index when changing the number of items per page', async () => {
90
- const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
91
- const onChange = vi.fn();
92
- render(
93
- <Table
94
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
95
- columns={columns}
96
- onChange={onChange}
97
- initialState={{pagination: {pageIndex: 1, pageSize: 50}}}
98
- >
99
- <Table.Footer>
100
- <Table.Pagination totalPages={2} />
101
- <Table.PerPage />
102
- </Table.Footer>
103
- </Table>,
104
- );
105
-
106
- await user.click(screen.queryByRole('radio', {name: '100'}));
107
- vi.advanceTimersByTime(500);
108
- expect(onChange).toHaveBeenCalledWith(
109
- expect.objectContaining({pagination: expect.objectContaining({pageIndex: 0})}),
110
- );
53
+ const user = userEvent.setup();
54
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
55
+ const Fixture = () => {
56
+ const store = useTable<RowData>({
57
+ initialState: {
58
+ pagination: {pageIndex: 1, pageSize: 50},
59
+ totalEntries: 52,
60
+ },
61
+ });
62
+ return (
63
+ <Table store={store} data={data} columns={columns}>
64
+ <Table.Footer>
65
+ <Table.Pagination />
66
+ <Table.PerPage />
67
+ </Table.Footer>
68
+ </Table>
69
+ );
70
+ };
71
+ render(<Fixture />);
72
+
73
+ expect(screen.getByRole('button', {name: '2', current: 'page'})).toBeVisible();
74
+
75
+ await user.click(screen.getByRole('radio', {name: '100'}));
76
+ expect(screen.getByRole('button', {name: '1', current: 'page'})).toBeVisible();
111
77
  });
112
78
 
113
- it('triggers the onChangePage Callback with the right parameters', async () => {
114
- const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
79
+ it('triggers the onPerPageChange Callback with the right parameters', async () => {
80
+ const user = userEvent.setup();
81
+ const data = [{name: 'fruit'}, {name: 'vegetable'}];
115
82
  const onPerPageChange = vi.fn();
116
- render(
117
- <Table
118
- data={[{name: 'fruit'}, {name: 'vegetable'}]}
119
- columns={columns}
120
- initialState={{pagination: {pageIndex: 1, pageSize: 50}}}
121
- >
122
- <Table.Footer>
123
- <Table.Pagination totalPages={2} />
124
- <Table.PerPage onPerPageChange={onPerPageChange} />
125
- </Table.Footer>
126
- </Table>,
127
- );
83
+ const Fixture = () => {
84
+ const store = useTable<RowData>({
85
+ initialState: {
86
+ pagination: {pageIndex: 1, pageSize: 50},
87
+ totalEntries: 52,
88
+ },
89
+ });
90
+ return (
91
+ <Table store={store} data={data} columns={columns}>
92
+ <Table.Footer>
93
+ <Table.Pagination />
94
+ <Table.PerPage onPerPageChange={onPerPageChange} />
95
+ </Table.Footer>
96
+ </Table>
97
+ );
98
+ };
99
+ render(<Fixture />);
128
100
 
129
101
  onPerPageChange.mockReset();
130
102
 
@@ -136,13 +108,18 @@ describe('Table.PerPage', () => {
136
108
  });
137
109
 
138
110
  it('renders nothing when there are no pages to show', () => {
139
- render(
140
- <Table data={[]} columns={columns} initialState={{globalFilter: 'filter'}}>
141
- <Table.Footer data-testid="table-footer">
142
- <Table.PerPage />
143
- </Table.Footer>
144
- </Table>,
145
- );
111
+ const data: RowData[] = [];
112
+ const Fixture = () => {
113
+ const store = useTable<RowData>({initialState: {globalFilter: 'filter'}});
114
+ return (
115
+ <Table store={store} data={data} columns={columns}>
116
+ <Table.Footer data-testid="table-footer">
117
+ <Table.PerPage />
118
+ </Table.Footer>
119
+ </Table>
120
+ );
121
+ };
122
+ render(<Fixture />);
146
123
  expect(screen.getByTestId('table-footer')).toBeEmptyDOMElement();
147
124
  });
148
125
  });