@highcharts/grid-pro 2.0.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 (442) hide show
  1. package/README.md +35 -0
  2. package/css/grid-pro.css +1756 -0
  3. package/es-modules/Accessibility/A11yI18n.d.ts +95 -0
  4. package/es-modules/Accessibility/A11yI18n.js +290 -0
  5. package/es-modules/Accessibility/Accessibility.d.ts +116 -0
  6. package/es-modules/Accessibility/Accessibility.js +402 -0
  7. package/es-modules/Accessibility/AccessibilityComponent.d.ts +97 -0
  8. package/es-modules/Accessibility/AccessibilityComponent.js +147 -0
  9. package/es-modules/Accessibility/Components/AnnotationsA11y.d.ts +43 -0
  10. package/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
  11. package/es-modules/Accessibility/Components/ContainerComponent.d.ts +48 -0
  12. package/es-modules/Accessibility/Components/ContainerComponent.js +142 -0
  13. package/es-modules/Accessibility/Components/InfoRegionsComponent.d.ts +144 -0
  14. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +555 -0
  15. package/es-modules/Accessibility/Components/LegendComponent.d.ts +124 -0
  16. package/es-modules/Accessibility/Components/LegendComponent.js +474 -0
  17. package/es-modules/Accessibility/Components/MenuComponent.d.ts +93 -0
  18. package/es-modules/Accessibility/Components/MenuComponent.js +430 -0
  19. package/es-modules/Accessibility/Components/NavigatorComponent.d.ts +57 -0
  20. package/es-modules/Accessibility/Components/NavigatorComponent.js +235 -0
  21. package/es-modules/Accessibility/Components/RangeSelectorComponent.d.ts +126 -0
  22. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +473 -0
  23. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.d.ts +18 -0
  24. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +234 -0
  25. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.d.ts +87 -0
  26. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +309 -0
  27. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.d.ts +53 -0
  28. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +130 -0
  29. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.d.ts +28 -0
  30. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +415 -0
  31. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.d.ts +114 -0
  32. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +721 -0
  33. package/es-modules/Accessibility/Components/ZoomComponent.d.ts +96 -0
  34. package/es-modules/Accessibility/Components/ZoomComponent.js +314 -0
  35. package/es-modules/Accessibility/FocusBorder.d.ts +40 -0
  36. package/es-modules/Accessibility/FocusBorder.js +301 -0
  37. package/es-modules/Accessibility/HighContrastMode.d.ts +35 -0
  38. package/es-modules/Accessibility/HighContrastMode.js +100 -0
  39. package/es-modules/Accessibility/HighContrastTheme.d.ts +11 -0
  40. package/es-modules/Accessibility/HighContrastTheme.js +212 -0
  41. package/es-modules/Accessibility/KeyboardNavigation.d.ts +133 -0
  42. package/es-modules/Accessibility/KeyboardNavigation.js +450 -0
  43. package/es-modules/Accessibility/KeyboardNavigationHandler.d.ts +48 -0
  44. package/es-modules/Accessibility/KeyboardNavigationHandler.js +126 -0
  45. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +68 -0
  46. package/es-modules/Accessibility/Options/A11yDefaults.js +971 -0
  47. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +22 -0
  48. package/es-modules/Accessibility/Options/DeprecatedOptions.js +265 -0
  49. package/es-modules/Accessibility/Options/LangDefaults.d.ts +4 -0
  50. package/es-modules/Accessibility/Options/LangDefaults.js +440 -0
  51. package/es-modules/Accessibility/ProxyElement.d.ts +78 -0
  52. package/es-modules/Accessibility/ProxyElement.js +223 -0
  53. package/es-modules/Accessibility/ProxyProvider.d.ts +90 -0
  54. package/es-modules/Accessibility/ProxyProvider.js +315 -0
  55. package/es-modules/Accessibility/Utils/Announcer.d.ts +26 -0
  56. package/es-modules/Accessibility/Utils/Announcer.js +90 -0
  57. package/es-modules/Accessibility/Utils/ChartUtilities.d.ts +90 -0
  58. package/es-modules/Accessibility/Utils/ChartUtilities.js +298 -0
  59. package/es-modules/Accessibility/Utils/DOMElementProvider.d.ts +20 -0
  60. package/es-modules/Accessibility/Utils/DOMElementProvider.js +69 -0
  61. package/es-modules/Accessibility/Utils/EventProvider.d.ts +26 -0
  62. package/es-modules/Accessibility/Utils/EventProvider.js +65 -0
  63. package/es-modules/Accessibility/Utils/HTMLUtilities.d.ts +108 -0
  64. package/es-modules/Accessibility/Utils/HTMLUtilities.js +319 -0
  65. package/es-modules/Core/Animation/AnimationUtilities.d.ts +107 -0
  66. package/es-modules/Core/Animation/AnimationUtilities.js +200 -0
  67. package/es-modules/Core/Animation/Fx.d.ts +130 -0
  68. package/es-modules/Core/Animation/Fx.js +388 -0
  69. package/es-modules/Core/Chart/Chart.d.ts +1009 -0
  70. package/es-modules/Core/Chart/Chart.js +3008 -0
  71. package/es-modules/Core/Chart/Chart3D.d.ts +276 -0
  72. package/es-modules/Core/Chart/Chart3D.js +1686 -0
  73. package/es-modules/Core/Chart/ChartDefaults.d.ts +8 -0
  74. package/es-modules/Core/Chart/ChartDefaults.js +1304 -0
  75. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +55 -0
  76. package/es-modules/Core/Chart/ChartNavigationComposition.js +90 -0
  77. package/es-modules/Core/Chart/GanttChart.d.ts +74 -0
  78. package/es-modules/Core/Chart/GanttChart.js +189 -0
  79. package/es-modules/Core/Chart/MapChart.d.ts +132 -0
  80. package/es-modules/Core/Chart/MapChart.js +232 -0
  81. package/es-modules/Core/Chart/StockChart.d.ts +117 -0
  82. package/es-modules/Core/Chart/StockChart.js +641 -0
  83. package/es-modules/Core/Color/Color.d.ts +112 -0
  84. package/es-modules/Core/Color/Color.js +418 -0
  85. package/es-modules/Core/Color/Palettes.d.ts +84 -0
  86. package/es-modules/Core/Color/Palettes.js +23 -0
  87. package/es-modules/Core/Defaults.d.ts +42 -0
  88. package/es-modules/Core/Defaults.js +2977 -0
  89. package/es-modules/Core/Foundation.d.ts +19 -0
  90. package/es-modules/Core/Foundation.js +63 -0
  91. package/es-modules/Core/Geometry/CircleUtilities.d.ts +189 -0
  92. package/es-modules/Core/Geometry/CircleUtilities.js +388 -0
  93. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +48 -0
  94. package/es-modules/Core/Geometry/GeometryUtilities.js +105 -0
  95. package/es-modules/Core/Geometry/PolygonClip.d.ts +19 -0
  96. package/es-modules/Core/Geometry/PolygonClip.js +96 -0
  97. package/es-modules/Core/Globals.d.ts +110 -0
  98. package/es-modules/Core/Globals.js +127 -0
  99. package/es-modules/Core/HttpUtilities.d.ts +61 -0
  100. package/es-modules/Core/HttpUtilities.js +214 -0
  101. package/es-modules/Core/MSPointer.d.ts +74 -0
  102. package/es-modules/Core/MSPointer.js +218 -0
  103. package/es-modules/Core/Math3D.d.ts +117 -0
  104. package/es-modules/Core/Math3D.js +250 -0
  105. package/es-modules/Core/Pointer.d.ts +590 -0
  106. package/es-modules/Core/Pointer.js +1631 -0
  107. package/es-modules/Core/Renderer/HTML/AST.d.ts +163 -0
  108. package/es-modules/Core/Renderer/HTML/AST.js +562 -0
  109. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +76 -0
  110. package/es-modules/Core/Renderer/HTML/HTMLElement.js +471 -0
  111. package/es-modules/Core/Renderer/RendererRegistry.d.ts +29 -0
  112. package/es-modules/Core/Renderer/RendererRegistry.js +76 -0
  113. package/es-modules/Core/Renderer/RendererUtilities.d.ts +26 -0
  114. package/es-modules/Core/Renderer/RendererUtilities.js +172 -0
  115. package/es-modules/Core/Responsive.d.ts +55 -0
  116. package/es-modules/Core/Responsive.js +260 -0
  117. package/es-modules/Core/Templating.d.ts +125 -0
  118. package/es-modules/Core/Templating.js +428 -0
  119. package/es-modules/Core/Time.d.ts +69 -0
  120. package/es-modules/Core/Time.js +172 -0
  121. package/es-modules/Core/Tooltip.d.ts +297 -0
  122. package/es-modules/Core/Tooltip.js +1377 -0
  123. package/es-modules/Core/Utilities.d.ts +770 -0
  124. package/es-modules/Core/Utilities.js +1989 -0
  125. package/es-modules/Data/ColumnUtils.d.ts +87 -0
  126. package/es-modules/Data/ColumnUtils.js +140 -0
  127. package/es-modules/Data/Connectors/CSVConnector.d.ts +63 -0
  128. package/es-modules/Data/Connectors/CSVConnector.js +149 -0
  129. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +149 -0
  130. package/es-modules/Data/Connectors/DataConnector.d.ts +204 -0
  131. package/es-modules/Data/Connectors/DataConnector.js +345 -0
  132. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +87 -0
  133. package/es-modules/Data/Connectors/DataConnectorType.d.ts +45 -0
  134. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +65 -0
  135. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +226 -0
  136. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +167 -0
  137. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +77 -0
  138. package/es-modules/Data/Connectors/HTMLTableConnector.js +119 -0
  139. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +49 -0
  140. package/es-modules/Data/Connectors/JSONConnector.d.ts +64 -0
  141. package/es-modules/Data/Connectors/JSONConnector.js +156 -0
  142. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +185 -0
  143. package/es-modules/Data/Converters/CSVConverter.d.ts +64 -0
  144. package/es-modules/Data/Converters/CSVConverter.js +374 -0
  145. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +53 -0
  146. package/es-modules/Data/Converters/DataConverter.d.ts +168 -0
  147. package/es-modules/Data/Converters/DataConverter.js +387 -0
  148. package/es-modules/Data/Converters/DataConverterType.d.ts +40 -0
  149. package/es-modules/Data/Converters/DataConverterUtils.d.ts +82 -0
  150. package/es-modules/Data/Converters/DataConverterUtils.js +216 -0
  151. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +46 -0
  152. package/es-modules/Data/Converters/GoogleSheetsConverter.js +135 -0
  153. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +52 -0
  154. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +72 -0
  155. package/es-modules/Data/Converters/HTMLTableConverter.js +362 -0
  156. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +51 -0
  157. package/es-modules/Data/Converters/JSONConverter.d.ts +99 -0
  158. package/es-modules/Data/Converters/JSONConverter.js +239 -0
  159. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +52 -0
  160. package/es-modules/Data/DataCursor.d.ts +176 -0
  161. package/es-modules/Data/DataCursor.js +379 -0
  162. package/es-modules/Data/DataEvent.d.ts +81 -0
  163. package/es-modules/Data/DataEvent.js +14 -0
  164. package/es-modules/Data/DataPool.d.ts +130 -0
  165. package/es-modules/Data/DataPool.js +257 -0
  166. package/es-modules/Data/DataPoolOptions.d.ts +66 -0
  167. package/es-modules/Data/DataTable.d.ts +563 -0
  168. package/es-modules/Data/DataTable.js +930 -0
  169. package/es-modules/Data/DataTableCore.d.ts +165 -0
  170. package/es-modules/Data/DataTableCore.js +316 -0
  171. package/es-modules/Data/DataTableOptions.d.ts +25 -0
  172. package/es-modules/Data/DataTableOptions.js +15 -0
  173. package/es-modules/Data/Formula/Formula.d.ts +21 -0
  174. package/es-modules/Data/Formula/Formula.js +54 -0
  175. package/es-modules/Data/Formula/FormulaParser.d.ts +31 -0
  176. package/es-modules/Data/Formula/FormulaParser.js +488 -0
  177. package/es-modules/Data/Formula/FormulaProcessor.d.ts +155 -0
  178. package/es-modules/Data/Formula/FormulaProcessor.js +529 -0
  179. package/es-modules/Data/Formula/FormulaTypes.d.ts +138 -0
  180. package/es-modules/Data/Formula/FormulaTypes.js +135 -0
  181. package/es-modules/Data/Formula/Functions/ABS.d.ts +19 -0
  182. package/es-modules/Data/Formula/Functions/ABS.js +67 -0
  183. package/es-modules/Data/Formula/Functions/AND.d.ts +20 -0
  184. package/es-modules/Data/Formula/Functions/AND.js +59 -0
  185. package/es-modules/Data/Formula/Functions/AVERAGE.d.ts +20 -0
  186. package/es-modules/Data/Formula/Functions/AVERAGE.js +74 -0
  187. package/es-modules/Data/Formula/Functions/AVERAGEA.d.ts +20 -0
  188. package/es-modules/Data/Formula/Functions/AVERAGEA.js +90 -0
  189. package/es-modules/Data/Formula/Functions/COUNT.d.ts +20 -0
  190. package/es-modules/Data/Formula/Functions/COUNT.js +65 -0
  191. package/es-modules/Data/Formula/Functions/COUNTA.d.ts +20 -0
  192. package/es-modules/Data/Formula/Functions/COUNTA.js +71 -0
  193. package/es-modules/Data/Formula/Functions/IF.d.ts +21 -0
  194. package/es-modules/Data/Formula/Functions/IF.js +54 -0
  195. package/es-modules/Data/Formula/Functions/ISNA.d.ts +20 -0
  196. package/es-modules/Data/Formula/Functions/ISNA.js +52 -0
  197. package/es-modules/Data/Formula/Functions/MAX.d.ts +20 -0
  198. package/es-modules/Data/Formula/Functions/MAX.js +69 -0
  199. package/es-modules/Data/Formula/Functions/MEDIAN.d.ts +20 -0
  200. package/es-modules/Data/Formula/Functions/MEDIAN.js +78 -0
  201. package/es-modules/Data/Formula/Functions/MIN.d.ts +20 -0
  202. package/es-modules/Data/Formula/Functions/MIN.js +69 -0
  203. package/es-modules/Data/Formula/Functions/MOD.d.ts +20 -0
  204. package/es-modules/Data/Formula/Functions/MOD.js +63 -0
  205. package/es-modules/Data/Formula/Functions/MODE.d.ts +41 -0
  206. package/es-modules/Data/Formula/Functions/MODE.js +149 -0
  207. package/es-modules/Data/Formula/Functions/NOT.d.ts +20 -0
  208. package/es-modules/Data/Formula/Functions/NOT.js +60 -0
  209. package/es-modules/Data/Formula/Functions/OR.d.ts +20 -0
  210. package/es-modules/Data/Formula/Functions/OR.js +62 -0
  211. package/es-modules/Data/Formula/Functions/PRODUCT.d.ts +20 -0
  212. package/es-modules/Data/Formula/Functions/PRODUCT.js +68 -0
  213. package/es-modules/Data/Formula/Functions/SUM.d.ts +20 -0
  214. package/es-modules/Data/Formula/Functions/SUM.js +65 -0
  215. package/es-modules/Data/Formula/Functions/XOR.d.ts +20 -0
  216. package/es-modules/Data/Formula/Functions/XOR.js +81 -0
  217. package/es-modules/Data/Modifiers/ChainModifier.d.ts +128 -0
  218. package/es-modules/Data/Modifiers/ChainModifier.js +231 -0
  219. package/es-modules/Data/Modifiers/ChainModifierOptions.d.ts +20 -0
  220. package/es-modules/Data/Modifiers/ChainModifierOptions.js +14 -0
  221. package/es-modules/Data/Modifiers/DataModifier.d.ts +117 -0
  222. package/es-modules/Data/Modifiers/DataModifier.js +202 -0
  223. package/es-modules/Data/Modifiers/DataModifierEvent.d.ts +28 -0
  224. package/es-modules/Data/Modifiers/DataModifierEvent.js +15 -0
  225. package/es-modules/Data/Modifiers/DataModifierOptions.d.ts +11 -0
  226. package/es-modules/Data/Modifiers/DataModifierOptions.js +15 -0
  227. package/es-modules/Data/Modifiers/DataModifierType.d.ts +44 -0
  228. package/es-modules/Data/Modifiers/FilterModifier.d.ts +53 -0
  229. package/es-modules/Data/Modifiers/FilterModifier.js +172 -0
  230. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +110 -0
  231. package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
  232. package/es-modules/Data/Modifiers/InvertModifier.d.ts +48 -0
  233. package/es-modules/Data/Modifiers/InvertModifier.js +116 -0
  234. package/es-modules/Data/Modifiers/InvertModifierOptions.d.ts +11 -0
  235. package/es-modules/Data/Modifiers/InvertModifierOptions.js +15 -0
  236. package/es-modules/Data/Modifiers/MathModifier.d.ts +68 -0
  237. package/es-modules/Data/Modifiers/MathModifier.js +165 -0
  238. package/es-modules/Data/Modifiers/MathModifierOptions.d.ts +50 -0
  239. package/es-modules/Data/Modifiers/MathModifierOptions.js +14 -0
  240. package/es-modules/Data/Modifiers/RangeModifier.d.ts +46 -0
  241. package/es-modules/Data/Modifiers/RangeModifier.js +96 -0
  242. package/es-modules/Data/Modifiers/RangeModifierOptions.d.ts +22 -0
  243. package/es-modules/Data/Modifiers/RangeModifierOptions.js +15 -0
  244. package/es-modules/Data/Modifiers/SortModifier.d.ts +54 -0
  245. package/es-modules/Data/Modifiers/SortModifier.js +144 -0
  246. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +44 -0
  247. package/es-modules/Data/Modifiers/SortModifierOptions.js +14 -0
  248. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +148 -0
  249. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +17 -0
  250. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +115 -0
  251. package/es-modules/Grid/Core/Accessibility/Accessibility.js +231 -0
  252. package/es-modules/Grid/Core/Credits.d.ts +57 -0
  253. package/es-modules/Grid/Core/Credits.js +125 -0
  254. package/es-modules/Grid/Core/Defaults.d.ts +20 -0
  255. package/es-modules/Grid/Core/Defaults.js +148 -0
  256. package/es-modules/Grid/Core/Globals.d.ts +103 -0
  257. package/es-modules/Grid/Core/Globals.js +134 -0
  258. package/es-modules/Grid/Core/Grid.d.ts +295 -0
  259. package/es-modules/Grid/Core/Grid.js +730 -0
  260. package/es-modules/Grid/Core/GridUtils.d.ts +110 -0
  261. package/es-modules/Grid/Core/GridUtils.js +191 -0
  262. package/es-modules/Grid/Core/Options.d.ts +599 -0
  263. package/es-modules/Grid/Core/Options.js +16 -0
  264. package/es-modules/Grid/Core/Pagination/Icons.d.ts +7 -0
  265. package/es-modules/Grid/Core/Pagination/Icons.js +7 -0
  266. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +278 -0
  267. package/es-modules/Grid/Core/Pagination/Pagination.js +842 -0
  268. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +228 -0
  269. package/es-modules/Grid/Core/Querying/FilteringController.d.ts +66 -0
  270. package/es-modules/Grid/Core/Querying/FilteringController.js +256 -0
  271. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +50 -0
  272. package/es-modules/Grid/Core/Querying/PaginationController.js +101 -0
  273. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +58 -0
  274. package/es-modules/Grid/Core/Querying/QueryingController.js +127 -0
  275. package/es-modules/Grid/Core/Querying/SortingController.d.ts +67 -0
  276. package/es-modules/Grid/Core/Querying/SortingController.js +136 -0
  277. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +114 -0
  278. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +351 -0
  279. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +14 -0
  280. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +86 -0
  281. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +19 -0
  282. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +80 -0
  283. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +52 -0
  284. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +81 -0
  285. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +56 -0
  286. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +170 -0
  287. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.d.ts +55 -0
  288. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +182 -0
  289. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +87 -0
  290. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +346 -0
  291. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +88 -0
  292. package/es-modules/Grid/Core/Table/Body/TableCell.js +231 -0
  293. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +79 -0
  294. package/es-modules/Grid/Core/Table/Body/TableRow.js +177 -0
  295. package/es-modules/Grid/Core/Table/Cell.d.ts +92 -0
  296. package/es-modules/Grid/Core/Table/Cell.js +223 -0
  297. package/es-modules/Grid/Core/Table/CellContent/CellContent.d.ts +30 -0
  298. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +40 -0
  299. package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +19 -0
  300. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +98 -0
  301. package/es-modules/Grid/Core/Table/Column.d.ts +136 -0
  302. package/es-modules/Grid/Core/Table/Column.js +230 -0
  303. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.d.ts +7 -0
  304. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +62 -0
  305. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +32 -0
  306. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +68 -0
  307. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.d.ts +7 -0
  308. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +53 -0
  309. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.d.ts +7 -0
  310. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +63 -0
  311. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +92 -0
  312. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +194 -0
  313. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +68 -0
  314. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +187 -0
  315. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +29 -0
  316. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +77 -0
  317. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.d.ts +13 -0
  318. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +79 -0
  319. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +12 -0
  320. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +71 -0
  321. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.d.ts +12 -0
  322. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +66 -0
  323. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +25 -0
  324. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +65 -0
  325. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +12 -0
  326. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +81 -0
  327. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +12 -0
  328. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +80 -0
  329. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +11 -0
  330. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +81 -0
  331. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +70 -0
  332. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +225 -0
  333. package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +53 -0
  334. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +182 -0
  335. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +65 -0
  336. package/es-modules/Grid/Core/Table/Header/TableHeader.js +159 -0
  337. package/es-modules/Grid/Core/Table/Row.d.ts +76 -0
  338. package/es-modules/Grid/Core/Table/Row.js +131 -0
  339. package/es-modules/Grid/Core/Table/Table.d.ts +181 -0
  340. package/es-modules/Grid/Core/Table/Table.js +399 -0
  341. package/es-modules/Grid/Core/UI/Button.d.ts +31 -0
  342. package/es-modules/Grid/Core/UI/Button.js +16 -0
  343. package/es-modules/Grid/Core/UI/ContextMenu.d.ts +38 -0
  344. package/es-modules/Grid/Core/UI/ContextMenu.js +132 -0
  345. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +126 -0
  346. package/es-modules/Grid/Core/UI/ContextMenuButton.js +183 -0
  347. package/es-modules/Grid/Core/UI/Popup.d.ts +149 -0
  348. package/es-modules/Grid/Core/UI/Popup.js +271 -0
  349. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +53 -0
  350. package/es-modules/Grid/Core/UI/SvgIcons.js +158 -0
  351. package/es-modules/Grid/Core/UI/Toolbar.d.ts +16 -0
  352. package/es-modules/Grid/Core/UI/Toolbar.js +16 -0
  353. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +135 -0
  354. package/es-modules/Grid/Core/UI/ToolbarButton.js +191 -0
  355. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +112 -0
  356. package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +80 -0
  357. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +211 -0
  358. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +123 -0
  359. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +198 -0
  360. package/es-modules/Grid/Pro/CellRendering/CellContentPro.d.ts +23 -0
  361. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +45 -0
  362. package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +50 -0
  363. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +41 -0
  364. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +18 -0
  365. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +58 -0
  366. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +48 -0
  367. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +18 -0
  368. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +79 -0
  369. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +30 -0
  370. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +122 -0
  371. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +12 -0
  372. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +39 -0
  373. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +66 -0
  374. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +145 -0
  375. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +12 -0
  376. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +38 -0
  377. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.d.ts +58 -0
  378. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +158 -0
  379. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +58 -0
  380. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +173 -0
  381. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +28 -0
  382. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +157 -0
  383. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +58 -0
  384. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +168 -0
  385. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +13 -0
  386. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +41 -0
  387. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +50 -0
  388. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +65 -0
  389. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +37 -0
  390. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +65 -0
  391. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +26 -0
  392. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +16 -0
  393. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +37 -0
  394. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +64 -0
  395. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +52 -0
  396. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +64 -0
  397. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +74 -0
  398. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +66 -0
  399. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +45 -0
  400. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +89 -0
  401. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +54 -0
  402. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +65 -0
  403. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +43 -0
  404. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +74 -0
  405. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +37 -0
  406. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +64 -0
  407. package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +29 -0
  408. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +118 -0
  409. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +270 -0
  410. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +32 -0
  411. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +63 -0
  412. package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +35 -0
  413. package/es-modules/Grid/Pro/Credits/CreditsPro.js +112 -0
  414. package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +28 -0
  415. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +61 -0
  416. package/es-modules/Grid/Pro/Export/Exporting.d.ts +68 -0
  417. package/es-modules/Grid/Pro/Export/Exporting.js +202 -0
  418. package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +68 -0
  419. package/es-modules/Grid/Pro/Export/ExportingComposition.js +55 -0
  420. package/es-modules/Grid/Pro/GridEvents.d.ts +119 -0
  421. package/es-modules/Grid/Pro/GridEvents.js +107 -0
  422. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +75 -0
  423. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +76 -0
  424. package/es-modules/Grid/Pro/highcharts.d.ts +7 -0
  425. package/es-modules/Grid/index.d.ts +5 -0
  426. package/es-modules/Grid/index.js +19 -0
  427. package/es-modules/Shared/BaseForm.d.ts +49 -0
  428. package/es-modules/Shared/BaseForm.js +126 -0
  429. package/es-modules/Shared/DownloadURL.d.ts +85 -0
  430. package/es-modules/Shared/DownloadURL.js +198 -0
  431. package/es-modules/Shared/LangOptionsCore.d.ts +27 -0
  432. package/es-modules/Shared/TimeBase.d.ts +353 -0
  433. package/es-modules/Shared/TimeBase.js +830 -0
  434. package/es-modules/Shared/Types.d.ts +48 -0
  435. package/es-modules/masters/grid-pro.src.d.ts +99 -0
  436. package/es-modules/masters/grid-pro.src.js +129 -0
  437. package/grid-pro.d.ts +50 -0
  438. package/grid-pro.js +12 -0
  439. package/grid-pro.js.map +1 -0
  440. package/grid-pro.src.d.ts +50 -0
  441. package/grid-pro.src.js +26623 -0
  442. package/package.json +21 -0
@@ -0,0 +1,133 @@
1
+ import type Accessibility from './Accessibility';
2
+ import type { DOMElementType, HTMLDOMElement } from '../Core/Renderer/DOMElementType';
3
+ import type KeyboardNavigationHandler from './KeyboardNavigationHandler';
4
+ import Chart from '../Core/Chart/Chart.js';
5
+ import MenuComponent from './Components/MenuComponent.js';
6
+ import EventProvider from './Utils/EventProvider.js';
7
+ /**
8
+ * The KeyboardNavigation class, containing the overall keyboard navigation
9
+ * logic for the chart.
10
+ *
11
+ * @requires modules/accessibility
12
+ *
13
+ * @private
14
+ * @class
15
+ * @param {Highcharts.Chart} chart
16
+ * Chart object
17
+ * @param {Object} components
18
+ * Map of component names to AccessibilityComponent objects.
19
+ * @name Highcharts.KeyboardNavigation
20
+ */
21
+ declare class KeyboardNavigation {
22
+ constructor(chart: Chart, components: Accessibility.ComponentsObject);
23
+ chart: Chart;
24
+ components: Accessibility.ComponentsObject;
25
+ currentModuleIx: number;
26
+ eventProvider: EventProvider;
27
+ exitAnchor?: DOMElementType;
28
+ exiting?: boolean;
29
+ isClickingChart?: boolean;
30
+ keyboardReset?: boolean;
31
+ modules: Array<KeyboardNavigationHandler>;
32
+ tabindexContainer: HTMLDOMElement;
33
+ tabbingInBackwards?: boolean;
34
+ /**
35
+ * Initialize the class
36
+ * @private
37
+ * @param {Highcharts.Chart} chart
38
+ * Chart object
39
+ * @param {Object} components
40
+ * Map of component names to AccessibilityComponent objects.
41
+ */
42
+ init(chart: Chart, components: Accessibility.ComponentsObject): void;
43
+ /**
44
+ * Update the modules for the keyboard navigation.
45
+ * @param {Array<string>} [order]
46
+ * Array specifying the tab order of the components.
47
+ */
48
+ update(order?: Array<(keyof Accessibility.ComponentsObject)>): void;
49
+ /**
50
+ * We use an exit anchor to move focus out of chart whenever we want, by
51
+ * setting focus to this div and not preventing the default tab action. We
52
+ * also use this when users come back into the chart by tabbing back, in
53
+ * order to navigate from the end of the chart.
54
+ * @private
55
+ */
56
+ updateExitAnchor(): void;
57
+ /**
58
+ * Move to prev/next module.
59
+ * @private
60
+ * @param {number} direction
61
+ * Direction to move. +1 for next, -1 for prev.
62
+ * @return {boolean}
63
+ * True if there was a valid module in direction.
64
+ */
65
+ move(direction: number): boolean;
66
+ /**
67
+ * Function to run on container focus
68
+ * @private
69
+ * @param {global.FocusEvent} e Browser focus event.
70
+ */
71
+ private onFocus;
72
+ /**
73
+ * Reset chart navigation state if we mouse click and it's not already
74
+ * reset. Reset fully if outside the chart, otherwise just hide focus
75
+ * indicator.
76
+ * @private
77
+ */
78
+ private onMouseUp;
79
+ /**
80
+ * Function to run on keydown
81
+ * @private
82
+ * @param {global.KeyboardEvent} ev Browser keydown event.
83
+ */
84
+ private onKeydown;
85
+ /**
86
+ * Chart container should have tabindex if navigation is enabled.
87
+ * @private
88
+ */
89
+ private updateContainerTabindex;
90
+ /**
91
+ * Add new exit anchor to the chart.
92
+ * @private
93
+ */
94
+ private createExitAnchor;
95
+ /**
96
+ * Add attributes and events to an element to make it function as an
97
+ * exit anchor.
98
+ * @private
99
+ */
100
+ private makeElementAnExitAnchor;
101
+ /**
102
+ * Destroy the exit anchor and remove from DOM.
103
+ * @private
104
+ */
105
+ private removeExitAnchor;
106
+ /**
107
+ * Add focus handler to exit anchor element.
108
+ * @private
109
+ */
110
+ private addExitAnchorEventsToEl;
111
+ /**
112
+ * Get the ix of the first module that either does not require validation or
113
+ * validates positively.
114
+ * @private
115
+ */
116
+ private getFirstValidModuleIx;
117
+ /**
118
+ * Remove all traces of keyboard navigation.
119
+ * @private
120
+ */
121
+ destroy(): void;
122
+ }
123
+ declare namespace KeyboardNavigation {
124
+ class ChartComposition extends MenuComponent.ChartComposition {
125
+ dismissPopupContent(): void;
126
+ }
127
+ /**
128
+ * Composition function.
129
+ * @private
130
+ */
131
+ function compose<T extends typeof Chart>(ChartClass: T): (T & typeof ChartComposition);
132
+ }
133
+ export default KeyboardNavigation;
@@ -0,0 +1,450 @@
1
+ /* *
2
+ *
3
+ * (c) 2009-2025 Øystein Moseng
4
+ *
5
+ * Main keyboard navigation handling.
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * */
12
+ 'use strict';
13
+ import H from '../Core/Globals.js';
14
+ const { doc, win } = H;
15
+ import MenuComponent from './Components/MenuComponent.js';
16
+ import U from '../Core/Utilities.js';
17
+ const { addEvent, defined, fireEvent } = U;
18
+ import EventProvider from './Utils/EventProvider.js';
19
+ import HTMLUtilities from './Utils/HTMLUtilities.js';
20
+ const { getElement, simulatedEventTarget } = HTMLUtilities;
21
+ /* *
22
+ *
23
+ * Class
24
+ *
25
+ * */
26
+ /**
27
+ * The KeyboardNavigation class, containing the overall keyboard navigation
28
+ * logic for the chart.
29
+ *
30
+ * @requires modules/accessibility
31
+ *
32
+ * @private
33
+ * @class
34
+ * @param {Highcharts.Chart} chart
35
+ * Chart object
36
+ * @param {Object} components
37
+ * Map of component names to AccessibilityComponent objects.
38
+ * @name Highcharts.KeyboardNavigation
39
+ */
40
+ class KeyboardNavigation {
41
+ /* *
42
+ *
43
+ * Constructor
44
+ *
45
+ * */
46
+ constructor(chart, components) {
47
+ this.currentModuleIx = NaN;
48
+ this.modules = [];
49
+ this.init(chart, components);
50
+ }
51
+ /* *
52
+ *
53
+ * Functions
54
+ *
55
+ * */
56
+ /**
57
+ * Initialize the class
58
+ * @private
59
+ * @param {Highcharts.Chart} chart
60
+ * Chart object
61
+ * @param {Object} components
62
+ * Map of component names to AccessibilityComponent objects.
63
+ */
64
+ init(chart, components) {
65
+ const ep = this.eventProvider = new EventProvider();
66
+ this.chart = chart;
67
+ this.components = components;
68
+ this.modules = [];
69
+ this.currentModuleIx = 0;
70
+ this.update();
71
+ ep.addEvent(this.tabindexContainer, 'keydown', (e) => this.onKeydown(e));
72
+ ep.addEvent(this.tabindexContainer, 'focus', (e) => this.onFocus(e));
73
+ ['mouseup', 'touchend'].forEach((eventName) => ep.addEvent(doc, eventName, (e) => this.onMouseUp(e)));
74
+ ['mousedown', 'touchstart'].forEach((eventName) => ep.addEvent(chart.renderTo, eventName, () => {
75
+ this.isClickingChart = true;
76
+ }));
77
+ }
78
+ /**
79
+ * Update the modules for the keyboard navigation.
80
+ * @param {Array<string>} [order]
81
+ * Array specifying the tab order of the components.
82
+ */
83
+ update(order) {
84
+ const a11yOptions = this.chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, components = this.components;
85
+ this.updateContainerTabindex();
86
+ if (keyboardOptions &&
87
+ keyboardOptions.enabled &&
88
+ order &&
89
+ order.length) {
90
+ // We (still) have keyboard navigation. Update module list
91
+ this.modules = order.reduce(function (modules, componentName) {
92
+ const navModules = components[componentName]
93
+ .getKeyboardNavigation();
94
+ return modules.concat(navModules);
95
+ }, []);
96
+ this.updateExitAnchor();
97
+ }
98
+ else {
99
+ this.modules = [];
100
+ this.currentModuleIx = 0;
101
+ this.removeExitAnchor();
102
+ }
103
+ }
104
+ /**
105
+ * We use an exit anchor to move focus out of chart whenever we want, by
106
+ * setting focus to this div and not preventing the default tab action. We
107
+ * also use this when users come back into the chart by tabbing back, in
108
+ * order to navigate from the end of the chart.
109
+ * @private
110
+ */
111
+ updateExitAnchor() {
112
+ const endMarkerId = `highcharts-end-of-chart-marker-${this.chart.index}`, endMarker = getElement(endMarkerId);
113
+ this.removeExitAnchor();
114
+ if (endMarker) {
115
+ this.makeElementAnExitAnchor(endMarker);
116
+ this.exitAnchor = endMarker;
117
+ }
118
+ else {
119
+ this.createExitAnchor();
120
+ }
121
+ }
122
+ /**
123
+ * Move to prev/next module.
124
+ * @private
125
+ * @param {number} direction
126
+ * Direction to move. +1 for next, -1 for prev.
127
+ * @return {boolean}
128
+ * True if there was a valid module in direction.
129
+ */
130
+ move(direction) {
131
+ const curModule = this.modules && this.modules[this.currentModuleIx];
132
+ if (curModule && curModule.terminate) {
133
+ curModule.terminate(direction);
134
+ }
135
+ // Remove existing focus border if any
136
+ if (this.chart.focusElement) {
137
+ this.chart.focusElement.removeFocusBorder();
138
+ }
139
+ this.currentModuleIx += direction;
140
+ const newModule = this.modules && this.modules[this.currentModuleIx];
141
+ if (newModule) {
142
+ if (newModule.validate && !newModule.validate()) {
143
+ return this.move(direction); // Invalid module, recurse
144
+ }
145
+ if (newModule.init) {
146
+ newModule.init(direction); // Valid module, init it
147
+ return true;
148
+ }
149
+ }
150
+ // No module
151
+ this.currentModuleIx = 0; // Reset counter
152
+ // Set focus to chart or exit anchor depending on direction
153
+ this.exiting = true;
154
+ if (direction > 0) {
155
+ this.exitAnchor && this.exitAnchor.focus();
156
+ }
157
+ else {
158
+ this.tabindexContainer.focus();
159
+ }
160
+ return false;
161
+ }
162
+ /**
163
+ * Function to run on container focus
164
+ * @private
165
+ * @param {global.FocusEvent} e Browser focus event.
166
+ */
167
+ onFocus(e) {
168
+ const chart = this.chart, focusComesFromChart = (e.relatedTarget &&
169
+ chart.container.contains(e.relatedTarget)), a11yOptions = chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, enabled = keyboardOptions && keyboardOptions.enabled;
170
+ // Init keyboard nav if tabbing into chart
171
+ if (enabled &&
172
+ !this.exiting &&
173
+ !this.tabbingInBackwards &&
174
+ !this.isClickingChart &&
175
+ !focusComesFromChart) {
176
+ const ix = this.getFirstValidModuleIx();
177
+ if (ix !== null) {
178
+ this.currentModuleIx = ix;
179
+ this.modules[ix].init(1);
180
+ }
181
+ }
182
+ this.keyboardReset = false;
183
+ this.exiting = false;
184
+ }
185
+ /**
186
+ * Reset chart navigation state if we mouse click and it's not already
187
+ * reset. Reset fully if outside the chart, otherwise just hide focus
188
+ * indicator.
189
+ * @private
190
+ */
191
+ onMouseUp(e) {
192
+ delete this.isClickingChart;
193
+ if (!this.keyboardReset &&
194
+ e.relatedTarget !== simulatedEventTarget) {
195
+ const chart = this.chart;
196
+ if (!e.target ||
197
+ !chart.container.contains(e.target)) {
198
+ const curMod = this.modules &&
199
+ this.modules[this.currentModuleIx || 0];
200
+ if (curMod && curMod.terminate) {
201
+ curMod.terminate();
202
+ }
203
+ this.currentModuleIx = 0;
204
+ }
205
+ if (chart.focusElement) {
206
+ chart.focusElement.removeFocusBorder();
207
+ delete chart.focusElement;
208
+ }
209
+ this.keyboardReset = true;
210
+ }
211
+ }
212
+ /**
213
+ * Function to run on keydown
214
+ * @private
215
+ * @param {global.KeyboardEvent} ev Browser keydown event.
216
+ */
217
+ onKeydown(ev) {
218
+ const e = ev || win.event, curNavModule = (this.modules &&
219
+ this.modules.length &&
220
+ this.modules[this.currentModuleIx]);
221
+ let preventDefault;
222
+ const target = e.target;
223
+ if (target &&
224
+ target.nodeName === 'INPUT' &&
225
+ !target.classList.contains('highcharts-a11y-proxy-element')) {
226
+ return;
227
+ }
228
+ // Used for resetting nav state when clicking outside chart
229
+ this.keyboardReset = false;
230
+ // Used for sending focus out of the chart by the modules.
231
+ this.exiting = false;
232
+ // If there is a nav module for the current index, run it.
233
+ // Otherwise, we are outside of the chart in some direction.
234
+ if (curNavModule) {
235
+ const response = curNavModule.run(e);
236
+ if (response === curNavModule.response.success) {
237
+ preventDefault = true;
238
+ }
239
+ else if (response === curNavModule.response.prev) {
240
+ preventDefault = this.move(-1);
241
+ }
242
+ else if (response === curNavModule.response.next) {
243
+ preventDefault = this.move(1);
244
+ }
245
+ if (preventDefault) {
246
+ e.preventDefault();
247
+ e.stopPropagation();
248
+ }
249
+ }
250
+ }
251
+ /**
252
+ * Chart container should have tabindex if navigation is enabled.
253
+ * @private
254
+ */
255
+ updateContainerTabindex() {
256
+ const a11yOptions = this.chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, shouldHaveTabindex = !(keyboardOptions && keyboardOptions.enabled === false), chart = this.chart, container = chart.container;
257
+ let tabindexContainer;
258
+ if (chart.renderTo.hasAttribute('tabindex')) {
259
+ container.removeAttribute('tabindex');
260
+ tabindexContainer = chart.renderTo;
261
+ }
262
+ else {
263
+ tabindexContainer = container;
264
+ }
265
+ this.tabindexContainer = tabindexContainer;
266
+ const curTabindex = tabindexContainer.getAttribute('tabindex');
267
+ if (shouldHaveTabindex && !curTabindex) {
268
+ tabindexContainer.setAttribute('tabindex', '0');
269
+ }
270
+ else if (!shouldHaveTabindex) {
271
+ chart.container.removeAttribute('tabindex');
272
+ }
273
+ }
274
+ /**
275
+ * Add new exit anchor to the chart.
276
+ * @private
277
+ */
278
+ createExitAnchor() {
279
+ const chart = this.chart, exitAnchor = this.exitAnchor = doc.createElement('div');
280
+ chart.renderTo.appendChild(exitAnchor);
281
+ this.makeElementAnExitAnchor(exitAnchor);
282
+ }
283
+ /**
284
+ * Add attributes and events to an element to make it function as an
285
+ * exit anchor.
286
+ * @private
287
+ */
288
+ makeElementAnExitAnchor(el) {
289
+ const chartTabindex = this.tabindexContainer.getAttribute('tabindex') || 0;
290
+ el.setAttribute('class', 'highcharts-exit-anchor');
291
+ el.setAttribute('tabindex', chartTabindex);
292
+ el.setAttribute('aria-hidden', false);
293
+ // Handle focus
294
+ this.addExitAnchorEventsToEl(el);
295
+ }
296
+ /**
297
+ * Destroy the exit anchor and remove from DOM.
298
+ * @private
299
+ */
300
+ removeExitAnchor() {
301
+ // Remove event from element and from eventRemovers array to prevent
302
+ // memory leak (#20329).
303
+ if (this.exitAnchor) {
304
+ const el = this.eventProvider.eventRemovers.find((el) => el.element === this.exitAnchor);
305
+ if (el && defined(el.remover)) {
306
+ this.eventProvider.removeEvent(el.remover);
307
+ }
308
+ if (this.exitAnchor.parentNode) {
309
+ this.exitAnchor.parentNode.removeChild(this.exitAnchor);
310
+ }
311
+ delete this.exitAnchor;
312
+ }
313
+ }
314
+ /**
315
+ * Add focus handler to exit anchor element.
316
+ * @private
317
+ */
318
+ addExitAnchorEventsToEl(element) {
319
+ const chart = this.chart, keyboardNavigation = this;
320
+ this.eventProvider.addEvent(element, 'focus', function (ev) {
321
+ const e = ev || win.event, focusComesFromChart = (e.relatedTarget &&
322
+ chart.container.contains(e.relatedTarget)), comingInBackwards = !(focusComesFromChart || keyboardNavigation.exiting);
323
+ if (chart.focusElement) {
324
+ delete chart.focusElement;
325
+ }
326
+ if (comingInBackwards) {
327
+ // Focus the container instead
328
+ keyboardNavigation.tabbingInBackwards = true;
329
+ keyboardNavigation.tabindexContainer.focus();
330
+ delete keyboardNavigation.tabbingInBackwards;
331
+ e.preventDefault();
332
+ // Move to last valid keyboard nav module
333
+ // Note the we don't run it, just set the index
334
+ if (keyboardNavigation.modules &&
335
+ keyboardNavigation.modules.length) {
336
+ keyboardNavigation.currentModuleIx =
337
+ keyboardNavigation.modules.length - 1;
338
+ const curModule = keyboardNavigation.modules[keyboardNavigation.currentModuleIx];
339
+ // Validate the module
340
+ if (curModule &&
341
+ curModule.validate && !curModule.validate()) {
342
+ // Invalid.
343
+ // Try moving backwards to find next valid.
344
+ keyboardNavigation.move(-1);
345
+ }
346
+ else if (curModule) {
347
+ // We have a valid module, init it
348
+ curModule.init(-1);
349
+ }
350
+ }
351
+ }
352
+ else {
353
+ // Don't skip the next focus, we only skip once.
354
+ keyboardNavigation.exiting = false;
355
+ }
356
+ });
357
+ }
358
+ /**
359
+ * Get the ix of the first module that either does not require validation or
360
+ * validates positively.
361
+ * @private
362
+ */
363
+ getFirstValidModuleIx() {
364
+ const len = this.modules.length;
365
+ for (let i = 0; i < len; ++i) {
366
+ const mod = this.modules[i];
367
+ if (!mod.validate || mod.validate()) {
368
+ return i;
369
+ }
370
+ }
371
+ return null;
372
+ }
373
+ /**
374
+ * Remove all traces of keyboard navigation.
375
+ * @private
376
+ */
377
+ destroy() {
378
+ this.removeExitAnchor();
379
+ this.eventProvider.removeAddedEvents();
380
+ this.chart.container.removeAttribute('tabindex');
381
+ }
382
+ }
383
+ /* *
384
+ *
385
+ * Class Namespace
386
+ *
387
+ * */
388
+ (function (KeyboardNavigation) {
389
+ /* *
390
+ *
391
+ * Declarations
392
+ *
393
+ * */
394
+ /* *
395
+ *
396
+ * Functions
397
+ *
398
+ * */
399
+ /**
400
+ * Composition function.
401
+ * @private
402
+ */
403
+ function compose(ChartClass) {
404
+ MenuComponent.compose(ChartClass);
405
+ const chartProto = ChartClass.prototype;
406
+ if (!chartProto.dismissPopupContent) {
407
+ chartProto.dismissPopupContent = chartDismissPopupContent;
408
+ if (doc) {
409
+ addEvent(doc, 'keydown', documentOnKeydown);
410
+ }
411
+ }
412
+ return ChartClass;
413
+ }
414
+ KeyboardNavigation.compose = compose;
415
+ /**
416
+ * Dismiss popup content in chart, including export menu and tooltip.
417
+ * @private
418
+ */
419
+ function chartDismissPopupContent() {
420
+ const chart = this;
421
+ fireEvent(this, 'dismissPopupContent', {}, function () {
422
+ if (chart.tooltip) {
423
+ chart.tooltip.hide(0);
424
+ }
425
+ chart.hideExportMenu();
426
+ });
427
+ }
428
+ /**
429
+ * Add event listener to document to detect ESC key press and dismiss
430
+ * hover/popup content.
431
+ * @private
432
+ */
433
+ function documentOnKeydown(e) {
434
+ const keycode = e.which || e.keyCode;
435
+ const esc = 27;
436
+ if (keycode === esc && H.charts) {
437
+ H.charts.forEach((chart) => {
438
+ if (chart && chart.dismissPopupContent) {
439
+ chart.dismissPopupContent();
440
+ }
441
+ });
442
+ }
443
+ }
444
+ })(KeyboardNavigation || (KeyboardNavigation = {}));
445
+ /* *
446
+ *
447
+ * Default Export
448
+ *
449
+ * */
450
+ export default KeyboardNavigation;
@@ -0,0 +1,48 @@
1
+ import type Chart from '../Core/Chart/Chart';
2
+ /**
3
+ * Define a keyboard navigation handler for use with a
4
+ * Highcharts.AccessibilityComponent instance. This functions as an abstraction
5
+ * layer for keyboard navigation, and defines a map of keyCodes to handler
6
+ * functions.
7
+ *
8
+ * @requires modules/accessibility
9
+ *
10
+ * @sample highcharts/accessibility/custom-component
11
+ * Custom accessibility component
12
+ *
13
+ * @class
14
+ * @name Highcharts.KeyboardNavigationHandler
15
+ *
16
+ * @param {Highcharts.Chart} chart
17
+ * The chart this module should act on.
18
+ *
19
+ * @param {Highcharts.KeyboardNavigationHandlerOptionsObject} options
20
+ * Options for the keyboard navigation handler.
21
+ */
22
+ declare class KeyboardNavigationHandler {
23
+ constructor(chart: Chart, options: KeyboardNavigationHandler.Options);
24
+ chart: Chart;
25
+ init: Function;
26
+ keyCodeMap: Array<[Array<number>, Function]>;
27
+ response: Record<string, number>;
28
+ terminate?: Function;
29
+ validate?: Function;
30
+ /**
31
+ * Find handler function(s) for key code in the keyCodeMap and run it.
32
+ *
33
+ * @function KeyboardNavigationHandler#run
34
+ * @param {global.KeyboardEvent} e
35
+ * @return {number} Returns a response code indicating whether the run was
36
+ * a success/fail/unhandled, or if we should move to next/prev module.
37
+ */
38
+ run(e: KeyboardEvent): number;
39
+ }
40
+ declare namespace KeyboardNavigationHandler {
41
+ interface Options {
42
+ keyCodeMap: Array<[Array<number>, Function]>;
43
+ init: Function;
44
+ terminate?: Function;
45
+ validate?: Function;
46
+ }
47
+ }
48
+ export default KeyboardNavigationHandler;