@highcharts/grid-pro 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +15 -9
  3. package/css/grid-pro.css +1289 -1153
  4. package/css/modules/grid-base-variables.css +131 -0
  5. package/css/modules/grid-button-variables.css +140 -0
  6. package/css/modules/grid-caption-variables.css +11 -0
  7. package/css/modules/grid-description-variables.css +11 -0
  8. package/css/modules/grid-input-variables.css +114 -0
  9. package/css/modules/grid-link-variables.css +18 -0
  10. package/css/modules/grid-menu-variables.css +50 -0
  11. package/css/modules/grid-pagination-variables.css +12 -0
  12. package/css/modules/grid-popup-variables.css +24 -0
  13. package/css/modules/grid-pro.css +234 -0
  14. package/css/modules/grid-table-variables.css +385 -0
  15. package/css/modules/grid-theme-default.css +55 -0
  16. package/es-modules/Accessibility/A11yI18n.js +4 -5
  17. package/es-modules/Accessibility/Accessibility.js +5 -5
  18. package/es-modules/Accessibility/AccessibilityComponent.d.ts +3 -3
  19. package/es-modules/Accessibility/AccessibilityComponent.js +4 -3
  20. package/es-modules/Accessibility/Components/AnnotationsA11y.js +4 -3
  21. package/es-modules/Accessibility/Components/ContainerComponent.js +4 -3
  22. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +9 -9
  23. package/es-modules/Accessibility/Components/LegendComponent.js +5 -5
  24. package/es-modules/Accessibility/Components/MenuComponent.js +5 -5
  25. package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -7
  26. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -5
  27. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +15 -5
  28. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +7 -7
  29. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +4 -3
  30. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +7 -7
  31. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +5 -5
  32. package/es-modules/Accessibility/Components/ZoomComponent.js +5 -5
  33. package/es-modules/Accessibility/FocusBorder.js +5 -5
  34. package/es-modules/Accessibility/HighContrastMode.js +4 -3
  35. package/es-modules/Accessibility/HighContrastTheme.js +4 -3
  36. package/es-modules/Accessibility/KeyboardNavigation.js +5 -5
  37. package/es-modules/Accessibility/KeyboardNavigationHandler.js +5 -5
  38. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +11 -0
  39. package/es-modules/Accessibility/Options/A11yDefaults.js +15 -3
  40. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +58 -0
  41. package/es-modules/Accessibility/Options/DeprecatedOptions.js +11 -5
  42. package/es-modules/Accessibility/Options/LangDefaults.js +13 -3
  43. package/es-modules/Accessibility/ProxyElement.js +6 -8
  44. package/es-modules/Accessibility/ProxyProvider.js +5 -5
  45. package/es-modules/Accessibility/Utils/Announcer.js +6 -6
  46. package/es-modules/Accessibility/Utils/ChartUtilities.js +5 -5
  47. package/es-modules/Accessibility/Utils/DOMElementProvider.js +4 -3
  48. package/es-modules/Accessibility/Utils/EventProvider.d.ts +3 -3
  49. package/es-modules/Accessibility/Utils/EventProvider.js +10 -5
  50. package/es-modules/Accessibility/Utils/HTMLUtilities.js +5 -5
  51. package/es-modules/Core/Animation/AnimationOptions.d.ts +42 -0
  52. package/es-modules/Core/Animation/AnimationOptions.js +10 -0
  53. package/es-modules/Core/Animation/AnimationUtilities.js +40 -5
  54. package/es-modules/Core/Animation/Fx.d.ts +1 -130
  55. package/es-modules/Core/Animation/Fx.js +14 -8
  56. package/es-modules/Core/Animation/FxBase.d.ts +1 -0
  57. package/es-modules/Core/Animation/FxBase.js +11 -0
  58. package/es-modules/Core/Callback.d.ts +56 -0
  59. package/es-modules/Core/Callback.js +10 -0
  60. package/es-modules/Core/Chart/Chart.d.ts +659 -400
  61. package/es-modules/Core/Chart/Chart.js +112 -95
  62. package/es-modules/Core/Chart/Chart3D.d.ts +123 -233
  63. package/es-modules/Core/Chart/Chart3D.js +23 -37
  64. package/es-modules/Core/Chart/ChartBase.d.ts +3 -0
  65. package/es-modules/Core/Chart/ChartBase.js +11 -0
  66. package/es-modules/Core/Chart/ChartDefaults.js +18 -12
  67. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +1 -55
  68. package/es-modules/Core/Chart/ChartNavigationComposition.js +13 -13
  69. package/es-modules/Core/Chart/ChartOptions.d.ts +1225 -0
  70. package/es-modules/Core/Chart/ChartOptions.js +10 -0
  71. package/es-modules/Core/Chart/GanttChart.d.ts +0 -38
  72. package/es-modules/Core/Chart/GanttChart.js +5 -5
  73. package/es-modules/Core/Chart/MapChart.d.ts +9 -4
  74. package/es-modules/Core/Chart/MapChart.js +14 -5
  75. package/es-modules/Core/Chart/StockChart.d.ts +0 -85
  76. package/es-modules/Core/Chart/StockChart.js +35 -18
  77. package/es-modules/Core/Color/Color.d.ts +16 -24
  78. package/es-modules/Core/Color/Color.js +27 -10
  79. package/es-modules/Core/Color/ColorString.d.ts +0 -23
  80. package/es-modules/Core/Color/ColorString.js +11 -0
  81. package/es-modules/Core/Color/ColorType.d.ts +0 -33
  82. package/es-modules/Core/Color/ColorType.js +11 -0
  83. package/es-modules/Core/Color/GradientColor.d.ts +0 -33
  84. package/es-modules/Core/Color/GradientColor.js +11 -0
  85. package/es-modules/Core/Color/Palettes.d.ts +1 -84
  86. package/es-modules/Core/Color/Palettes.js +2 -1
  87. package/es-modules/Core/Defaults.d.ts +6 -0
  88. package/es-modules/Core/Defaults.js +66 -75
  89. package/es-modules/Core/Delaunay.d.ts +52 -0
  90. package/es-modules/Core/Delaunay.js +310 -0
  91. package/es-modules/Core/Foundation.d.ts +1 -19
  92. package/es-modules/Core/Foundation.js +8 -6
  93. package/es-modules/Core/Geometry/CircleObject.d.ts +5 -0
  94. package/es-modules/Core/Geometry/CircleObject.js +10 -0
  95. package/es-modules/Core/Geometry/CircleUtilities.d.ts +1 -189
  96. package/es-modules/Core/Geometry/CircleUtilities.js +18 -17
  97. package/es-modules/Core/Geometry/GeometryObject.d.ts +7 -0
  98. package/es-modules/Core/Geometry/GeometryObject.js +10 -0
  99. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +1 -48
  100. package/es-modules/Core/Geometry/GeometryUtilities.js +9 -7
  101. package/es-modules/Core/Geometry/IntersectionObject.d.ts +7 -0
  102. package/es-modules/Core/Geometry/IntersectionObject.js +10 -0
  103. package/es-modules/Core/Geometry/PolygonClip.d.ts +1 -19
  104. package/es-modules/Core/Geometry/PolygonClip.js +9 -7
  105. package/es-modules/Core/Globals.d.ts +9 -31
  106. package/es-modules/Core/Globals.js +9 -10
  107. package/es-modules/Core/GlobalsBase.d.ts +35 -0
  108. package/es-modules/Core/GlobalsBase.js +11 -0
  109. package/es-modules/Core/HttpUtilities.d.ts +54 -17
  110. package/es-modules/Core/HttpUtilities.js +16 -16
  111. package/es-modules/Core/JSON.d.ts +29 -0
  112. package/es-modules/Core/JSON.js +13 -0
  113. package/es-modules/Core/KeyboardEvent.d.ts +1 -0
  114. package/es-modules/Core/KeyboardEvent.js +11 -0
  115. package/es-modules/Core/MSPointer.d.ts +1 -74
  116. package/es-modules/Core/MSPointer.js +24 -15
  117. package/es-modules/Core/Math3D.d.ts +1 -117
  118. package/es-modules/Core/Math3D.js +14 -12
  119. package/es-modules/Core/Options.d.ts +338 -0
  120. package/es-modules/Core/Options.js +10 -0
  121. package/es-modules/Core/Pointer.d.ts +71 -445
  122. package/es-modules/Core/Pointer.js +74 -69
  123. package/es-modules/Core/PointerEvent.d.ts +20 -0
  124. package/es-modules/Core/PointerEvent.js +11 -0
  125. package/es-modules/Core/Renderer/AlignObject.d.ts +25 -27
  126. package/es-modules/Core/Renderer/AlignObject.js +11 -0
  127. package/es-modules/Core/Renderer/BBoxObject.d.ts +20 -31
  128. package/es-modules/Core/Renderer/BBoxObject.js +11 -0
  129. package/es-modules/Core/Renderer/CSSObject.d.ts +268 -59
  130. package/es-modules/Core/Renderer/CSSObject.js +10 -0
  131. package/es-modules/Core/Renderer/DOMElementType.d.ts +1 -33
  132. package/es-modules/Core/Renderer/DOMElementType.js +11 -0
  133. package/es-modules/Core/Renderer/DashStyleValue.d.ts +1 -27
  134. package/es-modules/Core/Renderer/DashStyleValue.js +11 -0
  135. package/es-modules/Core/Renderer/FontMetricsObject.d.ts +6 -26
  136. package/es-modules/Core/Renderer/FontMetricsObject.js +11 -0
  137. package/es-modules/Core/Renderer/HTML/AST.d.ts +3 -15
  138. package/es-modules/Core/Renderer/HTML/AST.js +24 -15
  139. package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +1 -25
  140. package/es-modules/Core/Renderer/HTML/HTMLAttributes.js +11 -0
  141. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +0 -54
  142. package/es-modules/Core/Renderer/HTML/HTMLElement.js +28 -24
  143. package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +15 -12
  144. package/es-modules/Core/Renderer/PolygonBoxObject.js +11 -0
  145. package/es-modules/Core/Renderer/Position3DObject.d.ts +6 -30
  146. package/es-modules/Core/Renderer/Position3DObject.js +11 -0
  147. package/es-modules/Core/Renderer/PositionObject.d.ts +9 -23
  148. package/es-modules/Core/Renderer/PositionObject.js +11 -0
  149. package/es-modules/Core/Renderer/RectangleObject.d.ts +6 -30
  150. package/es-modules/Core/Renderer/RectangleObject.js +11 -0
  151. package/es-modules/Core/Renderer/RendererRegistry.d.ts +1 -29
  152. package/es-modules/Core/Renderer/RendererRegistry.js +6 -3
  153. package/es-modules/Core/Renderer/RendererType.d.ts +1 -53
  154. package/es-modules/Core/Renderer/RendererType.js +11 -0
  155. package/es-modules/Core/Renderer/RendererUtilities.d.ts +1 -26
  156. package/es-modules/Core/Renderer/RendererUtilities.js +41 -23
  157. package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +26 -31
  158. package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +1 -44
  159. package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +15 -51
  160. package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +1 -42
  161. package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +1 -42
  162. package/es-modules/Core/Renderer/SVG/SVGElement.d.ts +459 -0
  163. package/es-modules/Core/Renderer/SVG/SVGElement3D.d.ts +1 -0
  164. package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +0 -23
  165. package/es-modules/Core/Renderer/SVG/SVGLabel.d.ts +14 -0
  166. package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +18 -56
  167. package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +0 -30
  168. package/es-modules/Core/Renderer/SVG/SVGRenderer.d.ts +652 -0
  169. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.d.ts +1 -0
  170. package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +0 -24
  171. package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +3 -26
  172. package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +1 -41
  173. package/es-modules/Core/Renderer/SVG/Symbols.d.ts +146 -0
  174. package/es-modules/Core/Renderer/SVG/TextBuilder.d.ts +1 -0
  175. package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +21 -30
  176. package/es-modules/Core/Renderer/ShadowOptionsObject.js +11 -0
  177. package/es-modules/Core/Renderer/SizeObject.d.ts +0 -23
  178. package/es-modules/Core/Renderer/SizeObject.js +11 -0
  179. package/es-modules/Core/Responsive.d.ts +94 -29
  180. package/es-modules/Core/Responsive.js +17 -12
  181. package/es-modules/Core/Templating.d.ts +17 -1
  182. package/es-modules/Core/Templating.js +12 -8
  183. package/es-modules/Core/Time.d.ts +18 -1
  184. package/es-modules/Core/Time.js +6 -5
  185. package/es-modules/Core/Tooltip.d.ts +67 -123
  186. package/es-modules/Core/Tooltip.js +161 -108
  187. package/es-modules/Core/TooltipOptions.d.ts +724 -0
  188. package/es-modules/Core/TooltipOptions.js +10 -0
  189. package/es-modules/Core/Utilities.d.ts +32 -703
  190. package/es-modules/Core/Utilities.js +28 -1443
  191. package/es-modules/Data/ColumnUtils.d.ts +83 -80
  192. package/es-modules/Data/ColumnUtils.js +106 -116
  193. package/es-modules/Data/Connectors/CSVConnector.d.ts +9 -14
  194. package/es-modules/Data/Connectors/CSVConnector.js +6 -7
  195. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +3 -3
  196. package/es-modules/Data/Connectors/DataConnector.d.ts +63 -54
  197. package/es-modules/Data/Connectors/DataConnector.js +67 -56
  198. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +3 -3
  199. package/es-modules/Data/Connectors/DataConnectorType.d.ts +3 -3
  200. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +40 -42
  201. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +76 -91
  202. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +7 -5
  203. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +23 -28
  204. package/es-modules/Data/Connectors/HTMLTableConnector.js +6 -7
  205. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +3 -3
  206. package/es-modules/Data/Connectors/JSONConnector.d.ts +9 -14
  207. package/es-modules/Data/Connectors/JSONConnector.js +6 -7
  208. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +3 -3
  209. package/es-modules/Data/Converters/CSVConverter.d.ts +5 -5
  210. package/es-modules/Data/Converters/CSVConverter.js +6 -7
  211. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +5 -5
  212. package/es-modules/Data/Converters/DataConverter.d.ts +76 -78
  213. package/es-modules/Data/Converters/DataConverter.js +29 -56
  214. package/es-modules/Data/Converters/DataConverterType.d.ts +3 -3
  215. package/es-modules/Data/Converters/DataConverterUtils.d.ts +88 -81
  216. package/es-modules/Data/Converters/DataConverterUtils.js +172 -184
  217. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +4 -4
  218. package/es-modules/Data/Converters/GoogleSheetsConverter.js +6 -6
  219. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +5 -5
  220. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +4 -4
  221. package/es-modules/Data/Converters/HTMLTableConverter.js +5 -6
  222. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +5 -5
  223. package/es-modules/Data/Converters/JSONConverter.d.ts +7 -7
  224. package/es-modules/Data/Converters/JSONConverter.js +9 -9
  225. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +5 -5
  226. package/es-modules/Data/DataCursor.d.ts +65 -70
  227. package/es-modules/Data/DataCursor.js +122 -142
  228. package/es-modules/Data/DataEvent.d.ts +55 -57
  229. package/es-modules/Data/DataEvent.js +3 -3
  230. package/es-modules/Data/DataPool.d.ts +10 -17
  231. package/es-modules/Data/DataPool.js +23 -12
  232. package/es-modules/Data/DataPoolOptions.d.ts +3 -3
  233. package/es-modules/Data/DataTable.d.ts +115 -117
  234. package/es-modules/Data/DataTable.js +67 -33
  235. package/es-modules/Data/DataTableCore.d.ts +11 -11
  236. package/es-modules/Data/DataTableCore.js +7 -7
  237. package/es-modules/Data/DataTableOptions.js +3 -3
  238. package/es-modules/Data/Formula/Formula.js +3 -3
  239. package/es-modules/Data/Formula/FormulaParser.js +4 -5
  240. package/es-modules/Data/Formula/FormulaProcessor.js +4 -5
  241. package/es-modules/Data/Formula/FormulaTypes.js +3 -3
  242. package/es-modules/Data/Formula/Functions/ABS.js +3 -3
  243. package/es-modules/Data/Formula/Functions/AND.js +3 -3
  244. package/es-modules/Data/Formula/Functions/AVERAGE.js +3 -3
  245. package/es-modules/Data/Formula/Functions/AVERAGEA.js +3 -3
  246. package/es-modules/Data/Formula/Functions/COUNT.js +3 -3
  247. package/es-modules/Data/Formula/Functions/COUNTA.js +3 -3
  248. package/es-modules/Data/Formula/Functions/IF.js +3 -3
  249. package/es-modules/Data/Formula/Functions/ISNA.js +3 -3
  250. package/es-modules/Data/Formula/Functions/MAX.js +3 -3
  251. package/es-modules/Data/Formula/Functions/MEDIAN.js +3 -3
  252. package/es-modules/Data/Formula/Functions/MIN.js +3 -3
  253. package/es-modules/Data/Formula/Functions/MOD.js +3 -3
  254. package/es-modules/Data/Formula/Functions/MODE.js +3 -3
  255. package/es-modules/Data/Formula/Functions/NOT.js +3 -3
  256. package/es-modules/Data/Formula/Functions/OR.js +3 -3
  257. package/es-modules/Data/Formula/Functions/PRODUCT.js +3 -3
  258. package/es-modules/Data/Formula/Functions/SUM.js +3 -3
  259. package/es-modules/Data/Formula/Functions/XOR.js +3 -3
  260. package/es-modules/Data/Modifiers/ChainModifier.d.ts +29 -34
  261. package/es-modules/Data/Modifiers/ChainModifier.js +10 -11
  262. package/es-modules/Data/Modifiers/ChainModifierOptions.js +3 -3
  263. package/es-modules/Data/Modifiers/DataModifier.d.ts +36 -41
  264. package/es-modules/Data/Modifiers/DataModifier.js +34 -56
  265. package/es-modules/Data/Modifiers/DataModifierEvent.js +3 -3
  266. package/es-modules/Data/Modifiers/DataModifierOptions.js +3 -3
  267. package/es-modules/Data/Modifiers/DataModifierType.d.ts +3 -3
  268. package/es-modules/Data/Modifiers/FilterModifier.d.ts +4 -4
  269. package/es-modules/Data/Modifiers/FilterModifier.js +6 -7
  270. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +3 -2
  271. package/es-modules/Data/Modifiers/FilterModifierOptions.js +3 -3
  272. package/es-modules/Data/Modifiers/InvertModifier.d.ts +4 -4
  273. package/es-modules/Data/Modifiers/InvertModifier.js +6 -7
  274. package/es-modules/Data/Modifiers/InvertModifierOptions.js +3 -3
  275. package/es-modules/Data/Modifiers/MathModifier.d.ts +5 -4
  276. package/es-modules/Data/Modifiers/MathModifier.js +3 -3
  277. package/es-modules/Data/Modifiers/MathModifierOptions.js +3 -3
  278. package/es-modules/Data/Modifiers/RangeModifier.d.ts +4 -4
  279. package/es-modules/Data/Modifiers/RangeModifier.js +6 -7
  280. package/es-modules/Data/Modifiers/RangeModifierOptions.js +3 -3
  281. package/es-modules/Data/Modifiers/SortModifier.d.ts +6 -11
  282. package/es-modules/Data/Modifiers/SortModifier.js +35 -10
  283. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +43 -6
  284. package/es-modules/Data/Modifiers/SortModifierOptions.js +3 -3
  285. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +77 -0
  286. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +4 -3
  287. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +68 -1
  288. package/es-modules/Grid/Core/Accessibility/Accessibility.js +179 -7
  289. package/es-modules/Grid/Core/Credits.js +3 -3
  290. package/es-modules/Grid/Core/Data/DataProvider.d.ts +97 -0
  291. package/es-modules/Grid/Core/Data/DataProvider.js +89 -0
  292. package/es-modules/Grid/Core/Data/DataProviderRegistry.d.ts +20 -0
  293. package/es-modules/Grid/Core/Data/DataProviderRegistry.js +52 -0
  294. package/es-modules/Grid/Core/Data/DataProviderType.d.ts +19 -0
  295. package/es-modules/Grid/Core/Data/DataProviderType.js +15 -0
  296. package/es-modules/Grid/Core/Data/LocalDataProvider.d.ts +165 -0
  297. package/es-modules/Grid/Core/Data/LocalDataProvider.js +341 -0
  298. package/es-modules/Grid/Core/Defaults.js +21 -7
  299. package/es-modules/Grid/Core/Globals.d.ts +20 -16
  300. package/es-modules/Grid/Core/Globals.js +13 -11
  301. package/es-modules/Grid/Core/Grid.d.ts +43 -23
  302. package/es-modules/Grid/Core/Grid.js +316 -136
  303. package/es-modules/Grid/Core/GridUtils.d.ts +33 -0
  304. package/es-modules/Grid/Core/GridUtils.js +53 -6
  305. package/es-modules/Grid/Core/Options.d.ts +162 -5
  306. package/es-modules/Grid/Core/Options.js +3 -3
  307. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +3 -0
  308. package/es-modules/Grid/Core/Pagination/Pagination.js +66 -26
  309. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +4 -40
  310. package/es-modules/Grid/Core/Pagination/PaginationOptions.js +11 -0
  311. package/es-modules/Grid/Core/Querying/FilteringController.js +4 -5
  312. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +2 -2
  313. package/es-modules/Grid/Core/Querying/PaginationController.js +6 -6
  314. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +1 -1
  315. package/es-modules/Grid/Core/Querying/QueryingController.js +5 -29
  316. package/es-modules/Grid/Core/Querying/SortingController.d.ts +15 -0
  317. package/es-modules/Grid/Core/Querying/SortingController.js +89 -51
  318. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.d.ts +53 -0
  319. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.js +229 -0
  320. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.d.ts +58 -0
  321. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.js +15 -0
  322. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +5 -6
  323. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +3 -3
  324. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +6 -7
  325. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +1 -1
  326. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +5 -5
  327. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +3 -3
  328. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +29 -3
  329. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +136 -26
  330. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +4 -6
  331. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +94 -3
  332. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +481 -91
  333. package/es-modules/Grid/Core/Table/Body/CellContextMenu.d.ts +11 -0
  334. package/es-modules/Grid/Core/Table/Body/CellContextMenu.js +84 -0
  335. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +36 -15
  336. package/es-modules/Grid/Core/Table/Body/TableCell.js +89 -33
  337. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +15 -5
  338. package/es-modules/Grid/Core/Table/Body/TableRow.js +70 -19
  339. package/es-modules/Grid/Core/Table/Cell.d.ts +16 -10
  340. package/es-modules/Grid/Core/Table/Cell.js +41 -6
  341. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +3 -3
  342. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +7 -12
  343. package/es-modules/Grid/Core/Table/Column.d.ts +11 -5
  344. package/es-modules/Grid/Core/Table/Column.js +26 -37
  345. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +3 -3
  346. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +3 -3
  347. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +3 -3
  348. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +12 -11
  349. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +7 -6
  350. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +5 -0
  351. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +21 -7
  352. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +4 -5
  353. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +4 -5
  354. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +9 -0
  355. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +37 -9
  356. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +5 -4
  357. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +11 -7
  358. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +4 -5
  359. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +4 -5
  360. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +4 -1
  361. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +88 -15
  362. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +8 -3
  363. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +36 -15
  364. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +7 -8
  365. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +1 -1
  366. package/es-modules/Grid/Core/Table/Header/TableHeader.js +6 -6
  367. package/es-modules/Grid/Core/Table/Row.d.ts +1 -1
  368. package/es-modules/Grid/Core/Table/Row.js +5 -5
  369. package/es-modules/Grid/Core/Table/Table.d.ts +68 -12
  370. package/es-modules/Grid/Core/Table/Table.js +296 -92
  371. package/es-modules/Grid/Core/UI/Button.js +3 -3
  372. package/es-modules/Grid/Core/UI/ContextMenu.js +3 -3
  373. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +6 -7
  374. package/es-modules/Grid/Core/UI/ContextMenuButton.js +8 -6
  375. package/es-modules/Grid/Core/UI/Popup.js +10 -12
  376. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +42 -7
  377. package/es-modules/Grid/Core/UI/SvgIcons.js +209 -36
  378. package/es-modules/Grid/Core/UI/Toolbar.d.ts +5 -0
  379. package/es-modules/Grid/Core/UI/Toolbar.js +3 -3
  380. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +4 -12
  381. package/es-modules/Grid/Core/UI/ToolbarButton.js +11 -29
  382. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +4 -45
  383. package/es-modules/Grid/Pro/CellEditing/CellEditMode.js +16 -0
  384. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +13 -13
  385. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +4 -5
  386. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +3 -3
  387. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +3 -3
  388. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +3 -3
  389. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +1 -34
  390. package/es-modules/Grid/Pro/CellRendering/CellRendererType.js +15 -0
  391. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +1 -1
  392. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +7 -5
  393. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +2 -2
  394. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +3 -3
  395. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +3 -3
  396. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +3 -3
  397. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +3 -3
  398. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +4 -5
  399. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +2 -2
  400. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -3
  401. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +7 -5
  402. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +4 -5
  403. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +2 -2
  404. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +4 -5
  405. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +3 -3
  406. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +4 -5
  407. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +4 -5
  408. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +3 -3
  409. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +4 -5
  410. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +4 -5
  411. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +4 -5
  412. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +4 -4
  413. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +4 -5
  414. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +4 -5
  415. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +4 -5
  416. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +4 -5
  417. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +10 -1
  418. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +56 -12
  419. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +1 -1
  420. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +6 -7
  421. package/es-modules/Grid/Pro/Credits/CreditsPro.js +3 -3
  422. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +4 -6
  423. package/es-modules/Grid/Pro/Data/DataSourceHelper.d.ts +74 -0
  424. package/es-modules/Grid/Pro/Data/DataSourceHelper.js +246 -0
  425. package/es-modules/Grid/Pro/Data/QuerySerializer.d.ts +46 -0
  426. package/es-modules/Grid/Pro/Data/QuerySerializer.js +169 -0
  427. package/es-modules/Grid/Pro/Data/RemoteDataProvider.d.ts +187 -0
  428. package/es-modules/Grid/Pro/Data/RemoteDataProvider.js +500 -0
  429. package/es-modules/Grid/Pro/Export/Exporting.js +5 -7
  430. package/es-modules/Grid/Pro/Export/ExportingComposition.js +4 -5
  431. package/es-modules/Grid/Pro/GridEvents.d.ts +1 -0
  432. package/es-modules/Grid/Pro/GridEvents.js +4 -5
  433. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +0 -1
  434. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +4 -5
  435. package/es-modules/Grid/index.js +3 -3
  436. package/es-modules/Shared/BaseForm.js +4 -5
  437. package/es-modules/Shared/DownloadURL.d.ts +1 -85
  438. package/es-modules/Shared/DownloadURL.js +15 -13
  439. package/es-modules/Shared/LangOptionsCore.d.ts +4 -3
  440. package/es-modules/Shared/TimeBase.d.ts +1 -46
  441. package/es-modules/Shared/TimeBase.js +11 -10
  442. package/es-modules/Shared/Types.d.ts +11 -3
  443. package/es-modules/Shared/Utilities.d.ts +576 -0
  444. package/es-modules/Shared/Utilities.js +1368 -0
  445. package/es-modules/masters/grid-pro.src.d.ts +18 -19
  446. package/es-modules/masters/grid-pro.src.js +24 -9
  447. package/grid-pro.d.ts +18 -19
  448. package/grid-pro.js +6 -5
  449. package/grid-pro.js.map +1 -1
  450. package/grid-pro.src.d.ts +18 -19
  451. package/grid-pro.src.js +8132 -4531
  452. package/package.json +1 -1
  453. package/es-modules/Grid/Core/Pagination/Icons.d.ts +0 -7
  454. package/es-modules/Grid/Core/Pagination/Icons.js +0 -7
  455. package/es-modules/Grid/Pro/highcharts.d.ts +0 -7
@@ -0,0 +1,11 @@
1
+ import type TableCell from './TableCell';
2
+ import ContextMenu from '../../UI/ContextMenu.js';
3
+ declare class CellContextMenu extends ContextMenu {
4
+ cell?: TableCell;
5
+ private cursorAnchorElement?;
6
+ private removeCellOutdateListener?;
7
+ showAt(cell: TableCell, clientX: number, clientY: number): void;
8
+ hide(): void;
9
+ protected renderContent(): void;
10
+ }
11
+ export default CellContextMenu;
@@ -0,0 +1,84 @@
1
+ /* *
2
+ *
3
+ * Grid Cell Context Menu
4
+ *
5
+ * (c) 2020-2026 Highsoft AS
6
+ *
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
9
+ *
10
+ * Authors:
11
+ * - Mikkel Espolin Birkeland
12
+ *
13
+ * */
14
+ 'use strict';
15
+ import ContextMenu from '../../UI/ContextMenu.js';
16
+ import ContextMenuButton from '../../UI/ContextMenuButton.js';
17
+ import { addEvent } from '../../../../Shared/Utilities.js';
18
+ /* *
19
+ *
20
+ * Class
21
+ *
22
+ * */
23
+ class CellContextMenu extends ContextMenu {
24
+ showAt(cell, clientX, clientY) {
25
+ const wrapper = this.grid.contentWrapper;
26
+ if (!wrapper) {
27
+ return;
28
+ }
29
+ this.cell = cell;
30
+ this.removeCellOutdateListener?.();
31
+ this.removeCellOutdateListener = addEvent(cell, 'outdate', () => {
32
+ this.hide();
33
+ delete this.cell;
34
+ });
35
+ const rect = wrapper.getBoundingClientRect();
36
+ this.cursorAnchorElement = document.createElement('div');
37
+ this.cursorAnchorElement.style.position = 'absolute';
38
+ this.cursorAnchorElement.style.left = (clientX - rect.left) + 'px';
39
+ this.cursorAnchorElement.style.top = (clientY - rect.top) + 'px';
40
+ this.cursorAnchorElement.style.width = '0px';
41
+ this.cursorAnchorElement.style.height = '0px';
42
+ this.cursorAnchorElement.style.pointerEvents = 'none';
43
+ wrapper.appendChild(this.cursorAnchorElement);
44
+ super.show(this.cursorAnchorElement);
45
+ }
46
+ hide() {
47
+ super.hide();
48
+ this.cursorAnchorElement?.remove();
49
+ this.removeCellOutdateListener?.();
50
+ delete this.cursorAnchorElement;
51
+ delete this.removeCellOutdateListener;
52
+ }
53
+ renderContent() {
54
+ const { cell } = this;
55
+ if (!cell) {
56
+ return;
57
+ }
58
+ const items = cell.column?.options.cells?.contextMenu?.items || [];
59
+ for (const item of items) {
60
+ if (item.separator) {
61
+ this.addDivider();
62
+ continue;
63
+ }
64
+ const btn = new ContextMenuButton({
65
+ label: item.label,
66
+ icon: item.icon,
67
+ onClick: () => {
68
+ if (item.disabled) {
69
+ return;
70
+ }
71
+ item.onClick?.call(cell, cell);
72
+ this.hide();
73
+ }
74
+ }).add(this);
75
+ if (btn && item.disabled) {
76
+ // Minimal disable support for v1. We don't currently have a
77
+ // dedicated ContextMenuButton API for disabled state.
78
+ // This keeps behavior consistent without introducing new CSS.
79
+ btn.wrapper?.querySelector('button')?.setAttribute('disabled', '');
80
+ }
81
+ }
82
+ }
83
+ }
84
+ export default CellContextMenu;
@@ -1,4 +1,4 @@
1
- import type DataTable from '../../../../Data/DataTable';
1
+ import type { CellType as DataTableCellType } from '../../../../Data/DataTable';
2
2
  import type Column from '../Column';
3
3
  import type TableRow from './TableRow';
4
4
  import Cell from '../Cell.js';
@@ -19,6 +19,16 @@ declare class TableCell extends Cell {
19
19
  * The cell's content.
20
20
  */
21
21
  content?: CellContent;
22
+ /**
23
+ * A token used to prevent stale async responses from overwriting cell
24
+ * data. In virtualized grids, cells are reused as rows scroll in/out of
25
+ * view. If a cell starts an async value fetch for row A, then gets reused
26
+ * for row B before the fetch completes, the stale response for row A
27
+ * could incorrectly overwrite row B's data. This token is incremented
28
+ * before each async fetch, and checked when the fetch completes - if the
29
+ * token has changed, the response is discarded as stale.
30
+ */
31
+ private asyncFetchToken;
22
32
  /**
23
33
  * Constructs a cell in the data grid.
24
34
  *
@@ -32,15 +42,15 @@ declare class TableCell extends Cell {
32
42
  /**
33
43
  * Renders the cell by appending it to the row and setting its value.
34
44
  */
35
- render(): void;
45
+ render(): Promise<void>;
36
46
  /**
37
- * Edits the cell value and updates the data table. Call this instead of
47
+ * Edits the cell value and updates the dataset. Call this instead of
38
48
  * `setValue` when you want it to trigger the cell value user change event.
39
49
  *
40
50
  * @param value
41
51
  * The new value to set.
42
52
  */
43
- editValue(value: DataTable.CellType): Promise<void>;
53
+ editValue(value: DataTableCellType): Promise<void>;
44
54
  /**
45
55
  * Sets the cell value and updates its content with it.
46
56
  *
@@ -48,28 +58,39 @@ declare class TableCell extends Cell {
48
58
  * The raw value to set. If not provided, it will use the value from the
49
59
  * data table for the current row and column.
50
60
  *
51
- * @param updateTable
52
- * Whether to update the table after setting the content. Defaults to
53
- * `false`, meaning the table will not be updated.
61
+ * @param updateDataset
62
+ * Whether to update the dataset after setting the content. Defaults to
63
+ * `false`, meaning the dataset will not be updated.
64
+ */
65
+ setValue(value?: DataTableCellType, updateDataset?: boolean): Promise<void>;
66
+ /**
67
+ * Returns merged styles from defaults and current column options.
54
68
  */
55
- setValue(value?: DataTable.CellType, updateTable?: boolean): Promise<void>;
69
+ private getCellStyles;
56
70
  /**
57
- * Updates the the data table so that it reflects the current state of
58
- * the grid.
71
+ * Updates the the dataset so that it reflects the current state of the
72
+ * grid.
59
73
  *
60
74
  * @returns
61
75
  * A promise that resolves to `true` if the cell triggered all the whole
62
- * viewport rows to be updated, or `false` if the only change should be
63
- * the cell's content.
76
+ * viewport rows to be updated, or `false` if the only change was the cell's
77
+ * content.
78
+ */
79
+ private updateDataset;
80
+ /**
81
+ * Initialize event listeners for table body cells.
82
+ *
83
+ * Most events (click, dblclick, keydown, mousedown, mouseover, mouseout)
84
+ * are delegated to Table for better performance with virtualization.
85
+ * Only focus/blur remain on individual cells for focus management.
64
86
  */
65
- private updateDataTable;
66
87
  initEvents(): void;
67
88
  /**
68
89
  * Handles the focus event on the cell.
69
90
  */
70
91
  protected onFocus(): void;
71
- protected onMouseOver(): void;
72
- protected onMouseOut(): void;
92
+ onMouseOver(): void;
93
+ onMouseOut(): void;
73
94
  /**
74
95
  * Handles the double click event on the cell.
75
96
  *
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
@@ -16,8 +16,8 @@
16
16
  'use strict';
17
17
  import Globals from '../../Globals.js';
18
18
  import Cell from '../Cell.js';
19
- import Utils from '../../../../Core/Utilities.js';
20
- const { fireEvent } = Utils;
19
+ import { defined, fireEvent } from '../../../../Shared/Utilities.js';
20
+ import { mergeStyleValues } from '../../GridUtils.js';
21
21
  /* *
22
22
  *
23
23
  * Class
@@ -43,6 +43,16 @@ class TableCell extends Cell {
43
43
  */
44
44
  constructor(row, column) {
45
45
  super(row, column);
46
+ /**
47
+ * A token used to prevent stale async responses from overwriting cell
48
+ * data. In virtualized grids, cells are reused as rows scroll in/out of
49
+ * view. If a cell starts an async value fetch for row A, then gets reused
50
+ * for row B before the fetch completes, the stale response for row A
51
+ * could incorrectly overwrite row B's data. This token is incremented
52
+ * before each async fetch, and checked when the fetch completes - if the
53
+ * token has changed, the response is discarded as stale.
54
+ */
55
+ this.asyncFetchToken = 0;
46
56
  this.column = column;
47
57
  this.row = row;
48
58
  this.column.registerCell(this);
@@ -55,12 +65,12 @@ class TableCell extends Cell {
55
65
  /**
56
66
  * Renders the cell by appending it to the row and setting its value.
57
67
  */
58
- render() {
59
- super.render();
60
- void this.setValue();
68
+ async render() {
69
+ await super.render();
70
+ await this.setValue();
61
71
  }
62
72
  /**
63
- * Edits the cell value and updates the data table. Call this instead of
73
+ * Edits the cell value and updates the dataset. Call this instead of
64
74
  * `setValue` when you want it to trigger the cell value user change event.
65
75
  *
66
76
  * @param value
@@ -81,14 +91,40 @@ class TableCell extends Cell {
81
91
  * The raw value to set. If not provided, it will use the value from the
82
92
  * data table for the current row and column.
83
93
  *
84
- * @param updateTable
85
- * Whether to update the table after setting the content. Defaults to
86
- * `false`, meaning the table will not be updated.
94
+ * @param updateDataset
95
+ * Whether to update the dataset after setting the content. Defaults to
96
+ * `false`, meaning the dataset will not be updated.
87
97
  */
88
- async setValue(value = this.column.data?.[this.row.index], updateTable = false) {
98
+ async setValue(value, updateDataset = false) {
99
+ const fetchToken = ++this.asyncFetchToken;
100
+ const { grid } = this.column.viewport;
101
+ // TODO(design): Design a better way to show the cell val being updated.
102
+ this.htmlElement.style.opacity = '0.5';
103
+ if (!defined(value)) {
104
+ value = await grid.dataProvider?.getValue(this.column.id, this.row.index);
105
+ // Discard stale response if cell was reused for a different row
106
+ if (fetchToken !== this.asyncFetchToken) {
107
+ this.htmlElement.style.opacity = '';
108
+ return;
109
+ }
110
+ }
111
+ const oldValue = this.value;
89
112
  this.value = value;
90
- if (updateTable && await this.updateDataTable()) {
91
- return;
113
+ if (updateDataset) {
114
+ try {
115
+ grid.showLoading();
116
+ if (await this.updateDataset()) {
117
+ return;
118
+ }
119
+ }
120
+ catch (err) {
121
+ // eslint-disable-next-line no-console
122
+ console.error(err);
123
+ this.value = oldValue;
124
+ }
125
+ finally {
126
+ grid.hideLoading();
127
+ }
92
128
  }
93
129
  if (this.content) {
94
130
  this.content.update();
@@ -101,44 +137,64 @@ class TableCell extends Cell {
101
137
  this.htmlElement.classList[this.column.dataType === 'number' ? 'add' : 'remove'](Globals.getClassName('rightAlign'));
102
138
  // Add custom class name from column options
103
139
  this.setCustomClassName(this.column.options.cells?.className);
140
+ this.setCustomStyles(this.getCellStyles());
141
+ // TODO(design): Remove this after the first part was implemented.
142
+ this.htmlElement.style.opacity = '';
104
143
  fireEvent(this, 'afterRender', { target: this });
105
144
  }
106
145
  /**
107
- * Updates the the data table so that it reflects the current state of
108
- * the grid.
146
+ * Returns merged styles from defaults and current column options.
147
+ */
148
+ getCellStyles() {
149
+ const { grid } = this.column.viewport;
150
+ const rawColumnOptions = grid.columnOptionsMap?.[this.column.id]?.options;
151
+ return {
152
+ ...mergeStyleValues(this.column, grid.options?.columnDefaults?.style, rawColumnOptions?.style),
153
+ ...mergeStyleValues(this, grid.options?.columnDefaults?.cells?.style, rawColumnOptions?.cells?.style)
154
+ };
155
+ }
156
+ /**
157
+ * Updates the the dataset so that it reflects the current state of the
158
+ * grid.
109
159
  *
110
160
  * @returns
111
161
  * A promise that resolves to `true` if the cell triggered all the whole
112
- * viewport rows to be updated, or `false` if the only change should be
113
- * the cell's content.
162
+ * viewport rows to be updated, or `false` if the only change was the cell's
163
+ * content.
114
164
  */
115
- async updateDataTable() {
116
- if (this.column.data?.[this.row.index] === this.value) {
165
+ async updateDataset() {
166
+ const oldValue = await this.column.viewport.grid.dataProvider?.getValue(this.column.id, this.row.index);
167
+ if (oldValue === this.value) {
117
168
  // Abort if the value is the same as in the data table.
118
169
  return false;
119
170
  }
120
171
  const vp = this.column.viewport;
121
- const { dataTable: originalDataTable } = vp.grid;
122
- const rowTableIndex = this.row.id &&
123
- originalDataTable?.getLocalRowIndex(this.row.id);
124
- if (!originalDataTable || rowTableIndex === void 0) {
172
+ const { dataProvider: dp } = vp.grid;
173
+ const rowId = this.row.id;
174
+ if (!dp || rowId === void 0) {
125
175
  return false;
126
176
  }
127
177
  this.row.data[this.column.id] = this.value;
128
- originalDataTable.setCell(this.column.id, rowTableIndex, this.value);
129
- // If no modifiers, don't update all rows
130
- if (vp.grid.dataTable === vp.grid.presentationTable) {
178
+ await dp.setValue(this.value, this.column.id, rowId);
179
+ if (vp.grid.querying.willNotModify()) {
131
180
  return false;
132
181
  }
133
182
  await vp.updateRows();
134
183
  return true;
135
184
  }
185
+ /**
186
+ * Initialize event listeners for table body cells.
187
+ *
188
+ * Most events (click, dblclick, keydown, mousedown, mouseover, mouseout)
189
+ * are delegated to Table for better performance with virtualization.
190
+ * Only focus/blur remain on individual cells for focus management.
191
+ */
136
192
  initEvents() {
137
- this.cellEvents.push(['dblclick', (e) => (this.onDblClick(e))]);
138
- this.cellEvents.push(['mousedown', (e) => {
139
- this.onMouseDown(e);
140
- }]);
141
- super.initEvents();
193
+ this.cellEvents.push(['blur', () => this.onBlur()]);
194
+ this.cellEvents.push(['focus', () => this.onFocus()]);
195
+ this.cellEvents.forEach((pair) => {
196
+ this.htmlElement.addEventListener(pair[0], pair[1]);
197
+ });
142
198
  }
143
199
  /**
144
200
  * Handles the focus event on the cell.
@@ -1,6 +1,7 @@
1
1
  import type Cell from '../Cell';
2
2
  import type Column from '../Column';
3
- import type DataTable from '../../../../Data/DataTable';
3
+ import type { RowObject as DataTableRowObject } from '../../../../Data/DataTable';
4
+ import type { RowId } from '../../Data/DataProvider';
4
5
  import Row from '../Row.js';
5
6
  import Table from '../Table.js';
6
7
  /**
@@ -10,15 +11,15 @@ declare class TableRow extends Row {
10
11
  /**
11
12
  * The row values from the data table in the original column order.
12
13
  */
13
- data: DataTable.RowObject;
14
+ data: DataTableRowObject;
14
15
  /**
15
16
  * The local index of the row in the presentation data table.
16
17
  */
17
18
  index: number;
18
19
  /**
19
- * The index of the row in the original data table (ID).
20
+ * The unique ID of the row.
20
21
  */
21
- id?: number;
22
+ id?: RowId;
22
23
  /**
23
24
  * The vertical translation of the row.
24
25
  */
@@ -33,6 +34,7 @@ declare class TableRow extends Row {
33
34
  * The index of the row in the data table.
34
35
  */
35
36
  constructor(viewport: Table, index: number);
37
+ init(): Promise<void>;
36
38
  createCell(column: Column): Cell;
37
39
  /**
38
40
  * Loads the row data from the data table.
@@ -42,7 +44,7 @@ declare class TableRow extends Row {
42
44
  * Updates the row data and its cells with the latest values from the data
43
45
  * table.
44
46
  */
45
- update(): void;
47
+ update(): Promise<void>;
46
48
  /**
47
49
  * Adds or removes the hovered CSS class to the row element.
48
50
  *
@@ -66,6 +68,14 @@ declare class TableRow extends Row {
66
68
  * lifecycle.
67
69
  */
68
70
  updateRowAttributes(): void;
71
+ /**
72
+ * Updates the row parity class based on index.
73
+ */
74
+ private updateParityClass;
75
+ /**
76
+ * Updates the hovered and synced classes based on grid state.
77
+ */
78
+ private updateStateClasses;
69
79
  /**
70
80
  * Sets the vertical translation of the row. Used for virtual scrolling.
71
81
  *
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid TableRow class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Dawid Dragula
@@ -17,6 +17,7 @@
17
17
  import Row from '../Row.js';
18
18
  import TableCell from './TableCell.js';
19
19
  import Globals from '../../Globals.js';
20
+ import { fireEvent } from '../../../../Shared/Utilities.js';
20
21
  /* *
21
22
  *
22
23
  * Class
@@ -56,24 +57,28 @@ class TableRow extends Row {
56
57
  */
57
58
  this.translateY = 0;
58
59
  this.index = index;
59
- this.id = viewport.dataTable.getOriginalRowIndex(index);
60
- this.loadData();
61
- this.setRowAttributes();
62
60
  }
63
61
  /* *
64
62
  *
65
63
  * Methods
66
64
  *
67
65
  * */
66
+ async init() {
67
+ const dp = this.viewport.grid.dataProvider;
68
+ this.id = await dp?.getRowId(this.index);
69
+ await this.loadData();
70
+ this.setRowAttributes();
71
+ }
68
72
  createCell(column) {
69
73
  return new TableCell(this, column);
70
74
  }
71
75
  /**
72
76
  * Loads the row data from the data table.
73
77
  */
74
- loadData() {
75
- const data = this.viewport.dataTable.getRowObject(this.index);
78
+ async loadData() {
79
+ const data = await this.viewport.grid.dataProvider?.getRowObject(this.index);
76
80
  if (!data) {
81
+ this.data = {};
77
82
  return;
78
83
  }
79
84
  this.data = data;
@@ -82,13 +87,42 @@ class TableRow extends Row {
82
87
  * Updates the row data and its cells with the latest values from the data
83
88
  * table.
84
89
  */
85
- update() {
86
- this.id = this.viewport.dataTable.getOriginalRowIndex(this.index);
90
+ async update() {
91
+ this.id = await this.viewport.grid.dataProvider?.getRowId(this.index);
92
+ this.updateRowAttributes();
93
+ await this.loadData();
94
+ for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
95
+ const cell = this.cells[i];
96
+ await cell.setValue();
97
+ }
98
+ this.reflow();
99
+ }
100
+ /**
101
+ * Reuses the row instance for a new index.
102
+ *
103
+ * @param index
104
+ * The index of the row in the data table.
105
+ *
106
+ * @internal
107
+ */
108
+ async reuse(index) {
109
+ for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
110
+ fireEvent(this.cells[i], 'outdate');
111
+ }
112
+ if (this.index === index) {
113
+ await this.update();
114
+ return;
115
+ }
116
+ this.index = index;
117
+ this.id = await this.viewport.grid.dataProvider?.getRowId(this.index);
118
+ this.htmlElement.setAttribute('data-row-index', index);
87
119
  this.updateRowAttributes();
88
- this.loadData();
120
+ this.updateParityClass();
121
+ this.updateStateClasses();
122
+ await this.loadData();
89
123
  for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
90
124
  const cell = this.cells[i];
91
- void cell.setValue();
125
+ await cell.setValue();
92
126
  }
93
127
  this.reflow();
94
128
  }
@@ -127,13 +161,8 @@ class TableRow extends Row {
127
161
  el.setAttribute('data-row-index', idx);
128
162
  this.updateRowAttributes();
129
163
  // Indexing from 0, so rows with even index are odd.
130
- el.classList.add(Globals.getClassName(idx % 2 ? 'rowEven' : 'rowOdd'));
131
- if (this.viewport.grid.hoveredRowIndex === idx) {
132
- el.classList.add(Globals.getClassName('hoveredRow'));
133
- }
134
- if (this.viewport.grid.syncedRowIndex === idx) {
135
- el.classList.add(Globals.getClassName('syncedRow'));
136
- }
164
+ this.updateParityClass();
165
+ this.updateStateClasses();
137
166
  }
138
167
  /**
139
168
  * Sets the row HTML element attributes that are updateable in the row
@@ -151,6 +180,28 @@ class TableRow extends Row {
151
180
  // Calculate levels of header, 1 to avoid indexing from 0
152
181
  a11y?.setRowIndex(el, idx + (vp.header?.rows.length ?? 0) + 1);
153
182
  }
183
+ /**
184
+ * Updates the row parity class based on index.
185
+ */
186
+ updateParityClass() {
187
+ const el = this.htmlElement;
188
+ el.classList.remove(Globals.getClassName('rowEven'), Globals.getClassName('rowOdd'));
189
+ // Indexing from 0, so rows with even index are odd.
190
+ el.classList.add(Globals.getClassName(this.index % 2 ? 'rowEven' : 'rowOdd'));
191
+ }
192
+ /**
193
+ * Updates the hovered and synced classes based on grid state.
194
+ */
195
+ updateStateClasses() {
196
+ const el = this.htmlElement;
197
+ el.classList.remove(Globals.getClassName('hoveredRow'), Globals.getClassName('syncedRow'));
198
+ if (this.viewport.grid.hoveredRowIndex === this.index) {
199
+ el.classList.add(Globals.getClassName('hoveredRow'));
200
+ }
201
+ if (this.viewport.grid.syncedRowIndex === this.index) {
202
+ el.classList.add(Globals.getClassName('syncedRow'));
203
+ }
204
+ }
154
205
  /**
155
206
  * Sets the vertical translation of the row. Used for virtual scrolling.
156
207
  *
@@ -1,4 +1,5 @@
1
- import type DataTable from '../../../Data/DataTable';
1
+ import type { CellType as DataTableCellType } from '../../../Data/DataTable';
2
+ import type CSSObject from '../../../Core/Renderer/CSSObject';
2
3
  import Column from './Column';
3
4
  import Row from './Row';
4
5
  declare abstract class Cell {
@@ -17,11 +18,15 @@ declare abstract class Cell {
17
18
  /**
18
19
  * The raw value of the cell.
19
20
  */
20
- value: DataTable.CellType;
21
+ value: DataTableCellType;
21
22
  /**
22
23
  * An additional, custom class name that can be changed dynamically.
23
24
  */
24
25
  private customClassName?;
26
+ /**
27
+ * Custom inline styles currently applied from user options.
28
+ */
29
+ private customStyleProperties?;
25
30
  /**
26
31
  * Array of cell events to be removed when the cell is destroyed.
27
32
  */
@@ -52,17 +57,10 @@ declare abstract class Cell {
52
57
  * Handles the blur event on the cell.
53
58
  */
54
59
  protected onBlur(): void;
55
- /**
56
- * Handles user keydown on the cell.
57
- *
58
- * @param e
59
- * Keyboard event object.
60
- */
61
- protected onKeyDown(e: KeyboardEvent): void;
62
60
  /**
63
61
  * Renders the cell by appending the HTML element to the row.
64
62
  */
65
- render(): void;
63
+ render(): Promise<void>;
66
64
  /**
67
65
  * Reflows the cell dimensions.
68
66
  */
@@ -84,6 +82,14 @@ declare abstract class Cell {
84
82
  * The template string.
85
83
  */
86
84
  protected setCustomClassName(template?: string): void;
85
+ /**
86
+ * Sets custom inline styles from options and removes the previously applied
87
+ * custom styles to keep updates deterministic.
88
+ *
89
+ * @param styles
90
+ * A style object to apply.
91
+ */
92
+ protected setCustomStyles(styles?: CSSObject): void;
87
93
  /**
88
94
  * Destroys the cell.
89
95
  */