@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,6 +1,5 @@
1
1
  import {CalendarSize16Px} from '@coveord/plasma-react-icons';
2
- import {BoxProps, Factory, Grid, InputBase, Popover, factory, useProps} from '@mantine/core';
3
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
2
+ import {BoxProps, CompoundStylesApiProps, Factory, Grid, InputBase, Popover, factory, useProps} from '@mantine/core';
4
3
  import dayjs from 'dayjs';
5
4
 
6
5
  import {useState} from 'react';
@@ -11,7 +10,7 @@ import {
11
10
  DateRangePickerValue,
12
11
  } from '../../date-range-picker';
13
12
  import {TableComponentsOrder} from '../Table';
14
- import {useTable, useTableStyles} from '../TableContext';
13
+ import {useTableContext} from '../TableContext';
15
14
 
16
15
  export type TableDateRangePickerStylesNames = 'dateRangeRoot';
17
16
 
@@ -45,17 +44,16 @@ const defaultProps: Partial<TableDateRangePickerProps> = {
45
44
  };
46
45
 
47
46
  export const TableDateRangePicker = factory<TableDateRangePickerFactory>((props, ref) => {
48
- const ctx = useTableStyles();
47
+ const {store, getStyles} = useTableContext();
49
48
  const {presets, rangeCalendarProps, classNames, className, styles, style, vars, ...others} = useProps(
50
49
  'PlasmaTableDateRangePicker',
51
50
  defaultProps,
52
51
  props,
53
52
  );
54
53
  const [opened, setOpened] = useState(false);
55
- const {form} = useTable();
56
54
 
57
55
  const onApply = (dates: DateRangePickerValue) => {
58
- form.setFieldValue('dateRange', dates);
56
+ store.setDateRange(dates);
59
57
  setOpened(false);
60
58
  };
61
59
  const onCancel = () => {
@@ -63,8 +61,8 @@ export const TableDateRangePicker = factory<TableDateRangePickerFactory>((props,
63
61
  };
64
62
 
65
63
  const formatDate = (date: Date) => dayjs(date).format('MMM DD, YYYY');
66
- const formattedRange = `${formatDate(form.values.dateRange[0])} - ${formatDate(form.values.dateRange[1])}`;
67
- const dateRangeInitialized = form.values.dateRange.every((date) => date instanceof Date);
64
+ const formattedRange = `${formatDate(store.state.dateRange[0])} - ${formatDate(store.state.dateRange[1])}`;
65
+ const dateRangeInitialized = store.state.dateRange.every((date) => date instanceof Date);
68
66
 
69
67
  const stylesApiProps = {classNames, styles};
70
68
 
@@ -73,10 +71,10 @@ export const TableDateRangePicker = factory<TableDateRangePickerFactory>((props,
73
71
  span="content"
74
72
  order={TableComponentsOrder.DateRangePicker}
75
73
  ref={ref}
76
- {...ctx.getStyles('dateRangeRoot', {className, style, ...stylesApiProps})}
74
+ {...getStyles('dateRangeRoot', {className, style, ...stylesApiProps})}
77
75
  {...others}
78
76
  >
79
- <Popover withinPortal opened={opened}>
77
+ <Popover withinPortal opened={opened} onChange={setOpened}>
80
78
  <Popover.Target>
81
79
  <InputBase
82
80
  component="button"
@@ -89,7 +87,7 @@ export const TableDateRangePicker = factory<TableDateRangePickerFactory>((props,
89
87
  </Popover.Target>
90
88
  <Popover.Dropdown p={0}>
91
89
  <DateRangePickerInlineCalendar
92
- initialRange={form.values.dateRange}
90
+ initialRange={store.state.dateRange}
93
91
  onApply={onApply}
94
92
  onCancel={onCancel}
95
93
  presets={presets}
@@ -1,11 +1,10 @@
1
1
  import {CrossSize16Px, FilterSize16Px} from '@coveord/plasma-react-icons';
2
- import {ActionIcon, BoxProps, factory, Factory, Grid, TextInput, useProps} from '@mantine/core';
3
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
2
+ import {ActionIcon, BoxProps, CompoundStylesApiProps, Factory, Grid, TextInput, factory, useProps} from '@mantine/core';
4
3
  import {useDebouncedValue, useDidUpdate} from '@mantine/hooks';
5
4
  import {ChangeEventHandler, MouseEventHandler, useEffect, useState} from 'react';
6
5
 
7
6
  import {TableComponentsOrder} from '../Table';
8
- import {useTable, useTableStyles} from '../TableContext';
7
+ import {useTableContext} from '../TableContext';
9
8
 
10
9
  export type TableFilterStylesNames = 'filterRoot' | 'filterWrapper' | 'filterEmpty';
11
10
 
@@ -30,24 +29,19 @@ const defaultProps: Partial<TableFilterProps> = {
30
29
  };
31
30
 
32
31
  export const TableFilter = factory<TableFilterFactory>((props, ref) => {
33
- const ctx = useTableStyles();
32
+ const {store, getStyles} = useTableContext();
34
33
  const {placeholder, classNames, className, styles, style, vars, ...others} = useProps(
35
34
  'PlasmaTableFilter',
36
35
  defaultProps,
37
36
  props,
38
37
  );
39
- const {state, setState} = useTable();
40
- const [filter, setFilter] = useState(state.globalFilter);
38
+ const [filter, setFilter] = useState(store.state.globalFilter);
41
39
  const [debounced, cancel] = useDebouncedValue(filter, 300);
42
40
 
43
41
  useDidUpdate(() => {
44
- setState((prevState) => ({
45
- ...prevState,
46
- pagination: prevState.pagination
47
- ? {pageIndex: 0, pageSize: prevState.pagination.pageSize}
48
- : prevState.pagination,
49
- globalFilter: debounced,
50
- }));
42
+ store.setGlobalFilter(debounced);
43
+ store.setPagination({pageIndex: 0, pageSize: store.state.pagination.pageSize});
44
+
51
45
  return cancel;
52
46
  }, [debounced]);
53
47
 
@@ -61,8 +55,8 @@ export const TableFilter = factory<TableFilterFactory>((props, ref) => {
61
55
  };
62
56
 
63
57
  useEffect(() => {
64
- setFilter(state.globalFilter);
65
- }, [state.globalFilter]);
58
+ setFilter(store.state.globalFilter);
59
+ }, [store.state.globalFilter]);
66
60
 
67
61
  const stylesApiProps = {classNames, styles};
68
62
 
@@ -71,11 +65,11 @@ export const TableFilter = factory<TableFilterFactory>((props, ref) => {
71
65
  span="content"
72
66
  order={TableComponentsOrder.Filter}
73
67
  ref={ref}
74
- {...ctx.getStyles('filterRoot', {className, style, ...stylesApiProps})}
68
+ {...getStyles('filterRoot', {className, style, ...stylesApiProps})}
75
69
  {...others}
76
70
  >
77
71
  <TextInput
78
- {...ctx.getStyles('filterWrapper', stylesApiProps)}
72
+ {...getStyles('filterWrapper', stylesApiProps)}
79
73
  placeholder={placeholder}
80
74
  autoComplete="off"
81
75
  rightSection={
@@ -84,7 +78,7 @@ export const TableFilter = factory<TableFilterFactory>((props, ref) => {
84
78
  <CrossSize16Px height={16} />
85
79
  </ActionIcon>
86
80
  ) : (
87
- <FilterSize16Px height={16} {...ctx.getStyles('filterEmpty', stylesApiProps)} />
81
+ <FilterSize16Px height={16} {...getStyles('filterEmpty', stylesApiProps)} />
88
82
  )
89
83
  }
90
84
  value={filter}
@@ -1,12 +1,12 @@
1
1
  import {CrossSize16Px} from '@coveord/plasma-react-icons';
2
- import {Box, BoxProps, factory, Factory, Grid, Tooltip, useProps} from '@mantine/core';
3
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
2
+ import {Box, BoxProps, CompoundStylesApiProps, factory, Factory, Grid, Tooltip, useProps} from '@mantine/core';
4
3
  import {ReactNode} from 'react';
5
4
 
6
5
  import {Button} from '../../button';
7
6
  import {TableLayoutControl} from '../layouts/TableLayoutControl';
8
7
  import {TableComponentsOrder} from '../Table';
9
- import {useTable, useTableStyles} from '../TableContext';
8
+ import {TableHeaderActions} from '../table-actions';
9
+ import {useTableContext} from '../TableContext';
10
10
 
11
11
  export type TableHeaderStylesNames = 'headerRoot' | 'headerGrid' | 'headerGridInner' | 'headerCol';
12
12
 
@@ -17,6 +17,12 @@ export interface TableHeaderProps
17
17
  children?: ReactNode;
18
18
  unselectAllLabel?: string;
19
19
  selectedCountLabel?: (count: number) => string;
20
+ /**
21
+ * Whether to show actions when rows are selected
22
+ *
23
+ * default true
24
+ */
25
+ showActions?: boolean;
20
26
  }
21
27
 
22
28
  export type TableHeaderFactory = Factory<{
@@ -29,38 +35,48 @@ export type TableHeaderFactory = Factory<{
29
35
  const defaultProps: Partial<TableHeaderProps> = {
30
36
  unselectAllLabel: 'Unselect all',
31
37
  selectedCountLabel: (count) => `${count} selected`,
38
+ showActions: true,
32
39
  };
33
40
 
34
41
  export const TableHeader = factory<TableHeaderFactory>((props, ref) => {
35
- const ctx = useTableStyles();
36
- const {unselectAllLabel, selectedCountLabel, children, classNames, className, styles, style, vars, ...others} =
37
- useProps('PlasmaTableHeader', defaultProps, props);
38
- const {getSelectedRows, multiRowSelectionEnabled, clearSelection, disableRowSelection} = useTable();
39
- const selectedRows = getSelectedRows();
42
+ const {store, getStyles} = useTableContext();
43
+ const {
44
+ showActions,
45
+ unselectAllLabel,
46
+ selectedCountLabel,
47
+ children,
48
+ classNames,
49
+ className,
50
+ styles,
51
+ style,
52
+ vars: _vars,
53
+ ...others
54
+ } = useProps('PlasmaTableHeader', defaultProps, props);
55
+ const selectedRows = store.getSelectedRows();
40
56
 
41
57
  const stylesApiProps = {classNames, styles};
42
- const innerStyles = ctx.getStyles('headerGridInner', stylesApiProps);
43
- const gridStyles = ctx.getStyles('headerGrid', stylesApiProps);
58
+ const innerStyles = getStyles('headerGridInner', stylesApiProps);
59
+ const gridStyles = getStyles('headerGrid', stylesApiProps);
44
60
 
45
61
  return (
46
- <Box ref={ref} {...ctx.getStyles('headerRoot', {className, style, ...stylesApiProps})} {...others}>
62
+ <Box ref={ref} {...getStyles('headerRoot', {className, style, ...stylesApiProps})} {...others}>
47
63
  <Grid
48
64
  justify="flex-start"
49
65
  align="center"
50
66
  classNames={{inner: innerStyles.className, root: gridStyles.className}}
51
67
  styles={{inner: innerStyles.style, root: gridStyles.style}}
52
68
  >
53
- {multiRowSelectionEnabled && selectedRows.length > 0 ? (
69
+ {store.multiRowSelectionEnabled && selectedRows.length > 0 ? (
54
70
  <Grid.Col
55
71
  span="auto"
56
- {...ctx.getStyles('headerCol', stylesApiProps)}
72
+ {...getStyles('headerCol', stylesApiProps)}
57
73
  order={TableComponentsOrder.MultiSelectInfo}
58
74
  >
59
75
  <Tooltip label={unselectAllLabel}>
60
76
  <Button
61
- onClick={clearSelection}
77
+ onClick={store.clearRowSelection}
62
78
  variant="subtle"
63
- disabled={disableRowSelection}
79
+ disabled={!store.rowSelectionEnabled}
64
80
  leftSection={<CrossSize16Px height={16} />}
65
81
  >
66
82
  {selectedCountLabel(selectedRows.length)}
@@ -69,6 +85,7 @@ export const TableHeader = factory<TableHeaderFactory>((props, ref) => {
69
85
  </Grid.Col>
70
86
  ) : null}
71
87
  {children}
88
+ {showActions ? <TableHeaderActions /> : null}
72
89
  <TableLayoutControl />
73
90
  </Grid>
74
91
  </Box>
@@ -1,10 +1,9 @@
1
1
  import {ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px} from '@coveord/plasma-react-icons';
2
- import {BoxProps, Factory, Group, UnstyledButton, useProps} from '@mantine/core';
3
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
4
- import {defaultColumnSizing, flexRender, Header} from '@tanstack/react-table';
2
+ import {BoxProps, CompoundStylesApiProps, Factory, Group, UnstyledButton, useProps} from '@mantine/core';
3
+ import {Header, defaultColumnSizing, flexRender} from '@tanstack/react-table';
5
4
  import {AriaAttributes, ComponentType, ForwardedRef, SVGProps} from 'react';
6
5
  import {CustomComponentThemeExtend, identity} from '../../../utils';
7
- import {useTableStyles} from '../TableContext';
6
+ import {useTableContext} from '../TableContext';
8
7
 
9
8
  export type TableThStylesNames = 'th';
10
9
 
@@ -39,7 +38,7 @@ const defaultProps: Partial<ThProps> = {
39
38
  };
40
39
 
41
40
  export const Th = <T,>(props: ThProps<T> & {ref?: ForwardedRef<HTMLTableCellElement>}) => {
42
- const ctx = useTableStyles();
41
+ const {getStyles} = useTableContext();
43
42
  const {header, sortingIcons, classNames, className, styles, style, vars, ...others} = useProps(
44
43
  'PlasmaTableTh',
45
44
  defaultProps as Partial<ThProps<T>>,
@@ -53,7 +52,7 @@ export const Th = <T,>(props: ThProps<T> & {ref?: ForwardedRef<HTMLTableCellElem
53
52
  maxSize: header.column.columnDef.maxSize,
54
53
  };
55
54
 
56
- const thStyles = ctx.getStyles('th', {classNames, className, styles, style});
55
+ const thStyles = getStyles('th', {classNames, className, styles, style});
57
56
 
58
57
  if (header.isPlaceholder) {
59
58
  return null;
@@ -71,7 +70,9 @@ export const Th = <T,>(props: ThProps<T> & {ref?: ForwardedRef<HTMLTableCellElem
71
70
  }}
72
71
  {...others}
73
72
  >
74
- {flexRender(header.column.columnDef.header, header.getContext())}
73
+ <Group wrap="nowrap" gap="xs">
74
+ {flexRender(header.column.columnDef.header, header.getContext())}
75
+ </Group>
75
76
  </th>
76
77
  );
77
78
  }
@@ -1,9 +1,8 @@
1
- import {BoxProps, factory, Factory, Group, Text, useProps} from '@mantine/core';
2
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
1
+ import {BoxProps, CompoundStylesApiProps, factory, Factory, Group, Text, useProps} from '@mantine/core';
3
2
  import {useDidUpdate} from '@mantine/hooks';
4
3
  import dayjs from 'dayjs';
5
4
  import {useState} from 'react';
6
- import {useTable, useTableStyles} from '../TableContext';
5
+ import {useTableContext} from '../TableContext';
7
6
 
8
7
  export type TableLastUpdatedStylesNames = 'lastUpdatedRoot' | 'lastUpdatedLabel';
9
8
 
@@ -14,7 +13,6 @@ export interface TableLastUpdatedProps extends BoxProps, CompoundStylesApiProps<
14
13
  * @default "Last update:"
15
14
  */
16
15
  label?: string;
17
- dependencies?: never;
18
16
  }
19
17
  export type TableLastUpdatedFactory = Factory<{
20
18
  props: TableLastUpdatedProps;
@@ -28,18 +26,17 @@ const defaultProps: Partial<TableLastUpdatedProps> = {
28
26
  };
29
27
 
30
28
  export const TableLastUpdated = factory<TableLastUpdatedFactory>((props, ref) => {
31
- const ctx = useTableStyles();
32
- const {label, dependencies, classNames, className, styles, style, vars, ...others} = useProps(
29
+ const {table, getStyles} = useTableContext();
30
+ const {label, classNames, className, styles, style, vars, ...others} = useProps(
33
31
  'PlasmaTableLastUpdated',
34
32
  defaultProps,
35
33
  props,
36
34
  );
37
- const {state} = useTable();
38
35
  const [time, setTime] = useState(new Date());
39
36
 
40
37
  useDidUpdate(() => {
41
38
  setTime(new Date());
42
- }, [state, ...dependencies]);
39
+ }, [table.options.data]);
43
40
 
44
41
  const stylesApiProps = {classNames, styles};
45
42
 
@@ -48,10 +45,10 @@ export const TableLastUpdated = factory<TableLastUpdatedFactory>((props, ref) =>
48
45
  px="xl"
49
46
  justify="right"
50
47
  ref={ref}
51
- {...ctx.getStyles('lastUpdatedRoot', {className, style, ...stylesApiProps})}
48
+ {...getStyles('lastUpdatedRoot', {className, style, ...stylesApiProps})}
52
49
  {...others}
53
50
  >
54
- <Text size="xs" {...ctx.getStyles('lastUpdatedLabel', {className, style, ...stylesApiProps})}>
51
+ <Text size="xs" {...getStyles('lastUpdatedLabel', {className, style, ...stylesApiProps})}>
55
52
  {label}
56
53
  <span role="timer">{dayjs(time).format('h:mm:ss A')}</span>
57
54
  </Text>
@@ -0,0 +1,7 @@
1
+ import {FunctionComponent, ReactNode} from 'react';
2
+
3
+ export interface TableNoDataProps {
4
+ children: ReactNode;
5
+ }
6
+
7
+ export const TableNoData: FunctionComponent<TableNoDataProps> = ({children}) => <>{children}</>;
@@ -2,32 +2,29 @@ import {Pagination} from '@mantine/core';
2
2
  import {useDidUpdate} from '@mantine/hooks';
3
3
  import {FunctionComponent} from 'react';
4
4
 
5
- import {useTable} from '../TableContext';
6
5
  import {TablePaginationProps} from './TablePagination.types';
6
+ import {useTableContext} from '../TableContext';
7
7
 
8
- export const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages, onPageChange}) => {
9
- const {state, setState, containerRef, getPageCount} = useTable();
8
+ export const TablePagination: FunctionComponent<TablePaginationProps> = ({onPageChange}) => {
9
+ const {store, table, containerRef} = useTableContext();
10
10
 
11
11
  const updatePage = (newPage: number) => {
12
12
  onPageChange?.(newPage - 1);
13
- setState((prevState) => ({
14
- ...prevState,
15
- pagination: {...prevState.pagination, pageIndex: newPage - 1},
16
- }));
13
+ store.setPagination((prev) => ({...prev, pageIndex: newPage - 1}));
17
14
  containerRef.current.scrollIntoView({behavior: 'smooth'});
18
15
  };
19
16
 
20
- const total = totalPages == null ? getPageCount() : totalPages;
17
+ const total = table.getPageCount();
21
18
 
22
19
  useDidUpdate(() => {
23
- if (state.pagination.pageIndex + 1 > total && total > 0) {
20
+ if (store.state.pagination.pageIndex + 1 > total && total > 0) {
24
21
  updatePage(total);
25
22
  }
26
- }, [state.pagination.pageIndex, total]);
23
+ }, [store.state.pagination.pageIndex, total]);
27
24
 
28
25
  return (
29
26
  <Pagination
30
- value={state.pagination.pageIndex + 1}
27
+ value={store.state.pagination.pageIndex + 1}
31
28
  onChange={updatePage}
32
29
  total={total}
33
30
  boundaries={0}
@@ -1,8 +1,4 @@
1
1
  export interface TablePaginationProps {
2
- /**
3
- * The total number of page. Use null only if your table is paginated client side
4
- */
5
- totalPages: number | null;
6
2
  /**
7
3
  * The callback if the current page is changed.
8
4
  *
@@ -1,7 +1,7 @@
1
1
  import {Group, SegmentedControl, Text} from '@mantine/core';
2
- import {FunctionComponent} from 'react';
2
+ import {FunctionComponent, useMemo} from 'react';
3
3
 
4
- import {useTable} from '../TableContext';
4
+ import {useTableContext} from '../TableContext';
5
5
  import {TablePerPageProps} from './TablePerPage.types';
6
6
 
7
7
  export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({
@@ -9,23 +9,21 @@ export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE:
9
9
  values = [25, 50, 100],
10
10
  onPerPageChange,
11
11
  }) => {
12
- const {state, setState, getPageCount} = useTable();
12
+ const {store, table} = useTableContext();
13
+ const choices = useMemo(() => values.map((value) => value.toString()), [values]);
13
14
 
14
15
  const updatePerPage = (newPerPage: string) => {
15
16
  onPerPageChange?.(Number(newPerPage));
16
- setState((prevState) => ({
17
- ...prevState,
18
- pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},
19
- }));
17
+ store.setPagination({pageIndex: 0, pageSize: parseInt(newPerPage, 10)});
20
18
  };
21
19
 
22
- return getPageCount() > 0 ? (
20
+ return table.getPageCount() > 0 ? (
23
21
  <Group gap="sm">
24
22
  <Text fw={500}>{label}</Text>
25
23
  <SegmentedControl
26
- value={state.pagination.pageSize.toString() ?? values?.[1].toString()}
24
+ value={store.state.pagination.pageSize.toString() ?? choices[1] ?? choices[0]}
27
25
  onChange={updatePerPage}
28
- data={values.map((value) => value.toString())}
26
+ data={choices}
29
27
  size="sm"
30
28
  />
31
29
  </Group>
@@ -1,9 +1,19 @@
1
- import {BoxProps, ComboboxData, factory, Factory, Grid, Group, Select, Text, useProps} from '@mantine/core';
2
- import {CompoundStylesApiProps} from '@mantine/core/lib/core/styles-api/styles-api.types';
1
+ import {
2
+ BoxProps,
3
+ ComboboxData,
4
+ CompoundStylesApiProps,
5
+ factory,
6
+ Factory,
7
+ Grid,
8
+ Group,
9
+ Select,
10
+ Text,
11
+ useProps,
12
+ } from '@mantine/core';
3
13
  import {FunctionComponent} from 'react';
4
14
 
5
15
  import {TableComponentsOrder} from '../Table';
6
- import {useTable, useTableStyles} from '../TableContext';
16
+ import {useTableContext} from '../TableContext';
7
17
 
8
18
  export type TablePredicateStylesNames = 'predicate' | 'predicateWrapper' | 'predicateLabel' | 'predicateSelect';
9
19
 
@@ -34,22 +44,16 @@ export type TablePredicateFactory = Factory<{
34
44
  const defaultProps: Partial<TablePredicateProps> = {};
35
45
 
36
46
  export const TablePredicate: FunctionComponent<TablePredicateProps> = factory<TablePredicateFactory>((props, ref) => {
37
- const ctx = useTableStyles();
47
+ const {store, getStyles} = useTableContext();
38
48
  const {id, data, label, classNames, className, styles, style, vars, ...others} = useProps(
39
49
  'PlasmaTablePredicate',
40
50
  defaultProps,
41
51
  props,
42
52
  );
43
- const {form, setState} = useTable();
44
53
 
45
54
  const handleChange = (newValue: string) => {
46
- form.setFieldValue('predicates', {...form.values.predicates, [id]: newValue});
47
- setState((prevState) => ({
48
- ...prevState,
49
- pagination: prevState.pagination
50
- ? {pageIndex: 0, pageSize: prevState.pagination.pageSize}
51
- : prevState.pagination,
52
- }));
55
+ store.setPredicates((prev) => ({...prev, [id]: newValue}));
56
+ store.setPagination((prev) => ({...prev, pageIndex: 0}));
53
57
  };
54
58
 
55
59
  const stylesApiProps = {classNames, styles};
@@ -59,19 +63,19 @@ export const TablePredicate: FunctionComponent<TablePredicateProps> = factory<Ta
59
63
  span="content"
60
64
  order={TableComponentsOrder.Predicate}
61
65
  ref={ref}
62
- {...ctx.getStyles('predicate', {className, style, ...stylesApiProps})}
66
+ {...getStyles('predicate', {className, style, ...stylesApiProps})}
63
67
  {...others}
64
68
  >
65
- <Group gap="xs" {...ctx.getStyles('predicateWrapper', stylesApiProps)}>
66
- {label ? <Text {...ctx.getStyles('predicateLabel', stylesApiProps)}>{label}:</Text> : null}
69
+ <Group gap="xs" {...getStyles('predicateWrapper', stylesApiProps)}>
70
+ {label ? <Text {...getStyles('predicateLabel', stylesApiProps)}>{label}:</Text> : null}
67
71
  <Select
68
72
  comboboxProps={{withinPortal: true}}
69
- value={form.values.predicates[id]}
73
+ value={store.state.predicates[id]}
70
74
  onChange={handleChange}
71
75
  data={data}
72
76
  aria-label={label ?? id}
73
77
  searchable={data.length > 7}
74
- {...ctx.getStyles('predicateSelect', stylesApiProps)}
78
+ {...getStyles('predicateSelect', stylesApiProps)}
75
79
  />
76
80
  </Group>
77
81
  </Grid.Col>