@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,399 @@
1
+ /* *
2
+ *
3
+ * Grid Table Viewport class
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ * - Sebastian Bochan
14
+ *
15
+ * */
16
+ 'use strict';
17
+ import GridUtils from '../GridUtils.js';
18
+ import Utils from '../../../Core/Utilities.js';
19
+ import ColumnResizing from './ColumnResizing/ColumnResizing.js';
20
+ import Column from './Column.js';
21
+ import TableHeader from './Header/TableHeader.js';
22
+ import RowsVirtualizer from './Actions/RowsVirtualizer.js';
23
+ import ColumnsResizer from './Actions/ColumnsResizer.js';
24
+ import Globals from '../Globals.js';
25
+ const { makeHTMLElement } = GridUtils;
26
+ const { fireEvent, getStyle, defined } = Utils;
27
+ /* *
28
+ *
29
+ * Class
30
+ *
31
+ * */
32
+ /**
33
+ * Represents a table viewport of the data grid.
34
+ */
35
+ class Table {
36
+ /* *
37
+ *
38
+ * Constructor
39
+ *
40
+ * */
41
+ /**
42
+ * Constructs a new data grid table.
43
+ *
44
+ * @param grid
45
+ * The data grid instance which the table (viewport) belongs to.
46
+ *
47
+ * @param tableElement
48
+ * The HTML table element of the data grid.
49
+ */
50
+ constructor(grid, tableElement) {
51
+ /**
52
+ * The visible columns of the table.
53
+ */
54
+ this.columns = [];
55
+ /**
56
+ * The visible rows of the table.
57
+ */
58
+ this.rows = [];
59
+ /**
60
+ * Handles the focus event on the table body.
61
+ *
62
+ * @param e
63
+ * The focus event.
64
+ */
65
+ this.onTBodyFocus = (e) => {
66
+ e.preventDefault();
67
+ this.rows[this.rowsVirtualizer.rowCursor - this.rows[0].index]
68
+ ?.cells[0]?.htmlElement.focus();
69
+ };
70
+ /**
71
+ * Handles the resize event.
72
+ */
73
+ this.onResize = () => {
74
+ this.reflow();
75
+ };
76
+ /**
77
+ * Handles the scroll event.
78
+ */
79
+ this.onScroll = () => {
80
+ if (this.virtualRows) {
81
+ this.rowsVirtualizer.scroll();
82
+ }
83
+ this.header?.scrollHorizontally(this.tbodyElement.scrollLeft);
84
+ };
85
+ this.grid = grid;
86
+ this.tableElement = tableElement;
87
+ this.dataTable = this.grid.presentationTable;
88
+ const dgOptions = grid.options;
89
+ const customClassName = dgOptions?.rendering?.table?.className;
90
+ this.columnResizing = ColumnResizing.initMode(this);
91
+ this.virtualRows = this.shouldVirtualizeRows();
92
+ if (dgOptions?.rendering?.header?.enabled) {
93
+ this.theadElement = makeHTMLElement('thead', {}, tableElement);
94
+ }
95
+ this.tbodyElement = makeHTMLElement('tbody', {}, tableElement);
96
+ if (this.virtualRows) {
97
+ tableElement.classList.add(Globals.getClassName('virtualization'));
98
+ }
99
+ if (dgOptions?.rendering?.columns?.resizing?.enabled) {
100
+ this.columnsResizer = new ColumnsResizer(this);
101
+ }
102
+ if (customClassName) {
103
+ tableElement.classList.add(...customClassName.split(/\s+/g));
104
+ }
105
+ tableElement.classList.add(Globals.getClassName('scrollableContent'));
106
+ // Load columns
107
+ this.loadColumns();
108
+ // Virtualization
109
+ this.rowsVirtualizer = new RowsVirtualizer(this);
110
+ // Init Table
111
+ this.init();
112
+ // Add event listeners
113
+ this.resizeObserver = new ResizeObserver(this.onResize);
114
+ this.resizeObserver.observe(tableElement);
115
+ this.tbodyElement.addEventListener('scroll', this.onScroll);
116
+ this.tbodyElement.addEventListener('focus', this.onTBodyFocus);
117
+ }
118
+ /* *
119
+ *
120
+ * Methods
121
+ *
122
+ * */
123
+ /**
124
+ * Initializes the data grid table.
125
+ */
126
+ init() {
127
+ fireEvent(this, 'beforeInit');
128
+ this.setTbodyMinHeight();
129
+ // Load & render head
130
+ if (this.grid.options?.rendering?.header?.enabled) {
131
+ this.header = new TableHeader(this);
132
+ this.header.render();
133
+ }
134
+ // TODO: Load & render footer
135
+ // this.footer = new TableFooter(this);
136
+ // this.footer.render();
137
+ this.rowsVirtualizer.initialRender();
138
+ fireEvent(this, 'afterInit');
139
+ }
140
+ /**
141
+ * Sets the minimum height of the table body.
142
+ */
143
+ setTbodyMinHeight() {
144
+ const { options } = this.grid;
145
+ const minVisibleRows = options?.rendering?.rows?.minVisibleRows;
146
+ const tbody = this.tbodyElement;
147
+ if (defined(minVisibleRows) &&
148
+ !getStyle(tbody, 'min-height', true)) {
149
+ tbody.style.minHeight = (minVisibleRows * this.rowsVirtualizer.defaultRowHeight) + 'px';
150
+ }
151
+ }
152
+ /**
153
+ * Checks if rows virtualization should be enabled.
154
+ *
155
+ * @returns
156
+ * Whether rows virtualization should be enabled.
157
+ */
158
+ shouldVirtualizeRows() {
159
+ const { grid } = this;
160
+ const rows = grid.userOptions.rendering?.rows;
161
+ if (defined(rows?.virtualization)) {
162
+ return rows.virtualization;
163
+ }
164
+ // Consider changing this to use the presentation table row count
165
+ // instead of the original data table row count.
166
+ const rowCount = Number(grid.dataTable?.rowCount);
167
+ const threshold = rows?.virtualizationThreshold ?? 50;
168
+ const paginationPageSize = grid.pagination?.currentPageSize;
169
+ return paginationPageSize ?
170
+ paginationPageSize >= threshold :
171
+ rowCount >= threshold;
172
+ }
173
+ /**
174
+ * Loads the columns of the table.
175
+ */
176
+ loadColumns() {
177
+ const { enabledColumns } = this.grid;
178
+ if (!enabledColumns) {
179
+ return;
180
+ }
181
+ let columnId;
182
+ for (let i = 0, iEnd = enabledColumns.length; i < iEnd; ++i) {
183
+ columnId = enabledColumns[i];
184
+ this.columns.push(new Column(this, columnId, i));
185
+ }
186
+ this.columnResizing.loadColumns();
187
+ }
188
+ /**
189
+ * Updates the rows of the table.
190
+ */
191
+ async updateRows() {
192
+ const vp = this;
193
+ let focusedRowId;
194
+ if (vp.focusCursor) {
195
+ focusedRowId = vp.dataTable.getOriginalRowIndex(vp.focusCursor[0]);
196
+ }
197
+ vp.grid.pagination?.clampCurrentPage();
198
+ // Update data
199
+ const oldRowsCount = (vp.rows[vp.rows.length - 1]?.index ?? -1) + 1;
200
+ await vp.grid.querying.proceed();
201
+ vp.dataTable = vp.grid.presentationTable;
202
+ for (const column of vp.columns) {
203
+ column.loadData();
204
+ }
205
+ // Update virtualization if needed
206
+ const shouldVirtualize = this.shouldVirtualizeRows();
207
+ let shouldRerender = false;
208
+ if (this.virtualRows !== shouldVirtualize) {
209
+ this.virtualRows = shouldVirtualize;
210
+ vp.tableElement.classList.toggle(Globals.getClassName('virtualization'), shouldVirtualize);
211
+ shouldRerender = true;
212
+ }
213
+ if (shouldRerender || oldRowsCount !== vp.dataTable.rowCount) {
214
+ // Rerender all rows
215
+ vp.rowsVirtualizer.rerender();
216
+ }
217
+ else {
218
+ // Update existing rows
219
+ for (let i = 0, iEnd = vp.rows.length; i < iEnd; ++i) {
220
+ vp.rows[i].update();
221
+ }
222
+ }
223
+ // Update the pagination controls
224
+ vp.grid.pagination?.updateControls();
225
+ vp.reflow();
226
+ // Scroll to the focused row
227
+ if (focusedRowId !== void 0 && vp.focusCursor) {
228
+ const newRowIndex = vp.dataTable.getLocalRowIndex(focusedRowId);
229
+ if (newRowIndex !== void 0) {
230
+ // Scroll to the focused row.
231
+ vp.scrollToRow(newRowIndex);
232
+ // Focus the cell that was focused before the update.
233
+ setTimeout(() => {
234
+ if (!defined(vp.focusCursor?.[1])) {
235
+ return;
236
+ }
237
+ vp.rows[newRowIndex - vp.rows[0].index]?.cells[vp.focusCursor[1]].htmlElement.focus();
238
+ });
239
+ }
240
+ }
241
+ }
242
+ /**
243
+ * Reflows the table's content dimensions.
244
+ */
245
+ reflow() {
246
+ this.columnResizing.reflow();
247
+ // Reflow the head
248
+ this.header?.reflow();
249
+ // Reflow rows content dimensions
250
+ this.rowsVirtualizer.reflowRows();
251
+ // Reflow the pagination
252
+ this.grid.pagination?.reflow();
253
+ // Reflow popups
254
+ this.grid.popups.forEach((popup) => {
255
+ popup.reflow();
256
+ });
257
+ }
258
+ /**
259
+ * Scrolls the table to the specified row.
260
+ *
261
+ * @param index
262
+ * The index of the row to scroll to.
263
+ *
264
+ * Try it: {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/grid-lite/basic/scroll-to-row | Scroll to row}
265
+ */
266
+ scrollToRow(index) {
267
+ if (this.virtualRows) {
268
+ this.tbodyElement.scrollTop =
269
+ index * this.rowsVirtualizer.defaultRowHeight;
270
+ return;
271
+ }
272
+ const rowClass = '.' + Globals.getClassName('rowElement');
273
+ const firstRowTop = this.tbodyElement
274
+ .querySelectorAll(rowClass)[0]
275
+ .getBoundingClientRect().top;
276
+ this.tbodyElement.scrollTop = (this.tbodyElement
277
+ .querySelectorAll(rowClass)[index]
278
+ .getBoundingClientRect().top) - firstRowTop;
279
+ }
280
+ /**
281
+ * Get the widthRatio value from the width in pixels. The widthRatio is
282
+ * calculated based on the width of the viewport.
283
+ *
284
+ * @param width
285
+ * The width in pixels.
286
+ *
287
+ * @return The width ratio.
288
+ *
289
+ * @internal
290
+ */
291
+ getRatioFromWidth(width) {
292
+ return width / this.tbodyElement.clientWidth;
293
+ }
294
+ /**
295
+ * Get the width in pixels from the widthRatio value. The width is
296
+ * calculated based on the width of the viewport.
297
+ *
298
+ * @param ratio
299
+ * The width ratio.
300
+ *
301
+ * @returns The width in pixels.
302
+ *
303
+ * @internal
304
+ */
305
+ getWidthFromRatio(ratio) {
306
+ return this.tbodyElement.clientWidth * ratio;
307
+ }
308
+ /**
309
+ * Destroys the grid table.
310
+ */
311
+ destroy() {
312
+ this.tbodyElement.removeEventListener('focus', this.onTBodyFocus);
313
+ this.tbodyElement.removeEventListener('scroll', this.onScroll);
314
+ this.resizeObserver.disconnect();
315
+ this.columnsResizer?.removeEventListeners();
316
+ this.header?.destroy();
317
+ for (let i = 0, iEnd = this.rows.length; i < iEnd; ++i) {
318
+ this.rows[i].destroy();
319
+ }
320
+ fireEvent(this, 'afterDestroy');
321
+ }
322
+ /**
323
+ * Get the viewport state metadata. It is used to save the state of the
324
+ * viewport and restore it when the data grid is re-rendered.
325
+ *
326
+ * @returns
327
+ * The viewport state metadata.
328
+ */
329
+ getStateMeta() {
330
+ return {
331
+ scrollTop: this.tbodyElement.scrollTop,
332
+ scrollLeft: this.tbodyElement.scrollLeft,
333
+ columnResizing: this.columnResizing,
334
+ focusCursor: this.focusCursor
335
+ };
336
+ }
337
+ /**
338
+ * Apply the metadata to the viewport state. It is used to restore the state
339
+ * of the viewport when the data grid is re-rendered.
340
+ *
341
+ * @param meta
342
+ * The viewport state metadata.
343
+ */
344
+ applyStateMeta(meta) {
345
+ this.tbodyElement.scrollTop = meta.scrollTop;
346
+ this.tbodyElement.scrollLeft = meta.scrollLeft;
347
+ if (meta.focusCursor) {
348
+ const [rowIndex, columnIndex] = meta.focusCursor;
349
+ const row = this.rows[rowIndex - this.rows[0].index];
350
+ row?.cells[columnIndex]?.htmlElement.focus();
351
+ }
352
+ }
353
+ /**
354
+ * Sets the focus anchor cell.
355
+ *
356
+ * @param cell
357
+ * The cell to set as the focus anchor cell.
358
+ */
359
+ setFocusAnchorCell(cell) {
360
+ this.focusAnchorCell?.htmlElement.setAttribute('tabindex', '-1');
361
+ this.focusAnchorCell = cell;
362
+ this.focusAnchorCell.htmlElement.setAttribute('tabindex', '0');
363
+ }
364
+ /**
365
+ * Returns the column with the provided ID.
366
+ *
367
+ * @param id
368
+ * The ID of the column.
369
+ */
370
+ getColumn(id) {
371
+ const columns = this.grid.enabledColumns;
372
+ if (!columns) {
373
+ return;
374
+ }
375
+ const columnIndex = columns.indexOf(id);
376
+ if (columnIndex < 0) {
377
+ return;
378
+ }
379
+ return this.columns[columnIndex];
380
+ }
381
+ /**
382
+ * Returns the row with the provided ID.
383
+ *
384
+ * @param id
385
+ * The ID of the row.
386
+ */
387
+ getRow(id) {
388
+ // TODO: Change `find` to a method using `vp.dataTable.getLocalRowIndex`
389
+ // and rows[presentationRowIndex - firstRowIndex]. Needs more testing,
390
+ // but it should be faster.
391
+ return this.rows.find((row) => row.id === id);
392
+ }
393
+ }
394
+ /* *
395
+ *
396
+ * Default Export
397
+ *
398
+ * */
399
+ export default Table;
@@ -0,0 +1,31 @@
1
+ import type Popup from './Popup.js';
2
+ /**
3
+ * Basic interface for buttons used in Grid components, like `ContextMenu` or
4
+ * `Toolbar`.
5
+ * @private
6
+ */
7
+ interface Button {
8
+ /**
9
+ * Focuses the button.
10
+ */
11
+ focus(): void;
12
+ /**
13
+ * Sets the highlighted state of the button.
14
+ *
15
+ * @param highlighted
16
+ * Whether the button should be highlighted.
17
+ */
18
+ setHighlighted(highlighted: boolean): void;
19
+ /**
20
+ * Sets the active state of the button.
21
+ *
22
+ * @param active
23
+ * Whether the button should be active.
24
+ */
25
+ setActive(active: boolean): void;
26
+ /**
27
+ * The popup associated with the button, if any.
28
+ */
29
+ popup?: Popup;
30
+ }
31
+ export default Button;
@@ -0,0 +1,16 @@
1
+ /* *
2
+ *
3
+ * Grid Button interface
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ *
14
+ * */
15
+ 'use strict';
16
+ export {};
@@ -0,0 +1,38 @@
1
+ import Popup from './Popup.js';
2
+ import ContextMenuButton from './ContextMenuButton.js';
3
+ /**
4
+ * The context menu.
5
+ */
6
+ declare abstract class ContextMenu extends Popup {
7
+ /**
8
+ * The array of buttons in the context menu.
9
+ */
10
+ readonly buttons: ContextMenuButton[];
11
+ /**
12
+ * The index of the focused button in the context menu.
13
+ */
14
+ focusCursor: number;
15
+ /**
16
+ * The items container element.
17
+ */
18
+ private itemsContainer?;
19
+ /**
20
+ * Ensures that the items container element is created.
21
+ *
22
+ * @returns
23
+ * The items container element.
24
+ */
25
+ ensureItemsContainer(): HTMLElement | undefined;
26
+ show(anchorElement?: HTMLElement): void;
27
+ hide(): void;
28
+ /**
29
+ * Adds a divider to the context menu.
30
+ *
31
+ * @returns
32
+ * The divider element.
33
+ */
34
+ protected addDivider(): HTMLElement | undefined;
35
+ protected onClickOutside(event: MouseEvent): void;
36
+ protected onKeyDown(e: KeyboardEvent): void;
37
+ }
38
+ export default ContextMenu;
@@ -0,0 +1,132 @@
1
+ /* *
2
+ *
3
+ * Grid Context Menu abstract class
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ *
14
+ * */
15
+ 'use strict';
16
+ /* *
17
+ *
18
+ * Imports
19
+ *
20
+ * */
21
+ import Popup from './Popup.js';
22
+ import Globals from '../Globals.js';
23
+ import GridUtils from '../GridUtils.js';
24
+ const { makeHTMLElement } = GridUtils;
25
+ /* *
26
+ *
27
+ * Class
28
+ *
29
+ * */
30
+ /**
31
+ * The context menu.
32
+ */
33
+ class ContextMenu extends Popup {
34
+ constructor() {
35
+ /* *
36
+ *
37
+ * Properties
38
+ *
39
+ * */
40
+ super(...arguments);
41
+ /**
42
+ * The array of buttons in the context menu.
43
+ */
44
+ this.buttons = [];
45
+ /**
46
+ * The index of the focused button in the context menu.
47
+ */
48
+ this.focusCursor = 0;
49
+ }
50
+ /* *
51
+ *
52
+ * Methods
53
+ *
54
+ * */
55
+ /**
56
+ * Ensures that the items container element is created.
57
+ *
58
+ * @returns
59
+ * The items container element.
60
+ */
61
+ ensureItemsContainer() {
62
+ if (!this.content) {
63
+ return;
64
+ }
65
+ if (this.itemsContainer) {
66
+ return this.itemsContainer;
67
+ }
68
+ this.itemsContainer = makeHTMLElement('ul', {
69
+ className: Globals.getClassName('menuContainer')
70
+ }, this.content);
71
+ return this.itemsContainer;
72
+ }
73
+ show(anchorElement) {
74
+ super.show(anchorElement);
75
+ this.buttons[0]?.focus();
76
+ }
77
+ hide() {
78
+ for (const btn of this.buttons) {
79
+ btn.destroy();
80
+ }
81
+ this.buttons.length = 0;
82
+ this.itemsContainer?.remove();
83
+ delete this.itemsContainer;
84
+ super.hide();
85
+ }
86
+ /**
87
+ * Adds a divider to the context menu.
88
+ *
89
+ * @returns
90
+ * The divider element.
91
+ */
92
+ addDivider() {
93
+ if (!this.ensureItemsContainer()) {
94
+ return;
95
+ }
96
+ return makeHTMLElement('li', {
97
+ className: Globals.getClassName('menuDivider')
98
+ }, this.itemsContainer);
99
+ }
100
+ onClickOutside(event) {
101
+ const buttons = this.buttons;
102
+ for (let i = 0, iEnd = buttons.length; i < iEnd; ++i) {
103
+ if (buttons[i].popup?.container?.contains(event.target)) {
104
+ return;
105
+ }
106
+ }
107
+ super.onClickOutside(event);
108
+ }
109
+ onKeyDown(e) {
110
+ super.onKeyDown(e);
111
+ const len = this.buttons.length;
112
+ const cursor = this.focusCursor;
113
+ switch (e.key) {
114
+ case 'ArrowUp':
115
+ case 'ArrowLeft':
116
+ e.preventDefault();
117
+ this.buttons[Math.abs((cursor - 1 + len) % len)].focus();
118
+ break;
119
+ case 'ArrowDown':
120
+ case 'ArrowRight':
121
+ e.preventDefault();
122
+ this.buttons[(cursor + 1) % len].focus();
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ /* *
128
+ *
129
+ * Default Export
130
+ *
131
+ * */
132
+ export default ContextMenu;