@highcharts/grid-pro 2.1.1 → 2.3.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 (455) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +15 -9
  3. package/css/grid-pro.css +1289 -1153
  4. package/css/modules/grid-base-variables.css +131 -0
  5. package/css/modules/grid-button-variables.css +140 -0
  6. package/css/modules/grid-caption-variables.css +11 -0
  7. package/css/modules/grid-description-variables.css +11 -0
  8. package/css/modules/grid-input-variables.css +114 -0
  9. package/css/modules/grid-link-variables.css +18 -0
  10. package/css/modules/grid-menu-variables.css +50 -0
  11. package/css/modules/grid-pagination-variables.css +12 -0
  12. package/css/modules/grid-popup-variables.css +24 -0
  13. package/css/modules/grid-pro.css +234 -0
  14. package/css/modules/grid-table-variables.css +385 -0
  15. package/css/modules/grid-theme-default.css +55 -0
  16. package/es-modules/Accessibility/A11yI18n.js +4 -5
  17. package/es-modules/Accessibility/Accessibility.js +5 -5
  18. package/es-modules/Accessibility/AccessibilityComponent.d.ts +3 -3
  19. package/es-modules/Accessibility/AccessibilityComponent.js +4 -3
  20. package/es-modules/Accessibility/Components/AnnotationsA11y.js +4 -3
  21. package/es-modules/Accessibility/Components/ContainerComponent.js +4 -3
  22. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +9 -9
  23. package/es-modules/Accessibility/Components/LegendComponent.js +5 -5
  24. package/es-modules/Accessibility/Components/MenuComponent.js +5 -5
  25. package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -7
  26. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -5
  27. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +15 -5
  28. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +7 -7
  29. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +4 -3
  30. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +7 -7
  31. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +5 -5
  32. package/es-modules/Accessibility/Components/ZoomComponent.js +5 -5
  33. package/es-modules/Accessibility/FocusBorder.js +5 -5
  34. package/es-modules/Accessibility/HighContrastMode.js +4 -3
  35. package/es-modules/Accessibility/HighContrastTheme.js +4 -3
  36. package/es-modules/Accessibility/KeyboardNavigation.js +5 -5
  37. package/es-modules/Accessibility/KeyboardNavigationHandler.js +5 -5
  38. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +11 -0
  39. package/es-modules/Accessibility/Options/A11yDefaults.js +15 -3
  40. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +58 -0
  41. package/es-modules/Accessibility/Options/DeprecatedOptions.js +11 -5
  42. package/es-modules/Accessibility/Options/LangDefaults.js +13 -3
  43. package/es-modules/Accessibility/ProxyElement.js +6 -8
  44. package/es-modules/Accessibility/ProxyProvider.js +5 -5
  45. package/es-modules/Accessibility/Utils/Announcer.js +6 -6
  46. package/es-modules/Accessibility/Utils/ChartUtilities.js +5 -5
  47. package/es-modules/Accessibility/Utils/DOMElementProvider.js +4 -3
  48. package/es-modules/Accessibility/Utils/EventProvider.d.ts +3 -3
  49. package/es-modules/Accessibility/Utils/EventProvider.js +10 -5
  50. package/es-modules/Accessibility/Utils/HTMLUtilities.js +5 -5
  51. package/es-modules/Core/Animation/AnimationOptions.d.ts +42 -0
  52. package/es-modules/Core/Animation/AnimationOptions.js +10 -0
  53. package/es-modules/Core/Animation/AnimationUtilities.js +40 -5
  54. package/es-modules/Core/Animation/Fx.d.ts +1 -130
  55. package/es-modules/Core/Animation/Fx.js +14 -8
  56. package/es-modules/Core/Animation/FxBase.d.ts +1 -0
  57. package/es-modules/Core/Animation/FxBase.js +11 -0
  58. package/es-modules/Core/Callback.d.ts +56 -0
  59. package/es-modules/Core/Callback.js +10 -0
  60. package/es-modules/Core/Chart/Chart.d.ts +659 -400
  61. package/es-modules/Core/Chart/Chart.js +112 -95
  62. package/es-modules/Core/Chart/Chart3D.d.ts +123 -233
  63. package/es-modules/Core/Chart/Chart3D.js +23 -37
  64. package/es-modules/Core/Chart/ChartBase.d.ts +3 -0
  65. package/es-modules/Core/Chart/ChartBase.js +11 -0
  66. package/es-modules/Core/Chart/ChartDefaults.js +18 -12
  67. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +1 -55
  68. package/es-modules/Core/Chart/ChartNavigationComposition.js +13 -13
  69. package/es-modules/Core/Chart/ChartOptions.d.ts +1225 -0
  70. package/es-modules/Core/Chart/ChartOptions.js +10 -0
  71. package/es-modules/Core/Chart/GanttChart.d.ts +0 -38
  72. package/es-modules/Core/Chart/GanttChart.js +5 -5
  73. package/es-modules/Core/Chart/MapChart.d.ts +9 -4
  74. package/es-modules/Core/Chart/MapChart.js +14 -5
  75. package/es-modules/Core/Chart/StockChart.d.ts +0 -85
  76. package/es-modules/Core/Chart/StockChart.js +35 -18
  77. package/es-modules/Core/Color/Color.d.ts +16 -24
  78. package/es-modules/Core/Color/Color.js +27 -10
  79. package/es-modules/Core/Color/ColorString.d.ts +0 -23
  80. package/es-modules/Core/Color/ColorString.js +11 -0
  81. package/es-modules/Core/Color/ColorType.d.ts +0 -33
  82. package/es-modules/Core/Color/ColorType.js +11 -0
  83. package/es-modules/Core/Color/GradientColor.d.ts +0 -33
  84. package/es-modules/Core/Color/GradientColor.js +11 -0
  85. package/es-modules/Core/Color/Palettes.d.ts +1 -84
  86. package/es-modules/Core/Color/Palettes.js +2 -1
  87. package/es-modules/Core/Defaults.d.ts +6 -0
  88. package/es-modules/Core/Defaults.js +66 -75
  89. package/es-modules/Core/Delaunay.d.ts +52 -0
  90. package/es-modules/Core/Delaunay.js +310 -0
  91. package/es-modules/Core/Foundation.d.ts +1 -19
  92. package/es-modules/Core/Foundation.js +8 -6
  93. package/es-modules/Core/Geometry/CircleObject.d.ts +5 -0
  94. package/es-modules/Core/Geometry/CircleObject.js +10 -0
  95. package/es-modules/Core/Geometry/CircleUtilities.d.ts +1 -189
  96. package/es-modules/Core/Geometry/CircleUtilities.js +18 -17
  97. package/es-modules/Core/Geometry/GeometryObject.d.ts +7 -0
  98. package/es-modules/Core/Geometry/GeometryObject.js +10 -0
  99. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +1 -48
  100. package/es-modules/Core/Geometry/GeometryUtilities.js +9 -7
  101. package/es-modules/Core/Geometry/IntersectionObject.d.ts +7 -0
  102. package/es-modules/Core/Geometry/IntersectionObject.js +10 -0
  103. package/es-modules/Core/Geometry/PolygonClip.d.ts +1 -19
  104. package/es-modules/Core/Geometry/PolygonClip.js +9 -7
  105. package/es-modules/Core/Globals.d.ts +9 -31
  106. package/es-modules/Core/Globals.js +9 -10
  107. package/es-modules/Core/GlobalsBase.d.ts +35 -0
  108. package/es-modules/Core/GlobalsBase.js +11 -0
  109. package/es-modules/Core/HttpUtilities.d.ts +54 -17
  110. package/es-modules/Core/HttpUtilities.js +16 -16
  111. package/es-modules/Core/JSON.d.ts +29 -0
  112. package/es-modules/Core/JSON.js +13 -0
  113. package/es-modules/Core/KeyboardEvent.d.ts +1 -0
  114. package/es-modules/Core/KeyboardEvent.js +11 -0
  115. package/es-modules/Core/MSPointer.d.ts +1 -74
  116. package/es-modules/Core/MSPointer.js +24 -15
  117. package/es-modules/Core/Math3D.d.ts +1 -117
  118. package/es-modules/Core/Math3D.js +14 -12
  119. package/es-modules/Core/Options.d.ts +338 -0
  120. package/es-modules/Core/Options.js +10 -0
  121. package/es-modules/Core/Pointer.d.ts +71 -445
  122. package/es-modules/Core/Pointer.js +74 -69
  123. package/es-modules/Core/PointerEvent.d.ts +20 -0
  124. package/es-modules/Core/PointerEvent.js +11 -0
  125. package/es-modules/Core/Renderer/AlignObject.d.ts +25 -27
  126. package/es-modules/Core/Renderer/AlignObject.js +11 -0
  127. package/es-modules/Core/Renderer/BBoxObject.d.ts +20 -31
  128. package/es-modules/Core/Renderer/BBoxObject.js +11 -0
  129. package/es-modules/Core/Renderer/CSSObject.d.ts +268 -59
  130. package/es-modules/Core/Renderer/CSSObject.js +10 -0
  131. package/es-modules/Core/Renderer/DOMElementType.d.ts +1 -33
  132. package/es-modules/Core/Renderer/DOMElementType.js +11 -0
  133. package/es-modules/Core/Renderer/DashStyleValue.d.ts +1 -27
  134. package/es-modules/Core/Renderer/DashStyleValue.js +11 -0
  135. package/es-modules/Core/Renderer/FontMetricsObject.d.ts +6 -26
  136. package/es-modules/Core/Renderer/FontMetricsObject.js +11 -0
  137. package/es-modules/Core/Renderer/HTML/AST.d.ts +3 -15
  138. package/es-modules/Core/Renderer/HTML/AST.js +24 -15
  139. package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +1 -25
  140. package/es-modules/Core/Renderer/HTML/HTMLAttributes.js +11 -0
  141. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +0 -54
  142. package/es-modules/Core/Renderer/HTML/HTMLElement.js +28 -24
  143. package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +15 -12
  144. package/es-modules/Core/Renderer/PolygonBoxObject.js +11 -0
  145. package/es-modules/Core/Renderer/Position3DObject.d.ts +6 -30
  146. package/es-modules/Core/Renderer/Position3DObject.js +11 -0
  147. package/es-modules/Core/Renderer/PositionObject.d.ts +9 -23
  148. package/es-modules/Core/Renderer/PositionObject.js +11 -0
  149. package/es-modules/Core/Renderer/RectangleObject.d.ts +6 -30
  150. package/es-modules/Core/Renderer/RectangleObject.js +11 -0
  151. package/es-modules/Core/Renderer/RendererRegistry.d.ts +1 -29
  152. package/es-modules/Core/Renderer/RendererRegistry.js +6 -3
  153. package/es-modules/Core/Renderer/RendererType.d.ts +1 -53
  154. package/es-modules/Core/Renderer/RendererType.js +11 -0
  155. package/es-modules/Core/Renderer/RendererUtilities.d.ts +1 -26
  156. package/es-modules/Core/Renderer/RendererUtilities.js +41 -23
  157. package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +26 -31
  158. package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +1 -44
  159. package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +15 -51
  160. package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +1 -42
  161. package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +1 -42
  162. package/es-modules/Core/Renderer/SVG/SVGElement.d.ts +459 -0
  163. package/es-modules/Core/Renderer/SVG/SVGElement3D.d.ts +1 -0
  164. package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +0 -23
  165. package/es-modules/Core/Renderer/SVG/SVGLabel.d.ts +14 -0
  166. package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +18 -56
  167. package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +0 -30
  168. package/es-modules/Core/Renderer/SVG/SVGRenderer.d.ts +652 -0
  169. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.d.ts +1 -0
  170. package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +0 -24
  171. package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +3 -26
  172. package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +1 -41
  173. package/es-modules/Core/Renderer/SVG/Symbols.d.ts +146 -0
  174. package/es-modules/Core/Renderer/SVG/TextBuilder.d.ts +1 -0
  175. package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +21 -30
  176. package/es-modules/Core/Renderer/ShadowOptionsObject.js +11 -0
  177. package/es-modules/Core/Renderer/SizeObject.d.ts +0 -23
  178. package/es-modules/Core/Renderer/SizeObject.js +11 -0
  179. package/es-modules/Core/Responsive.d.ts +94 -29
  180. package/es-modules/Core/Responsive.js +17 -12
  181. package/es-modules/Core/Templating.d.ts +17 -1
  182. package/es-modules/Core/Templating.js +12 -8
  183. package/es-modules/Core/Time.d.ts +18 -1
  184. package/es-modules/Core/Time.js +6 -5
  185. package/es-modules/Core/Tooltip.d.ts +67 -123
  186. package/es-modules/Core/Tooltip.js +161 -108
  187. package/es-modules/Core/TooltipOptions.d.ts +724 -0
  188. package/es-modules/Core/TooltipOptions.js +10 -0
  189. package/es-modules/Core/Utilities.d.ts +32 -703
  190. package/es-modules/Core/Utilities.js +28 -1443
  191. package/es-modules/Data/ColumnUtils.d.ts +83 -80
  192. package/es-modules/Data/ColumnUtils.js +106 -116
  193. package/es-modules/Data/Connectors/CSVConnector.d.ts +9 -14
  194. package/es-modules/Data/Connectors/CSVConnector.js +6 -7
  195. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +3 -3
  196. package/es-modules/Data/Connectors/DataConnector.d.ts +63 -54
  197. package/es-modules/Data/Connectors/DataConnector.js +67 -56
  198. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +3 -3
  199. package/es-modules/Data/Connectors/DataConnectorType.d.ts +3 -3
  200. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +40 -42
  201. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +76 -91
  202. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +7 -5
  203. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +23 -28
  204. package/es-modules/Data/Connectors/HTMLTableConnector.js +6 -7
  205. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +3 -3
  206. package/es-modules/Data/Connectors/JSONConnector.d.ts +9 -14
  207. package/es-modules/Data/Connectors/JSONConnector.js +6 -7
  208. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +3 -3
  209. package/es-modules/Data/Converters/CSVConverter.d.ts +5 -5
  210. package/es-modules/Data/Converters/CSVConverter.js +6 -7
  211. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +5 -5
  212. package/es-modules/Data/Converters/DataConverter.d.ts +76 -78
  213. package/es-modules/Data/Converters/DataConverter.js +29 -56
  214. package/es-modules/Data/Converters/DataConverterType.d.ts +3 -3
  215. package/es-modules/Data/Converters/DataConverterUtils.d.ts +88 -81
  216. package/es-modules/Data/Converters/DataConverterUtils.js +172 -184
  217. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +4 -4
  218. package/es-modules/Data/Converters/GoogleSheetsConverter.js +6 -6
  219. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +5 -5
  220. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +4 -4
  221. package/es-modules/Data/Converters/HTMLTableConverter.js +5 -6
  222. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +5 -5
  223. package/es-modules/Data/Converters/JSONConverter.d.ts +7 -7
  224. package/es-modules/Data/Converters/JSONConverter.js +9 -9
  225. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +5 -5
  226. package/es-modules/Data/DataCursor.d.ts +65 -70
  227. package/es-modules/Data/DataCursor.js +122 -142
  228. package/es-modules/Data/DataEvent.d.ts +55 -57
  229. package/es-modules/Data/DataEvent.js +3 -3
  230. package/es-modules/Data/DataPool.d.ts +10 -17
  231. package/es-modules/Data/DataPool.js +23 -12
  232. package/es-modules/Data/DataPoolOptions.d.ts +3 -3
  233. package/es-modules/Data/DataTable.d.ts +115 -117
  234. package/es-modules/Data/DataTable.js +67 -33
  235. package/es-modules/Data/DataTableCore.d.ts +11 -11
  236. package/es-modules/Data/DataTableCore.js +7 -7
  237. package/es-modules/Data/DataTableOptions.js +3 -3
  238. package/es-modules/Data/Formula/Formula.js +3 -3
  239. package/es-modules/Data/Formula/FormulaParser.js +4 -5
  240. package/es-modules/Data/Formula/FormulaProcessor.js +4 -5
  241. package/es-modules/Data/Formula/FormulaTypes.js +3 -3
  242. package/es-modules/Data/Formula/Functions/ABS.js +3 -3
  243. package/es-modules/Data/Formula/Functions/AND.js +3 -3
  244. package/es-modules/Data/Formula/Functions/AVERAGE.js +3 -3
  245. package/es-modules/Data/Formula/Functions/AVERAGEA.js +3 -3
  246. package/es-modules/Data/Formula/Functions/COUNT.js +3 -3
  247. package/es-modules/Data/Formula/Functions/COUNTA.js +3 -3
  248. package/es-modules/Data/Formula/Functions/IF.js +3 -3
  249. package/es-modules/Data/Formula/Functions/ISNA.js +3 -3
  250. package/es-modules/Data/Formula/Functions/MAX.js +3 -3
  251. package/es-modules/Data/Formula/Functions/MEDIAN.js +3 -3
  252. package/es-modules/Data/Formula/Functions/MIN.js +3 -3
  253. package/es-modules/Data/Formula/Functions/MOD.js +3 -3
  254. package/es-modules/Data/Formula/Functions/MODE.js +3 -3
  255. package/es-modules/Data/Formula/Functions/NOT.js +3 -3
  256. package/es-modules/Data/Formula/Functions/OR.js +3 -3
  257. package/es-modules/Data/Formula/Functions/PRODUCT.js +3 -3
  258. package/es-modules/Data/Formula/Functions/SUM.js +3 -3
  259. package/es-modules/Data/Formula/Functions/XOR.js +3 -3
  260. package/es-modules/Data/Modifiers/ChainModifier.d.ts +29 -34
  261. package/es-modules/Data/Modifiers/ChainModifier.js +10 -11
  262. package/es-modules/Data/Modifiers/ChainModifierOptions.js +3 -3
  263. package/es-modules/Data/Modifiers/DataModifier.d.ts +36 -41
  264. package/es-modules/Data/Modifiers/DataModifier.js +34 -56
  265. package/es-modules/Data/Modifiers/DataModifierEvent.js +3 -3
  266. package/es-modules/Data/Modifiers/DataModifierOptions.js +3 -3
  267. package/es-modules/Data/Modifiers/DataModifierType.d.ts +3 -3
  268. package/es-modules/Data/Modifiers/FilterModifier.d.ts +4 -4
  269. package/es-modules/Data/Modifiers/FilterModifier.js +6 -7
  270. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +3 -2
  271. package/es-modules/Data/Modifiers/FilterModifierOptions.js +3 -3
  272. package/es-modules/Data/Modifiers/InvertModifier.d.ts +4 -4
  273. package/es-modules/Data/Modifiers/InvertModifier.js +6 -7
  274. package/es-modules/Data/Modifiers/InvertModifierOptions.js +3 -3
  275. package/es-modules/Data/Modifiers/MathModifier.d.ts +5 -4
  276. package/es-modules/Data/Modifiers/MathModifier.js +3 -3
  277. package/es-modules/Data/Modifiers/MathModifierOptions.js +3 -3
  278. package/es-modules/Data/Modifiers/RangeModifier.d.ts +4 -4
  279. package/es-modules/Data/Modifiers/RangeModifier.js +6 -7
  280. package/es-modules/Data/Modifiers/RangeModifierOptions.js +3 -3
  281. package/es-modules/Data/Modifiers/SortModifier.d.ts +6 -11
  282. package/es-modules/Data/Modifiers/SortModifier.js +35 -10
  283. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +43 -6
  284. package/es-modules/Data/Modifiers/SortModifierOptions.js +3 -3
  285. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +77 -0
  286. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +4 -3
  287. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +68 -1
  288. package/es-modules/Grid/Core/Accessibility/Accessibility.js +179 -7
  289. package/es-modules/Grid/Core/Credits.js +3 -3
  290. package/es-modules/Grid/Core/Data/DataProvider.d.ts +97 -0
  291. package/es-modules/Grid/Core/Data/DataProvider.js +89 -0
  292. package/es-modules/Grid/Core/Data/DataProviderRegistry.d.ts +20 -0
  293. package/es-modules/Grid/Core/Data/DataProviderRegistry.js +52 -0
  294. package/es-modules/Grid/Core/Data/DataProviderType.d.ts +19 -0
  295. package/es-modules/Grid/Core/Data/DataProviderType.js +15 -0
  296. package/es-modules/Grid/Core/Data/LocalDataProvider.d.ts +165 -0
  297. package/es-modules/Grid/Core/Data/LocalDataProvider.js +341 -0
  298. package/es-modules/Grid/Core/Defaults.js +21 -7
  299. package/es-modules/Grid/Core/Globals.d.ts +20 -16
  300. package/es-modules/Grid/Core/Globals.js +13 -11
  301. package/es-modules/Grid/Core/Grid.d.ts +43 -23
  302. package/es-modules/Grid/Core/Grid.js +316 -136
  303. package/es-modules/Grid/Core/GridUtils.d.ts +33 -0
  304. package/es-modules/Grid/Core/GridUtils.js +53 -6
  305. package/es-modules/Grid/Core/Options.d.ts +162 -5
  306. package/es-modules/Grid/Core/Options.js +3 -3
  307. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +3 -0
  308. package/es-modules/Grid/Core/Pagination/Pagination.js +66 -26
  309. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +4 -40
  310. package/es-modules/Grid/Core/Pagination/PaginationOptions.js +11 -0
  311. package/es-modules/Grid/Core/Querying/FilteringController.js +4 -5
  312. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +2 -2
  313. package/es-modules/Grid/Core/Querying/PaginationController.js +6 -6
  314. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +1 -1
  315. package/es-modules/Grid/Core/Querying/QueryingController.js +5 -29
  316. package/es-modules/Grid/Core/Querying/SortingController.d.ts +15 -0
  317. package/es-modules/Grid/Core/Querying/SortingController.js +89 -51
  318. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.d.ts +53 -0
  319. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.js +229 -0
  320. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.d.ts +58 -0
  321. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.js +15 -0
  322. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +5 -6
  323. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +3 -3
  324. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +6 -7
  325. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +1 -1
  326. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +5 -5
  327. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +3 -3
  328. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +29 -3
  329. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +136 -26
  330. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +4 -6
  331. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +94 -3
  332. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +481 -91
  333. package/es-modules/Grid/Core/Table/Body/CellContextMenu.d.ts +11 -0
  334. package/es-modules/Grid/Core/Table/Body/CellContextMenu.js +84 -0
  335. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +36 -15
  336. package/es-modules/Grid/Core/Table/Body/TableCell.js +89 -33
  337. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +15 -5
  338. package/es-modules/Grid/Core/Table/Body/TableRow.js +70 -19
  339. package/es-modules/Grid/Core/Table/Cell.d.ts +16 -10
  340. package/es-modules/Grid/Core/Table/Cell.js +41 -6
  341. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +3 -3
  342. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +7 -12
  343. package/es-modules/Grid/Core/Table/Column.d.ts +11 -5
  344. package/es-modules/Grid/Core/Table/Column.js +26 -37
  345. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +3 -3
  346. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +3 -3
  347. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +3 -3
  348. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +12 -11
  349. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +7 -6
  350. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +5 -0
  351. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +21 -7
  352. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +4 -5
  353. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +4 -5
  354. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +9 -0
  355. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +37 -9
  356. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +5 -4
  357. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +11 -7
  358. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +4 -5
  359. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +4 -5
  360. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +4 -1
  361. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +88 -15
  362. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +8 -3
  363. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +36 -15
  364. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +7 -8
  365. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +1 -1
  366. package/es-modules/Grid/Core/Table/Header/TableHeader.js +6 -6
  367. package/es-modules/Grid/Core/Table/Row.d.ts +1 -1
  368. package/es-modules/Grid/Core/Table/Row.js +5 -5
  369. package/es-modules/Grid/Core/Table/Table.d.ts +68 -12
  370. package/es-modules/Grid/Core/Table/Table.js +296 -92
  371. package/es-modules/Grid/Core/UI/Button.js +3 -3
  372. package/es-modules/Grid/Core/UI/ContextMenu.js +3 -3
  373. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +6 -7
  374. package/es-modules/Grid/Core/UI/ContextMenuButton.js +8 -6
  375. package/es-modules/Grid/Core/UI/Popup.js +10 -12
  376. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +42 -7
  377. package/es-modules/Grid/Core/UI/SvgIcons.js +209 -36
  378. package/es-modules/Grid/Core/UI/Toolbar.d.ts +5 -0
  379. package/es-modules/Grid/Core/UI/Toolbar.js +3 -3
  380. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +4 -12
  381. package/es-modules/Grid/Core/UI/ToolbarButton.js +11 -29
  382. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +4 -45
  383. package/es-modules/Grid/Pro/CellEditing/CellEditMode.js +16 -0
  384. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +13 -13
  385. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +4 -5
  386. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +3 -3
  387. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +3 -3
  388. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +3 -3
  389. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +1 -34
  390. package/es-modules/Grid/Pro/CellRendering/CellRendererType.js +15 -0
  391. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +1 -1
  392. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +7 -5
  393. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +2 -2
  394. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +3 -3
  395. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +3 -3
  396. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +3 -3
  397. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +3 -3
  398. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +4 -5
  399. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +2 -2
  400. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -3
  401. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +7 -5
  402. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +4 -5
  403. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +2 -2
  404. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +4 -5
  405. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +3 -3
  406. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +4 -5
  407. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +4 -5
  408. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +3 -3
  409. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +4 -5
  410. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +4 -5
  411. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +4 -5
  412. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +4 -4
  413. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +4 -5
  414. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +4 -5
  415. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +4 -5
  416. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +4 -5
  417. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +10 -1
  418. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +56 -12
  419. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +1 -1
  420. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +6 -7
  421. package/es-modules/Grid/Pro/Credits/CreditsPro.js +3 -3
  422. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +4 -6
  423. package/es-modules/Grid/Pro/Data/DataSourceHelper.d.ts +74 -0
  424. package/es-modules/Grid/Pro/Data/DataSourceHelper.js +246 -0
  425. package/es-modules/Grid/Pro/Data/QuerySerializer.d.ts +46 -0
  426. package/es-modules/Grid/Pro/Data/QuerySerializer.js +169 -0
  427. package/es-modules/Grid/Pro/Data/RemoteDataProvider.d.ts +187 -0
  428. package/es-modules/Grid/Pro/Data/RemoteDataProvider.js +500 -0
  429. package/es-modules/Grid/Pro/Export/Exporting.js +5 -7
  430. package/es-modules/Grid/Pro/Export/ExportingComposition.js +4 -5
  431. package/es-modules/Grid/Pro/GridEvents.d.ts +1 -0
  432. package/es-modules/Grid/Pro/GridEvents.js +4 -5
  433. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +0 -1
  434. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +4 -5
  435. package/es-modules/Grid/index.js +3 -3
  436. package/es-modules/Shared/BaseForm.js +4 -5
  437. package/es-modules/Shared/DownloadURL.d.ts +1 -85
  438. package/es-modules/Shared/DownloadURL.js +15 -13
  439. package/es-modules/Shared/LangOptionsCore.d.ts +4 -3
  440. package/es-modules/Shared/TimeBase.d.ts +1 -46
  441. package/es-modules/Shared/TimeBase.js +11 -10
  442. package/es-modules/Shared/Types.d.ts +11 -3
  443. package/es-modules/Shared/Utilities.d.ts +576 -0
  444. package/es-modules/Shared/Utilities.js +1368 -0
  445. package/es-modules/masters/grid-pro.src.d.ts +18 -19
  446. package/es-modules/masters/grid-pro.src.js +24 -9
  447. package/grid-pro.d.ts +18 -19
  448. package/grid-pro.js +6 -5
  449. package/grid-pro.js.map +1 -1
  450. package/grid-pro.src.d.ts +18 -19
  451. package/grid-pro.src.js +8132 -4531
  452. package/package.json +1 -1
  453. package/es-modules/Grid/Core/Pagination/Icons.d.ts +0 -7
  454. package/es-modules/Grid/Core/Pagination/Icons.js +0 -7
  455. package/es-modules/Grid/Pro/highcharts.d.ts +0 -7
@@ -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
  * - Sophie Bremer
@@ -1,11 +1,11 @@
1
- import type DataEvent from '../DataEvent';
1
+ import type { DataEventDetail } from '../DataEvent';
2
2
  import type SortModifierOptions from './SortModifierOptions';
3
3
  import DataModifier from './DataModifier.js';
4
- import DataTable from '../DataTable.js';
4
+ import DataTable, { type Row as DataTableRow } from '../DataTable.js';
5
5
  /** @private */
6
6
  interface SortRowReference {
7
7
  index: number;
8
- row: DataTable.Row;
8
+ row: DataTableRow;
9
9
  }
10
10
  /**
11
11
  * Sort table rows according to values of a column.
@@ -22,7 +22,7 @@ declare class SortModifier extends DataModifier {
22
22
  /**
23
23
  * Constructs an instance of the sort modifier.
24
24
  *
25
- * @param {Partial<SortDataModifier.Options>} [options]
25
+ * @param {Partial<SortModifierOptions>} [options]
26
26
  * Options to configure the sort modifier.
27
27
  */
28
28
  constructor(options?: Partial<SortModifierOptions>);
@@ -35,16 +35,11 @@ declare class SortModifier extends DataModifier {
35
35
  * @param {Highcharts.DataTable} table
36
36
  * Table with rows to reference.
37
37
  *
38
- * @return {Array<SortModifier.RowReference>}
38
+ * @return {Array<SortRowReference>}
39
39
  * Array of row references.
40
40
  */
41
41
  protected getRowReferences(table: DataTable): Array<SortRowReference>;
42
- modifyTable(table: DataTable, eventDetail?: DataEvent.Detail): DataTable;
43
- }
44
- /**
45
- * Additionally provided types for modifier events and options.
46
- */
47
- declare namespace SortModifier {
42
+ modifyTable(table: DataTable, eventDetail?: DataEventDetail): DataTable;
48
43
  }
49
44
  declare module './DataModifierType' {
50
45
  interface DataModifierTypes {
@@ -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
  * - Sophie Bremer
@@ -13,8 +13,7 @@
13
13
  * */
14
14
  'use strict';
15
15
  import DataModifier from './DataModifier.js';
16
- import U from '../../Core/Utilities.js';
17
- const { merge } = U;
16
+ import { merge } from '../../Shared/Utilities.js';
18
17
  /* *
19
18
  *
20
19
  * Class
@@ -59,7 +58,7 @@ class SortModifier extends DataModifier {
59
58
  /**
60
59
  * Constructs an instance of the sort modifier.
61
60
  *
62
- * @param {Partial<SortDataModifier.Options>} [options]
61
+ * @param {Partial<SortModifierOptions>} [options]
63
62
  * Options to configure the sort modifier.
64
63
  */
65
64
  constructor(options) {
@@ -79,7 +78,7 @@ class SortModifier extends DataModifier {
79
78
  * @param {Highcharts.DataTable} table
80
79
  * Table with rows to reference.
81
80
  *
82
- * @return {Array<SortModifier.RowReference>}
81
+ * @return {Array<SortRowReference>}
83
82
  * Array of row references.
84
83
  */
85
84
  getRowReferences(table) {
@@ -95,9 +94,35 @@ class SortModifier extends DataModifier {
95
94
  modifyTable(table, eventDetail) {
96
95
  const modifier = this;
97
96
  modifier.emit({ type: 'modify', detail: eventDetail, table });
98
- const columnIds = table.getColumnIds(), rowCount = table.getRowCount(), rowReferences = this.getRowReferences(table), { direction, orderByColumn, orderInColumn, compare: customCompare } = modifier.options, compare = SortModifier.compareFactory(direction, customCompare), orderByColumnIndex = columnIds.indexOf(orderByColumn), modified = table.getModified();
99
- if (orderByColumnIndex !== -1) {
100
- rowReferences.sort((a, b) => compare(a.row[orderByColumnIndex], b.row[orderByColumnIndex]));
97
+ const columnIds = table.getColumnIds(), rowCount = table.getRowCount(), rowReferences = this.getRowReferences(table), { direction, orderInColumn, compare: customCompare } = modifier.options, modified = table.getModified();
98
+ const orderBy = ('columns' in modifier.options ?
99
+ modifier.options.columns :
100
+ [modifier.options.orderByColumn]);
101
+ const orderByIndexes = [];
102
+ for (let i = 0, iEnd = orderBy.length; i < iEnd; ++i) {
103
+ const sort = orderBy[i];
104
+ const isString = typeof sort === 'string';
105
+ const column = isString ? sort : sort.column;
106
+ const columnIndex = columnIds.indexOf(column);
107
+ if (columnIndex === -1) {
108
+ continue;
109
+ }
110
+ orderByIndexes.push({
111
+ columnIndex,
112
+ compare: SortModifier.compareFactory(isString ? direction : (sort.direction || direction), isString ? customCompare : (sort.compare || customCompare))
113
+ });
114
+ }
115
+ if (orderByIndexes.length) {
116
+ rowReferences.sort((a, b) => {
117
+ for (let i = 0, iEnd = orderByIndexes.length; i < iEnd; ++i) {
118
+ const { columnIndex, compare } = orderByIndexes[i];
119
+ const result = compare(a.row[columnIndex], b.row[columnIndex]);
120
+ if (result) {
121
+ return result;
122
+ }
123
+ }
124
+ return a.index - b.index;
125
+ });
101
126
  }
102
127
  if (orderInColumn) {
103
128
  const column = [];
@@ -1,9 +1,28 @@
1
1
  import type DataModifierOptions from './DataModifierOptions';
2
- import type DataTable from '../DataTable';
2
+ import type { CellType as DataTableCellType } from '../DataTable';
3
3
  /**
4
- * Options to configure the modifier.
4
+ * Definition of a sorting level when sorting by multiple columns.
5
5
  */
6
- export interface SortModifierOptions extends DataModifierOptions {
6
+ export interface SortModifierOrderByOption {
7
+ /**
8
+ * Column ID with values to order by.
9
+ */
10
+ column: string;
11
+ /**
12
+ * Direction of sorting for this level. If not set, the modifier-level
13
+ * `direction` is used.
14
+ */
15
+ direction?: ('asc' | 'desc');
16
+ /**
17
+ * Custom compare function for this level. If not set, the modifier-level
18
+ * `compare` is used.
19
+ */
20
+ compare?: (a: DataTableCellType, b: DataTableCellType) => number;
21
+ }
22
+ /**
23
+ * Base options shared by sorting modifiers.
24
+ */
25
+ export interface SortModifierBaseOptions extends DataModifierOptions {
7
26
  /**
8
27
  * Name of the related modifier for these options.
9
28
  */
@@ -29,16 +48,34 @@ export interface SortModifierOptions extends DataModifierOptions {
29
48
  * A number indicating whether the first value (`a`) is less than (`-1`),
30
49
  * equal to (`0`), or greater than (`1`) the second value (`b`).
31
50
  */
32
- compare?: (a: DataTable.CellType, b: DataTable.CellType) => number;
51
+ compare?: (a: DataTableCellType, b: DataTableCellType) => number;
52
+ /**
53
+ * Column to update with order index instead of change order of rows.
54
+ */
55
+ orderInColumn?: string;
56
+ }
57
+ /**
58
+ * Options to configure a single-column sort modifier.
59
+ */
60
+ export interface SingleSortModifierOptions extends SortModifierBaseOptions {
33
61
  /**
34
62
  * Column with values to order.
35
63
  *
36
64
  * @default "y"
37
65
  */
38
66
  orderByColumn: string;
67
+ }
68
+ /**
69
+ * Options to configure a multi-column sort modifier.
70
+ */
71
+ export interface MultiSortModifierOptions extends SortModifierBaseOptions {
39
72
  /**
40
- * Column to update with order index instead of change order of rows.
73
+ * Columns and directions to order by, in priority order.
41
74
  */
42
- orderInColumn?: string;
75
+ columns: SortModifierOrderByOption[];
43
76
  }
77
+ /**
78
+ * Options to configure the modifier.
79
+ */
80
+ export type SortModifierOptions = SingleSortModifierOptions | MultiSortModifierOptions;
44
81
  export default SortModifierOptions;
@@ -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
  * - Sophie Bremer
@@ -1,3 +1,4 @@
1
+ import type Grid from '../Grid';
1
2
  /**
2
3
  * Accessibility options for the Grid.
3
4
  */
@@ -17,6 +18,10 @@ export interface A11yOptions {
17
18
  * VoiceOver announcer options for Grid actions.
18
19
  */
19
20
  announcements?: A11yAnnouncementsOptions;
21
+ /**
22
+ * Options for screen reader sections before and after the Grid.
23
+ */
24
+ screenReaderSection?: ScreenReaderSectionOptions;
20
25
  }
21
26
  /**
22
27
  * VoiceOver announcer options for Grid actions.
@@ -51,6 +56,10 @@ export interface LangAccessibilityOptions {
51
56
  * Language options for the accessibility descriptions in filtering.
52
57
  */
53
58
  filtering?: FilteringLangA11yOptions;
59
+ /**
60
+ * Language options for screen reader sections before and after the Grid.
61
+ */
62
+ screenReaderSection?: ScreenReaderSectionLangOptions;
54
63
  }
55
64
  /**
56
65
  * Accessibility options for the Grid sorting functionality.
@@ -86,6 +95,13 @@ export interface SortingLangA11yOptions {
86
95
  */
87
96
  none?: string;
88
97
  };
98
+ /**
99
+ * The message for multi-column sort priority. Use `{priority}` to insert
100
+ * the priority index.
101
+ *
102
+ * @default 'Priority {priority}.'
103
+ */
104
+ priority?: string;
89
105
  }
90
106
  /**
91
107
  * Accessibility options for the Grid pagination functionality.
@@ -146,3 +162,64 @@ export interface HeaderCellA11yOptions {
146
162
  */
147
163
  description?: string;
148
164
  }
165
+ /**
166
+ * Options for screen reader sections before and after the Grid.
167
+ */
168
+ export interface ScreenReaderSectionOptions {
169
+ /**
170
+ * A formatter function to create the HTML contents of the hidden screen
171
+ * reader information region before the Grid.
172
+ */
173
+ beforeGridFormatter?: ScreenReaderFormatterCallback;
174
+ /**
175
+ * Format for the screen reader information region before the Grid.
176
+ * Supported HTML tags are h1-h6, p, div. Attributes are not supported.
177
+ *
178
+ * Available template variables:
179
+ * - {gridTitle}: The Grid caption/title.
180
+ * - {gridDescription}: The Grid description.
181
+ * - {rowCount}: Number of rows in the Grid.
182
+ * - {columnCount}: Number of columns in the Grid.
183
+ *
184
+ * @default '<div>{gridTitle}</div><div>{gridDescription}</div><div>Grid with {rowCount} rows and {columnCount} columns.</div>'
185
+ */
186
+ beforeGridFormat?: string;
187
+ /**
188
+ * A formatter function to create the HTML contents of the hidden screen
189
+ * reader information region after the Grid.
190
+ */
191
+ afterGridFormatter?: ScreenReaderFormatterCallback;
192
+ /**
193
+ * Format for the screen reader information region after the Grid.
194
+ *
195
+ * @default 'End of Grid.'
196
+ */
197
+ afterGridFormat?: string;
198
+ }
199
+ /**
200
+ * Formatter callback function for screen reader sections.
201
+ *
202
+ * @param grid
203
+ * A Grid instance.
204
+ *
205
+ * @returns
206
+ * A string with the HTML content of the region.
207
+ */
208
+ export type ScreenReaderFormatterCallback = (grid: Grid) => string;
209
+ /**
210
+ * Language options for screen reader sections.
211
+ */
212
+ export interface ScreenReaderSectionLangOptions {
213
+ /**
214
+ * Text for the aria-label attribute of the before screen reader region.
215
+ *
216
+ * @default ''
217
+ */
218
+ beforeRegionLabel?: string;
219
+ /**
220
+ * Text for the aria-label attribute of the after screen reader region.
221
+ *
222
+ * @default ''
223
+ */
224
+ afterRegionLabel?: string;
225
+ }
@@ -2,15 +2,16 @@
2
2
  *
3
3
  * Grid Accessibility options
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';
@@ -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
  *
@@ -93,7 +101,66 @@ declare class Accessibility {
93
101
  /**
94
102
  * Set a11y options for the Grid.
95
103
  */
96
- setA11yOptions(): void;
104
+ setA11yOptions(): Promise<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,11 @@ 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 HTMLU from '../../../Accessibility/Utils/HTMLUtilities.js';
24
+ import { internalClearTimeout, replaceNested } from '../../../Shared/Utilities.js';
21
25
  const { formatText } = GridUtils;
26
+ const { getHeadingTagNameForElement } = HTMLU;
22
27
  /**
23
28
  * Representing the accessibility functionalities for the Data Grid.
24
29
  */
@@ -35,6 +40,14 @@ class Accessibility {
35
40
  * The Grid Table instance which the accessibility controller belong to.
36
41
  */
37
42
  constructor(grid) {
43
+ /**
44
+ * The before Grid screen reader section element.
45
+ */
46
+ this.beforeGridElement = null;
47
+ /**
48
+ * The after Grid screen reader section element.
49
+ */
50
+ this.afterGridElement = null;
38
51
  this.grid = grid;
39
52
  this.element = document.createElement('div');
40
53
  this.element.classList.add(Globals.getClassName('visuallyHidden'));
@@ -73,7 +86,7 @@ class Accessibility {
73
86
  */
74
87
  announce(msg, assertive = false) {
75
88
  if (this.announcerTimeout) {
76
- clearTimeout(this.announcerTimeout);
89
+ internalClearTimeout(this.announcerTimeout);
77
90
  }
78
91
  this.announcerElement.remove();
79
92
  this.announcerElement.setAttribute('aria-live', assertive ? 'assertive' : 'polite');
@@ -199,13 +212,13 @@ class Accessibility {
199
212
  /**
200
213
  * Set a11y options for the Grid.
201
214
  */
202
- setA11yOptions() {
215
+ async setA11yOptions() {
203
216
  const grid = this.grid;
204
217
  const tableEl = grid.tableElement;
205
218
  if (!tableEl) {
206
219
  return;
207
220
  }
208
- tableEl.setAttribute('aria-rowcount', grid.dataTable?.getRowCount() || 0);
221
+ tableEl.setAttribute('aria-rowcount', await grid.dataProvider?.getRowCount() || 0);
209
222
  if (grid.captionElement) {
210
223
  tableEl.setAttribute('aria-labelledby', grid.captionElement.id);
211
224
  }
@@ -214,13 +227,172 @@ class Accessibility {
214
227
  }
215
228
  this.addHighContrast();
216
229
  }
230
+ /**
231
+ * Adds the screen reader section before or after the Grid.
232
+ *
233
+ * @param placement
234
+ * Either 'before' or 'after'.
235
+ */
236
+ addScreenReaderSection(placement) {
237
+ const grid = this.grid;
238
+ const isBefore = placement === 'before';
239
+ // Get the screen reader section content.
240
+ const defaultFormatter = isBefore ?
241
+ this.defaultBeforeFormatter() :
242
+ this.defaultAfterFormatter();
243
+ const formatter = grid.options?.accessibility?.screenReaderSection?.[`${placement}GridFormatter`];
244
+ const content = formatter ? formatter(grid) : defaultFormatter;
245
+ // Create the screen reader section element.
246
+ const sectionElement = this[`${placement}GridElement`] = (this[`${placement}GridElement`] || document.createElement('div'));
247
+ // Create the hidden element.
248
+ const hiddenElement = sectionElement.firstChild ||
249
+ document.createElement('div');
250
+ if (content) {
251
+ this.setScreenReaderSectionAttributes(sectionElement, placement);
252
+ AST.setElementHTML(hiddenElement, content);
253
+ // Append only if not already a child.
254
+ if (hiddenElement.parentNode !== sectionElement) {
255
+ sectionElement.appendChild(hiddenElement);
256
+ }
257
+ // Insert only if not already in the DOM.
258
+ const gridContainer = grid.container;
259
+ if (!sectionElement.parentNode && gridContainer) {
260
+ if (isBefore) {
261
+ gridContainer.insertBefore(sectionElement, gridContainer.firstChild);
262
+ }
263
+ else {
264
+ gridContainer.appendChild(sectionElement);
265
+ }
266
+ }
267
+ hiddenElement.classList.add(Globals.getClassName('visuallyHidden'));
268
+ }
269
+ else {
270
+ if (sectionElement.parentNode) {
271
+ sectionElement.parentNode.removeChild(sectionElement);
272
+ }
273
+ this[`${placement}GridElement`] = null;
274
+ }
275
+ }
276
+ /**
277
+ * Sets the accessibility attributes for the screen reader section.
278
+ *
279
+ * @param sectionElement
280
+ * The section element.
281
+ *
282
+ * @param placement
283
+ * Either 'before' or 'after'.
284
+ */
285
+ setScreenReaderSectionAttributes(sectionElement, placement) {
286
+ const grid = this.grid;
287
+ sectionElement.setAttribute('id', `grid-screen-reader-region-${placement}-${grid.id}`);
288
+ const regionLabel = grid.options?.lang?.accessibility?.screenReaderSection?.[`${placement}RegionLabel`];
289
+ if (regionLabel) {
290
+ sectionElement.setAttribute('aria-label', regionLabel);
291
+ sectionElement.setAttribute('role', 'region');
292
+ }
293
+ // Position the section relatively to the Grid.
294
+ sectionElement.style.position = 'relative';
295
+ }
296
+ /**
297
+ * Gets the default formatter for the before-Grid screen reader section.
298
+ * @private
299
+ */
300
+ defaultBeforeFormatter() {
301
+ const grid = this.grid;
302
+ const { container, dataTable, options } = grid;
303
+ const format = options?.accessibility?.screenReaderSection?.beforeGridFormat;
304
+ if (!format || !container) {
305
+ return '';
306
+ }
307
+ const gridTitle = options?.caption?.text;
308
+ let formattedGridTitle = '';
309
+ if (gridTitle) {
310
+ if (this.isWrappedInHeadingTag(gridTitle)) {
311
+ formattedGridTitle = gridTitle;
312
+ }
313
+ else {
314
+ const headingTag = getHeadingTagNameForElement(container);
315
+ formattedGridTitle =
316
+ `<${headingTag}>${gridTitle}</${headingTag}>`;
317
+ }
318
+ }
319
+ const context = {
320
+ gridTitle: formattedGridTitle,
321
+ gridDescription: options?.description?.text || '',
322
+ rowCount: dataTable?.rowCount || 0,
323
+ columnCount: (dataTable?.getColumnIds() || []).length
324
+ };
325
+ const formattedString = this.formatTemplateString(format, context);
326
+ return this.stripEmptyHTMLTags(formattedString);
327
+ }
328
+ /**
329
+ * Checks if a string is already wrapped in a heading tag (h1-h6).
330
+ * @private
331
+ *
332
+ * @param text
333
+ * The text to check.
334
+ *
335
+ * @returns
336
+ * True if the text is wrapped in a heading tag.
337
+ */
338
+ isWrappedInHeadingTag(text) {
339
+ return /^<h([1-6])[^>]*>[\s\S]*<\/h\1>$/i.test(text.trim());
340
+ }
341
+ /**
342
+ * Formats a string with template variables.
343
+ *
344
+ * @param format
345
+ * The format string.
346
+ *
347
+ * @param context
348
+ * The context object.
349
+ *
350
+ * @private
351
+ */
352
+ formatTemplateString(format, context) {
353
+ return format.replace(/\{(\w+)\}/g, (_, key) => (key in context ? String(context[key]) : `{${key}}`));
354
+ }
355
+ /**
356
+ * Gets the default formatter for the after-Grid screen reader section.
357
+ * @private
358
+ */
359
+ defaultAfterFormatter() {
360
+ const grid = this.grid;
361
+ const format = grid.options?.accessibility?.screenReaderSection
362
+ ?.afterGridFormat;
363
+ if (!format) {
364
+ return '';
365
+ }
366
+ return this.stripEmptyHTMLTags(format);
367
+ }
368
+ /**
369
+ * Strips empty HTML tags from a string recursively.
370
+ *
371
+ * @param string
372
+ * The string to strip empty HTML tags from.
373
+ *
374
+ * @private
375
+ */
376
+ stripEmptyHTMLTags(string) {
377
+ return replaceNested(string, [/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g, '']);
378
+ }
217
379
  /**
218
380
  * Destroy the accessibility controller.
219
381
  */
220
382
  destroy() {
383
+ // Removes the screen reader before section.
384
+ const beforeGridElement = this.beforeGridElement;
385
+ if (beforeGridElement?.parentNode) {
386
+ beforeGridElement.parentNode.removeChild(beforeGridElement);
387
+ }
388
+ // Removes the screen reader after section.
389
+ const afterGridElement = this.afterGridElement;
390
+ if (afterGridElement?.parentNode) {
391
+ afterGridElement.parentNode.removeChild(afterGridElement);
392
+ }
221
393
  this.element.remove();
222
394
  this.announcerElement.remove();
223
- clearTimeout(this.announcerTimeout);
395
+ internalClearTimeout(this.announcerTimeout);
224
396
  }
225
397
  }
226
398
  /* *
@@ -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