@lucasbernardosn/react-table 0.0.0-stage → 0.1.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 (267) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/components/column-menu/column-menu-check.d.ts +8 -0
  4. package/dist/components/column-menu/column-menu-check.d.ts.map +1 -0
  5. package/dist/components/column-menu/column-menu-check.js +17 -0
  6. package/dist/components/column-menu/column-menu-check.js.map +1 -0
  7. package/dist/components/column-menu/column-menu-hide-item.d.ts +23 -0
  8. package/dist/components/column-menu/column-menu-hide-item.d.ts.map +1 -0
  9. package/dist/components/column-menu/column-menu-hide-item.js +28 -0
  10. package/dist/components/column-menu/column-menu-hide-item.js.map +1 -0
  11. package/dist/components/column-menu/column-menu-labels.d.ts +21 -0
  12. package/dist/components/column-menu/column-menu-labels.d.ts.map +1 -0
  13. package/dist/components/column-menu/column-menu-labels.js +14 -0
  14. package/dist/components/column-menu/column-menu-labels.js.map +1 -0
  15. package/dist/components/column-menu/column-menu-pin-items.d.ts +25 -0
  16. package/dist/components/column-menu/column-menu-pin-items.d.ts.map +1 -0
  17. package/dist/components/column-menu/column-menu-pin-items.js +65 -0
  18. package/dist/components/column-menu/column-menu-pin-items.js.map +1 -0
  19. package/dist/components/column-menu/column-menu-popup.d.ts +39 -0
  20. package/dist/components/column-menu/column-menu-popup.d.ts.map +1 -0
  21. package/dist/components/column-menu/column-menu-popup.js +66 -0
  22. package/dist/components/column-menu/column-menu-popup.js.map +1 -0
  23. package/dist/components/column-menu/column-menu-root.d.ts +34 -0
  24. package/dist/components/column-menu/column-menu-root.d.ts.map +1 -0
  25. package/dist/components/column-menu/column-menu-root.js +36 -0
  26. package/dist/components/column-menu/column-menu-root.js.map +1 -0
  27. package/dist/components/column-menu/column-menu-sort-items.d.ts +29 -0
  28. package/dist/components/column-menu/column-menu-sort-items.d.ts.map +1 -0
  29. package/dist/components/column-menu/column-menu-sort-items.js +61 -0
  30. package/dist/components/column-menu/column-menu-sort-items.js.map +1 -0
  31. package/dist/components/column-menu/column-menu-trigger.d.ts +23 -0
  32. package/dist/components/column-menu/column-menu-trigger.d.ts.map +1 -0
  33. package/dist/components/column-menu/column-menu-trigger.js +38 -0
  34. package/dist/components/column-menu/column-menu-trigger.js.map +1 -0
  35. package/dist/components/column-menu/index.d.ts +2 -0
  36. package/dist/components/column-menu/index.js +2 -0
  37. package/dist/components/column-menu/index.parts.d.ts +13 -0
  38. package/dist/components/column-menu/index.parts.d.ts.map +1 -0
  39. package/dist/components/column-menu/index.parts.js +20 -0
  40. package/dist/components/column-menu/index.parts.js.map +1 -0
  41. package/dist/components/columns-panel/columns-panel-item.d.ts +31 -0
  42. package/dist/components/columns-panel/columns-panel-item.d.ts.map +1 -0
  43. package/dist/components/columns-panel/columns-panel-item.js +92 -0
  44. package/dist/components/columns-panel/columns-panel-item.js.map +1 -0
  45. package/dist/components/columns-panel/columns-panel-root.d.ts +51 -0
  46. package/dist/components/columns-panel/columns-panel-root.d.ts.map +1 -0
  47. package/dist/components/columns-panel/columns-panel-root.js +134 -0
  48. package/dist/components/columns-panel/columns-panel-root.js.map +1 -0
  49. package/dist/components/columns-panel/get-columns-panel-column-order.d.ts +16 -0
  50. package/dist/components/columns-panel/get-columns-panel-column-order.d.ts.map +1 -0
  51. package/dist/components/columns-panel/get-columns-panel-column-order.js +24 -0
  52. package/dist/components/columns-panel/get-columns-panel-column-order.js.map +1 -0
  53. package/dist/components/columns-panel/index.d.ts +2 -0
  54. package/dist/components/columns-panel/index.js +2 -0
  55. package/dist/components/columns-panel/index.parts.d.ts +8 -0
  56. package/dist/components/columns-panel/index.parts.d.ts.map +1 -0
  57. package/dist/components/columns-panel/index.parts.js +12 -0
  58. package/dist/components/columns-panel/index.parts.js.map +1 -0
  59. package/dist/components/data-table/body/data-table-body.d.ts +58 -0
  60. package/dist/components/data-table/body/data-table-body.d.ts.map +1 -0
  61. package/dist/components/data-table/body/data-table-body.js +99 -0
  62. package/dist/components/data-table/body/data-table-body.js.map +1 -0
  63. package/dist/components/data-table/body/data-table-cell.d.ts +26 -0
  64. package/dist/components/data-table/body/data-table-cell.d.ts.map +1 -0
  65. package/dist/components/data-table/body/data-table-cell.js +80 -0
  66. package/dist/components/data-table/body/data-table-cell.js.map +1 -0
  67. package/dist/components/data-table/body/data-table-empty.d.ts +38 -0
  68. package/dist/components/data-table/body/data-table-empty.d.ts.map +1 -0
  69. package/dist/components/data-table/body/data-table-empty.js +71 -0
  70. package/dist/components/data-table/body/data-table-empty.js.map +1 -0
  71. package/dist/components/data-table/body/data-table-row-focus.d.ts +32 -0
  72. package/dist/components/data-table/body/data-table-row-focus.d.ts.map +1 -0
  73. package/dist/components/data-table/body/data-table-row-focus.js +58 -0
  74. package/dist/components/data-table/body/data-table-row-focus.js.map +1 -0
  75. package/dist/components/data-table/body/data-table-row.d.ts +67 -0
  76. package/dist/components/data-table/body/data-table-row.d.ts.map +1 -0
  77. package/dist/components/data-table/body/data-table-row.js +150 -0
  78. package/dist/components/data-table/body/data-table-row.js.map +1 -0
  79. package/dist/components/data-table/body/use-data-table-row-focus-recovery.d.ts +19 -0
  80. package/dist/components/data-table/body/use-data-table-row-focus-recovery.d.ts.map +1 -0
  81. package/dist/components/data-table/body/use-data-table-row-focus-recovery.js +64 -0
  82. package/dist/components/data-table/body/use-data-table-row-focus-recovery.js.map +1 -0
  83. package/dist/components/data-table/header/data-table-header-button.d.ts +25 -0
  84. package/dist/components/data-table/header/data-table-header-button.d.ts.map +1 -0
  85. package/dist/components/data-table/header/data-table-header-button.js +57 -0
  86. package/dist/components/data-table/header/data-table-header-button.js.map +1 -0
  87. package/dist/components/data-table/header/data-table-header-cell.d.ts +34 -0
  88. package/dist/components/data-table/header/data-table-header-cell.d.ts.map +1 -0
  89. package/dist/components/data-table/header/data-table-header-cell.js +97 -0
  90. package/dist/components/data-table/header/data-table-header-cell.js.map +1 -0
  91. package/dist/components/data-table/header/data-table-header-content.d.ts +21 -0
  92. package/dist/components/data-table/header/data-table-header-content.d.ts.map +1 -0
  93. package/dist/components/data-table/header/data-table-header-content.js +37 -0
  94. package/dist/components/data-table/header/data-table-header-content.js.map +1 -0
  95. package/dist/components/data-table/header/data-table-header-row.d.ts +15 -0
  96. package/dist/components/data-table/header/data-table-header-row.d.ts.map +1 -0
  97. package/dist/components/data-table/header/data-table-header-row.js +28 -0
  98. package/dist/components/data-table/header/data-table-header-row.js.map +1 -0
  99. package/dist/components/data-table/header/data-table-header.d.ts +46 -0
  100. package/dist/components/data-table/header/data-table-header.d.ts.map +1 -0
  101. package/dist/components/data-table/header/data-table-header.js +80 -0
  102. package/dist/components/data-table/header/data-table-header.js.map +1 -0
  103. package/dist/components/data-table/index.d.ts +2 -0
  104. package/dist/components/data-table/index.js +2 -0
  105. package/dist/components/data-table/index.parts.d.ts +32 -0
  106. package/dist/components/data-table/index.parts.d.ts.map +1 -0
  107. package/dist/components/data-table/index.parts.js +60 -0
  108. package/dist/components/data-table/index.parts.js.map +1 -0
  109. package/dist/components/data-table/loading/get-data-table-loading-without-rows.d.ts +16 -0
  110. package/dist/components/data-table/loading/get-data-table-loading-without-rows.d.ts.map +1 -0
  111. package/dist/components/data-table/loading/get-data-table-loading-without-rows.js +18 -0
  112. package/dist/components/data-table/loading/get-data-table-loading-without-rows.js.map +1 -0
  113. package/dist/components/data-table/loading/use-data-table-loading-inert.d.ts +16 -0
  114. package/dist/components/data-table/loading/use-data-table-loading-inert.d.ts.map +1 -0
  115. package/dist/components/data-table/loading/use-data-table-loading-inert.js +54 -0
  116. package/dist/components/data-table/loading/use-data-table-loading-inert.js.map +1 -0
  117. package/dist/components/data-table/loading/use-data-table-loading.d.ts +13 -0
  118. package/dist/components/data-table/loading/use-data-table-loading.d.ts.map +1 -0
  119. package/dist/components/data-table/loading/use-data-table-loading.js +40 -0
  120. package/dist/components/data-table/loading/use-data-table-loading.js.map +1 -0
  121. package/dist/components/data-table/pagination/data-table-page-button.d.ts +45 -0
  122. package/dist/components/data-table/pagination/data-table-page-button.d.ts.map +1 -0
  123. package/dist/components/data-table/pagination/data-table-page-button.js +67 -0
  124. package/dist/components/data-table/pagination/data-table-page-button.js.map +1 -0
  125. package/dist/components/data-table/pagination/data-table-page-size-select.d.ts +47 -0
  126. package/dist/components/data-table/pagination/data-table-page-size-select.d.ts.map +1 -0
  127. package/dist/components/data-table/pagination/data-table-page-size-select.js +68 -0
  128. package/dist/components/data-table/pagination/data-table-page-size-select.js.map +1 -0
  129. package/dist/components/data-table/pagination/data-table-page-status.d.ts +43 -0
  130. package/dist/components/data-table/pagination/data-table-page-status.d.ts.map +1 -0
  131. package/dist/components/data-table/pagination/data-table-page-status.js +48 -0
  132. package/dist/components/data-table/pagination/data-table-page-status.js.map +1 -0
  133. package/dist/components/data-table/pagination/data-table-pagination.d.ts +38 -0
  134. package/dist/components/data-table/pagination/data-table-pagination.d.ts.map +1 -0
  135. package/dist/components/data-table/pagination/data-table-pagination.js +87 -0
  136. package/dist/components/data-table/pagination/data-table-pagination.js.map +1 -0
  137. package/dist/components/data-table/pagination/data-table-row-range.d.ts +49 -0
  138. package/dist/components/data-table/pagination/data-table-row-range.d.ts.map +1 -0
  139. package/dist/components/data-table/pagination/data-table-row-range.js +63 -0
  140. package/dist/components/data-table/pagination/data-table-row-range.js.map +1 -0
  141. package/dist/components/data-table/pagination/data-table-selected-count.d.ts +37 -0
  142. package/dist/components/data-table/pagination/data-table-selected-count.d.ts.map +1 -0
  143. package/dist/components/data-table/pagination/data-table-selected-count.js +44 -0
  144. package/dist/components/data-table/pagination/data-table-selected-count.js.map +1 -0
  145. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.d.ts +15 -0
  146. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.d.ts.map +1 -0
  147. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.js +38 -0
  148. package/dist/components/data-table/pagination/use-data-table-page-scroll-reset.js.map +1 -0
  149. package/dist/components/data-table/resize/data-table-resize-handle.d.ts +48 -0
  150. package/dist/components/data-table/resize/data-table-resize-handle.d.ts.map +1 -0
  151. package/dist/components/data-table/resize/data-table-resize-handle.js +115 -0
  152. package/dist/components/data-table/resize/data-table-resize-handle.js.map +1 -0
  153. package/dist/components/data-table/resize/use-data-table-resize-scroll.d.ts +18 -0
  154. package/dist/components/data-table/resize/use-data-table-resize-scroll.d.ts.map +1 -0
  155. package/dist/components/data-table/resize/use-data-table-resize-scroll.js +55 -0
  156. package/dist/components/data-table/resize/use-data-table-resize-scroll.js.map +1 -0
  157. package/dist/components/data-table/root/data-table-grid-classes.d.ts +10 -0
  158. package/dist/components/data-table/root/data-table-grid-classes.d.ts.map +1 -0
  159. package/dist/components/data-table/root/data-table-grid-classes.js +22 -0
  160. package/dist/components/data-table/root/data-table-grid-classes.js.map +1 -0
  161. package/dist/components/data-table/root/data-table-root.d.ts +41 -0
  162. package/dist/components/data-table/root/data-table-root.d.ts.map +1 -0
  163. package/dist/components/data-table/root/data-table-root.js +72 -0
  164. package/dist/components/data-table/root/data-table-root.js.map +1 -0
  165. package/dist/components/data-table/root/data-table-scroll-area.d.ts +21 -0
  166. package/dist/components/data-table/root/data-table-scroll-area.d.ts.map +1 -0
  167. package/dist/components/data-table/root/data-table-scroll-area.js +127 -0
  168. package/dist/components/data-table/root/data-table-scroll-area.js.map +1 -0
  169. package/dist/components/data-table/root/get-data-table-column-layout.d.ts +45 -0
  170. package/dist/components/data-table/root/get-data-table-column-layout.d.ts.map +1 -0
  171. package/dist/components/data-table/root/get-data-table-column-layout.js +55 -0
  172. package/dist/components/data-table/root/get-data-table-column-layout.js.map +1 -0
  173. package/dist/components/data-table/root/get-data-table-column-pinning.d.ts +46 -0
  174. package/dist/components/data-table/root/get-data-table-column-pinning.d.ts.map +1 -0
  175. package/dist/components/data-table/root/get-data-table-column-pinning.js +46 -0
  176. package/dist/components/data-table/root/get-data-table-column-pinning.js.map +1 -0
  177. package/dist/components/data-table/root/get-data-table-scroll-parent.d.ts +13 -0
  178. package/dist/components/data-table/root/get-data-table-scroll-parent.d.ts.map +1 -0
  179. package/dist/components/data-table/root/get-data-table-scroll-parent.js +20 -0
  180. package/dist/components/data-table/root/get-data-table-scroll-parent.js.map +1 -0
  181. package/dist/components/data-table/root/use-data-table-column-layout.d.ts +25 -0
  182. package/dist/components/data-table/root/use-data-table-column-layout.d.ts.map +1 -0
  183. package/dist/components/data-table/root/use-data-table-column-layout.js +106 -0
  184. package/dist/components/data-table/root/use-data-table-column-layout.js.map +1 -0
  185. package/dist/components/data-table/root/use-data-table-header-offset.d.ts +15 -0
  186. package/dist/components/data-table/root/use-data-table-header-offset.d.ts.map +1 -0
  187. package/dist/components/data-table/root/use-data-table-header-offset.js +35 -0
  188. package/dist/components/data-table/root/use-data-table-header-offset.js.map +1 -0
  189. package/dist/components/data-table/selection/data-table-row-checkbox.d.ts +33 -0
  190. package/dist/components/data-table/selection/data-table-row-checkbox.d.ts.map +1 -0
  191. package/dist/components/data-table/selection/data-table-row-checkbox.js +50 -0
  192. package/dist/components/data-table/selection/data-table-row-checkbox.js.map +1 -0
  193. package/dist/components/data-table/selection/data-table-select-all-checkbox.d.ts +31 -0
  194. package/dist/components/data-table/selection/data-table-select-all-checkbox.d.ts.map +1 -0
  195. package/dist/components/data-table/selection/data-table-select-all-checkbox.js +44 -0
  196. package/dist/components/data-table/selection/data-table-select-all-checkbox.js.map +1 -0
  197. package/dist/components/data-table/selection/selection-column-def.d.ts +54 -0
  198. package/dist/components/data-table/selection/selection-column-def.d.ts.map +1 -0
  199. package/dist/components/data-table/selection/selection-column-def.js +55 -0
  200. package/dist/components/data-table/selection/selection-column-def.js.map +1 -0
  201. package/dist/components/data-table/sorting/data-table-sort-indicator.d.ts +26 -0
  202. package/dist/components/data-table/sorting/data-table-sort-indicator.d.ts.map +1 -0
  203. package/dist/components/data-table/sorting/data-table-sort-indicator.js +64 -0
  204. package/dist/components/data-table/sorting/data-table-sort-indicator.js.map +1 -0
  205. package/dist/components/data-table/sorting/data-table-sort-trigger.d.ts +31 -0
  206. package/dist/components/data-table/sorting/data-table-sort-trigger.d.ts.map +1 -0
  207. package/dist/components/data-table/sorting/data-table-sort-trigger.js +46 -0
  208. package/dist/components/data-table/sorting/data-table-sort-trigger.js.map +1 -0
  209. package/dist/components/data-table/toolbar/data-table-density-select.d.ts +39 -0
  210. package/dist/components/data-table/toolbar/data-table-density-select.d.ts.map +1 -0
  211. package/dist/components/data-table/toolbar/data-table-density-select.js +60 -0
  212. package/dist/components/data-table/toolbar/data-table-density-select.js.map +1 -0
  213. package/dist/components/data-table/toolbar/data-table-sort-column-select.d.ts +47 -0
  214. package/dist/components/data-table/toolbar/data-table-sort-column-select.d.ts.map +1 -0
  215. package/dist/components/data-table/toolbar/data-table-sort-column-select.js +78 -0
  216. package/dist/components/data-table/toolbar/data-table-sort-column-select.js.map +1 -0
  217. package/dist/components/data-table/toolbar/data-table-sort-direction-select.d.ts +40 -0
  218. package/dist/components/data-table/toolbar/data-table-sort-direction-select.d.ts.map +1 -0
  219. package/dist/components/data-table/toolbar/data-table-sort-direction-select.js +66 -0
  220. package/dist/components/data-table/toolbar/data-table-sort-direction-select.js.map +1 -0
  221. package/dist/features/active-row/active-row-feature.d.ts +22 -0
  222. package/dist/features/active-row/active-row-feature.d.ts.map +1 -0
  223. package/dist/features/active-row/active-row-feature.js +55 -0
  224. package/dist/features/active-row/active-row-feature.js.map +1 -0
  225. package/dist/features/active-row/active-row-feature.types.d.ts +64 -0
  226. package/dist/features/active-row/active-row-feature.types.d.ts.map +1 -0
  227. package/dist/features/active-row/active-row-feature.types.js +0 -0
  228. package/dist/features/column-alignment/column-alignment-feature.d.ts +23 -0
  229. package/dist/features/column-alignment/column-alignment-feature.d.ts.map +1 -0
  230. package/dist/features/column-alignment/column-alignment-feature.js +34 -0
  231. package/dist/features/column-alignment/column-alignment-feature.js.map +1 -0
  232. package/dist/features/column-alignment/column-alignment-feature.types.d.ts +34 -0
  233. package/dist/features/column-alignment/column-alignment-feature.types.d.ts.map +1 -0
  234. package/dist/features/column-alignment/column-alignment-feature.types.js +0 -0
  235. package/dist/features/index.d.ts +9 -0
  236. package/dist/features/index.js +5 -0
  237. package/dist/features/loading/loading-feature.d.ts +30 -0
  238. package/dist/features/loading/loading-feature.d.ts.map +1 -0
  239. package/dist/features/loading/loading-feature.js +48 -0
  240. package/dist/features/loading/loading-feature.js.map +1 -0
  241. package/dist/features/loading/loading-feature.types.d.ts +50 -0
  242. package/dist/features/loading/loading-feature.types.d.ts.map +1 -0
  243. package/dist/features/loading/loading-feature.types.js +0 -0
  244. package/dist/features/row-density/row-density-feature.d.ts +26 -0
  245. package/dist/features/row-density/row-density-feature.d.ts.map +1 -0
  246. package/dist/features/row-density/row-density-feature.js +44 -0
  247. package/dist/features/row-density/row-density-feature.js.map +1 -0
  248. package/dist/features/row-density/row-density-feature.types.d.ts +53 -0
  249. package/dist/features/row-density/row-density-feature.types.d.ts.map +1 -0
  250. package/dist/features/row-density/row-density-feature.types.js +0 -0
  251. package/dist/types/index.d.ts +2 -0
  252. package/dist/types/index.js +0 -0
  253. package/dist/types/table-with.d.ts +96 -0
  254. package/dist/types/table-with.d.ts.map +1 -0
  255. package/dist/types/table-with.js +0 -0
  256. package/dist/utils/get-default-column-label.d.ts +17 -0
  257. package/dist/utils/get-default-column-label.d.ts.map +1 -0
  258. package/dist/utils/get-default-column-label.js +18 -0
  259. package/dist/utils/get-default-column-label.js.map +1 -0
  260. package/dist/utils/has-feature.d.ts +54 -0
  261. package/dist/utils/has-feature.d.ts.map +1 -0
  262. package/dist/utils/has-feature.js +55 -0
  263. package/dist/utils/has-feature.js.map +1 -0
  264. package/dist/utils/index.d.ts +3 -0
  265. package/dist/utils/index.js +3 -0
  266. package/package.json +80 -3
  267. package/README.md +0 -3
@@ -0,0 +1,23 @@
1
+ import { Header, RowData, TableFeatures } from "@tanstack/react-table";
2
+ import { Menu } from "@lucasbernardosn/react-ui/overlays/menu";
3
+ import { MergeOverride } from "@lucasbernardosn/utils";
4
+ //#region src/components/column-menu/column-menu-trigger.d.ts
5
+ export type ColumnMenuTriggerProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<Menu.TriggerProps, {
6
+ /** O header da coluna. */
7
+ header: Header<TFeatures, TData>;
8
+ }>;
9
+ /**
10
+ * O botão que abre o menu da coluna: o `DataTable.HeaderButton`, do tamanho da célula do header,
11
+ * com o `Menu.Trigger`. Os filhos são o que ele mostra, em geral o `DataTable.HeaderContent` e o
12
+ * `DataTable.SortIndicator`.
13
+ *
14
+ * Com `rowSortingFeature`, marca a direção em `data-sorted` e, numa coluna `align: 'end'`,
15
+ * inverte a ordem dos filhos, como o `DataTable.SortTrigger`. Enquanto o menu está aberto, o
16
+ * fundo fica no do hover.
17
+ */
18
+ export declare const ColumnMenuTrigger: {
19
+ <TFeatures extends TableFeatures, TData extends RowData>(props: ColumnMenuTriggerProps<TFeatures, TData>): import("react").JSX.Element;
20
+ displayName: string;
21
+ };
22
+ //#endregion
23
+ //# sourceMappingURL=column-menu-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-menu-trigger.d.ts","names":[],"sources":["../../../src/components/column-menu/column-menu-trigger.tsx"],"mappings":";;;;YASY,uBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,KAAK;;EAGH,QAAQ,OAAO,WAAW;;;;;;;;;;;qBAajB;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,uBAAuB,WAAW,yBAAM,IAAA"}
@@ -0,0 +1,38 @@
1
+ import { hasHeaderFeature } from "../../utils/has-feature.js";
2
+ import { DataTableHeaderButton } from "../data-table/header/data-table-header-button.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { mergeProps } from "@base-ui/react";
5
+ import { Menu } from "@lucasbernardosn/react-ui/overlays/menu";
6
+ import { useSelector } from "@tanstack/react-store";
7
+ import { mergeStateClassNames } from "@lucasbernardosn/react-ui/utils";
8
+ //#region src/components/column-menu/column-menu-trigger.tsx
9
+ /**
10
+ * O botão que abre o menu da coluna: o `DataTable.HeaderButton`, do tamanho da célula do header,
11
+ * com o `Menu.Trigger`. Os filhos são o que ele mostra, em geral o `DataTable.HeaderContent` e o
12
+ * `DataTable.SortIndicator`.
13
+ *
14
+ * Com `rowSortingFeature`, marca a direção em `data-sorted` e, numa coluna `align: 'end'`,
15
+ * inverte a ordem dos filhos, como o `DataTable.SortTrigger`. Enquanto o menu está aberto, o
16
+ * fundo fica no do hover.
17
+ */
18
+ const ColumnMenuTrigger = (props) => {
19
+ const { header, className, ...rest } = props;
20
+ const baseProps = {
21
+ "data-component": "ColumnMenu.Trigger",
22
+ "data-sorted": useSelector(header.column.table.store, () => hasHeaderFeature(header, "rowSortingFeature") ? header.column.getIsSorted() : false) || void 0,
23
+ className: mergeStateClassNames([
24
+ "in-data-[align=end]:flex-row-reverse",
25
+ "data-sorted:text-gray-12",
26
+ "data-popup-open:bg-gray-3"
27
+ ], className)
28
+ };
29
+ return /* @__PURE__ */ jsx(Menu.Trigger, {
30
+ render: /* @__PURE__ */ jsx(DataTableHeaderButton, {}),
31
+ ...mergeProps(baseProps, rest)
32
+ });
33
+ };
34
+ ColumnMenuTrigger.displayName = "ColumnMenu.Trigger";
35
+ //#endregion
36
+ export { ColumnMenuTrigger };
37
+
38
+ //# sourceMappingURL=column-menu-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-menu-trigger.js","names":[],"sources":["../../../src/components/column-menu/column-menu-trigger.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react';\nimport { Menu } from '@lucasbernardosn/react-ui/overlays/menu';\nimport { mergeStateClassNames } from '@lucasbernardosn/react-ui/utils';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { useSelector } from '@tanstack/react-store';\nimport type { Header, RowData, TableFeatures } from '@tanstack/react-table';\nimport { hasHeaderFeature } from '../../utils';\nimport { DataTableHeaderButton } from '../data-table/header/data-table-header-button';\n\nexport type ColumnMenuTriggerProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n Menu.TriggerProps,\n {\n /** O header da coluna. */\n header: Header<TFeatures, TData>;\n }\n>;\n\n/**\n * O botão que abre o menu da coluna: o `DataTable.HeaderButton`, do tamanho da célula do header,\n * com o `Menu.Trigger`. Os filhos são o que ele mostra, em geral o `DataTable.HeaderContent` e o\n * `DataTable.SortIndicator`.\n *\n * Com `rowSortingFeature`, marca a direção em `data-sorted` e, numa coluna `align: 'end'`,\n * inverte a ordem dos filhos, como o `DataTable.SortTrigger`. Enquanto o menu está aberto, o\n * fundo fica no do hover.\n */\nexport const ColumnMenuTrigger = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: ColumnMenuTriggerProps<TFeatures, TData>,\n) => {\n const { header, className, ...rest } = props;\n\n /**\n * Re-renderiza quando a direção desta coluna muda. A ordenação é opcional, então assina o\n * store.\n */\n const sorted = useSelector(header.column.table.store, () =>\n hasHeaderFeature(header, 'rowSortingFeature')\n ? header.column.getIsSorted()\n : false,\n );\n\n const baseProps = {\n 'data-component': 'ColumnMenu.Trigger',\n 'data-sorted': sorted || undefined,\n className: mergeStateClassNames(\n [\n // Os mesmos do `DataTable.SortTrigger`, onde estão explicados.\n 'in-data-[align=end]:flex-row-reverse',\n 'data-sorted:text-gray-12',\n\n 'data-popup-open:bg-gray-3',\n ],\n className,\n ),\n };\n\n return (\n <Menu.Trigger\n render={<DataTableHeaderButton />}\n {...mergeProps(baseProps, rest)}\n />\n );\n};\n\nColumnMenuTrigger.displayName = 'ColumnMenu.Trigger';\n"],"mappings":";;;;;;;;;;;;;;;;;AA6BA,MAAa,qBAIX,UACG;CACH,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAYvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,eARa,YAAY,OAAO,OAAO,MAAM,aAC7C,iBAAiB,QAAQ,mBAAmB,IACxC,OAAO,OAAO,YAAY,IAC1B,KAKgB,KAAK,KAAA;EACzB,WAAW,qBACT;GAEE;GACA;GAEA;EACF,GACA,SACF;CACF;CAEA,OACE,oBAAC,KAAK,SAAN;EACE,QAAQ,oBAAC,uBAAD,CAAwB,CAAA;EAChC,GAAI,WAAW,WAAW,IAAI;CAC/B,CAAA;AAEL;AAEA,kBAAkB,cAAc"}
@@ -0,0 +1,2 @@
1
+ import { index_parts_d_exports } from "./index.parts.js";
2
+ export { index_parts_d_exports as ColumnMenu };
@@ -0,0 +1,2 @@
1
+ import { index_parts_exports } from "./index.parts.js";
2
+ export { index_parts_exports as ColumnMenu };
@@ -0,0 +1,13 @@
1
+ import { ColumnMenuLabels } from "./column-menu-labels.js";
2
+ import { ColumnMenuHideItem, ColumnMenuHideItemProps } from "./column-menu-hide-item.js";
3
+ import { ColumnMenuPinItems, ColumnMenuPinItemsProps } from "./column-menu-pin-items.js";
4
+ import { ColumnMenuPopup, ColumnMenuPopupProps } from "./column-menu-popup.js";
5
+ import { ColumnMenuRoot, ColumnMenuRootProps } from "./column-menu-root.js";
6
+ import { ColumnMenuSortItems, ColumnMenuSortItemsProps } from "./column-menu-sort-items.js";
7
+ import { ColumnMenuTrigger, ColumnMenuTriggerProps } from "./column-menu-trigger.js";
8
+ declare namespace index_parts_d_exports {
9
+ export { ColumnMenuHideItem as HideItem, ColumnMenuHideItemProps as HideItemProps, ColumnMenuLabels as Labels, ColumnMenuPinItems as PinItems, ColumnMenuPinItemsProps as PinItemsProps, ColumnMenuPopup as Popup, ColumnMenuPopupProps as PopupProps, ColumnMenuRoot as Root, ColumnMenuRootProps as RootProps, ColumnMenuSortItems as SortItems, ColumnMenuSortItemsProps as SortItemsProps, ColumnMenuTrigger as Trigger, ColumnMenuTriggerProps as TriggerProps };
10
+ }
11
+ //#endregion
12
+ export { ColumnMenuHideItem as HideItem, type ColumnMenuHideItemProps as HideItemProps, type ColumnMenuLabels as Labels, ColumnMenuPinItems as PinItems, type ColumnMenuPinItemsProps as PinItemsProps, ColumnMenuPopup as Popup, type ColumnMenuPopupProps as PopupProps, ColumnMenuRoot as Root, type ColumnMenuRootProps as RootProps, ColumnMenuSortItems as SortItems, type ColumnMenuSortItemsProps as SortItemsProps, ColumnMenuTrigger as Trigger, type ColumnMenuTriggerProps as TriggerProps, index_parts_d_exports };
13
+ //# sourceMappingURL=index.parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../src/components/column-menu/index.parts.ts"],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
2
+ import { ColumnMenuHideItem } from "./column-menu-hide-item.js";
3
+ import { ColumnMenuPinItems } from "./column-menu-pin-items.js";
4
+ import { ColumnMenuSortItems } from "./column-menu-sort-items.js";
5
+ import { ColumnMenuPopup } from "./column-menu-popup.js";
6
+ import { ColumnMenuRoot } from "./column-menu-root.js";
7
+ import { ColumnMenuTrigger } from "./column-menu-trigger.js";
8
+ //#region src/components/column-menu/index.parts.ts
9
+ var index_parts_exports = /* @__PURE__ */ __exportAll({
10
+ HideItem: () => ColumnMenuHideItem,
11
+ PinItems: () => ColumnMenuPinItems,
12
+ Popup: () => ColumnMenuPopup,
13
+ Root: () => ColumnMenuRoot,
14
+ SortItems: () => ColumnMenuSortItems,
15
+ Trigger: () => ColumnMenuTrigger
16
+ });
17
+ //#endregion
18
+ export { ColumnMenuHideItem as HideItem, ColumnMenuPinItems as PinItems, ColumnMenuPopup as Popup, ColumnMenuRoot as Root, ColumnMenuSortItems as SortItems, ColumnMenuTrigger as Trigger, index_parts_exports };
19
+
20
+ //# sourceMappingURL=index.parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.js","names":[],"sources":["../../../src/components/column-menu/index.parts.ts"],"sourcesContent":["export { ColumnMenuHideItem as HideItem } from './column-menu-hide-item';\nexport { ColumnMenuPinItems as PinItems } from './column-menu-pin-items';\nexport { ColumnMenuPopup as Popup } from './column-menu-popup';\nexport { ColumnMenuRoot as Root } from './column-menu-root';\nexport { ColumnMenuSortItems as SortItems } from './column-menu-sort-items';\nexport { ColumnMenuTrigger as Trigger } from './column-menu-trigger';\n\n/* types */\n\nexport type { ColumnMenuHideItemProps as HideItemProps } from './column-menu-hide-item';\nexport type { ColumnMenuLabels as Labels } from './column-menu-labels';\nexport type { ColumnMenuPinItemsProps as PinItemsProps } from './column-menu-pin-items';\nexport type { ColumnMenuPopupProps as PopupProps } from './column-menu-popup';\nexport type { ColumnMenuRootProps as RootProps } from './column-menu-root';\nexport type { ColumnMenuSortItemsProps as SortItemsProps } from './column-menu-sort-items';\nexport type { ColumnMenuTriggerProps as TriggerProps } from './column-menu-trigger';\n"],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { ColumnWith } from "../../types/table-with.js";
2
+ import "../../types/index.js";
3
+ import { RowData, TableFeatures } from "@tanstack/react-table";
4
+ import { useRender } from "@base-ui/react";
5
+ import { MergeOverride } from "@lucasbernardosn/utils";
6
+ //#region src/components/columns-panel/columns-panel-item.d.ts
7
+ export type ColumnsPanelItemProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<useRender.ComponentProps<'li'>, {
8
+ /** A coluna. Exige `columnVisibilityFeature`. */
9
+ column: ColumnWith<TFeatures, TData, 'columnVisibilityFeature'>;
10
+ /** A posição da coluna no grupo dela (fixadas no início, centro ou fixadas no fim). */
11
+ index: number;
12
+ /**
13
+ * O nome da coluna.
14
+ * @default getDefaultColumnLabel(column): o `header` quando é texto, e o id quando não é
15
+ */
16
+ label?: string;
17
+ }>;
18
+ /**
19
+ * Uma coluna no `ColumnsPanel.Root`: o checkbox de visibilidade, o nome e, à direita, a alça de
20
+ * arrastar. Só a alça pega o arrasto; o resto fica livre para o clique no checkbox. Uma coluna com
21
+ * `enableHiding: false` fica com o checkbox desabilitado.
22
+ *
23
+ * Com `columnPinningFeature`, a coluna fixada troca a alça por um alfinete e não se arrasta: o
24
+ * `columnOrder` só ordena as colunas do centro, e as fixadas ficam nas pontas.
25
+ */
26
+ export declare const ColumnsPanelItem: {
27
+ <TFeatures extends TableFeatures, TData extends RowData>(props: ColumnsPanelItemProps<TFeatures, TData>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
28
+ displayName: string;
29
+ };
30
+ //#endregion
31
+ //# sourceMappingURL=columns-panel-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns-panel-item.d.ts","names":[],"sources":["../../../src/components/columns-panel/columns-panel-item.tsx"],"mappings":";;;;;;YAaY,sBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,UAAU;;EAGR,QAAQ,WAAW,WAAW;;EAE9B;;;;;EAKA;;;;;;;;;;qBAYS;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,sBAAsB,WAAW,yBAAM,+CAAA"}
@@ -0,0 +1,92 @@
1
+ import { getDefaultColumnLabel } from "../../utils/get-default-column-label.js";
2
+ import { hasColumnFeature } from "../../utils/has-feature.js";
3
+ import { Icon } from "@lucasbernardosn/react-ui/display/icon";
4
+ import { ListIcon, PushPinIcon } from "@phosphor-icons/react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { mergeProps, useRender } from "@base-ui/react";
7
+ import { useSelector } from "@tanstack/react-store";
8
+ import { mergeTwClassNames } from "@lucasbernardosn/react-ui/utils";
9
+ import { useSortable } from "@dnd-kit/react/sortable";
10
+ import { IconButton } from "@lucasbernardosn/react-ui/buttons/icon-button";
11
+ import { Checkbox } from "@lucasbernardosn/react-ui/fields/checkbox";
12
+ //#region src/components/columns-panel/columns-panel-item.tsx
13
+ /**
14
+ * Uma coluna no `ColumnsPanel.Root`: o checkbox de visibilidade, o nome e, à direita, a alça de
15
+ * arrastar. Só a alça pega o arrasto; o resto fica livre para o clique no checkbox. Uma coluna com
16
+ * `enableHiding: false` fica com o checkbox desabilitado.
17
+ *
18
+ * Com `columnPinningFeature`, a coluna fixada troca a alça por um alfinete e não se arrasta: o
19
+ * `columnOrder` só ordena as colunas do centro, e as fixadas ficam nas pontas.
20
+ */
21
+ const ColumnsPanelItem = (props) => {
22
+ const { column, index, label, render, className, ref, ...rest } = props;
23
+ /** Re-renderiza quando esta coluna aparece ou some. */
24
+ const isVisible = useSelector(column.table.atoms.columnVisibility, () => column.getIsVisible());
25
+ /**
26
+ * Re-renderiza quando esta coluna é fixada ou solta. O pinning é opcional, então assina o
27
+ * store.
28
+ */
29
+ const pinned = useSelector(column.table.store, () => hasColumnFeature(column, "columnPinningFeature") ? column.getIsPinned() : false);
30
+ const columnLabel = label ?? getDefaultColumnLabel(column);
31
+ /** O grupo separa as regiões: o arrasto não leva uma coluna do centro para as fixadas. */
32
+ const sortable = useSortable({
33
+ id: column.id,
34
+ index,
35
+ group: pinned || "center",
36
+ disabled: pinned !== false
37
+ });
38
+ const baseProps = {
39
+ "data-component": "ColumnsPanel.Item",
40
+ "data-dragging": sortable.isDragging ? "" : void 0,
41
+ "data-pinned": pinned || void 0,
42
+ className: mergeTwClassNames([
43
+ "flex",
44
+ "h-8",
45
+ "items-center",
46
+ "gap-2",
47
+ "rounded-md",
48
+ "corner-squircle",
49
+ "ps-2",
50
+ "pe-1",
51
+ "text-sm",
52
+ "data-dragging:bg-gray-3",
53
+ "data-dragging:shadow-md"
54
+ ], className),
55
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("label", {
56
+ className: "flex min-w-0 flex-1 items-center gap-2 select-none",
57
+ children: [/* @__PURE__ */ jsx(Checkbox.Root, {
58
+ checked: isVisible,
59
+ disabled: !column.getCanHide(),
60
+ onCheckedChange: (checked) => column.toggleVisibility(checked),
61
+ children: /* @__PURE__ */ jsx(Checkbox.Indicator, {})
62
+ }), /* @__PURE__ */ jsx("span", {
63
+ className: isVisible ? "truncate" : "truncate text-gray-11",
64
+ children: columnLabel
65
+ })]
66
+ }), pinned === false ? /* @__PURE__ */ jsx(IconButton, {
67
+ ref: sortable.handleRef,
68
+ variant: "ghost",
69
+ size: "2xs",
70
+ icon: /* @__PURE__ */ jsx(ListIcon, {}),
71
+ "aria-label": `Mover a coluna ${columnLabel}`,
72
+ className: "cursor-grab touch-none text-gray-11 active:cursor-grabbing"
73
+ }) : /* @__PURE__ */ jsxs("span", {
74
+ className: "inline-flex size-6 shrink-0 items-center justify-center text-gray-11",
75
+ children: [/* @__PURE__ */ jsx(Icon, { render: /* @__PURE__ */ jsx(PushPinIcon, {}) }), /* @__PURE__ */ jsx("span", {
76
+ className: "sr-only",
77
+ children: "Fixada"
78
+ })]
79
+ })] })
80
+ };
81
+ return useRender({
82
+ render,
83
+ ref: [sortable.ref, ref ?? null],
84
+ defaultTagName: "li",
85
+ props: mergeProps(baseProps, rest)
86
+ });
87
+ };
88
+ ColumnsPanelItem.displayName = "ColumnsPanel.Item";
89
+ //#endregion
90
+ export { ColumnsPanelItem };
91
+
92
+ //# sourceMappingURL=columns-panel-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns-panel-item.js","names":[],"sources":["../../../src/components/columns-panel/columns-panel-item.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { useSortable } from '@dnd-kit/react/sortable';\nimport { IconButton } from '@lucasbernardosn/react-ui/buttons/icon-button';\nimport { Icon } from '@lucasbernardosn/react-ui/display/icon';\nimport { Checkbox } from '@lucasbernardosn/react-ui/fields/checkbox';\nimport { mergeTwClassNames } from '@lucasbernardosn/react-ui/utils';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { ListIcon, PushPinIcon } from '@phosphor-icons/react';\nimport { useSelector } from '@tanstack/react-store';\nimport type { RowData, TableFeatures } from '@tanstack/react-table';\nimport type { ColumnWith } from '../../types';\nimport { getDefaultColumnLabel, hasColumnFeature } from '../../utils';\n\nexport type ColumnsPanelItemProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n useRender.ComponentProps<'li'>,\n {\n /** A coluna. Exige `columnVisibilityFeature`. */\n column: ColumnWith<TFeatures, TData, 'columnVisibilityFeature'>;\n /** A posição da coluna no grupo dela (fixadas no início, centro ou fixadas no fim). */\n index: number;\n /**\n * O nome da coluna.\n * @default getDefaultColumnLabel(column): o `header` quando é texto, e o id quando não é\n */\n label?: string;\n }\n>;\n\n/**\n * Uma coluna no `ColumnsPanel.Root`: o checkbox de visibilidade, o nome e, à direita, a alça de\n * arrastar. Só a alça pega o arrasto; o resto fica livre para o clique no checkbox. Uma coluna com\n * `enableHiding: false` fica com o checkbox desabilitado.\n *\n * Com `columnPinningFeature`, a coluna fixada troca a alça por um alfinete e não se arrasta: o\n * `columnOrder` só ordena as colunas do centro, e as fixadas ficam nas pontas.\n */\nexport const ColumnsPanelItem = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: ColumnsPanelItemProps<TFeatures, TData>,\n) => {\n const { column, index, label, render, className, ref, ...rest } = props;\n\n /** Re-renderiza quando esta coluna aparece ou some. */\n const isVisible = useSelector(column.table.atoms.columnVisibility, () =>\n column.getIsVisible(),\n );\n\n /**\n * Re-renderiza quando esta coluna é fixada ou solta. O pinning é opcional, então assina o\n * store.\n */\n const pinned = useSelector(column.table.store, () =>\n hasColumnFeature(column, 'columnPinningFeature')\n ? column.getIsPinned()\n : false,\n );\n\n const columnLabel = label ?? getDefaultColumnLabel(column);\n\n /** O grupo separa as regiões: o arrasto não leva uma coluna do centro para as fixadas. */\n const sortable = useSortable({\n id: column.id,\n index,\n group: pinned || 'center',\n disabled: pinned !== false,\n });\n\n const baseProps = {\n 'data-component': 'ColumnsPanel.Item',\n 'data-dragging': sortable.isDragging ? '' : undefined,\n 'data-pinned': pinned || undefined,\n className: mergeTwClassNames(\n [\n 'flex',\n 'h-8',\n 'items-center',\n 'gap-2',\n\n 'rounded-md',\n 'corner-squircle',\n 'ps-2',\n 'pe-1',\n\n 'text-sm',\n\n // Em arrasto, destacada sobre as outras.\n 'data-dragging:bg-gray-3',\n 'data-dragging:shadow-md',\n ],\n className,\n ),\n children: (\n <>\n <label className=\"flex min-w-0 flex-1 items-center gap-2 select-none\">\n <Checkbox.Root\n checked={isVisible}\n disabled={!column.getCanHide()}\n onCheckedChange={(checked) => column.toggleVisibility(checked)}\n >\n <Checkbox.Indicator />\n </Checkbox.Root>\n\n <span className={isVisible ? 'truncate' : 'truncate text-gray-11'}>\n {columnLabel}\n </span>\n </label>\n\n {pinned === false ? (\n <IconButton\n ref={sortable.handleRef}\n variant=\"ghost\"\n size=\"2xs\"\n icon={<ListIcon />}\n aria-label={`Mover a coluna ${columnLabel}`}\n // `touch-none`: no toque, o gesto arrasta em vez de rolar.\n className=\"cursor-grab touch-none text-gray-11 active:cursor-grabbing\"\n />\n ) : (\n // Do tamanho da alça, no mesmo lugar dela nos três grupos.\n <span className=\"inline-flex size-6 shrink-0 items-center justify-center text-gray-11\">\n <Icon render={<PushPinIcon />} />\n <span className=\"sr-only\">Fixada</span>\n </span>\n )}\n </>\n ),\n };\n\n return useRender({\n render,\n ref: [sortable.ref, ref ?? null],\n defaultTagName: 'li',\n props: mergeProps(baseProps, rest),\n });\n};\n\nColumnsPanelItem.displayName = 'ColumnsPanel.Item';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCA,MAAa,oBAIX,UACG;CACH,MAAM,EAAE,QAAQ,OAAO,OAAO,QAAQ,WAAW,KAAK,GAAG,SAAS;;CAGlE,MAAM,YAAY,YAAY,OAAO,MAAM,MAAM,wBAC/C,OAAO,aAAa,CACtB;;;;;CAMA,MAAM,SAAS,YAAY,OAAO,MAAM,aACtC,iBAAiB,QAAQ,sBAAsB,IAC3C,OAAO,YAAY,IACnB,KACN;CAEA,MAAM,cAAc,SAAS,sBAAsB,MAAM;;CAGzD,MAAM,WAAW,YAAY;EAC3B,IAAI,OAAO;EACX;EACA,OAAO,UAAU;EACjB,UAAU,WAAW;CACvB,CAAC;CAED,MAAM,YAAY;EAChB,kBAAkB;EAClB,iBAAiB,SAAS,aAAa,KAAK,KAAA;EAC5C,eAAe,UAAU,KAAA;EACzB,WAAW,kBACT;GACE;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GAGA;GACA;EACF,GACA,SACF;EACA,UACE,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,SAAD;GAAO,WAAU;GAAjB,UAAA,CACE,oBAAC,SAAS,MAAV;IACE,SAAS;IACT,UAAU,CAAC,OAAO,WAAW;IAC7B,kBAAkB,YAAY,OAAO,iBAAiB,OAAO;IAE7D,UAAA,oBAAC,SAAS,WAAV,CAAqB,CAAA;GACR,CAAA,GAEf,oBAAC,QAAD;IAAM,WAAW,YAAY,aAAa;IACvC,UAAA;GACG,CAAA,CACD;EAEN,CAAA,GAAA,WAAW,QACV,oBAAC,YAAD;GACE,KAAK,SAAS;GACd,SAAQ;GACR,MAAK;GACL,MAAM,oBAAC,UAAD,CAAW,CAAA;GACjB,cAAY,kBAAkB;GAE9B,WAAU;EACX,CAAA,IAGD,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACE,oBAAC,MAAD,EAAM,QAAQ,oBAAC,aAAD,CAAc,CAAA,EAAI,CAAA,GAChC,oBAAC,QAAD;IAAM,WAAU;IAAU,UAAA;GAAY,CAAA,CAClC;EAER,CAAA,CAAA,EAAA,CAAA;CAEN;CAEA,OAAO,UAAU;EACf;EACA,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI;EAC/B,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,iBAAiB,cAAc"}
@@ -0,0 +1,51 @@
1
+ import { TableWith } from "../../types/table-with.js";
2
+ import "../../types/index.js";
3
+ import { Column, RowData, TableFeatures } from "@tanstack/react-table";
4
+ import { useRender } from "@base-ui/react";
5
+ import React from "react";
6
+ import { MergeOverride } from "@lucasbernardosn/utils";
7
+ //#region src/components/columns-panel/columns-panel-root.d.ts
8
+ export type ColumnsPanelRootProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<useRender.ComponentProps<'div'>, {
9
+ /** A tabela. Exige `columnOrderingFeature` e `columnVisibilityFeature`. */
10
+ table: TableWith<TFeatures, TData, 'columnOrderingFeature' | 'columnVisibilityFeature'>;
11
+ /**
12
+ * Uma função que recebe cada coluna e a posição dela no grupo e devolve o item. Repasse a
13
+ * posição ao `ColumnsPanel.Item`, que a usa no arrasto. Com nós comuns, quem usa faz o laço.
14
+ * @default (column, index) => <ColumnsPanel.Item column={column} index={index} />
15
+ */
16
+ children?: React.ReactNode | ((column: Column<TFeatures, TData>, index: number) => React.ReactNode);
17
+ }>;
18
+ /**
19
+ * A lista das colunas da tabela: marca quais aparecem e arrasta para mudar a ordem. Para um
20
+ * popover ou uma gaveta; a posição, o gatilho e o "restaurar" (`table.resetColumnOrder()`,
21
+ * `table.resetColumnVisibility()`) são do app.
22
+ *
23
+ * Lista as colunas de dados. As de exibição (sem `accessorFn`, como a de seleção e a de ações)
24
+ * ficam fora e no lugar: reordenar só troca as outras entre si. Com `columnPinningFeature`, a
25
+ * tela vira até três listas (fixadas no início, centro e fixadas no fim), e só a do centro se
26
+ * arrasta.
27
+ *
28
+ * O arrasto é pela alça, com o ponteiro ou o teclado (Espaço pega, setas movem, Espaço solta, Esc
29
+ * cancela), e fica preso à lista do centro: não passa por cima das fixadas. O `Root` assina a
30
+ * ordem e o pinning, e cada `ColumnsPanel.Item`, a visibilidade da coluna dele: funciona com o
31
+ * dono da tabela em `() => null`.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <ColumnsPanel.Root table={table}>
36
+ * {(column, index) => (
37
+ * <ColumnsPanel.Item
38
+ * column={column}
39
+ * index={index}
40
+ * label={labels[column.id]}
41
+ * />
42
+ * )}
43
+ * </ColumnsPanel.Root>
44
+ * ```
45
+ */
46
+ export declare const ColumnsPanelRoot: {
47
+ <TFeatures extends TableFeatures, TData extends RowData>(props: ColumnsPanelRootProps<TFeatures, TData>): React.JSX.Element;
48
+ displayName: string;
49
+ };
50
+ //#endregion
51
+ //# sourceMappingURL=columns-panel-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns-panel-root.d.ts","names":[],"sources":["../../../src/components/columns-panel/columns-panel-root.tsx"],"mappings":";;;;;;;YAgBY,sBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,UAAU;;EAGR,OAAO,UACL,WACA;;;;;;EAQF,WACI,MAAM,cACJ,QAAQ,OAAO,WAAW,QAAQ,kBAAkB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+DvD;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,sBAAsB,WAAW,SAAM,MAAA,IAAA"}
@@ -0,0 +1,134 @@
1
+ import { hasColumnFeature, hasTableFeature } from "../../utils/has-feature.js";
2
+ import { ColumnsPanelItem } from "./columns-panel-item.js";
3
+ import { getColumnsPanelColumnOrder } from "./get-columns-panel-column-order.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { mergeProps, useRender } from "@base-ui/react";
6
+ import { shallow, useSelector } from "@tanstack/react-store";
7
+ import { mergeTwClassNames } from "@lucasbernardosn/react-ui/utils";
8
+ import { Fragment as Fragment$1, useMemo, useRef } from "react";
9
+ import { isSortable } from "@dnd-kit/react/sortable";
10
+ import { RestrictToVerticalAxis } from "@dnd-kit/abstract/modifiers";
11
+ import { RestrictToElement } from "@dnd-kit/dom/modifiers";
12
+ import { DragDropProvider } from "@dnd-kit/react";
13
+ //#region src/components/columns-panel/columns-panel-root.tsx
14
+ /** O nome de cada lista, na ordem das regiões: fixadas no início, centro e fixadas no fim. */
15
+ const GROUP_LABELS = [
16
+ "Colunas fixadas no início",
17
+ "Colunas",
18
+ "Colunas fixadas no fim"
19
+ ];
20
+ /**
21
+ * A linha entre as listas, só visual (o alfinete já diz quais são fixadas), fica nas das fixadas,
22
+ * do lado do centro, com o respiro. A lista do centro termina no primeiro e no último item: o
23
+ * arrasto fica preso a ela, e com o respiro dentro dela, o item arrastado cobriria a linha.
24
+ */
25
+ const GROUP_CLASS_NAMES = [
26
+ "mb-1 border-gray-6 border-b pb-1",
27
+ void 0,
28
+ "mt-1 border-gray-6 border-t pt-1"
29
+ ];
30
+ /** As pontas sem fixadas: a mesma referência, para a tupla não mudar à toa. */
31
+ const NO_COLUMNS = [];
32
+ /** Se a coluna é de dados, e não de exibição (sem `accessorFn`, como a de seleção). */
33
+ const isDataColumn = (column) => column.accessorFn !== void 0;
34
+ /**
35
+ * A lista das colunas da tabela: marca quais aparecem e arrasta para mudar a ordem. Para um
36
+ * popover ou uma gaveta; a posição, o gatilho e o "restaurar" (`table.resetColumnOrder()`,
37
+ * `table.resetColumnVisibility()`) são do app.
38
+ *
39
+ * Lista as colunas de dados. As de exibição (sem `accessorFn`, como a de seleção e a de ações)
40
+ * ficam fora e no lugar: reordenar só troca as outras entre si. Com `columnPinningFeature`, a
41
+ * tela vira até três listas (fixadas no início, centro e fixadas no fim), e só a do centro se
42
+ * arrasta.
43
+ *
44
+ * O arrasto é pela alça, com o ponteiro ou o teclado (Espaço pega, setas movem, Espaço solta, Esc
45
+ * cancela), e fica preso à lista do centro: não passa por cima das fixadas. O `Root` assina a
46
+ * ordem e o pinning, e cada `ColumnsPanel.Item`, a visibilidade da coluna dele: funciona com o
47
+ * dono da tabela em `() => null`.
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * <ColumnsPanel.Root table={table}>
52
+ * {(column, index) => (
53
+ * <ColumnsPanel.Item
54
+ * column={column}
55
+ * index={index}
56
+ * label={labels[column.id]}
57
+ * />
58
+ * )}
59
+ * </ColumnsPanel.Root>
60
+ * ```
61
+ */
62
+ const ColumnsPanelRoot = (props) => {
63
+ const { table, render, className, children, ref, ...rest } = props;
64
+ /** A lista do centro, a única que se arrasta: o arrasto fica preso a ela. */
65
+ const centerListRef = useRef(null);
66
+ const groups = useSelector(table.store, () => hasTableFeature(table, "columnPinningFeature") ? [
67
+ table.getStartLeafColumns(),
68
+ table.getCenterLeafColumns(),
69
+ table.getEndLeafColumns()
70
+ ] : [
71
+ NO_COLUMNS,
72
+ table.getAllLeafColumns(),
73
+ NO_COLUMNS
74
+ ], { compare: shallow }).map((columns) => columns.filter(isDataColumn));
75
+ /** Preso à lista do centro, e só na vertical: fora dela não há destino. */
76
+ const modifiers = useMemo(() => [RestrictToVerticalAxis, RestrictToElement.configure({ element: () => centerListRef.current })], []);
77
+ const handleDragEnd = (event) => {
78
+ if (event.canceled) {
79
+ /** O Esc que cancela o arrasto pelo teclado não segue adiante: fecharia o popover em volta. */
80
+ if (event.nativeEvent instanceof KeyboardEvent && event.nativeEvent.key === "Escape") event.nativeEvent.stopPropagation();
81
+ return;
82
+ }
83
+ const { source } = event.operation;
84
+ /**
85
+ * A posição final vem do item arrastado, e não do destino: durante o arrasto, a lista já se
86
+ * reordena com o destino mais próximo, e soltar em cima de uma fixada, que não aceita nada,
87
+ * chega sem destino. Sem isso, a lista ficaria na ordem nova e a tabela, na antiga.
88
+ */
89
+ if (!isSortable(source) || source.initialIndex === source.index) return;
90
+ table.setColumnOrder(getColumnsPanelColumnOrder(table.getAllLeafColumns().map((column) => column.id), (groups[1] ?? []).map((column) => column.id), source.initialIndex, source.index));
91
+ };
92
+ /**
93
+ * Com render-prop ou sem `children`, o laço é daqui, uma lista por grupo com colunas; com nós
94
+ * comuns, de quem usa.
95
+ */
96
+ const content = typeof children === "function" || children === void 0 ? groups.map((columns, groupIndex) => columns.length > 0 && /* @__PURE__ */ jsx("ul", {
97
+ ref: groupIndex === 1 ? centerListRef : void 0,
98
+ "aria-label": GROUP_LABELS[groupIndex],
99
+ className: mergeTwClassNames([
100
+ "flex",
101
+ "flex-col",
102
+ "gap-0.5",
103
+ GROUP_CLASS_NAMES[groupIndex]
104
+ ]),
105
+ children: columns.map((column, index) => /* @__PURE__ */ jsx(Fragment$1, { children: children === void 0 ? hasColumnFeature(column, "columnVisibilityFeature") && /* @__PURE__ */ jsx(ColumnsPanelItem, {
106
+ column,
107
+ index
108
+ }) : children(column, index) }, column.id))
109
+ }, groupIndex)) : children;
110
+ const element = useRender({
111
+ render,
112
+ ref,
113
+ defaultTagName: "div",
114
+ props: mergeProps({
115
+ "data-component": "ColumnsPanel.Root",
116
+ className: mergeTwClassNames([
117
+ "flex",
118
+ "w-56",
119
+ "flex-col"
120
+ ], className),
121
+ children: content
122
+ }, rest)
123
+ });
124
+ return /* @__PURE__ */ jsx(DragDropProvider, {
125
+ modifiers,
126
+ onDragEnd: handleDragEnd,
127
+ children: element
128
+ });
129
+ };
130
+ ColumnsPanelRoot.displayName = "ColumnsPanel.Root";
131
+ //#endregion
132
+ export { ColumnsPanelRoot };
133
+
134
+ //# sourceMappingURL=columns-panel-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns-panel-root.js","names":["Fragment"],"sources":["../../../src/components/columns-panel/columns-panel-root.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { RestrictToVerticalAxis } from '@dnd-kit/abstract/modifiers';\nimport { RestrictToElement } from '@dnd-kit/dom/modifiers';\nimport { DragDropProvider } from '@dnd-kit/react';\nimport { isSortable } from '@dnd-kit/react/sortable';\nimport { mergeTwClassNames } from '@lucasbernardosn/react-ui/utils';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { shallow, useSelector } from '@tanstack/react-store';\nimport type { Column, RowData, TableFeatures } from '@tanstack/react-table';\nimport type React from 'react';\nimport { Fragment, useMemo, useRef } from 'react';\nimport type { TableWith } from '../../types';\nimport { hasColumnFeature, hasTableFeature } from '../../utils';\nimport { ColumnsPanelItem } from './columns-panel-item';\nimport { getColumnsPanelColumnOrder } from './get-columns-panel-column-order';\n\nexport type ColumnsPanelRootProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n useRender.ComponentProps<'div'>,\n {\n /** A tabela. Exige `columnOrderingFeature` e `columnVisibilityFeature`. */\n table: TableWith<\n TFeatures,\n TData,\n 'columnOrderingFeature' | 'columnVisibilityFeature'\n >;\n /**\n * Uma função que recebe cada coluna e a posição dela no grupo e devolve o item. Repasse a\n * posição ao `ColumnsPanel.Item`, que a usa no arrasto. Com nós comuns, quem usa faz o laço.\n * @default (column, index) => <ColumnsPanel.Item column={column} index={index} />\n */\n children?:\n | React.ReactNode\n | ((column: Column<TFeatures, TData>, index: number) => React.ReactNode);\n }\n>;\n\n/** Evento de fim de arrasto, como o `DragDropProvider` o entrega. */\ntype DragEndEvent = Parameters<\n NonNullable<React.ComponentProps<typeof DragDropProvider>['onDragEnd']>\n>[0];\n\n/** O nome de cada lista, na ordem das regiões: fixadas no início, centro e fixadas no fim. */\nconst GROUP_LABELS = [\n 'Colunas fixadas no início',\n 'Colunas',\n 'Colunas fixadas no fim',\n];\n\n/**\n * A linha entre as listas, só visual (o alfinete já diz quais são fixadas), fica nas das fixadas,\n * do lado do centro, com o respiro. A lista do centro termina no primeiro e no último item: o\n * arrasto fica preso a ela, e com o respiro dentro dela, o item arrastado cobriria a linha.\n */\nconst GROUP_CLASS_NAMES = [\n 'mb-1 border-gray-6 border-b pb-1',\n undefined,\n 'mt-1 border-gray-6 border-t pt-1',\n];\n\n/** As pontas sem fixadas: a mesma referência, para a tupla não mudar à toa. */\nconst NO_COLUMNS: never[] = [];\n\n/** Se a coluna é de dados, e não de exibição (sem `accessorFn`, como a de seleção). */\nconst isDataColumn = <TFeatures extends TableFeatures, TData extends RowData>(\n column: Column<TFeatures, TData>,\n) => column.accessorFn !== undefined;\n\n/**\n * A lista das colunas da tabela: marca quais aparecem e arrasta para mudar a ordem. Para um\n * popover ou uma gaveta; a posição, o gatilho e o \"restaurar\" (`table.resetColumnOrder()`,\n * `table.resetColumnVisibility()`) são do app.\n *\n * Lista as colunas de dados. As de exibição (sem `accessorFn`, como a de seleção e a de ações)\n * ficam fora e no lugar: reordenar só troca as outras entre si. Com `columnPinningFeature`, a\n * tela vira até três listas (fixadas no início, centro e fixadas no fim), e só a do centro se\n * arrasta.\n *\n * O arrasto é pela alça, com o ponteiro ou o teclado (Espaço pega, setas movem, Espaço solta, Esc\n * cancela), e fica preso à lista do centro: não passa por cima das fixadas. O `Root` assina a\n * ordem e o pinning, e cada `ColumnsPanel.Item`, a visibilidade da coluna dele: funciona com o\n * dono da tabela em `() => null`.\n *\n * @example\n * ```tsx\n * <ColumnsPanel.Root table={table}>\n * {(column, index) => (\n * <ColumnsPanel.Item\n * column={column}\n * index={index}\n * label={labels[column.id]}\n * />\n * )}\n * </ColumnsPanel.Root>\n * ```\n */\nexport const ColumnsPanelRoot = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: ColumnsPanelRootProps<TFeatures, TData>,\n) => {\n const { table, render, className, children, ref, ...rest } = props;\n\n /** A lista do centro, a única que se arrasta: o arrasto fica preso a ela. */\n const centerListRef = useRef<HTMLUListElement>(null);\n\n /**\n * As colunas das três regiões, que o TanStack memoiza, numa tupla: o `shallow` compara item a\n * item, e só re-renderiza quando a ordem ou o pinning mudam. Já na ordem final: o\n * `columnOrder` vale dentro de cada região.\n */\n const regions = useSelector(\n table.store,\n () =>\n hasTableFeature(table, 'columnPinningFeature')\n ? [\n table.getStartLeafColumns(),\n table.getCenterLeafColumns(),\n table.getEndLeafColumns(),\n ]\n : [NO_COLUMNS, table.getAllLeafColumns(), NO_COLUMNS],\n { compare: shallow },\n );\n\n const groups = regions.map((columns) => columns.filter(isDataColumn));\n\n /** Preso à lista do centro, e só na vertical: fora dela não há destino. */\n const modifiers = useMemo(\n () => [\n RestrictToVerticalAxis,\n RestrictToElement.configure({ element: () => centerListRef.current }),\n ],\n [],\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n if (event.canceled) {\n /** O Esc que cancela o arrasto pelo teclado não segue adiante: fecharia o popover em volta. */\n if (\n event.nativeEvent instanceof KeyboardEvent &&\n event.nativeEvent.key === 'Escape'\n ) {\n event.nativeEvent.stopPropagation();\n }\n\n return;\n }\n\n const { source } = event.operation;\n\n /**\n * A posição final vem do item arrastado, e não do destino: durante o arrasto, a lista já se\n * reordena com o destino mais próximo, e soltar em cima de uma fixada, que não aceita nada,\n * chega sem destino. Sem isso, a lista ficaria na ordem nova e a tabela, na antiga.\n */\n if (!isSortable(source) || source.initialIndex === source.index) {\n return;\n }\n\n table.setColumnOrder(\n getColumnsPanelColumnOrder(\n table.getAllLeafColumns().map((column) => column.id),\n (groups[1] ?? []).map((column) => column.id),\n source.initialIndex,\n source.index,\n ),\n );\n };\n\n /**\n * Com render-prop ou sem `children`, o laço é daqui, uma lista por grupo com colunas; com nós\n * comuns, de quem usa.\n */\n const content =\n typeof children === 'function' || children === undefined\n ? groups.map(\n (columns, groupIndex) =>\n columns.length > 0 && (\n <ul\n key={groupIndex}\n ref={groupIndex === 1 ? centerListRef : undefined}\n aria-label={GROUP_LABELS[groupIndex]}\n className={mergeTwClassNames([\n 'flex',\n 'flex-col',\n 'gap-0.5',\n GROUP_CLASS_NAMES[groupIndex],\n ])}\n >\n {columns.map((column, index) => (\n <Fragment key={column.id}>\n {children === undefined\n ? hasColumnFeature(column, 'columnVisibilityFeature') && (\n <ColumnsPanelItem\n column={column}\n index={index}\n />\n )\n : children(column, index)}\n </Fragment>\n ))}\n </ul>\n ),\n )\n : children;\n\n const element = useRender({\n render,\n ref,\n defaultTagName: 'div',\n props: mergeProps(\n {\n 'data-component': 'ColumnsPanel.Root',\n className: mergeTwClassNames(['flex', 'w-56', 'flex-col'], className),\n children: content,\n },\n rest,\n ),\n });\n\n return (\n <DragDropProvider\n modifiers={modifiers}\n onDragEnd={handleDragEnd}\n >\n {element}\n </DragDropProvider>\n );\n};\n\nColumnsPanelRoot.displayName = 'ColumnsPanel.Root';\n"],"mappings":";;;;;;;;;;;;;;AA6CA,MAAM,eAAe;CACnB;CACA;CACA;AACF;;;;;;AAOA,MAAM,oBAAoB;CACxB;CACA,KAAA;CACA;AACF;;AAGA,MAAM,aAAsB,CAAC;;AAG7B,MAAM,gBACJ,WACG,OAAO,eAAe,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B3B,MAAa,oBAIX,UACG;CACH,MAAM,EAAE,OAAO,QAAQ,WAAW,UAAU,KAAK,GAAG,SAAS;;CAG7D,MAAM,gBAAgB,OAAyB,IAAI;CAoBnD,MAAM,SAbU,YACd,MAAM,aAEJ,gBAAgB,OAAO,sBAAsB,IACzC;EACE,MAAM,oBAAoB;EAC1B,MAAM,qBAAqB;EAC3B,MAAM,kBAAkB;CAC1B,IACA;EAAC;EAAY,MAAM,kBAAkB;EAAG;CAAU,GACxD,EAAE,SAAS,QAAQ,CAGA,CAAC,CAAC,KAAK,YAAY,QAAQ,OAAO,YAAY,CAAC;;CAGpE,MAAM,YAAY,cACV,CACJ,wBACA,kBAAkB,UAAU,EAAE,eAAe,cAAc,QAAQ,CAAC,CACtE,GACA,CAAC,CACH;CAEA,MAAM,iBAAiB,UAAwB;EAC7C,IAAI,MAAM,UAAU;;GAElB,IACE,MAAM,uBAAuB,iBAC7B,MAAM,YAAY,QAAQ,UAE1B,MAAM,YAAY,gBAAgB;GAGpC;EACF;EAEA,MAAM,EAAE,WAAW,MAAM;;;;;;EAOzB,IAAI,CAAC,WAAW,MAAM,KAAK,OAAO,iBAAiB,OAAO,OACxD;EAGF,MAAM,eACJ,2BACE,MAAM,kBAAkB,CAAC,CAAC,KAAK,WAAW,OAAO,EAAE,IAClD,OAAO,MAAM,CAAC,EAAA,CAAG,KAAK,WAAW,OAAO,EAAE,GAC3C,OAAO,cACP,OAAO,KACT,CACF;CACF;;;;;CAMA,MAAM,UACJ,OAAO,aAAa,cAAc,aAAa,KAAA,IAC3C,OAAO,KACJ,SAAS,eACR,QAAQ,SAAS,KACf,oBAAC,MAAD;EAEE,KAAK,eAAe,IAAI,gBAAgB,KAAA;EACxC,cAAY,aAAa;EACzB,WAAW,kBAAkB;GAC3B;GACA;GACA;GACA,kBAAkB;EACpB,CAAC;EAEA,UAAA,QAAQ,KAAK,QAAQ,UACpB,oBAACA,YAAD,EAAA,UACG,aAAa,KAAA,IACV,iBAAiB,QAAQ,yBAAyB,KAChD,oBAAC,kBAAD;GACU;GACD;EACR,CAAA,IAEH,SAAS,QAAQ,KAAK,EAClB,GATK,OAAO,EASZ,CACX;CACC,GAtBG,UAsBH,CAEV,IACA;CAEN,MAAM,UAAU,UAAU;EACxB;EACA;EACA,gBAAgB;EAChB,OAAO,WACL;GACE,kBAAkB;GAClB,WAAW,kBAAkB;IAAC;IAAQ;IAAQ;GAAU,GAAG,SAAS;GACpE,UAAU;EACZ,GACA,IACF;CACF,CAAC;CAED,OACE,oBAAC,kBAAD;EACa;EACX,WAAW;EAEV,UAAA;CACe,CAAA;AAEtB;AAEA,iBAAiB,cAAc"}
@@ -0,0 +1,16 @@
1
+ //#region src/components/columns-panel/get-columns-panel-column-order.d.ts
2
+ /**
3
+ * A ordem completa das colunas depois de um arrasto na lista do centro. Move o item de
4
+ * `fromIndex` para `toIndex` entre os `centerIds`, e a nova ordem deles ocupa as posições que eles
5
+ * já tinham em `columnIds`: as colunas fora da lista (as de exibição e as fixadas) ficam onde
6
+ * estão.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * getColumnsPanelColumnOrder(['select', 'name', 'age', 'city'], ['name', 'age', 'city'], 0, 2);
11
+ * // → ['select', 'age', 'city', 'name']
12
+ * ```
13
+ */
14
+ export declare const getColumnsPanelColumnOrder: (columnIds: readonly string[], centerIds: readonly string[], fromIndex: number, toIndex: number) => string[];
15
+ //#endregion
16
+ //# sourceMappingURL=get-columns-panel-column-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-columns-panel-column-order.d.ts","names":[],"sources":["../../../src/components/columns-panel/get-columns-panel-column-order.ts"],"mappings":";;;;;;;;;;;;;qBAca,6BACX,8BACA,8BACA,mBACA"}
@@ -0,0 +1,24 @@
1
+ import { arrayMove } from "@dnd-kit/helpers";
2
+ //#region src/components/columns-panel/get-columns-panel-column-order.ts
3
+ /**
4
+ * A ordem completa das colunas depois de um arrasto na lista do centro. Move o item de
5
+ * `fromIndex` para `toIndex` entre os `centerIds`, e a nova ordem deles ocupa as posições que eles
6
+ * já tinham em `columnIds`: as colunas fora da lista (as de exibição e as fixadas) ficam onde
7
+ * estão.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * getColumnsPanelColumnOrder(['select', 'name', 'age', 'city'], ['name', 'age', 'city'], 0, 2);
12
+ * // → ['select', 'age', 'city', 'name']
13
+ * ```
14
+ */
15
+ const getColumnsPanelColumnOrder = (columnIds, centerIds, fromIndex, toIndex) => {
16
+ const nextCenterIds = arrayMove([...centerIds], fromIndex, toIndex);
17
+ const centerIdSet = new Set(centerIds);
18
+ let nextIndex = 0;
19
+ return columnIds.map((columnId) => centerIdSet.has(columnId) ? nextCenterIds[nextIndex++] ?? columnId : columnId);
20
+ };
21
+ //#endregion
22
+ export { getColumnsPanelColumnOrder };
23
+
24
+ //# sourceMappingURL=get-columns-panel-column-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-columns-panel-column-order.js","names":[],"sources":["../../../src/components/columns-panel/get-columns-panel-column-order.ts"],"sourcesContent":["import { arrayMove } from '@dnd-kit/helpers';\n\n/**\n * A ordem completa das colunas depois de um arrasto na lista do centro. Move o item de\n * `fromIndex` para `toIndex` entre os `centerIds`, e a nova ordem deles ocupa as posições que eles\n * já tinham em `columnIds`: as colunas fora da lista (as de exibição e as fixadas) ficam onde\n * estão.\n *\n * @example\n * ```ts\n * getColumnsPanelColumnOrder(['select', 'name', 'age', 'city'], ['name', 'age', 'city'], 0, 2);\n * // → ['select', 'age', 'city', 'name']\n * ```\n */\nexport const getColumnsPanelColumnOrder = (\n columnIds: readonly string[],\n centerIds: readonly string[],\n fromIndex: number,\n toIndex: number,\n) => {\n const nextCenterIds = arrayMove([...centerIds], fromIndex, toIndex);\n const centerIdSet = new Set(centerIds);\n\n let nextIndex = 0;\n\n return columnIds.map((columnId) =>\n centerIdSet.has(columnId)\n ? (nextCenterIds[nextIndex++] ?? columnId)\n : columnId,\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,8BACX,WACA,WACA,WACA,YACG;CACH,MAAM,gBAAgB,UAAU,CAAC,GAAG,SAAS,GAAG,WAAW,OAAO;CAClE,MAAM,cAAc,IAAI,IAAI,SAAS;CAErC,IAAI,YAAY;CAEhB,OAAO,UAAU,KAAK,aACpB,YAAY,IAAI,QAAQ,IACnB,cAAc,gBAAgB,WAC/B,QACN;AACF"}
@@ -0,0 +1,2 @@
1
+ import { index_parts_d_exports } from "./index.parts.js";
2
+ export { index_parts_d_exports as ColumnsPanel };
@@ -0,0 +1,2 @@
1
+ import { index_parts_exports } from "./index.parts.js";
2
+ export { index_parts_exports as ColumnsPanel };
@@ -0,0 +1,8 @@
1
+ import { ColumnsPanelItem, ColumnsPanelItemProps } from "./columns-panel-item.js";
2
+ import { ColumnsPanelRoot, ColumnsPanelRootProps } from "./columns-panel-root.js";
3
+ declare namespace index_parts_d_exports {
4
+ export { ColumnsPanelItem as Item, ColumnsPanelItemProps as ItemProps, ColumnsPanelRoot as Root, ColumnsPanelRootProps as RootProps };
5
+ }
6
+ //#endregion
7
+ export { ColumnsPanelItem as Item, type ColumnsPanelItemProps as ItemProps, ColumnsPanelRoot as Root, type ColumnsPanelRootProps as RootProps, index_parts_d_exports };
8
+ //# sourceMappingURL=index.parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../src/components/columns-panel/index.parts.ts"],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
2
+ import { ColumnsPanelItem } from "./columns-panel-item.js";
3
+ import { ColumnsPanelRoot } from "./columns-panel-root.js";
4
+ //#region src/components/columns-panel/index.parts.ts
5
+ var index_parts_exports = /* @__PURE__ */ __exportAll({
6
+ Item: () => ColumnsPanelItem,
7
+ Root: () => ColumnsPanelRoot
8
+ });
9
+ //#endregion
10
+ export { ColumnsPanelItem as Item, ColumnsPanelRoot as Root, index_parts_exports };
11
+
12
+ //# sourceMappingURL=index.parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.js","names":[],"sources":["../../../src/components/columns-panel/index.parts.ts"],"sourcesContent":["export { ColumnsPanelItem as Item } from './columns-panel-item';\nexport { ColumnsPanelRoot as Root } from './columns-panel-root';\n\n/* types */\n\nexport type { ColumnsPanelItemProps as ItemProps } from './columns-panel-item';\nexport type { ColumnsPanelRootProps as RootProps } from './columns-panel-root';\n"],"mappings":""}