@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,730 @@
1
+ /* *
2
+ *
3
+ * Highcharts Grid 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 Accessibility from './Accessibility/Accessibility.js';
18
+ import AST from '../../Core/Renderer/HTML/AST.js';
19
+ import Defaults from './Defaults.js';
20
+ import GridUtils from './GridUtils.js';
21
+ import DataTable from '../../Data/DataTable.js';
22
+ import Table from './Table/Table.js';
23
+ import U from '../../Core/Utilities.js';
24
+ import QueryingController from './Querying/QueryingController.js';
25
+ import Globals from './Globals.js';
26
+ import TimeBase from '../../Shared/TimeBase.js';
27
+ import Pagination from './Pagination/Pagination.js';
28
+ const { makeHTMLElement, setHTMLContent } = GridUtils;
29
+ const { extend, fireEvent, getStyle, merge, pick, isObject } = U;
30
+ /* *
31
+ *
32
+ * Class
33
+ *
34
+ * */
35
+ /**
36
+ * A base class for the Grid.
37
+ */
38
+ class Grid {
39
+ // Implementation
40
+ static grid(renderTo, options, async) {
41
+ if (async) {
42
+ return new Promise((resolve) => {
43
+ void new Grid(renderTo, options, (grid) => {
44
+ resolve(grid);
45
+ });
46
+ });
47
+ }
48
+ return new Grid(renderTo, options);
49
+ }
50
+ /* *
51
+ *
52
+ * Constructor
53
+ *
54
+ * */
55
+ /**
56
+ * Constructs a new Grid.
57
+ *
58
+ * @param renderTo
59
+ * The render target (container) of the Grid.
60
+ *
61
+ * @param options
62
+ * The options of the Grid.
63
+ *
64
+ * @param afterLoadCallback
65
+ * The callback that is called after the Grid is loaded.
66
+ */
67
+ constructor(renderTo, options, afterLoadCallback) {
68
+ /**
69
+ * The user options declared for the columns as an object of column ID to
70
+ * column options.
71
+ * @internal
72
+ */
73
+ this.columnOptionsMap = {};
74
+ /**
75
+ * The options that were declared by the user when creating the Grid
76
+ * or when updating it.
77
+ */
78
+ this.userOptions = {};
79
+ /**
80
+ * The initial height of the container. Can be 0 also if not set.
81
+ * @internal
82
+ */
83
+ this.initialContainerHeight = 0;
84
+ /**
85
+ * The list of currently shown popups.
86
+ */
87
+ this.popups = new Set();
88
+ /**
89
+ * Functions that unregister events attached to the grid's data table,
90
+ * that need to be removed when the grid is destroyed.
91
+ */
92
+ this.dataTableEventDestructors = [];
93
+ this.loadUserOptions(options);
94
+ this.id = this.options?.id || U.uniqueKey();
95
+ this.querying = new QueryingController(this);
96
+ this.locale = this.options?.lang?.locale || (this.container?.closest('[lang]')?.lang);
97
+ this.time = new TimeBase(extend(this.options?.time, { locale: this.locale }), this.options?.lang);
98
+ fireEvent(this, 'beforeLoad');
99
+ Grid.grids.push(this);
100
+ this.initContainers(renderTo);
101
+ this.initAccessibility();
102
+ this.initPagination();
103
+ this.loadDataTable();
104
+ this.querying.loadOptions();
105
+ void this.querying.proceed().then(() => {
106
+ this.renderViewport();
107
+ afterLoadCallback?.(this);
108
+ fireEvent(this, 'afterLoad');
109
+ });
110
+ }
111
+ /* *
112
+ *
113
+ * Methods
114
+ *
115
+ * */
116
+ /*
117
+ * Initializes the accessibility controller.
118
+ */
119
+ initAccessibility() {
120
+ this.accessibility?.destroy();
121
+ delete this.accessibility;
122
+ if (this.options?.accessibility?.enabled) {
123
+ this.accessibility = new Accessibility(this);
124
+ }
125
+ }
126
+ /*
127
+ * Initializes the pagination.
128
+ */
129
+ initPagination() {
130
+ let state;
131
+ if (this.pagination) {
132
+ const { currentPageSize, currentPage } = this.pagination || {};
133
+ state = {
134
+ currentPageSize,
135
+ currentPage
136
+ };
137
+ }
138
+ this.pagination?.destroy();
139
+ delete this.pagination;
140
+ const rawOptions = this.options?.pagination;
141
+ const options = isObject(rawOptions) ? rawOptions : {
142
+ enabled: rawOptions
143
+ };
144
+ if (options?.enabled) {
145
+ this.pagination = new Pagination(this, options, state);
146
+ }
147
+ }
148
+ /**
149
+ * Initializes the container of the Grid.
150
+ *
151
+ * @param renderTo
152
+ * The render target (html element or id) of the Grid.
153
+ *
154
+ */
155
+ initContainers(renderTo) {
156
+ const container = (typeof renderTo === 'string') ?
157
+ Globals.win.document.getElementById(renderTo) : renderTo;
158
+ // Display an error if the renderTo is wrong
159
+ if (!container) {
160
+ // eslint-disable-next-line no-console
161
+ console.error(`
162
+ Rendering div not found. It is unable to find the HTML element
163
+ to render the Grid in.
164
+ `);
165
+ return;
166
+ }
167
+ this.initialContainerHeight = getStyle(container, 'height', true) || 0;
168
+ this.container = container;
169
+ this.container.innerHTML = AST.emptyHTML;
170
+ this.contentWrapper = makeHTMLElement('div', {
171
+ className: Globals.getClassName('container')
172
+ }, this.container);
173
+ }
174
+ /**
175
+ * Loads the new user options to all the important fields (`userOptions`,
176
+ * `options` and `columnOptionsMap`).
177
+ *
178
+ * @param newOptions
179
+ * The options that were declared by the user.
180
+ *
181
+ * @param oneToOne
182
+ * When `false` (default), the existing column options will be merged with
183
+ * the ones that are currently defined in the user options. When `true`,
184
+ * the columns not defined in the new options will be removed.
185
+ */
186
+ loadUserOptions(newOptions, oneToOne = false) {
187
+ // Operate on a copy of the options argument
188
+ newOptions = merge(newOptions);
189
+ if (newOptions.columns) {
190
+ if (oneToOne) {
191
+ this.setColumnOptionsOneToOne(newOptions.columns);
192
+ }
193
+ else {
194
+ this.setColumnOptions(newOptions.columns);
195
+ }
196
+ delete newOptions.columns;
197
+ }
198
+ this.userOptions = merge(this.userOptions, newOptions);
199
+ this.options = merge(this.options ?? Defaults.defaultOptions, this.userOptions);
200
+ // Generate column options map
201
+ const columnOptionsArray = this.options?.columns;
202
+ if (!columnOptionsArray) {
203
+ return;
204
+ }
205
+ const columnOptionsMap = {};
206
+ for (let i = 0, iEnd = columnOptionsArray?.length ?? 0; i < iEnd; ++i) {
207
+ columnOptionsMap[columnOptionsArray[i].id] = {
208
+ index: i,
209
+ options: columnOptionsArray[i]
210
+ };
211
+ }
212
+ this.columnOptionsMap = columnOptionsMap;
213
+ }
214
+ /**
215
+ * Sets the new column options to the userOptions field.
216
+ *
217
+ * @param newColumnOptions
218
+ * The new column options that should be loaded.
219
+ *
220
+ * @param overwrite
221
+ * Whether to overwrite the existing column options with the new ones.
222
+ * Default is `false`.
223
+ */
224
+ setColumnOptions(newColumnOptions, overwrite = false) {
225
+ if (!this.userOptions.columns) {
226
+ this.userOptions.columns = this.options?.columns ?? [];
227
+ }
228
+ const columnOptions = this.userOptions.columns;
229
+ for (let i = 0, iEnd = newColumnOptions.length; i < iEnd; ++i) {
230
+ const newOptions = newColumnOptions[i];
231
+ const colOptionsIndex = this.columnOptionsMap?.[newOptions.id]?.index ?? -1;
232
+ // If the new column options contain only the id.
233
+ if (Object.keys(newOptions).length < 2) {
234
+ if (overwrite && colOptionsIndex !== -1) {
235
+ columnOptions.splice(colOptionsIndex, 1);
236
+ }
237
+ continue;
238
+ }
239
+ if (colOptionsIndex === -1) {
240
+ columnOptions.push(newOptions);
241
+ }
242
+ else if (overwrite) {
243
+ columnOptions[colOptionsIndex] = newOptions;
244
+ }
245
+ else {
246
+ merge(true, columnOptions[colOptionsIndex], newOptions);
247
+ }
248
+ }
249
+ if (columnOptions.length < 1) {
250
+ delete this.userOptions.columns;
251
+ }
252
+ }
253
+ /**
254
+ * Loads the new column options to the userOptions field in a one-to-one
255
+ * manner. It means that all the columns that are not defined in the new
256
+ * options will be removed.
257
+ *
258
+ * @param newColumnOptions
259
+ * The new column options that should be loaded.
260
+ */
261
+ setColumnOptionsOneToOne(newColumnOptions) {
262
+ const prevColumnOptions = this.userOptions.columns;
263
+ const columnOptions = [];
264
+ let prevOptions;
265
+ for (let i = 0, iEnd = newColumnOptions.length; i < iEnd; ++i) {
266
+ const newOptions = newColumnOptions[i];
267
+ const indexInPrevOptions = prevColumnOptions?.findIndex((prev) => prev.id === newOptions.id);
268
+ if (indexInPrevOptions !== void 0 && indexInPrevOptions !== -1) {
269
+ prevOptions = prevColumnOptions?.[indexInPrevOptions];
270
+ }
271
+ const resultOptions = merge(prevOptions ?? {}, newOptions);
272
+ if (Object.keys(resultOptions).length > 1) {
273
+ columnOptions.push(resultOptions);
274
+ }
275
+ }
276
+ this.userOptions.columns = columnOptions;
277
+ }
278
+ /**
279
+ * Updates the Grid with new options.
280
+ *
281
+ * @param options
282
+ * The options of the Grid that should be updated. If not provided,
283
+ * the update will be proceeded based on the `this.userOptions` property.
284
+ * The `column` options are merged using the `id` property as a key.
285
+ *
286
+ * @param render
287
+ * Whether to re-render the Grid after updating the options.
288
+ *
289
+ * @param oneToOne
290
+ * When `false` (default), the existing column options will be merged with
291
+ * the ones that are currently defined in the user options. When `true`,
292
+ * the columns not defined in the new options will be removed.
293
+ */
294
+ async update(options = {}, render = true, oneToOne = false) {
295
+ this.loadUserOptions(options, oneToOne);
296
+ if (!this.dataTable || options.dataTable) {
297
+ this.userOptions.dataTable = options.dataTable;
298
+ (this.options ?? {}).dataTable = options.dataTable;
299
+ this.loadDataTable();
300
+ this.querying.shouldBeUpdated = true;
301
+ }
302
+ if (!render) {
303
+ return;
304
+ }
305
+ this.initAccessibility();
306
+ this.initPagination();
307
+ this.querying.loadOptions();
308
+ // Update locale.
309
+ const locale = options.lang?.locale;
310
+ if (locale) {
311
+ this.locale = locale;
312
+ this.time.update(extend(options.time || {}, { locale: this.locale }));
313
+ }
314
+ await this.querying.proceed();
315
+ this.renderViewport();
316
+ }
317
+ /**
318
+ * Updates the column of the Grid with new options.
319
+ *
320
+ * @param columnId
321
+ * The ID of the column that should be updated.
322
+ *
323
+ * @param options
324
+ * The options of the columns that should be updated. If null,
325
+ * column options for this column ID will be removed.
326
+ *
327
+ * @param render
328
+ * Whether to re-render the Grid after updating the columns.
329
+ *
330
+ * @param overwrite
331
+ * If true, the column options will be updated by replacing the existing
332
+ * options with the new ones instead of merging them.
333
+ */
334
+ async updateColumn(columnId, options, render = true, overwrite = false) {
335
+ this.setColumnOptions([{
336
+ id: columnId,
337
+ ...options
338
+ }], overwrite);
339
+ await this.update(void 0, render);
340
+ }
341
+ /**
342
+ * Hovers the row with the provided index. It removes the hover effect from
343
+ * the previously hovered row.
344
+ *
345
+ * @param rowIndex
346
+ * The index of the row.
347
+ */
348
+ hoverRow(rowIndex) {
349
+ const rows = this.viewport?.rows;
350
+ if (!rows) {
351
+ return;
352
+ }
353
+ const firstRowIndex = this.viewport?.rows[0]?.index ?? 0;
354
+ if (this.hoveredRowIndex !== void 0) {
355
+ rows[this.hoveredRowIndex - firstRowIndex]?.setHoveredState(false);
356
+ }
357
+ if (rowIndex !== void 0) {
358
+ rows[rowIndex - firstRowIndex]?.setHoveredState(true);
359
+ }
360
+ this.hoveredRowIndex = rowIndex;
361
+ }
362
+ /**
363
+ * Hovers the column with the provided ID. It removes the hover effect from
364
+ * the previously hovered column.
365
+ *
366
+ * @param columnId
367
+ * The ID of the column.
368
+ */
369
+ hoverColumn(columnId) {
370
+ const vp = this.viewport;
371
+ if (!vp) {
372
+ return;
373
+ }
374
+ if (this.hoveredColumnId) {
375
+ vp.getColumn(this.hoveredColumnId)?.setHoveredState(false);
376
+ }
377
+ if (columnId) {
378
+ vp.getColumn(columnId)?.setHoveredState(true);
379
+ }
380
+ this.hoveredColumnId = columnId;
381
+ }
382
+ /**
383
+ * Sets the sync state to the row with the provided index. It removes the
384
+ * synced effect from the previously synced row.
385
+ *
386
+ * @param rowIndex
387
+ * The index of the row.
388
+ */
389
+ syncRow(rowIndex) {
390
+ const rows = this.viewport?.rows;
391
+ if (!rows) {
392
+ return;
393
+ }
394
+ const firstRowIndex = this.viewport?.rows[0]?.index ?? 0;
395
+ if (this.syncedRowIndex !== void 0) {
396
+ rows[this.syncedRowIndex - firstRowIndex]?.setSyncedState(false);
397
+ }
398
+ if (rowIndex !== void 0) {
399
+ rows[rowIndex - firstRowIndex]?.setSyncedState(true);
400
+ }
401
+ this.syncedRowIndex = rowIndex;
402
+ }
403
+ /**
404
+ * Sets the sync state to the column with the provided ID. It removes the
405
+ * synced effect from the previously synced column.
406
+ *
407
+ * @param columnId
408
+ * The ID of the column.
409
+ */
410
+ syncColumn(columnId) {
411
+ const vp = this.viewport;
412
+ if (!vp) {
413
+ return;
414
+ }
415
+ if (this.syncedColumnId) {
416
+ vp.getColumn(this.syncedColumnId)?.setSyncedState(false);
417
+ }
418
+ if (columnId) {
419
+ vp.getColumn(columnId)?.setSyncedState(true);
420
+ }
421
+ this.syncedColumnId = columnId;
422
+ }
423
+ /**
424
+ * Render caption above the grid.
425
+ * @internal
426
+ */
427
+ renderCaption() {
428
+ const captionOptions = this.options?.caption;
429
+ const captionText = captionOptions?.text;
430
+ if (!captionText) {
431
+ return;
432
+ }
433
+ // Create a caption element.
434
+ this.captionElement = makeHTMLElement('div', {
435
+ className: Globals.getClassName('captionElement'),
436
+ id: this.id + '-caption'
437
+ }, this.contentWrapper);
438
+ // Render the caption element content.
439
+ setHTMLContent(this.captionElement, captionText);
440
+ if (captionOptions.className) {
441
+ this.captionElement.classList.add(...captionOptions.className.split(/\s+/g));
442
+ }
443
+ }
444
+ /**
445
+ * Render description under the grid.
446
+ *
447
+ * @internal
448
+ */
449
+ renderDescription() {
450
+ const descriptionOptions = this.options?.description;
451
+ const descriptionText = descriptionOptions?.text;
452
+ if (!descriptionText) {
453
+ return;
454
+ }
455
+ // Create a description element.
456
+ this.descriptionElement = makeHTMLElement('div', {
457
+ className: Globals.getClassName('descriptionElement'),
458
+ id: this.id + '-description'
459
+ }, this.contentWrapper);
460
+ // Render the description element content.
461
+ setHTMLContent(this.descriptionElement, descriptionText);
462
+ if (descriptionOptions.className) {
463
+ this.descriptionElement.classList.add(...descriptionOptions.className.split(/\s+/g));
464
+ }
465
+ }
466
+ /**
467
+ * Resets the content wrapper of the Grid. It clears the content and
468
+ * resets the class names.
469
+ * @internal
470
+ */
471
+ resetContentWrapper() {
472
+ if (!this.contentWrapper) {
473
+ return;
474
+ }
475
+ this.contentWrapper.innerHTML = AST.emptyHTML;
476
+ this.contentWrapper.className =
477
+ Globals.getClassName('container') + ' ' +
478
+ this.options?.rendering?.theme || '';
479
+ }
480
+ /**
481
+ * Renders the viewport of the Grid. If the Grid is already
482
+ * rendered, it will be destroyed and re-rendered with the new data.
483
+ * @internal
484
+ */
485
+ renderViewport() {
486
+ const viewportMeta = this.viewport?.getStateMeta();
487
+ const pagination = this.pagination;
488
+ const paginationPosition = pagination?.options.position;
489
+ this.enabledColumns = this.getEnabledColumnIDs();
490
+ this.credits?.destroy();
491
+ this.viewport?.destroy();
492
+ delete this.viewport;
493
+ this.resetContentWrapper();
494
+ fireEvent(this, 'beforeRenderViewport');
495
+ this.renderCaption();
496
+ // Render top pagination if enabled (before table)
497
+ if (paginationPosition === 'top') {
498
+ pagination?.render();
499
+ }
500
+ if (this.enabledColumns.length > 0) {
501
+ this.viewport = this.renderTable();
502
+ if (viewportMeta && this.viewport) {
503
+ this.viewport.applyStateMeta(viewportMeta);
504
+ }
505
+ }
506
+ else {
507
+ this.renderNoData();
508
+ }
509
+ this.accessibility?.setA11yOptions();
510
+ // Render bottom pagination, footer pagination,
511
+ // or custom container pagination (after table).
512
+ if (paginationPosition !== 'top') {
513
+ pagination?.render();
514
+ }
515
+ this.renderDescription();
516
+ fireEvent(this, 'afterRenderViewport');
517
+ this.viewport?.reflow();
518
+ }
519
+ /**
520
+ * Renders the table (viewport) of the Grid.
521
+ *
522
+ * @returns
523
+ * The newly rendered table (viewport) of the Grid.
524
+ */
525
+ renderTable() {
526
+ this.tableElement = makeHTMLElement('table', {
527
+ className: Globals.getClassName('tableElement')
528
+ }, this.contentWrapper);
529
+ this.tableElement.setAttribute('role', 'grid');
530
+ return new Table(this, this.tableElement);
531
+ }
532
+ /**
533
+ * Renders a message that there is no data to display.
534
+ */
535
+ renderNoData() {
536
+ makeHTMLElement('div', {
537
+ className: Globals.getClassName('noData'),
538
+ innerText: this.options?.lang?.noData
539
+ }, this.contentWrapper);
540
+ }
541
+ /**
542
+ * Returns the array of IDs of columns that should be displayed in the data
543
+ * grid, in the correct order.
544
+ */
545
+ getEnabledColumnIDs() {
546
+ const { columnOptionsMap } = this;
547
+ const header = this.options?.header;
548
+ const headerColumns = this.getColumnIds(header || [], false);
549
+ const columnsIncluded = this.options?.rendering?.columns?.included || (headerColumns && headerColumns.length > 0 ?
550
+ headerColumns : this.dataTable?.getColumnIds());
551
+ if (!columnsIncluded?.length) {
552
+ return [];
553
+ }
554
+ if (!columnOptionsMap) {
555
+ return columnsIncluded;
556
+ }
557
+ let columnId;
558
+ const result = [];
559
+ for (let i = 0, iEnd = columnsIncluded.length; i < iEnd; ++i) {
560
+ columnId = columnsIncluded[i];
561
+ if (columnOptionsMap?.[columnId]?.options?.enabled !== false) {
562
+ result.push(columnId);
563
+ }
564
+ }
565
+ return result;
566
+ }
567
+ /**
568
+ * Loads the data table of the Grid. If the data table is passed as a
569
+ * reference, it should be used instead of creating a new one.
570
+ */
571
+ loadDataTable() {
572
+ // Unregister all events attached to the previous data table.
573
+ this.dataTableEventDestructors.forEach((fn) => fn());
574
+ const tableOptions = this.options?.dataTable;
575
+ // If the table is passed as a reference, it should be used instead of
576
+ // creating a new one.
577
+ if (tableOptions?.clone) {
578
+ this.dataTable = tableOptions;
579
+ this.presentationTable = this.dataTable.getModified();
580
+ return;
581
+ }
582
+ const dt = this.dataTable = this.presentationTable =
583
+ new DataTable(tableOptions);
584
+ // If the data table is modified, mark the querying controller to be
585
+ // updated on the next proceed.
586
+ [
587
+ 'afterDeleteColumns',
588
+ 'afterDeleteRows',
589
+ 'afterSetCell',
590
+ 'afterSetColumns',
591
+ 'afterSetRows'
592
+ ].forEach((eventName) => {
593
+ this.dataTableEventDestructors.push(dt.on(eventName, () => {
594
+ this.querying.shouldBeUpdated = true;
595
+ }));
596
+ });
597
+ }
598
+ /**
599
+ * Extracts all references to columnIds on all levels below defined level
600
+ * in the settings.header structure.
601
+ *
602
+ * @param columnsTree
603
+ * Structure that we start calculation
604
+ *
605
+ * @param [onlyEnabledColumns=true]
606
+ * Extract all columns from header or columns filtered by enabled param
607
+ * @returns
608
+ */
609
+ getColumnIds(columnsTree, onlyEnabledColumns = true) {
610
+ let columnIds = [];
611
+ const { enabledColumns } = this;
612
+ for (const column of columnsTree) {
613
+ const columnId = typeof column === 'string' ? column : column.columnId;
614
+ if (columnId &&
615
+ (!onlyEnabledColumns || (enabledColumns?.includes(columnId)))) {
616
+ columnIds.push(columnId);
617
+ }
618
+ if (typeof column !== 'string' && column.columns) {
619
+ columnIds = columnIds.concat(this.getColumnIds(column.columns, onlyEnabledColumns));
620
+ }
621
+ }
622
+ return columnIds;
623
+ }
624
+ /**
625
+ * Destroys the Grid.
626
+ */
627
+ destroy() {
628
+ const dgIndex = Grid.grids.findIndex((dg) => dg === this);
629
+ this.dataTableEventDestructors.forEach((fn) => fn());
630
+ this.viewport?.destroy();
631
+ if (this.container) {
632
+ this.container.innerHTML = AST.emptyHTML;
633
+ this.container.classList.remove(Globals.getClassName('container'));
634
+ }
635
+ // Clear all properties
636
+ Object.keys(this).forEach((key) => {
637
+ delete this[key];
638
+ });
639
+ Grid.grids.splice(dgIndex, 1);
640
+ }
641
+ /**
642
+ * Grey out the Grid and show a loading indicator.
643
+ *
644
+ * @param message
645
+ * The message to display in the loading indicator.
646
+ */
647
+ showLoading(message) {
648
+ if (this.loadingWrapper) {
649
+ return;
650
+ }
651
+ // Create loading wrapper.
652
+ this.loadingWrapper = makeHTMLElement('div', {
653
+ className: Globals.getClassName('loadingWrapper')
654
+ }, this.contentWrapper);
655
+ // Create spinner element.
656
+ makeHTMLElement('div', {
657
+ className: Globals.getClassName('loadingSpinner')
658
+ }, this.loadingWrapper);
659
+ // Create loading message span element.
660
+ const loadingSpan = makeHTMLElement('span', {
661
+ className: Globals.getClassName('loadingMessage')
662
+ }, this.loadingWrapper);
663
+ setHTMLContent(loadingSpan, pick(message, this.options?.lang?.loading, ''));
664
+ }
665
+ /**
666
+ * Removes the loading indicator.
667
+ */
668
+ hideLoading() {
669
+ this.loadingWrapper?.remove();
670
+ delete this.loadingWrapper;
671
+ }
672
+ /**
673
+ * Returns the grid data as a JSON string.
674
+ *
675
+ * @param modified
676
+ * Whether to return the modified data table (after filtering/sorting/etc.)
677
+ * or the unmodified, original one. Default value is set to `true`.
678
+ *
679
+ * @return
680
+ * JSON representation of the data
681
+ */
682
+ getData(modified = true) {
683
+ const dataTable = modified ? this.viewport?.dataTable : this.dataTable;
684
+ const columns = dataTable?.columns;
685
+ if (!this.enabledColumns || !columns) {
686
+ return '{}';
687
+ }
688
+ for (const key of Object.keys(columns)) {
689
+ if (this.enabledColumns.indexOf(key) === -1) {
690
+ delete columns[key];
691
+ }
692
+ }
693
+ return JSON.stringify(columns, null, 2);
694
+ }
695
+ /**
696
+ * Returns the current Grid options.
697
+ *
698
+ * @param onlyUserOptions
699
+ * Whether to return only the user options or all options (user options
700
+ * merged with the default ones). Default is `true`.
701
+ *
702
+ * @returns
703
+ * Grid options.
704
+ */
705
+ getOptions(onlyUserOptions = true) {
706
+ const options = onlyUserOptions ? merge(this.userOptions) : merge(this.options);
707
+ if (options.dataTable?.id) {
708
+ options.dataTable = {
709
+ columns: options.dataTable.columns
710
+ };
711
+ }
712
+ return options;
713
+ }
714
+ }
715
+ /* *
716
+ *
717
+ * Properties
718
+ *
719
+ * */
720
+ /**
721
+ * An array containing the current Grid objects in the page.
722
+ * @private
723
+ */
724
+ Grid.grids = [];
725
+ /* *
726
+ *
727
+ * Default Export
728
+ *
729
+ * */
730
+ export default Grid;