@lucasbernardosn/react-table 0.0.0-stage → 0.2.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -2
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/components/column-menu/column-menu-check.d.ts +8 -0
  5. package/dist/components/column-menu/column-menu-check.d.ts.map +1 -0
  6. package/dist/components/column-menu/column-menu-check.js +17 -0
  7. package/dist/components/column-menu/column-menu-check.js.map +1 -0
  8. package/dist/components/column-menu/column-menu-hide-item.d.ts +23 -0
  9. package/dist/components/column-menu/column-menu-hide-item.d.ts.map +1 -0
  10. package/dist/components/column-menu/column-menu-hide-item.js +27 -0
  11. package/dist/components/column-menu/column-menu-hide-item.js.map +1 -0
  12. package/dist/components/column-menu/column-menu-labels.d.ts +21 -0
  13. package/dist/components/column-menu/column-menu-labels.d.ts.map +1 -0
  14. package/dist/components/column-menu/column-menu-labels.js +14 -0
  15. package/dist/components/column-menu/column-menu-labels.js.map +1 -0
  16. package/dist/components/column-menu/column-menu-pin-items.d.ts +25 -0
  17. package/dist/components/column-menu/column-menu-pin-items.d.ts.map +1 -0
  18. package/dist/components/column-menu/column-menu-pin-items.js +64 -0
  19. package/dist/components/column-menu/column-menu-pin-items.js.map +1 -0
  20. package/dist/components/column-menu/column-menu-popup.d.ts +40 -0
  21. package/dist/components/column-menu/column-menu-popup.d.ts.map +1 -0
  22. package/dist/components/column-menu/column-menu-popup.js +67 -0
  23. package/dist/components/column-menu/column-menu-popup.js.map +1 -0
  24. package/dist/components/column-menu/column-menu-root.d.ts +34 -0
  25. package/dist/components/column-menu/column-menu-root.d.ts.map +1 -0
  26. package/dist/components/column-menu/column-menu-root.js +36 -0
  27. package/dist/components/column-menu/column-menu-root.js.map +1 -0
  28. package/dist/components/column-menu/column-menu-sort-items.d.ts +30 -0
  29. package/dist/components/column-menu/column-menu-sort-items.d.ts.map +1 -0
  30. package/dist/components/column-menu/column-menu-sort-items.js +62 -0
  31. package/dist/components/column-menu/column-menu-sort-items.js.map +1 -0
  32. package/dist/components/column-menu/column-menu-trigger.d.ts +23 -0
  33. package/dist/components/column-menu/column-menu-trigger.d.ts.map +1 -0
  34. package/dist/components/column-menu/column-menu-trigger.js +38 -0
  35. package/dist/components/column-menu/column-menu-trigger.js.map +1 -0
  36. package/dist/components/column-menu/index.d.ts +2 -0
  37. package/dist/components/column-menu/index.js +2 -0
  38. package/dist/components/column-menu/index.parts.d.ts +13 -0
  39. package/dist/components/column-menu/index.parts.d.ts.map +1 -0
  40. package/dist/components/column-menu/index.parts.js +20 -0
  41. package/dist/components/column-menu/index.parts.js.map +1 -0
  42. package/dist/components/columns-panel/columns-panel-item.d.ts +34 -0
  43. package/dist/components/columns-panel/columns-panel-item.d.ts.map +1 -0
  44. package/dist/components/columns-panel/columns-panel-item.js +109 -0
  45. package/dist/components/columns-panel/columns-panel-item.js.map +1 -0
  46. package/dist/components/columns-panel/columns-panel-root.d.ts +51 -0
  47. package/dist/components/columns-panel/columns-panel-root.d.ts.map +1 -0
  48. package/dist/components/columns-panel/columns-panel-root.js +134 -0
  49. package/dist/components/columns-panel/columns-panel-root.js.map +1 -0
  50. package/dist/components/columns-panel/get-columns-panel-column-order.d.ts +16 -0
  51. package/dist/components/columns-panel/get-columns-panel-column-order.d.ts.map +1 -0
  52. package/dist/components/columns-panel/get-columns-panel-column-order.js +24 -0
  53. package/dist/components/columns-panel/get-columns-panel-column-order.js.map +1 -0
  54. package/dist/components/columns-panel/index.d.ts +2 -0
  55. package/dist/components/columns-panel/index.js +2 -0
  56. package/dist/components/columns-panel/index.parts.d.ts +8 -0
  57. package/dist/components/columns-panel/index.parts.d.ts.map +1 -0
  58. package/dist/components/columns-panel/index.parts.js +12 -0
  59. package/dist/components/columns-panel/index.parts.js.map +1 -0
  60. package/dist/components/data-table/body/data-table-body.d.ts +58 -0
  61. package/dist/components/data-table/body/data-table-body.d.ts.map +1 -0
  62. package/dist/components/data-table/body/data-table-body.js +99 -0
  63. package/dist/components/data-table/body/data-table-body.js.map +1 -0
  64. package/dist/components/data-table/body/data-table-cell.d.ts +26 -0
  65. package/dist/components/data-table/body/data-table-cell.d.ts.map +1 -0
  66. package/dist/components/data-table/body/data-table-cell.js +80 -0
  67. package/dist/components/data-table/body/data-table-cell.js.map +1 -0
  68. package/dist/components/data-table/body/data-table-empty.d.ts +38 -0
  69. package/dist/components/data-table/body/data-table-empty.d.ts.map +1 -0
  70. package/dist/components/data-table/body/data-table-empty.js +71 -0
  71. package/dist/components/data-table/body/data-table-empty.js.map +1 -0
  72. package/dist/components/data-table/body/data-table-row-focus.d.ts +32 -0
  73. package/dist/components/data-table/body/data-table-row-focus.d.ts.map +1 -0
  74. package/dist/components/data-table/body/data-table-row-focus.js +58 -0
  75. package/dist/components/data-table/body/data-table-row-focus.js.map +1 -0
  76. package/dist/components/data-table/body/data-table-row.d.ts +67 -0
  77. package/dist/components/data-table/body/data-table-row.d.ts.map +1 -0
  78. package/dist/components/data-table/body/data-table-row.js +154 -0
  79. package/dist/components/data-table/body/data-table-row.js.map +1 -0
  80. package/dist/components/data-table/body/use-data-table-row-focus-recovery.d.ts +19 -0
  81. package/dist/components/data-table/body/use-data-table-row-focus-recovery.d.ts.map +1 -0
  82. package/dist/components/data-table/body/use-data-table-row-focus-recovery.js +64 -0
  83. package/dist/components/data-table/body/use-data-table-row-focus-recovery.js.map +1 -0
  84. package/dist/components/data-table/header/data-table-header-button.d.ts +25 -0
  85. package/dist/components/data-table/header/data-table-header-button.d.ts.map +1 -0
  86. package/dist/components/data-table/header/data-table-header-button.js +57 -0
  87. package/dist/components/data-table/header/data-table-header-button.js.map +1 -0
  88. package/dist/components/data-table/header/data-table-header-cell.d.ts +34 -0
  89. package/dist/components/data-table/header/data-table-header-cell.d.ts.map +1 -0
  90. package/dist/components/data-table/header/data-table-header-cell.js +97 -0
  91. package/dist/components/data-table/header/data-table-header-cell.js.map +1 -0
  92. package/dist/components/data-table/header/data-table-header-content.d.ts +21 -0
  93. package/dist/components/data-table/header/data-table-header-content.d.ts.map +1 -0
  94. package/dist/components/data-table/header/data-table-header-content.js +37 -0
  95. package/dist/components/data-table/header/data-table-header-content.js.map +1 -0
  96. package/dist/components/data-table/header/data-table-header-row.d.ts +15 -0
  97. package/dist/components/data-table/header/data-table-header-row.d.ts.map +1 -0
  98. package/dist/components/data-table/header/data-table-header-row.js +28 -0
  99. package/dist/components/data-table/header/data-table-header-row.js.map +1 -0
  100. package/dist/components/data-table/header/data-table-header.d.ts +46 -0
  101. package/dist/components/data-table/header/data-table-header.d.ts.map +1 -0
  102. package/dist/components/data-table/header/data-table-header.js +80 -0
  103. package/dist/components/data-table/header/data-table-header.js.map +1 -0
  104. package/dist/components/data-table/index.d.ts +2 -0
  105. package/dist/components/data-table/index.js +2 -0
  106. package/dist/components/data-table/index.parts.d.ts +33 -0
  107. package/dist/components/data-table/index.parts.d.ts.map +1 -0
  108. package/dist/components/data-table/index.parts.js +62 -0
  109. package/dist/components/data-table/index.parts.js.map +1 -0
  110. package/dist/components/data-table/loading/get-data-table-loading-without-rows.d.ts +16 -0
  111. package/dist/components/data-table/loading/get-data-table-loading-without-rows.d.ts.map +1 -0
  112. package/dist/components/data-table/loading/get-data-table-loading-without-rows.js +18 -0
  113. package/dist/components/data-table/loading/get-data-table-loading-without-rows.js.map +1 -0
  114. package/dist/components/data-table/loading/use-data-table-loading-inert.d.ts +16 -0
  115. package/dist/components/data-table/loading/use-data-table-loading-inert.d.ts.map +1 -0
  116. package/dist/components/data-table/loading/use-data-table-loading-inert.js +54 -0
  117. package/dist/components/data-table/loading/use-data-table-loading-inert.js.map +1 -0
  118. package/dist/components/data-table/loading/use-data-table-loading.d.ts +13 -0
  119. package/dist/components/data-table/loading/use-data-table-loading.d.ts.map +1 -0
  120. package/dist/components/data-table/loading/use-data-table-loading.js +40 -0
  121. package/dist/components/data-table/loading/use-data-table-loading.js.map +1 -0
  122. package/dist/components/data-table/pagination/data-table-page-button.d.ts +45 -0
  123. package/dist/components/data-table/pagination/data-table-page-button.d.ts.map +1 -0
  124. package/dist/components/data-table/pagination/data-table-page-button.js +67 -0
  125. package/dist/components/data-table/pagination/data-table-page-button.js.map +1 -0
  126. package/dist/components/data-table/pagination/data-table-page-size-select.d.ts +47 -0
  127. package/dist/components/data-table/pagination/data-table-page-size-select.d.ts.map +1 -0
  128. package/dist/components/data-table/pagination/data-table-page-size-select.js +68 -0
  129. package/dist/components/data-table/pagination/data-table-page-size-select.js.map +1 -0
  130. package/dist/components/data-table/pagination/data-table-page-status.d.ts +43 -0
  131. package/dist/components/data-table/pagination/data-table-page-status.d.ts.map +1 -0
  132. package/dist/components/data-table/pagination/data-table-page-status.js +48 -0
  133. package/dist/components/data-table/pagination/data-table-page-status.js.map +1 -0
  134. package/dist/components/data-table/pagination/data-table-pagination.d.ts +38 -0
  135. package/dist/components/data-table/pagination/data-table-pagination.d.ts.map +1 -0
  136. package/dist/components/data-table/pagination/data-table-pagination.js +87 -0
  137. package/dist/components/data-table/pagination/data-table-pagination.js.map +1 -0
  138. package/dist/components/data-table/pagination/data-table-row-range.d.ts +49 -0
  139. package/dist/components/data-table/pagination/data-table-row-range.d.ts.map +1 -0
  140. package/dist/components/data-table/pagination/data-table-row-range.js +63 -0
  141. package/dist/components/data-table/pagination/data-table-row-range.js.map +1 -0
  142. package/dist/components/data-table/pagination/data-table-selected-count.d.ts +37 -0
  143. package/dist/components/data-table/pagination/data-table-selected-count.d.ts.map +1 -0
  144. package/dist/components/data-table/pagination/data-table-selected-count.js +44 -0
  145. package/dist/components/data-table/pagination/data-table-selected-count.js.map +1 -0
  146. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.d.ts +15 -0
  147. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.d.ts.map +1 -0
  148. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.js +38 -0
  149. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.js.map +1 -0
  150. package/dist/components/data-table/resize/data-table-resize-handle.d.ts +48 -0
  151. package/dist/components/data-table/resize/data-table-resize-handle.d.ts.map +1 -0
  152. package/dist/components/data-table/resize/data-table-resize-handle.js +116 -0
  153. package/dist/components/data-table/resize/data-table-resize-handle.js.map +1 -0
  154. package/dist/components/data-table/resize/use-data-table-resize-scroll.d.ts +18 -0
  155. package/dist/components/data-table/resize/use-data-table-resize-scroll.d.ts.map +1 -0
  156. package/dist/components/data-table/resize/use-data-table-resize-scroll.js +55 -0
  157. package/dist/components/data-table/resize/use-data-table-resize-scroll.js.map +1 -0
  158. package/dist/components/data-table/root/data-table-grid-class-names.d.ts +10 -0
  159. package/dist/components/data-table/root/data-table-grid-class-names.d.ts.map +1 -0
  160. package/dist/components/data-table/root/data-table-grid-class-names.js +22 -0
  161. package/dist/components/data-table/root/data-table-grid-class-names.js.map +1 -0
  162. package/dist/components/data-table/root/data-table-root.d.ts +41 -0
  163. package/dist/components/data-table/root/data-table-root.d.ts.map +1 -0
  164. package/dist/components/data-table/root/data-table-root.js +72 -0
  165. package/dist/components/data-table/root/data-table-root.js.map +1 -0
  166. package/dist/components/data-table/root/data-table-scroll-area.d.ts +30 -0
  167. package/dist/components/data-table/root/data-table-scroll-area.d.ts.map +1 -0
  168. package/dist/components/data-table/root/data-table-scroll-area.js +137 -0
  169. package/dist/components/data-table/root/data-table-scroll-area.js.map +1 -0
  170. package/dist/components/data-table/root/get-data-table-column-layout.d.ts +45 -0
  171. package/dist/components/data-table/root/get-data-table-column-layout.d.ts.map +1 -0
  172. package/dist/components/data-table/root/get-data-table-column-layout.js +55 -0
  173. package/dist/components/data-table/root/get-data-table-column-layout.js.map +1 -0
  174. package/dist/components/data-table/root/get-data-table-column-pinning.d.ts +46 -0
  175. package/dist/components/data-table/root/get-data-table-column-pinning.d.ts.map +1 -0
  176. package/dist/components/data-table/root/get-data-table-column-pinning.js +46 -0
  177. package/dist/components/data-table/root/get-data-table-column-pinning.js.map +1 -0
  178. package/dist/components/data-table/root/get-data-table-scroll-parent.d.ts +13 -0
  179. package/dist/components/data-table/root/get-data-table-scroll-parent.d.ts.map +1 -0
  180. package/dist/components/data-table/root/get-data-table-scroll-parent.js +20 -0
  181. package/dist/components/data-table/root/get-data-table-scroll-parent.js.map +1 -0
  182. package/dist/components/data-table/root/use-data-table-column-layout.d.ts +25 -0
  183. package/dist/components/data-table/root/use-data-table-column-layout.d.ts.map +1 -0
  184. package/dist/components/data-table/root/use-data-table-column-layout.js +106 -0
  185. package/dist/components/data-table/root/use-data-table-column-layout.js.map +1 -0
  186. package/dist/components/data-table/root/use-data-table-header-offset.d.ts +15 -0
  187. package/dist/components/data-table/root/use-data-table-header-offset.d.ts.map +1 -0
  188. package/dist/components/data-table/root/use-data-table-header-offset.js +35 -0
  189. package/dist/components/data-table/root/use-data-table-header-offset.js.map +1 -0
  190. package/dist/components/data-table/selection/data-table-row-checkbox.d.ts +33 -0
  191. package/dist/components/data-table/selection/data-table-row-checkbox.d.ts.map +1 -0
  192. package/dist/components/data-table/selection/data-table-row-checkbox.js +50 -0
  193. package/dist/components/data-table/selection/data-table-row-checkbox.js.map +1 -0
  194. package/dist/components/data-table/selection/data-table-select-all-checkbox.d.ts +31 -0
  195. package/dist/components/data-table/selection/data-table-select-all-checkbox.d.ts.map +1 -0
  196. package/dist/components/data-table/selection/data-table-select-all-checkbox.js +44 -0
  197. package/dist/components/data-table/selection/data-table-select-all-checkbox.js.map +1 -0
  198. package/dist/components/data-table/selection/data-table-selection-bar.d.ts +51 -0
  199. package/dist/components/data-table/selection/data-table-selection-bar.d.ts.map +1 -0
  200. package/dist/components/data-table/selection/data-table-selection-bar.js +58 -0
  201. package/dist/components/data-table/selection/data-table-selection-bar.js.map +1 -0
  202. package/dist/components/data-table/selection/selection-column-def.d.ts +54 -0
  203. package/dist/components/data-table/selection/selection-column-def.d.ts.map +1 -0
  204. package/dist/components/data-table/selection/selection-column-def.js +55 -0
  205. package/dist/components/data-table/selection/selection-column-def.js.map +1 -0
  206. package/dist/components/data-table/sorting/data-table-sort-indicator.d.ts +26 -0
  207. package/dist/components/data-table/sorting/data-table-sort-indicator.d.ts.map +1 -0
  208. package/dist/components/data-table/sorting/data-table-sort-indicator.js +64 -0
  209. package/dist/components/data-table/sorting/data-table-sort-indicator.js.map +1 -0
  210. package/dist/components/data-table/sorting/data-table-sort-trigger.d.ts +31 -0
  211. package/dist/components/data-table/sorting/data-table-sort-trigger.d.ts.map +1 -0
  212. package/dist/components/data-table/sorting/data-table-sort-trigger.js +46 -0
  213. package/dist/components/data-table/sorting/data-table-sort-trigger.js.map +1 -0
  214. package/dist/components/data-table/toolbar/data-table-density-select.d.ts +39 -0
  215. package/dist/components/data-table/toolbar/data-table-density-select.d.ts.map +1 -0
  216. package/dist/components/data-table/toolbar/data-table-density-select.js +60 -0
  217. package/dist/components/data-table/toolbar/data-table-density-select.js.map +1 -0
  218. package/dist/components/data-table/toolbar/data-table-sort-column-select.d.ts +48 -0
  219. package/dist/components/data-table/toolbar/data-table-sort-column-select.d.ts.map +1 -0
  220. package/dist/components/data-table/toolbar/data-table-sort-column-select.js +79 -0
  221. package/dist/components/data-table/toolbar/data-table-sort-column-select.js.map +1 -0
  222. package/dist/components/data-table/toolbar/data-table-sort-direction-select.d.ts +40 -0
  223. package/dist/components/data-table/toolbar/data-table-sort-direction-select.d.ts.map +1 -0
  224. package/dist/components/data-table/toolbar/data-table-sort-direction-select.js +66 -0
  225. package/dist/components/data-table/toolbar/data-table-sort-direction-select.js.map +1 -0
  226. package/dist/features/active-row/active-row-feature.d.ts +22 -0
  227. package/dist/features/active-row/active-row-feature.d.ts.map +1 -0
  228. package/dist/features/active-row/active-row-feature.js +55 -0
  229. package/dist/features/active-row/active-row-feature.js.map +1 -0
  230. package/dist/features/active-row/active-row-feature.types.d.ts +64 -0
  231. package/dist/features/active-row/active-row-feature.types.d.ts.map +1 -0
  232. package/dist/features/active-row/active-row-feature.types.js +0 -0
  233. package/dist/features/column-alignment/column-alignment-feature.d.ts +23 -0
  234. package/dist/features/column-alignment/column-alignment-feature.d.ts.map +1 -0
  235. package/dist/features/column-alignment/column-alignment-feature.js +34 -0
  236. package/dist/features/column-alignment/column-alignment-feature.js.map +1 -0
  237. package/dist/features/column-alignment/column-alignment-feature.types.d.ts +34 -0
  238. package/dist/features/column-alignment/column-alignment-feature.types.d.ts.map +1 -0
  239. package/dist/features/column-alignment/column-alignment-feature.types.js +0 -0
  240. package/dist/features/index.d.ts +9 -0
  241. package/dist/features/index.js +5 -0
  242. package/dist/features/loading/loading-feature.d.ts +30 -0
  243. package/dist/features/loading/loading-feature.d.ts.map +1 -0
  244. package/dist/features/loading/loading-feature.js +48 -0
  245. package/dist/features/loading/loading-feature.js.map +1 -0
  246. package/dist/features/loading/loading-feature.types.d.ts +50 -0
  247. package/dist/features/loading/loading-feature.types.d.ts.map +1 -0
  248. package/dist/features/loading/loading-feature.types.js +0 -0
  249. package/dist/features/row-density/row-density-feature.d.ts +26 -0
  250. package/dist/features/row-density/row-density-feature.d.ts.map +1 -0
  251. package/dist/features/row-density/row-density-feature.js +44 -0
  252. package/dist/features/row-density/row-density-feature.js.map +1 -0
  253. package/dist/features/row-density/row-density-feature.types.d.ts +53 -0
  254. package/dist/features/row-density/row-density-feature.types.d.ts.map +1 -0
  255. package/dist/features/row-density/row-density-feature.types.js +0 -0
  256. package/dist/types/index.d.ts +2 -0
  257. package/dist/types/index.js +0 -0
  258. package/dist/types/table-with.d.ts +96 -0
  259. package/dist/types/table-with.d.ts.map +1 -0
  260. package/dist/types/table-with.js +0 -0
  261. package/dist/utils/get-default-column-label.d.ts +17 -0
  262. package/dist/utils/get-default-column-label.d.ts.map +1 -0
  263. package/dist/utils/get-default-column-label.js +18 -0
  264. package/dist/utils/get-default-column-label.js.map +1 -0
  265. package/dist/utils/has-feature.d.ts +54 -0
  266. package/dist/utils/has-feature.d.ts.map +1 -0
  267. package/dist/utils/has-feature.js +55 -0
  268. package/dist/utils/has-feature.js.map +1 -0
  269. package/dist/utils/index.d.ts +3 -0
  270. package/dist/utils/index.js +3 -0
  271. package/package.json +80 -3
@@ -0,0 +1,40 @@
1
+ import { TableWith } from "../../../types/table-with.js";
2
+ import "../../../types/index.js";
3
+ import { RowData, SortDirection, TableFeatures } from "@tanstack/react-table";
4
+ import { Select } from "@lucasbernardosn/react-ui/collections/select";
5
+ import { MergeOverride } from "@lucasbernardosn/utils";
6
+ //#region src/components/data-table/toolbar/data-table-sort-direction-select.d.ts
7
+ export type DataTableSortDirectionSelectProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<Select.TriggerProps, {
8
+ /** A tabela. Exige `rowSortingFeature`. */
9
+ table: TableWith<TFeatures, TData, 'rowSortingFeature'>;
10
+ /**
11
+ * O nome de cada direção.
12
+ * @default { asc: 'Crescente', desc: 'Decrescente' }
13
+ */
14
+ labels?: Partial<Record<SortDirection, string>>;
15
+ /**
16
+ * O tamanho do select.
17
+ * @default 'sm'
18
+ */
19
+ size?: Select.RootProps<SortDirection>['size'];
20
+ }>;
21
+ /**
22
+ * O select da direção da ordenação, para ir junto com o `DataTable.SortColumnSelect`. Troca a
23
+ * direção da primeira coluna da ordenação; sem ordenação, fica desabilitado.
24
+ *
25
+ * Renderiza o `Select` do `ui` por dentro; as props passam para o trigger.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * <DataTable.SortDirectionSelect
30
+ * table={table}
31
+ * labels={{ asc: 'A–Z', desc: 'Z–A' }}
32
+ * />
33
+ * ```
34
+ */
35
+ export declare const DataTableSortDirectionSelect: {
36
+ <TFeatures extends TableFeatures, TData extends RowData>(props: DataTableSortDirectionSelectProps<TFeatures, TData>): import("react").JSX.Element;
37
+ displayName: string;
38
+ };
39
+ //#endregion
40
+ //# sourceMappingURL=data-table-sort-direction-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-sort-direction-select.d.ts","names":[],"sources":["../../../../src/components/data-table/toolbar/data-table-sort-direction-select.tsx"],"mappings":";;;;;;YAUY,kCACV,kBAAkB,eAClB,cAAc,WACZ,cACF,OAAO;;EAGL,OAAO,UAAU,WAAW;;;;;EAK5B,SAAS,QAAQ,OAAO;;;;;EAKxB,OAAO,OAAO,UAAU;;;;;;;;;;;;;;;;qBAyBf;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,kCAAkC,WAAW,yBAAM,IAAA"}
@@ -0,0 +1,66 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useSelector } from "@tanstack/react-store";
3
+ import { Select } from "@lucasbernardosn/react-ui/collections/select";
4
+ //#region src/components/data-table/toolbar/data-table-sort-direction-select.tsx
5
+ const DEFAULT_LABELS = {
6
+ asc: "Crescente",
7
+ desc: "Decrescente"
8
+ };
9
+ const DIRECTIONS = ["asc", "desc"];
10
+ /**
11
+ * O select da direção da ordenação, para ir junto com o `DataTable.SortColumnSelect`. Troca a
12
+ * direção da primeira coluna da ordenação; sem ordenação, fica desabilitado.
13
+ *
14
+ * Renderiza o `Select` do `ui` por dentro; as props passam para o trigger.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <DataTable.SortDirectionSelect
19
+ * table={table}
20
+ * labels={{ asc: 'A–Z', desc: 'Z–A' }}
21
+ * />
22
+ * ```
23
+ */
24
+ const DataTableSortDirectionSelect = (props) => {
25
+ const { table, labels, size = "sm", disabled, ...rest } = props;
26
+ /**
27
+ * A direção da primeira coluna da ordenação, ou `null` sem ordenação. Re-renderiza quando
28
+ * muda.
29
+ */
30
+ const direction = useSelector(table.atoms.sorting, (sorting) => sorting[0] ? sorting[0].desc ? "desc" : "asc" : null);
31
+ const items = DIRECTIONS.map((value) => ({
32
+ label: labels?.[value] ?? DEFAULT_LABELS[value],
33
+ value
34
+ }));
35
+ /** Sem ordenação, o trigger mostra a crescente, desabilitado, para não ficar vazio. */
36
+ const placeholder = labels?.asc ?? DEFAULT_LABELS.asc;
37
+ return /* @__PURE__ */ jsxs(Select.Root, {
38
+ size,
39
+ value: direction,
40
+ items,
41
+ disabled: disabled || direction === null,
42
+ onValueChange: (value) => {
43
+ if (value !== null) table.setSorting(([first, ...others]) => first ? [{
44
+ ...first,
45
+ desc: value === "desc"
46
+ }, ...others] : []);
47
+ },
48
+ children: [/* @__PURE__ */ jsxs(Select.Trigger, {
49
+ "data-component": "DataTable.SortDirectionSelect",
50
+ "aria-label": "Direção da ordenação",
51
+ ...rest,
52
+ children: [/* @__PURE__ */ jsx(Select.Value, { placeholder }), /* @__PURE__ */ jsx(Select.Icon, {})]
53
+ }), /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, {
54
+ alignItemWithTrigger: false,
55
+ children: /* @__PURE__ */ jsx(Select.Popup, { children: /* @__PURE__ */ jsx(Select.List, { children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
56
+ value: item.value,
57
+ children: [/* @__PURE__ */ jsx(Select.ItemIndicator, {}), /* @__PURE__ */ jsx(Select.ItemText, { children: item.label })]
58
+ }, item.value)) }) })
59
+ }) })]
60
+ });
61
+ };
62
+ DataTableSortDirectionSelect.displayName = "DataTable.SortDirectionSelect";
63
+ //#endregion
64
+ export { DataTableSortDirectionSelect };
65
+
66
+ //# sourceMappingURL=data-table-sort-direction-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-sort-direction-select.js","names":[],"sources":["../../../../src/components/data-table/toolbar/data-table-sort-direction-select.tsx"],"sourcesContent":["import { Select } from '@lucasbernardosn/react-ui/collections/select';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { useSelector } from '@tanstack/react-store';\nimport type {\n RowData,\n SortDirection,\n TableFeatures,\n} from '@tanstack/react-table';\nimport type { TableWith } from '../../../types';\n\nexport type DataTableSortDirectionSelectProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n Select.TriggerProps,\n {\n /** A tabela. Exige `rowSortingFeature`. */\n table: TableWith<TFeatures, TData, 'rowSortingFeature'>;\n /**\n * O nome de cada direção.\n * @default { asc: 'Crescente', desc: 'Decrescente' }\n */\n labels?: Partial<Record<SortDirection, string>>;\n /**\n * O tamanho do select.\n * @default 'sm'\n */\n size?: Select.RootProps<SortDirection>['size'];\n }\n>;\n\nconst DEFAULT_LABELS: Record<SortDirection, string> = {\n asc: 'Crescente',\n desc: 'Decrescente',\n};\n\nconst DIRECTIONS: SortDirection[] = ['asc', 'desc'];\n\n/**\n * O select da direção da ordenação, para ir junto com o `DataTable.SortColumnSelect`. Troca a\n * direção da primeira coluna da ordenação; sem ordenação, fica desabilitado.\n *\n * Renderiza o `Select` do `ui` por dentro; as props passam para o trigger.\n *\n * @example\n * ```tsx\n * <DataTable.SortDirectionSelect\n * table={table}\n * labels={{ asc: 'A–Z', desc: 'Z–A' }}\n * />\n * ```\n */\nexport const DataTableSortDirectionSelect = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: DataTableSortDirectionSelectProps<TFeatures, TData>,\n) => {\n const { table, labels, size = 'sm', disabled, ...rest } = props;\n\n /**\n * A direção da primeira coluna da ordenação, ou `null` sem ordenação. Re-renderiza quando\n * muda.\n */\n const direction = useSelector(\n table.atoms.sorting,\n (sorting): SortDirection | null =>\n sorting[0] ? (sorting[0].desc ? 'desc' : 'asc') : null,\n );\n\n const items = DIRECTIONS.map((value) => ({\n label: labels?.[value] ?? DEFAULT_LABELS[value],\n value,\n }));\n\n /** Sem ordenação, o trigger mostra a crescente, desabilitado, para não ficar vazio. */\n const placeholder = labels?.asc ?? DEFAULT_LABELS.asc;\n\n return (\n <Select.Root<SortDirection>\n size={size}\n value={direction}\n items={items}\n disabled={disabled || direction === null}\n onValueChange={(value) => {\n if (value !== null) {\n table.setSorting(([first, ...others]) =>\n first ? [{ ...first, desc: value === 'desc' }, ...others] : [],\n );\n }\n }}\n >\n <Select.Trigger\n data-component=\"DataTable.SortDirectionSelect\"\n aria-label=\"Direção da ordenação\"\n {...rest}\n >\n <Select.Value placeholder={placeholder} />\n <Select.Icon />\n </Select.Trigger>\n\n <Select.Portal>\n <Select.Positioner alignItemWithTrigger={false}>\n <Select.Popup>\n <Select.List>\n {items.map((item) => (\n <Select.Item\n key={item.value}\n value={item.value}\n >\n <Select.ItemIndicator />\n <Select.ItemText>{item.label}</Select.ItemText>\n </Select.Item>\n ))}\n </Select.List>\n </Select.Popup>\n </Select.Positioner>\n </Select.Portal>\n </Select.Root>\n );\n};\n\nDataTableSortDirectionSelect.displayName = 'DataTable.SortDirectionSelect';\n"],"mappings":";;;;AA+BA,MAAM,iBAAgD;CACpD,KAAK;CACL,MAAM;AACR;AAEA,MAAM,aAA8B,CAAC,OAAO,MAAM;;;;;;;;;;;;;;;AAgBlD,MAAa,gCAIX,UACG;CACH,MAAM,EAAE,OAAO,QAAQ,OAAO,MAAM,UAAU,GAAG,SAAS;;;;;CAM1D,MAAM,YAAY,YAChB,MAAM,MAAM,UACX,YACC,QAAQ,KAAM,QAAQ,EAAE,CAAC,OAAO,SAAS,QAAS,IACtD;CAEA,MAAM,QAAQ,WAAW,KAAK,WAAW;EACvC,OAAO,SAAS,UAAU,eAAe;EACzC;CACF,EAAE;;CAGF,MAAM,cAAc,QAAQ,OAAO,eAAe;CAElD,OACE,qBAAC,OAAO,MAAR;EACQ;EACN,OAAO;EACA;EACP,UAAU,YAAY,cAAc;EACpC,gBAAgB,UAAU;GACxB,IAAI,UAAU,MACZ,MAAM,YAAY,CAAC,OAAO,GAAG,YAC3B,QAAQ,CAAC;IAAE,GAAG;IAAO,MAAM,UAAU;GAAO,GAAG,GAAG,MAAM,IAAI,CAAC,CAC/D;EAEJ;EAXF,UAAA,CAaE,qBAAC,OAAO,SAAR;GACE,kBAAe;GACf,cAAW;GACX,GAAI;GAHN,UAAA,CAKE,oBAAC,OAAO,OAAR,EAA2B,YAAc,CAAA,GACzC,oBAAC,OAAO,MAAR,CAAc,CAAA,CACA;EAEhB,CAAA,GAAA,oBAAC,OAAO,QAAR,EAAA,UACE,oBAAC,OAAO,YAAR;GAAmB,sBAAsB;GACvC,UAAA,oBAAC,OAAO,OAAR,EAAA,UACE,oBAAC,OAAO,MAAR,EAAA,UACG,MAAM,KAAK,SACV,qBAAC,OAAO,MAAR;IAEE,OAAO,KAAK;IAFd,UAAA,CAIE,oBAAC,OAAO,eAAR,CAAuB,CAAA,GACvB,oBAAC,OAAO,UAAR,EAAA,UAAkB,KAAK,MAAuB,CAAA,CACnC;GALN,GAAA,KAAK,KAKC,CACd,EACU,CAAA,EACD,CAAA;EACG,CAAA,EACN,CAAA,CACJ;;AAEjB;AAEA,6BAA6B,cAAc"}
@@ -0,0 +1,22 @@
1
+ import { TableFeature } from "@tanstack/react-table";
2
+ //#region src/features/active-row/active-row-feature.d.ts
3
+ /**
4
+ * Feature do TanStack Table para a linha ativa, a do teclado. Registre com essa chave:
5
+ * `tableFeatures({ activeRowFeature })`.
6
+ *
7
+ * Guarda o id da linha ativa. Com ela, o `DataTable.Root` vira `role="grid"`, e as setas andam
8
+ * entre as `DataTable.Row`, que gravam a linha que recebe o foco, do teclado ou do clique. A
9
+ * linha ativa é separada da seleção.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const features = tableFeatures({ columnSizingFeature, activeRowFeature });
14
+ *
15
+ * const table = useTable({ features, columns, data });
16
+ *
17
+ * table.getActiveRow()?.original;
18
+ * ```
19
+ */
20
+ export declare const activeRowFeature: TableFeature;
21
+ //#endregion
22
+ //# sourceMappingURL=active-row-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-row-feature.d.ts","names":[],"sources":["../../../src/features/active-row/active-row-feature.ts"],"mappings":";;;;;;;;;;;;;;;;;;;qBAmCa,kBAAkB"}
@@ -0,0 +1,55 @@
1
+ import { hasRowFeature, hasTableFeature } from "../../utils/has-feature.js";
2
+ import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater, setStateSlice } from "@tanstack/react-table";
3
+ //#region src/features/active-row/active-row-feature.ts
4
+ /** A linha ativa de um estado inicial, ou nenhuma quando ele não traz. */
5
+ const getInitialActiveRowId = (initialState) => initialState.activeRowId ?? null;
6
+ /**
7
+ * Feature do TanStack Table para a linha ativa, a do teclado. Registre com essa chave:
8
+ * `tableFeatures({ activeRowFeature })`.
9
+ *
10
+ * Guarda o id da linha ativa. Com ela, o `DataTable.Root` vira `role="grid"`, e as setas andam
11
+ * entre as `DataTable.Row`, que gravam a linha que recebe o foco, do teclado ou do clique. A
12
+ * linha ativa é separada da seleção.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const features = tableFeatures({ columnSizingFeature, activeRowFeature });
17
+ *
18
+ * const table = useTable({ features, columns, data });
19
+ *
20
+ * table.getActiveRow()?.original;
21
+ * ```
22
+ */
23
+ const activeRowFeature = {
24
+ getInitialState: (initialState) => ({
25
+ activeRowId: null,
26
+ ...initialState
27
+ }),
28
+ getDefaultTableOptions: (table) => ({ onActiveRowIdChange: makeStateUpdater("activeRowId", table) }),
29
+ constructTableAPIs: (table) => {
30
+ assignTableAPIs("activeRowFeature", table, {
31
+ table_setActiveRowId: { fn: (updater) => setStateSlice(table, "activeRowId", updater) },
32
+ table_resetActiveRowId: { fn: (defaultState) => setStateSlice(table, "activeRowId", defaultState ? null : getInitialActiveRowId(table.initialState)) },
33
+ table_getActiveRow: {
34
+ /**
35
+ * O guard só tipa os atoms da tabela: com a feature registrada, ele sempre passa.
36
+ */
37
+ fn: () => {
38
+ const activeRowId = hasTableFeature(table, "activeRowFeature") ? table.atoms.activeRowId.get() : null;
39
+ return activeRowId === null ? void 0 : table.getRowModel().rowsById[activeRowId];
40
+ } }
41
+ });
42
+ },
43
+ assignRowPrototype: (prototype, table) => {
44
+ assignPrototypeAPIs("activeRowFeature", prototype, table, { row_getIsActive: {
45
+ /**
46
+ * O TanStack chama com a linha de uma tabela qualquer; o guard tipa o atom, e com a
47
+ * feature registrada sempre passa.
48
+ */
49
+ fn: (row) => hasRowFeature(row, "activeRowFeature") && row.table.atoms.activeRowId.get() === row.id } });
50
+ }
51
+ };
52
+ //#endregion
53
+ export { activeRowFeature };
54
+
55
+ //# sourceMappingURL=active-row-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-row-feature.js","names":[],"sources":["../../../src/features/active-row/active-row-feature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n type Row,\n type RowData,\n setStateSlice,\n type TableFeature,\n type TableFeatures,\n type TableState_All,\n type Updater,\n} from '@tanstack/react-table';\nimport { hasRowFeature, hasTableFeature } from '../../utils';\n\n/** A linha ativa de um estado inicial, ou nenhuma quando ele não traz. */\nconst getInitialActiveRowId = (initialState: Partial<TableState_All>) =>\n initialState.activeRowId ?? null;\n\n/**\n * Feature do TanStack Table para a linha ativa, a do teclado. Registre com essa chave:\n * `tableFeatures({ activeRowFeature })`.\n *\n * Guarda o id da linha ativa. Com ela, o `DataTable.Root` vira `role=\"grid\"`, e as setas andam\n * entre as `DataTable.Row`, que gravam a linha que recebe o foco, do teclado ou do clique. A\n * linha ativa é separada da seleção.\n *\n * @example\n * ```ts\n * const features = tableFeatures({ columnSizingFeature, activeRowFeature });\n *\n * const table = useTable({ features, columns, data });\n *\n * table.getActiveRow()?.original;\n * ```\n */\nexport const activeRowFeature: TableFeature = {\n getInitialState: (initialState) => ({\n activeRowId: null,\n ...initialState,\n }),\n\n getDefaultTableOptions: (table) => ({\n onActiveRowIdChange: makeStateUpdater('activeRowId', table),\n }),\n\n constructTableAPIs: (table) => {\n assignTableAPIs('activeRowFeature', table, {\n table_setActiveRowId: {\n fn: (updater: Updater<string | null>) =>\n setStateSlice(table, 'activeRowId', updater),\n },\n table_resetActiveRowId: {\n fn: (defaultState?: boolean) =>\n setStateSlice(\n table,\n 'activeRowId',\n defaultState ? null : getInitialActiveRowId(table.initialState),\n ),\n },\n table_getActiveRow: {\n /**\n * O guard só tipa os atoms da tabela: com a feature registrada, ele sempre passa.\n */\n fn: () => {\n const activeRowId = hasTableFeature(table, 'activeRowFeature')\n ? table.atoms.activeRowId.get()\n : null;\n\n return activeRowId === null\n ? undefined\n : table.getRowModel().rowsById[activeRowId];\n },\n },\n });\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('activeRowFeature', prototype, table, {\n row_getIsActive: {\n /**\n * O TanStack chama com a linha de uma tabela qualquer; o guard tipa o atom, e com a\n * feature registrada sempre passa.\n */\n fn: (row: Row<TableFeatures, RowData>) =>\n hasRowFeature(row, 'activeRowFeature') &&\n row.table.atoms.activeRowId.get() === row.id,\n },\n });\n },\n};\n"],"mappings":";;;;AAeA,MAAM,yBAAyB,iBAC7B,aAAa,eAAe;;;;;;;;;;;;;;;;;;AAmB9B,MAAa,mBAAiC;CAC5C,kBAAkB,kBAAkB;EAClC,aAAa;EACb,GAAG;CACL;CAEA,yBAAyB,WAAW,EAClC,qBAAqB,iBAAiB,eAAe,KAAK,EAC5D;CAEA,qBAAqB,UAAU;EAC7B,gBAAgB,oBAAoB,OAAO;GACzC,sBAAsB,EACpB,KAAK,YACH,cAAc,OAAO,eAAe,OAAO,EAC/C;GACA,wBAAwB,EACtB,KAAK,iBACH,cACE,OACA,eACA,eAAe,OAAO,sBAAsB,MAAM,YAAY,CAChE,EACJ;GACA,oBAAoB;;;;AAIlB,UAAU;IACR,MAAM,cAAc,gBAAgB,OAAO,kBAAkB,IACzD,MAAM,MAAM,YAAY,IAAI,IAC5B;IAEJ,OAAO,gBAAgB,OACnB,KAAA,IACA,MAAM,YAAY,CAAC,CAAC,SAAS;GACnC,EACF;EACF,CAAC;CACH;CAEA,qBAAqB,WAAW,UAAU;EACxC,oBAAoB,oBAAoB,WAAW,OAAO,EACxD,iBAAiB;;;;;AAKf,KAAK,QACH,cAAc,KAAK,kBAAkB,KACrC,IAAI,MAAM,MAAM,YAAY,IAAI,MAAM,IAAI,GAC9C,EACF,CAAC;CACH;AACF"}
@@ -0,0 +1,64 @@
1
+ import { OnChangeFn, Row, RowData, TableFeature, TableFeatures, Updater } from "@tanstack/react-table";
2
+ //#region src/features/active-row/active-row-feature.types.d.ts
3
+ /** O estado da feature. */
4
+ export type TableState_ActiveRow = {
5
+ /**
6
+ * O id da linha ativa, a do teclado: a que tem o ponto de Tab e recebe as teclas. Separada da
7
+ * seleção, que é a do checkbox.
8
+ * @default null
9
+ */
10
+ activeRowId: string | null;
11
+ };
12
+ /** As opções da feature. */
13
+ export type TableOptions_ActiveRow = {
14
+ /**
15
+ * Chamada a cada troca da linha ativa, com o updater. Sem ela, a tabela guarda a linha ativa
16
+ * sozinha. Para controlar o estado, passe esta função e `state.activeRowId`.
17
+ */
18
+ onActiveRowIdChange?: OnChangeFn<string | null>;
19
+ };
20
+ /** As APIs da feature na tabela. */
21
+ export type Table_ActiveRow<TFeatures extends TableFeatures, TData extends RowData> = {
22
+ /** Troca a linha ativa, com um id, `null` ou um updater. */
23
+ setActiveRowId: (updater: Updater<string | null>) => void;
24
+ /**
25
+ * Volta a linha ativa à do `initialState`. Com `defaultState`, volta ao padrão da feature,
26
+ * `null`.
27
+ */
28
+ resetActiveRowId: (defaultState?: boolean) => void;
29
+ /**
30
+ * A linha ativa, se ela está no row model atual. Fora dele, como numa linha apagada ou de
31
+ * outra página, `undefined`.
32
+ */
33
+ getActiveRow: () => Row<TFeatures, TData> | undefined;
34
+ };
35
+ /** As APIs da feature na linha. */
36
+ export type Row_ActiveRow = {
37
+ /** Se esta é a linha ativa. */
38
+ getIsActive: () => boolean;
39
+ };
40
+ declare module '@tanstack/react-table' {
41
+ interface Plugins {
42
+ activeRowFeature: TableFeature;
43
+ }
44
+ interface TableState_FeatureMap {
45
+ activeRowFeature: TableState_ActiveRow;
46
+ }
47
+ /**
48
+ * O `TableState_All` não junta os plugins sozinho. Sem a chave aqui, o `setStateSlice` e a
49
+ * leitura do `initialState` dentro da feature não a conhecem. Opcional, como as chaves do
50
+ * TanStack.
51
+ */
52
+ interface TableState_All extends Partial<TableState_ActiveRow> {}
53
+ interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
54
+ activeRowFeature: TableOptions_ActiveRow;
55
+ }
56
+ interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
57
+ activeRowFeature: Table_ActiveRow<TFeatures, TData>;
58
+ }
59
+ interface Row_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
60
+ activeRowFeature: Row_ActiveRow;
61
+ }
62
+ }
63
+ //#endregion
64
+ //# sourceMappingURL=active-row-feature.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-row-feature.types.d.ts","names":[],"sources":["../../../src/features/active-row/active-row-feature.types.ts"],"mappings":";;;YAWY;;;;;;EAMV;;;YAIU;;;;;EAKV,sBAAsB;;;YAIZ,gBACV,kBAAkB,eAClB,cAAc;;EAGd,iBAAiB,SAAS;;;;;EAK1B,mBAAmB;;;;;EAKnB,oBAAoB,IAAI,WAAW;;;YAIzB;;EAEV;;;YASU;IACR,kBAAkB;;YAGV;IACR,kBAAkB;;;;;;;YAQV,uBAAuB,QAAQ;YAE/B,wBACR,kBAAkB,eAClB,cAAc;IAEd,kBAAkB;;YAGV,iBACR,kBAAkB,eAClB,cAAc;IAEd,kBAAkB,gBAAgB,WAAW;;YAGrC,eACR,kBAAkB,eAClB,cAAc;IAEd,kBAAkB"}
@@ -0,0 +1,23 @@
1
+ import { TableFeature } from "@tanstack/react-table";
2
+ //#region src/features/column-alignment/column-alignment-feature.d.ts
3
+ /**
4
+ * Feature do TanStack Table para o alinhamento por coluna. Registre com essa chave:
5
+ * `tableFeatures({ columnAlignmentFeature })`.
6
+ *
7
+ * Não tem estado: o alinhamento vem do `align` da definição da coluna, e não muda em runtime. A
8
+ * `DataTable.Cell` e a `DataTable.HeaderCell` o leem por `column.getAlign()` e o marcam em
9
+ * `data-align`.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const features = tableFeatures({ columnSizingFeature, columnAlignmentFeature });
14
+ *
15
+ * const columns = columnHelper.columns([
16
+ * columnHelper.accessor('name', { header: 'Nome' }),
17
+ * columnHelper.accessor('total', { header: 'Total', align: 'end' }),
18
+ * ]);
19
+ * ```
20
+ */
21
+ export declare const columnAlignmentFeature: TableFeature;
22
+ //#endregion
23
+ //# sourceMappingURL=column-alignment-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-alignment-feature.d.ts","names":[],"sources":["../../../src/features/column-alignment/column-alignment-feature.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;qBA8Ba,wBAAwB"}
@@ -0,0 +1,34 @@
1
+ import { assignPrototypeAPIs } from "@tanstack/react-table";
2
+ //#region src/features/column-alignment/column-alignment-feature.ts
3
+ /** O alinhamento de uma coluna sem `align` na definição. */
4
+ const DEFAULT_COLUMN_ALIGN = "start";
5
+ /**
6
+ * Feature do TanStack Table para o alinhamento por coluna. Registre com essa chave:
7
+ * `tableFeatures({ columnAlignmentFeature })`.
8
+ *
9
+ * Não tem estado: o alinhamento vem do `align` da definição da coluna, e não muda em runtime. A
10
+ * `DataTable.Cell` e a `DataTable.HeaderCell` o leem por `column.getAlign()` e o marcam em
11
+ * `data-align`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const features = tableFeatures({ columnSizingFeature, columnAlignmentFeature });
16
+ *
17
+ * const columns = columnHelper.columns([
18
+ * columnHelper.accessor('name', { header: 'Nome' }),
19
+ * columnHelper.accessor('total', { header: 'Total', align: 'end' }),
20
+ * ]);
21
+ * ```
22
+ */
23
+ const columnAlignmentFeature = { assignColumnPrototype: (prototype, table) => {
24
+ assignPrototypeAPIs("columnAlignmentFeature", prototype, table, { column_getAlign: {
25
+ /**
26
+ * O TanStack chama com a coluna de uma tabela qualquer: o tipo com todas as features é o
27
+ * que conhece o `align`.
28
+ */
29
+ fn: (column) => column.columnDef.align ?? DEFAULT_COLUMN_ALIGN } });
30
+ } };
31
+ //#endregion
32
+ export { columnAlignmentFeature };
33
+
34
+ //# sourceMappingURL=column-alignment-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-alignment-feature.js","names":[],"sources":["../../../src/features/column-alignment/column-alignment-feature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n type Column,\n type RowData,\n type TableFeature,\n type TableFeatures,\n} from '@tanstack/react-table';\nimport type { ColumnAlign } from './column-alignment-feature.types';\n\n/** O alinhamento de uma coluna sem `align` na definição. */\nconst DEFAULT_COLUMN_ALIGN: ColumnAlign = 'start';\n\n/**\n * Feature do TanStack Table para o alinhamento por coluna. Registre com essa chave:\n * `tableFeatures({ columnAlignmentFeature })`.\n *\n * Não tem estado: o alinhamento vem do `align` da definição da coluna, e não muda em runtime. A\n * `DataTable.Cell` e a `DataTable.HeaderCell` o leem por `column.getAlign()` e o marcam em\n * `data-align`.\n *\n * @example\n * ```ts\n * const features = tableFeatures({ columnSizingFeature, columnAlignmentFeature });\n *\n * const columns = columnHelper.columns([\n * columnHelper.accessor('name', { header: 'Nome' }),\n * columnHelper.accessor('total', { header: 'Total', align: 'end' }),\n * ]);\n * ```\n */\nexport const columnAlignmentFeature: TableFeature = {\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnAlignmentFeature', prototype, table, {\n column_getAlign: {\n /**\n * O TanStack chama com a coluna de uma tabela qualquer: o tipo com todas as features é o\n * que conhece o `align`.\n */\n fn: (column: Column<TableFeatures, RowData>) =>\n column.columnDef.align ?? DEFAULT_COLUMN_ALIGN,\n },\n });\n },\n};\n"],"mappings":";;;AAUA,MAAM,uBAAoC;;;;;;;;;;;;;;;;;;;AAoB1C,MAAa,yBAAuC,EAClD,wBAAwB,WAAW,UAAU;CAC3C,oBAAoB,0BAA0B,WAAW,OAAO,EAC9D,iBAAiB;;;;;AAKf,KAAK,WACH,OAAO,UAAU,SAAS,qBAC9B,EACF,CAAC;AACH,EACF"}
@@ -0,0 +1,34 @@
1
+ import { CellData, RowData, TableFeature, TableFeatures } from "@tanstack/react-table";
2
+ //#region src/features/column-alignment/column-alignment-feature.types.d.ts
3
+ /**
4
+ * O alinhamento do conteúdo de uma coluna. Em direção lógica: `start` e `end` seguem a direção
5
+ * do texto, à esquerda e à direita num idioma LTR.
6
+ */
7
+ export type ColumnAlign = 'start' | 'center' | 'end';
8
+ /** As opções da feature na definição da coluna. */
9
+ export type ColumnDef_ColumnAlignment = {
10
+ /**
11
+ * O alinhamento do conteúdo das células e do header da coluna. Para mudar o padrão da tabela
12
+ * inteira, passe no `defaultColumn`.
13
+ * @default 'start'
14
+ */
15
+ align?: ColumnAlign;
16
+ };
17
+ /** As APIs da feature na coluna. */
18
+ export type Column_ColumnAlignment = {
19
+ /** O alinhamento da coluna: o `align` da definição, ou `'start'`. */
20
+ getAlign: () => ColumnAlign;
21
+ };
22
+ declare module '@tanstack/react-table' {
23
+ interface Plugins {
24
+ columnAlignmentFeature: TableFeature;
25
+ }
26
+ interface ColumnDef_FeatureMap<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData> {
27
+ columnAlignmentFeature: ColumnDef_ColumnAlignment;
28
+ }
29
+ interface Column_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
30
+ columnAlignmentFeature: Column_ColumnAlignment;
31
+ }
32
+ }
33
+ //#endregion
34
+ //# sourceMappingURL=column-alignment-feature.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-alignment-feature.types.d.ts","names":[],"sources":["../../../src/features/column-alignment/column-alignment-feature.types.ts"],"mappings":";;;;;;YAYY;;YAGA;;;;;;EAMV,QAAQ;;;YAIE;;EAEV,gBAAgB;;;YASN;IACR,wBAAwB;;YAGhB,qBACR,kBAAkB,eAClB,cAAc,SACd,eAAe;IAEf,wBAAwB;;YAGhB,kBACR,kBAAkB,eAClB,cAAc;IAEd,wBAAwB"}
@@ -0,0 +1,9 @@
1
+ import { activeRowFeature } from "./active-row/active-row-feature.js";
2
+ import { Row_ActiveRow, TableOptions_ActiveRow, TableState_ActiveRow, Table_ActiveRow } from "./active-row/active-row-feature.types.js";
3
+ import { columnAlignmentFeature } from "./column-alignment/column-alignment-feature.js";
4
+ import { ColumnAlign, ColumnDef_ColumnAlignment, Column_ColumnAlignment } from "./column-alignment/column-alignment-feature.types.js";
5
+ import { loadingFeature } from "./loading/loading-feature.js";
6
+ import { TableOptions_Loading, TableState_Loading, Table_Loading } from "./loading/loading-feature.types.js";
7
+ import { rowDensityFeature } from "./row-density/row-density-feature.js";
8
+ import { RowDensity, TableOptions_RowDensity, TableState_RowDensity, Table_RowDensity } from "./row-density/row-density-feature.types.js";
9
+ export { type ColumnAlign, type ColumnDef_ColumnAlignment, type Column_ColumnAlignment, type RowDensity, type Row_ActiveRow, type TableOptions_ActiveRow, type TableOptions_Loading, type TableOptions_RowDensity, type TableState_ActiveRow, type TableState_Loading, type TableState_RowDensity, type Table_ActiveRow, type Table_Loading, type Table_RowDensity, activeRowFeature, columnAlignmentFeature, loadingFeature, rowDensityFeature };
@@ -0,0 +1,5 @@
1
+ import { activeRowFeature } from "./active-row/active-row-feature.js";
2
+ import { columnAlignmentFeature } from "./column-alignment/column-alignment-feature.js";
3
+ import { loadingFeature } from "./loading/loading-feature.js";
4
+ import { rowDensityFeature } from "./row-density/row-density-feature.js";
5
+ export { activeRowFeature, columnAlignmentFeature, loadingFeature, rowDensityFeature };
@@ -0,0 +1,30 @@
1
+ import { TableFeature } from "@tanstack/react-table";
2
+ //#region src/features/loading/loading-feature.d.ts
3
+ /**
4
+ * Feature do TanStack Table para o carregamento dos dados. Registre com essa chave:
5
+ * `tableFeatures({ loadingFeature })`.
6
+ *
7
+ * Só guarda o estado: o `DataTable.Root` marca o grid enquanto carrega, o `DataTable.Body`
8
+ * bloqueia as linhas e, sem linhas, desenha linhas-fantasma.
9
+ *
10
+ * Carregar é ter na tela linhas que não são as da consulta atual: as de outra página ou ordem,
11
+ * à espera das novas, ou nenhuma na primeira carga. Uma busca em segundo plano que só confirma
12
+ * o que já está na tela não conta: marcá-la cobriria com o skeleton as linhas certas. No
13
+ * TanStack Query, com `placeholderData: keepPreviousData`, isso é `isPending || isPlaceholderData`,
14
+ * e não `isFetching`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const features = tableFeatures({ columnSizingFeature, loadingFeature });
19
+ *
20
+ * const table = useTable({
21
+ * features,
22
+ * columns,
23
+ * data: query.data ?? [],
24
+ * state: { isLoading: query.isPending || query.isPlaceholderData },
25
+ * });
26
+ * ```
27
+ */
28
+ export declare const loadingFeature: TableFeature;
29
+ //#endregion
30
+ //# sourceMappingURL=loading-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-feature.d.ts","names":[],"sources":["../../../src/features/loading/loading-feature.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyCa,gBAAgB"}
@@ -0,0 +1,48 @@
1
+ import { assignTableAPIs, makeStateUpdater, setStateSlice } from "@tanstack/react-table";
2
+ //#region src/features/loading/loading-feature.ts
3
+ /** O carregamento sem `initialState`. */
4
+ const DEFAULT_IS_LOADING = false;
5
+ /** O carregamento de um estado inicial, ou o padrão quando ele não traz. */
6
+ const getInitialIsLoading = (initialState) => initialState.isLoading ?? DEFAULT_IS_LOADING;
7
+ /**
8
+ * Feature do TanStack Table para o carregamento dos dados. Registre com essa chave:
9
+ * `tableFeatures({ loadingFeature })`.
10
+ *
11
+ * Só guarda o estado: o `DataTable.Root` marca o grid enquanto carrega, o `DataTable.Body`
12
+ * bloqueia as linhas e, sem linhas, desenha linhas-fantasma.
13
+ *
14
+ * Carregar é ter na tela linhas que não são as da consulta atual: as de outra página ou ordem,
15
+ * à espera das novas, ou nenhuma na primeira carga. Uma busca em segundo plano que só confirma
16
+ * o que já está na tela não conta: marcá-la cobriria com o skeleton as linhas certas. No
17
+ * TanStack Query, com `placeholderData: keepPreviousData`, isso é `isPending || isPlaceholderData`,
18
+ * e não `isFetching`.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const features = tableFeatures({ columnSizingFeature, loadingFeature });
23
+ *
24
+ * const table = useTable({
25
+ * features,
26
+ * columns,
27
+ * data: query.data ?? [],
28
+ * state: { isLoading: query.isPending || query.isPlaceholderData },
29
+ * });
30
+ * ```
31
+ */
32
+ const loadingFeature = {
33
+ getInitialState: (initialState) => ({
34
+ isLoading: DEFAULT_IS_LOADING,
35
+ ...initialState
36
+ }),
37
+ getDefaultTableOptions: (table) => ({ onIsLoadingChange: makeStateUpdater("isLoading", table) }),
38
+ constructTableAPIs: (table) => {
39
+ assignTableAPIs("loadingFeature", table, {
40
+ table_setIsLoading: { fn: (updater) => setStateSlice(table, "isLoading", updater) },
41
+ table_resetIsLoading: { fn: (defaultState) => setStateSlice(table, "isLoading", defaultState ? DEFAULT_IS_LOADING : getInitialIsLoading(table.initialState)) }
42
+ });
43
+ }
44
+ };
45
+ //#endregion
46
+ export { loadingFeature };
47
+
48
+ //# sourceMappingURL=loading-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-feature.js","names":[],"sources":["../../../src/features/loading/loading-feature.ts"],"sourcesContent":["import {\n assignTableAPIs,\n makeStateUpdater,\n setStateSlice,\n type TableFeature,\n type TableState_All,\n type Updater,\n} from '@tanstack/react-table';\n\n/** O carregamento sem `initialState`. */\nconst DEFAULT_IS_LOADING = false;\n\n/** O carregamento de um estado inicial, ou o padrão quando ele não traz. */\nconst getInitialIsLoading = (initialState: Partial<TableState_All>) =>\n initialState.isLoading ?? DEFAULT_IS_LOADING;\n\n/**\n * Feature do TanStack Table para o carregamento dos dados. Registre com essa chave:\n * `tableFeatures({ loadingFeature })`.\n *\n * Só guarda o estado: o `DataTable.Root` marca o grid enquanto carrega, o `DataTable.Body`\n * bloqueia as linhas e, sem linhas, desenha linhas-fantasma.\n *\n * Carregar é ter na tela linhas que não são as da consulta atual: as de outra página ou ordem,\n * à espera das novas, ou nenhuma na primeira carga. Uma busca em segundo plano que só confirma\n * o que já está na tela não conta: marcá-la cobriria com o skeleton as linhas certas. No\n * TanStack Query, com `placeholderData: keepPreviousData`, isso é `isPending || isPlaceholderData`,\n * e não `isFetching`.\n *\n * @example\n * ```ts\n * const features = tableFeatures({ columnSizingFeature, loadingFeature });\n *\n * const table = useTable({\n * features,\n * columns,\n * data: query.data ?? [],\n * state: { isLoading: query.isPending || query.isPlaceholderData },\n * });\n * ```\n */\nexport const loadingFeature: TableFeature = {\n getInitialState: (initialState) => ({\n isLoading: DEFAULT_IS_LOADING,\n ...initialState,\n }),\n\n getDefaultTableOptions: (table) => ({\n onIsLoadingChange: makeStateUpdater('isLoading', table),\n }),\n\n constructTableAPIs: (table) => {\n assignTableAPIs('loadingFeature', table, {\n table_setIsLoading: {\n fn: (updater: Updater<boolean>) =>\n setStateSlice(table, 'isLoading', updater),\n },\n table_resetIsLoading: {\n fn: (defaultState?: boolean) =>\n setStateSlice(\n table,\n 'isLoading',\n defaultState\n ? DEFAULT_IS_LOADING\n : getInitialIsLoading(table.initialState),\n ),\n },\n });\n },\n};\n"],"mappings":";;;AAUA,MAAM,qBAAqB;;AAG3B,MAAM,uBAAuB,iBAC3B,aAAa,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;AA2B5B,MAAa,iBAA+B;CAC1C,kBAAkB,kBAAkB;EAClC,WAAW;EACX,GAAG;CACL;CAEA,yBAAyB,WAAW,EAClC,mBAAmB,iBAAiB,aAAa,KAAK,EACxD;CAEA,qBAAqB,UAAU;EAC7B,gBAAgB,kBAAkB,OAAO;GACvC,oBAAoB,EAClB,KAAK,YACH,cAAc,OAAO,aAAa,OAAO,EAC7C;GACA,sBAAsB,EACpB,KAAK,iBACH,cACE,OACA,aACA,eACI,qBACA,oBAAoB,MAAM,YAAY,CAC5C,EACJ;EACF,CAAC;CACH;AACF"}
@@ -0,0 +1,50 @@
1
+ import { OnChangeFn, RowData, TableFeature, TableFeatures, Updater } from "@tanstack/react-table";
2
+ //#region src/features/loading/loading-feature.types.d.ts
3
+ /** O estado da feature. */
4
+ export type TableState_Loading = {
5
+ /**
6
+ * Se os dados da tabela estão carregando.
7
+ * @default false
8
+ */
9
+ isLoading: boolean;
10
+ };
11
+ /** As opções da feature. */
12
+ export type TableOptions_Loading = {
13
+ /**
14
+ * Chamada a cada troca do carregamento, com o updater. Para ligar o carregamento ao da consulta
15
+ * do app, passe `state.isLoading` (ver a `loadingFeature`).
16
+ */
17
+ onIsLoadingChange?: OnChangeFn<boolean>;
18
+ };
19
+ /** As APIs da feature na tabela. */
20
+ export type Table_Loading = {
21
+ /** Liga ou desliga o carregamento, com um valor ou um updater. */
22
+ setIsLoading: (updater: Updater<boolean>) => void;
23
+ /**
24
+ * Volta o carregamento ao do `initialState`. Com `defaultState`, volta ao padrão da feature,
25
+ * `false`.
26
+ */
27
+ resetIsLoading: (defaultState?: boolean) => void;
28
+ };
29
+ declare module '@tanstack/react-table' {
30
+ interface Plugins {
31
+ loadingFeature: TableFeature;
32
+ }
33
+ interface TableState_FeatureMap {
34
+ loadingFeature: TableState_Loading;
35
+ }
36
+ /**
37
+ * O `TableState_All` não junta os plugins sozinho. Sem a chave aqui, o `setStateSlice` e a
38
+ * leitura do `initialState` dentro da feature não a conhecem. Opcional, como as chaves do
39
+ * TanStack.
40
+ */
41
+ interface TableState_All extends Partial<TableState_Loading> {}
42
+ interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
43
+ loadingFeature: TableOptions_Loading;
44
+ }
45
+ interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {
46
+ loadingFeature: Table_Loading;
47
+ }
48
+ }
49
+ //#endregion
50
+ //# sourceMappingURL=loading-feature.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-feature.types.d.ts","names":[],"sources":["../../../src/features/loading/loading-feature.types.ts"],"mappings":";;;YAUY;;;;;EAKV;;;YAIU;;;;;EAKV,oBAAoB;;;YAIV;;EAEV,eAAe,SAAS;;;;;EAKxB,iBAAiB;;;YASP;IACR,gBAAgB;;YAGR;IACR,gBAAgB;;;;;;;YAQR,uBAAuB,QAAQ;YAE/B,wBACR,kBAAkB,eAClB,cAAc;IAEd,gBAAgB;;YAGR,iBACR,kBAAkB,eAClB,cAAc;IAEd,gBAAgB"}
File without changes
@@ -0,0 +1,26 @@
1
+ import { TableFeature } from "@tanstack/react-table";
2
+ //#region src/features/row-density/row-density-feature.d.ts
3
+ /**
4
+ * Feature do TanStack Table para a densidade das linhas. Registre com essa chave:
5
+ * `tableFeatures({ rowDensityFeature })`.
6
+ *
7
+ * Só guarda o estado: o `DataTable.Root` o lê e marca o grid com `data-density`, de onde as
8
+ * células tiram altura e espaçamento.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const features = tableFeatures({ columnSizingFeature, rowDensityFeature });
13
+ *
14
+ * const table = useTable({
15
+ * features,
16
+ * columns,
17
+ * data,
18
+ * initialState: { rowDensity: 'compact' },
19
+ * });
20
+ *
21
+ * table.setRowDensity('airy');
22
+ * ```
23
+ */
24
+ export declare const rowDensityFeature: TableFeature;
25
+ //#endregion
26
+ //# sourceMappingURL=row-density-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-density-feature.d.ts","names":[],"sources":["../../../src/features/row-density/row-density-feature.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;qBAsCa,mBAAmB"}
@@ -0,0 +1,44 @@
1
+ import { assignTableAPIs, makeStateUpdater, setStateSlice } from "@tanstack/react-table";
2
+ //#region src/features/row-density/row-density-feature.ts
3
+ /** A densidade sem `initialState`. */
4
+ const DEFAULT_ROW_DENSITY = "standard";
5
+ /** A densidade de um estado inicial, ou a padrão quando ele não traz. */
6
+ const getInitialRowDensity = (initialState) => initialState.rowDensity ?? DEFAULT_ROW_DENSITY;
7
+ /**
8
+ * Feature do TanStack Table para a densidade das linhas. Registre com essa chave:
9
+ * `tableFeatures({ rowDensityFeature })`.
10
+ *
11
+ * Só guarda o estado: o `DataTable.Root` o lê e marca o grid com `data-density`, de onde as
12
+ * células tiram altura e espaçamento.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const features = tableFeatures({ columnSizingFeature, rowDensityFeature });
17
+ *
18
+ * const table = useTable({
19
+ * features,
20
+ * columns,
21
+ * data,
22
+ * initialState: { rowDensity: 'compact' },
23
+ * });
24
+ *
25
+ * table.setRowDensity('airy');
26
+ * ```
27
+ */
28
+ const rowDensityFeature = {
29
+ getInitialState: (initialState) => ({
30
+ rowDensity: DEFAULT_ROW_DENSITY,
31
+ ...initialState
32
+ }),
33
+ getDefaultTableOptions: (table) => ({ onRowDensityChange: makeStateUpdater("rowDensity", table) }),
34
+ constructTableAPIs: (table) => {
35
+ assignTableAPIs("rowDensityFeature", table, {
36
+ table_setRowDensity: { fn: (updater) => setStateSlice(table, "rowDensity", updater) },
37
+ table_resetRowDensity: { fn: (defaultState) => setStateSlice(table, "rowDensity", defaultState ? DEFAULT_ROW_DENSITY : getInitialRowDensity(table.initialState)) }
38
+ });
39
+ }
40
+ };
41
+ //#endregion
42
+ export { rowDensityFeature };
43
+
44
+ //# sourceMappingURL=row-density-feature.js.map