@kissesses/mantine-react-table-open 9.0.3

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 (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/index.cjs +3769 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +1488 -0
  6. package/dist/index.esm.d.mts +1488 -0
  7. package/dist/index.esm.mjs +3664 -0
  8. package/dist/index.esm.mjs.map +1 -0
  9. package/locales/ar/index.cjs +97 -0
  10. package/locales/ar/index.d.cts +3 -0
  11. package/locales/ar/index.esm.d.mts +3 -0
  12. package/locales/ar/index.esm.mjs +95 -0
  13. package/locales/ar/package.json +19 -0
  14. package/locales/az/index.cjs +97 -0
  15. package/locales/az/index.d.cts +3 -0
  16. package/locales/az/index.esm.d.mts +3 -0
  17. package/locales/az/index.esm.mjs +95 -0
  18. package/locales/az/package.json +19 -0
  19. package/locales/bg/index.cjs +97 -0
  20. package/locales/bg/index.d.cts +3 -0
  21. package/locales/bg/index.esm.d.mts +3 -0
  22. package/locales/bg/index.esm.mjs +95 -0
  23. package/locales/bg/package.json +19 -0
  24. package/locales/cs/index.cjs +97 -0
  25. package/locales/cs/index.d.cts +3 -0
  26. package/locales/cs/index.esm.d.mts +3 -0
  27. package/locales/cs/index.esm.mjs +95 -0
  28. package/locales/cs/package.json +19 -0
  29. package/locales/da/index.cjs +97 -0
  30. package/locales/da/index.d.cts +3 -0
  31. package/locales/da/index.esm.d.mts +3 -0
  32. package/locales/da/index.esm.mjs +95 -0
  33. package/locales/da/package.json +19 -0
  34. package/locales/de/index.cjs +97 -0
  35. package/locales/de/index.d.cts +3 -0
  36. package/locales/de/index.esm.d.mts +3 -0
  37. package/locales/de/index.esm.mjs +95 -0
  38. package/locales/de/package.json +19 -0
  39. package/locales/el/index.cjs +97 -0
  40. package/locales/el/index.d.cts +3 -0
  41. package/locales/el/index.esm.d.mts +3 -0
  42. package/locales/el/index.esm.mjs +95 -0
  43. package/locales/el/package.json +19 -0
  44. package/locales/en/index.cjs +97 -0
  45. package/locales/en/index.d.cts +3 -0
  46. package/locales/en/index.esm.d.mts +3 -0
  47. package/locales/en/index.esm.mjs +95 -0
  48. package/locales/en/package.json +19 -0
  49. package/locales/es/index.cjs +97 -0
  50. package/locales/es/index.d.cts +3 -0
  51. package/locales/es/index.esm.d.mts +3 -0
  52. package/locales/es/index.esm.mjs +95 -0
  53. package/locales/es/package.json +19 -0
  54. package/locales/et/index.cjs +97 -0
  55. package/locales/et/index.d.cts +3 -0
  56. package/locales/et/index.esm.d.mts +3 -0
  57. package/locales/et/index.esm.mjs +95 -0
  58. package/locales/et/package.json +19 -0
  59. package/locales/fa/index.cjs +97 -0
  60. package/locales/fa/index.d.cts +3 -0
  61. package/locales/fa/index.esm.d.mts +3 -0
  62. package/locales/fa/index.esm.mjs +95 -0
  63. package/locales/fa/package.json +19 -0
  64. package/locales/fi/index.cjs +97 -0
  65. package/locales/fi/index.d.cts +3 -0
  66. package/locales/fi/index.esm.d.mts +3 -0
  67. package/locales/fi/index.esm.mjs +95 -0
  68. package/locales/fi/package.json +19 -0
  69. package/locales/fr/index.cjs +97 -0
  70. package/locales/fr/index.d.cts +3 -0
  71. package/locales/fr/index.esm.d.mts +3 -0
  72. package/locales/fr/index.esm.mjs +95 -0
  73. package/locales/fr/package.json +19 -0
  74. package/locales/he/index.cjs +97 -0
  75. package/locales/he/index.d.cts +3 -0
  76. package/locales/he/index.esm.d.mts +3 -0
  77. package/locales/he/index.esm.mjs +95 -0
  78. package/locales/he/package.json +19 -0
  79. package/locales/hr/index.cjs +97 -0
  80. package/locales/hr/index.d.cts +3 -0
  81. package/locales/hr/index.esm.d.mts +3 -0
  82. package/locales/hr/index.esm.mjs +95 -0
  83. package/locales/hr/package.json +19 -0
  84. package/locales/hu/index.cjs +97 -0
  85. package/locales/hu/index.d.cts +3 -0
  86. package/locales/hu/index.esm.d.mts +3 -0
  87. package/locales/hu/index.esm.mjs +95 -0
  88. package/locales/hu/package.json +19 -0
  89. package/locales/hy/index.cjs +97 -0
  90. package/locales/hy/index.d.cts +3 -0
  91. package/locales/hy/index.esm.d.mts +3 -0
  92. package/locales/hy/index.esm.mjs +95 -0
  93. package/locales/hy/package.json +19 -0
  94. package/locales/id/index.cjs +97 -0
  95. package/locales/id/index.d.cts +3 -0
  96. package/locales/id/index.esm.d.mts +3 -0
  97. package/locales/id/index.esm.mjs +95 -0
  98. package/locales/id/package.json +19 -0
  99. package/locales/it/index.cjs +97 -0
  100. package/locales/it/index.d.cts +3 -0
  101. package/locales/it/index.esm.d.mts +3 -0
  102. package/locales/it/index.esm.mjs +95 -0
  103. package/locales/it/package.json +19 -0
  104. package/locales/ja/index.cjs +97 -0
  105. package/locales/ja/index.d.cts +3 -0
  106. package/locales/ja/index.esm.d.mts +3 -0
  107. package/locales/ja/index.esm.mjs +95 -0
  108. package/locales/ja/package.json +19 -0
  109. package/locales/ko/index.cjs +97 -0
  110. package/locales/ko/index.d.cts +3 -0
  111. package/locales/ko/index.esm.d.mts +3 -0
  112. package/locales/ko/index.esm.mjs +95 -0
  113. package/locales/ko/package.json +19 -0
  114. package/locales/nl/index.cjs +97 -0
  115. package/locales/nl/index.d.cts +3 -0
  116. package/locales/nl/index.esm.d.mts +3 -0
  117. package/locales/nl/index.esm.mjs +95 -0
  118. package/locales/nl/package.json +19 -0
  119. package/locales/no/index.cjs +97 -0
  120. package/locales/no/index.d.cts +3 -0
  121. package/locales/no/index.esm.d.mts +3 -0
  122. package/locales/no/index.esm.mjs +95 -0
  123. package/locales/no/package.json +19 -0
  124. package/locales/np/index.cjs +97 -0
  125. package/locales/np/index.d.cts +3 -0
  126. package/locales/np/index.esm.d.mts +3 -0
  127. package/locales/np/index.esm.mjs +95 -0
  128. package/locales/np/package.json +19 -0
  129. package/locales/pl/index.cjs +97 -0
  130. package/locales/pl/index.d.cts +3 -0
  131. package/locales/pl/index.esm.d.mts +3 -0
  132. package/locales/pl/index.esm.mjs +95 -0
  133. package/locales/pl/package.json +19 -0
  134. package/locales/pt/index.cjs +97 -0
  135. package/locales/pt/index.d.cts +3 -0
  136. package/locales/pt/index.esm.d.mts +3 -0
  137. package/locales/pt/index.esm.mjs +95 -0
  138. package/locales/pt/package.json +19 -0
  139. package/locales/pt-BR/index.cjs +97 -0
  140. package/locales/pt-BR/index.d.cts +3 -0
  141. package/locales/pt-BR/index.esm.d.mts +3 -0
  142. package/locales/pt-BR/index.esm.mjs +95 -0
  143. package/locales/pt-BR/package.json +19 -0
  144. package/locales/ro/index.cjs +97 -0
  145. package/locales/ro/index.d.cts +3 -0
  146. package/locales/ro/index.esm.d.mts +3 -0
  147. package/locales/ro/index.esm.mjs +95 -0
  148. package/locales/ro/package.json +19 -0
  149. package/locales/ru/index.cjs +97 -0
  150. package/locales/ru/index.d.cts +3 -0
  151. package/locales/ru/index.esm.d.mts +3 -0
  152. package/locales/ru/index.esm.mjs +95 -0
  153. package/locales/ru/package.json +19 -0
  154. package/locales/sk/index.cjs +97 -0
  155. package/locales/sk/index.d.cts +3 -0
  156. package/locales/sk/index.esm.d.mts +3 -0
  157. package/locales/sk/index.esm.mjs +95 -0
  158. package/locales/sk/package.json +19 -0
  159. package/locales/sr-Cyrl-RS/index.cjs +97 -0
  160. package/locales/sr-Cyrl-RS/index.d.cts +3 -0
  161. package/locales/sr-Cyrl-RS/index.esm.d.mts +3 -0
  162. package/locales/sr-Cyrl-RS/index.esm.mjs +95 -0
  163. package/locales/sr-Cyrl-RS/package.json +19 -0
  164. package/locales/sr-Latn-RS/index.cjs +97 -0
  165. package/locales/sr-Latn-RS/index.d.cts +3 -0
  166. package/locales/sr-Latn-RS/index.esm.d.mts +3 -0
  167. package/locales/sr-Latn-RS/index.esm.mjs +95 -0
  168. package/locales/sr-Latn-RS/package.json +19 -0
  169. package/locales/sv/index.cjs +97 -0
  170. package/locales/sv/index.d.cts +3 -0
  171. package/locales/sv/index.esm.d.mts +3 -0
  172. package/locales/sv/index.esm.mjs +95 -0
  173. package/locales/sv/package.json +19 -0
  174. package/locales/tr/index.cjs +97 -0
  175. package/locales/tr/index.d.cts +3 -0
  176. package/locales/tr/index.esm.d.mts +3 -0
  177. package/locales/tr/index.esm.mjs +95 -0
  178. package/locales/tr/package.json +19 -0
  179. package/locales/uk/index.cjs +97 -0
  180. package/locales/uk/index.d.cts +3 -0
  181. package/locales/uk/index.esm.d.mts +3 -0
  182. package/locales/uk/index.esm.mjs +95 -0
  183. package/locales/uk/package.json +19 -0
  184. package/locales/vi/index.cjs +97 -0
  185. package/locales/vi/index.d.cts +3 -0
  186. package/locales/vi/index.esm.d.mts +3 -0
  187. package/locales/vi/index.esm.mjs +95 -0
  188. package/locales/vi/package.json +19 -0
  189. package/locales/zh-Hans/index.cjs +97 -0
  190. package/locales/zh-Hans/index.d.cts +3 -0
  191. package/locales/zh-Hans/index.esm.d.mts +3 -0
  192. package/locales/zh-Hans/index.esm.mjs +95 -0
  193. package/locales/zh-Hans/package.json +19 -0
  194. package/locales/zh-Hant/index.cjs +97 -0
  195. package/locales/zh-Hant/index.d.cts +3 -0
  196. package/locales/zh-Hant/index.esm.d.mts +3 -0
  197. package/locales/zh-Hant/index.esm.mjs +95 -0
  198. package/locales/zh-Hant/package.json +19 -0
  199. package/package.json +154 -0
  200. package/src/components/MantineReactTable.tsx +37 -0
  201. package/src/components/body/MRT_TableBody.module.css +42 -0
  202. package/src/components/body/MRT_TableBody.tsx +215 -0
  203. package/src/components/body/MRT_TableBodyCell.module.css +107 -0
  204. package/src/components/body/MRT_TableBodyCell.tsx +351 -0
  205. package/src/components/body/MRT_TableBodyCellValue.tsx +113 -0
  206. package/src/components/body/MRT_TableBodyEmptyRow.tsx +110 -0
  207. package/src/components/body/MRT_TableBodyRow.module.css +252 -0
  208. package/src/components/body/MRT_TableBodyRow.tsx +263 -0
  209. package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +58 -0
  210. package/src/components/body/MRT_TableBodyRowPinButton.tsx +58 -0
  211. package/src/components/body/MRT_TableDetailPanel.module.css +35 -0
  212. package/src/components/body/MRT_TableDetailPanel.tsx +131 -0
  213. package/src/components/buttons/MRT_ColumnPinningButtons.module.css +11 -0
  214. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +68 -0
  215. package/src/components/buttons/MRT_CopyButton.module.css +27 -0
  216. package/src/components/buttons/MRT_CopyButton.tsx +83 -0
  217. package/src/components/buttons/MRT_EditActionButtons.module.css +4 -0
  218. package/src/components/buttons/MRT_EditActionButtons.tsx +128 -0
  219. package/src/components/buttons/MRT_ExpandAllButton.module.css +26 -0
  220. package/src/components/buttons/MRT_ExpandAllButton.tsx +83 -0
  221. package/src/components/buttons/MRT_ExpandButton.module.css +37 -0
  222. package/src/components/buttons/MRT_ExpandButton.tsx +120 -0
  223. package/src/components/buttons/MRT_GrabHandleButton.module.css +6 -0
  224. package/src/components/buttons/MRT_GrabHandleButton.tsx +64 -0
  225. package/src/components/buttons/MRT_RowPinButton.tsx +83 -0
  226. package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +45 -0
  227. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +65 -0
  228. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +44 -0
  229. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +58 -0
  230. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +51 -0
  231. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +86 -0
  232. package/src/components/footer/MRT_TableFooter.module.css +17 -0
  233. package/src/components/footer/MRT_TableFooter.tsx +72 -0
  234. package/src/components/footer/MRT_TableFooterCell.module.css +50 -0
  235. package/src/components/footer/MRT_TableFooterCell.tsx +122 -0
  236. package/src/components/footer/MRT_TableFooterRow.module.css +10 -0
  237. package/src/components/footer/MRT_TableFooterRow.tsx +94 -0
  238. package/src/components/head/MRT_TableHead.module.css +32 -0
  239. package/src/components/head/MRT_TableHead.tsx +108 -0
  240. package/src/components/head/MRT_TableHeadCell.module.css +163 -0
  241. package/src/components/head/MRT_TableHeadCell.tsx +322 -0
  242. package/src/components/head/MRT_TableHeadCellFilterContainer.module.css +5 -0
  243. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +147 -0
  244. package/src/components/head/MRT_TableHeadCellFilterLabel.module.css +14 -0
  245. package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +171 -0
  246. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +81 -0
  247. package/src/components/head/MRT_TableHeadCellResizeHandle.module.css +44 -0
  248. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +67 -0
  249. package/src/components/head/MRT_TableHeadCellSortLabel.module.css +22 -0
  250. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +89 -0
  251. package/src/components/head/MRT_TableHeadRow.module.css +12 -0
  252. package/src/components/head/MRT_TableHeadRow.tsx +87 -0
  253. package/src/components/inputs/MRT_EditCellTextInput.tsx +218 -0
  254. package/src/components/inputs/MRT_FilterCheckBox.module.css +4 -0
  255. package/src/components/inputs/MRT_FilterCheckbox.tsx +79 -0
  256. package/src/components/inputs/MRT_FilterRangeFields.module.css +5 -0
  257. package/src/components/inputs/MRT_FilterRangeFields.tsx +35 -0
  258. package/src/components/inputs/MRT_FilterRangeSlider.module.css +6 -0
  259. package/src/components/inputs/MRT_FilterRangeSlider.tsx +106 -0
  260. package/src/components/inputs/MRT_FilterTextInput.module.css +27 -0
  261. package/src/components/inputs/MRT_FilterTextInput.tsx +417 -0
  262. package/src/components/inputs/MRT_GlobalFilterTextInput.module.css +11 -0
  263. package/src/components/inputs/MRT_GlobalFilterTextInput.tsx +141 -0
  264. package/src/components/inputs/MRT_SelectCheckbox.tsx +137 -0
  265. package/src/components/menus/MRT_ColumnActionMenu.module.css +7 -0
  266. package/src/components/menus/MRT_ColumnActionMenu.tsx +287 -0
  267. package/src/components/menus/MRT_FilterOptionMenu.module.css +6 -0
  268. package/src/components/menus/MRT_FilterOptionMenu.tsx +274 -0
  269. package/src/components/menus/MRT_RowActionMenu.tsx +74 -0
  270. package/src/components/menus/MRT_ShowHideColumnsMenu.module.css +10 -0
  271. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +135 -0
  272. package/src/components/menus/MRT_ShowHideColumnsMenuItems.module.css +35 -0
  273. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +170 -0
  274. package/src/components/modals/MRT_EditRowModal.tsx +97 -0
  275. package/src/components/table/MRT_Table.module.css +7 -0
  276. package/src/components/table/MRT_Table.tsx +110 -0
  277. package/src/components/table/MRT_TableContainer.module.css +20 -0
  278. package/src/components/table/MRT_TableContainer.tsx +109 -0
  279. package/src/components/table/MRT_TablePaper.module.css +88 -0
  280. package/src/components/table/MRT_TablePaper.tsx +92 -0
  281. package/src/components/toolbar/MRT_BottomToolbar.module.css +40 -0
  282. package/src/components/toolbar/MRT_BottomToolbar.tsx +100 -0
  283. package/src/components/toolbar/MRT_ProgressBar.module.css +10 -0
  284. package/src/components/toolbar/MRT_ProgressBar.tsx +53 -0
  285. package/src/components/toolbar/MRT_TablePagination.module.css +20 -0
  286. package/src/components/toolbar/MRT_TablePagination.tsx +166 -0
  287. package/src/components/toolbar/MRT_ToolbarAlertBanner.module.css +37 -0
  288. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +168 -0
  289. package/src/components/toolbar/MRT_ToolbarDropZone.module.css +23 -0
  290. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +67 -0
  291. package/src/components/toolbar/MRT_ToolbarInternalButtons.module.css +6 -0
  292. package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +73 -0
  293. package/src/components/toolbar/MRT_TopToolbar.module.css +24 -0
  294. package/src/components/toolbar/MRT_TopToolbar.tsx +128 -0
  295. package/src/components/toolbar/common.styles.module.css +10 -0
  296. package/src/fns/aggregationFns.ts +3 -0
  297. package/src/fns/filterFns.ts +272 -0
  298. package/src/fns/sortingFns.ts +34 -0
  299. package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +23 -0
  300. package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +30 -0
  301. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +92 -0
  302. package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +30 -0
  303. package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +24 -0
  304. package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +34 -0
  305. package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +34 -0
  306. package/src/hooks/useMRT_ColumnVirtualizer.ts +129 -0
  307. package/src/hooks/useMRT_Effects.ts +105 -0
  308. package/src/hooks/useMRT_RowVirtualizer.ts +95 -0
  309. package/src/hooks/useMRT_Rows.ts +46 -0
  310. package/src/hooks/useMRT_TableInstance.ts +314 -0
  311. package/src/hooks/useMRT_TableOptions.ts +264 -0
  312. package/src/hooks/useMantineReactTable.ts +14 -0
  313. package/src/icons.ts +73 -0
  314. package/src/index.ts +90 -0
  315. package/src/locales/ar.ts +96 -0
  316. package/src/locales/az.ts +96 -0
  317. package/src/locales/bg.ts +96 -0
  318. package/src/locales/cs.ts +97 -0
  319. package/src/locales/da.ts +96 -0
  320. package/src/locales/de.ts +96 -0
  321. package/src/locales/el.ts +96 -0
  322. package/src/locales/en.ts +96 -0
  323. package/src/locales/es.ts +96 -0
  324. package/src/locales/et.ts +97 -0
  325. package/src/locales/fa.ts +96 -0
  326. package/src/locales/fi.ts +97 -0
  327. package/src/locales/fr.ts +96 -0
  328. package/src/locales/he.ts +96 -0
  329. package/src/locales/hr.ts +96 -0
  330. package/src/locales/hu.ts +96 -0
  331. package/src/locales/hy.ts +96 -0
  332. package/src/locales/id.ts +97 -0
  333. package/src/locales/it.ts +96 -0
  334. package/src/locales/ja.ts +96 -0
  335. package/src/locales/ko.ts +96 -0
  336. package/src/locales/nl.ts +96 -0
  337. package/src/locales/no.ts +97 -0
  338. package/src/locales/np.ts +97 -0
  339. package/src/locales/pl.ts +96 -0
  340. package/src/locales/pt-BR.ts +96 -0
  341. package/src/locales/pt.ts +96 -0
  342. package/src/locales/ro.ts +96 -0
  343. package/src/locales/ru.ts +96 -0
  344. package/src/locales/sk.ts +97 -0
  345. package/src/locales/sr-Cyrl-RS.ts +96 -0
  346. package/src/locales/sr-Latn-RS.ts +96 -0
  347. package/src/locales/sv.ts +96 -0
  348. package/src/locales/tr.ts +96 -0
  349. package/src/locales/uk.ts +96 -0
  350. package/src/locales/vi.ts +96 -0
  351. package/src/locales/zh-Hans.ts +95 -0
  352. package/src/locales/zh-Hant.ts +95 -0
  353. package/src/types.ts +1276 -0
  354. package/src/typings.d.ts +1 -0
  355. package/src/utils/column.utils.ts +124 -0
  356. package/src/utils/displayColumn.utils.ts +153 -0
  357. package/src/utils/row.utils.ts +263 -0
  358. package/src/utils/style.utils.ts +32 -0
  359. package/src/utils/tanstack.helpers.ts +66 -0
  360. package/src/utils/utils.ts +4 -0
  361. package/src/utils/virtualization.utils.ts +19 -0
  362. package/styles.css +1320 -0
package/package.json ADDED
@@ -0,0 +1,154 @@
1
+ {
2
+ "version": "9.0.3",
3
+ "license": "MIT",
4
+ "name": "@kissesses/mantine-react-table-open",
5
+ "description": "A fully featured Mantine implementation of TanStack React Table V8, written from the ground up in TypeScript.",
6
+ "author": "Kevin Vandy",
7
+ "keywords": [
8
+ "react-table",
9
+ "mantine",
10
+ "tanstack table",
11
+ "data table",
12
+ "data grid"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/kissesses/mantine-react-table-open.git"
17
+ },
18
+ "funding": {
19
+ "type": "github",
20
+ "url": "https://github.com/sponsors/kevinvandy"
21
+ },
22
+ "homepage": "https://github.com/kissesses",
23
+ "bugs": {
24
+ "url": "https://github.com/kissesses/mantine-react-table-open/issues"
25
+ },
26
+ "sideEffects": [
27
+ "*.css"
28
+ ],
29
+ "main": "dist/index.cjs",
30
+ "module": "dist/index.esm.mjs",
31
+ "types": "dist/index.esm.d.mts",
32
+ "exports": {
33
+ ".": {
34
+ "import": {
35
+ "types": "./dist/index.esm.d.mts",
36
+ "default": "./dist/index.esm.mjs"
37
+ },
38
+ "require": {
39
+ "types": "./dist/index.d.cts",
40
+ "default": "./dist/index.cjs"
41
+ }
42
+ },
43
+ "./package.json": "./package.json",
44
+ "./locales/*": "./locales/*",
45
+ "./styles.css": "./styles.css"
46
+ },
47
+ "files": [
48
+ "dist",
49
+ "locales",
50
+ "styles.css",
51
+ "src"
52
+ ],
53
+ "size-limit": [
54
+ {
55
+ "path": "dist/index.cjs",
56
+ "limit": "53 KB"
57
+ },
58
+ {
59
+ "path": "dist/index.esm.mjs",
60
+ "limit": "50 KB"
61
+ }
62
+ ],
63
+ "engines": {
64
+ "node": ">=16"
65
+ },
66
+ "scripts": {
67
+ "build": "pnpm lib:build",
68
+ "build-locales": "pnpm lib:build-locales",
69
+ "build-lib": "pnpm lib:build-lib",
70
+ "dev": "pnpm lib:dev",
71
+ "lib:build": "pnpm build-lib && pnpm build-locales",
72
+ "lib:build-locales": "node build-locales.mjs",
73
+ "lib:build-lib": "rm -rf dist && rollup -c rollup.config.mjs && size-limit",
74
+ "lib:dev": "rollup -c rollup.config.mjs --watch",
75
+ "lint": "eslint .",
76
+ "size": "size-limit",
77
+ "storybook": "pnpm storybook:dev",
78
+ "storybook:build": "storybook build",
79
+ "storybook:dev": "storybook dev -p 6007"
80
+ },
81
+ "devDependencies": {
82
+ "@babel/core": "^7.25.8",
83
+ "@babel/preset-react": "^7.25.7",
84
+ "@faker-js/faker": "^9.0.3",
85
+ "@mantine/core": "9.0.1",
86
+ "@mantine/dates": "9.0.1",
87
+ "@mantine/hooks": "9.0.1",
88
+ "@rollup/plugin-babel": "^6.0.4",
89
+ "@rollup/plugin-node-resolve": "^15.3.0",
90
+ "@rollup/plugin-typescript": "^11.1.6",
91
+ "@size-limit/preset-small-lib": "^11.1.6",
92
+ "@storybook/addon-a11y": "^8.3.5",
93
+ "@storybook/addon-essentials": "^8.3.5",
94
+ "@storybook/addon-interactions": "^8.3.5",
95
+ "@storybook/addon-links": "^8.3.5",
96
+ "@storybook/addon-storysource": "^8.3.5",
97
+ "@storybook/blocks": "^8.3.5",
98
+ "@storybook/preview-api": "^8.3.5",
99
+ "@storybook/react": "^8.3.5",
100
+ "@storybook/react-vite": "^8.3.5",
101
+ "@storybook/testing-library": "^0.2.2",
102
+ "@tabler/icons-react": "3.19.0",
103
+ "@types/node": "^22.7.5",
104
+ "@types/react": "^19.1.0",
105
+ "@types/react-dom": "^19.1.0",
106
+ "@typescript-eslint/eslint-plugin": "^8.8.1",
107
+ "@typescript-eslint/parser": "^8.8.1",
108
+ "@vitejs/plugin-react": "^4.3.2",
109
+ "clsx": "^2.1.1",
110
+ "dayjs": "^1.11.13",
111
+ "eslint": "^8.57.0",
112
+ "eslint-plugin-perfectionist": "^3.8.0",
113
+ "mantine-contextmenu": "^8.2.0",
114
+ "postcss": "^8.4.47",
115
+ "postcss-preset-mantine": "^1.17.0",
116
+ "postcss-simple-vars": "^7.0.1",
117
+ "prop-types": "^15.8.1",
118
+ "react": "^19.1.0",
119
+ "react-dom": "^19.1.0",
120
+ "react-is": "^19.1.0",
121
+ "rollup": "^4.24.0",
122
+ "rollup-plugin-copy": "^3.5.0",
123
+ "rollup-plugin-delete": "^2.1.0",
124
+ "rollup-plugin-dts": "^6.1.1",
125
+ "rollup-plugin-peer-deps-external": "^2.2.4",
126
+ "rollup-plugin-postcss": "^4.0.2",
127
+ "size-limit": "^11.1.6",
128
+ "storybook": "^8.3.5",
129
+ "storybook-dark-mode": "^4.0.2",
130
+ "tslib": "^2.7.0",
131
+ "typescript": "^5.6.3",
132
+ "typescript-plugin-css-modules": "^5.1.0",
133
+ "vite": "^5.4.8"
134
+ },
135
+ "dependencies": {
136
+ "@tanstack/match-sorter-utils": "8.19.4",
137
+ "@tanstack/react-table": "8.20.5",
138
+ "@tanstack/react-virtual": "3.11.2"
139
+ },
140
+ "peerDependencies": {
141
+ "@mantine/core": "^9.0.0",
142
+ "@mantine/dates": "^9.0.0",
143
+ "@mantine/hooks": "^9.0.0",
144
+ "@tabler/icons-react": ">=2.23.0",
145
+ "clsx": ">=2",
146
+ "dayjs": ">=1.11",
147
+ "react": ">=19.2",
148
+ "react-dom": ">=19.2"
149
+ },
150
+ "publishConfig": {
151
+ "access": "public",
152
+ "registry": "https://registry.npmjs.org/"
153
+ }
154
+ }
@@ -0,0 +1,37 @@
1
+ import { useMantineReactTable } from '../hooks/useMantineReactTable';
2
+ import {
3
+ type MRT_RowData,
4
+ type MRT_TableInstance,
5
+ type MRT_TableOptions,
6
+ type Xor,
7
+ } from '../types';
8
+ import { MRT_TablePaper } from './table/MRT_TablePaper';
9
+
10
+ type TableInstanceProp<TData extends MRT_RowData> = {
11
+ table: MRT_TableInstance<TData>;
12
+ };
13
+
14
+ type Props<TData extends MRT_RowData> = Xor<
15
+ TableInstanceProp<TData>,
16
+ MRT_TableOptions<TData>
17
+ >;
18
+
19
+ const isTableInstanceProp = <TData extends MRT_RowData>(
20
+ props: Props<TData>,
21
+ ): props is TableInstanceProp<TData> =>
22
+ (props as TableInstanceProp<TData>).table !== undefined;
23
+
24
+ export const MantineReactTable = <TData extends MRT_RowData>(
25
+ props: Props<TData>,
26
+ ) => {
27
+ 'use no memo';
28
+ let table: MRT_TableInstance<TData>;
29
+
30
+ if (isTableInstanceProp(props)) {
31
+ table = props.table;
32
+ } else {
33
+ table = useMantineReactTable(props);
34
+ }
35
+
36
+ return <MRT_TablePaper table={table} />;
37
+ };
@@ -0,0 +1,42 @@
1
+ .root {
2
+ background-color: var(--mrt-base-background-color);
3
+ position: relative;
4
+ }
5
+
6
+ .root-grid {
7
+ display: grid;
8
+ }
9
+
10
+ .root-no-rows {
11
+ min-height: 100px;
12
+ }
13
+
14
+ .root-virtualized {
15
+ height: var(--mrt-table-body-height);
16
+ }
17
+
18
+ .empty-row-tr-grid {
19
+ display: grid;
20
+ }
21
+
22
+ .empty-row-td-grid {
23
+ display: grid;
24
+ width: inherit;
25
+ }
26
+
27
+ .empty-row-td-content {
28
+ color: var(--mantine-color-dimmed);
29
+ font-style: italic;
30
+ max-width: min(100vw, calc(var(--mrt-paper-width) * 1px));
31
+ padding-bottom: 2rem;
32
+ padding-top: 2rem;
33
+ text-align: center;
34
+ width: 100%;
35
+ }
36
+
37
+ .pinned {
38
+ bottom: calc(var(--mrt-table-footer-height, 0) * 1px - 1px);
39
+ position: sticky;
40
+ top: calc(var(--mrt-table-head-height, 0) * 1px - 1px);
41
+ z-index: 1;
42
+ }
@@ -0,0 +1,215 @@
1
+ import clsx from 'clsx';
2
+
3
+ import classes from './MRT_TableBody.module.css';
4
+
5
+ import { memo, useMemo } from 'react';
6
+
7
+ import {
8
+ type TableProps,
9
+ TableTbody,
10
+ type TableTbodyProps,
11
+ } from '@mantine/core';
12
+
13
+ import { MRT_TableBodyEmptyRow } from './MRT_TableBodyEmptyRow';
14
+ import { Memo_MRT_TableBodyRow, MRT_TableBodyRow } from './MRT_TableBodyRow';
15
+
16
+ import { useMRT_Rows } from '../../hooks/useMRT_Rows';
17
+ import { useMRT_RowVirtualizer } from '../../hooks/useMRT_RowVirtualizer';
18
+ import {
19
+ type MRT_ColumnVirtualizer,
20
+ type MRT_Row,
21
+ type MRT_RowData,
22
+ type MRT_TableInstance,
23
+ type MRT_VirtualItem,
24
+ } from '../../types';
25
+ import { parseFromValuesOrFunc } from '../../utils/utils';
26
+
27
+ export interface MRT_TableBodyProps<TData extends MRT_RowData>
28
+ extends TableTbodyProps {
29
+ columnVirtualizer?: MRT_ColumnVirtualizer;
30
+ table: MRT_TableInstance<TData>;
31
+ tableProps: Partial<TableProps>;
32
+ }
33
+
34
+ export const MRT_TableBody = <TData extends MRT_RowData>({
35
+ columnVirtualizer,
36
+ table,
37
+ tableProps,
38
+ ...rest
39
+ }: MRT_TableBodyProps<TData>) => {
40
+ 'use no memo';
41
+ const {
42
+ getBottomRows,
43
+ getIsSomeRowsPinned,
44
+ getRowModel,
45
+ getState,
46
+ getTopRows,
47
+ options: {
48
+ enableStickyFooter,
49
+ enableStickyHeader,
50
+ layoutMode,
51
+ mantineTableBodyProps,
52
+ memoMode,
53
+ renderDetailPanel,
54
+ rowPinningDisplayMode,
55
+ },
56
+ refs: { tableFooterRef, tableHeadRef },
57
+ } = table;
58
+ const { isFullScreen, rowPinning } = getState();
59
+
60
+ const tableBodyProps = {
61
+ ...parseFromValuesOrFunc(mantineTableBodyProps, { table }),
62
+ ...rest,
63
+ };
64
+
65
+ const tableHeadHeight =
66
+ ((enableStickyHeader || isFullScreen) &&
67
+ tableHeadRef.current?.clientHeight) ||
68
+ 0;
69
+ const tableFooterHeight =
70
+ (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
71
+
72
+ const pinnedRowIds = useMemo(() => {
73
+ if (!rowPinning.bottom?.length && !rowPinning.top?.length) return [];
74
+ return getRowModel()
75
+ .rows.filter((row) => row.getIsPinned())
76
+ .map((r) => r.id);
77
+ }, [rowPinning, getRowModel().rows]);
78
+
79
+ const rows = useMRT_Rows(table);
80
+
81
+ const rowVirtualizer = useMRT_RowVirtualizer(table, rows);
82
+
83
+ const { virtualRows } = rowVirtualizer ?? {};
84
+
85
+ const commonRowProps = {
86
+ columnVirtualizer,
87
+ numRows: rows.length,
88
+ table,
89
+ tableProps,
90
+ };
91
+
92
+ return (
93
+ <>
94
+ {!rowPinningDisplayMode?.includes('sticky') &&
95
+ getIsSomeRowsPinned('top') && (
96
+ <TableTbody
97
+ {...tableBodyProps}
98
+ __vars={{
99
+ '--mrt-table-head-height': `${tableHeadHeight}`,
100
+ ...tableBodyProps?.__vars,
101
+ }}
102
+ className={clsx(
103
+ classes.pinned,
104
+ layoutMode?.startsWith('grid') && classes['root-grid'],
105
+ tableBodyProps?.className,
106
+ )}
107
+ >
108
+ {getTopRows().map((row, renderedRowIndex) => {
109
+ const rowProps = {
110
+ ...commonRowProps,
111
+ renderedRowIndex,
112
+ row,
113
+ };
114
+ return memoMode === 'rows' ? (
115
+ <Memo_MRT_TableBodyRow key={row.id} {...rowProps} />
116
+ ) : (
117
+ <MRT_TableBodyRow key={row.id} {...rowProps} />
118
+ );
119
+ })}
120
+ </TableTbody>
121
+ )}
122
+ <TableTbody
123
+ {...tableBodyProps}
124
+ __vars={{
125
+ '--mrt-table-body-height': rowVirtualizer
126
+ ? `${rowVirtualizer.getTotalSize()}px`
127
+ : undefined,
128
+ ...tableBodyProps?.__vars,
129
+ }}
130
+ className={clsx(
131
+ classes.root,
132
+ layoutMode?.startsWith('grid') && classes['root-grid'],
133
+ !rows.length && classes['root-no-rows'],
134
+ rowVirtualizer && classes['root-virtualized'],
135
+ tableBodyProps?.className,
136
+ )}
137
+ >
138
+ {tableBodyProps?.children ??
139
+ (!rows.length ? (
140
+ <MRT_TableBodyEmptyRow {...commonRowProps} />
141
+ ) : (
142
+ <>
143
+ {(virtualRows ?? rows).map(
144
+ (rowOrVirtualRow, renderedRowIndex) => {
145
+ if (rowVirtualizer) {
146
+ if (renderDetailPanel) {
147
+ if (rowOrVirtualRow.index % 2 === 1) {
148
+ return null;
149
+ } else {
150
+ renderedRowIndex = rowOrVirtualRow.index / 2;
151
+ }
152
+ } else {
153
+ renderedRowIndex = rowOrVirtualRow.index;
154
+ }
155
+ }
156
+ const row = rowVirtualizer
157
+ ? rows[renderedRowIndex]
158
+ : (rowOrVirtualRow as MRT_Row<TData>);
159
+ const props = {
160
+ ...commonRowProps,
161
+ pinnedRowIds,
162
+ renderedRowIndex,
163
+ row,
164
+ rowVirtualizer,
165
+ virtualRow: rowVirtualizer
166
+ ? (rowOrVirtualRow as MRT_VirtualItem)
167
+ : undefined,
168
+ };
169
+ const key = `${row.id}-${row.index}`;
170
+ return memoMode === 'rows' ? (
171
+ <Memo_MRT_TableBodyRow key={key} {...props} />
172
+ ) : (
173
+ <MRT_TableBodyRow key={key} {...props} />
174
+ );
175
+ },
176
+ )}
177
+ </>
178
+ ))}
179
+ </TableTbody>
180
+ {!rowPinningDisplayMode?.includes('sticky') &&
181
+ getIsSomeRowsPinned('bottom') && (
182
+ <TableTbody
183
+ {...tableBodyProps}
184
+ __vars={{
185
+ '--mrt-table-footer-height': `${tableFooterHeight}`,
186
+ ...tableBodyProps?.__vars,
187
+ }}
188
+ className={clsx(
189
+ classes.pinned,
190
+ layoutMode?.startsWith('grid') && classes['root-grid'],
191
+ tableBodyProps?.className,
192
+ )}
193
+ >
194
+ {getBottomRows().map((row, renderedRowIndex) => {
195
+ const props = {
196
+ ...commonRowProps,
197
+ renderedRowIndex,
198
+ row,
199
+ };
200
+ return memoMode === 'rows' ? (
201
+ <Memo_MRT_TableBodyRow key={row.id} {...props} />
202
+ ) : (
203
+ <MRT_TableBodyRow key={row.id} {...props} />
204
+ );
205
+ })}
206
+ </TableTbody>
207
+ )}
208
+ </>
209
+ );
210
+ };
211
+
212
+ export const Memo_MRT_TableBody = memo(
213
+ MRT_TableBody,
214
+ (prev, next) => prev.table.options.data === next.table.options.data,
215
+ ) as typeof MRT_TableBody;
@@ -0,0 +1,107 @@
1
+ .root {
2
+ --resize-thickness: 2px;
3
+
4
+ background-clip: padding-box;
5
+ text-align: var(--mrt-cell-align, left);
6
+ overflow: hidden;
7
+ position: relative;
8
+ transition: padding 150ms ease-in-out;
9
+
10
+ &[data-dragging-column] {
11
+ z-index: 2;
12
+ border-left: var(--drag-thickness) dashed
13
+ var(--mrt-dragging-drag-border-color);
14
+ border-right: var(--drag-thickness) dashed
15
+ var(--mrt-dragging-drag-border-color);
16
+ &[data-last-row] {
17
+ border-bottom: var(--drag-thickness) dashed
18
+ var(--mrt-dragging-drag-border-color);
19
+ }
20
+ }
21
+
22
+ &[data-hovered-column-target] {
23
+ opacity: 0.5;
24
+ border-left: var(--hover-thickness) dashed
25
+ var(--mrt-dragging-hovered-border-color);
26
+ border-right: var(--hover-thickness) dashed
27
+ var(--mrt-dragging-hovered-border-color);
28
+ &[data-last-row] {
29
+ border-bottom: var(--hover-thickness) dashed
30
+ var(--mrt-dragging-hovered-border-color);
31
+ }
32
+ }
33
+
34
+ &[data-resizing='ltr'] {
35
+ border-right: var(--resize-thickness) solid
36
+ var(--mrt-resize-column-border-color);
37
+ }
38
+
39
+ &[data-resizing='rtl'] {
40
+ border-left: var(--resize-thickness) solid
41
+ var(--mrt-resize-column-border-color);
42
+ }
43
+
44
+ &:hover {
45
+ outline-offset: -1px;
46
+ text-overflow: clip;
47
+ }
48
+ }
49
+
50
+ .root-grid {
51
+ align-items: center;
52
+ justify-content: var(--mrt-cell-align, flex-start);
53
+ display: flex;
54
+ }
55
+
56
+ .root-virtualized {
57
+ transition: none;
58
+ }
59
+
60
+ .root-data-col {
61
+ text-overflow: ellipsis;
62
+ }
63
+
64
+ .root-nowrap {
65
+ white-space: nowrap;
66
+ }
67
+
68
+ .root-cursor-pointer {
69
+ cursor: pointer;
70
+ }
71
+
72
+ .root-editable-hover {
73
+ @mixin hover {
74
+ outline: 1px solid var(--mantine-color-gray-7);
75
+ }
76
+ }
77
+
78
+ .root-cell-hover-reveal {
79
+ overflow: visible;
80
+ }
81
+
82
+ .cell-hover-reveal {
83
+ white-space: nowrap;
84
+ overflow: hidden;
85
+ text-overflow: ellipsis;
86
+ text-align: var(--mrt-cell-align);
87
+ }
88
+
89
+ .cell-hover-reveal.overflowing:hover{
90
+ overflow: visible;
91
+ white-space: normal;
92
+ position: absolute;
93
+ z-index: 2;
94
+ padding: var(--table-vertical-spacing)
95
+ var(--table-horizontal-spacing, var(--mantine-spacing-xs));
96
+ background-color: var(--mrt-base-background-color);
97
+ box-shadow: var(--mantine-shadow-sm);
98
+ border: 1px solid var(--mantine-primary-color-filled);
99
+ text-indent: -1px;
100
+ width: max-content;
101
+ top: 0;
102
+ left: 0;
103
+ height: 100%;
104
+ display: flex;
105
+ justify-content: center;
106
+ align-items: center;
107
+ }