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

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 (457) hide show
  1. package/dist-cjs/BaseCell.css.js +6 -0
  2. package/{dist-es/packages/grid/src → dist-cjs}/BaseCell.css.js.map +1 -1
  3. package/dist-cjs/{packages/grid/src/BaseCell.js → BaseCell.js} +44 -5
  4. package/dist-cjs/BaseCell.js.map +1 -0
  5. package/dist-cjs/{packages/grid/src/CheckboxCell.css.js → CheckboxCell.css.js} +0 -3
  6. package/{dist-es/packages/grid/src → dist-cjs}/CheckboxCell.css.js.map +1 -1
  7. package/dist-cjs/ColumnSortContext.js +20 -0
  8. package/dist-cjs/ColumnSortContext.js.map +1 -0
  9. package/dist-cjs/{packages/grid/src/CornerTag.css.js → CornerTag.css.js} +0 -3
  10. package/{dist-es/packages/grid/src → dist-cjs}/CornerTag.css.js.map +1 -1
  11. package/dist-cjs/{packages/grid/src/CornerTag.js → CornerTag.js} +9 -1
  12. package/dist-cjs/CornerTag.js.map +1 -0
  13. package/dist-cjs/{packages/grid/src/DropdownCellEditor.css.js → DropdownCellEditor.css.js} +0 -3
  14. package/{dist-es/packages/grid/src → dist-cjs}/DropdownCellEditor.css.js.map +1 -1
  15. package/dist-cjs/{packages/grid/src/DropdownCellEditor.js → DropdownCellEditor.js} +19 -6
  16. package/dist-cjs/DropdownCellEditor.js.map +1 -0
  17. package/dist-cjs/Grid.css.js +6 -0
  18. package/{dist-es/packages/grid/src → dist-cjs}/Grid.css.js.map +1 -1
  19. package/dist-cjs/{packages/grid/src/Grid.js → Grid.js} +222 -131
  20. package/dist-cjs/Grid.js.map +1 -0
  21. package/dist-cjs/GridColumn.js.map +1 -0
  22. package/dist-cjs/{packages/grid/src/GroupHeaderCell.css.js → GroupHeaderCell.css.js} +0 -3
  23. package/{dist-es/packages/grid/src → dist-cjs}/GroupHeaderCell.css.js.map +1 -1
  24. package/dist-cjs/{packages/grid/src/GroupHeaderCell.js → GroupHeaderCell.js} +9 -1
  25. package/dist-cjs/GroupHeaderCell.js.map +1 -0
  26. package/dist-cjs/HeaderCell.css.js +6 -0
  27. package/{dist-es/packages/grid/src → dist-cjs}/HeaderCell.css.js.map +1 -1
  28. package/dist-cjs/{packages/grid/src/HeaderCell.js → HeaderCell.js} +76 -5
  29. package/dist-cjs/HeaderCell.js.map +1 -0
  30. package/dist-cjs/NumberRange.js.map +1 -0
  31. package/dist-cjs/{packages/grid/src/NumericColumn.css.js → NumericColumn.css.js} +0 -3
  32. package/{dist-es/packages/grid/src → dist-cjs}/NumericColumn.css.js.map +1 -1
  33. package/dist-cjs/{packages/grid/src/NumericColumn.js → NumericColumn.js} +10 -3
  34. package/dist-cjs/NumericColumn.js.map +1 -0
  35. package/dist-cjs/{packages/grid/src/RowSelectionCheckboxCellValue.js → RowSelectionCheckboxCellValue.js} +9 -1
  36. package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -0
  37. package/dist-cjs/{packages/grid/src/RowSelectionCheckboxColumn.js → RowSelectionCheckboxColumn.js} +14 -7
  38. package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -0
  39. package/dist-cjs/{packages/grid/src/RowSelectionCheckboxHeaderCellValue.js → RowSelectionCheckboxHeaderCellValue.js} +10 -2
  40. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  41. package/dist-cjs/{packages/grid/src/RowSelectionRadioCellValue.js → RowSelectionRadioCellValue.js} +9 -1
  42. package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -0
  43. package/dist-cjs/{packages/grid/src/RowSelectionRadioColumn.js → RowSelectionRadioColumn.js} +11 -7
  44. package/dist-cjs/RowSelectionRadioColumn.js.map +1 -0
  45. package/dist-cjs/{packages/grid/src/RowSelectionRadioHeaderCell.js → RowSelectionRadioHeaderCell.js} +11 -3
  46. package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -0
  47. package/dist-cjs/RowValidationStatus.js +13 -0
  48. package/dist-cjs/RowValidationStatus.js.map +1 -0
  49. package/dist-cjs/{packages/grid/src/TextCellEditor.css.js → TextCellEditor.css.js} +0 -3
  50. package/{dist-es/packages/grid/src → dist-cjs}/TextCellEditor.css.js.map +1 -1
  51. package/dist-cjs/{packages/grid/src/TextCellEditor.js → TextCellEditor.js} +9 -2
  52. package/dist-cjs/TextCellEditor.js.map +1 -0
  53. package/dist-cjs/{packages/grid/src/index.js → index.js} +1 -0
  54. package/dist-cjs/{packages/grid/src/index.js.map → index.js.map} +1 -1
  55. package/dist-cjs/internal/Cell.css.js +6 -0
  56. package/{dist-es/packages/grid/src → dist-cjs}/internal/Cell.css.js.map +1 -1
  57. package/dist-cjs/{packages/grid/src/internal → internal}/Cell.js +9 -1
  58. package/dist-cjs/internal/Cell.js.map +1 -0
  59. package/dist-cjs/{packages/grid/src/internal → internal}/CellMeasure.css.js +0 -3
  60. package/{dist-es/packages/grid/src → dist-cjs}/internal/CellMeasure.css.js.map +1 -1
  61. package/dist-cjs/{packages/grid/src/internal → internal}/CellMeasure.js +9 -1
  62. package/dist-cjs/internal/CellMeasure.js.map +1 -0
  63. package/dist-cjs/internal/CellStatusIcons.js +46 -0
  64. package/dist-cjs/internal/CellStatusIcons.js.map +1 -0
  65. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnDropTarget.css.js +0 -3
  66. package/{dist-es/packages/grid/src → dist-cjs}/internal/ColumnDropTarget.css.js.map +1 -1
  67. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnDropTarget.js +9 -1
  68. package/dist-cjs/internal/ColumnDropTarget.js.map +1 -0
  69. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnGhost.css.js +0 -3
  70. package/{dist-es/packages/grid/src → dist-cjs}/internal/ColumnGhost.css.js.map +1 -1
  71. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnGhost.js +10 -2
  72. package/dist-cjs/internal/ColumnGhost.js.map +1 -0
  73. package/dist-cjs/{packages/grid/src/internal → internal}/Cursor.css.js +0 -3
  74. package/{dist-es/packages/grid/src → dist-cjs}/internal/Cursor.css.js.map +1 -1
  75. package/dist-cjs/{packages/grid/src/internal → internal}/Cursor.js +9 -1
  76. package/dist-cjs/internal/Cursor.js.map +1 -0
  77. package/dist-cjs/{packages/grid/src/internal → internal}/DefaultCellValue.css.js +0 -3
  78. package/{dist-es/packages/grid/src → dist-cjs}/internal/DefaultCellValue.css.js.map +1 -1
  79. package/dist-cjs/{packages/grid/src/internal → internal}/DefaultCellValue.js +9 -1
  80. package/dist-cjs/internal/DefaultCellValue.js.map +1 -0
  81. package/dist-cjs/{packages/grid/src/internal → internal}/FakeCell.css.js +0 -3
  82. package/{dist-es/packages/grid/src → dist-cjs}/internal/FakeCell.css.js.map +1 -1
  83. package/dist-cjs/{packages/grid/src/internal → internal}/FakeCell.js +9 -1
  84. package/dist-cjs/internal/FakeCell.js.map +1 -0
  85. package/dist-cjs/{packages/grid/src/internal → internal}/GroupHeaderRow.css.js +0 -3
  86. package/{dist-es/packages/grid/src → dist-cjs}/internal/GroupHeaderRow.css.js.map +1 -1
  87. package/dist-cjs/{packages/grid/src/internal → internal}/GroupHeaderRow.js +11 -3
  88. package/dist-cjs/internal/GroupHeaderRow.js.map +1 -0
  89. package/dist-cjs/{packages/grid/src/internal → internal}/HeaderRow.css.js +0 -3
  90. package/{dist-es/packages/grid/src → dist-cjs}/internal/HeaderRow.css.js.map +1 -1
  91. package/dist-cjs/{packages/grid/src/internal → internal}/HeaderRow.js +10 -2
  92. package/dist-cjs/internal/HeaderRow.js.map +1 -0
  93. package/dist-cjs/{packages/grid/src/internal → internal}/LeftPart.css.js +0 -3
  94. package/{dist-es/packages/grid/src → dist-cjs}/internal/LeftPart.css.js.map +1 -1
  95. package/dist-cjs/{packages/grid/src/internal → internal}/LeftPart.js +15 -5
  96. package/dist-cjs/internal/LeftPart.js.map +1 -0
  97. package/dist-cjs/{packages/grid/src/internal → internal}/MiddlePart.css.js +0 -3
  98. package/{dist-es/packages/grid/src → dist-cjs}/internal/MiddlePart.css.js.map +1 -1
  99. package/dist-cjs/{packages/grid/src/internal → internal}/MiddlePart.js +14 -4
  100. package/dist-cjs/internal/MiddlePart.js.map +1 -0
  101. package/dist-cjs/{packages/grid/src/internal → internal}/RightPart.css.js +0 -3
  102. package/{dist-es/packages/grid/src → dist-cjs}/internal/RightPart.css.js.map +1 -1
  103. package/dist-cjs/{packages/grid/src/internal → internal}/RightPart.js +15 -5
  104. package/dist-cjs/internal/RightPart.js.map +1 -0
  105. package/dist-cjs/{packages/grid/src/internal → internal}/Scrollable.css.js +0 -3
  106. package/{dist-es/packages/grid/src → dist-cjs}/internal/Scrollable.css.js.map +1 -1
  107. package/dist-cjs/{packages/grid/src/internal → internal}/Scrollable.js +10 -2
  108. package/dist-cjs/internal/Scrollable.js.map +1 -0
  109. package/dist-cjs/{packages/grid/src/internal → internal}/TableBody.js +12 -5
  110. package/dist-cjs/internal/TableBody.js.map +1 -0
  111. package/dist-cjs/internal/TableRow.css.js +6 -0
  112. package/{dist-es/packages/grid/src → dist-cjs}/internal/TableRow.css.js.map +1 -1
  113. package/dist-cjs/{packages/grid/src/internal → internal}/TableRow.js +45 -16
  114. package/dist-cjs/internal/TableRow.js.map +1 -0
  115. package/dist-cjs/{packages/grid/src/internal → internal}/TopLeftPart.css.js +0 -3
  116. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopLeftPart.css.js.map +1 -1
  117. package/dist-cjs/{packages/grid/src/internal → internal}/TopLeftPart.js +12 -4
  118. package/dist-cjs/internal/TopLeftPart.js.map +1 -0
  119. package/dist-cjs/{packages/grid/src/internal → internal}/TopPart.css.js +0 -3
  120. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopPart.css.js.map +1 -1
  121. package/dist-cjs/{packages/grid/src/internal → internal}/TopPart.js +11 -3
  122. package/dist-cjs/internal/TopPart.js.map +1 -0
  123. package/dist-cjs/{packages/grid/src/internal → internal}/TopRightPart.css.js +0 -3
  124. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopRightPart.css.js.map +1 -1
  125. package/dist-cjs/{packages/grid/src/internal → internal}/TopRightPart.js +10 -2
  126. package/dist-cjs/internal/TopRightPart.js.map +1 -0
  127. package/dist-cjs/{packages/grid/src/internal → internal}/gridHooks.js +3 -0
  128. package/dist-cjs/internal/gridHooks.js.map +1 -0
  129. package/dist-es/BaseCell.css.js +4 -0
  130. package/{dist-cjs/packages/grid/src → dist-es}/BaseCell.css.js.map +1 -1
  131. package/dist-es/{packages/grid/src/BaseCell.js → BaseCell.js} +44 -5
  132. package/dist-es/BaseCell.js.map +1 -0
  133. package/dist-es/{packages/grid/src/CheckboxCell.css.js → CheckboxCell.css.js} +0 -3
  134. package/{dist-cjs/packages/grid/src → dist-es}/CheckboxCell.css.js.map +1 -1
  135. package/dist-es/ColumnSortContext.js +15 -0
  136. package/dist-es/ColumnSortContext.js.map +1 -0
  137. package/dist-es/{packages/grid/src/CornerTag.css.js → CornerTag.css.js} +0 -3
  138. package/{dist-cjs/packages/grid/src → dist-es}/CornerTag.css.js.map +1 -1
  139. package/dist-es/CornerTag.js +19 -0
  140. package/dist-es/CornerTag.js.map +1 -0
  141. package/dist-es/{packages/grid/src/DropdownCellEditor.css.js → DropdownCellEditor.css.js} +0 -3
  142. package/{dist-cjs/packages/grid/src → dist-es}/DropdownCellEditor.css.js.map +1 -1
  143. package/dist-es/{packages/grid/src/DropdownCellEditor.js → DropdownCellEditor.js} +19 -6
  144. package/dist-es/DropdownCellEditor.js.map +1 -0
  145. package/dist-es/Grid.css.js +4 -0
  146. package/{dist-cjs/packages/grid/src → dist-es}/Grid.css.js.map +1 -1
  147. package/dist-es/{packages/grid/src/Grid.js → Grid.js} +222 -132
  148. package/dist-es/Grid.js.map +1 -0
  149. package/dist-es/GridColumn.js.map +1 -0
  150. package/dist-es/{packages/grid/src/GroupHeaderCell.css.js → GroupHeaderCell.css.js} +0 -3
  151. package/{dist-cjs/packages/grid/src → dist-es}/GroupHeaderCell.css.js.map +1 -1
  152. package/dist-es/{packages/grid/src/GroupHeaderCell.js → GroupHeaderCell.js} +9 -1
  153. package/dist-es/GroupHeaderCell.js.map +1 -0
  154. package/dist-es/HeaderCell.css.js +4 -0
  155. package/{dist-cjs/packages/grid/src → dist-es}/HeaderCell.css.js.map +1 -1
  156. package/dist-es/{packages/grid/src/HeaderCell.js → HeaderCell.js} +76 -5
  157. package/dist-es/HeaderCell.js.map +1 -0
  158. package/dist-es/NumberRange.js.map +1 -0
  159. package/dist-es/{packages/grid/src/NumericColumn.css.js → NumericColumn.css.js} +0 -3
  160. package/{dist-cjs/packages/grid/src → dist-es}/NumericColumn.css.js.map +1 -1
  161. package/dist-es/{packages/grid/src/NumericColumn.js → NumericColumn.js} +10 -3
  162. package/dist-es/NumericColumn.js.map +1 -0
  163. package/dist-es/{packages/grid/src/RowSelectionCheckboxCellValue.js → RowSelectionCheckboxCellValue.js} +9 -1
  164. package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -0
  165. package/dist-es/{packages/grid/src/RowSelectionCheckboxColumn.js → RowSelectionCheckboxColumn.js} +14 -7
  166. package/dist-es/RowSelectionCheckboxColumn.js.map +1 -0
  167. package/dist-es/{packages/grid/src/RowSelectionCheckboxHeaderCellValue.js → RowSelectionCheckboxHeaderCellValue.js} +10 -2
  168. package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  169. package/dist-es/{packages/grid/src/RowSelectionRadioCellValue.js → RowSelectionRadioCellValue.js} +9 -1
  170. package/dist-es/RowSelectionRadioCellValue.js.map +1 -0
  171. package/dist-es/{packages/grid/src/RowSelectionRadioColumn.js → RowSelectionRadioColumn.js} +11 -7
  172. package/dist-es/RowSelectionRadioColumn.js.map +1 -0
  173. package/dist-es/{packages/grid/src/RowSelectionRadioHeaderCell.js → RowSelectionRadioHeaderCell.js} +11 -3
  174. package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -0
  175. package/dist-es/RowValidationStatus.js +9 -0
  176. package/dist-es/RowValidationStatus.js.map +1 -0
  177. package/dist-es/{packages/grid/src/TextCellEditor.css.js → TextCellEditor.css.js} +0 -3
  178. package/{dist-cjs/packages/grid/src → dist-es}/TextCellEditor.css.js.map +1 -1
  179. package/dist-es/{packages/grid/src/TextCellEditor.js → TextCellEditor.js} +9 -2
  180. package/dist-es/TextCellEditor.js.map +1 -0
  181. package/dist-es/{packages/grid/src/index.js → index.js} +1 -1
  182. package/dist-es/internal/Cell.css.js +4 -0
  183. package/{dist-cjs/packages/grid/src → dist-es}/internal/Cell.css.js.map +1 -1
  184. package/dist-es/{packages/grid/src/internal → internal}/Cell.js +9 -1
  185. package/dist-es/internal/Cell.js.map +1 -0
  186. package/dist-es/{packages/grid/src/internal → internal}/CellMeasure.css.js +0 -3
  187. package/{dist-cjs/packages/grid/src → dist-es}/internal/CellMeasure.css.js.map +1 -1
  188. package/dist-es/{packages/grid/src/internal → internal}/CellMeasure.js +9 -1
  189. package/dist-es/internal/CellMeasure.js.map +1 -0
  190. package/dist-es/internal/CellStatusIcons.js +40 -0
  191. package/dist-es/internal/CellStatusIcons.js.map +1 -0
  192. package/dist-es/{packages/grid/src/internal → internal}/ColumnDropTarget.css.js +0 -3
  193. package/{dist-cjs/packages/grid/src → dist-es}/internal/ColumnDropTarget.css.js.map +1 -1
  194. package/dist-es/{packages/grid/src/internal → internal}/ColumnDropTarget.js +9 -1
  195. package/dist-es/internal/ColumnDropTarget.js.map +1 -0
  196. package/dist-es/{packages/grid/src/internal → internal}/ColumnGhost.css.js +0 -3
  197. package/{dist-cjs/packages/grid/src → dist-es}/internal/ColumnGhost.css.js.map +1 -1
  198. package/dist-es/{packages/grid/src/internal → internal}/ColumnGhost.js +10 -2
  199. package/dist-es/internal/ColumnGhost.js.map +1 -0
  200. package/dist-es/{packages/grid/src/internal → internal}/Cursor.css.js +0 -3
  201. package/{dist-cjs/packages/grid/src → dist-es}/internal/Cursor.css.js.map +1 -1
  202. package/dist-es/{packages/grid/src/internal → internal}/Cursor.js +9 -1
  203. package/dist-es/internal/Cursor.js.map +1 -0
  204. package/dist-es/{packages/grid/src/internal → internal}/DefaultCellValue.css.js +0 -3
  205. package/{dist-cjs/packages/grid/src → dist-es}/internal/DefaultCellValue.css.js.map +1 -1
  206. package/dist-es/{packages/grid/src/internal → internal}/DefaultCellValue.js +9 -1
  207. package/dist-es/internal/DefaultCellValue.js.map +1 -0
  208. package/dist-es/{packages/grid/src/internal → internal}/FakeCell.css.js +0 -3
  209. package/{dist-cjs/packages/grid/src → dist-es}/internal/FakeCell.css.js.map +1 -1
  210. package/dist-es/{packages/grid/src/internal → internal}/FakeCell.js +9 -1
  211. package/dist-es/internal/FakeCell.js.map +1 -0
  212. package/dist-es/{packages/grid/src/internal → internal}/GroupHeaderRow.css.js +0 -3
  213. package/{dist-cjs/packages/grid/src → dist-es}/internal/GroupHeaderRow.css.js.map +1 -1
  214. package/dist-es/{packages/grid/src/internal → internal}/GroupHeaderRow.js +11 -3
  215. package/dist-es/internal/GroupHeaderRow.js.map +1 -0
  216. package/dist-es/{packages/grid/src/internal → internal}/HeaderRow.css.js +0 -3
  217. package/{dist-cjs/packages/grid/src → dist-es}/internal/HeaderRow.css.js.map +1 -1
  218. package/dist-es/{packages/grid/src/internal → internal}/HeaderRow.js +10 -2
  219. package/dist-es/internal/HeaderRow.js.map +1 -0
  220. package/dist-es/{packages/grid/src/internal → internal}/LeftPart.css.js +0 -3
  221. package/{dist-cjs/packages/grid/src → dist-es}/internal/LeftPart.css.js.map +1 -1
  222. package/dist-es/{packages/grid/src/internal → internal}/LeftPart.js +15 -5
  223. package/dist-es/internal/LeftPart.js.map +1 -0
  224. package/dist-es/{packages/grid/src/internal → internal}/MiddlePart.css.js +0 -3
  225. package/{dist-cjs/packages/grid/src → dist-es}/internal/MiddlePart.css.js.map +1 -1
  226. package/dist-es/{packages/grid/src/internal → internal}/MiddlePart.js +14 -4
  227. package/dist-es/internal/MiddlePart.js.map +1 -0
  228. package/dist-es/{packages/grid/src/internal → internal}/RightPart.css.js +0 -3
  229. package/{dist-cjs/packages/grid/src → dist-es}/internal/RightPart.css.js.map +1 -1
  230. package/dist-es/{packages/grid/src/internal → internal}/RightPart.js +15 -5
  231. package/dist-es/internal/RightPart.js.map +1 -0
  232. package/dist-es/{packages/grid/src/internal → internal}/Scrollable.css.js +0 -3
  233. package/{dist-cjs/packages/grid/src → dist-es}/internal/Scrollable.css.js.map +1 -1
  234. package/dist-es/{packages/grid/src/internal → internal}/Scrollable.js +10 -2
  235. package/dist-es/internal/Scrollable.js.map +1 -0
  236. package/dist-es/{packages/grid/src/internal → internal}/TableBody.js +12 -5
  237. package/dist-es/internal/TableBody.js.map +1 -0
  238. package/dist-es/internal/TableRow.css.js +4 -0
  239. package/{dist-cjs/packages/grid/src → dist-es}/internal/TableRow.css.js.map +1 -1
  240. package/dist-es/{packages/grid/src/internal → internal}/TableRow.js +45 -16
  241. package/dist-es/internal/TableRow.js.map +1 -0
  242. package/dist-es/{packages/grid/src/internal → internal}/TopLeftPart.css.js +0 -3
  243. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopLeftPart.css.js.map +1 -1
  244. package/dist-es/{packages/grid/src/internal → internal}/TopLeftPart.js +12 -4
  245. package/dist-es/internal/TopLeftPart.js.map +1 -0
  246. package/dist-es/{packages/grid/src/internal → internal}/TopPart.css.js +0 -3
  247. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopPart.css.js.map +1 -1
  248. package/dist-es/{packages/grid/src/internal → internal}/TopPart.js +11 -3
  249. package/dist-es/internal/TopPart.js.map +1 -0
  250. package/dist-es/{packages/grid/src/internal → internal}/TopRightPart.css.js +0 -3
  251. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopRightPart.css.js.map +1 -1
  252. package/dist-es/{packages/grid/src/internal → internal}/TopRightPart.js +10 -2
  253. package/dist-es/internal/TopRightPart.js.map +1 -0
  254. package/dist-es/{packages/grid/src/internal → internal}/gridHooks.js +4 -1
  255. package/dist-es/internal/gridHooks.js.map +1 -0
  256. package/dist-types/BaseCell.d.ts +0 -2
  257. package/dist-types/ColumnDataContext.d.ts +0 -1
  258. package/dist-types/ColumnSortContext.d.ts +12 -0
  259. package/dist-types/CornerTag.d.ts +0 -2
  260. package/dist-types/CursorContext.d.ts +0 -1
  261. package/dist-types/DropdownCellEditor.d.ts +1 -3
  262. package/dist-types/EditorContext.d.ts +0 -1
  263. package/dist-types/Grid.d.ts +7 -2
  264. package/dist-types/GridColumn.d.ts +54 -2
  265. package/dist-types/GridContext.d.ts +0 -1
  266. package/dist-types/GroupHeaderCell.d.ts +1 -2
  267. package/dist-types/GroupHeaderCellValue.d.ts +0 -1
  268. package/dist-types/HeaderCell.d.ts +0 -2
  269. package/dist-types/HeaderCellValue.d.ts +0 -1
  270. package/dist-types/LayoutContext.d.ts +0 -1
  271. package/dist-types/NumericColumn.d.ts +1 -2
  272. package/dist-types/RowSelectionCheckboxCellValue.d.ts +0 -2
  273. package/dist-types/RowSelectionCheckboxColumn.d.ts +0 -1
  274. package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +0 -2
  275. package/dist-types/RowSelectionRadioCellValue.d.ts +0 -2
  276. package/dist-types/RowSelectionRadioColumn.d.ts +0 -1
  277. package/dist-types/RowSelectionRadioHeaderCell.d.ts +0 -2
  278. package/dist-types/RowValidationStatus.d.ts +6 -0
  279. package/dist-types/SelectionContext.d.ts +0 -1
  280. package/dist-types/TextCellEditor.d.ts +0 -2
  281. package/dist-types/internal/Cell.d.ts +0 -1
  282. package/dist-types/internal/CellMeasure.d.ts +0 -2
  283. package/dist-types/internal/CellStatusIcons.d.ts +3 -0
  284. package/dist-types/internal/ColumnDropTarget.d.ts +0 -2
  285. package/dist-types/internal/ColumnGhost.d.ts +1 -3
  286. package/dist-types/internal/Cursor.d.ts +0 -2
  287. package/dist-types/internal/DefaultCellValue.d.ts +0 -2
  288. package/dist-types/internal/FakeCell.d.ts +0 -2
  289. package/dist-types/internal/FakeGroupCell.d.ts +0 -1
  290. package/dist-types/internal/FakeHeaderCell.d.ts +0 -1
  291. package/dist-types/internal/GroupHeaderRow.d.ts +0 -2
  292. package/dist-types/internal/HeaderRow.d.ts +0 -2
  293. package/dist-types/internal/LeftPart.d.ts +2 -1
  294. package/dist-types/internal/MiddlePart.d.ts +2 -1
  295. package/dist-types/internal/RightPart.d.ts +2 -1
  296. package/dist-types/internal/Scrollable.d.ts +0 -1
  297. package/dist-types/internal/TableBody.d.ts +2 -1
  298. package/dist-types/internal/TableColGroup.d.ts +0 -1
  299. package/dist-types/internal/TableRow.d.ts +2 -2
  300. package/dist-types/internal/TopLeftPart.d.ts +0 -2
  301. package/dist-types/internal/TopPart.d.ts +0 -1
  302. package/dist-types/internal/TopRightPart.d.ts +0 -2
  303. package/package.json +24 -22
  304. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +0 -31
  305. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  306. package/dist-cjs/packages/grid/src/BaseCell.css.js +0 -9
  307. package/dist-cjs/packages/grid/src/BaseCell.js.map +0 -1
  308. package/dist-cjs/packages/grid/src/CornerTag.js.map +0 -1
  309. package/dist-cjs/packages/grid/src/DropdownCellEditor.js.map +0 -1
  310. package/dist-cjs/packages/grid/src/Grid.css.js +0 -9
  311. package/dist-cjs/packages/grid/src/Grid.js.map +0 -1
  312. package/dist-cjs/packages/grid/src/GridColumn.js.map +0 -1
  313. package/dist-cjs/packages/grid/src/GroupHeaderCell.js.map +0 -1
  314. package/dist-cjs/packages/grid/src/HeaderCell.css.js +0 -9
  315. package/dist-cjs/packages/grid/src/HeaderCell.js.map +0 -1
  316. package/dist-cjs/packages/grid/src/NumberRange.js.map +0 -1
  317. package/dist-cjs/packages/grid/src/NumericColumn.js.map +0 -1
  318. package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js.map +0 -1
  319. package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js.map +0 -1
  320. package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -1
  321. package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js.map +0 -1
  322. package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js.map +0 -1
  323. package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js.map +0 -1
  324. package/dist-cjs/packages/grid/src/TextCellEditor.js.map +0 -1
  325. package/dist-cjs/packages/grid/src/internal/Cell.css.js +0 -9
  326. package/dist-cjs/packages/grid/src/internal/Cell.js.map +0 -1
  327. package/dist-cjs/packages/grid/src/internal/CellMeasure.js.map +0 -1
  328. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js.map +0 -1
  329. package/dist-cjs/packages/grid/src/internal/ColumnGhost.js.map +0 -1
  330. package/dist-cjs/packages/grid/src/internal/Cursor.js.map +0 -1
  331. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js.map +0 -1
  332. package/dist-cjs/packages/grid/src/internal/FakeCell.js.map +0 -1
  333. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js.map +0 -1
  334. package/dist-cjs/packages/grid/src/internal/HeaderRow.js.map +0 -1
  335. package/dist-cjs/packages/grid/src/internal/LeftPart.js.map +0 -1
  336. package/dist-cjs/packages/grid/src/internal/MiddlePart.js.map +0 -1
  337. package/dist-cjs/packages/grid/src/internal/RightPart.js.map +0 -1
  338. package/dist-cjs/packages/grid/src/internal/Scrollable.js.map +0 -1
  339. package/dist-cjs/packages/grid/src/internal/TableBody.js.map +0 -1
  340. package/dist-cjs/packages/grid/src/internal/TableRow.css.js +0 -9
  341. package/dist-cjs/packages/grid/src/internal/TableRow.js.map +0 -1
  342. package/dist-cjs/packages/grid/src/internal/TopLeftPart.js.map +0 -1
  343. package/dist-cjs/packages/grid/src/internal/TopPart.js.map +0 -1
  344. package/dist-cjs/packages/grid/src/internal/TopRightPart.js.map +0 -1
  345. package/dist-cjs/packages/grid/src/internal/gridHooks.js.map +0 -1
  346. package/dist-es/node_modules/style-inject/dist/style-inject.es.js +0 -29
  347. package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  348. package/dist-es/packages/grid/src/BaseCell.css.js +0 -7
  349. package/dist-es/packages/grid/src/BaseCell.js.map +0 -1
  350. package/dist-es/packages/grid/src/CornerTag.js +0 -11
  351. package/dist-es/packages/grid/src/CornerTag.js.map +0 -1
  352. package/dist-es/packages/grid/src/DropdownCellEditor.js.map +0 -1
  353. package/dist-es/packages/grid/src/Grid.css.js +0 -7
  354. package/dist-es/packages/grid/src/Grid.js.map +0 -1
  355. package/dist-es/packages/grid/src/GridColumn.js.map +0 -1
  356. package/dist-es/packages/grid/src/GroupHeaderCell.js.map +0 -1
  357. package/dist-es/packages/grid/src/HeaderCell.css.js +0 -7
  358. package/dist-es/packages/grid/src/HeaderCell.js.map +0 -1
  359. package/dist-es/packages/grid/src/NumberRange.js.map +0 -1
  360. package/dist-es/packages/grid/src/NumericColumn.js.map +0 -1
  361. package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js.map +0 -1
  362. package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js.map +0 -1
  363. package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -1
  364. package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js.map +0 -1
  365. package/dist-es/packages/grid/src/RowSelectionRadioColumn.js.map +0 -1
  366. package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js.map +0 -1
  367. package/dist-es/packages/grid/src/TextCellEditor.js.map +0 -1
  368. package/dist-es/packages/grid/src/internal/Cell.css.js +0 -7
  369. package/dist-es/packages/grid/src/internal/Cell.js.map +0 -1
  370. package/dist-es/packages/grid/src/internal/CellMeasure.js.map +0 -1
  371. package/dist-es/packages/grid/src/internal/ColumnDropTarget.js.map +0 -1
  372. package/dist-es/packages/grid/src/internal/ColumnGhost.js.map +0 -1
  373. package/dist-es/packages/grid/src/internal/Cursor.js.map +0 -1
  374. package/dist-es/packages/grid/src/internal/DefaultCellValue.js.map +0 -1
  375. package/dist-es/packages/grid/src/internal/FakeCell.js.map +0 -1
  376. package/dist-es/packages/grid/src/internal/GroupHeaderRow.js.map +0 -1
  377. package/dist-es/packages/grid/src/internal/HeaderRow.js.map +0 -1
  378. package/dist-es/packages/grid/src/internal/LeftPart.js.map +0 -1
  379. package/dist-es/packages/grid/src/internal/MiddlePart.js.map +0 -1
  380. package/dist-es/packages/grid/src/internal/RightPart.js.map +0 -1
  381. package/dist-es/packages/grid/src/internal/Scrollable.js.map +0 -1
  382. package/dist-es/packages/grid/src/internal/TableBody.js.map +0 -1
  383. package/dist-es/packages/grid/src/internal/TableRow.css.js +0 -7
  384. package/dist-es/packages/grid/src/internal/TableRow.js.map +0 -1
  385. package/dist-es/packages/grid/src/internal/TopLeftPart.js.map +0 -1
  386. package/dist-es/packages/grid/src/internal/TopPart.js.map +0 -1
  387. package/dist-es/packages/grid/src/internal/TopRightPart.js.map +0 -1
  388. package/dist-es/packages/grid/src/internal/gridHooks.js.map +0 -1
  389. package/dist-cjs/{packages/grid/src/CellEditor.js → CellEditor.js} +0 -0
  390. package/dist-cjs/{packages/grid/src/CellEditor.js.map → CellEditor.js.map} +0 -0
  391. package/dist-cjs/{packages/grid/src/ColumnDataContext.js → ColumnDataContext.js} +0 -0
  392. package/dist-cjs/{packages/grid/src/ColumnDataContext.js.map → ColumnDataContext.js.map} +0 -0
  393. package/dist-cjs/{packages/grid/src/ColumnDragContext.js → ColumnDragContext.js} +0 -0
  394. package/dist-cjs/{packages/grid/src/ColumnDragContext.js.map → ColumnDragContext.js.map} +0 -0
  395. package/dist-cjs/{packages/grid/src/ColumnGroup.js → ColumnGroup.js} +0 -0
  396. package/dist-cjs/{packages/grid/src/ColumnGroup.js.map → ColumnGroup.js.map} +0 -0
  397. package/dist-cjs/{packages/grid/src/CursorContext.js → CursorContext.js} +0 -0
  398. package/dist-cjs/{packages/grid/src/CursorContext.js.map → CursorContext.js.map} +0 -0
  399. package/dist-cjs/{packages/grid/src/EditorContext.js → EditorContext.js} +0 -0
  400. package/dist-cjs/{packages/grid/src/EditorContext.js.map → EditorContext.js.map} +0 -0
  401. package/dist-cjs/{packages/grid/src/GridColumn.js → GridColumn.js} +1 -1
  402. package/dist-cjs/{packages/grid/src/GridContext.js → GridContext.js} +0 -0
  403. package/dist-cjs/{packages/grid/src/GridContext.js.map → GridContext.js.map} +0 -0
  404. package/dist-cjs/{packages/grid/src/GroupHeaderCellValue.js → GroupHeaderCellValue.js} +0 -0
  405. package/dist-cjs/{packages/grid/src/GroupHeaderCellValue.js.map → GroupHeaderCellValue.js.map} +0 -0
  406. package/dist-cjs/{packages/grid/src/HeaderCellValue.js → HeaderCellValue.js} +0 -0
  407. package/dist-cjs/{packages/grid/src/HeaderCellValue.js.map → HeaderCellValue.js.map} +0 -0
  408. package/dist-cjs/{packages/grid/src/LayoutContext.js → LayoutContext.js} +0 -0
  409. package/dist-cjs/{packages/grid/src/LayoutContext.js.map → LayoutContext.js.map} +0 -0
  410. package/dist-cjs/{packages/grid/src/NumberRange.js → NumberRange.js} +0 -0
  411. package/dist-cjs/{packages/grid/src/SelectionContext.js → SelectionContext.js} +0 -0
  412. package/dist-cjs/{packages/grid/src/SelectionContext.js.map → SelectionContext.js.map} +0 -0
  413. package/dist-cjs/{packages/grid/src/SizingContext.js → SizingContext.js} +0 -0
  414. package/dist-cjs/{packages/grid/src/SizingContext.js.map → SizingContext.js.map} +0 -0
  415. package/dist-cjs/{packages/grid/src/internal → internal}/FakeGroupCell.js +0 -0
  416. package/dist-cjs/{packages/grid/src/internal → internal}/FakeGroupCell.js.map +0 -0
  417. package/dist-cjs/{packages/grid/src/internal → internal}/FakeHeaderCell.js +0 -0
  418. package/dist-cjs/{packages/grid/src/internal → internal}/FakeHeaderCell.js.map +0 -0
  419. package/dist-cjs/{packages/grid/src/internal → internal}/TableColGroup.js +0 -0
  420. package/dist-cjs/{packages/grid/src/internal → internal}/TableColGroup.js.map +0 -0
  421. package/dist-cjs/{packages/grid/src/internal → internal}/utils.js +0 -0
  422. package/dist-cjs/{packages/grid/src/internal → internal}/utils.js.map +0 -0
  423. package/dist-es/{packages/grid/src/CellEditor.js → CellEditor.js} +0 -0
  424. package/dist-es/{packages/grid/src/CellEditor.js.map → CellEditor.js.map} +0 -0
  425. package/dist-es/{packages/grid/src/ColumnDataContext.js → ColumnDataContext.js} +0 -0
  426. package/dist-es/{packages/grid/src/ColumnDataContext.js.map → ColumnDataContext.js.map} +0 -0
  427. package/dist-es/{packages/grid/src/ColumnDragContext.js → ColumnDragContext.js} +0 -0
  428. package/dist-es/{packages/grid/src/ColumnDragContext.js.map → ColumnDragContext.js.map} +0 -0
  429. package/dist-es/{packages/grid/src/ColumnGroup.js → ColumnGroup.js} +0 -0
  430. package/dist-es/{packages/grid/src/ColumnGroup.js.map → ColumnGroup.js.map} +0 -0
  431. package/dist-es/{packages/grid/src/CursorContext.js → CursorContext.js} +0 -0
  432. package/dist-es/{packages/grid/src/CursorContext.js.map → CursorContext.js.map} +0 -0
  433. package/dist-es/{packages/grid/src/EditorContext.js → EditorContext.js} +0 -0
  434. package/dist-es/{packages/grid/src/EditorContext.js.map → EditorContext.js.map} +0 -0
  435. package/dist-es/{packages/grid/src/GridColumn.js → GridColumn.js} +1 -1
  436. /package/dist-es/{packages/grid/src/GridContext.js → GridContext.js} +0 -0
  437. /package/dist-es/{packages/grid/src/GridContext.js.map → GridContext.js.map} +0 -0
  438. /package/dist-es/{packages/grid/src/GroupHeaderCellValue.js → GroupHeaderCellValue.js} +0 -0
  439. /package/dist-es/{packages/grid/src/GroupHeaderCellValue.js.map → GroupHeaderCellValue.js.map} +0 -0
  440. /package/dist-es/{packages/grid/src/HeaderCellValue.js → HeaderCellValue.js} +0 -0
  441. /package/dist-es/{packages/grid/src/HeaderCellValue.js.map → HeaderCellValue.js.map} +0 -0
  442. /package/dist-es/{packages/grid/src/LayoutContext.js → LayoutContext.js} +0 -0
  443. /package/dist-es/{packages/grid/src/LayoutContext.js.map → LayoutContext.js.map} +0 -0
  444. /package/dist-es/{packages/grid/src/NumberRange.js → NumberRange.js} +0 -0
  445. /package/dist-es/{packages/grid/src/SelectionContext.js → SelectionContext.js} +0 -0
  446. /package/dist-es/{packages/grid/src/SelectionContext.js.map → SelectionContext.js.map} +0 -0
  447. /package/dist-es/{packages/grid/src/SizingContext.js → SizingContext.js} +0 -0
  448. /package/dist-es/{packages/grid/src/SizingContext.js.map → SizingContext.js.map} +0 -0
  449. /package/dist-es/{packages/grid/src/index.js.map → index.js.map} +0 -0
  450. /package/dist-es/{packages/grid/src/internal → internal}/FakeGroupCell.js +0 -0
  451. /package/dist-es/{packages/grid/src/internal → internal}/FakeGroupCell.js.map +0 -0
  452. /package/dist-es/{packages/grid/src/internal → internal}/FakeHeaderCell.js +0 -0
  453. /package/dist-es/{packages/grid/src/internal → internal}/FakeHeaderCell.js.map +0 -0
  454. /package/dist-es/{packages/grid/src/internal → internal}/TableColGroup.js +0 -0
  455. /package/dist-es/{packages/grid/src/internal → internal}/TableColGroup.js.map +0 -0
  456. /package/dist-es/{packages/grid/src/internal → internal}/utils.js +0 -0
  457. /package/dist-es/{packages/grid/src/internal → internal}/utils.js.map +0 -0
@@ -1,15 +1,23 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { TableColGroup } from './TableColGroup.js';
3
3
  import { HeaderRow } from './HeaderRow.js';
4
- import './TopRightPart.css.js';
5
4
  import { makePrefixer } from '@salt-ds/core';
6
- import { GroupHeaderRow } from './GroupHeaderRow.js';
5
+ import { useWindow } from '@salt-ds/window';
6
+ import { useComponentCssInjection } from '@salt-ds/styles';
7
7
  import { clsx } from 'clsx';
8
+ import { GroupHeaderRow } from './GroupHeaderRow.js';
8
9
  import { useActiveOnWheel } from './gridHooks.js';
10
+ import css_248z from './TopRightPart.css.js';
9
11
 
10
12
  const withBaseName = makePrefixer("saltGridTopRightPart");
11
13
  function TopRightPart(props) {
12
14
  const { onWheel, columns, columnGroups, leftShadow, bottomShadow } = props;
15
+ const targetWindow = useWindow();
16
+ useComponentCssInjection({
17
+ testId: "salt-top-right-part",
18
+ css: css_248z,
19
+ window: targetWindow
20
+ });
13
21
  const tableRef = useActiveOnWheel(onWheel);
14
22
  if (columns.length === 0) {
15
23
  return null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopRightPart.js","sources":["../src/internal/TopRightPart.tsx"],"sourcesContent":["import { TableColGroup } from \"./TableColGroup\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { clsx } from \"clsx\";\n\nimport { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nimport topRightPartCss from \"./TopRightPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopRightPart\");\n\nexport interface TopRightPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n leftShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopRightPart<T>(props: TopRightPartProps<T>) {\n const { onWheel, columns, columnGroups, leftShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-right-part\",\n css: topRightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-right-part\"\n >\n <table\n className={withBaseName(\"table\")}\n ref={tableRef}\n role=\"presentation\"\n >\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n {/*TODO Do we need a toolbar?*/}\n {/*{showToolbar ? <HeaderToolbarRow columns={rightColumns} /> : null}*/}\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["topRightPartCss"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA,CAAA;AAUjD,SAAS,aAAgB,KAA6B,EAAA;AAC3D,EAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAS,YAAc,EAAA,UAAA,EAAY,cAAiB,GAAA,KAAA,CAAA;AAErE,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,QAAA,GAAW,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,KACjC,CAAA;AAAA,IACD,aAAY,EAAA,qBAAA;AAAA,IAEZ,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAC/B,GAAK,EAAA,QAAA;AAAA,MACL,IAAK,EAAA,cAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,aAAA,EAAA;AAAA,UAAc,OAAA;AAAA,SAAkB,CAAA;AAAA,wBAChC,IAAA,CAAA,OAAA,EAAA;AAAA,UACC,QAAA,EAAA;AAAA,4BAAC,GAAA,CAAA,cAAA,EAAA;AAAA,cAAe,MAAQ,EAAA,YAAA;AAAA,aAAc,CAAA;AAAA,4BACrC,GAAA,CAAA,SAAA,EAAA;AAAA,cAAU,OAAA;AAAA,aAAkB,CAAA;AAAA,WAAA;AAAA,SAG/B,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import { useRef, useState, useMemo, useCallback, useEffect, Children, isValidElement } from 'react';
1
+ import { useMemo, useCallback, useRef, useState, useEffect, Children, isValidElement } from 'react';
2
2
  import { NumberRange } from '../NumberRange.js';
3
3
  import { getAttribute, makeMapAdder, makeMapDeleter, getCellPosition } from './utils.js';
4
4
  import { useControlled } from '@salt-ds/core';
@@ -111,6 +111,9 @@ function useVisibleRowRange(scrollTop, clientMidHeight, rowHeight, rowCount) {
111
111
  rowCount,
112
112
  Math.max(start, Math.ceil(endPos / rowHeight))
113
113
  );
114
+ if (start > end) {
115
+ return NumberRange.empty;
116
+ }
114
117
  return new NumberRange(start, end);
115
118
  }, [scrollTop, clientMidHeight, rowHeight, rowCount]);
116
119
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridHooks.js","sources":["../src/internal/gridHooks.tsx"],"sourcesContent":["import React, {\n Children,\n FocusEventHandler,\n isValidElement,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n GridCellSelectionMode,\n GridColumnGroupModel,\n GridColumnModel,\n GridColumnMoveHandler,\n GridRowModel,\n GridRowSelectionMode,\n RowKeyGetter,\n} from \"../Grid\";\nimport { ColumnGroupProps } from \"../ColumnGroup\";\nimport { NumberRange } from \"../NumberRange\";\nimport { GridColumnInfo, GridColumnPin } from \"../GridColumn\";\nimport {\n getAttribute,\n getCellPosition,\n makeMapAdder,\n makeMapDeleter,\n} from \"./utils\";\nimport { GridContext } from \"../GridContext\";\nimport { CellEditorInfo } from \"../CellEditor\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { FocusedPart } from \"../CursorContext\";\n\n// Attaches active onWheel event to a table element\n// Grid needs to prevent default onWheel event handling for situations when a\n// scrollable grid is on a scrollable page. Page should not scroll when the grid\n// is being scrolled, unless reached top or bottom of scrollable grid.\nexport function useActiveOnWheel(onWheel: EventListener) {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n const table = tableRef.current;\n if (table && onWheel) {\n table.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => {\n table.removeEventListener(\"wheel\", onWheel);\n };\n }\n }, [tableRef.current]);\n\n return tableRef;\n}\n\n// Total width of the given columns.\nfunction sumWidth<T>(columns: GridColumnModel<T>[]) {\n return columns.reduce((p, x) => p + x.info.width, 0);\n}\n\n// Returns total width of the given columns wrapped in useMemo.\nexport function useSumWidth<T>(columns: GridColumnModel<T>[]) {\n return useMemo(() => sumWidth(columns), [columns]);\n}\n\n// Memoized sum of the given numbers.\nexport function useSum(source: number[]) {\n return useMemo(() => source.reduce((p, x) => p + x, 0), source);\n}\n\n// Sum width of the given range of columns.\nfunction sumRangeWidth<T>(columns: GridColumnModel<T>[], range: NumberRange) {\n let w = 0;\n range.forEach((i) => {\n w += columns[i].info.width;\n });\n return w;\n}\n\n// Sum width of the given range of columns wrapped in useMemo.\nexport function useSumRangeWidth<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n) {\n return useMemo(() => sumRangeWidth(columns, range), [columns, range]);\n}\n\n// Range memoization using Rng.equals comparator.\nfunction useMemoRng(fn: () => NumberRange, deps: any[]) {\n const prevRef = useRef<NumberRange>(NumberRange.empty);\n const range = useMemo(fn, deps);\n if (!NumberRange.equals(prevRef.current, range)) {\n prevRef.current = range;\n }\n return prevRef.current;\n}\n\n// Visible range of columns within the body.\nexport function useBodyVisibleColumnRange<T>(\n midColumns: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number\n): NumberRange {\n return useMemoRng(() => {\n if (clientMidWidth === 0 || midColumns.length === 0) {\n return NumberRange.empty;\n }\n let width = scrollLeft;\n let start = 0;\n for (let i = 0; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n if (width > colWidth) {\n width -= colWidth;\n } else {\n start = i;\n width += clientMidWidth;\n break;\n }\n }\n let end = start + 1;\n for (let i = start; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n width -= colWidth;\n end = i + 1;\n if (width <= 0) {\n break;\n }\n }\n if (end > midColumns.length) {\n end = midColumns.length;\n }\n return new NumberRange(start, end);\n }, [midColumns, scrollLeft, clientMidWidth]);\n}\n\n// Client width of the middle (scrollable) part of the grid.\nexport function useClientMidWidth(\n clientWidth: number,\n leftWidth: number,\n rightWidth: number\n) {\n return useMemo(\n () => clientWidth - leftWidth - rightWidth,\n [clientWidth, leftWidth, rightWidth]\n );\n}\n\n// Client height of the middle part of the grid.\nexport function useClientMidHeight(\n clientHeight: number,\n topHeight: number,\n botHeight: number\n) {\n return useMemo(\n () => clientHeight - topHeight - botHeight,\n [clientHeight, topHeight, botHeight]\n );\n}\n\n// Y coordinate of the visible area within the virtual space.\nexport function useBodyVisibleAreaTop<T>(\n rowHeight: number,\n visibleRowRange: NumberRange,\n topHeight: number\n) {\n return useMemo(() => {\n let top = topHeight + visibleRowRange.start * rowHeight;\n if (visibleRowRange.start > 0) {\n top += 1; // First row (row #0) has an extra border\n }\n return top;\n }, [rowHeight, visibleRowRange, topHeight]);\n}\n\n// Visible range of rows.\nexport function useVisibleRowRange(\n scrollTop: number,\n clientMidHeight: number,\n rowHeight: number,\n rowCount: number\n) {\n return useMemoRng(() => {\n if (rowHeight < 1) {\n return NumberRange.empty;\n }\n const firstRowHeight = rowHeight + 1; // First row has an extra 1px\n\n const start =\n scrollTop > firstRowHeight\n ? 1 + Math.floor((scrollTop - firstRowHeight) / rowHeight)\n : 0;\n let endPos = scrollTop + clientMidHeight;\n\n if (start === 0) {\n endPos -= 1;\n }\n const end = Math.min(\n rowCount,\n Math.max(start, Math.ceil(endPos / rowHeight))\n );\n\n // Scroll Top not returning to 0 after pagination. Guard to ensure issues with ScrollTop throw error\n if (start > end) {\n return NumberRange.empty;\n }\n\n return new NumberRange(start, end);\n }, [scrollTop, clientMidHeight, rowHeight, rowCount]);\n}\n\nexport function useColumnRange<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n): GridColumnModel<T>[] {\n return useMemo(() => columns.slice(range.start, range.end), [columns, range]);\n}\n\n// Total width of the columns scrolled out to the left of the visible area.\nexport function useLeftScrolledOutWidth<T>(\n midColumns: GridColumnModel<T>[],\n bodyVisibleColumnRange: NumberRange\n) {\n return useMemo(() => {\n let w = 0;\n for (let i = 0; i < bodyVisibleColumnRange.start; ++i) {\n w += midColumns[i].info.width;\n }\n return w;\n }, [midColumns, bodyVisibleColumnRange]);\n}\n\n// Row positions by row keys.\nexport function useRowIdxByKey<T>(rowKeyGetter: RowKeyGetter<T>, rowData: T[]) {\n return useMemo(() => {\n return new Map<string, number>(\n rowData.map((r, i) => [rowKeyGetter(r, i), i])\n );\n }, [rowData, rowKeyGetter]);\n}\n\nexport type SetState<T> = (v: T | ((p: T) => T)) => void;\n\n// Row models for the visible rows.\nexport function useRowModels<T>(\n getKey: RowKeyGetter<T>,\n rowData: T[],\n visibleRowRange: NumberRange\n) {\n return useMemo(() => {\n const rows: GridRowModel<T>[] = [];\n visibleRowRange.forEach((i) => {\n const key = getKey(rowData[i], i);\n rows.push({ data: rowData[i], key, index: i });\n });\n return rows;\n }, [getKey, rowData, visibleRowRange]);\n}\n\n// Creates column group models.\nexport const useColumnGroups = (\n grpPs: ColumnGroupProps[],\n startIdx: number\n): GridColumnGroupModel[] =>\n useMemo(\n () =>\n grpPs.map((data, i) => {\n const childrenIds = Children.toArray(data.children)\n .map((child) => {\n if (!isValidElement(child)) {\n return undefined;\n }\n return child.props.id;\n })\n .filter((x) => x !== undefined) as string[];\n const colSpan = childrenIds.length;\n\n return {\n data,\n index: i + startIdx,\n childrenIds,\n colSpan,\n columnSeparator: \"regular\",\n rowSeparator: \"regular\",\n };\n }),\n [grpPs, startIdx]\n );\n\n// Visible range of column groups.\nexport function useVisibleColumnGroupRange<T>(\n bodyVisColRng: NumberRange,\n midCols: GridColumnModel<T>[],\n midGrpByColId: Map<string, GridColumnGroupModel>,\n leftGrpCount: number\n): NumberRange {\n return useMemoRng(() => {\n if (bodyVisColRng.length === 0) {\n return NumberRange.empty;\n }\n const firstVisibleCol = midCols[bodyVisColRng.start];\n const lastVisibleCol = midCols[bodyVisColRng.end - 1];\n const firstVisibleGroup = midGrpByColId.get(firstVisibleCol.info.props.id);\n const lastVisibleGroup = midGrpByColId.get(lastVisibleCol.info.props.id);\n if (!firstVisibleGroup || !lastVisibleGroup) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstVisibleGroup.index - leftGrpCount,\n lastVisibleGroup.index + 1 - leftGrpCount\n );\n }, [bodyVisColRng, midCols, midGrpByColId, leftGrpCount]);\n}\n\nexport function last<T>(source: T[]): T {\n return source[source.length - 1];\n}\n\n// Range of columns visible in the header.\nexport function useHeadVisibleColumnRange<T>(\n bodyVisColRng: NumberRange,\n visColGrps: GridColumnGroupModel[],\n midColsById: Map<string, GridColumnModel<T>>,\n leftColCount: number\n) {\n return useMemoRng(() => {\n if (visColGrps.length === 0) {\n return bodyVisColRng;\n }\n const firstVisibleGroup = visColGrps[0];\n const lastVisibleGroup = last(visColGrps);\n const firstColId = firstVisibleGroup.childrenIds[0];\n const lastColId = last(lastVisibleGroup.childrenIds);\n const firstColIdx = midColsById.get(firstColId)?.index;\n const lastColIdx = midColsById.get(lastColId)?.index;\n if (firstColIdx === undefined || lastColIdx === undefined) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstColIdx - leftColCount,\n lastColIdx + 1 - leftColCount\n );\n }, [bodyVisColRng, visColGrps, midColsById, leftColCount]);\n}\n\n// Creates column models.\nexport function useCols<T>(\n colInfos: GridColumnInfo<T>[],\n startIdx: number,\n groups: GridColumnGroupModel[]\n): GridColumnModel<T>[] {\n return useMemo(() => {\n const edgeColIds = new Set<string>();\n groups.forEach((g) => {\n edgeColIds.add(last(g.childrenIds));\n });\n const columnModels: GridColumnModel<T>[] = colInfos.map((info, i) => ({\n info,\n index: i + startIdx,\n separator: edgeColIds.has(info.props.id) ? \"groupEdge\" : \"regular\",\n }));\n return columnModels;\n }, [colInfos, startIdx, groups]);\n}\n\n// Returns a function that scrolls the grid to the given cell.\nexport function useScrollToCell<T>(\n visRowRng: NumberRange,\n rowHeight: number,\n clientMidHeight: number,\n midCols: GridColumnModel<T>[],\n bodyVisColRng: NumberRange,\n clientMidWidth: number,\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void\n) {\n return useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (part !== \"body\") {\n return; // TODO\n }\n let x: number | undefined = undefined;\n let y: number | undefined = undefined;\n if (rowIdx <= visRowRng.start) {\n // First row is 1px wider than other rows (additional top border)\n y = rowIdx === 0 ? 0 : 1 + rowHeight * rowIdx;\n } else if (rowIdx >= visRowRng.end - 1) {\n const extraBorder = rowIdx > 0 ? 1 : 0;\n y = Math.max(\n 0,\n rowHeight * rowIdx + extraBorder - clientMidHeight + rowHeight\n );\n }\n const isMidCol =\n midCols.length > 0 &&\n colIdx >= midCols[0].index &&\n colIdx <= last(midCols).index;\n if (isMidCol) {\n const midColIdx = colIdx - midCols[0].index;\n if (midColIdx <= bodyVisColRng.start) {\n let w = 0;\n for (let i = 0; i < midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = w;\n } else if (midColIdx >= bodyVisColRng.end - 1) {\n let w = 0;\n for (let i = 0; i <= midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = Math.max(0, w - clientMidWidth);\n }\n }\n if (x !== undefined || y !== undefined) {\n scroll(x, y, \"table\");\n }\n },\n [\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll,\n ]\n );\n}\n\nconst MIN_COLUMN_WIDTH = 10;\n\n// Returns onMouseDown handler to be attached to column resize handlers.\n// TODO There might be some problems if column is removed while it is being resized\nexport function useColumnResize<T>(\n cols: GridColumnModel<T>[],\n resizeColumn: (columnIndex: number, width: number) => void\n) {\n const columnResizeDataRef = useRef<{\n startX: number;\n startY: number;\n eventsUnsubscription: () => void;\n columnIndex: number;\n initialColumnWidth: number;\n minWidth: number;\n resizeColumn: (columnIndex: number, width: number) => void;\n }>();\n\n const onMouseUp = useCallback(() => {\n columnResizeDataRef.current?.eventsUnsubscription();\n columnResizeDataRef.current = undefined;\n }, []);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const x = event.screenX;\n const { startX, columnIndex, initialColumnWidth, minWidth } =\n columnResizeDataRef.current!;\n const shift = x - startX;\n let width = Math.max(minWidth, initialColumnWidth + shift);\n columnResizeDataRef.current!.resizeColumn(columnIndex, Math.round(width));\n }, []);\n\n return useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const targetElement = event.target as HTMLElement;\n const [columnIndexAttribute, thElement] = getAttribute(\n targetElement,\n \"data-column-index\"\n );\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const initialColumnWidth = thElement.getBoundingClientRect().width;\n\n columnResizeDataRef.current = {\n startX: event.screenX,\n startY: event.screenY,\n eventsUnsubscription: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n columnIndex,\n initialColumnWidth,\n resizeColumn,\n minWidth: cols[columnIndex].info.props.minWidth || MIN_COLUMN_WIDTH,\n };\n\n event.preventDefault();\n },\n [resizeColumn]\n );\n}\n\n// Map values to array.\nexport function useFlatten<T>(map: Map<number, T>): T[] {\n return useMemo(() => {\n const entries = [...map.entries()].filter(([index, value]) => !!value);\n entries.sort((a, b) => a[0] - b[0]);\n return entries.map((x) => x[1]);\n }, [map]);\n}\n\nfunction useColMap<T>() {\n return useState<Map<number, GridColumnInfo<T>>>(new Map());\n}\n\nfunction useGrpMap() {\n return useState<Map<number, ColumnGroupProps>>(new Map());\n}\n\n// Instances of TableColumn and TableColumnGroup register/unregister themselves\n// using onColumnAdded, onColumnRemoved, onColumnGroupAdded, onColumnGroupRemoved\n// taken from context\n// The order of columns/groups is based on the order of \"children\" (Grid.props children)\nexport function useColumnRegistry<T>(children: ReactNode) {\n const [leftColMap, setLeftColMap] = useColMap<T>();\n const [rightColMap, setRightColMap] = useColMap<T>();\n const [midColMap, setMidColMap] = useColMap<T>();\n\n const [leftGrpMap, setLeftGrpMap] = useGrpMap();\n const [rightGrpMap, setRightGrpMap] = useGrpMap();\n const [midGrpMap, setMidGrpMap] = useGrpMap();\n\n const [editorMap, setEditorMap] = useState<Map<string, CellEditorInfo<T>>>(\n new Map()\n );\n\n const leftColInfos = useFlatten(leftColMap);\n const rightColInfos = useFlatten(rightColMap);\n const midColInfos = useFlatten(midColMap);\n\n const leftGrpPs = useFlatten(leftGrpMap);\n const rightGrpPs = useFlatten(rightGrpMap);\n const midGrpPs = useFlatten(midGrpMap);\n\n const leftGroups = useColumnGroups(leftGrpPs, 0);\n const midGroups = useColumnGroups(midGrpPs, leftGroups.length);\n const rightGroups = useColumnGroups(\n rightGrpPs,\n leftGroups.length + midGroups.length\n );\n if (leftGroups.length > 0) {\n last(leftGroups).columnSeparator = \"pinned\";\n }\n if (rightGroups.length > 0 && midGroups.length > 0) {\n last(midGroups).columnSeparator = \"pinned\";\n }\n\n const leftCols: GridColumnModel<T>[] = useCols(leftColInfos, 0, leftGroups);\n const midCols: GridColumnModel<T>[] = useCols(\n midColInfos,\n leftCols.length,\n midGroups\n );\n const rightCols: GridColumnModel<T>[] = useCols(\n rightColInfos,\n leftCols.length + midCols.length,\n rightGroups\n );\n if (leftCols.length > 0) {\n last(leftCols).separator = \"pinned\";\n }\n if (rightCols.length > 0 && midCols.length > 0) {\n last(midCols).separator = \"pinned\";\n }\n\n const chPosById = useRef<Map<string, number>>(new Map());\n\n const indexChildren = () => {\n const m = new Map<string, number>();\n let i = 0;\n const indexChildrenRec = (c: ReactNode) => {\n if (!c) {\n return;\n }\n Children.forEach(c, (x) => {\n if (isValidElement(x) && x.props.id !== undefined) {\n m.set(x.props.id, i);\n i++;\n indexChildrenRec(x.props.children);\n }\n });\n };\n indexChildrenRec(children);\n return m;\n };\n chPosById.current = indexChildren();\n\n const getChildIndex = useCallback((id: string): number => {\n const idx = chPosById.current.get(id);\n if (idx === undefined) {\n console.log(`Unknown child id \"${id}\"`);\n console.log(\n `Known ids: ${Array.from(chPosById.current.keys())\n .map((x) => `\"${x}\"`)\n .join(\", \")}`\n );\n throw new Error(`Unknown child id: \"${id}\"`);\n }\n return idx;\n }, []);\n\n const getColMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftColMap\n : pinned === \"right\"\n ? setRightColMap\n : setMidColMap;\n\n const onColumnAdded = useCallback((columnInfo: GridColumnInfo<T>) => {\n // console.log(\n // `Column added: \"${columnInfo.props.id}\"; pinned: ${columnInfo.props.pinned}`\n // );\n const { id, pinned } = columnInfo.props;\n const index = getChildIndex(id);\n getColMapSet(pinned)(makeMapAdder(index, columnInfo));\n }, []);\n\n const onColumnRemoved = useCallback(\n (index: number, columnInfo: GridColumnInfo<T>) => {\n const { id, pinned } = columnInfo.props;\n getColMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Column removed: \"${columnInfo.props.id}\"`);\n },\n []\n );\n\n const getGrpMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftGrpMap\n : pinned === \"right\"\n ? setRightGrpMap\n : setMidGrpMap;\n\n const onColumnGroupAdded = useCallback((colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapAdder(getChildIndex(id), colGroupProps));\n // console.log(`Group added: \"${colGroupProps.name}\"`);\n }, []);\n\n const onColumnGroupRemoved = useCallback(\n (index: number, colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Group removed: \"${colGroupProps.name}\"`);\n },\n []\n );\n\n const onEditorAdded = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapAdder(columnId, info));\n // console.log(`Editor added for column ${columnId}`);\n }, []);\n\n const onEditorRemoved = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapDeleter(columnId));\n // console.log(`Editor removed for column ${columnId}`);\n }, []);\n\n const getEditor = useCallback(\n (columnId: string) => editorMap.get(columnId),\n [editorMap]\n );\n\n const contextValue: GridContext<T> = useMemo(\n () => ({\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n }),\n [\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n ]\n );\n\n return {\n leftCols,\n midCols,\n rightCols,\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n };\n}\n\nexport type SelectRowsOptions = {\n rowIndex: number;\n isRange?: boolean;\n // Update selection incrementally based on previous state.\n // If rowIndex is selected then unselect it, otherwise select it.\n // This is what happens when the user clicks a row selection checkbox.\n // Shift + Space is another case when this behaviour is used.\n incremental?: boolean;\n // Unusual behaviour, applied on space keypress on a non-checkbox cell\n // The row is toggled, other rows unselected.\n unselectOtherRows?: boolean;\n};\n\n// Returns functions related to row selection.\n// TODO test use case when selection mode changes\nexport function useRowSelection<T>(\n rowKeyGetter: RowKeyGetter<T>,\n rowData: T[],\n defaultSelectedRowIdxs?: number[],\n selectedRowIdxs?: number[],\n rowSelectionMode?: GridRowSelectionMode,\n onRowSelected?: (selectedRowIdxs: number[]) => void\n) {\n const selectedRowIdxsProp = useMemo(() => {\n if (selectedRowIdxs == undefined) {\n return undefined;\n }\n return new Set(selectedRowIdxs);\n }, [selectedRowIdxs]);\n\n const defaultSelectedRowIdxsProp = useMemo(() => {\n if (defaultSelectedRowIdxs == undefined) {\n return new Set([]);\n }\n return new Set(defaultSelectedRowIdxs);\n }, [defaultSelectedRowIdxs]);\n\n const [selRowIdxs, setSelRowIdxs] = useControlled({\n controlled: selectedRowIdxsProp,\n default: defaultSelectedRowIdxsProp,\n name: \"useRowSelection\",\n state: \"selRowIdxs\",\n });\n\n const [lastSelRowIdx, setLastSelRowIdx] = useState<number | undefined>(\n undefined\n );\n\n useEffect(() => {\n if (\n (rowSelectionMode === \"none\" && selRowIdxs.size > 0) ||\n (rowSelectionMode === \"single\" && selRowIdxs.size > 1)\n ) {\n setSelRowIdxs(new Set());\n }\n }, [rowSelectionMode, selRowIdxs, setSelRowIdxs]);\n\n const selectRows = useCallback(\n ({\n rowIndex,\n isRange = false,\n incremental = false,\n unselectOtherRows = false,\n }: SelectRowsOptions) => {\n const idxFrom =\n rowSelectionMode === \"multi\" && lastSelRowIdx !== undefined && isRange\n ? lastSelRowIdx\n : undefined;\n\n let nextSelRowIdxs: Set<number> | undefined = undefined;\n let nextLastSelRowIdx: number | undefined = undefined;\n\n if (idxFrom === undefined) {\n if (unselectOtherRows) {\n if (incremental && selRowIdxs.has(rowIndex)) {\n nextSelRowIdxs = new Set<number>([]);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs = new Set<number>([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n if (incremental && rowSelectionMode === \"multi\") {\n nextSelRowIdxs = new Set<number>(selRowIdxs);\n if (nextSelRowIdxs.has(rowIndex)) {\n nextSelRowIdxs.delete(rowIndex);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs.add(rowIndex);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n nextSelRowIdxs = new Set([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n }\n } else {\n const s = incremental ? new Set<number>(selRowIdxs) : new Set<number>();\n const idxs = [rowIndex, idxFrom];\n idxs.sort((a, b) => a - b);\n const rowIdxs: number[] = [];\n for (let i = idxs[0]; i <= idxs[1]; ++i) {\n rowIdxs.push(i);\n }\n if (selRowIdxs.has(rowIndex)) {\n rowIdxs.forEach((k) => s.delete(k));\n } else {\n rowIdxs.forEach((k) => s.add(k));\n }\n nextSelRowIdxs = s;\n nextLastSelRowIdx = rowIndex;\n }\n\n setSelRowIdxs(nextSelRowIdxs);\n setLastSelRowIdx(nextLastSelRowIdx);\n if (onRowSelected) {\n onRowSelected(Array.from(nextSelRowIdxs.keys()));\n }\n },\n [\n selRowIdxs,\n lastSelRowIdx,\n setSelRowIdxs,\n setLastSelRowIdx,\n rowData,\n rowKeyGetter,\n onRowSelected,\n ]\n );\n\n const isAllSelected = selRowIdxs.size === rowData.length;\n const isAnySelected = selRowIdxs.size > 0;\n\n const selectAll = useCallback(() => {\n const allRowIdxs = [...new Array(rowData.length).keys()].map((_, i) => i);\n setSelRowIdxs(new Set(allRowIdxs));\n if (onRowSelected) {\n onRowSelected(allRowIdxs);\n }\n }, [rowData, setSelRowIdxs]);\n\n const unselectAll = useCallback(() => {\n setSelRowIdxs(new Set());\n if (onRowSelected) {\n onRowSelected([]);\n }\n }, [setSelRowIdxs]);\n\n const onMouseDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (rowSelectionMode === \"none\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIndex] = getCellPosition(target);\n selectRows({\n rowIndex,\n isRange: event.shiftKey,\n incremental: event.metaKey || event.ctrlKey,\n });\n } catch (e) {}\n },\n [selectRows, rowSelectionMode]\n );\n\n return {\n onMouseDown,\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectRows,\n selectAll,\n unselectAll,\n };\n}\n\nexport interface ColumnDragState {\n columnIndex: number;\n x: number;\n y: number;\n}\n\nconst COLUMN_DRAG_TOLERANCE = 10;\n\nexport interface Target {\n columnIndex: number;\n x: number;\n}\n\n// Returns onMouseDown handler to be attached to column headers (or any element\n// working as a drag-and-drop handle for moving columns)\n// Also returns dragState and active target (the drop target nearest to current\n// mouse positions.\nexport function useColumnMove<T = any>(\n columnMove: boolean | undefined,\n rootRef: RefObject<HTMLDivElement>,\n leftCols: GridColumnModel<T>[],\n midCols: GridColumnModel<T>[],\n rightCols: GridColumnModel<T>[],\n cols: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number,\n onColumnMove: GridColumnMoveHandler\n) {\n const moveRef = useRef<{\n unsubscribe: () => void;\n startScreenX: number;\n startScreenY: number;\n startHeaderX: number;\n startHeaderY: number;\n\n columnIndex: number;\n columnId: string;\n dragTriggered: boolean;\n onColumnMove: GridColumnMoveHandler;\n }>();\n\n const activeTargetRef = useRef<Target | undefined>(undefined);\n\n const [dragState, setDragState] = useState<ColumnDragState | undefined>(\n undefined\n );\n\n const columnDragStart = useCallback(\n (columnIndex: number, x: number, y: number) => {\n setDragState({ columnIndex, x, y });\n },\n [setDragState]\n );\n\n const columnDrag = useCallback(\n (x: number, y: number) => {\n setDragState((old) => {\n return { ...old!, x, y };\n });\n },\n [setDragState]\n );\n\n const columnDrop = useCallback(() => {\n const toIndex = activeTargetRef.current?.columnIndex;\n const fromIndex = moveRef.current?.columnIndex;\n const columnId = moveRef.current?.columnId;\n const handler = moveRef.current?.onColumnMove;\n if (\n toIndex !== undefined &&\n fromIndex !== undefined &&\n handler !== undefined &&\n columnId !== undefined\n ) {\n handler(columnId, fromIndex, toIndex);\n }\n setDragState(undefined);\n }, [setDragState]);\n\n const onMouseUp = useCallback(() => {\n if (moveRef.current?.dragTriggered) {\n columnDrop();\n }\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [columnDrop]);\n\n const onMouseMove = useCallback(\n (event: MouseEvent) => {\n const {\n columnIndex,\n startHeaderX,\n startHeaderY,\n startScreenX,\n startScreenY,\n dragTriggered,\n } = moveRef.current!;\n\n const shiftX = event.screenX - startScreenX;\n const shiftY = event.screenY - startScreenY;\n const x = startHeaderX + shiftX;\n const y = startHeaderY + shiftY;\n\n if (!dragTriggered) {\n if (\n Math.sqrt(shiftX * shiftX + shiftY * shiftY) > COLUMN_DRAG_TOLERANCE\n ) {\n moveRef.current!.dragTriggered = true;\n columnDragStart(columnIndex, x, y);\n }\n } else {\n columnDrag(x, y);\n }\n },\n [columnDrag]\n );\n\n const onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement> =\n useCallback(\n (event) => {\n const [columnIndexAttribute, thElement] = getAttribute(\n event.target as HTMLElement,\n \"data-column-index\"\n );\n const rootElement = rootRef.current!;\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n const columnId = cols[columnIndex].info.props.id;\n\n const thRect = thElement.getBoundingClientRect();\n const rootRect = rootElement!.getBoundingClientRect();\n\n const x = thRect.x - rootRect.x;\n const y = thRect.y - rootRect.y;\n\n moveRef.current = {\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n startScreenX: event.screenX,\n startScreenY: event.screenY,\n startHeaderX: x,\n startHeaderY: y,\n columnIndex,\n columnId,\n dragTriggered: false,\n onColumnMove,\n };\n\n event.preventDefault();\n },\n [columnDragStart, cols]\n );\n\n const onColumnMoveCancel = useCallback(() => {\n setDragState(undefined);\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [setDragState]);\n\n const targets = useMemo(() => {\n if (!dragState) {\n return undefined;\n }\n let ts: Target[] = [];\n let x = 0;\n leftCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n let w = scrollLeft;\n let i = 0;\n while (w > 0 && i < midCols.length) {\n w -= midCols[i].info.width;\n i++;\n }\n x -= w;\n w += clientMidWidth;\n while (w > 0 && i < midCols.length) {\n const c = midCols[i];\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n w -= c.info.width;\n i++;\n }\n if (rightCols.length > 0) {\n x += w;\n rightCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n ts.push({ columnIndex: last(rightCols).index + 1, x });\n } else {\n ts.push({ columnIndex: last(midCols).index + 1, x });\n }\n return ts;\n }, [dragState, leftCols, midCols, rightCols, scrollLeft, clientMidWidth]);\n\n const activeTargetIdx = useMemo(() => {\n const x = dragState?.x;\n if (x === undefined || targets === undefined || targets.length < 1) {\n return undefined;\n }\n let i = 0;\n while (i < targets.length && targets[i].x < x) {\n i++;\n }\n if (i === 0) {\n return 0;\n }\n if (i >= targets.length) {\n return targets.length - 1;\n }\n return targets[i].x - x < x - targets[i - 1].x ? i : i - 1;\n }, [targets, dragState?.x]);\n\n const activeTarget =\n activeTargetIdx === undefined ? undefined : targets![activeTargetIdx];\n\n activeTargetRef.current = activeTarget;\n\n return {\n onColumnMoveHandleMouseDown,\n dragState,\n activeTarget,\n onColumnMoveCancel,\n };\n}\n\nexport interface CellPosition {\n rowIdx: number;\n colIdx: number;\n}\n\nexport interface CellRange {\n start: CellPosition;\n end: CellPosition;\n}\n\nexport function cellPositionEquals(a: CellPosition, b: CellPosition) {\n return a.rowIdx === b.rowIdx && a.colIdx === b.colIdx;\n}\n\nexport function cellRangeEquals(\n a: CellRange | undefined,\n b: CellRange | undefined\n) {\n if (!a) {\n return !b;\n }\n return (\n !!b &&\n cellPositionEquals(a.start, b.start) &&\n cellPositionEquals(a.end, b.end)\n );\n}\n\n// TODO test the use case when cellSelectionMode changes during dnd.\n// Cell range selection. This is experimental.\nexport function useRangeSelection(cellSelectionMode?: GridCellSelectionMode) {\n const mouseSelectionRef = useRef<{\n unsubscribe: () => void;\n start: CellPosition;\n }>();\n\n const keyboardSelectionRef = useRef<{\n start: CellPosition;\n }>();\n\n if (cellSelectionMode !== \"range\") {\n if (mouseSelectionRef.current) {\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }\n if (keyboardSelectionRef.current) {\n keyboardSelectionRef.current = undefined;\n }\n }\n\n const [selectedCellRange, setSelectedCellRange] = useState<\n CellRange | undefined\n >(undefined);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const { clientX, clientY } = event;\n const element = document.elementFromPoint(clientX, clientY) as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(element);\n\n setSelectedCellRange((old) => {\n const { start } = mouseSelectionRef.current!;\n const p: CellRange = { start, end: { rowIdx, colIdx } };\n return cellRangeEquals(old, p) ? old : p;\n });\n } catch (exc) {}\n }, []);\n\n const onMouseUp = useCallback((event: MouseEvent) => {\n if (!mouseSelectionRef.current) {\n throw new Error(`useRangeSelection state is not initialized`);\n }\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }, []);\n\n const onCellMouseDown = useCallback(\n (event: React.MouseEvent) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(target);\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n const pos: CellPosition = { rowIdx, colIdx };\n mouseSelectionRef.current = {\n start: pos,\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n };\n setSelectedCellRange({ start: pos, end: pos });\n } catch (exc) {}\n },\n [cellSelectionMode]\n );\n\n const onKeyboardRangeSelectionStart = useCallback((pos: CellPosition) => {\n keyboardSelectionRef.current = {\n start: pos,\n };\n }, []);\n\n const onKeyboardRangeSelectionEnd = useCallback(() => {\n keyboardSelectionRef.current = undefined;\n }, []);\n\n const onCursorMove = useCallback((pos: CellPosition) => {\n if (!keyboardSelectionRef.current) {\n return;\n }\n setSelectedCellRange((old) => {\n if (!keyboardSelectionRef.current) {\n return old;\n }\n const { start } = keyboardSelectionRef.current;\n const p: CellRange = { start, end: pos };\n return cellRangeEquals(old, p) ? old : p;\n });\n }, []);\n\n const selectRange = useCallback((range: CellRange) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n setSelectedCellRange(range);\n }, []);\n\n return {\n selectedCellRange,\n onCellMouseDown,\n onKeyboardRangeSelectionStart,\n onKeyboardRangeSelectionEnd,\n onCursorMove,\n selectRange,\n };\n}\n\nexport function useFocusableContent<T extends HTMLElement>() {\n const ref = useRef<T>(null);\n const [isFocusableContent, setFocusableContent] = useState<boolean>(false);\n\n const onFocus: FocusEventHandler<T> = (event) => {\n if (event.target === ref.current) {\n const nestedInteractive = ref.current.querySelector(`[tabindex=\"0\"]`);\n if (nestedInteractive) {\n (nestedInteractive as HTMLElement).focus();\n setFocusableContent(true);\n }\n }\n };\n\n return { ref, isFocusableContent, onFocus };\n}\n"],"names":["i"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./BaseCell.css";
3
1
  import { GridCellProps } from "./GridColumn";
4
2
  import { GridColumnModel } from "./Grid";
5
3
  export declare function getCellId<T>(rowKey: string, column: GridColumnModel<T>): string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { GridColumnModel } from "./Grid";
3
2
  export interface ColumnDataContext<T> {
4
3
  getColById: (id: string) => GridColumnModel<T> | undefined;
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { SortOrder } from "./Grid";
3
+ import { GridColumnProps } from "./GridColumn";
4
+ export interface ColumnSortContext {
5
+ sortByColumnId?: GridColumnProps["id"];
6
+ setSortByColumnId: (c: React.SetStateAction<GridColumnProps["id"]>) => void;
7
+ sortOrder: SortOrder;
8
+ setSortOrder: (o: SortOrder) => void;
9
+ onClickSortColumn: (colHeaderId: GridColumnProps["id"]) => void;
10
+ }
11
+ export declare const ColumnSortContext: React.Context<ColumnSortContext | undefined>;
12
+ export declare const useColumnSortContext: () => ColumnSortContext;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./CornerTag.css";
3
1
  export interface CornerTagProps {
4
2
  focusOnly?: boolean;
5
3
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare type FocusedPart = "header" | "body";
3
2
  export interface CursorContext {
4
3
  isFocused: boolean;
@@ -1,8 +1,6 @@
1
- /// <reference types="react" />
2
- import "./DropdownCellEditor.css";
3
1
  import { GridColumnModel, GridRowModel } from "./Grid";
4
2
  export interface DropdownCellEditorProps<T> {
5
- options: string[];
3
+ options: ReadonlyArray<string>;
6
4
  row?: GridRowModel<T>;
7
5
  column?: GridColumnModel<T>;
8
6
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface EditorContext {
3
2
  initialText?: string;
4
3
  editMode?: boolean;
@@ -1,12 +1,16 @@
1
1
  import { CSSProperties, ReactNode } from "react";
2
- import { GridColumnInfo } from "./GridColumn";
3
- import "./Grid.css";
2
+ import { CellValidationState, GridColumnInfo } from "./GridColumn";
4
3
  import { ColumnGroupProps } from "./ColumnGroup";
5
4
  export declare type ColumnSeparatorType = "regular" | "none" | "groupEdge" | "pinned";
6
5
  export declare type ColumnGroupRowSeparatorType = "first" | "regular" | "last";
7
6
  export declare type ColumnGroupColumnSeparatorType = "regular" | "none" | "pinned";
8
7
  export declare type GridRowSelectionMode = "single" | "multi" | "none";
9
8
  export declare type GridCellSelectionMode = "range" | "none";
9
+ export declare enum SortOrder {
10
+ ASC = "asc",
11
+ DESC = "desc",
12
+ NONE = "none"
13
+ }
10
14
  export declare type RowKeyGetter<T> = (row: T, index: number) => string;
11
15
  export declare type GridColumnMoveHandler = (columnId: string, fromIndex: number, toIndex: number) => void;
12
16
  export interface GridProps<T = any> {
@@ -77,6 +81,7 @@ export interface GridProps<T = any> {
77
81
  * If `true`, keyboard navigation is enabled for the header.
78
82
  * */
79
83
  headerIsFocusable?: boolean;
84
+ getRowValidationStatus?: (row: GridRowModel<T>) => CellValidationState | undefined;
80
85
  }
81
86
  export interface GridRowModel<T> {
82
87
  key: string;
@@ -1,7 +1,9 @@
1
1
  import { ComponentType, CSSProperties, KeyboardEvent, ReactNode } from "react";
2
- import { GridColumnModel, GridRowModel } from "./Grid";
2
+ import { GridColumnModel, GridRowModel, SortOrder } from "./Grid";
3
3
  export declare type GridColumnPin = "left" | "right" | null;
4
- export interface GridCellProps<T> {
4
+ export declare type CellValidationState = "error" | "warning" | "success";
5
+ declare type CellValidationType = "strong" | "light";
6
+ export interface GridCellProps<T, U = any> {
5
7
  row: GridRowModel<T>;
6
8
  column: GridColumnModel<T>;
7
9
  className?: string;
@@ -10,12 +12,20 @@ export interface GridCellProps<T> {
10
12
  isSelected?: boolean;
11
13
  isEditable?: boolean;
12
14
  children?: ReactNode;
15
+ align?: GridColumnProps["align"];
16
+ value?: U;
17
+ validationStatus?: CellValidationState;
18
+ validationMessage?: string;
19
+ validationType?: CellValidationType;
13
20
  }
14
21
  export interface GridCellValueProps<T, U = any> {
15
22
  row: GridRowModel<T>;
16
23
  column: GridColumnModel<T>;
17
24
  isFocused?: boolean;
18
25
  value?: U;
26
+ validationStatus?: CellValidationState;
27
+ validationMessage?: string;
28
+ validationType?: CellValidationType;
19
29
  }
20
30
  export interface HeaderCellProps<T> {
21
31
  column: GridColumnModel<T>;
@@ -35,6 +45,26 @@ export interface GridColumnProps<T = any> {
35
45
  * Unique identifier of the column.
36
46
  * */
37
47
  id: string;
48
+ /**
49
+ * Enables sorting (by sort order: `asc | desc | none`) for the column.
50
+ * To enable column header's keyboard navigation on sort,
51
+ * users need to set `headerIsFocusable` prop to `true` in Grid component.
52
+ * To customise how GridColumn data sorts, use also `customSort` or `onSortOrderChanged`.
53
+ * */
54
+ sortable?: boolean;
55
+ /**
56
+ * Custom sorting function. Use for client side sorting.
57
+ * */
58
+ customSort?: (args: {
59
+ rowData: T[];
60
+ sortOrder: SortOrder;
61
+ }) => T[];
62
+ /**
63
+ * Exposes GridColumn sort order. Use for server side sorting.
64
+ * */
65
+ onSortOrderChange?: (args: {
66
+ sortOrder: SortOrder;
67
+ }) => void;
38
68
  /**
39
69
  * Name is displayed on the column header by default.
40
70
  * */
@@ -77,6 +107,23 @@ export interface GridColumnProps<T = any> {
77
107
  * for the given row data item.
78
108
  * */
79
109
  getValue?: (rowData: T) => any;
110
+ /**
111
+ * Cell validation status getter. Should return one of the known validation status names: "none" | "error" | "warning"
112
+ * If you require a custom validation status, you can achieve that by providing a custom cell component.
113
+ * */
114
+ getValidationStatus?: (value: GridCellValueProps<T>) => CellValidationState | undefined;
115
+ /**
116
+ * Cell validation status message getter. Should return a string description of the validation state that can be used for the screen reader.
117
+ * This prop is optional but if you don't provide a function a default message will be used.
118
+ * */
119
+ getValidationMessage?: (value: GridCellValueProps<T>) => string | undefined;
120
+ /**
121
+ * Cell validation type. Determines the visual style of the validation. The available values are "strong" and "light". Strong will display the icon
122
+ * along side the background and border. Light will only affect border and background. Use light if you are validation the whole row, and optionally
123
+ * strong on one of the columns, and strong if you are validating user input on a particular cell.
124
+ * The default value is "light".
125
+ * */
126
+ validationType?: GridCellProps<T>["validationType"];
80
127
  /**
81
128
  * CSS class to be applied to the column header.
82
129
  * Useful for minor customizations
@@ -104,6 +151,10 @@ export interface GridColumnProps<T = any> {
104
151
  * Children is optional, and accepts non-rendered elements i.e. `CellEditor`
105
152
  */
106
153
  children?: ReactNode;
154
+ /**
155
+ * aria-label is optional, and accepts any string value
156
+ */
157
+ "aria-label"?: string;
107
158
  }
108
159
  export interface GridColumnInfo<T> {
109
160
  width: number;
@@ -111,3 +162,4 @@ export interface GridColumnInfo<T> {
111
162
  props: GridColumnProps<T>;
112
163
  }
113
164
  export declare const GridColumn: <T = any>(props: GridColumnProps<T>) => JSX.Element;
165
+ export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { GridColumnInfo } from "./GridColumn";
3
2
  import type { ColumnGroupProps } from "./ColumnGroup";
4
3
  import type { CellEditorInfo } from "./CellEditor";
@@ -1,6 +1,5 @@
1
- import "./GroupHeaderCell.css";
2
- import { GridColumnGroupModel } from "./Grid";
3
1
  import { ReactNode } from "react";
2
+ import { GridColumnGroupModel } from "./Grid";
4
3
  export interface GroupHeaderCellProps {
5
4
  group: GridColumnGroupModel;
6
5
  children: ReactNode;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ColumnGroupCellValueProps } from "./ColumnGroup";
3
2
  export declare function GroupHeaderCellValue(props: ColumnGroupCellValueProps): JSX.Element;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./HeaderCell.css";
3
1
  import { ColumnSeparatorType } from "./Grid";
4
2
  import { HeaderCellProps } from "./GridColumn";
5
3
  export interface HeaderCellSeparatorProps {
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { GridHeaderValueProps } from "./GridColumn";
3
2
  export declare function HeaderCellValue<T>(props: GridHeaderValueProps<T>): JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface LayoutContext {
3
2
  totalWidth: number;
4
3
  totalHeight: number;
@@ -1,7 +1,6 @@
1
+ import { ReactNode } from "react";
1
2
  import { GridCellValueProps, GridColumnProps } from "./GridColumn";
2
- import "./NumericColumn.css";
3
3
  import { GridColumnModel, GridRowModel } from "./Grid";
4
- import { ReactNode } from "react";
5
4
  export interface NumericColumnProps<T> extends GridColumnProps<T> {
6
5
  precision: number;
7
6
  }
@@ -1,4 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { GridCellValueProps } from "./GridColumn";
3
- import "./CheckboxCell.css";
4
2
  export declare function RowSelectionCheckboxCellValue<T>(props: GridCellValueProps<T>): JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { GridColumnProps } from "./GridColumn";
3
2
  export declare type RowSelectionCheckboxColumnProps<T> = Omit<GridColumnProps<T>, "width" | "name">;
4
3
  export declare function RowSelectionCheckboxColumn<T>(props: RowSelectionCheckboxColumnProps<T>): JSX.Element;
@@ -1,4 +1,2 @@
1
- /// <reference types="react" />
2
- import "./CheckboxCell.css";
3
1
  import { GridHeaderValueProps } from "./GridColumn";
4
2
  export declare function RowSelectionCheckboxHeaderCellValue<T>(props: GridHeaderValueProps<T>): JSX.Element;
@@ -1,4 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { GridCellValueProps } from "./GridColumn";
3
- import "./CheckboxCell.css";
4
2
  export declare function RowSelectionRadioCellValue<T>(props: GridCellValueProps<T>): JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { GridColumnProps } from "./GridColumn";
3
2
  export declare type RowSelectionRadioColumnProps<T> = Omit<GridColumnProps<T>, "width" | "name">;
4
3
  export declare function RowSelectionRadioColumn<T>(props: RowSelectionRadioColumnProps<T>): JSX.Element;
@@ -1,4 +1,2 @@
1
- /// <reference types="react" />
2
- import "./CheckboxCell.css";
3
1
  import { HeaderCellProps } from "./GridColumn";
4
2
  export declare function RowSelectionRadioHeaderCell<T>(props: HeaderCellProps<T>): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { CellValidationState, GridColumnProps } from "./GridColumn";
2
+ export declare const RowValidationStatusContext: import("react").Context<{
3
+ status?: CellValidationState | undefined;
4
+ }>;
5
+ export declare type RowValidationStatusColumnProps<T> = Omit<GridColumnProps<T>, "width" | "name">;
6
+ export declare function RowValidationStatusColumn<T>(props: RowValidationStatusColumnProps<T>): JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CellRange, SelectRowsOptions } from "./internal";
3
2
  export interface SelectionContext {
4
3
  selectedCellRange: CellRange | undefined;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./TextCellEditor.css";
3
1
  import { GridColumnModel, GridRowModel } from "./Grid";
4
2
  export interface TextCellEditorProps<T> {
5
3
  row?: GridRowModel<T>;
@@ -1,5 +1,4 @@
1
1
  import { HTMLAttributes } from "react";
2
- import "./Cell.css";
3
2
  import { ColumnSeparatorType } from "../Grid";
4
3
  export interface CellProps extends HTMLAttributes<HTMLTableCellElement> {
5
4
  isSelected?: boolean;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./CellMeasure.css";
3
1
  export interface CellMeasureProps<T> {
4
2
  setRowHeight: (rowHeight: number) => void;
5
3
  }
@@ -0,0 +1,3 @@
1
+ export declare const CellWarningIcon: JSX.Element;
2
+ export declare const CellErrorIcon: JSX.Element;
3
+ export declare const CellSuccessIcon: JSX.Element;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./ColumnDropTarget.css";
3
1
  export interface ColumnDropTargetProps {
4
2
  x?: number;
5
3
  }
@@ -1,7 +1,5 @@
1
- /// <reference types="react" />
2
- import "./ColumnGhost.css";
3
- import { ColumnDragState } from "./gridHooks";
4
1
  import { GridColumnModel, GridRowModel } from "../Grid";
2
+ import { ColumnDragState } from "./gridHooks";
5
3
  export interface ColumnGhostProps<T> {
6
4
  dragState?: ColumnDragState;
7
5
  columns: GridColumnModel<T>[];
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./Cursor.css";
3
1
  export interface CursorProps {
4
2
  }
5
3
  export declare function Cursor(props: CursorProps): JSX.Element;
@@ -1,4 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { GridCellValueProps } from "../GridColumn";
3
- import "./DefaultCellValue.css";
4
2
  export declare function DefaultCellValue<T>(props: GridCellValueProps<T>): JSX.Element;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { GridCellProps } from "../GridColumn";
3
- import "./FakeCell.css";
4
2
  export declare type FakeCellProps<T> = Pick<GridCellProps<T>, "row">;
5
3
  export declare function FakeCell<T>(props: FakeCellProps<T>): JSX.Element;
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare function FakeGroupCell(): JSX.Element;
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare function FakeHeaderCell(): JSX.Element;
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./GroupHeaderRow.css";
3
1
  import { GridColumnGroupModel } from "../Grid";
4
2
  export interface GroupHeaderRowProps<T> {
5
3
  groups: GridColumnGroupModel[];
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import "./HeaderRow.css";
3
1
  import { GridColumnModel } from "../Grid";
4
2
  export interface HeaderRowProps<T> {
5
3
  columns: GridColumnModel<T>[];
@@ -1,6 +1,6 @@
1
1
  import { RefObject } from "react";
2
- import "./LeftPart.css";
3
2
  import { GridColumnModel, GridRowModel } from "../Grid";
3
+ import { CellValidationState } from "../GridColumn";
4
4
  export interface LeftPartProps<T> {
5
5
  leftRef: RefObject<HTMLDivElement>;
6
6
  onWheel: EventListener;
@@ -10,5 +10,6 @@ export interface LeftPartProps<T> {
10
10
  hoverOverRowKey?: string;
11
11
  setHoverOverRowKey: (key: string | undefined) => void;
12
12
  zebra?: boolean;
13
+ getRowValidationStatus?: (row: GridRowModel<T>) => CellValidationState | undefined;
13
14
  }
14
15
  export declare function LeftPart<T>(props: LeftPartProps<T>): JSX.Element | null;