@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 @@
1
+ {"version":3,"file":"get-data-table-loading-without-rows.js","names":[],"sources":["../../../../src/components/data-table/loading/get-data-table-loading-without-rows.ts"],"sourcesContent":["import type { RowData, Table, TableFeatures } from '@tanstack/react-table';\nimport { hasTableFeature } from '../../../utils';\n\n/**\n * Se a tabela carrega sem nenhuma linha, como na primeira carga: o corpo mostra as\n * linhas-fantasma, e a barra da paginação, sem o total, que ainda não chegou. Sem\n * `loadingFeature`, `false`.\n *\n * @example\n * ```ts\n * // Primeira carga da API: `isLoading: true` e `data: []`.\n * getDataTableLoadingWithoutRows(table); // → true\n * ```\n */\nexport const getDataTableLoadingWithoutRows = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table<TFeatures, TData>,\n) =>\n hasTableFeature(table, 'loadingFeature') &&\n table.atoms.isLoading.get() &&\n table.getRowModel().rows.length === 0;\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,kCAIX,UAEA,gBAAgB,OAAO,gBAAgB,KACvC,MAAM,MAAM,UAAU,IAAI,KAC1B,MAAM,YAAY,CAAC,CAAC,KAAK,WAAW"}
@@ -0,0 +1,16 @@
1
+ import { RowData, Table, TableFeatures } from "@tanstack/react-table";
2
+ import React from "react";
3
+ //#region src/components/data-table/loading/use-data-table-loading-inert.d.ts
4
+ /**
5
+ * Bloqueia o corpo (`inert`) enquanto a tabela carrega, com `loadingFeature`: um clique, o Enter
6
+ * ou o Delete agiriam sobre o dado antigo. O cabeçalho e a paginação ficam livres.
7
+ *
8
+ * O `inert` tira o foco de uma linha. Se o foco estava no corpo quando a carga começou, ele volta
9
+ * quando ela termina: para a linha ativa, se ela continua na tela, ou para a primeira.
10
+ *
11
+ * Assina o store fora do React, como as variáveis das colunas: o atributo muda sem re-renderizar
12
+ * o corpo, que recriaria todas as linhas.
13
+ */
14
+ export declare const useDataTableLoadingInert: <TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, ref: React.RefObject<HTMLElement | null>) => void;
15
+ //#endregion
16
+ //# sourceMappingURL=use-data-table-loading-inert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table-loading-inert.d.ts","names":[],"sources":["../../../../src/components/data-table/loading/use-data-table-loading-inert.ts"],"mappings":";;;;;;;;;;;;;qBAmBa,2BACX,kBAAkB,eAClB,cAAc,SAEd,OAAO,MAAM,WAAW,QACxB,KAAK,MAAM,UAAU"}
@@ -0,0 +1,54 @@
1
+ import { hasTableFeature } from "../../../utils/has-feature.js";
2
+ import { focusDataTableRow, getDataTableRowElements } from "../body/data-table-row-focus.js";
3
+ import { useLayoutEffect, useRef } from "react";
4
+ //#region src/components/data-table/loading/use-data-table-loading-inert.ts
5
+ /**
6
+ * Bloqueia o corpo (`inert`) enquanto a tabela carrega, com `loadingFeature`: um clique, o Enter
7
+ * ou o Delete agiriam sobre o dado antigo. O cabeçalho e a paginação ficam livres.
8
+ *
9
+ * O `inert` tira o foco de uma linha. Se o foco estava no corpo quando a carga começou, ele volta
10
+ * quando ela termina: para a linha ativa, se ela continua na tela, ou para a primeira.
11
+ *
12
+ * Assina o store fora do React, como as variáveis das colunas: o atributo muda sem re-renderizar
13
+ * o corpo, que recriaria todas as linhas.
14
+ */
15
+ const useDataTableLoadingInert = (table, ref) => {
16
+ /** A tabela do último render, lida por ref para não refazer a assinatura a cada render. */
17
+ const tableRef = useRef(table);
18
+ useLayoutEffect(() => {
19
+ tableRef.current = table;
20
+ });
21
+ useLayoutEffect(() => {
22
+ /** Se o foco estava no corpo quando a carga começou. */
23
+ let wasFocusInside = false;
24
+ const syncInert = () => {
25
+ const element = ref.current;
26
+ const currentTable = tableRef.current;
27
+ if (!element) return;
28
+ const isLoading = hasTableFeature(currentTable, "loadingFeature") && currentTable.atoms.isLoading.get();
29
+ if (isLoading === element.hasAttribute("inert")) return;
30
+ if (isLoading) {
31
+ wasFocusInside = element.contains(document.activeElement);
32
+ element.setAttribute("inert", "");
33
+ return;
34
+ }
35
+ element.removeAttribute("inert");
36
+ if (!wasFocusInside) return;
37
+ wasFocusInside = false;
38
+ /** No próximo quadro, com as linhas novas já no DOM. */
39
+ requestAnimationFrame(() => {
40
+ const { activeElement } = document;
41
+ if (activeElement && activeElement !== document.body) return;
42
+ const targetRow = element.querySelector("[role=\"row\"][data-active]") ?? getDataTableRowElements(element)[0];
43
+ if (targetRow) focusDataTableRow(targetRow);
44
+ });
45
+ };
46
+ syncInert();
47
+ const subscription = table.store.subscribe(syncInert);
48
+ return () => subscription.unsubscribe();
49
+ }, [table.store, ref]);
50
+ };
51
+ //#endregion
52
+ export { useDataTableLoadingInert };
53
+
54
+ //# sourceMappingURL=use-data-table-loading-inert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table-loading-inert.js","names":[],"sources":["../../../../src/components/data-table/loading/use-data-table-loading-inert.ts"],"sourcesContent":["import type { RowData, Table, TableFeatures } from '@tanstack/react-table';\nimport type React from 'react';\nimport { useLayoutEffect, useRef } from 'react';\nimport { hasTableFeature } from '../../../utils';\nimport {\n focusDataTableRow,\n getDataTableRowElements,\n} from '../body/data-table-row-focus';\n\n/**\n * Bloqueia o corpo (`inert`) enquanto a tabela carrega, com `loadingFeature`: um clique, o Enter\n * ou o Delete agiriam sobre o dado antigo. O cabeçalho e a paginação ficam livres.\n *\n * O `inert` tira o foco de uma linha. Se o foco estava no corpo quando a carga começou, ele volta\n * quando ela termina: para a linha ativa, se ela continua na tela, ou para a primeira.\n *\n * Assina o store fora do React, como as variáveis das colunas: o atributo muda sem re-renderizar\n * o corpo, que recriaria todas as linhas.\n */\nexport const useDataTableLoadingInert = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table<TFeatures, TData>,\n ref: React.RefObject<HTMLElement | null>,\n) => {\n /** A tabela do último render, lida por ref para não refazer a assinatura a cada render. */\n const tableRef = useRef(table);\n\n useLayoutEffect(() => {\n tableRef.current = table;\n });\n\n useLayoutEffect(() => {\n /** Se o foco estava no corpo quando a carga começou. */\n let wasFocusInside = false;\n\n const syncInert = () => {\n const element = ref.current;\n const currentTable = tableRef.current;\n\n if (!element) {\n return;\n }\n\n const isLoading =\n hasTableFeature(currentTable, 'loadingFeature') &&\n currentTable.atoms.isLoading.get();\n\n if (isLoading === element.hasAttribute('inert')) {\n return;\n }\n\n if (isLoading) {\n wasFocusInside = element.contains(document.activeElement);\n element.setAttribute('inert', '');\n\n return;\n }\n\n element.removeAttribute('inert');\n\n if (!wasFocusInside) {\n return;\n }\n\n wasFocusInside = false;\n\n /** No próximo quadro, com as linhas novas já no DOM. */\n requestAnimationFrame(() => {\n const { activeElement } = document;\n\n if (activeElement && activeElement !== document.body) {\n return;\n }\n\n const targetRow =\n element.querySelector<HTMLElement>('[role=\"row\"][data-active]') ??\n getDataTableRowElements(element)[0];\n\n if (targetRow) {\n focusDataTableRow(targetRow);\n }\n });\n };\n\n syncInert();\n\n const subscription = table.store.subscribe(syncInert);\n\n return () => subscription.unsubscribe();\n }, [table.store, ref]);\n};\n"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAa,4BAIX,OACA,QACG;;CAEH,MAAM,WAAW,OAAO,KAAK;CAE7B,sBAAsB;EACpB,SAAS,UAAU;CACrB,CAAC;CAED,sBAAsB;;EAEpB,IAAI,iBAAiB;EAErB,MAAM,kBAAkB;GACtB,MAAM,UAAU,IAAI;GACpB,MAAM,eAAe,SAAS;GAE9B,IAAI,CAAC,SACH;GAGF,MAAM,YACJ,gBAAgB,cAAc,gBAAgB,KAC9C,aAAa,MAAM,UAAU,IAAI;GAEnC,IAAI,cAAc,QAAQ,aAAa,OAAO,GAC5C;GAGF,IAAI,WAAW;IACb,iBAAiB,QAAQ,SAAS,SAAS,aAAa;IACxD,QAAQ,aAAa,SAAS,EAAE;IAEhC;GACF;GAEA,QAAQ,gBAAgB,OAAO;GAE/B,IAAI,CAAC,gBACH;GAGF,iBAAiB;;GAGjB,4BAA4B;IAC1B,MAAM,EAAE,kBAAkB;IAE1B,IAAI,iBAAiB,kBAAkB,SAAS,MAC9C;IAGF,MAAM,YACJ,QAAQ,cAA2B,6BAA2B,KAC9D,wBAAwB,OAAO,CAAC,CAAC;IAEnC,IAAI,WACF,kBAAkB,SAAS;GAE/B,CAAC;EACH;EAEA,UAAU;EAEV,MAAM,eAAe,MAAM,MAAM,UAAU,SAAS;EAEpD,aAAa,aAAa,YAAY;CACxC,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC;AACvB"}
@@ -0,0 +1,13 @@
1
+ import { RowData, Table, TableFeatures } from "@tanstack/react-table";
2
+ //#region src/components/data-table/loading/use-data-table-loading.d.ts
3
+ /**
4
+ * O carregamento da tabela, de `loadingFeature`: `isLoading` na hora, para o `aria-busy`, e
5
+ * `isLoadingVisible` depois de 200ms, para o que aparece na tela. Sem a feature, os dois ficam
6
+ * `false`.
7
+ */
8
+ export declare const useDataTableLoading: <TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>) => {
9
+ isLoading: boolean;
10
+ isLoadingVisible: boolean;
11
+ };
12
+ //#endregion
13
+ //# sourceMappingURL=use-data-table-loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table-loading.d.ts","names":[],"sources":["../../../../src/components/data-table/loading/use-data-table-loading.ts"],"mappings":";;;;;;;qBAgBa,sBACX,kBAAkB,eAClB,cAAc,SAEd,OAAO,MAAM,WAAW"}
@@ -0,0 +1,40 @@
1
+ import { hasTableFeature } from "../../../utils/has-feature.js";
2
+ import { useSelector } from "@tanstack/react-store";
3
+ import { useEffect, useState } from "react";
4
+ //#region src/components/data-table/loading/use-data-table-loading.ts
5
+ /**
6
+ * Quanto o carregamento espera antes de aparecer. Uma resposta mais rápida que isto não mostra
7
+ * nada: o skeleton ou a barra piscariam e sumiriam, o que incomoda mais do que ajuda.
8
+ */
9
+ const LOADING_VISIBLE_DELAY = 200;
10
+ /**
11
+ * O carregamento da tabela, de `loadingFeature`: `isLoading` na hora, para o `aria-busy`, e
12
+ * `isLoadingVisible` depois de 200ms, para o que aparece na tela. Sem a feature, os dois ficam
13
+ * `false`.
14
+ */
15
+ const useDataTableLoading = (table) => {
16
+ /** Re-renderiza quando o carregamento liga ou desliga. A feature é opcional: assina o store. */
17
+ const isLoading = useSelector(table.store, () => hasTableFeature(table, "loadingFeature") && table.atoms.isLoading.get());
18
+ /** Se a carga atual já passou do atraso. Volta a `false` no fim dela, para a próxima esperar. */
19
+ const [isDelayElapsed, setIsDelayElapsed] = useState(false);
20
+ useEffect(() => {
21
+ if (!isLoading) return;
22
+ const timeout = setTimeout(() => setIsDelayElapsed(true), LOADING_VISIBLE_DELAY);
23
+ return () => {
24
+ clearTimeout(timeout);
25
+ setIsDelayElapsed(false);
26
+ };
27
+ }, [isLoading]);
28
+ /**
29
+ * Derivado, e não guardado: desliga no mesmo render em que a carga termina, e o conteúdo novo
30
+ * não espera o efeito.
31
+ */
32
+ return {
33
+ isLoading,
34
+ isLoadingVisible: isLoading && isDelayElapsed
35
+ };
36
+ };
37
+ //#endregion
38
+ export { useDataTableLoading };
39
+
40
+ //# sourceMappingURL=use-data-table-loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table-loading.js","names":[],"sources":["../../../../src/components/data-table/loading/use-data-table-loading.ts"],"sourcesContent":["import { useSelector } from '@tanstack/react-store';\nimport type { RowData, Table, TableFeatures } from '@tanstack/react-table';\nimport { useEffect, useState } from 'react';\nimport { hasTableFeature } from '../../../utils';\n\n/**\n * Quanto o carregamento espera antes de aparecer. Uma resposta mais rápida que isto não mostra\n * nada: o skeleton ou a barra piscariam e sumiriam, o que incomoda mais do que ajuda.\n */\nconst LOADING_VISIBLE_DELAY = 200;\n\n/**\n * O carregamento da tabela, de `loadingFeature`: `isLoading` na hora, para o `aria-busy`, e\n * `isLoadingVisible` depois de 200ms, para o que aparece na tela. Sem a feature, os dois ficam\n * `false`.\n */\nexport const useDataTableLoading = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table<TFeatures, TData>,\n) => {\n /** Re-renderiza quando o carregamento liga ou desliga. A feature é opcional: assina o store. */\n const isLoading = useSelector(\n table.store,\n () =>\n hasTableFeature(table, 'loadingFeature') && table.atoms.isLoading.get(),\n );\n\n /** Se a carga atual já passou do atraso. Volta a `false` no fim dela, para a próxima esperar. */\n const [isDelayElapsed, setIsDelayElapsed] = useState(false);\n\n useEffect(() => {\n if (!isLoading) {\n return;\n }\n\n const timeout = setTimeout(\n () => setIsDelayElapsed(true),\n LOADING_VISIBLE_DELAY,\n );\n\n return () => {\n clearTimeout(timeout);\n setIsDelayElapsed(false);\n };\n }, [isLoading]);\n\n /**\n * Derivado, e não guardado: desliga no mesmo render em que a carga termina, e o conteúdo novo\n * não espera o efeito.\n */\n return { isLoading, isLoadingVisible: isLoading && isDelayElapsed };\n};\n"],"mappings":";;;;;;;;AASA,MAAM,wBAAwB;;;;;;AAO9B,MAAa,uBAIX,UACG;;CAEH,MAAM,YAAY,YAChB,MAAM,aAEJ,gBAAgB,OAAO,gBAAgB,KAAK,MAAM,MAAM,UAAU,IAAI,CAC1E;;CAGA,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,KAAK;CAE1D,gBAAgB;EACd,IAAI,CAAC,WACH;EAGF,MAAM,UAAU,iBACR,kBAAkB,IAAI,GAC5B,qBACF;EAEA,aAAa;GACX,aAAa,OAAO;GACpB,kBAAkB,KAAK;EACzB;CACF,GAAG,CAAC,SAAS,CAAC;;;;;CAMd,OAAO;EAAE;EAAW,kBAAkB,aAAa;CAAe;AACpE"}
@@ -0,0 +1,45 @@
1
+ import { TableWith } from "../../../types/table-with.js";
2
+ import "../../../types/index.js";
3
+ import { RowData, TableFeatures } from "@tanstack/react-table";
4
+ import { IconButtonProps } from "@lucasbernardosn/react-ui/buttons/icon-button";
5
+ import { MergeOverride } from "@lucasbernardosn/utils";
6
+ //#region src/components/data-table/pagination/data-table-page-button.d.ts
7
+ /** Para onde o botão leva. */
8
+ export type DataTablePageButtonPage = 'first' | 'previous' | 'next' | 'last';
9
+ export type DataTablePageButtonProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<Omit<IconButtonProps, 'icon' | 'aria-label'>, {
10
+ /** A tabela. Exige `rowPaginationFeature`. */
11
+ table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;
12
+ /** Para onde o botão leva: a primeira página, a anterior, a próxima ou a última. */
13
+ page: DataTablePageButtonPage;
14
+ /**
15
+ * O ícone.
16
+ * @default um caret por página: duplo nas pontas, simples na anterior e na próxima
17
+ */
18
+ icon?: IconButtonProps['icon'];
19
+ /**
20
+ * O que o botão faz.
21
+ * @default 'Primeira página', 'Página anterior', 'Próxima página' ou 'Última página'
22
+ */
23
+ 'aria-label'?: string;
24
+ }>;
25
+ /**
26
+ * O botão que leva a outra página: a primeira, a anterior, a próxima ou a última. Fica
27
+ * desabilitado quando não há para onde ir. Sem o total de páginas (`pageCount: -1` na paginação
28
+ * pela API), a próxima continua habilitada, e a última, não.
29
+ *
30
+ * As props do `IconButton` passam adiante, como `variant` e `size`.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <DataTable.PageButton
35
+ * table={table}
36
+ * page="next"
37
+ * />
38
+ * ```
39
+ */
40
+ export declare const DataTablePageButton: {
41
+ <TFeatures extends TableFeatures, TData extends RowData>(props: DataTablePageButtonProps<TFeatures, TData>): import("react").JSX.Element;
42
+ displayName: string;
43
+ };
44
+ //#endregion
45
+ //# sourceMappingURL=data-table-page-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-button.d.ts","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-button.tsx"],"mappings":";;;;;;;YAgBY;YAEA,yBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,KAAK;;EAGH,OAAO,UAAU,WAAW;;EAE5B,MAAM;;;;;EAKN,OAAO;;;;;EAKP;;;;;;;;;;;;;;;;;qBAiCS;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,yBAAyB,WAAW,yBAAM,IAAA"}
@@ -0,0 +1,67 @@
1
+ import { CaretDoubleLeftIcon, CaretDoubleRightIcon, CaretLeftIcon, CaretRightIcon } from "@phosphor-icons/react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useSelector } from "@tanstack/react-store";
4
+ import { IconButton } from "@lucasbernardosn/react-ui/buttons/icon-button";
5
+ //#region src/components/data-table/pagination/data-table-page-button.tsx
6
+ const PAGE_LABELS = {
7
+ first: "Primeira página",
8
+ previous: "Página anterior",
9
+ next: "Próxima página",
10
+ last: "Última página"
11
+ };
12
+ const PAGE_ICONS = {
13
+ first: /* @__PURE__ */ jsx(CaretDoubleLeftIcon, {}),
14
+ previous: /* @__PURE__ */ jsx(CaretLeftIcon, {}),
15
+ next: /* @__PURE__ */ jsx(CaretRightIcon, {}),
16
+ last: /* @__PURE__ */ jsx(CaretDoubleRightIcon, {})
17
+ };
18
+ /**
19
+ * O botão que leva a outra página: a primeira, a anterior, a próxima ou a última. Fica
20
+ * desabilitado quando não há para onde ir. Sem o total de páginas (`pageCount: -1` na paginação
21
+ * pela API), a próxima continua habilitada, e a última, não.
22
+ *
23
+ * As props do `IconButton` passam adiante, como `variant` e `size`.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <DataTable.PageButton
28
+ * table={table}
29
+ * page="next"
30
+ * />
31
+ * ```
32
+ */
33
+ const DataTablePageButton = (props) => {
34
+ const { table, page, icon, onClick, ...rest } = props;
35
+ /**
36
+ * Re-renderiza quando o botão passa a ter ou deixa de ter para onde ir. O store, e não só o
37
+ * atom da paginação: o total de páginas também muda com as linhas.
38
+ */
39
+ const isDisabled = useSelector(table.store, () => {
40
+ if (page === "first" || page === "previous") return !table.getCanPreviousPage();
41
+ return page === "next" ? !table.getCanNextPage() : !table.getCanLastPage();
42
+ });
43
+ const goToPage = () => {
44
+ if (page === "first") table.firstPage();
45
+ else if (page === "previous") table.previousPage();
46
+ else if (page === "next") table.nextPage();
47
+ else table.lastPage();
48
+ };
49
+ return /* @__PURE__ */ jsx(IconButton, {
50
+ "data-component": "DataTable.PageButton",
51
+ "data-page": page,
52
+ "aria-label": PAGE_LABELS[page],
53
+ icon: icon ?? PAGE_ICONS[page],
54
+ variant: "outline",
55
+ disabled: isDisabled,
56
+ onClick: (event) => {
57
+ onClick?.(event);
58
+ if (!event.defaultPrevented) goToPage();
59
+ },
60
+ ...rest
61
+ });
62
+ };
63
+ DataTablePageButton.displayName = "DataTable.PageButton";
64
+ //#endregion
65
+ export { DataTablePageButton };
66
+
67
+ //# sourceMappingURL=data-table-page-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-button.js","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-button.tsx"],"sourcesContent":["import {\n IconButton,\n type IconButtonProps,\n} from '@lucasbernardosn/react-ui/buttons/icon-button';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport {\n CaretDoubleLeftIcon,\n CaretDoubleRightIcon,\n CaretLeftIcon,\n CaretRightIcon,\n} from '@phosphor-icons/react';\nimport { useSelector } from '@tanstack/react-store';\nimport type { RowData, TableFeatures } from '@tanstack/react-table';\nimport type { TableWith } from '../../../types';\n\n/** Para onde o botão leva. */\nexport type DataTablePageButtonPage = 'first' | 'previous' | 'next' | 'last';\n\nexport type DataTablePageButtonProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n Omit<IconButtonProps, 'icon' | 'aria-label'>,\n {\n /** A tabela. Exige `rowPaginationFeature`. */\n table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;\n /** Para onde o botão leva: a primeira página, a anterior, a próxima ou a última. */\n page: DataTablePageButtonPage;\n /**\n * O ícone.\n * @default um caret por página: duplo nas pontas, simples na anterior e na próxima\n */\n icon?: IconButtonProps['icon'];\n /**\n * O que o botão faz.\n * @default 'Primeira página', 'Página anterior', 'Próxima página' ou 'Última página'\n */\n 'aria-label'?: string;\n }\n>;\n\nconst PAGE_LABELS: Record<DataTablePageButtonPage, string> = {\n first: 'Primeira página',\n previous: 'Página anterior',\n next: 'Próxima página',\n last: 'Última página',\n};\n\nconst PAGE_ICONS: Record<DataTablePageButtonPage, IconButtonProps['icon']> = {\n first: <CaretDoubleLeftIcon />,\n previous: <CaretLeftIcon />,\n next: <CaretRightIcon />,\n last: <CaretDoubleRightIcon />,\n};\n\n/**\n * O botão que leva a outra página: a primeira, a anterior, a próxima ou a última. Fica\n * desabilitado quando não há para onde ir. Sem o total de páginas (`pageCount: -1` na paginação\n * pela API), a próxima continua habilitada, e a última, não.\n *\n * As props do `IconButton` passam adiante, como `variant` e `size`.\n *\n * @example\n * ```tsx\n * <DataTable.PageButton\n * table={table}\n * page=\"next\"\n * />\n * ```\n */\nexport const DataTablePageButton = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: DataTablePageButtonProps<TFeatures, TData>,\n) => {\n const { table, page, icon, onClick, ...rest } = props;\n\n /**\n * Re-renderiza quando o botão passa a ter ou deixa de ter para onde ir. O store, e não só o\n * atom da paginação: o total de páginas também muda com as linhas.\n */\n const isDisabled = useSelector(table.store, () => {\n if (page === 'first' || page === 'previous') {\n return !table.getCanPreviousPage();\n }\n\n return page === 'next' ? !table.getCanNextPage() : !table.getCanLastPage();\n });\n\n const goToPage = () => {\n if (page === 'first') {\n table.firstPage();\n } else if (page === 'previous') {\n table.previousPage();\n } else if (page === 'next') {\n table.nextPage();\n } else {\n table.lastPage();\n }\n };\n\n return (\n <IconButton\n data-component=\"DataTable.PageButton\"\n data-page={page}\n aria-label={PAGE_LABELS[page]}\n icon={icon ?? PAGE_ICONS[page]}\n variant=\"outline\"\n disabled={isDisabled}\n // O `onClick` do app roda antes, e um `preventDefault()` nele cancela a troca de página.\n onClick={(event) => {\n onClick?.(event);\n\n if (!event.defaultPrevented) {\n goToPage();\n }\n }}\n {...rest}\n />\n );\n};\n\nDataTablePageButton.displayName = 'DataTable.PageButton';\n"],"mappings":";;;;;AAyCA,MAAM,cAAuD;CAC3D,OAAO;CACP,UAAU;CACV,MAAM;CACN,MAAM;AACR;AAEA,MAAM,aAAuE;CAC3E,OAAO,oBAAC,qBAAD,CAAsB,CAAA;CAC7B,UAAU,oBAAC,eAAD,CAAgB,CAAA;CAC1B,MAAM,oBAAC,gBAAD,CAAiB,CAAA;CACvB,MAAM,oBAAC,sBAAD,CAAuB,CAAA;AAC/B;;;;;;;;;;;;;;;;AAiBA,MAAa,uBAIX,UACG;CACH,MAAM,EAAE,OAAO,MAAM,MAAM,SAAS,GAAG,SAAS;;;;;CAMhD,MAAM,aAAa,YAAY,MAAM,aAAa;EAChD,IAAI,SAAS,WAAW,SAAS,YAC/B,OAAO,CAAC,MAAM,mBAAmB;EAGnC,OAAO,SAAS,SAAS,CAAC,MAAM,eAAe,IAAI,CAAC,MAAM,eAAe;CAC3E,CAAC;CAED,MAAM,iBAAiB;EACrB,IAAI,SAAS,SACX,MAAM,UAAU;OACX,IAAI,SAAS,YAClB,MAAM,aAAa;OACd,IAAI,SAAS,QAClB,MAAM,SAAS;OAEf,MAAM,SAAS;CAEnB;CAEA,OACE,oBAAC,YAAD;EACE,kBAAe;EACf,aAAW;EACX,cAAY,YAAY;EACxB,MAAM,QAAQ,WAAW;EACzB,SAAQ;EACR,UAAU;EAEV,UAAU,UAAU;GAClB,UAAU,KAAK;GAEf,IAAI,CAAC,MAAM,kBACT,SAAS;EAEb;EACA,GAAI;CACL,CAAA;AAEL;AAEA,oBAAoB,cAAc"}
@@ -0,0 +1,47 @@
1
+ import { TableWith } from "../../../types/table-with.js";
2
+ import "../../../types/index.js";
3
+ import { RowData, TableFeatures } from "@tanstack/react-table";
4
+ import React from "react";
5
+ import { Select } from "@lucasbernardosn/react-ui/collections/select";
6
+ import { MergeOverride } from "@lucasbernardosn/utils";
7
+ //#region src/components/data-table/pagination/data-table-page-size-select.d.ts
8
+ export type DataTablePageSizeSelectProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<React.ComponentProps<'div'>, {
9
+ /** A tabela. Exige `rowPaginationFeature`. */
10
+ table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;
11
+ /**
12
+ * Os tamanhos oferecidos. O tamanho atual entra na lista mesmo fora dela.
13
+ * @default [10, 25, 50, 100]
14
+ */
15
+ options?: readonly number[];
16
+ /**
17
+ * O rótulo do select.
18
+ * @default 'Linhas por página'
19
+ */
20
+ label?: React.ReactNode;
21
+ /**
22
+ * O tamanho do select.
23
+ * @default 'sm'
24
+ */
25
+ size?: Select.RootProps<number>['size'];
26
+ }>;
27
+ /**
28
+ * O select de quantas linhas cada página mostra, com o rótulo ao lado. Trocar o tamanho chama o
29
+ * `table.setPageSize`, que mantém à vista a primeira linha da página atual.
30
+ *
31
+ * Renderiza o `Select` do `ui` por dentro; as props passam para o elemento em volta do rótulo e do
32
+ * trigger.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * <DataTable.PageSizeSelect
37
+ * table={table}
38
+ * options={[20, 50, 100]}
39
+ * />
40
+ * ```
41
+ */
42
+ export declare const DataTablePageSizeSelect: {
43
+ <TFeatures extends TableFeatures, TData extends RowData>(props: DataTablePageSizeSelectProps<TFeatures, TData>): React.JSX.Element;
44
+ displayName: string;
45
+ };
46
+ //#endregion
47
+ //# sourceMappingURL=data-table-page-size-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-size-select.d.ts","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-size-select.tsx"],"mappings":";;;;;;;YAQY,6BACV,kBAAkB,eAClB,cAAc,WACZ,cACF,MAAM;;EAGJ,OAAO,UAAU,WAAW;;;;;EAK5B;;;;;EAKA,QAAQ,MAAM;;;;;EAKd,OAAO,OAAO;;;;;;;;;;;;;;;;;qBAqBL;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,6BAA6B,WAAW,SAAM,MAAA,IAAA"}
@@ -0,0 +1,68 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useSelector } from "@tanstack/react-store";
3
+ import { mergeTwClassNames } from "@lucasbernardosn/react-ui/utils";
4
+ import { Select } from "@lucasbernardosn/react-ui/collections/select";
5
+ //#region src/components/data-table/pagination/data-table-page-size-select.tsx
6
+ const DEFAULT_PAGE_SIZE_OPTIONS = [
7
+ 10,
8
+ 25,
9
+ 50,
10
+ 100
11
+ ];
12
+ /**
13
+ * O select de quantas linhas cada página mostra, com o rótulo ao lado. Trocar o tamanho chama o
14
+ * `table.setPageSize`, que mantém à vista a primeira linha da página atual.
15
+ *
16
+ * Renderiza o `Select` do `ui` por dentro; as props passam para o elemento em volta do rótulo e do
17
+ * trigger.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <DataTable.PageSizeSelect
22
+ * table={table}
23
+ * options={[20, 50, 100]}
24
+ * />
25
+ * ```
26
+ */
27
+ const DataTablePageSizeSelect = (props) => {
28
+ const { table, options = DEFAULT_PAGE_SIZE_OPTIONS, label = "Linhas por página", size = "sm", className, ...rest } = props;
29
+ /** Re-renderiza quando o tamanho da página muda. */
30
+ const pageSize = useSelector(table.atoms.pagination, (pagination) => pagination.pageSize);
31
+ /** O tamanho atual entra na lista: sem ele, o trigger ficaria vazio. */
32
+ const items = (options.includes(pageSize) ? options : [...options, pageSize]).toSorted((a, b) => a - b).map((option) => ({
33
+ label: option.toLocaleString("pt-BR"),
34
+ value: option
35
+ }));
36
+ return /* @__PURE__ */ jsxs(Select.Root, {
37
+ size,
38
+ value: pageSize,
39
+ items,
40
+ onValueChange: (value) => {
41
+ if (value !== null) table.setPageSize(value);
42
+ },
43
+ children: [/* @__PURE__ */ jsxs("div", {
44
+ "data-component": "DataTable.PageSizeSelect",
45
+ className: mergeTwClassNames([
46
+ "flex",
47
+ "items-center",
48
+ "gap-2"
49
+ ], className),
50
+ ...rest,
51
+ children: [/* @__PURE__ */ jsx(Select.Label, {
52
+ className: "whitespace-nowrap font-normal text-gray-11",
53
+ children: label
54
+ }), /* @__PURE__ */ jsxs(Select.Trigger, { children: [/* @__PURE__ */ jsx(Select.Value, {}), /* @__PURE__ */ jsx(Select.Icon, {})] })]
55
+ }), /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, {
56
+ alignItemWithTrigger: false,
57
+ children: /* @__PURE__ */ jsx(Select.Popup, { children: /* @__PURE__ */ jsx(Select.List, { children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
58
+ value: item.value,
59
+ children: [/* @__PURE__ */ jsx(Select.ItemIndicator, {}), /* @__PURE__ */ jsx(Select.ItemText, { children: item.label })]
60
+ }, item.value)) }) })
61
+ }) })]
62
+ });
63
+ };
64
+ DataTablePageSizeSelect.displayName = "DataTable.PageSizeSelect";
65
+ //#endregion
66
+ export { DataTablePageSizeSelect };
67
+
68
+ //# sourceMappingURL=data-table-page-size-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-size-select.js","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-size-select.tsx"],"sourcesContent":["import { Select } from '@lucasbernardosn/react-ui/collections/select';\nimport { mergeTwClassNames } from '@lucasbernardosn/react-ui/utils';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { useSelector } from '@tanstack/react-store';\nimport type { RowData, TableFeatures } from '@tanstack/react-table';\nimport type React from 'react';\nimport type { TableWith } from '../../../types';\n\nexport type DataTablePageSizeSelectProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n React.ComponentProps<'div'>,\n {\n /** A tabela. Exige `rowPaginationFeature`. */\n table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;\n /**\n * Os tamanhos oferecidos. O tamanho atual entra na lista mesmo fora dela.\n * @default [10, 25, 50, 100]\n */\n options?: readonly number[];\n /**\n * O rótulo do select.\n * @default 'Linhas por página'\n */\n label?: React.ReactNode;\n /**\n * O tamanho do select.\n * @default 'sm'\n */\n size?: Select.RootProps<number>['size'];\n }\n>;\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\n/**\n * O select de quantas linhas cada página mostra, com o rótulo ao lado. Trocar o tamanho chama o\n * `table.setPageSize`, que mantém à vista a primeira linha da página atual.\n *\n * Renderiza o `Select` do `ui` por dentro; as props passam para o elemento em volta do rótulo e do\n * trigger.\n *\n * @example\n * ```tsx\n * <DataTable.PageSizeSelect\n * table={table}\n * options={[20, 50, 100]}\n * />\n * ```\n */\nexport const DataTablePageSizeSelect = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: DataTablePageSizeSelectProps<TFeatures, TData>,\n) => {\n const {\n table,\n options = DEFAULT_PAGE_SIZE_OPTIONS,\n label = 'Linhas por página',\n size = 'sm',\n className,\n ...rest\n } = props;\n\n /** Re-renderiza quando o tamanho da página muda. */\n const pageSize = useSelector(\n table.atoms.pagination,\n (pagination) => pagination.pageSize,\n );\n\n /** O tamanho atual entra na lista: sem ele, o trigger ficaria vazio. */\n const items = (options.includes(pageSize) ? options : [...options, pageSize])\n .toSorted((a, b) => a - b)\n .map((option) => ({\n label: option.toLocaleString('pt-BR'),\n value: option,\n }));\n\n return (\n <Select.Root<number>\n size={size}\n value={pageSize}\n items={items}\n onValueChange={(value) => {\n if (value !== null) {\n table.setPageSize(value);\n }\n }}\n >\n <div\n data-component=\"DataTable.PageSizeSelect\"\n className={mergeTwClassNames(\n ['flex', 'items-center', 'gap-2'],\n className,\n )}\n {...rest}\n >\n <Select.Label className=\"whitespace-nowrap font-normal text-gray-11\">\n {label}\n </Select.Label>\n\n <Select.Trigger>\n <Select.Value />\n <Select.Icon />\n </Select.Trigger>\n </div>\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\nDataTablePageSizeSelect.displayName = 'DataTable.PageSizeSelect';\n"],"mappings":";;;;;AAkCA,MAAM,4BAA4B;CAAC;CAAI;CAAI;CAAI;AAAG;;;;;;;;;;;;;;;;AAiBlD,MAAa,2BAIX,UACG;CACH,MAAM,EACJ,OACA,UAAU,2BACV,QAAQ,qBACR,OAAO,MACP,WACA,GAAG,SACD;;CAGJ,MAAM,WAAW,YACf,MAAM,MAAM,aACX,eAAe,WAAW,QAC7B;;CAGA,MAAM,SAAS,QAAQ,SAAS,QAAQ,IAAI,UAAU,CAAC,GAAG,SAAS,QAAQ,EAAA,CACxE,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CACzB,KAAK,YAAY;EAChB,OAAO,OAAO,eAAe,OAAO;EACpC,OAAO;CACT,EAAE;CAEJ,OACE,qBAAC,OAAO,MAAR;EACQ;EACN,OAAO;EACA;EACP,gBAAgB,UAAU;GACxB,IAAI,UAAU,MACZ,MAAM,YAAY,KAAK;EAE3B;EARF,UAAA,CAUE,qBAAC,OAAD;GACE,kBAAe;GACf,WAAW,kBACT;IAAC;IAAQ;IAAgB;GAAO,GAChC,SACF;GACA,GAAI;GANN,UAAA,CAQE,oBAAC,OAAO,OAAR;IAAc,WAAU;IACrB,UAAA;GACW,CAAA,GAEd,qBAAC,OAAO,SAAR,EAAA,UAAA,CACE,oBAAC,OAAO,OAAR,CAAe,CAAA,GACf,oBAAC,OAAO,MAAR,CAAc,CAAA,CACA,EAAA,CAAA,CACb;EAEL,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,wBAAwB,cAAc"}
@@ -0,0 +1,43 @@
1
+ import { TableWith } 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 React from "react";
6
+ import { MergeOverride } from "@lucasbernardosn/utils";
7
+ //#region src/components/data-table/pagination/data-table-page-status.d.ts
8
+ /** A página atual e o total, para o texto do `DataTable.PageStatus`. */
9
+ export type DataTablePageStatusValues = {
10
+ /** O índice da página atual, a partir de 0. */
11
+ pageIndex: number;
12
+ /**
13
+ * O total de páginas, ou `-1` sem ele: quando a API não informa (`pageCount: -1`) e, com
14
+ * `loadingFeature`, na carga sem linhas, antes de o total chegar.
15
+ */
16
+ pageCount: number;
17
+ };
18
+ export type DataTablePageStatusProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<useRender.ComponentProps<'span'>, {
19
+ /** A tabela. Exige `rowPaginationFeature`. */
20
+ table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;
21
+ /**
22
+ * Uma função que recebe a página e o total e devolve o texto.
23
+ * @default ({ pageIndex, pageCount }) => 'Página 2 de 10', ou 'Página 2' sem o total
24
+ */
25
+ children?: (values: DataTablePageStatusValues) => React.ReactNode;
26
+ }>;
27
+ /**
28
+ * Qual a página atual, e de quantas: "Página 2 de 10". Sem o total de páginas, só "Página 2",
29
+ * também na primeira carga, quando o total ainda não chegou.
30
+ *
31
+ * @example
32
+ * ```tsx
33
+ * <DataTable.PageStatus table={table}>
34
+ * {({ pageIndex, pageCount }) => `${pageIndex + 1}/${pageCount}`}
35
+ * </DataTable.PageStatus>
36
+ * ```
37
+ */
38
+ export declare const DataTablePageStatus: {
39
+ <TFeatures extends TableFeatures, TData extends RowData>(props: DataTablePageStatusProps<TFeatures, TData>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
40
+ displayName: string;
41
+ };
42
+ //#endregion
43
+ //# sourceMappingURL=data-table-page-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-status.d.ts","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-status.tsx"],"mappings":";;;;;;;;YAUY;;EAEV;;;;;EAKA;;YAGU,yBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,UAAU;;EAGR,OAAO,UAAU,WAAW;;;;;EAK5B,YAAY,QAAQ,8BAA8B,MAAM;;;;;;;;;;;;;qBAe/C;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,yBAAyB,WAAW,SAAM,MAAA,+BAAA,MAAA"}
@@ -0,0 +1,48 @@
1
+ import { getDataTableLoadingWithoutRows } from "../loading/get-data-table-loading-without-rows.js";
2
+ import { mergeProps, useRender } from "@base-ui/react";
3
+ import { shallow, useSelector } from "@tanstack/react-store";
4
+ import { mergeTwClassNames } from "@lucasbernardosn/react-ui/utils";
5
+ //#region src/components/data-table/pagination/data-table-page-status.tsx
6
+ /**
7
+ * Qual a página atual, e de quantas: "Página 2 de 10". Sem o total de páginas, só "Página 2",
8
+ * também na primeira carga, quando o total ainda não chegou.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <DataTable.PageStatus table={table}>
13
+ * {({ pageIndex, pageCount }) => `${pageIndex + 1}/${pageCount}`}
14
+ * </DataTable.PageStatus>
15
+ * ```
16
+ */
17
+ const DataTablePageStatus = (props) => {
18
+ const { table, render, className, children, ...rest } = props;
19
+ /**
20
+ * Re-renderiza quando a página ou o total mudam. O store, e não só o atom da paginação: o total
21
+ * também muda com as linhas.
22
+ */
23
+ const values = useSelector(table.store, () => ({
24
+ pageIndex: table.atoms.pagination.get().pageIndex,
25
+ pageCount: getDataTableLoadingWithoutRows(table) ? -1 : table.getPageCount()
26
+ }), { compare: shallow });
27
+ const page = (values.pageIndex + 1).toLocaleString("pt-BR");
28
+ const baseProps = {
29
+ "data-component": "DataTable.PageStatus",
30
+ className: mergeTwClassNames([
31
+ "text-gray-11",
32
+ "text-sm",
33
+ "tabular-nums",
34
+ "whitespace-nowrap"
35
+ ], className),
36
+ children: children === void 0 ? values.pageCount === -1 ? `Página ${page}` : `Página ${page} de ${Math.max(values.pageCount, 1).toLocaleString("pt-BR")}` : children(values)
37
+ };
38
+ return useRender({
39
+ render,
40
+ defaultTagName: "span",
41
+ props: mergeProps(baseProps, rest)
42
+ });
43
+ };
44
+ DataTablePageStatus.displayName = "DataTable.PageStatus";
45
+ //#endregion
46
+ export { DataTablePageStatus };
47
+
48
+ //# sourceMappingURL=data-table-page-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-page-status.js","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-page-status.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '@lucasbernardosn/react-ui/utils';\nimport type { MergeOverride } from '@lucasbernardosn/utils';\nimport { shallow, useSelector } from '@tanstack/react-store';\nimport type { RowData, TableFeatures } from '@tanstack/react-table';\nimport type React from 'react';\nimport type { TableWith } from '../../../types';\nimport { getDataTableLoadingWithoutRows } from '../loading/get-data-table-loading-without-rows';\n\n/** A página atual e o total, para o texto do `DataTable.PageStatus`. */\nexport type DataTablePageStatusValues = {\n /** O índice da página atual, a partir de 0. */\n pageIndex: number;\n /**\n * O total de páginas, ou `-1` sem ele: quando a API não informa (`pageCount: -1`) e, com\n * `loadingFeature`, na carga sem linhas, antes de o total chegar.\n */\n pageCount: number;\n};\n\nexport type DataTablePageStatusProps<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = MergeOverride<\n useRender.ComponentProps<'span'>,\n {\n /** A tabela. Exige `rowPaginationFeature`. */\n table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;\n /**\n * Uma função que recebe a página e o total e devolve o texto.\n * @default ({ pageIndex, pageCount }) => 'Página 2 de 10', ou 'Página 2' sem o total\n */\n children?: (values: DataTablePageStatusValues) => React.ReactNode;\n }\n>;\n\n/**\n * Qual a página atual, e de quantas: \"Página 2 de 10\". Sem o total de páginas, só \"Página 2\",\n * também na primeira carga, quando o total ainda não chegou.\n *\n * @example\n * ```tsx\n * <DataTable.PageStatus table={table}>\n * {({ pageIndex, pageCount }) => `${pageIndex + 1}/${pageCount}`}\n * </DataTable.PageStatus>\n * ```\n */\nexport const DataTablePageStatus = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n props: DataTablePageStatusProps<TFeatures, TData>,\n) => {\n const { table, render, className, children, ...rest } = props;\n\n /**\n * Re-renderiza quando a página ou o total mudam. O store, e não só o atom da paginação: o total\n * também muda com as linhas.\n */\n const values = useSelector(\n table.store,\n (): DataTablePageStatusValues => ({\n pageIndex: table.atoms.pagination.get().pageIndex,\n pageCount: getDataTableLoadingWithoutRows(table)\n ? -1\n : table.getPageCount(),\n }),\n { compare: shallow },\n );\n\n const page = (values.pageIndex + 1).toLocaleString('pt-BR');\n\n const baseProps = {\n 'data-component': 'DataTable.PageStatus',\n className: mergeTwClassNames(\n ['text-gray-11', 'text-sm', 'tabular-nums', 'whitespace-nowrap'],\n className,\n ),\n children:\n children === undefined\n ? values.pageCount === -1\n ? `Página ${page}`\n : // Sem linhas, o total é 0, e a página 1 continua sendo a atual.\n `Página ${page} de ${Math.max(values.pageCount, 1).toLocaleString('pt-BR')}`\n : children(values),\n };\n\n return useRender({\n render,\n defaultTagName: 'span',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataTablePageStatus.displayName = 'DataTable.PageStatus';\n"],"mappings":";;;;;;;;;;;;;;;;AA+CA,MAAa,uBAIX,UACG;CACH,MAAM,EAAE,OAAO,QAAQ,WAAW,UAAU,GAAG,SAAS;;;;;CAMxD,MAAM,SAAS,YACb,MAAM,cAC4B;EAChC,WAAW,MAAM,MAAM,WAAW,IAAI,CAAC,CAAC;EACxC,WAAW,+BAA+B,KAAK,IAC3C,KACA,MAAM,aAAa;CACzB,IACA,EAAE,SAAS,QAAQ,CACrB;CAEA,MAAM,QAAQ,OAAO,YAAY,EAAA,CAAG,eAAe,OAAO;CAE1D,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT;GAAC;GAAgB;GAAW;GAAgB;EAAmB,GAC/D,SACF;EACA,UACE,aAAa,KAAA,IACT,OAAO,cAAc,KACnB,UAAU,SAEV,UAAU,KAAK,MAAM,KAAK,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,eAAe,OAAO,MAC3E,SAAS,MAAM;CACvB;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,oBAAoB,cAAc"}
@@ -0,0 +1,38 @@
1
+ import { TableWith } 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/data-table/pagination/data-table-pagination.d.ts
7
+ export type DataTablePaginationProps<TFeatures extends TableFeatures, TData extends RowData> = MergeOverride<useRender.ComponentProps<'nav'>, {
8
+ /** A tabela. Exige `rowPaginationFeature`. */
9
+ table: TableWith<TFeatures, TData, 'rowPaginationFeature'>;
10
+ }>;
11
+ /**
12
+ * A barra da paginação, para baixo da tabela. Sem `children`, monta o padrão: à esquerda, a
13
+ * contagem de selecionadas (com `rowSelectionFeature`); à direita, o `DataTable.PageSizeSelect`,
14
+ * o `DataTable.RowRange`, o `DataTable.PageStatus` e os quatro `DataTable.PageButton`. Com
15
+ * `children`, o app compõe as partes, cada uma com a `table`. Em tela estreita, os grupos quebram
16
+ * linha.
17
+ *
18
+ * Funciona com a paginação local (`createPaginatedRowModel`) e com a da API
19
+ * (`manualPagination`, com o `rowCount` ou o `pageCount`).
20
+ *
21
+ * É um `nav` com o nome "Paginação", trocável pelo `aria-label`: um marco, que o leitor de tela
22
+ * lista e para onde salta.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <DataTable.Pagination table={table}>
27
+ * <DataTable.PageStatus table={table} />
28
+ * <DataTable.PageButton table={table} page="previous" />
29
+ * <DataTable.PageButton table={table} page="next" />
30
+ * </DataTable.Pagination>
31
+ * ```
32
+ */
33
+ export declare const DataTablePagination: {
34
+ <TFeatures extends TableFeatures, TData extends RowData>(props: DataTablePaginationProps<TFeatures, TData>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
35
+ displayName: string;
36
+ };
37
+ //#endregion
38
+ //# sourceMappingURL=data-table-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.d.ts","names":[],"sources":["../../../../src/components/data-table/pagination/data-table-pagination.tsx"],"mappings":";;;;;;YAYY,yBACV,kBAAkB,eAClB,cAAc,WACZ,cACF,UAAU;;EAGR,OAAO,UAAU,WAAW;;;;;;;;;;;;;;;;;;;;;;;;qBA0BnB;GACX,kBAAkB,eAClB,cAAc,SAAO,OAEd,yBAAyB,WAAW,yBAAM,+CAAA"}