@highcharts/grid-pro 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/css/grid-pro.css +428 -432
  2. package/es-modules/Accessibility/A11yI18n.js +3 -3
  3. package/es-modules/Accessibility/Accessibility.js +4 -3
  4. package/es-modules/Accessibility/AccessibilityComponent.d.ts +1 -1
  5. package/es-modules/Accessibility/AccessibilityComponent.js +4 -3
  6. package/es-modules/Accessibility/Components/AnnotationsA11y.js +4 -3
  7. package/es-modules/Accessibility/Components/ContainerComponent.js +4 -3
  8. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +4 -3
  9. package/es-modules/Accessibility/Components/LegendComponent.js +4 -3
  10. package/es-modules/Accessibility/Components/MenuComponent.js +4 -3
  11. package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -3
  12. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +4 -3
  13. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +14 -3
  14. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +4 -3
  15. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +4 -3
  16. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -3
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +4 -3
  18. package/es-modules/Accessibility/Components/ZoomComponent.js +4 -3
  19. package/es-modules/Accessibility/FocusBorder.js +4 -3
  20. package/es-modules/Accessibility/HighContrastMode.js +4 -3
  21. package/es-modules/Accessibility/HighContrastTheme.js +4 -3
  22. package/es-modules/Accessibility/KeyboardNavigation.js +4 -3
  23. package/es-modules/Accessibility/KeyboardNavigationHandler.js +4 -3
  24. package/es-modules/Accessibility/Options/A11yDefaults.js +4 -3
  25. package/es-modules/Accessibility/Options/DeprecatedOptions.js +4 -3
  26. package/es-modules/Accessibility/Options/LangDefaults.js +4 -3
  27. package/es-modules/Accessibility/ProxyElement.js +4 -3
  28. package/es-modules/Accessibility/ProxyProvider.js +4 -3
  29. package/es-modules/Accessibility/Utils/Announcer.js +4 -3
  30. package/es-modules/Accessibility/Utils/ChartUtilities.js +4 -3
  31. package/es-modules/Accessibility/Utils/DOMElementProvider.js +4 -3
  32. package/es-modules/Accessibility/Utils/EventProvider.d.ts +1 -1
  33. package/es-modules/Accessibility/Utils/EventProvider.js +4 -3
  34. package/es-modules/Accessibility/Utils/HTMLUtilities.js +4 -3
  35. package/es-modules/Core/Animation/AnimationOptions.d.ts +42 -0
  36. package/es-modules/Core/Animation/AnimationOptions.js +10 -0
  37. package/es-modules/Core/Animation/AnimationUtilities.js +39 -3
  38. package/es-modules/Core/Animation/Fx.d.ts +1 -130
  39. package/es-modules/Core/Animation/Fx.js +13 -6
  40. package/es-modules/Core/Animation/FxBase.d.ts +1 -0
  41. package/es-modules/Core/Animation/FxBase.js +11 -0
  42. package/es-modules/Core/Callback.d.ts +49 -0
  43. package/es-modules/Core/Callback.js +10 -0
  44. package/es-modules/Core/Chart/Chart.d.ts +659 -400
  45. package/es-modules/Core/Chart/Chart.js +64 -54
  46. package/es-modules/Core/Chart/Chart3D.d.ts +123 -233
  47. package/es-modules/Core/Chart/Chart3D.js +22 -35
  48. package/es-modules/Core/Chart/ChartBase.d.ts +3 -0
  49. package/es-modules/Core/Chart/ChartBase.js +11 -0
  50. package/es-modules/Core/Chart/ChartDefaults.js +7 -12
  51. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +1 -55
  52. package/es-modules/Core/Chart/ChartNavigationComposition.js +13 -13
  53. package/es-modules/Core/Chart/ChartOptions.d.ts +1217 -0
  54. package/es-modules/Core/Chart/ChartOptions.js +10 -0
  55. package/es-modules/Core/Chart/GanttChart.d.ts +0 -38
  56. package/es-modules/Core/Chart/GanttChart.js +4 -3
  57. package/es-modules/Core/Chart/MapChart.d.ts +9 -4
  58. package/es-modules/Core/Chart/MapChart.js +13 -3
  59. package/es-modules/Core/Chart/StockChart.d.ts +0 -85
  60. package/es-modules/Core/Chart/StockChart.js +33 -15
  61. package/es-modules/Core/Color/Color.d.ts +16 -24
  62. package/es-modules/Core/Color/Color.js +26 -8
  63. package/es-modules/Core/Color/ColorString.d.ts +0 -23
  64. package/es-modules/Core/Color/ColorString.js +11 -0
  65. package/es-modules/Core/Color/ColorType.d.ts +0 -33
  66. package/es-modules/Core/Color/ColorType.js +11 -0
  67. package/es-modules/Core/Color/GradientColor.d.ts +0 -33
  68. package/es-modules/Core/Color/GradientColor.js +11 -0
  69. package/es-modules/Core/Color/Palettes.d.ts +1 -84
  70. package/es-modules/Core/Color/Palettes.js +2 -1
  71. package/es-modules/Core/Defaults.d.ts +6 -0
  72. package/es-modules/Core/Defaults.js +30 -66
  73. package/es-modules/Core/Foundation.d.ts +1 -19
  74. package/es-modules/Core/Foundation.js +7 -4
  75. package/es-modules/Core/Geometry/CircleObject.d.ts +5 -0
  76. package/es-modules/Core/Geometry/CircleObject.js +10 -0
  77. package/es-modules/Core/Geometry/CircleUtilities.d.ts +1 -189
  78. package/es-modules/Core/Geometry/CircleUtilities.js +17 -15
  79. package/es-modules/Core/Geometry/GeometryObject.d.ts +7 -0
  80. package/es-modules/Core/Geometry/GeometryObject.js +10 -0
  81. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +1 -48
  82. package/es-modules/Core/Geometry/GeometryUtilities.js +9 -7
  83. package/es-modules/Core/Geometry/IntersectionObject.d.ts +7 -0
  84. package/es-modules/Core/Geometry/IntersectionObject.js +10 -0
  85. package/es-modules/Core/Geometry/PolygonClip.d.ts +1 -19
  86. package/es-modules/Core/Geometry/PolygonClip.js +9 -7
  87. package/es-modules/Core/Globals.d.ts +9 -31
  88. package/es-modules/Core/Globals.js +9 -10
  89. package/es-modules/Core/GlobalsBase.d.ts +35 -0
  90. package/es-modules/Core/GlobalsBase.js +11 -0
  91. package/es-modules/Core/HttpUtilities.d.ts +54 -17
  92. package/es-modules/Core/HttpUtilities.js +15 -14
  93. package/es-modules/Core/JSON.d.ts +29 -0
  94. package/es-modules/Core/JSON.js +13 -0
  95. package/es-modules/Core/KeyboardEvent.d.ts +1 -0
  96. package/es-modules/Core/KeyboardEvent.js +11 -0
  97. package/es-modules/Core/MSPointer.d.ts +1 -74
  98. package/es-modules/Core/MSPointer.js +23 -13
  99. package/es-modules/Core/Math3D.d.ts +1 -117
  100. package/es-modules/Core/Math3D.js +13 -10
  101. package/es-modules/Core/Options.d.ts +334 -0
  102. package/es-modules/Core/Options.js +10 -0
  103. package/es-modules/Core/Pointer.d.ts +71 -445
  104. package/es-modules/Core/Pointer.js +51 -65
  105. package/es-modules/Core/PointerEvent.d.ts +18 -0
  106. package/es-modules/Core/PointerEvent.js +11 -0
  107. package/es-modules/Core/Renderer/AlignObject.d.ts +25 -27
  108. package/es-modules/Core/Renderer/AlignObject.js +11 -0
  109. package/es-modules/Core/Renderer/BBoxObject.d.ts +20 -31
  110. package/es-modules/Core/Renderer/BBoxObject.js +11 -0
  111. package/es-modules/Core/Renderer/CSSObject.d.ts +268 -59
  112. package/es-modules/Core/Renderer/CSSObject.js +10 -0
  113. package/es-modules/Core/Renderer/DOMElementType.d.ts +1 -33
  114. package/es-modules/Core/Renderer/DOMElementType.js +11 -0
  115. package/es-modules/Core/Renderer/DashStyleValue.d.ts +1 -27
  116. package/es-modules/Core/Renderer/DashStyleValue.js +11 -0
  117. package/es-modules/Core/Renderer/FontMetricsObject.d.ts +6 -26
  118. package/es-modules/Core/Renderer/FontMetricsObject.js +11 -0
  119. package/es-modules/Core/Renderer/HTML/AST.d.ts +3 -15
  120. package/es-modules/Core/Renderer/HTML/AST.js +22 -13
  121. package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +1 -25
  122. package/es-modules/Core/Renderer/HTML/HTMLAttributes.js +11 -0
  123. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +0 -54
  124. package/es-modules/Core/Renderer/HTML/HTMLElement.js +27 -22
  125. package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +15 -12
  126. package/es-modules/Core/Renderer/PolygonBoxObject.js +11 -0
  127. package/es-modules/Core/Renderer/Position3DObject.d.ts +6 -30
  128. package/es-modules/Core/Renderer/Position3DObject.js +11 -0
  129. package/es-modules/Core/Renderer/PositionObject.d.ts +9 -23
  130. package/es-modules/Core/Renderer/PositionObject.js +11 -0
  131. package/es-modules/Core/Renderer/RectangleObject.d.ts +6 -30
  132. package/es-modules/Core/Renderer/RectangleObject.js +11 -0
  133. package/es-modules/Core/Renderer/RendererRegistry.d.ts +1 -29
  134. package/es-modules/Core/Renderer/RendererRegistry.js +6 -3
  135. package/es-modules/Core/Renderer/RendererType.d.ts +1 -53
  136. package/es-modules/Core/Renderer/RendererType.js +11 -0
  137. package/es-modules/Core/Renderer/RendererUtilities.d.ts +1 -26
  138. package/es-modules/Core/Renderer/RendererUtilities.js +7 -4
  139. package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +26 -31
  140. package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +1 -44
  141. package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +15 -51
  142. package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +1 -42
  143. package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +1 -42
  144. package/es-modules/Core/Renderer/SVG/SVGElement.d.ts +459 -0
  145. package/es-modules/Core/Renderer/SVG/SVGElement3D.d.ts +1 -0
  146. package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +0 -23
  147. package/es-modules/Core/Renderer/SVG/SVGLabel.d.ts +14 -0
  148. package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +18 -56
  149. package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +0 -30
  150. package/es-modules/Core/Renderer/SVG/SVGRenderer.d.ts +652 -0
  151. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.d.ts +1 -0
  152. package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +0 -24
  153. package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +3 -26
  154. package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +1 -41
  155. package/es-modules/Core/Renderer/SVG/Symbols.d.ts +146 -0
  156. package/es-modules/Core/Renderer/SVG/TextBuilder.d.ts +1 -0
  157. package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +21 -30
  158. package/es-modules/Core/Renderer/ShadowOptionsObject.js +11 -0
  159. package/es-modules/Core/Renderer/SizeObject.d.ts +0 -23
  160. package/es-modules/Core/Renderer/SizeObject.js +11 -0
  161. package/es-modules/Core/Responsive.d.ts +91 -28
  162. package/es-modules/Core/Responsive.js +7 -8
  163. package/es-modules/Core/Templating.d.ts +16 -0
  164. package/es-modules/Core/Templating.js +9 -4
  165. package/es-modules/Core/Time.d.ts +10 -1
  166. package/es-modules/Core/Time.js +4 -3
  167. package/es-modules/Core/Tooltip.d.ts +63 -115
  168. package/es-modules/Core/Tooltip.js +61 -27
  169. package/es-modules/Core/TooltipOptions.d.ts +681 -0
  170. package/es-modules/Core/TooltipOptions.js +10 -0
  171. package/es-modules/Core/Utilities.d.ts +75 -106
  172. package/es-modules/Core/Utilities.js +19 -53
  173. package/es-modules/Data/ColumnUtils.js +3 -3
  174. package/es-modules/Data/Connectors/CSVConnector.js +3 -3
  175. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +3 -3
  176. package/es-modules/Data/Connectors/DataConnector.d.ts +12 -1
  177. package/es-modules/Data/Connectors/DataConnector.js +34 -4
  178. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +3 -3
  179. package/es-modules/Data/Connectors/DataConnectorType.d.ts +3 -3
  180. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +3 -3
  181. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +3 -3
  182. package/es-modules/Data/Connectors/HTMLTableConnector.js +3 -3
  183. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +3 -3
  184. package/es-modules/Data/Connectors/JSONConnector.js +3 -3
  185. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +3 -3
  186. package/es-modules/Data/Converters/CSVConverter.js +3 -3
  187. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +3 -3
  188. package/es-modules/Data/Converters/DataConverter.js +3 -3
  189. package/es-modules/Data/Converters/DataConverterType.d.ts +3 -3
  190. package/es-modules/Data/Converters/DataConverterUtils.js +3 -3
  191. package/es-modules/Data/Converters/GoogleSheetsConverter.js +3 -3
  192. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +3 -3
  193. package/es-modules/Data/Converters/HTMLTableConverter.js +3 -3
  194. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +3 -3
  195. package/es-modules/Data/Converters/JSONConverter.js +3 -3
  196. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +3 -3
  197. package/es-modules/Data/DataCursor.js +3 -3
  198. package/es-modules/Data/DataEvent.js +3 -3
  199. package/es-modules/Data/DataPool.js +3 -3
  200. package/es-modules/Data/DataPoolOptions.d.ts +3 -3
  201. package/es-modules/Data/DataTable.d.ts +6 -6
  202. package/es-modules/Data/DataTable.js +64 -30
  203. package/es-modules/Data/DataTableCore.d.ts +2 -2
  204. package/es-modules/Data/DataTableCore.js +5 -5
  205. package/es-modules/Data/DataTableOptions.js +3 -3
  206. package/es-modules/Data/Formula/Formula.js +3 -3
  207. package/es-modules/Data/Formula/FormulaParser.js +3 -3
  208. package/es-modules/Data/Formula/FormulaProcessor.js +3 -3
  209. package/es-modules/Data/Formula/FormulaTypes.js +3 -3
  210. package/es-modules/Data/Formula/Functions/ABS.js +3 -3
  211. package/es-modules/Data/Formula/Functions/AND.js +3 -3
  212. package/es-modules/Data/Formula/Functions/AVERAGE.js +3 -3
  213. package/es-modules/Data/Formula/Functions/AVERAGEA.js +3 -3
  214. package/es-modules/Data/Formula/Functions/COUNT.js +3 -3
  215. package/es-modules/Data/Formula/Functions/COUNTA.js +3 -3
  216. package/es-modules/Data/Formula/Functions/IF.js +3 -3
  217. package/es-modules/Data/Formula/Functions/ISNA.js +3 -3
  218. package/es-modules/Data/Formula/Functions/MAX.js +3 -3
  219. package/es-modules/Data/Formula/Functions/MEDIAN.js +3 -3
  220. package/es-modules/Data/Formula/Functions/MIN.js +3 -3
  221. package/es-modules/Data/Formula/Functions/MOD.js +3 -3
  222. package/es-modules/Data/Formula/Functions/MODE.js +3 -3
  223. package/es-modules/Data/Formula/Functions/NOT.js +3 -3
  224. package/es-modules/Data/Formula/Functions/OR.js +3 -3
  225. package/es-modules/Data/Formula/Functions/PRODUCT.js +3 -3
  226. package/es-modules/Data/Formula/Functions/SUM.js +3 -3
  227. package/es-modules/Data/Formula/Functions/XOR.js +3 -3
  228. package/es-modules/Data/Modifiers/ChainModifier.js +3 -3
  229. package/es-modules/Data/Modifiers/ChainModifierOptions.js +3 -3
  230. package/es-modules/Data/Modifiers/DataModifier.js +3 -3
  231. package/es-modules/Data/Modifiers/DataModifierEvent.js +3 -3
  232. package/es-modules/Data/Modifiers/DataModifierOptions.js +3 -3
  233. package/es-modules/Data/Modifiers/DataModifierType.d.ts +3 -3
  234. package/es-modules/Data/Modifiers/FilterModifier.js +3 -3
  235. package/es-modules/Data/Modifiers/FilterModifierOptions.js +3 -3
  236. package/es-modules/Data/Modifiers/InvertModifier.js +3 -3
  237. package/es-modules/Data/Modifiers/InvertModifierOptions.js +3 -3
  238. package/es-modules/Data/Modifiers/MathModifier.js +3 -3
  239. package/es-modules/Data/Modifiers/MathModifierOptions.js +3 -3
  240. package/es-modules/Data/Modifiers/RangeModifier.js +3 -3
  241. package/es-modules/Data/Modifiers/RangeModifierOptions.js +3 -3
  242. package/es-modules/Data/Modifiers/SortModifier.js +32 -6
  243. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +41 -4
  244. package/es-modules/Data/Modifiers/SortModifierOptions.js +3 -3
  245. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +77 -0
  246. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +4 -3
  247. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +67 -0
  248. package/es-modules/Grid/Core/Accessibility/Accessibility.js +176 -3
  249. package/es-modules/Grid/Core/Credits.js +3 -3
  250. package/es-modules/Grid/Core/Defaults.js +17 -5
  251. package/es-modules/Grid/Core/Globals.d.ts +4 -4
  252. package/es-modules/Grid/Core/Globals.js +5 -5
  253. package/es-modules/Grid/Core/Grid.d.ts +12 -1
  254. package/es-modules/Grid/Core/Grid.js +110 -8
  255. package/es-modules/Grid/Core/GridUtils.js +3 -3
  256. package/es-modules/Grid/Core/Options.d.ts +17 -1
  257. package/es-modules/Grid/Core/Options.js +3 -3
  258. package/es-modules/Grid/Core/Pagination/Pagination.js +3 -3
  259. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +0 -40
  260. package/es-modules/Grid/Core/Pagination/PaginationOptions.js +11 -0
  261. package/es-modules/Grid/Core/Querying/FilteringController.js +3 -3
  262. package/es-modules/Grid/Core/Querying/PaginationController.js +3 -3
  263. package/es-modules/Grid/Core/Querying/QueryingController.js +3 -3
  264. package/es-modules/Grid/Core/Querying/SortingController.d.ts +15 -0
  265. package/es-modules/Grid/Core/Querying/SortingController.js +89 -51
  266. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +3 -3
  267. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +2 -2
  268. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +3 -3
  269. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +3 -3
  270. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +3 -3
  271. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +12 -2
  272. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +85 -18
  273. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +3 -3
  274. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +37 -0
  275. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +137 -26
  276. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +9 -2
  277. package/es-modules/Grid/Core/Table/Body/TableCell.js +15 -8
  278. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +18 -0
  279. package/es-modules/Grid/Core/Table/Body/TableRow.js +56 -10
  280. package/es-modules/Grid/Core/Table/Cell.d.ts +0 -7
  281. package/es-modules/Grid/Core/Table/Cell.js +5 -3
  282. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +3 -3
  283. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +4 -4
  284. package/es-modules/Grid/Core/Table/Column.d.ts +1 -1
  285. package/es-modules/Grid/Core/Table/Column.js +3 -3
  286. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +3 -3
  287. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +3 -3
  288. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +3 -3
  289. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +3 -3
  290. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +3 -3
  291. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +14 -5
  292. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +3 -3
  293. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +3 -3
  294. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +9 -0
  295. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +35 -6
  296. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +5 -4
  297. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +11 -7
  298. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +3 -3
  299. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +3 -3
  300. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +5 -1
  301. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +92 -9
  302. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +2 -2
  303. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +8 -7
  304. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +3 -3
  305. package/es-modules/Grid/Core/Table/Header/TableHeader.js +3 -3
  306. package/es-modules/Grid/Core/Table/Row.js +3 -3
  307. package/es-modules/Grid/Core/Table/Table.d.ts +30 -0
  308. package/es-modules/Grid/Core/Table/Table.js +118 -7
  309. package/es-modules/Grid/Core/UI/Button.js +3 -3
  310. package/es-modules/Grid/Core/UI/ContextMenu.js +3 -3
  311. package/es-modules/Grid/Core/UI/ContextMenuButton.js +3 -3
  312. package/es-modules/Grid/Core/UI/Popup.js +3 -3
  313. package/es-modules/Grid/Core/UI/SvgIcons.js +3 -3
  314. package/es-modules/Grid/Core/UI/Toolbar.js +3 -3
  315. package/es-modules/Grid/Core/UI/ToolbarButton.js +3 -3
  316. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +3 -44
  317. package/es-modules/Grid/Pro/CellEditing/CellEditMode.js +16 -0
  318. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +3 -3
  319. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +3 -3
  320. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +3 -3
  321. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +3 -3
  322. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +3 -3
  323. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +1 -34
  324. package/es-modules/Grid/Pro/CellRendering/CellRendererType.js +15 -0
  325. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +3 -3
  326. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +3 -3
  327. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +3 -3
  328. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +3 -3
  329. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +3 -3
  330. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +3 -3
  331. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -3
  332. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +7 -5
  333. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +3 -3
  334. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +3 -3
  335. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +3 -3
  336. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +3 -3
  337. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +3 -3
  338. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +3 -3
  339. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +3 -3
  340. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +3 -3
  341. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +3 -3
  342. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +3 -3
  343. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +3 -3
  344. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +3 -3
  345. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +3 -3
  346. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +3 -3
  347. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +10 -1
  348. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +50 -8
  349. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +3 -3
  350. package/es-modules/Grid/Pro/Credits/CreditsPro.js +3 -3
  351. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +3 -3
  352. package/es-modules/Grid/Pro/Export/Exporting.js +4 -5
  353. package/es-modules/Grid/Pro/Export/ExportingComposition.js +3 -3
  354. package/es-modules/Grid/Pro/GridEvents.d.ts +1 -0
  355. package/es-modules/Grid/Pro/GridEvents.js +3 -3
  356. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +3 -3
  357. package/es-modules/Grid/index.js +3 -3
  358. package/es-modules/Shared/BaseForm.js +3 -3
  359. package/es-modules/Shared/DownloadURL.d.ts +1 -85
  360. package/es-modules/Shared/DownloadURL.js +14 -11
  361. package/es-modules/Shared/LangOptionsCore.d.ts +4 -3
  362. package/es-modules/Shared/TimeBase.d.ts +1 -46
  363. package/es-modules/Shared/TimeBase.js +8 -7
  364. package/es-modules/Shared/Types.d.ts +4 -3
  365. package/es-modules/masters/grid-pro.src.d.ts +8 -13
  366. package/es-modules/masters/grid-pro.src.js +15 -7
  367. package/grid-pro.d.ts +8 -13
  368. package/grid-pro.js +6 -5
  369. package/grid-pro.js.map +1 -1
  370. package/grid-pro.src.d.ts +8 -13
  371. package/grid-pro.src.js +1923 -721
  372. package/package.json +1 -9
  373. package/es-modules/Grid/Pro/highcharts.d.ts +0 -7
@@ -20,6 +20,14 @@ declare class Accessibility {
20
20
  * The timeout for the announcer element removal.
21
21
  */
22
22
  private announcerTimeout?;
23
+ /**
24
+ * The before Grid screen reader section element.
25
+ */
26
+ private beforeGridElement;
27
+ /**
28
+ * The after Grid screen reader section element.
29
+ */
30
+ private afterGridElement;
23
31
  /**
24
32
  * Construct the accessibility object.
25
33
  *
@@ -94,6 +102,65 @@ declare class Accessibility {
94
102
  * Set a11y options for the Grid.
95
103
  */
96
104
  setA11yOptions(): void;
105
+ /**
106
+ * Adds the screen reader section before or after the Grid.
107
+ *
108
+ * @param placement
109
+ * Either 'before' or 'after'.
110
+ */
111
+ addScreenReaderSection(placement: 'before' | 'after'): void;
112
+ /**
113
+ * Sets the accessibility attributes for the screen reader section.
114
+ *
115
+ * @param sectionElement
116
+ * The section element.
117
+ *
118
+ * @param placement
119
+ * Either 'before' or 'after'.
120
+ */
121
+ setScreenReaderSectionAttributes(sectionElement: HTMLElement, placement: 'before' | 'after'): void;
122
+ /**
123
+ * Gets the default formatter for the before-Grid screen reader section.
124
+ * @private
125
+ */
126
+ private defaultBeforeFormatter;
127
+ /**
128
+ * Checks if a string is already wrapped in a heading tag (h1-h6).
129
+ * @private
130
+ *
131
+ * @param text
132
+ * The text to check.
133
+ *
134
+ * @returns
135
+ * True if the text is wrapped in a heading tag.
136
+ */
137
+ private isWrappedInHeadingTag;
138
+ /**
139
+ * Formats a string with template variables.
140
+ *
141
+ * @param format
142
+ * The format string.
143
+ *
144
+ * @param context
145
+ * The context object.
146
+ *
147
+ * @private
148
+ */
149
+ private formatTemplateString;
150
+ /**
151
+ * Gets the default formatter for the after-Grid screen reader section.
152
+ * @private
153
+ */
154
+ private defaultAfterFormatter;
155
+ /**
156
+ * Strips empty HTML tags from a string recursively.
157
+ *
158
+ * @param string
159
+ * The string to strip empty HTML tags from.
160
+ *
161
+ * @private
162
+ */
163
+ private stripEmptyHTMLTags;
97
164
  /**
98
165
  * Destroy the accessibility controller.
99
166
  */
@@ -2,15 +2,16 @@
2
2
  *
3
3
  * Grid Accessibility class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
13
13
  * - Sebastian Bochan
14
+ * - Kamil Kubik
14
15
  *
15
16
  * */
16
17
  'use strict';
@@ -18,7 +19,12 @@ import whcm from '../../../Accessibility/HighContrastMode.js';
18
19
  import Globals from '../Globals.js';
19
20
  import ColumnFiltering from '../Table/Actions/ColumnFiltering/ColumnFiltering.js';
20
21
  import GridUtils from '../GridUtils.js';
22
+ import AST from '../../../Core/Renderer/HTML/AST.js';
23
+ import U from '../../../Core/Utilities.js';
24
+ import HTMLU from '../../../Accessibility/Utils/HTMLUtilities.js';
21
25
  const { formatText } = GridUtils;
26
+ const { replaceNested } = U;
27
+ const { getHeadingTagNameForElement } = HTMLU;
22
28
  /**
23
29
  * Representing the accessibility functionalities for the Data Grid.
24
30
  */
@@ -35,6 +41,14 @@ class Accessibility {
35
41
  * The Grid Table instance which the accessibility controller belong to.
36
42
  */
37
43
  constructor(grid) {
44
+ /**
45
+ * The before Grid screen reader section element.
46
+ */
47
+ this.beforeGridElement = null;
48
+ /**
49
+ * The after Grid screen reader section element.
50
+ */
51
+ this.afterGridElement = null;
38
52
  this.grid = grid;
39
53
  this.element = document.createElement('div');
40
54
  this.element.classList.add(Globals.getClassName('visuallyHidden'));
@@ -214,10 +228,169 @@ class Accessibility {
214
228
  }
215
229
  this.addHighContrast();
216
230
  }
231
+ /**
232
+ * Adds the screen reader section before or after the Grid.
233
+ *
234
+ * @param placement
235
+ * Either 'before' or 'after'.
236
+ */
237
+ addScreenReaderSection(placement) {
238
+ const grid = this.grid;
239
+ const isBefore = placement === 'before';
240
+ // Get the screen reader section content.
241
+ const defaultFormatter = isBefore ?
242
+ this.defaultBeforeFormatter() :
243
+ this.defaultAfterFormatter();
244
+ const formatter = grid.options?.accessibility?.screenReaderSection?.[`${placement}GridFormatter`];
245
+ const content = formatter ? formatter(grid) : defaultFormatter;
246
+ // Create the screen reader section element.
247
+ const sectionElement = this[`${placement}GridElement`] = (this[`${placement}GridElement`] || document.createElement('div'));
248
+ // Create the hidden element.
249
+ const hiddenElement = sectionElement.firstChild ||
250
+ document.createElement('div');
251
+ if (content) {
252
+ this.setScreenReaderSectionAttributes(sectionElement, placement);
253
+ AST.setElementHTML(hiddenElement, content);
254
+ // Append only if not already a child.
255
+ if (hiddenElement.parentNode !== sectionElement) {
256
+ sectionElement.appendChild(hiddenElement);
257
+ }
258
+ // Insert only if not already in the DOM.
259
+ const gridContainer = grid.container;
260
+ if (!sectionElement.parentNode && gridContainer) {
261
+ if (isBefore) {
262
+ gridContainer.insertBefore(sectionElement, gridContainer.firstChild);
263
+ }
264
+ else {
265
+ gridContainer.appendChild(sectionElement);
266
+ }
267
+ }
268
+ hiddenElement.classList.add(Globals.getClassName('visuallyHidden'));
269
+ }
270
+ else {
271
+ if (sectionElement.parentNode) {
272
+ sectionElement.parentNode.removeChild(sectionElement);
273
+ }
274
+ this[`${placement}GridElement`] = null;
275
+ }
276
+ }
277
+ /**
278
+ * Sets the accessibility attributes for the screen reader section.
279
+ *
280
+ * @param sectionElement
281
+ * The section element.
282
+ *
283
+ * @param placement
284
+ * Either 'before' or 'after'.
285
+ */
286
+ setScreenReaderSectionAttributes(sectionElement, placement) {
287
+ const grid = this.grid;
288
+ sectionElement.setAttribute('id', `grid-screen-reader-region-${placement}-${grid.id}`);
289
+ const regionLabel = grid.options?.lang?.accessibility?.screenReaderSection?.[`${placement}RegionLabel`];
290
+ if (regionLabel) {
291
+ sectionElement.setAttribute('aria-label', regionLabel);
292
+ sectionElement.setAttribute('role', 'region');
293
+ }
294
+ // Position the section relatively to the Grid.
295
+ sectionElement.style.position = 'relative';
296
+ }
297
+ /**
298
+ * Gets the default formatter for the before-Grid screen reader section.
299
+ * @private
300
+ */
301
+ defaultBeforeFormatter() {
302
+ const grid = this.grid;
303
+ const { container, dataTable, options } = grid;
304
+ const format = options?.accessibility?.screenReaderSection?.beforeGridFormat;
305
+ if (!format || !container) {
306
+ return '';
307
+ }
308
+ const gridTitle = options?.caption?.text;
309
+ let formattedGridTitle = '';
310
+ if (gridTitle) {
311
+ if (this.isWrappedInHeadingTag(gridTitle)) {
312
+ formattedGridTitle = gridTitle;
313
+ }
314
+ else {
315
+ const headingTag = getHeadingTagNameForElement(container);
316
+ formattedGridTitle =
317
+ `<${headingTag}>${gridTitle}</${headingTag}>`;
318
+ }
319
+ }
320
+ const context = {
321
+ gridTitle: formattedGridTitle,
322
+ gridDescription: options?.description?.text || '',
323
+ rowCount: dataTable?.rowCount || 0,
324
+ columnCount: (dataTable?.getColumnIds() || []).length
325
+ };
326
+ const formattedString = this.formatTemplateString(format, context);
327
+ return this.stripEmptyHTMLTags(formattedString);
328
+ }
329
+ /**
330
+ * Checks if a string is already wrapped in a heading tag (h1-h6).
331
+ * @private
332
+ *
333
+ * @param text
334
+ * The text to check.
335
+ *
336
+ * @returns
337
+ * True if the text is wrapped in a heading tag.
338
+ */
339
+ isWrappedInHeadingTag(text) {
340
+ return /^<h([1-6])[^>]*>[\s\S]*<\/h\1>$/i.test(text.trim());
341
+ }
342
+ /**
343
+ * Formats a string with template variables.
344
+ *
345
+ * @param format
346
+ * The format string.
347
+ *
348
+ * @param context
349
+ * The context object.
350
+ *
351
+ * @private
352
+ */
353
+ formatTemplateString(format, context) {
354
+ return format.replace(/\{(\w+)\}/g, (_, key) => (key in context ? String(context[key]) : `{${key}}`));
355
+ }
356
+ /**
357
+ * Gets the default formatter for the after-Grid screen reader section.
358
+ * @private
359
+ */
360
+ defaultAfterFormatter() {
361
+ const grid = this.grid;
362
+ const format = grid.options?.accessibility?.screenReaderSection
363
+ ?.afterGridFormat;
364
+ if (!format) {
365
+ return '';
366
+ }
367
+ return this.stripEmptyHTMLTags(format);
368
+ }
369
+ /**
370
+ * Strips empty HTML tags from a string recursively.
371
+ *
372
+ * @param string
373
+ * The string to strip empty HTML tags from.
374
+ *
375
+ * @private
376
+ */
377
+ stripEmptyHTMLTags(string) {
378
+ return replaceNested(string, [/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g, '']);
379
+ }
217
380
  /**
218
381
  * Destroy the accessibility controller.
219
382
  */
220
383
  destroy() {
384
+ // Removes the screen reader before section.
385
+ const beforeGridElement = this.beforeGridElement;
386
+ if (beforeGridElement?.parentNode) {
387
+ beforeGridElement.parentNode.removeChild(beforeGridElement);
388
+ }
389
+ // Removes the screen reader after section.
390
+ const afterGridElement = this.afterGridElement;
391
+ if (afterGridElement?.parentNode) {
392
+ afterGridElement.parentNode.removeChild(afterGridElement);
393
+ }
221
394
  this.element.remove();
222
395
  this.announcerElement.remove();
223
396
  clearTimeout(this.announcerTimeout);
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid Credits class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid default options
4
4
  *
5
- * (c) 2009-2025 Highsoft AS
5
+ * (c) 2009-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
@@ -28,7 +28,8 @@ export const defaultLangOptions = {
28
28
  ascending: 'Sorted ascending.',
29
29
  descending: 'Sorted descending.',
30
30
  none: 'Not sorted.'
31
- }
31
+ },
32
+ priority: 'Priority {priority}.'
32
33
  },
33
34
  pagination: {
34
35
  announcements: {
@@ -45,6 +46,10 @@ export const defaultLangOptions = {
45
46
  filterCleared: 'Filter cleared for {columnId}. ' +
46
47
  '{rowsCount} results found.'
47
48
  }
49
+ },
50
+ screenReaderSection: {
51
+ beforeRegionLabel: '',
52
+ afterRegionLabel: ''
48
53
  }
49
54
  },
50
55
  loading: 'Loading...',
@@ -95,6 +100,13 @@ export const defaultOptions = {
95
100
  announcements: {
96
101
  sorting: true,
97
102
  filtering: true
103
+ },
104
+ screenReaderSection: {
105
+ beforeGridFormat: '{gridTitle}' +
106
+ '<div>{gridDescription}</div>' +
107
+ '<div>Grid with {rowCount} rows and {columnCount}' +
108
+ ' columns.</div>',
109
+ afterGridFormat: 'End of Grid.'
98
110
  }
99
111
  },
100
112
  time: {
@@ -120,7 +132,7 @@ export const defaultOptions = {
120
132
  },
121
133
  columnDefaults: {
122
134
  sorting: {
123
- sortable: true
135
+ enabled: true
124
136
  },
125
137
  filtering: {
126
138
  inline: false
@@ -3,7 +3,7 @@ export type DeepRequired<T> = {
3
3
  };
4
4
  export type ClassNameKey = keyof typeof rawClassNames;
5
5
  export declare const classNamePrefix: string;
6
- export declare const version = "2.1.0";
6
+ export declare const version = "2.2.0";
7
7
  export declare const rawClassNames: {
8
8
  readonly container: "container";
9
9
  readonly tableElement: "table";
@@ -15,7 +15,6 @@ export declare const rawClassNames: {
15
15
  readonly rowEven: "row-even";
16
16
  readonly rowOdd: "row-odd";
17
17
  readonly hoveredRow: "hovered-row";
18
- readonly columnElement: "column";
19
18
  readonly hoveredCell: "hovered-cell";
20
19
  readonly hoveredColumn: "hovered-column";
21
20
  readonly syncedRow: "synced-row";
@@ -41,6 +40,7 @@ export declare const rawClassNames: {
41
40
  readonly columnSortableIcon: "column-sortable-icon";
42
41
  readonly columnSortedAsc: "column-sorted-asc";
43
42
  readonly columnSortedDesc: "column-sorted-desc";
43
+ readonly sortPriorityIndicator: "sort-priority-indicator";
44
44
  readonly resizableContent: "resizable-content";
45
45
  readonly resizerHandles: "column-resizer";
46
46
  readonly resizedColumn: "column-resized";
@@ -90,7 +90,7 @@ export declare const isSafari: boolean;
90
90
  export declare const getClassName: (classNameKey: ClassNameKey) => string;
91
91
  declare const _default: {
92
92
  readonly classNamePrefix: string;
93
- readonly version: "2.1.0";
93
+ readonly version: "2.2.0";
94
94
  readonly rawClassNames: {
95
95
  readonly container: "container";
96
96
  readonly tableElement: "table";
@@ -102,7 +102,6 @@ declare const _default: {
102
102
  readonly rowEven: "row-even";
103
103
  readonly rowOdd: "row-odd";
104
104
  readonly hoveredRow: "hovered-row";
105
- readonly columnElement: "column";
106
105
  readonly hoveredCell: "hovered-cell";
107
106
  readonly hoveredColumn: "hovered-column";
108
107
  readonly syncedRow: "synced-row";
@@ -128,6 +127,7 @@ declare const _default: {
128
127
  readonly columnSortableIcon: "column-sortable-icon";
129
128
  readonly columnSortedAsc: "column-sorted-asc";
130
129
  readonly columnSortedDesc: "column-sorted-desc";
130
+ readonly sortPriorityIndicator: "sort-priority-indicator";
131
131
  readonly resizableContent: "resizable-content";
132
132
  readonly resizerHandles: "column-resizer";
133
133
  readonly resizedColumn: "column-resized";
@@ -1,10 +1,10 @@
1
1
  /* *
2
2
  *
3
- * (c) 2009-2025 Highsoft AS
3
+ * (c) 2009-2026 Highsoft AS
4
4
  *
5
- * License: www.highcharts.com/license
5
+ * A commercial license may be required depending on use.
6
+ * See www.highcharts.com/license
6
7
  *
7
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
8
  *
9
9
  * Authors:
10
10
  * - Dawid Dragula
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * */
20
20
  export const classNamePrefix = 'hcg-';
21
- export const version = '2.1.0';
21
+ export const version = '2.2.0';
22
22
  export const rawClassNames = {
23
23
  container: 'container',
24
24
  tableElement: 'table',
@@ -30,7 +30,6 @@ export const rawClassNames = {
30
30
  rowEven: 'row-even',
31
31
  rowOdd: 'row-odd',
32
32
  hoveredRow: 'hovered-row',
33
- columnElement: 'column',
34
33
  hoveredCell: 'hovered-cell',
35
34
  hoveredColumn: 'hovered-column',
36
35
  syncedRow: 'synced-row',
@@ -56,6 +55,7 @@ export const rawClassNames = {
56
55
  columnSortableIcon: 'column-sortable-icon',
57
56
  columnSortedAsc: 'column-sorted-asc',
58
57
  columnSortedDesc: 'column-sorted-desc',
58
+ sortPriorityIndicator: 'sort-priority-indicator',
59
59
  resizableContent: 'resizable-content',
60
60
  resizerHandles: 'column-resizer',
61
61
  resizedColumn: 'column-resized',
@@ -1,4 +1,4 @@
1
- import type { Options, GroupedHeaderOptions } from './Options';
1
+ import type { ColumnSortingOrder, Options, GroupedHeaderOptions } from './Options';
2
2
  import type { NoIdColumnOptions } from './Table/Column';
3
3
  import type Popup from './UI/Popup.js';
4
4
  import Accessibility from './Accessibility/Accessibility.js';
@@ -217,6 +217,17 @@ export declare class Grid {
217
217
  redraw(): Promise<void>;
218
218
  updateColumn(columnId: string, options: NoIdColumnOptions, render?: boolean, overwrite?: boolean): Promise<void>;
219
219
  updateColumn(columnId: string, options: NoIdColumnOptions, render?: false, overwrite?: boolean): void;
220
+ /**
221
+ * Sets the sorting order for one or more columns. Provide the sortings
222
+ * in priority order. Use `null` to clear sorting.
223
+ *
224
+ * @param sortings
225
+ * The sorting definition in priority order.
226
+ */
227
+ setSorting(sortings: Array<{
228
+ columnId: string;
229
+ order: ColumnSortingOrder;
230
+ }> | null): Promise<void>;
220
231
  private render;
221
232
  /**
222
233
  * Hovers the row with the provided index. It removes the hover effect from
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Highcharts Grid class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
@@ -25,8 +25,8 @@ import QueryingController from './Querying/QueryingController.js';
25
25
  import Globals from './Globals.js';
26
26
  import TimeBase from '../../Shared/TimeBase.js';
27
27
  import Pagination from './Pagination/Pagination.js';
28
- const { makeHTMLElement, setHTMLContent } = GridUtils;
29
- const { defined, diffObjects, extend, fireEvent, getStyle, merge, pick } = U;
28
+ const { makeHTMLElement, setHTMLContent, createOptionsProxy } = GridUtils;
29
+ const { defined, diffObjects, extend, fireEvent, merge, pick } = U;
30
30
  /* *
31
31
  *
32
32
  * Class
@@ -153,8 +153,8 @@ export class Grid {
153
153
  throw new Error('Rendering div not found. It is unable to find the HTML ' +
154
154
  'element to render the Grid in.');
155
155
  }
156
- this.initialContainerHeight = getStyle(container, 'height', true) || 0;
157
156
  this.container = container;
157
+ this.container.style.minHeight = 0 + 'px';
158
158
  this.container.innerHTML = AST.emptyHTML;
159
159
  this.contentWrapper = makeHTMLElement('div', {
160
160
  className: Globals.getClassName('container')
@@ -195,6 +195,9 @@ export class Grid {
195
195
  merge(true, diff, diffObjects(newOptions, this.userOptions));
196
196
  this.userOptions = merge(this.userOptions, newOptions);
197
197
  this.options = merge(this.options ?? defaultOptions, this.userOptions);
198
+ this.viewport?.columns.forEach((column) => {
199
+ column.options = createOptionsProxy(this.columnOptionsMap?.[column.id]?.options ?? {}, this.options?.columnDefaults);
200
+ });
198
201
  return diff;
199
202
  }
200
203
  /**
@@ -496,7 +499,9 @@ export class Grid {
496
499
  fireEvent(this, 'beforeRedraw');
497
500
  const flags = this.dirtyFlags;
498
501
  if (flags.has('grid')) {
499
- return await this.render();
502
+ await this.render();
503
+ fireEvent(this, 'afterRedraw');
504
+ return;
500
505
  }
501
506
  const { viewport: vp, pagination } = this;
502
507
  const colResizing = vp?.columnResizing;
@@ -583,6 +588,90 @@ export class Grid {
583
588
  columnId
584
589
  });
585
590
  }
591
+ /**
592
+ * Sets the sorting order for one or more columns. Provide the sortings
593
+ * in priority order. Use `null` to clear sorting.
594
+ *
595
+ * @param sortings
596
+ * The sorting definition in priority order.
597
+ */
598
+ async setSorting(sortings) {
599
+ const viewport = this.viewport;
600
+ if (!viewport) {
601
+ return;
602
+ }
603
+ if (viewport.validator?.errorCell) {
604
+ return;
605
+ }
606
+ const normalized = (sortings || []).filter((sorting) => !!(sorting.columnId && sorting.order));
607
+ const sortingController = this.querying.sorting;
608
+ const previousSortings = sortingController.currentSortings || [];
609
+ const eventColumnIds = new Set();
610
+ for (const sorting of previousSortings) {
611
+ if (sorting.columnId) {
612
+ eventColumnIds.add(sorting.columnId);
613
+ }
614
+ }
615
+ for (const sorting of normalized) {
616
+ eventColumnIds.add(sorting.columnId);
617
+ }
618
+ const eventColumns = Array.from(eventColumnIds)
619
+ .map((columnId) => {
620
+ const column = viewport.getColumn(columnId);
621
+ if (!column) {
622
+ return null;
623
+ }
624
+ const order = normalized.find((sorting) => sorting.columnId === columnId)?.order || null;
625
+ return { column, order };
626
+ })
627
+ .filter((item) => !!item);
628
+ for (const { column, order } of eventColumns) {
629
+ [column, this].forEach((source) => {
630
+ fireEvent(source, 'beforeSort', {
631
+ target: column,
632
+ order
633
+ });
634
+ });
635
+ }
636
+ sortingController.setSorting(normalized);
637
+ await viewport.updateRows();
638
+ const currentSortings = sortingController.currentSortings || [];
639
+ const hasMultiple = currentSortings.length > 1;
640
+ for (const column of viewport.columns) {
641
+ const sortingIndex = currentSortings.findIndex((sorting) => sorting.columnId === column.id);
642
+ if (sortingIndex !== -1 && currentSortings[sortingIndex].order) {
643
+ const sorting = currentSortings[sortingIndex];
644
+ const sortingOptions = {
645
+ order: sorting.order
646
+ };
647
+ if (hasMultiple) {
648
+ sortingOptions.priority = sortingIndex + 1;
649
+ }
650
+ column.setOptions({ sorting: sortingOptions });
651
+ if (!hasMultiple) {
652
+ delete column.options.sorting?.priority;
653
+ }
654
+ }
655
+ else {
656
+ delete column.options.sorting?.order;
657
+ delete column.options.sorting?.priority;
658
+ if (column.options.sorting &&
659
+ Object.keys(column.options.sorting).length < 1) {
660
+ delete column.options.sorting;
661
+ }
662
+ }
663
+ column.sorting?.refreshHeaderAttributes();
664
+ }
665
+ this.accessibility?.userSortedColumn(currentSortings[0]?.order || null);
666
+ for (const { column, order } of eventColumns) {
667
+ [column, this].forEach((source) => {
668
+ fireEvent(source, 'afterSort', {
669
+ target: column,
670
+ order
671
+ });
672
+ });
673
+ }
674
+ }
586
675
  async render() {
587
676
  if (this.isRendered) {
588
677
  this.destroy(true);
@@ -765,7 +854,7 @@ export class Grid {
765
854
  else {
766
855
  this.renderNoData();
767
856
  }
768
- this.accessibility?.setA11yOptions();
857
+ this.renderAccessibility();
769
858
  // Render bottom pagination, footer pagination,
770
859
  // or custom container pagination (after table).
771
860
  if (paginationPosition !== 'top') {
@@ -775,6 +864,19 @@ export class Grid {
775
864
  fireEvent(this, 'afterRenderViewport');
776
865
  this.viewport?.reflow();
777
866
  }
867
+ /**
868
+ * Renders the Grid accessibility.
869
+ * @internal
870
+ */
871
+ renderAccessibility() {
872
+ const accessibility = this.accessibility;
873
+ if (!accessibility) {
874
+ return;
875
+ }
876
+ accessibility.setA11yOptions();
877
+ accessibility.addScreenReaderSection('before');
878
+ accessibility.addScreenReaderSection('after');
879
+ }
778
880
  /**
779
881
  * Renders the table (viewport) of the Grid.
780
882
  *
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid utilities
4
4
  *
5
- * (c) 2009-2025 Highsoft AS
5
+ * (c) 2009-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula