@salt-ds/data-grid 1.0.4-alpha.0 → 1.0.4-alpha.2

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 (365) hide show
  1. package/dist-cjs/packages/data-grid/src/BaseCell.css.js +9 -0
  2. package/dist-cjs/packages/{grid → data-grid}/src/BaseCell.js +35 -3
  3. package/dist-cjs/packages/data-grid/src/BaseCell.js.map +1 -0
  4. package/dist-cjs/packages/data-grid/src/ColumnSortContext.js +20 -0
  5. package/dist-cjs/packages/data-grid/src/ColumnSortContext.js.map +1 -0
  6. package/dist-cjs/packages/{grid → data-grid}/src/Grid.js +208 -126
  7. package/dist-cjs/packages/data-grid/src/Grid.js.map +1 -0
  8. package/dist-cjs/packages/data-grid/src/GridColumn.js.map +1 -0
  9. package/dist-cjs/packages/data-grid/src/HeaderCell.css.js +9 -0
  10. package/dist-cjs/packages/{grid → data-grid}/src/HeaderCell.js +66 -2
  11. package/dist-cjs/packages/data-grid/src/HeaderCell.js.map +1 -0
  12. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionCheckboxColumn.js +14 -7
  13. package/dist-cjs/packages/data-grid/src/RowSelectionCheckboxColumn.js.map +1 -0
  14. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionRadioColumn.js +11 -7
  15. package/dist-cjs/packages/data-grid/src/RowSelectionRadioColumn.js.map +1 -0
  16. package/dist-cjs/packages/data-grid/src/RowValidationStatus.js +13 -0
  17. package/dist-cjs/packages/data-grid/src/RowValidationStatus.js.map +1 -0
  18. package/dist-cjs/packages/{grid → data-grid}/src/index.js +1 -0
  19. package/dist-cjs/packages/{grid → data-grid}/src/index.js.map +1 -1
  20. package/dist-cjs/packages/data-grid/src/internal/Cell.css.js +9 -0
  21. package/dist-cjs/packages/data-grid/src/internal/CellStatusIcons.js +46 -0
  22. package/dist-cjs/packages/data-grid/src/internal/CellStatusIcons.js.map +1 -0
  23. package/dist-cjs/packages/{grid → data-grid}/src/internal/LeftPart.js +4 -2
  24. package/dist-cjs/packages/data-grid/src/internal/LeftPart.js.map +1 -0
  25. package/dist-cjs/packages/{grid → data-grid}/src/internal/MiddlePart.js +4 -2
  26. package/dist-cjs/packages/data-grid/src/internal/MiddlePart.js.map +1 -0
  27. package/dist-cjs/packages/{grid → data-grid}/src/internal/RightPart.js +4 -2
  28. package/dist-cjs/packages/data-grid/src/internal/RightPart.js.map +1 -0
  29. package/dist-cjs/packages/{grid → data-grid}/src/internal/TableBody.js +11 -4
  30. package/dist-cjs/packages/data-grid/src/internal/TableBody.js.map +1 -0
  31. package/dist-cjs/packages/data-grid/src/internal/TableRow.css.js +9 -0
  32. package/dist-cjs/packages/{grid → data-grid}/src/internal/TableRow.js +33 -12
  33. package/dist-cjs/packages/data-grid/src/internal/TableRow.js.map +1 -0
  34. package/dist-es/packages/data-grid/src/BaseCell.css.js +7 -0
  35. package/dist-es/packages/{grid → data-grid}/src/BaseCell.js +35 -3
  36. package/dist-es/packages/data-grid/src/BaseCell.js.map +1 -0
  37. package/dist-es/packages/data-grid/src/ColumnSortContext.js +15 -0
  38. package/dist-es/packages/data-grid/src/ColumnSortContext.js.map +1 -0
  39. package/dist-es/packages/{grid → data-grid}/src/Grid.js +208 -127
  40. package/dist-es/packages/data-grid/src/Grid.js.map +1 -0
  41. package/dist-es/packages/data-grid/src/GridColumn.js.map +1 -0
  42. package/dist-es/packages/data-grid/src/HeaderCell.css.js +7 -0
  43. package/dist-es/packages/{grid → data-grid}/src/HeaderCell.js +66 -2
  44. package/dist-es/packages/data-grid/src/HeaderCell.js.map +1 -0
  45. package/dist-es/packages/{grid → data-grid}/src/RowSelectionCheckboxColumn.js +14 -7
  46. package/dist-es/packages/data-grid/src/RowSelectionCheckboxColumn.js.map +1 -0
  47. package/dist-es/packages/{grid → data-grid}/src/RowSelectionRadioColumn.js +11 -7
  48. package/dist-es/packages/data-grid/src/RowSelectionRadioColumn.js.map +1 -0
  49. package/dist-es/packages/data-grid/src/RowValidationStatus.js +9 -0
  50. package/dist-es/packages/data-grid/src/RowValidationStatus.js.map +1 -0
  51. package/dist-es/packages/{grid → data-grid}/src/index.js +1 -1
  52. package/dist-es/packages/data-grid/src/internal/Cell.css.js +7 -0
  53. package/dist-es/packages/data-grid/src/internal/CellStatusIcons.js +40 -0
  54. package/dist-es/packages/data-grid/src/internal/CellStatusIcons.js.map +1 -0
  55. package/dist-es/packages/{grid → data-grid}/src/internal/LeftPart.js +4 -2
  56. package/dist-es/packages/data-grid/src/internal/LeftPart.js.map +1 -0
  57. package/dist-es/packages/{grid → data-grid}/src/internal/MiddlePart.js +4 -2
  58. package/dist-es/packages/data-grid/src/internal/MiddlePart.js.map +1 -0
  59. package/dist-es/packages/{grid → data-grid}/src/internal/RightPart.js +4 -2
  60. package/dist-es/packages/data-grid/src/internal/RightPart.js.map +1 -0
  61. package/dist-es/packages/{grid → data-grid}/src/internal/TableBody.js +11 -4
  62. package/dist-es/packages/data-grid/src/internal/TableBody.js.map +1 -0
  63. package/dist-es/packages/data-grid/src/internal/TableRow.css.js +7 -0
  64. package/dist-es/packages/{grid → data-grid}/src/internal/TableRow.js +33 -12
  65. package/dist-es/packages/data-grid/src/internal/TableRow.js.map +1 -0
  66. package/dist-es/packages/{grid → data-grid}/src/internal/gridHooks.js +1 -1
  67. package/dist-types/ColumnSortContext.d.ts +12 -0
  68. package/dist-types/Grid.d.ts +7 -1
  69. package/dist-types/GridColumn.d.ts +54 -2
  70. package/dist-types/RowValidationStatus.d.ts +7 -0
  71. package/dist-types/internal/CellStatusIcons.d.ts +4 -0
  72. package/dist-types/internal/LeftPart.d.ts +2 -0
  73. package/dist-types/internal/MiddlePart.d.ts +2 -0
  74. package/dist-types/internal/RightPart.d.ts +2 -0
  75. package/dist-types/internal/TableBody.d.ts +2 -0
  76. package/dist-types/internal/TableRow.d.ts +2 -1
  77. package/package.json +7 -6
  78. package/dist-cjs/packages/grid/src/BaseCell.css.js +0 -9
  79. package/dist-cjs/packages/grid/src/BaseCell.js.map +0 -1
  80. package/dist-cjs/packages/grid/src/Grid.js.map +0 -1
  81. package/dist-cjs/packages/grid/src/GridColumn.js.map +0 -1
  82. package/dist-cjs/packages/grid/src/HeaderCell.css.js +0 -9
  83. package/dist-cjs/packages/grid/src/HeaderCell.js.map +0 -1
  84. package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js.map +0 -1
  85. package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js.map +0 -1
  86. package/dist-cjs/packages/grid/src/internal/Cell.css.js +0 -9
  87. package/dist-cjs/packages/grid/src/internal/LeftPart.js.map +0 -1
  88. package/dist-cjs/packages/grid/src/internal/MiddlePart.js.map +0 -1
  89. package/dist-cjs/packages/grid/src/internal/RightPart.js.map +0 -1
  90. package/dist-cjs/packages/grid/src/internal/TableBody.js.map +0 -1
  91. package/dist-cjs/packages/grid/src/internal/TableRow.css.js +0 -9
  92. package/dist-cjs/packages/grid/src/internal/TableRow.js.map +0 -1
  93. package/dist-es/packages/grid/src/BaseCell.css.js +0 -7
  94. package/dist-es/packages/grid/src/BaseCell.js.map +0 -1
  95. package/dist-es/packages/grid/src/Grid.js.map +0 -1
  96. package/dist-es/packages/grid/src/GridColumn.js.map +0 -1
  97. package/dist-es/packages/grid/src/HeaderCell.css.js +0 -7
  98. package/dist-es/packages/grid/src/HeaderCell.js.map +0 -1
  99. package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js.map +0 -1
  100. package/dist-es/packages/grid/src/RowSelectionRadioColumn.js.map +0 -1
  101. package/dist-es/packages/grid/src/internal/Cell.css.js +0 -7
  102. package/dist-es/packages/grid/src/internal/LeftPart.js.map +0 -1
  103. package/dist-es/packages/grid/src/internal/MiddlePart.js.map +0 -1
  104. package/dist-es/packages/grid/src/internal/RightPart.js.map +0 -1
  105. package/dist-es/packages/grid/src/internal/TableBody.js.map +0 -1
  106. package/dist-es/packages/grid/src/internal/TableRow.css.js +0 -7
  107. package/dist-es/packages/grid/src/internal/TableRow.js.map +0 -1
  108. package/dist-cjs/packages/{grid → data-grid}/src/BaseCell.css.js.map +0 -0
  109. package/dist-cjs/packages/{grid → data-grid}/src/CellEditor.js +0 -0
  110. package/dist-cjs/packages/{grid → data-grid}/src/CellEditor.js.map +0 -0
  111. package/dist-cjs/packages/{grid → data-grid}/src/CheckboxCell.css.js +0 -0
  112. package/dist-cjs/packages/{grid → data-grid}/src/CheckboxCell.css.js.map +0 -0
  113. package/dist-cjs/packages/{grid → data-grid}/src/ColumnDataContext.js +0 -0
  114. package/dist-cjs/packages/{grid → data-grid}/src/ColumnDataContext.js.map +0 -0
  115. package/dist-cjs/packages/{grid → data-grid}/src/ColumnDragContext.js +0 -0
  116. package/dist-cjs/packages/{grid → data-grid}/src/ColumnDragContext.js.map +0 -0
  117. package/dist-cjs/packages/{grid → data-grid}/src/ColumnGroup.js +0 -0
  118. package/dist-cjs/packages/{grid → data-grid}/src/ColumnGroup.js.map +0 -0
  119. package/dist-cjs/packages/{grid → data-grid}/src/CornerTag.css.js +0 -0
  120. package/dist-cjs/packages/{grid → data-grid}/src/CornerTag.css.js.map +0 -0
  121. package/dist-cjs/packages/{grid → data-grid}/src/CornerTag.js +0 -0
  122. package/dist-cjs/packages/{grid → data-grid}/src/CornerTag.js.map +0 -0
  123. package/dist-cjs/packages/{grid → data-grid}/src/CursorContext.js +0 -0
  124. package/dist-cjs/packages/{grid → data-grid}/src/CursorContext.js.map +0 -0
  125. package/dist-cjs/packages/{grid → data-grid}/src/DropdownCellEditor.css.js +0 -0
  126. package/dist-cjs/packages/{grid → data-grid}/src/DropdownCellEditor.css.js.map +0 -0
  127. package/dist-cjs/packages/{grid → data-grid}/src/DropdownCellEditor.js +0 -0
  128. package/dist-cjs/packages/{grid → data-grid}/src/DropdownCellEditor.js.map +0 -0
  129. package/dist-cjs/packages/{grid → data-grid}/src/EditorContext.js +0 -0
  130. package/dist-cjs/packages/{grid → data-grid}/src/EditorContext.js.map +0 -0
  131. package/dist-cjs/packages/{grid → data-grid}/src/Grid.css.js +0 -0
  132. package/dist-cjs/packages/{grid → data-grid}/src/Grid.css.js.map +0 -0
  133. package/dist-cjs/packages/{grid → data-grid}/src/GridColumn.js +1 -1
  134. package/dist-cjs/packages/{grid → data-grid}/src/GridContext.js +0 -0
  135. package/dist-cjs/packages/{grid → data-grid}/src/GridContext.js.map +0 -0
  136. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCell.css.js +0 -0
  137. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCell.css.js.map +0 -0
  138. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCell.js +0 -0
  139. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCell.js.map +0 -0
  140. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCellValue.js +0 -0
  141. package/dist-cjs/packages/{grid → data-grid}/src/GroupHeaderCellValue.js.map +0 -0
  142. package/dist-cjs/packages/{grid → data-grid}/src/HeaderCell.css.js.map +0 -0
  143. package/dist-cjs/packages/{grid → data-grid}/src/HeaderCellValue.js +0 -0
  144. package/dist-cjs/packages/{grid → data-grid}/src/HeaderCellValue.js.map +0 -0
  145. package/dist-cjs/packages/{grid → data-grid}/src/LayoutContext.js +0 -0
  146. package/dist-cjs/packages/{grid → data-grid}/src/LayoutContext.js.map +0 -0
  147. package/dist-cjs/packages/{grid → data-grid}/src/NumberRange.js +0 -0
  148. package/dist-cjs/packages/{grid → data-grid}/src/NumberRange.js.map +0 -0
  149. package/dist-cjs/packages/{grid → data-grid}/src/NumericColumn.css.js +0 -0
  150. package/dist-cjs/packages/{grid → data-grid}/src/NumericColumn.css.js.map +0 -0
  151. package/dist-cjs/packages/{grid → data-grid}/src/NumericColumn.js +0 -0
  152. package/dist-cjs/packages/{grid → data-grid}/src/NumericColumn.js.map +0 -0
  153. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionCheckboxCellValue.js +0 -0
  154. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionCheckboxCellValue.js.map +0 -0
  155. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionCheckboxHeaderCellValue.js +0 -0
  156. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -0
  157. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionRadioCellValue.js +0 -0
  158. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionRadioCellValue.js.map +0 -0
  159. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionRadioHeaderCell.js +0 -0
  160. package/dist-cjs/packages/{grid → data-grid}/src/RowSelectionRadioHeaderCell.js.map +0 -0
  161. package/dist-cjs/packages/{grid → data-grid}/src/SelectionContext.js +0 -0
  162. package/dist-cjs/packages/{grid → data-grid}/src/SelectionContext.js.map +0 -0
  163. package/dist-cjs/packages/{grid → data-grid}/src/SizingContext.js +0 -0
  164. package/dist-cjs/packages/{grid → data-grid}/src/SizingContext.js.map +0 -0
  165. package/dist-cjs/packages/{grid → data-grid}/src/TextCellEditor.css.js +0 -0
  166. package/dist-cjs/packages/{grid → data-grid}/src/TextCellEditor.css.js.map +0 -0
  167. package/dist-cjs/packages/{grid → data-grid}/src/TextCellEditor.js +0 -0
  168. package/dist-cjs/packages/{grid → data-grid}/src/TextCellEditor.js.map +0 -0
  169. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cell.css.js.map +0 -0
  170. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cell.js +0 -0
  171. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cell.js.map +0 -0
  172. package/dist-cjs/packages/{grid → data-grid}/src/internal/CellMeasure.css.js +0 -0
  173. package/dist-cjs/packages/{grid → data-grid}/src/internal/CellMeasure.css.js.map +0 -0
  174. package/dist-cjs/packages/{grid → data-grid}/src/internal/CellMeasure.js +0 -0
  175. package/dist-cjs/packages/{grid → data-grid}/src/internal/CellMeasure.js.map +0 -0
  176. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnDropTarget.css.js +0 -0
  177. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnDropTarget.css.js.map +0 -0
  178. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnDropTarget.js +0 -0
  179. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnDropTarget.js.map +0 -0
  180. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnGhost.css.js +0 -0
  181. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnGhost.css.js.map +0 -0
  182. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnGhost.js +0 -0
  183. package/dist-cjs/packages/{grid → data-grid}/src/internal/ColumnGhost.js.map +0 -0
  184. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cursor.css.js +0 -0
  185. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cursor.css.js.map +0 -0
  186. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cursor.js +0 -0
  187. package/dist-cjs/packages/{grid → data-grid}/src/internal/Cursor.js.map +0 -0
  188. package/dist-cjs/packages/{grid → data-grid}/src/internal/DefaultCellValue.css.js +0 -0
  189. package/dist-cjs/packages/{grid → data-grid}/src/internal/DefaultCellValue.css.js.map +0 -0
  190. package/dist-cjs/packages/{grid → data-grid}/src/internal/DefaultCellValue.js +0 -0
  191. package/dist-cjs/packages/{grid → data-grid}/src/internal/DefaultCellValue.js.map +0 -0
  192. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeCell.css.js +0 -0
  193. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeCell.css.js.map +0 -0
  194. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeCell.js +0 -0
  195. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeCell.js.map +0 -0
  196. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeGroupCell.js +0 -0
  197. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeGroupCell.js.map +0 -0
  198. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeHeaderCell.js +0 -0
  199. package/dist-cjs/packages/{grid → data-grid}/src/internal/FakeHeaderCell.js.map +0 -0
  200. package/dist-cjs/packages/{grid → data-grid}/src/internal/GroupHeaderRow.css.js +0 -0
  201. package/dist-cjs/packages/{grid → data-grid}/src/internal/GroupHeaderRow.css.js.map +0 -0
  202. package/dist-cjs/packages/{grid → data-grid}/src/internal/GroupHeaderRow.js +0 -0
  203. package/dist-cjs/packages/{grid → data-grid}/src/internal/GroupHeaderRow.js.map +0 -0
  204. package/dist-cjs/packages/{grid → data-grid}/src/internal/HeaderRow.css.js +0 -0
  205. package/dist-cjs/packages/{grid → data-grid}/src/internal/HeaderRow.css.js.map +0 -0
  206. package/dist-cjs/packages/{grid → data-grid}/src/internal/HeaderRow.js +0 -0
  207. package/dist-cjs/packages/{grid → data-grid}/src/internal/HeaderRow.js.map +0 -0
  208. package/dist-cjs/packages/{grid → data-grid}/src/internal/LeftPart.css.js +0 -0
  209. package/dist-cjs/packages/{grid → data-grid}/src/internal/LeftPart.css.js.map +0 -0
  210. package/dist-cjs/packages/{grid → data-grid}/src/internal/MiddlePart.css.js +0 -0
  211. package/dist-cjs/packages/{grid → data-grid}/src/internal/MiddlePart.css.js.map +0 -0
  212. package/dist-cjs/packages/{grid → data-grid}/src/internal/RightPart.css.js +0 -0
  213. package/dist-cjs/packages/{grid → data-grid}/src/internal/RightPart.css.js.map +0 -0
  214. package/dist-cjs/packages/{grid → data-grid}/src/internal/Scrollable.css.js +0 -0
  215. package/dist-cjs/packages/{grid → data-grid}/src/internal/Scrollable.css.js.map +0 -0
  216. package/dist-cjs/packages/{grid → data-grid}/src/internal/Scrollable.js +0 -0
  217. package/dist-cjs/packages/{grid → data-grid}/src/internal/Scrollable.js.map +0 -0
  218. package/dist-cjs/packages/{grid → data-grid}/src/internal/TableColGroup.js +0 -0
  219. package/dist-cjs/packages/{grid → data-grid}/src/internal/TableColGroup.js.map +0 -0
  220. package/dist-cjs/packages/{grid → data-grid}/src/internal/TableRow.css.js.map +0 -0
  221. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopLeftPart.css.js +0 -0
  222. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopLeftPart.css.js.map +0 -0
  223. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopLeftPart.js +0 -0
  224. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopLeftPart.js.map +0 -0
  225. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopPart.css.js +0 -0
  226. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopPart.css.js.map +0 -0
  227. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopPart.js +0 -0
  228. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopPart.js.map +0 -0
  229. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopRightPart.css.js +0 -0
  230. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopRightPart.css.js.map +0 -0
  231. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopRightPart.js +0 -0
  232. package/dist-cjs/packages/{grid → data-grid}/src/internal/TopRightPart.js.map +0 -0
  233. package/dist-cjs/packages/{grid → data-grid}/src/internal/gridHooks.js +0 -0
  234. package/dist-cjs/packages/{grid → data-grid}/src/internal/gridHooks.js.map +0 -0
  235. package/dist-cjs/packages/{grid → data-grid}/src/internal/utils.js +0 -0
  236. package/dist-cjs/packages/{grid → data-grid}/src/internal/utils.js.map +0 -0
  237. package/dist-es/packages/{grid → data-grid}/src/BaseCell.css.js.map +0 -0
  238. package/dist-es/packages/{grid → data-grid}/src/CellEditor.js +0 -0
  239. package/dist-es/packages/{grid → data-grid}/src/CellEditor.js.map +0 -0
  240. package/dist-es/packages/{grid → data-grid}/src/CheckboxCell.css.js +0 -0
  241. package/dist-es/packages/{grid → data-grid}/src/CheckboxCell.css.js.map +0 -0
  242. package/dist-es/packages/{grid → data-grid}/src/ColumnDataContext.js +0 -0
  243. package/dist-es/packages/{grid → data-grid}/src/ColumnDataContext.js.map +0 -0
  244. package/dist-es/packages/{grid → data-grid}/src/ColumnDragContext.js +0 -0
  245. package/dist-es/packages/{grid → data-grid}/src/ColumnDragContext.js.map +0 -0
  246. package/dist-es/packages/{grid → data-grid}/src/ColumnGroup.js +0 -0
  247. package/dist-es/packages/{grid → data-grid}/src/ColumnGroup.js.map +0 -0
  248. package/dist-es/packages/{grid → data-grid}/src/CornerTag.css.js +0 -0
  249. package/dist-es/packages/{grid → data-grid}/src/CornerTag.css.js.map +0 -0
  250. package/dist-es/packages/{grid → data-grid}/src/CornerTag.js +0 -0
  251. package/dist-es/packages/{grid → data-grid}/src/CornerTag.js.map +0 -0
  252. package/dist-es/packages/{grid → data-grid}/src/CursorContext.js +0 -0
  253. package/dist-es/packages/{grid → data-grid}/src/CursorContext.js.map +0 -0
  254. package/dist-es/packages/{grid → data-grid}/src/DropdownCellEditor.css.js +0 -0
  255. package/dist-es/packages/{grid → data-grid}/src/DropdownCellEditor.css.js.map +0 -0
  256. package/dist-es/packages/{grid → data-grid}/src/DropdownCellEditor.js +0 -0
  257. package/dist-es/packages/{grid → data-grid}/src/DropdownCellEditor.js.map +0 -0
  258. package/dist-es/packages/{grid → data-grid}/src/EditorContext.js +0 -0
  259. package/dist-es/packages/{grid → data-grid}/src/EditorContext.js.map +0 -0
  260. package/dist-es/packages/{grid → data-grid}/src/Grid.css.js +0 -0
  261. package/dist-es/packages/{grid → data-grid}/src/Grid.css.js.map +0 -0
  262. package/dist-es/packages/{grid → data-grid}/src/GridColumn.js +1 -1
  263. /package/dist-es/packages/{grid → data-grid}/src/GridContext.js +0 -0
  264. /package/dist-es/packages/{grid → data-grid}/src/GridContext.js.map +0 -0
  265. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCell.css.js +0 -0
  266. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCell.css.js.map +0 -0
  267. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCell.js +0 -0
  268. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCell.js.map +0 -0
  269. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCellValue.js +0 -0
  270. /package/dist-es/packages/{grid → data-grid}/src/GroupHeaderCellValue.js.map +0 -0
  271. /package/dist-es/packages/{grid → data-grid}/src/HeaderCell.css.js.map +0 -0
  272. /package/dist-es/packages/{grid → data-grid}/src/HeaderCellValue.js +0 -0
  273. /package/dist-es/packages/{grid → data-grid}/src/HeaderCellValue.js.map +0 -0
  274. /package/dist-es/packages/{grid → data-grid}/src/LayoutContext.js +0 -0
  275. /package/dist-es/packages/{grid → data-grid}/src/LayoutContext.js.map +0 -0
  276. /package/dist-es/packages/{grid → data-grid}/src/NumberRange.js +0 -0
  277. /package/dist-es/packages/{grid → data-grid}/src/NumberRange.js.map +0 -0
  278. /package/dist-es/packages/{grid → data-grid}/src/NumericColumn.css.js +0 -0
  279. /package/dist-es/packages/{grid → data-grid}/src/NumericColumn.css.js.map +0 -0
  280. /package/dist-es/packages/{grid → data-grid}/src/NumericColumn.js +0 -0
  281. /package/dist-es/packages/{grid → data-grid}/src/NumericColumn.js.map +0 -0
  282. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionCheckboxCellValue.js +0 -0
  283. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionCheckboxCellValue.js.map +0 -0
  284. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionCheckboxHeaderCellValue.js +0 -0
  285. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -0
  286. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionRadioCellValue.js +0 -0
  287. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionRadioCellValue.js.map +0 -0
  288. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionRadioHeaderCell.js +0 -0
  289. /package/dist-es/packages/{grid → data-grid}/src/RowSelectionRadioHeaderCell.js.map +0 -0
  290. /package/dist-es/packages/{grid → data-grid}/src/SelectionContext.js +0 -0
  291. /package/dist-es/packages/{grid → data-grid}/src/SelectionContext.js.map +0 -0
  292. /package/dist-es/packages/{grid → data-grid}/src/SizingContext.js +0 -0
  293. /package/dist-es/packages/{grid → data-grid}/src/SizingContext.js.map +0 -0
  294. /package/dist-es/packages/{grid → data-grid}/src/TextCellEditor.css.js +0 -0
  295. /package/dist-es/packages/{grid → data-grid}/src/TextCellEditor.css.js.map +0 -0
  296. /package/dist-es/packages/{grid → data-grid}/src/TextCellEditor.js +0 -0
  297. /package/dist-es/packages/{grid → data-grid}/src/TextCellEditor.js.map +0 -0
  298. /package/dist-es/packages/{grid → data-grid}/src/index.js.map +0 -0
  299. /package/dist-es/packages/{grid → data-grid}/src/internal/Cell.css.js.map +0 -0
  300. /package/dist-es/packages/{grid → data-grid}/src/internal/Cell.js +0 -0
  301. /package/dist-es/packages/{grid → data-grid}/src/internal/Cell.js.map +0 -0
  302. /package/dist-es/packages/{grid → data-grid}/src/internal/CellMeasure.css.js +0 -0
  303. /package/dist-es/packages/{grid → data-grid}/src/internal/CellMeasure.css.js.map +0 -0
  304. /package/dist-es/packages/{grid → data-grid}/src/internal/CellMeasure.js +0 -0
  305. /package/dist-es/packages/{grid → data-grid}/src/internal/CellMeasure.js.map +0 -0
  306. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnDropTarget.css.js +0 -0
  307. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnDropTarget.css.js.map +0 -0
  308. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnDropTarget.js +0 -0
  309. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnDropTarget.js.map +0 -0
  310. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnGhost.css.js +0 -0
  311. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnGhost.css.js.map +0 -0
  312. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnGhost.js +0 -0
  313. /package/dist-es/packages/{grid → data-grid}/src/internal/ColumnGhost.js.map +0 -0
  314. /package/dist-es/packages/{grid → data-grid}/src/internal/Cursor.css.js +0 -0
  315. /package/dist-es/packages/{grid → data-grid}/src/internal/Cursor.css.js.map +0 -0
  316. /package/dist-es/packages/{grid → data-grid}/src/internal/Cursor.js +0 -0
  317. /package/dist-es/packages/{grid → data-grid}/src/internal/Cursor.js.map +0 -0
  318. /package/dist-es/packages/{grid → data-grid}/src/internal/DefaultCellValue.css.js +0 -0
  319. /package/dist-es/packages/{grid → data-grid}/src/internal/DefaultCellValue.css.js.map +0 -0
  320. /package/dist-es/packages/{grid → data-grid}/src/internal/DefaultCellValue.js +0 -0
  321. /package/dist-es/packages/{grid → data-grid}/src/internal/DefaultCellValue.js.map +0 -0
  322. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeCell.css.js +0 -0
  323. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeCell.css.js.map +0 -0
  324. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeCell.js +0 -0
  325. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeCell.js.map +0 -0
  326. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeGroupCell.js +0 -0
  327. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeGroupCell.js.map +0 -0
  328. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeHeaderCell.js +0 -0
  329. /package/dist-es/packages/{grid → data-grid}/src/internal/FakeHeaderCell.js.map +0 -0
  330. /package/dist-es/packages/{grid → data-grid}/src/internal/GroupHeaderRow.css.js +0 -0
  331. /package/dist-es/packages/{grid → data-grid}/src/internal/GroupHeaderRow.css.js.map +0 -0
  332. /package/dist-es/packages/{grid → data-grid}/src/internal/GroupHeaderRow.js +0 -0
  333. /package/dist-es/packages/{grid → data-grid}/src/internal/GroupHeaderRow.js.map +0 -0
  334. /package/dist-es/packages/{grid → data-grid}/src/internal/HeaderRow.css.js +0 -0
  335. /package/dist-es/packages/{grid → data-grid}/src/internal/HeaderRow.css.js.map +0 -0
  336. /package/dist-es/packages/{grid → data-grid}/src/internal/HeaderRow.js +0 -0
  337. /package/dist-es/packages/{grid → data-grid}/src/internal/HeaderRow.js.map +0 -0
  338. /package/dist-es/packages/{grid → data-grid}/src/internal/LeftPart.css.js +0 -0
  339. /package/dist-es/packages/{grid → data-grid}/src/internal/LeftPart.css.js.map +0 -0
  340. /package/dist-es/packages/{grid → data-grid}/src/internal/MiddlePart.css.js +0 -0
  341. /package/dist-es/packages/{grid → data-grid}/src/internal/MiddlePart.css.js.map +0 -0
  342. /package/dist-es/packages/{grid → data-grid}/src/internal/RightPart.css.js +0 -0
  343. /package/dist-es/packages/{grid → data-grid}/src/internal/RightPart.css.js.map +0 -0
  344. /package/dist-es/packages/{grid → data-grid}/src/internal/Scrollable.css.js +0 -0
  345. /package/dist-es/packages/{grid → data-grid}/src/internal/Scrollable.css.js.map +0 -0
  346. /package/dist-es/packages/{grid → data-grid}/src/internal/Scrollable.js +0 -0
  347. /package/dist-es/packages/{grid → data-grid}/src/internal/Scrollable.js.map +0 -0
  348. /package/dist-es/packages/{grid → data-grid}/src/internal/TableColGroup.js +0 -0
  349. /package/dist-es/packages/{grid → data-grid}/src/internal/TableColGroup.js.map +0 -0
  350. /package/dist-es/packages/{grid → data-grid}/src/internal/TableRow.css.js.map +0 -0
  351. /package/dist-es/packages/{grid → data-grid}/src/internal/TopLeftPart.css.js +0 -0
  352. /package/dist-es/packages/{grid → data-grid}/src/internal/TopLeftPart.css.js.map +0 -0
  353. /package/dist-es/packages/{grid → data-grid}/src/internal/TopLeftPart.js +0 -0
  354. /package/dist-es/packages/{grid → data-grid}/src/internal/TopLeftPart.js.map +0 -0
  355. /package/dist-es/packages/{grid → data-grid}/src/internal/TopPart.css.js +0 -0
  356. /package/dist-es/packages/{grid → data-grid}/src/internal/TopPart.css.js.map +0 -0
  357. /package/dist-es/packages/{grid → data-grid}/src/internal/TopPart.js +0 -0
  358. /package/dist-es/packages/{grid → data-grid}/src/internal/TopPart.js.map +0 -0
  359. /package/dist-es/packages/{grid → data-grid}/src/internal/TopRightPart.css.js +0 -0
  360. /package/dist-es/packages/{grid → data-grid}/src/internal/TopRightPart.css.js.map +0 -0
  361. /package/dist-es/packages/{grid → data-grid}/src/internal/TopRightPart.js +0 -0
  362. /package/dist-es/packages/{grid → data-grid}/src/internal/TopRightPart.js.map +0 -0
  363. /package/dist-es/packages/{grid → data-grid}/src/internal/gridHooks.js.map +0 -0
  364. /package/dist-es/packages/{grid → data-grid}/src/internal/utils.js +0 -0
  365. /package/dist-es/packages/{grid → data-grid}/src/internal/utils.js.map +0 -0
@@ -30,12 +30,20 @@ import { ColumnDragContext } from './ColumnDragContext.js';
30
30
  import { ColumnGhost } from './internal/ColumnGhost.js';
31
31
  import { ColumnDropTarget } from './internal/ColumnDropTarget.js';
32
32
  import { ColumnDataContext } from './ColumnDataContext.js';
33
+ import { ColumnSortContext } from './ColumnSortContext.js';
33
34
 
34
35
  const withBaseName = makePrefixer("saltGrid");
36
+ var SortOrder = /* @__PURE__ */ ((SortOrder2) => {
37
+ SortOrder2["ASC"] = "asc";
38
+ SortOrder2["DESC"] = "desc";
39
+ SortOrder2["NONE"] = "none";
40
+ return SortOrder2;
41
+ })(SortOrder || {});
35
42
  function defaultRowKeyGetter(row, index) {
36
43
  return `${index}`;
37
44
  }
38
45
  const Grid = function Grid2(props) {
46
+ var _a, _b, _c;
39
47
  const {
40
48
  rowData,
41
49
  zebra,
@@ -55,7 +63,8 @@ const Grid = function Grid2(props) {
55
63
  onColumnMoved,
56
64
  cellSelectionMode = "none",
57
65
  onVisibleRowRangeChange,
58
- headerIsFocusable
66
+ headerIsFocusable,
67
+ getRowValidationStatus
59
68
  } = props;
60
69
  const rootRef = useRef(null);
61
70
  const scrollableRef = useRef(null);
@@ -83,6 +92,8 @@ const Grid = function Grid2(props) {
83
92
  const [focusedPart, setFocusedPart] = useState(
84
93
  headerIsFocusable ? "header" : "body"
85
94
  );
95
+ const [sortByColumnId, setSortByColumnId] = useState("");
96
+ const [sortOrder, setSortOrder] = useState("none" /* NONE */);
86
97
  const [editMode, setEditMode] = useState(false);
87
98
  const [initialText, setInitialText] = useState(void 0);
88
99
  const resizeClient = useCallback(
@@ -127,8 +138,8 @@ const Grid = function Grid2(props) {
127
138
  );
128
139
  const midGrpByColId = useMemo(() => {
129
140
  const m = /* @__PURE__ */ new Map();
130
- for (let g of midGroups) {
131
- for (let c of g.childrenIds) {
141
+ for (const g of midGroups) {
142
+ for (const c of g.childrenIds) {
132
143
  m.set(c, g);
133
144
  }
134
145
  }
@@ -242,6 +253,70 @@ const Grid = function Grid2(props) {
242
253
  }),
243
254
  [getColById]
244
255
  );
256
+ const isSortMode = sortByColumnId && sortOrder !== "none" /* NONE */;
257
+ const onSortOrderChange = (_a = getColById(sortByColumnId)) == null ? void 0 : _a.info.props.onSortOrderChange;
258
+ const valueGetter = ((_b = getColById(sortByColumnId)) == null ? void 0 : _b.info.props.getValue) || ((r) => {
259
+ return r[sortByColumnId];
260
+ });
261
+ const customSortingFn = (_c = getColById(sortByColumnId)) == null ? void 0 : _c.info.props.customSort;
262
+ const sortedRowData = useMemo(() => {
263
+ if (!isSortMode || onSortOrderChange)
264
+ return rowData;
265
+ if (customSortingFn) {
266
+ return customSortingFn({ rowData, sortOrder });
267
+ }
268
+ const sortedData = [...rowData].sort(
269
+ (a, b) => valueGetter(a) < valueGetter(b) ? -1 : 1
270
+ );
271
+ if (sortOrder === "desc" /* DESC */) {
272
+ return sortedData.reverse();
273
+ }
274
+ return sortedData;
275
+ }, [
276
+ onSortOrderChange,
277
+ valueGetter,
278
+ customSortingFn,
279
+ isSortMode,
280
+ rowData,
281
+ sortByColumnId,
282
+ sortOrder
283
+ ]);
284
+ const onClickSortColumn = useCallback(
285
+ (colHeaderId) => {
286
+ if (sortByColumnId === colHeaderId) {
287
+ switch (sortOrder) {
288
+ case "asc" /* ASC */:
289
+ setSortOrder("desc" /* DESC */);
290
+ break;
291
+ case "desc" /* DESC */:
292
+ setSortOrder("none" /* NONE */);
293
+ break;
294
+ default:
295
+ setSortOrder("asc" /* ASC */);
296
+ }
297
+ } else {
298
+ setSortByColumnId(colHeaderId);
299
+ setSortOrder("asc" /* ASC */);
300
+ }
301
+ },
302
+ [sortByColumnId, sortOrder]
303
+ );
304
+ const columnSortContext = useMemo(
305
+ () => ({
306
+ sortByColumnId,
307
+ setSortByColumnId,
308
+ sortOrder,
309
+ setSortOrder,
310
+ onClickSortColumn
311
+ }),
312
+ [
313
+ sortByColumnId,
314
+ setSortByColumnId,
315
+ sortOrder,
316
+ setSortOrder,
317
+ onClickSortColumn
318
+ ]
319
+ );
245
320
  const scroll = useCallback(
246
321
  (left, top, source) => {
247
322
  setScrollSource(source || "user");
@@ -265,9 +340,9 @@ const Grid = function Grid2(props) {
265
340
  );
266
341
  const focusCellElement = (part, rowIdx, colIdx) => {
267
342
  setTimeout(() => {
268
- var _a;
343
+ var _a2;
269
344
  const selector = part === "body" ? `td[data-row-index="${rowIdx}"][data-column-index="${colIdx}"]` : `th[data-column-index="${colIdx}"]`;
270
- const nodeToFocus = (_a = rootRef.current) == null ? void 0 : _a.querySelector(selector);
345
+ const nodeToFocus = (_a2 = rootRef.current) == null ? void 0 : _a2.querySelector(selector);
271
346
  if (nodeToFocus) {
272
347
  nodeToFocus.focus({ preventScroll: true });
273
348
  } else {
@@ -305,7 +380,7 @@ const Grid = function Grid2(props) {
305
380
  `onChange is not specified for editable column "${c.info.props.id}".`
306
381
  );
307
382
  } else {
308
- handler(rowData[cursorRowIdx], cursorRowIdx, value);
383
+ handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);
309
384
  }
310
385
  setEditMode(false);
311
386
  focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);
@@ -329,7 +404,7 @@ const Grid = function Grid2(props) {
329
404
  onMouseDown: onRowSelectionMouseDown
330
405
  } = useRowSelection(
331
406
  rowKeyGetter,
332
- rowData,
407
+ sortedRowData,
333
408
  defaultSelectedRowIdxs,
334
409
  selectedRowIdxs,
335
410
  rowSelectionMode,
@@ -347,10 +422,10 @@ const Grid = function Grid2(props) {
347
422
  setFocusedPart(part);
348
423
  colIdx = clamp(colIdx, 0, cols.length - 1);
349
424
  if (part === "body") {
350
- if (rowData.length < 1 || cols.length < 1) {
425
+ if (sortedRowData.length < 1 || cols.length < 1) {
351
426
  return;
352
427
  }
353
- rowIdx = clamp(rowIdx, 0, rowData.length - 1);
428
+ rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);
354
429
  } else if (part === "header") {
355
430
  rowIdx = 0;
356
431
  }
@@ -365,7 +440,7 @@ const Grid = function Grid2(props) {
365
440
  [
366
441
  setCursorRowIdx,
367
442
  setCursorColIdx,
368
- rowData,
443
+ sortedRowData,
369
444
  rowKeyGetter,
370
445
  cols,
371
446
  rootRef.current,
@@ -376,7 +451,7 @@ const Grid = function Grid2(props) {
376
451
  headerIsFocusable
377
452
  ]
378
453
  );
379
- const rows = useRowModels(rowKeyGetter, rowData, visRowRng);
454
+ const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);
380
455
  const isLeftRaised = scrollLeft > 0;
381
456
  const isRightRaised = scrollLeft + clientMidWidth < midWidth;
382
457
  const isHeaderRaised = scrollTop > 0;
@@ -543,7 +618,7 @@ const Grid = function Grid2(props) {
543
618
  if (cursorColIdx != void 0) {
544
619
  rangeSelection.selectRange({
545
620
  start: { rowIdx: 0, colIdx: cursorColIdx },
546
- end: { rowIdx: rowData.length, colIdx: cursorColIdx }
621
+ end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx }
547
622
  });
548
623
  }
549
624
  } else {
@@ -564,7 +639,7 @@ const Grid = function Grid2(props) {
564
639
  if (event.ctrlKey || event.metaKey) {
565
640
  rangeSelection.selectRange({
566
641
  start: { rowIdx: 0, colIdx: 0 },
567
- end: { rowIdx: rowData.length, colIdx: cols.length }
642
+ end: { rowIdx: sortedRowData.length, colIdx: cols.length }
568
643
  });
569
644
  selectAll();
570
645
  return true;
@@ -585,7 +660,7 @@ const Grid = function Grid2(props) {
585
660
  selectAll,
586
661
  cursorColIdx,
587
662
  cursorRowIdx,
588
- rowData.length,
663
+ sortedRowData.length,
589
664
  cols.length,
590
665
  focusedPart
591
666
  ]
@@ -600,7 +675,7 @@ const Grid = function Grid2(props) {
600
675
  const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);
601
676
  const text = [];
602
677
  for (let r = minRow; r <= maxRow; ++r) {
603
- const row = rowData[r];
678
+ const row = sortedRowData[r];
604
679
  const rowText = [];
605
680
  for (let c2 = minCol; c2 <= maxCol; ++c2) {
606
681
  const col = cols[c2];
@@ -676,7 +751,7 @@ const Grid = function Grid2(props) {
676
751
  if (!event.ctrlKey) {
677
752
  moveCursor(focusedPart, cursorRowIdx, cols.length - 1);
678
753
  } else {
679
- moveCursor(focusedPart, rowData.length - 1, cols.length - 1);
754
+ moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);
680
755
  }
681
756
  break;
682
757
  case "Tab":
@@ -685,7 +760,7 @@ const Grid = function Grid2(props) {
685
760
  if (cursorColIdx < cols.length - 1) {
686
761
  moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);
687
762
  } else {
688
- if (cursorRowIdx < rowData.length - 1) {
763
+ if (cursorRowIdx < sortedRowData.length - 1) {
689
764
  moveCursor(focusedPart, cursorRowIdx + 1, 0);
690
765
  }
691
766
  }
@@ -725,7 +800,7 @@ const Grid = function Grid2(props) {
725
800
  cursorRowIdx,
726
801
  cursorRowIdx,
727
802
  cols.length,
728
- rowData.length,
803
+ sortedRowData.length,
729
804
  headerIsFocusable,
730
805
  pageSize
731
806
  ]
@@ -810,115 +885,121 @@ const Grid = function Grid2(props) {
810
885
  value: sizingContext,
811
886
  children: /* @__PURE__ */ jsx(EditorContext.Provider, {
812
887
  value: editorContext,
813
- children: /* @__PURE__ */ jsxs(ColumnDataContext.Provider, {
888
+ children: /* @__PURE__ */ jsx(ColumnDataContext.Provider, {
814
889
  value: columnDataContext,
815
- children: [
816
- props.children,
817
- /* @__PURE__ */ jsxs("div", {
818
- className: clsx(
819
- withBaseName(),
820
- {
821
- [withBaseName("zebra")]: zebra,
822
- [withBaseName("columnSeparators")]: columnSeparators,
823
- [withBaseName("pinnedSeparators")]: pinnedSeparators,
824
- [withBaseName("primaryBackground")]: variant === "primary",
825
- [withBaseName("secondaryBackground")]: variant === "secondary"
826
- },
827
- className
828
- ),
829
- style: rootStyle,
830
- ref: rootRef,
831
- onKeyDown,
832
- onKeyUp,
833
- onMouseDown,
834
- onFocus,
835
- onBlur,
836
- "data-name": "grid-root",
837
- role: "grid",
838
- "aria-colcount": cols.length,
839
- "aria-rowcount": rowCount + headRowCount,
840
- "aria-multiselectable": rowSelectionMode === "multi",
841
- children: [
842
- /* @__PURE__ */ jsx(CellMeasure, {
843
- setRowHeight
844
- }),
845
- /* @__PURE__ */ jsx(Scrollable, {
846
- resizeClient,
847
- scrollLeft,
848
- scrollTop,
849
- scrollSource,
850
- scroll,
851
- scrollerRef: scrollableRef,
852
- topRef,
853
- rightRef,
854
- bottomRef,
855
- leftRef,
856
- middleRef
857
- }),
858
- !hideHeader && leftCols.length > 0 && /* @__PURE__ */ jsx(TopLeftPart, {
859
- onWheel,
860
- columns: leftCols,
861
- columnGroups: leftGroups,
862
- rightShadow: isLeftRaised,
863
- bottomShadow: isHeaderRaised
864
- }),
865
- !hideHeader && /* @__PURE__ */ jsx(TopPart, {
866
- columns: headVisibleColumns,
867
- columnGroups: visColGrps,
868
- topRef,
869
- onWheel,
870
- midGap,
871
- bottomShadow: isHeaderRaised
872
- }),
873
- !hideHeader && rightCols.length > 0 && /* @__PURE__ */ jsx(TopRightPart, {
874
- onWheel,
875
- columns: rightCols,
876
- columnGroups: rightGroups,
877
- leftShadow: isRightRaised,
878
- bottomShadow: isHeaderRaised
879
- }),
880
- leftCols.length > 0 && /* @__PURE__ */ jsx(LeftPart, {
881
- leftRef,
882
- onWheel,
883
- columns: leftCols,
884
- rows,
885
- rightShadow: isLeftRaised,
886
- hoverOverRowKey: hoverRowKey,
887
- setHoverOverRowKey: setHoverRowKey,
888
- zebra
889
- }),
890
- /* @__PURE__ */ jsx(MiddlePart, {
891
- middleRef,
892
- onWheel,
893
- columns: bodyVisibleColumns,
894
- rows,
895
- hoverOverRowKey: hoverRowKey,
896
- setHoverOverRowKey: setHoverRowKey,
897
- midGap,
898
- zebra
899
- }),
900
- rightCols.length > 0 && /* @__PURE__ */ jsx(RightPart, {
901
- rightRef,
902
- onWheel,
903
- columns: rightCols,
904
- rows,
905
- leftShadow: isRightRaised,
906
- hoverOverRowKey: hoverRowKey,
907
- setHoverOverRowKey: setHoverRowKey,
908
- zebra
909
- }),
910
- /* @__PURE__ */ jsx(ColumnDropTarget, {
911
- x: activeTarget == null ? void 0 : activeTarget.x
912
- }),
913
- /* @__PURE__ */ jsx(ColumnGhost, {
914
- columns: cols,
915
- rows,
916
- dragState,
917
- zebra
918
- })
919
- ]
920
- })
921
- ]
890
+ children: /* @__PURE__ */ jsxs(ColumnSortContext.Provider, {
891
+ value: columnSortContext,
892
+ children: [
893
+ props.children,
894
+ /* @__PURE__ */ jsxs("div", {
895
+ className: clsx(
896
+ withBaseName(),
897
+ {
898
+ [withBaseName("zebra")]: zebra,
899
+ [withBaseName("columnSeparators")]: columnSeparators,
900
+ [withBaseName("pinnedSeparators")]: pinnedSeparators,
901
+ [withBaseName("primaryBackground")]: variant === "primary",
902
+ [withBaseName("secondaryBackground")]: variant === "secondary"
903
+ },
904
+ className
905
+ ),
906
+ style: rootStyle,
907
+ ref: rootRef,
908
+ onKeyDown,
909
+ onKeyUp,
910
+ onMouseDown,
911
+ onFocus,
912
+ onBlur,
913
+ "data-name": "grid-root",
914
+ role: "grid",
915
+ "aria-colcount": cols.length,
916
+ "aria-rowcount": rowCount + headRowCount,
917
+ "aria-multiselectable": rowSelectionMode === "multi",
918
+ children: [
919
+ /* @__PURE__ */ jsx(CellMeasure, {
920
+ setRowHeight
921
+ }),
922
+ /* @__PURE__ */ jsx(Scrollable, {
923
+ resizeClient,
924
+ scrollLeft,
925
+ scrollTop,
926
+ scrollSource,
927
+ scroll,
928
+ scrollerRef: scrollableRef,
929
+ topRef,
930
+ rightRef,
931
+ bottomRef,
932
+ leftRef,
933
+ middleRef
934
+ }),
935
+ !hideHeader && leftCols.length > 0 && /* @__PURE__ */ jsx(TopLeftPart, {
936
+ onWheel,
937
+ columns: leftCols,
938
+ columnGroups: leftGroups,
939
+ rightShadow: isLeftRaised,
940
+ bottomShadow: isHeaderRaised
941
+ }),
942
+ !hideHeader && /* @__PURE__ */ jsx(TopPart, {
943
+ columns: headVisibleColumns,
944
+ columnGroups: visColGrps,
945
+ topRef,
946
+ onWheel,
947
+ midGap,
948
+ bottomShadow: isHeaderRaised
949
+ }),
950
+ !hideHeader && rightCols.length > 0 && /* @__PURE__ */ jsx(TopRightPart, {
951
+ onWheel,
952
+ columns: rightCols,
953
+ columnGroups: rightGroups,
954
+ leftShadow: isRightRaised,
955
+ bottomShadow: isHeaderRaised
956
+ }),
957
+ leftCols.length > 0 && /* @__PURE__ */ jsx(LeftPart, {
958
+ leftRef,
959
+ onWheel,
960
+ columns: leftCols,
961
+ rows,
962
+ rightShadow: isLeftRaised,
963
+ hoverOverRowKey: hoverRowKey,
964
+ setHoverOverRowKey: setHoverRowKey,
965
+ zebra,
966
+ getRowValidationStatus
967
+ }),
968
+ /* @__PURE__ */ jsx(MiddlePart, {
969
+ middleRef,
970
+ onWheel,
971
+ columns: bodyVisibleColumns,
972
+ rows,
973
+ hoverOverRowKey: hoverRowKey,
974
+ setHoverOverRowKey: setHoverRowKey,
975
+ midGap,
976
+ zebra,
977
+ getRowValidationStatus
978
+ }),
979
+ rightCols.length > 0 && /* @__PURE__ */ jsx(RightPart, {
980
+ rightRef,
981
+ onWheel,
982
+ columns: rightCols,
983
+ rows,
984
+ leftShadow: isRightRaised,
985
+ hoverOverRowKey: hoverRowKey,
986
+ setHoverOverRowKey: setHoverRowKey,
987
+ zebra,
988
+ getRowValidationStatus
989
+ }),
990
+ /* @__PURE__ */ jsx(ColumnDropTarget, {
991
+ x: activeTarget == null ? void 0 : activeTarget.x
992
+ }),
993
+ /* @__PURE__ */ jsx(ColumnGhost, {
994
+ columns: cols,
995
+ rows,
996
+ dragState,
997
+ zebra
998
+ })
999
+ ]
1000
+ })
1001
+ ]
1002
+ })
922
1003
  })
923
1004
  })
924
1005
  })
@@ -929,5 +1010,5 @@ const Grid = function Grid2(props) {
929
1010
  });
930
1011
  };
931
1012
 
932
- export { Grid };
1013
+ export { Grid, SortOrder };
933
1014
  //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sources":["../src/Grid.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n CellValidationState,\n GridColumnInfo,\n GridColumnProps,\n} from \"./GridColumn\";\nimport { GridContext } from \"./GridContext\";\nimport { clsx } from \"clsx\";\nimport {\n CellMeasure,\n clamp,\n getFocusablePosition,\n LeftPart,\n MiddlePart,\n RightPart,\n Scrollable,\n ScrollableProps,\n TopLeftPart,\n TopPart,\n TopRightPart,\n useBodyVisibleAreaTop,\n useBodyVisibleColumnRange,\n useClientMidHeight,\n useClientMidWidth,\n useColumnMove,\n useColumnRange,\n useColumnRegistry,\n useColumnResize,\n useHeadVisibleColumnRange,\n useLeftScrolledOutWidth,\n useRangeSelection,\n useRowModels,\n useRowSelection,\n useScrollToCell,\n useSum,\n useSumRangeWidth,\n useSumWidth,\n useVisibleColumnGroupRange,\n useVisibleRowRange,\n} from \"./internal\";\nimport \"./Grid.css\";\nimport { SelectionContext } from \"./SelectionContext\";\nimport { SizingContext } from \"./SizingContext\";\nimport { LayoutContext } from \"./LayoutContext\";\nimport { EditorContext } from \"./EditorContext\"; // TODO remove\nimport { CursorContext, FocusedPart } from \"./CursorContext\";\nimport { ColumnGroupProps } from \"./ColumnGroup\";\nimport { ColumnDragContext } from \"./ColumnDragContext\";\nimport { ColumnGhost } from \"./internal/ColumnGhost\";\nimport { ColumnDropTarget } from \"./internal/ColumnDropTarget\";\nimport { ColumnDataContext } from \"./ColumnDataContext\";\nimport { ColumnSortContext } from \"./ColumnSortContext\";\n\nconst withBaseName = makePrefixer(\"saltGrid\");\n\nexport type ColumnSeparatorType = \"regular\" | \"none\" | \"groupEdge\" | \"pinned\";\nexport type ColumnGroupRowSeparatorType = \"first\" | \"regular\" | \"last\";\nexport type ColumnGroupColumnSeparatorType = \"regular\" | \"none\" | \"pinned\";\nexport type GridRowSelectionMode = \"single\" | \"multi\" | \"none\";\nexport type GridCellSelectionMode = \"range\" | \"none\";\n\nexport enum SortOrder {\n ASC = \"asc\",\n DESC = \"desc\",\n NONE = \"none\",\n}\n\nexport type RowKeyGetter<T> = (row: T, index: number) => string;\n\nexport type GridColumnMoveHandler = (\n columnId: string,\n fromIndex: number,\n toIndex: number\n) => void;\n\nexport interface GridProps<T = any> {\n /**\n * At least 1 children is expected, options are `ColumnGroup` or `GridColumn`.\n * */\n children: ReactNode;\n /**\n * If `true`, zebra stripes are enabled (odd/even rows have alternate colours)\n * */\n zebra?: boolean;\n /**\n * If `true`, grid header is hidden.\n * */\n hideHeader?: boolean;\n /**\n * If `true`, column separators are rendered.\n * */\n columnSeparators?: boolean;\n /**\n * If `true`, separators are rendered between pinned and unpinned columns.\n * */\n pinnedSeparators?: boolean;\n /**\n * Row data objects. Sparse arrays are supported.\n * */\n rowData: T[];\n /**\n * Should return unique string for a given row data object.\n * If rowData is sparse then this function should work with undefined row data\n * objects and create keys based on row index. `(row: T, index: number) => string`\n * */\n rowKeyGetter?: RowKeyGetter<T>;\n /**\n * Rows with these indices are selected by default.\n * */\n defaultSelectedRowIdxs?: number[];\n /**\n * Selected row indices for controlled mode.\n * */\n selectedRowIdxs?: number[];\n className?: string;\n style?: CSSProperties;\n /**\n * The variant to use. Options are `primary` and `secondary`. Default value is\n * `primary`. `secondary` variant changes grid background to reduce contrast.\n * */\n variant?: \"primary\" | \"secondary\";\n /**\n * Options are `single`, `multi` and `none`.\n * */\n rowSelectionMode?: GridRowSelectionMode;\n onRowSelected?: (selectedRowIdxs: number[]) => void;\n /**\n * If `true`, user will be able to move columns using drag and drop.\n * */\n columnMove?: boolean;\n /**\n * Accepts `(columnId: string, fromIndex: number, toIndex: number) => void`\n * */\n onColumnMoved?: GridColumnMoveHandler;\n /**\n * Options are `range` and `none`.\n * */\n cellSelectionMode?: GridCellSelectionMode;\n onVisibleRowRangeChange?: (start: number, end: number) => void;\n /**\n * If `true`, keyboard navigation is enabled for the header.\n * */\n headerIsFocusable?: boolean;\n\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport interface GridRowModel<T> {\n key: string;\n index: number;\n data: T;\n}\n\nexport interface GridColumnModel<T> {\n index: number;\n separator: ColumnSeparatorType;\n\n info: GridColumnInfo<T>;\n}\n\nexport interface GridColumnGroupModel {\n index: number;\n data: ColumnGroupProps;\n childrenIds: string[];\n rowSeparator: ColumnGroupRowSeparatorType;\n columnSeparator: ColumnGroupColumnSeparatorType;\n colSpan: number;\n}\n\nfunction defaultRowKeyGetter<T>(row: T, index: number): string {\n return `${index}`;\n}\n\nexport const Grid = function Grid<T>(props: GridProps<T>) {\n const {\n rowData,\n zebra,\n hideHeader,\n columnSeparators,\n pinnedSeparators = true,\n className,\n style,\n rowKeyGetter = defaultRowKeyGetter,\n children,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n variant = \"primary\",\n rowSelectionMode = \"multi\",\n onRowSelected,\n columnMove,\n onColumnMoved,\n cellSelectionMode = \"none\",\n onVisibleRowRangeChange,\n headerIsFocusable,\n getRowValidationStatus,\n } = props;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const scrollableRef = useRef<HTMLDivElement>(null);\n const middleRef = useRef<HTMLDivElement>(null);\n const topRef = useRef<HTMLDivElement>(null);\n const leftRef = useRef<HTMLDivElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n const bottomRef = useRef<HTMLDivElement>(null);\n\n // What caused the latest scroll change. User means the UI (mouse events), table means the component initiated scrolling (scrollToCell was called for example)\n const [scrollSource, setScrollSource] = useState<\"user\" | \"table\">(\"user\");\n const [scrollLeft, setScrollLeft] = useState<number>(0);\n const [scrollTop, setScrollTop] = useState<number>(0);\n\n const [hoverRowKey, setHoverRowKey] = useState<string | undefined>(undefined);\n\n const [\n { clientWidth, clientHeight, scrollBarHeight, scrollBarWidth },\n setDimensions,\n ] = useState({\n clientWidth: 0,\n clientHeight: 0,\n scrollBarHeight: 0,\n scrollBarWidth: 0,\n });\n\n const [rowHeight, setRowHeight] = useState<number>(0);\n\n const [cursorRowIdx, setCursorRowIdx] = useState<number>(0);\n const [cursorColIdx, setCursorColIdx] = useState<number>(0);\n const [focusedPart, setFocusedPart] = useState<FocusedPart>(\n headerIsFocusable ? \"header\" : \"body\"\n );\n\n const [sortByColumnId, setSortByColumnId] =\n useState<GridColumnProps[\"id\"]>(\"\");\n const [sortOrder, setSortOrder] = useState<SortOrder>(SortOrder.NONE);\n\n const [editMode, setEditMode] = useState<boolean>(false);\n const [initialText, setInitialText] = useState<string | undefined>(undefined);\n\n const resizeClient: ScrollableProps<T>[\"resizeClient\"] = useCallback(\n (dimensions) => {\n setDimensions(dimensions);\n },\n []\n );\n\n const {\n leftCols, // Columns pinned to left\n midCols, // Scrollable columns\n rightCols, // Columns pinned to right\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n } = useColumnRegistry<T>(children);\n\n const midColsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n midCols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [midCols]\n );\n\n // Width of all columns pinned to left\n const leftWidth = useSumWidth(leftCols);\n // Width of all scrollable columns\n const midWidth = useSumWidth(midCols);\n // Width of all columns pinned to right\n const rightWidth = useSumWidth(rightCols);\n // Total width of all columns\n const totalWidth = useSum([leftWidth, midWidth, rightWidth]);\n\n const hasColumnGroups =\n leftGroups.length > 0 || midGroups.length > 0 || rightGroups.length > 0;\n\n const headRowCount = hideHeader ? 0 : hasColumnGroups ? 2 : 1; // TODO multiple group levels\n const rowCount = rowData.length;\n\n // Footer is not implemented yet.\n const botRowCount = 0; // TODO\n // Height of the header\n const topHeight = rowHeight * headRowCount;\n // Height of the middle part (virtual height)\n const midHeight = rowCount === 0 ? 0 : rowHeight * rowCount + 1;\n // Height of the footer\n const botHeight = botRowCount * rowHeight;\n // Total height of the grid (virtual)\n const totalHeight = useSum([topHeight, midHeight, botHeight]);\n // Client width of the middle part of the grid (viewport)\n const clientMidWidth = useClientMidWidth(clientWidth, leftWidth, rightWidth);\n // Unused width in the middle part, to be filled by an empty column with fake cells.\n const midGap = Math.max(0, Math.floor(clientMidWidth - midWidth));\n\n // Range of unpinned columns visible in the body of the grid (pinned columns are always visible).\n const bodyVisColRng = useBodyVisibleColumnRange(\n midCols,\n scrollLeft,\n clientMidWidth\n );\n\n const midGrpByColId = useMemo(() => {\n const m = new Map<string, GridColumnGroupModel>();\n for (const g of midGroups) {\n for (const c of g.childrenIds) {\n m.set(c, g);\n }\n }\n return m;\n }, [midGroups]);\n\n // Range of visible column groups.\n const visColGrpRng = useVisibleColumnGroupRange(\n bodyVisColRng,\n midCols,\n midGrpByColId,\n leftGroups.length\n );\n\n const visColGrps = useMemo(() => {\n return midGroups.slice(visColGrpRng.start, visColGrpRng.end);\n }, [visColGrpRng, midGroups]);\n\n const headVisColRng = useHeadVisibleColumnRange(\n bodyVisColRng,\n visColGrps,\n midColsById,\n leftCols.length\n );\n\n const bodyScrOutColWh = useLeftScrolledOutWidth(midCols, bodyVisColRng);\n const headScrOutColWh = useLeftScrolledOutWidth(midCols, headVisColRng);\n\n const bodyVisAreaLeft = useSum([leftWidth, bodyScrOutColWh]);\n const headVisAreaLeft = useSum([leftWidth, headScrOutColWh]);\n const clientMidHeight = useClientMidHeight(\n clientHeight,\n topHeight,\n botHeight\n );\n const visRowRng = useVisibleRowRange(\n scrollTop,\n clientMidHeight,\n rowHeight,\n rowCount\n );\n\n const bodyVisAreaTop = useBodyVisibleAreaTop(rowHeight, visRowRng, topHeight);\n\n const bodyVisibleColumns = useColumnRange(midCols, bodyVisColRng);\n const headVisibleColumns = useColumnRange(midCols, headVisColRng);\n const bodyVisColWh = useSumRangeWidth(midCols, bodyVisColRng);\n\n const headVisColWh = bodyVisColWh; // TODO implement groups\n\n const rootStyle = useMemo(\n () => ({\n ...style,\n \"--grid-total-width\": `${totalWidth}px`,\n \"--grid-total-height\": `${totalHeight}px`,\n \"--grid-topPart-height\": `${topHeight}px`,\n \"--grid-leftPart-width\": `${leftWidth}px`,\n \"--grid-rightPart-width\": `${rightWidth}px`,\n \"--grid-bodyVisibleColumns-width\": `${bodyVisColWh}px`,\n \"--grid-bodyVisibleArea-top\": `${bodyVisAreaTop}px`,\n \"--grid-bodyVisibleArea-left\": `${bodyVisAreaLeft}px`,\n \"--grid-bottomHeight\": `${botHeight}px`,\n \"--grid-headerVisibleColumns-width\": `${headVisColWh}px`,\n \"--grid-headerVisibleArea-left\": `${headVisAreaLeft}px`,\n \"--grid-scrollBar-height\": `${scrollBarHeight}px`,\n \"--grid-scrollBar-width\": `${scrollBarWidth}px`,\n }),\n [\n style,\n totalHeight,\n totalWidth,\n topHeight,\n leftWidth,\n rightWidth,\n botHeight,\n bodyVisColWh,\n bodyVisAreaLeft,\n bodyVisAreaTop,\n headVisColWh,\n headVisAreaLeft,\n scrollBarHeight,\n scrollBarWidth,\n ]\n );\n\n const onWheel: EventListener = useCallback(\n (event) => {\n let { deltaX, deltaY, shiftKey } = event as WheelEvent;\n if (deltaX === 0 && shiftKey) {\n deltaX = deltaY;\n deltaY = 0;\n }\n const s = scrollableRef.current;\n if (s) {\n s.scrollLeft += deltaX;\n s.scrollTop += deltaY;\n }\n event.preventDefault();\n event.stopPropagation();\n },\n [scrollableRef.current]\n );\n\n const cols = useMemo(\n () => [...leftCols, ...midCols, ...rightCols],\n [leftCols, midCols, rightCols]\n );\n\n const colsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n cols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [cols]\n );\n\n const getColById = useCallback(\n (id: string) => {\n return colsById.get(id);\n },\n [colsById]\n );\n\n const columnDataContext: ColumnDataContext<T> = useMemo(\n () => ({\n getColById,\n }),\n [getColById]\n );\n\n const isSortMode = sortByColumnId && sortOrder !== SortOrder.NONE;\n\n const onSortOrderChange =\n getColById(sortByColumnId)?.info.props.onSortOrderChange;\n\n const valueGetter =\n getColById(sortByColumnId)?.info.props.getValue ||\n ((r: T) => {\n return r[sortByColumnId as keyof typeof r];\n });\n\n const customSortingFn = getColById(sortByColumnId)?.info.props.customSort;\n\n const sortedRowData = useMemo(() => {\n if (!isSortMode || onSortOrderChange) return rowData;\n\n if (customSortingFn) {\n return customSortingFn({ rowData, sortOrder });\n }\n\n const sortedData = [...rowData].sort((a, b) =>\n valueGetter(a) < valueGetter(b) ? -1 : 1\n );\n\n if (sortOrder === SortOrder.DESC) {\n return sortedData.reverse();\n }\n\n return sortedData;\n }, [\n onSortOrderChange,\n valueGetter,\n customSortingFn,\n isSortMode,\n rowData,\n sortByColumnId,\n sortOrder,\n ]);\n\n const onClickSortColumn = useCallback(\n (colHeaderId: GridColumnProps[\"id\"]) => {\n if (sortByColumnId === colHeaderId) {\n switch (sortOrder) {\n case SortOrder.ASC:\n setSortOrder(SortOrder.DESC);\n break;\n case SortOrder.DESC:\n setSortOrder(SortOrder.NONE);\n break;\n default:\n setSortOrder(SortOrder.ASC);\n }\n } else {\n setSortByColumnId(colHeaderId);\n setSortOrder(SortOrder.ASC);\n }\n },\n [sortByColumnId, sortOrder]\n );\n\n const columnSortContext: ColumnSortContext = useMemo(\n () => ({\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n }),\n [\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n ]\n );\n\n const scroll = useCallback(\n (left?: number, top?: number, source?: \"user\" | \"table\") => {\n setScrollSource(source || \"user\");\n if (left !== undefined) {\n setScrollLeft(left);\n }\n if (top !== undefined) {\n setScrollTop(top);\n }\n },\n [setScrollLeft, setScrollTop, setScrollSource]\n );\n\n const scrollToCell = useScrollToCell(\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll\n );\n\n const focusCellElement = (\n part: FocusedPart,\n rowIdx: number,\n colIdx: number\n ) => {\n setTimeout(() => {\n const selector =\n part === \"body\"\n ? `td[data-row-index=\"${rowIdx}\"][data-column-index=\"${colIdx}\"]`\n : `th[data-column-index=\"${colIdx}\"]`;\n const nodeToFocus = rootRef.current?.querySelector(selector);\n if (nodeToFocus) {\n (nodeToFocus as HTMLElement).focus({ preventScroll: true });\n } else {\n console.warn(`focusCellElement can't find the element`);\n }\n }, 0);\n };\n\n const startEditMode = (text?: string) => {\n if (editMode || cursorRowIdx == undefined || cursorColIdx == undefined) {\n return;\n }\n const c = cols[cursorColIdx];\n const isEditable = !!contextValue.getEditor(c.info.props.id);\n if (isEditable) {\n setInitialText(text);\n setEditMode(true);\n }\n };\n\n const endEditMode = (value: string) => {\n if (!editMode) {\n return;\n }\n if (cursorColIdx == undefined) {\n console.error(`endEditMode: cursorColIdx is undefined in edit mode`);\n return;\n }\n const c = cols[cursorColIdx];\n const handler = c.info.props.onChange;\n if (cursorRowIdx == undefined) {\n console.error(`endEditMode: cursorRowIdx is undefined in edit mode`);\n return;\n }\n if (!handler) {\n console.warn(\n `onChange is not specified for editable column \"${c.info.props.id}\".`\n );\n } else {\n handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);\n }\n setEditMode(false);\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n };\n\n const cancelEditMode = () => {\n if (!editMode) {\n return;\n }\n setEditMode(false);\n if (cursorRowIdx != null && cursorColIdx != null) {\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n }\n };\n\n const {\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectAll,\n selectRows,\n unselectAll,\n onMouseDown: onRowSelectionMouseDown,\n } = useRowSelection(\n rowKeyGetter,\n sortedRowData,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n rowSelectionMode,\n onRowSelected\n );\n\n const rangeSelection = useRangeSelection(cellSelectionMode);\n\n const moveCursor = useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (!headerIsFocusable && part === \"header\") {\n console.warn(\n `Cannot move focus to the header. \"headerIsFocusable\" prop is false.`\n );\n return;\n }\n setFocusedPart(part);\n colIdx = clamp(colIdx, 0, cols.length - 1);\n if (part === \"body\") {\n if (sortedRowData.length < 1 || cols.length < 1) {\n return;\n }\n rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);\n } else if (part === \"header\") {\n rowIdx = 0; // There is only one row in the header currently\n }\n setCursorRowIdx(rowIdx);\n setCursorColIdx(colIdx);\n scrollToCell(part, rowIdx, colIdx);\n focusCellElement(part, rowIdx, colIdx);\n if (part === \"body\") {\n rangeSelection.onCursorMove({ rowIdx, colIdx });\n }\n },\n [\n setCursorRowIdx,\n setCursorColIdx,\n sortedRowData,\n rowKeyGetter,\n cols,\n rootRef.current,\n scrollToCell,\n endEditMode,\n rangeSelection.onCursorMove,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);\n\n const isLeftRaised = scrollLeft > 0;\n const isRightRaised = scrollLeft + clientMidWidth < midWidth;\n const isHeaderRaised = scrollTop > 0;\n\n const resizeColumn = useCallback(\n (colIdx: number, width: number) => {\n const col = cols[colIdx];\n col.info.onWidthChanged(width);\n },\n [cols]\n );\n\n const onResizeHandleMouseDown = useColumnResize(cols, resizeColumn);\n\n const sizingContext: SizingContext = useMemo(\n () => ({\n resizeColumn,\n rowHeight,\n onResizeHandleMouseDown,\n }),\n [resizeColumn, rowHeight, onResizeHandleMouseDown]\n );\n\n const layoutContext: LayoutContext = useMemo(\n () => ({\n totalHeight,\n totalWidth,\n clientWidth,\n clientHeight,\n }),\n [totalHeight, totalWidth]\n );\n\n const editorContext: EditorContext = useMemo(\n () => ({\n initialText,\n editMode,\n startEditMode,\n endEditMode,\n cancelEditMode,\n }),\n [editMode, startEditMode, endEditMode, cancelEditMode, initialText]\n );\n\n const [isFocused, setFocused] = useState<boolean>(false);\n\n const onFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(true);\n },\n [setFocused]\n );\n\n const onBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(false);\n },\n [setFocused]\n );\n\n const cursorContext: CursorContext = useMemo(\n () => ({\n isFocused,\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n focusedPart,\n headerIsFocusable: Boolean(headerIsFocusable),\n }),\n [\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n isFocused,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const onColumnMove: GridColumnMoveHandler = (\n columnId,\n fromIndex,\n toIndex\n ) => {\n if (onColumnMoved && fromIndex !== toIndex) {\n onColumnMoved(columnId, fromIndex, toIndex);\n }\n };\n\n const {\n dragState,\n onColumnMoveHandleMouseDown,\n activeTarget,\n onColumnMoveCancel,\n } = useColumnMove(\n columnMove,\n rootRef,\n leftCols,\n midCols,\n rightCols,\n cols,\n scrollLeft,\n clientMidWidth,\n onColumnMove\n );\n\n const columnDragContext: ColumnDragContext = useMemo(\n () => ({\n columnMove,\n onColumnMoveHandleMouseDown,\n }),\n [columnMove, onColumnMoveHandleMouseDown]\n );\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n onRowSelectionMouseDown(event);\n rangeSelection.onCellMouseDown(event);\n\n const target = event.target as HTMLElement;\n try {\n const { part, rowIndex, columnIndex } = getFocusablePosition(target);\n if (part === \"header\" && !headerIsFocusable) {\n return;\n }\n moveCursor(part, rowIndex, columnIndex);\n } catch (e) {\n // TODO\n }\n };\n\n const onKeyUp: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n const { key } = event;\n if (key === \"Shift\") {\n rangeSelection.onKeyboardRangeSelectionEnd();\n }\n },\n [rangeSelection.onKeyboardRangeSelectionEnd]\n );\n\n const editModeKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"F2\":\n case \"Enter\":\n startEditMode();\n break;\n case \"Backspace\":\n startEditMode(\"\");\n break;\n case \"Escape\":\n if (editMode) {\n cancelEditMode();\n break;\n } else {\n return false;\n }\n default:\n if (\n !editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n /^[\\w\\d ]$/.test(key)\n ) {\n startEditMode(key);\n } else {\n return false;\n }\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [startEditMode, editMode, cancelEditMode]\n );\n\n const selectionKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"Shift\":\n rangeSelection.onKeyboardRangeSelectionStart({\n rowIdx: cursorRowIdx || 0,\n colIdx: cursorColIdx || 0,\n });\n break;\n case \" \":\n if (focusedPart === \"body\") {\n if (event.ctrlKey) {\n if (cursorColIdx != undefined) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: cursorColIdx },\n end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx },\n });\n }\n } else {\n if (cursorRowIdx != undefined) {\n selectRows({\n rowIndex: cursorRowIdx,\n isRange: false,\n incremental: true,\n unselectOtherRows: !event.shiftKey,\n });\n }\n }\n break;\n } else {\n return false;\n }\n case \"a\":\n if (event.ctrlKey || event.metaKey) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: 0 },\n end: { rowIdx: sortedRowData.length, colIdx: cols.length },\n });\n selectAll();\n return true;\n } else {\n return false;\n }\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n rangeSelection.selectRange,\n rangeSelection.onKeyboardRangeSelectionStart,\n selectRows,\n selectAll,\n cursorColIdx,\n cursorRowIdx,\n sortedRowData.length,\n cols.length,\n focusedPart,\n ]\n );\n\n const clipboardKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (\n key === \"c\" &&\n (event.ctrlKey || event.metaKey) &&\n rangeSelection.selectedCellRange\n ) {\n const { start, end } = rangeSelection.selectedCellRange;\n const c = (x: number, y: number) => x - y;\n const [minRow, maxRow] = [start.rowIdx, end.rowIdx].sort(c);\n const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);\n const text: string[] = [];\n for (let r = minRow; r <= maxRow; ++r) {\n const row = sortedRowData[r];\n const rowText: string[] = [];\n for (let c = minCol; c <= maxCol; ++c) {\n const col = cols[c]!;\n const cellValue = col.info.props.getValue!(row);\n rowText.push(cellValue);\n }\n text.push(rowText.join(\"\\t\"));\n }\n navigator.clipboard.writeText(text.join(\"\\n\"));\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n [rangeSelection.selectedCellRange]\n );\n\n const pageSize = Math.max(1, visRowRng.length - 1);\n\n const navigationKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"ArrowLeft\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) - 1);\n break;\n case \"ArrowRight\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) + 1);\n break;\n case \"ArrowUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) - 1, cursorColIdx);\n }\n break;\n case \"ArrowDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) + 1, cursorColIdx);\n }\n break;\n case \"PageUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) - pageSize,\n cursorColIdx\n );\n }\n break;\n case \"PageDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) + pageSize,\n cursorColIdx\n );\n }\n break;\n case \"Home\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, 0);\n } else {\n moveCursor(focusedPart, 0, 0);\n }\n break;\n case \"End\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, cols.length - 1);\n } else {\n moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);\n }\n break;\n case \"Tab\":\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n editMode &&\n cursorColIdx != null &&\n cursorRowIdx != null\n ) {\n if (!event.shiftKey) {\n if (cursorColIdx < cols.length - 1) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);\n } else {\n if (cursorRowIdx < sortedRowData.length - 1) {\n moveCursor(focusedPart, cursorRowIdx + 1, 0);\n }\n }\n } else {\n if (cursorColIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx - 1);\n } else {\n if (cursorRowIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx - 1, cols.length - 1);\n }\n }\n }\n } else {\n return false;\n }\n break;\n case \"Enter\":\n if (\n editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey\n ) {\n if (cursorRowIdx == undefined) {\n moveCursor(focusedPart, 0, 0);\n } else {\n moveCursor(focusedPart, cursorRowIdx + 1, cursorColIdx);\n }\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n moveCursor,\n cursorRowIdx,\n cursorRowIdx,\n cols.length,\n sortedRowData.length,\n headerIsFocusable,\n pageSize,\n ]\n );\n\n const columnMoveKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (key === \"Escape\") {\n onColumnMoveCancel();\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n []\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (cursorColIdx != undefined && cursorRowIdx != undefined) {\n const column = cols[cursorColIdx];\n if (column.info.props.onKeyDown) {\n column.info.props.onKeyDown(event, cursorRowIdx);\n }\n }\n if (!event.isPropagationStopped()) {\n // each handler returns true or false\n // if the event is handled and should not be handled by anything else return true\n // if the event is not handled and we should keep trying other handlers return false\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ].find((handler) => {\n return handler(event);\n });\n }\n },\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ]\n );\n\n const selectionContext: SelectionContext = useMemo(\n () => ({\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n selectedCellRange: rangeSelection?.selectedCellRange,\n }),\n [\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n rangeSelection?.selectedCellRange,\n ]\n );\n\n useEffect(() => {\n if (onVisibleRowRangeChange) {\n onVisibleRowRangeChange(visRowRng.start, visRowRng.end);\n }\n }, [onVisibleRowRangeChange, visRowRng]);\n\n return (\n <GridContext.Provider value={contextValue}>\n <LayoutContext.Provider value={layoutContext}>\n <SelectionContext.Provider value={selectionContext}>\n <ColumnDragContext.Provider value={columnDragContext}>\n <CursorContext.Provider value={cursorContext}>\n <SizingContext.Provider value={sizingContext}>\n <EditorContext.Provider value={editorContext}>\n <ColumnDataContext.Provider value={columnDataContext}>\n <ColumnSortContext.Provider value={columnSortContext}>\n {props.children}\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"columnSeparators\")]:\n columnSeparators,\n [withBaseName(\"pinnedSeparators\")]:\n pinnedSeparators,\n [withBaseName(\"primaryBackground\")]:\n variant === \"primary\",\n [withBaseName(\"secondaryBackground\")]:\n variant === \"secondary\",\n },\n className\n )}\n style={rootStyle}\n ref={rootRef}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={onBlur}\n data-name=\"grid-root\"\n role=\"grid\"\n aria-colcount={cols.length}\n aria-rowcount={rowCount + headRowCount}\n aria-multiselectable={rowSelectionMode === \"multi\"}\n >\n <CellMeasure setRowHeight={setRowHeight} />\n <Scrollable\n resizeClient={resizeClient}\n scrollLeft={scrollLeft}\n scrollTop={scrollTop}\n scrollSource={scrollSource}\n scroll={scroll}\n scrollerRef={scrollableRef}\n topRef={topRef}\n rightRef={rightRef}\n bottomRef={bottomRef}\n leftRef={leftRef}\n middleRef={middleRef}\n />\n {!hideHeader && leftCols.length > 0 && (\n <TopLeftPart\n onWheel={onWheel}\n columns={leftCols}\n columnGroups={leftGroups}\n rightShadow={isLeftRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && (\n <TopPart\n columns={headVisibleColumns}\n columnGroups={visColGrps}\n topRef={topRef}\n onWheel={onWheel}\n midGap={midGap}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && rightCols.length > 0 && (\n <TopRightPart\n onWheel={onWheel}\n columns={rightCols}\n columnGroups={rightGroups}\n leftShadow={isRightRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {leftCols.length > 0 && (\n <LeftPart\n leftRef={leftRef}\n onWheel={onWheel}\n columns={leftCols}\n rows={rows}\n rightShadow={isLeftRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <MiddlePart\n middleRef={middleRef}\n onWheel={onWheel}\n columns={bodyVisibleColumns}\n rows={rows}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n midGap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n {rightCols.length > 0 && (\n <RightPart\n rightRef={rightRef}\n onWheel={onWheel}\n columns={rightCols}\n rows={rows}\n leftShadow={isRightRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <ColumnDropTarget x={activeTarget?.x} />\n <ColumnGhost\n columns={cols}\n rows={rows}\n dragState={dragState}\n zebra={zebra}\n />\n </div>\n </ColumnSortContext.Provider>\n </ColumnDataContext.Provider>\n </EditorContext.Provider>\n </SizingContext.Provider>\n </CursorContext.Provider>\n </ColumnDragContext.Provider>\n </SelectionContext.Provider>\n </LayoutContext.Provider>\n </GridContext.Provider>\n );\n};\n"],"names":["SortOrder","Grid","_a","c"],"mappings":"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"}