@careharmony/mantine-react-table-ng 0.0.0-stage → 4.0.0-beta.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 (371) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +217 -3
  3. package/dist/index.cjs +4023 -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 +3909 -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/th/index.cjs +97 -0
  175. package/locales/th/index.d.cts +3 -0
  176. package/locales/th/index.esm.d.mts +3 -0
  177. package/locales/th/index.esm.mjs +95 -0
  178. package/locales/th/package.json +19 -0
  179. package/locales/tr/index.cjs +97 -0
  180. package/locales/tr/index.d.cts +3 -0
  181. package/locales/tr/index.esm.d.mts +3 -0
  182. package/locales/tr/index.esm.mjs +95 -0
  183. package/locales/tr/package.json +19 -0
  184. package/locales/uk/index.cjs +97 -0
  185. package/locales/uk/index.d.cts +3 -0
  186. package/locales/uk/index.esm.d.mts +3 -0
  187. package/locales/uk/index.esm.mjs +95 -0
  188. package/locales/uk/package.json +19 -0
  189. package/locales/vi/index.cjs +97 -0
  190. package/locales/vi/index.d.cts +3 -0
  191. package/locales/vi/index.esm.d.mts +3 -0
  192. package/locales/vi/index.esm.mjs +95 -0
  193. package/locales/vi/package.json +19 -0
  194. package/locales/zh-Hans/index.cjs +97 -0
  195. package/locales/zh-Hans/index.d.cts +3 -0
  196. package/locales/zh-Hans/index.esm.d.mts +3 -0
  197. package/locales/zh-Hans/index.esm.mjs +95 -0
  198. package/locales/zh-Hans/package.json +19 -0
  199. package/locales/zh-Hant/index.cjs +97 -0
  200. package/locales/zh-Hant/index.d.cts +3 -0
  201. package/locales/zh-Hant/index.esm.d.mts +3 -0
  202. package/locales/zh-Hant/index.esm.mjs +95 -0
  203. package/locales/zh-Hant/package.json +19 -0
  204. package/package.json +184 -4
  205. package/src/components/MantineReactTable.tsx +38 -0
  206. package/src/components/body/MRT_TableBody.module.css +42 -0
  207. package/src/components/body/MRT_TableBody.tsx +214 -0
  208. package/src/components/body/MRT_TableBodyCell.module.css +107 -0
  209. package/src/components/body/MRT_TableBodyCell.tsx +355 -0
  210. package/src/components/body/MRT_TableBodyCellValue.tsx +114 -0
  211. package/src/components/body/MRT_TableBodyEmptyRow.tsx +89 -0
  212. package/src/components/body/MRT_TableBodyRow.module.css +261 -0
  213. package/src/components/body/MRT_TableBodyRow.tsx +278 -0
  214. package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +59 -0
  215. package/src/components/body/MRT_TableBodyRowPinButton.tsx +59 -0
  216. package/src/components/body/MRT_TableDetailPanel.module.css +35 -0
  217. package/src/components/body/MRT_TableDetailPanel.tsx +132 -0
  218. package/src/components/buttons/MRT_ColumnPinningButtons.module.css +11 -0
  219. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +69 -0
  220. package/src/components/buttons/MRT_CopyButton.module.css +27 -0
  221. package/src/components/buttons/MRT_CopyButton.tsx +84 -0
  222. package/src/components/buttons/MRT_EditActionButtons.module.css +4 -0
  223. package/src/components/buttons/MRT_EditActionButtons.tsx +139 -0
  224. package/src/components/buttons/MRT_ExpandAllButton.module.css +26 -0
  225. package/src/components/buttons/MRT_ExpandAllButton.tsx +84 -0
  226. package/src/components/buttons/MRT_ExpandButton.module.css +37 -0
  227. package/src/components/buttons/MRT_ExpandButton.tsx +121 -0
  228. package/src/components/buttons/MRT_GrabHandleButton.module.css +6 -0
  229. package/src/components/buttons/MRT_GrabHandleButton.tsx +65 -0
  230. package/src/components/buttons/MRT_RowPinButton.tsx +84 -0
  231. package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +46 -0
  232. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +66 -0
  233. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +45 -0
  234. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +59 -0
  235. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +52 -0
  236. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +87 -0
  237. package/src/components/footer/MRT_TableFooter.module.css +17 -0
  238. package/src/components/footer/MRT_TableFooter.tsx +70 -0
  239. package/src/components/footer/MRT_TableFooterCell.module.css +59 -0
  240. package/src/components/footer/MRT_TableFooterCell.tsx +126 -0
  241. package/src/components/footer/MRT_TableFooterRow.module.css +10 -0
  242. package/src/components/footer/MRT_TableFooterRow.tsx +111 -0
  243. package/src/components/head/MRT_TableHead.module.css +32 -0
  244. package/src/components/head/MRT_TableHead.tsx +106 -0
  245. package/src/components/head/MRT_TableHeadCell.module.css +172 -0
  246. package/src/components/head/MRT_TableHeadCell.tsx +317 -0
  247. package/src/components/head/MRT_TableHeadCellFilterContainer.module.css +5 -0
  248. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +123 -0
  249. package/src/components/head/MRT_TableHeadCellFilterLabel.module.css +14 -0
  250. package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +176 -0
  251. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +82 -0
  252. package/src/components/head/MRT_TableHeadCellResizeHandle.module.css +44 -0
  253. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +68 -0
  254. package/src/components/head/MRT_TableHeadCellSortLabel.module.css +22 -0
  255. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +90 -0
  256. package/src/components/head/MRT_TableHeadRow.module.css +12 -0
  257. package/src/components/head/MRT_TableHeadRow.tsx +105 -0
  258. package/src/components/inputs/MRT_EditCellTextInput.tsx +214 -0
  259. package/src/components/inputs/MRT_FilterCheckBox.module.css +4 -0
  260. package/src/components/inputs/MRT_FilterCheckbox.tsx +80 -0
  261. package/src/components/inputs/MRT_FilterRangeFields.module.css +5 -0
  262. package/src/components/inputs/MRT_FilterRangeFields.tsx +36 -0
  263. package/src/components/inputs/MRT_FilterRangeSlider.module.css +6 -0
  264. package/src/components/inputs/MRT_FilterRangeSlider.tsx +107 -0
  265. package/src/components/inputs/MRT_FilterTextInput.module.css +27 -0
  266. package/src/components/inputs/MRT_FilterTextInput.tsx +418 -0
  267. package/src/components/inputs/MRT_GlobalFilterTextInput.module.css +11 -0
  268. package/src/components/inputs/MRT_GlobalFilterTextInput.tsx +142 -0
  269. package/src/components/inputs/MRT_SelectCheckbox.tsx +138 -0
  270. package/src/components/menus/MRT_ColumnActionMenu.module.css +7 -0
  271. package/src/components/menus/MRT_ColumnActionMenu.tsx +288 -0
  272. package/src/components/menus/MRT_FilterOptionMenu.module.css +6 -0
  273. package/src/components/menus/MRT_FilterOptionMenu.tsx +279 -0
  274. package/src/components/menus/MRT_RowActionMenu.tsx +75 -0
  275. package/src/components/menus/MRT_ShowHideColumnsMenu.module.css +10 -0
  276. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +136 -0
  277. package/src/components/menus/MRT_ShowHideColumnsMenuItems.module.css +35 -0
  278. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +171 -0
  279. package/src/components/modals/MRT_EditRowModal.tsx +98 -0
  280. package/src/components/table/MRT_Table.module.css +7 -0
  281. package/src/components/table/MRT_Table.tsx +155 -0
  282. package/src/components/table/MRT_TableContainer.module.css +32 -0
  283. package/src/components/table/MRT_TableContainer.tsx +124 -0
  284. package/src/components/table/MRT_TablePaper.module.css +88 -0
  285. package/src/components/table/MRT_TablePaper.tsx +91 -0
  286. package/src/components/toolbar/MRT_BottomToolbar.module.css +40 -0
  287. package/src/components/toolbar/MRT_BottomToolbar.tsx +99 -0
  288. package/src/components/toolbar/MRT_ProgressBar.module.css +10 -0
  289. package/src/components/toolbar/MRT_ProgressBar.tsx +54 -0
  290. package/src/components/toolbar/MRT_TablePagination.module.css +20 -0
  291. package/src/components/toolbar/MRT_TablePagination.tsx +175 -0
  292. package/src/components/toolbar/MRT_ToolbarAlertBanner.module.css +37 -0
  293. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +169 -0
  294. package/src/components/toolbar/MRT_ToolbarDropZone.module.css +23 -0
  295. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +68 -0
  296. package/src/components/toolbar/MRT_ToolbarInternalButtons.module.css +6 -0
  297. package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +74 -0
  298. package/src/components/toolbar/MRT_TopToolbar.module.css +24 -0
  299. package/src/components/toolbar/MRT_TopToolbar.tsx +127 -0
  300. package/src/components/toolbar/common.styles.module.css +10 -0
  301. package/src/fns/aggregationFns.ts +3 -0
  302. package/src/fns/filterFns.ts +243 -0
  303. package/src/fns/sortingFns.ts +34 -0
  304. package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +25 -0
  305. package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +32 -0
  306. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +94 -0
  307. package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +32 -0
  308. package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +26 -0
  309. package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +36 -0
  310. package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +36 -0
  311. package/src/hooks/useMRT_ColumnVirtualizer.ts +135 -0
  312. package/src/hooks/useMRT_Effects.ts +109 -0
  313. package/src/hooks/useMRT_RowVirtualizer.ts +101 -0
  314. package/src/hooks/useMRT_Rows.ts +47 -0
  315. package/src/hooks/useMRT_TableInstance.ts +320 -0
  316. package/src/hooks/useMRT_TableOptions.ts +300 -0
  317. package/src/hooks/useMRT_TableSnapshot.ts +134 -0
  318. package/src/hooks/useMRT_VirtualizerScrollElement.ts +31 -0
  319. package/src/hooks/useMantineReactTable.ts +23 -0
  320. package/src/icons.ts +108 -0
  321. package/src/index.ts +91 -0
  322. package/src/locales/ar.ts +96 -0
  323. package/src/locales/az.ts +96 -0
  324. package/src/locales/bg.ts +96 -0
  325. package/src/locales/cs.ts +97 -0
  326. package/src/locales/da.ts +96 -0
  327. package/src/locales/de.ts +96 -0
  328. package/src/locales/el.ts +96 -0
  329. package/src/locales/en.ts +96 -0
  330. package/src/locales/es.ts +96 -0
  331. package/src/locales/et.ts +97 -0
  332. package/src/locales/fa.ts +96 -0
  333. package/src/locales/fi.ts +97 -0
  334. package/src/locales/fr.ts +96 -0
  335. package/src/locales/he.ts +96 -0
  336. package/src/locales/hr.ts +96 -0
  337. package/src/locales/hu.ts +96 -0
  338. package/src/locales/hy.ts +96 -0
  339. package/src/locales/id.ts +97 -0
  340. package/src/locales/it.ts +96 -0
  341. package/src/locales/ja.ts +96 -0
  342. package/src/locales/ko.ts +96 -0
  343. package/src/locales/nl.ts +96 -0
  344. package/src/locales/no.ts +97 -0
  345. package/src/locales/np.ts +97 -0
  346. package/src/locales/pl.ts +96 -0
  347. package/src/locales/pt-BR.ts +96 -0
  348. package/src/locales/pt.ts +96 -0
  349. package/src/locales/ro.ts +96 -0
  350. package/src/locales/ru.ts +96 -0
  351. package/src/locales/sk.ts +97 -0
  352. package/src/locales/sr-Cyrl-RS.ts +96 -0
  353. package/src/locales/sr-Latn-RS.ts +96 -0
  354. package/src/locales/sv.ts +96 -0
  355. package/src/locales/th.ts +97 -0
  356. package/src/locales/tr.ts +96 -0
  357. package/src/locales/uk.ts +96 -0
  358. package/src/locales/vi.ts +96 -0
  359. package/src/locales/zh-Hans.ts +95 -0
  360. package/src/locales/zh-Hant.ts +95 -0
  361. package/src/types.ts +1299 -0
  362. package/src/typings.d.ts +1 -0
  363. package/src/utils/column.utils.ts +157 -0
  364. package/src/utils/displayColumn.utils.ts +153 -0
  365. package/src/utils/row.utils.ts +263 -0
  366. package/src/utils/snapshot.utils.ts +97 -0
  367. package/src/utils/style.utils.ts +32 -0
  368. package/src/utils/tanstack.helpers.ts +66 -0
  369. package/src/utils/utils.ts +15 -0
  370. package/src/utils/virtualization.utils.ts +85 -0
  371. package/styles.css +1381 -0
@@ -0,0 +1,114 @@
1
+ 'use no memo';
2
+
3
+ import { Highlight, type HighlightProps } from '@mantine/core';
4
+
5
+ import {
6
+ type MRT_Cell,
7
+ type MRT_CellValue,
8
+ type MRT_RowData,
9
+ type MRT_TableInstance,
10
+ } from '../../types';
11
+ import { parseFromValuesOrFunc } from '../../utils/utils';
12
+
13
+ const allowedTypes = ['string', 'number'];
14
+ const allowedFilterVariants = ['text', 'autocomplete'];
15
+
16
+ interface Props<TData extends MRT_RowData, TValue = MRT_CellValue> {
17
+ cell: MRT_Cell<TData, TValue>;
18
+ renderedColumnIndex?: number;
19
+ renderedRowIndex?: number;
20
+ table: MRT_TableInstance<TData>;
21
+ }
22
+
23
+ export const MRT_TableBodyCellValue = <TData extends MRT_RowData>({
24
+ cell,
25
+ renderedColumnIndex = 0,
26
+ renderedRowIndex = 0,
27
+ table,
28
+ }: Props<TData>) => {
29
+ const {
30
+ getState,
31
+ options: {
32
+ enableFilterMatchHighlighting,
33
+ mantineHighlightProps = { size: 'sm' },
34
+ },
35
+ } = table;
36
+ const { column, row } = cell;
37
+ const { columnDef } = column;
38
+ const { globalFilter, globalFilterFn } = getState();
39
+ const filterValue = column.getFilterValue();
40
+
41
+ const highlightProps = parseFromValuesOrFunc(mantineHighlightProps, {
42
+ cell,
43
+ column,
44
+ row,
45
+ table,
46
+ }) as Partial<HighlightProps>;
47
+
48
+ let renderedCellValue =
49
+ cell.getIsAggregated() && columnDef.AggregatedCell
50
+ ? columnDef.AggregatedCell({
51
+ cell,
52
+ column,
53
+ row,
54
+ table,
55
+ })
56
+ : row.getIsGrouped() && !cell.getIsGrouped()
57
+ ? null
58
+ : cell.getIsGrouped() && columnDef.GroupedCell
59
+ ? columnDef.GroupedCell({
60
+ cell,
61
+ column,
62
+ row,
63
+ table,
64
+ })
65
+ : undefined;
66
+
67
+ const isGroupedValue = renderedCellValue !== undefined;
68
+
69
+ if (!isGroupedValue) {
70
+ renderedCellValue = cell.renderValue() as number | string;
71
+ }
72
+
73
+ if (
74
+ enableFilterMatchHighlighting &&
75
+ columnDef.enableFilterMatchHighlighting !== false &&
76
+ renderedCellValue &&
77
+ allowedTypes.includes(typeof renderedCellValue) &&
78
+ ((filterValue &&
79
+ allowedTypes.includes(typeof filterValue) &&
80
+ allowedFilterVariants.includes(columnDef.filterVariant as string)) ||
81
+ (globalFilter &&
82
+ allowedTypes.includes(typeof globalFilter) &&
83
+ column.getCanGlobalFilter()))
84
+ ) {
85
+ let highlight: string | string[] = (
86
+ column.getFilterValue() ??
87
+ globalFilter ??
88
+ ''
89
+ ).toString() as string;
90
+ if ((filterValue ? columnDef._filterFn : globalFilterFn) === 'fuzzy') {
91
+ highlight = highlight.split(' ');
92
+ }
93
+
94
+ renderedCellValue = (
95
+ <Highlight color="yellow.3" highlight={highlight} {...highlightProps}>
96
+ {renderedCellValue?.toString()}
97
+ </Highlight>
98
+ );
99
+ }
100
+
101
+ if (columnDef.Cell && !isGroupedValue) {
102
+ renderedCellValue = columnDef.Cell({
103
+ cell,
104
+ column,
105
+ renderedCellValue,
106
+ renderedColumnIndex,
107
+ renderedRowIndex,
108
+ row,
109
+ table,
110
+ });
111
+ }
112
+
113
+ return renderedCellValue;
114
+ };
@@ -0,0 +1,89 @@
1
+ 'use no memo';
2
+
3
+ import clsx from 'clsx';
4
+
5
+ import classes from './MRT_TableBody.module.css';
6
+
7
+ import { useMemo } from 'react';
8
+
9
+ import { createRow } from '@tanstack/react-table';
10
+
11
+ import { type TableProps, type TableTrProps, Text } from '@mantine/core';
12
+
13
+ import { MRT_TableBodyRow } from './MRT_TableBodyRow';
14
+
15
+ import {
16
+ type MRT_Row,
17
+ type MRT_RowData,
18
+ type MRT_TableInstance,
19
+ } from '../../types';
20
+
21
+ interface Props<TData extends MRT_RowData> extends TableTrProps {
22
+ table: MRT_TableInstance<TData>;
23
+ tableProps: Partial<TableProps>;
24
+ }
25
+
26
+ export const MRT_TableBodyEmptyRow = <TData extends MRT_RowData>({
27
+ table,
28
+ tableProps,
29
+ ...commonRowProps
30
+ }: Props<TData>) => {
31
+ const {
32
+ getState,
33
+ options: { layoutMode, localization, renderEmptyRowsFallback },
34
+ refs: { tablePaperRef },
35
+ } = table;
36
+ const { columnFilters, globalFilter } = getState();
37
+
38
+ const emptyRow = useMemo(
39
+ () =>
40
+ createRow(
41
+ table as any,
42
+ 'mrt-row-empty',
43
+ {} as TData,
44
+ 0,
45
+ 0,
46
+ ) as MRT_Row<TData>,
47
+ [],
48
+ );
49
+
50
+ const emptyRowProps = {
51
+ ...commonRowProps,
52
+ renderedRowIndex: 0,
53
+ row: emptyRow,
54
+ virtualRow: undefined,
55
+ };
56
+
57
+ return (
58
+ <MRT_TableBodyRow
59
+ className={clsx(
60
+ 'mrt-table-body-row',
61
+ layoutMode?.startsWith('grid') && classes['empty-row-tr-grid'],
62
+ )}
63
+ table={table}
64
+ tableProps={tableProps}
65
+ {...emptyRowProps}
66
+ >
67
+ <td
68
+ className={clsx(
69
+ 'mrt-table-body-cell',
70
+ layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],
71
+ )}
72
+ colSpan={table.getVisibleLeafColumns().length}
73
+ >
74
+ {renderEmptyRowsFallback?.({ table }) ?? (
75
+ <Text
76
+ __vars={{
77
+ '--mrt-paper-width': `${tablePaperRef.current?.clientWidth}`,
78
+ }}
79
+ className={clsx(classes['empty-row-td-content'])}
80
+ >
81
+ {globalFilter || columnFilters.length
82
+ ? localization.noResultsFound
83
+ : localization.noRecordsToDisplay}
84
+ </Text>
85
+ )}
86
+ </td>
87
+ </MRT_TableBodyRow>
88
+ );
89
+ };
@@ -0,0 +1,261 @@
1
+ .root {
2
+ --hover-thickness: 3px;
3
+ --drag-thickness: 1px;
4
+
5
+ box-sizing: border-box;
6
+ transition: all 150ms ease-in-out;
7
+ width: 100%;
8
+
9
+ /* default background-color */
10
+ &:not([data-striped], [data-striped='false']) {
11
+ background-color: var(--mrt-base-background-color);
12
+ }
13
+ /* striped background-colors (take detail panels and virtualization into account) */
14
+ &:not([data-selected], [data-row-pinned]) {
15
+ &[data-striped='odd'] {
16
+ background-color: var(--mrt-striped-row-background-color);
17
+ }
18
+ &[data-striped='even'] {
19
+ background-color: var(--mrt-striped-row-background-color);
20
+ }
21
+ }
22
+
23
+ /* column pinning styles */
24
+ &:not([data-selected], [data-row-pinned]) {
25
+ td {
26
+ &[data-column-pinned] {
27
+ &::before {
28
+ background-color: var(--mrt-pinned-column-background-color);
29
+ }
30
+ }
31
+ }
32
+ &[data-striped='odd'] {
33
+ td {
34
+ &[data-column-pinned] {
35
+ &::before {
36
+ background-color: var(--mrt-striped-row-background-color);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ &[data-striped='even'] {
42
+ td {
43
+ &[data-column-pinned] {
44
+ &::before {
45
+ background-color: var(--mrt-striped-row-background-color);
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ td {
53
+ &[data-column-pinned] {
54
+ background-color: var(--mrt-pinned-column-background-color);
55
+ opacity: 0.97;
56
+ position: sticky;
57
+ z-index: 1;
58
+
59
+ &::before {
60
+ content: '';
61
+ height: 100%;
62
+ left: 0;
63
+ position: absolute;
64
+ top: 0;
65
+ width: 100%;
66
+ z-index: -1;
67
+ }
68
+
69
+ &[data-column-pinned='left'] {
70
+ /* logical offsets keep columns pinned to the same side of the row in rtl */
71
+ inset-inline-start: calc(var(--mrt-table-cell-left, 0) * 1px);
72
+ &[data-last-left-pinned] {
73
+ &::before {
74
+ --mrt-pinned-shadow-x: -6px;
75
+ @mixin rtl {
76
+ --mrt-pinned-shadow-x: 6px;
77
+ }
78
+ box-shadow: var(--mrt-pinned-shadow-x) 0 6px -6px alpha(
79
+ light-dark(
80
+ var(--mantine-color-gray-outline),
81
+ var(--mantine-color-dark-outline)
82
+ ),
83
+ 0.5
84
+ ) inset;
85
+ }
86
+ }
87
+ }
88
+
89
+ &[data-column-pinned='right'] {
90
+ inset-inline-end: calc(var(--mrt-table-cell-right, 0) * 1px);
91
+ &[data-first-right-pinned] {
92
+ &::before {
93
+ --mrt-pinned-shadow-x: 6px;
94
+ @mixin rtl {
95
+ --mrt-pinned-shadow-x: -6px;
96
+ }
97
+ box-shadow: var(--mrt-pinned-shadow-x) 0 6px -6px alpha(
98
+ light-dark(
99
+ var(--mantine-color-gray-outline),
100
+ var(--mantine-color-dark-outline)
101
+ ),
102
+ 0.5
103
+ ) inset;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ /* end column pinning styles */
110
+ /* row pinning styles */
111
+ &[data-row-pinned] {
112
+ background-color: var(--mrt-pinned-row-background-color, --mantine-color-body);
113
+ bottom: calc(var(--mrt-pinned-row-bottom) * 1px);
114
+ opacity: 0.97;
115
+ top: calc(var(--mrt-pinned-row-top) * 1px);
116
+
117
+ td {
118
+ &::before {
119
+ background-color: var(--mrt-pinned-row-background-color);
120
+ content: '';
121
+ height: 100%;
122
+ left: 0;
123
+ position: absolute;
124
+ top: 0;
125
+ width: 100%;
126
+ z-index: -1;
127
+ }
128
+ &[data-column-pinned] {
129
+ background-color: var(--mrt-pinned-column-background-color);
130
+
131
+ &::before {
132
+ background-color: var(--mrt-pinned-row-background-color);
133
+ content: '';
134
+ height: 100%;
135
+ left: 0;
136
+ position: absolute;
137
+ top: 0;
138
+ width: 100%;
139
+ z-index: -1;
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ &[data-row-pinned='sticky'] {
146
+ z-index: 2;
147
+ position: sticky;
148
+ }
149
+ /* end row pinning styles */
150
+
151
+ /* selection styles */
152
+ &[data-selected] {
153
+ background-color: var(--mrt-selected-row-background-color, --mantine-color-body);
154
+
155
+ td {
156
+ &[data-column-pinned] {
157
+ background-color: var(--mrt-pinned-column-background-color);
158
+
159
+ &::before {
160
+ background-color: var(--mrt-selected-row-background-color);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ /* end selection styles */
166
+
167
+ &[data-hover] {
168
+ &:hover {
169
+ td {
170
+ background-color: var(--mrt-row-hover-background-color);
171
+ &[data-column-pinned] {
172
+ background-color: var(--mrt-base-background-color);
173
+ &::before {
174
+ background-color: var(--mrt-row-hover-background-color);
175
+ }
176
+ }
177
+ }
178
+ &:not([data-selected], [data-row-pinned]) {
179
+ &[data-striped='odd'] {
180
+ td {
181
+ background-color: var(--mrt-striped-row-hover-background-color);
182
+ &[data-column-pinned] {
183
+ background-color: var(--mrt-base-background-color);
184
+ &::before {
185
+ background-color: var(--mrt-striped-row-hover-background-color);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ &[data-striped='even'] {
191
+ td {
192
+ background-color: var(--mrt-striped-row-hover-background-color);
193
+ &[data-column-pinned] {
194
+ background-color: var(--mrt-base-background-color);
195
+ &::before {
196
+ background-color: var(--mrt-striped-row-hover-background-color);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ &[data-selected] {
203
+ td {
204
+ background-color: var(--mrt-selected-row-hover-background-color);
205
+
206
+ &[data-column-pinned] {
207
+ background-color: var(--mrt-base-background-color);
208
+
209
+ &::before {
210
+ background-color: var(--mrt-selected-row-hover-background-color);
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+
218
+ &[data-dragging-row] {
219
+ opacity: 0.5;
220
+ border-bottom: var(--drag-thickness) dashed var(--drag-color);
221
+ border-top: var(--drag-thickness) dashed var(--drag-color);
222
+ td {
223
+ &:first-child {
224
+ border-left: var(--drag-thickness) dashed var(--drag-color);
225
+ }
226
+ &:last-child {
227
+ border-right: var(--drag-thickness) dashed var(--drag-color);
228
+ }
229
+ }
230
+ }
231
+
232
+ &[data-hovered-row-target] {
233
+ td {
234
+ opacity: 0.5;
235
+ border-top: var(--hover-thickness) dashed
236
+ var(--mrt-dragging-hovered-border-color);
237
+ border-bottom: var(--hover-thickness) dashed
238
+ var(--mrt-dragging-hovered-border-color);
239
+ &:first-child {
240
+ border-left: var(--hover-thickness) dashed
241
+ var(--mrt-dragging-hovered-border-color);
242
+ }
243
+ &:last-child {
244
+ border-right: var(--hover-thickness) dashed
245
+ var(--mrt-dragging-hovered-border-color);
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+ .root-grid {
252
+ display: flex;
253
+ }
254
+
255
+ .root-virtualized {
256
+ position: absolute !important;
257
+ top: 0;
258
+ transition: none !important;
259
+ transform: translateY(var(--mrt-virtual-row-start));
260
+ will-change: transform;
261
+ }