@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,351 @@
1
+ /* *
2
+ *
3
+ * Grid ColumnFiltering 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
+ * - Kamil Kubik
15
+ *
16
+ * */
17
+ 'use strict';
18
+ import U from '../../../../../Core/Utilities.js';
19
+ import GU from '../../../GridUtils.js';
20
+ import Globals from '../../../Globals.js';
21
+ import { conditionsMap } from './FilteringTypes.js';
22
+ const { defined, fireEvent } = U;
23
+ const { makeHTMLElement } = GU;
24
+ /* *
25
+ *
26
+ * Class
27
+ *
28
+ * */
29
+ /**
30
+ * Class that manages filtering for a dedicated column.
31
+ */
32
+ class ColumnFiltering {
33
+ /* *
34
+ *
35
+ * Static Methods
36
+ *
37
+ * */
38
+ /**
39
+ * Parses a camel case string to a readable string and capitalizes the first
40
+ * letter.
41
+ *
42
+ * @param value
43
+ * The camel case string to parse.
44
+ *
45
+ * @returns
46
+ * The readable string with the first letter capitalized.
47
+ */
48
+ static parseCamelCaseToReadable(value) {
49
+ const readable = value
50
+ .replace(/([A-Z])/g, ' $1')
51
+ .trim()
52
+ .toLowerCase()
53
+ .split(/\s+/).join(' ');
54
+ return readable.charAt(0).toUpperCase() + readable.slice(1);
55
+ }
56
+ /* *
57
+ *
58
+ * Constructor
59
+ *
60
+ * */
61
+ /**
62
+ * Constructs filtering controller for a dedicated column.
63
+ *
64
+ * @param column
65
+ * The filtered column.
66
+ */
67
+ constructor(column) {
68
+ /**
69
+ * Handles the keydown event for the filtering content. Used externally,
70
+ * not in the class itself.
71
+ *
72
+ * @param e
73
+ * The keyboard event.
74
+ */
75
+ this.onKeyDown = (e) => {
76
+ const contentOrder = [];
77
+ if (this.filterSelect && !this.filterSelect.disabled) {
78
+ contentOrder.push(this.filterSelect);
79
+ }
80
+ if (this.filterInput && !this.filterInput.disabled) {
81
+ contentOrder.push(this.filterInput);
82
+ }
83
+ if (this.clearButton && !this.clearButton.disabled) {
84
+ contentOrder.push(this.clearButton);
85
+ }
86
+ const direction = {
87
+ 'ArrowDown': 1,
88
+ 'ArrowUp': -1
89
+ }[e.key];
90
+ if (direction) {
91
+ e.preventDefault();
92
+ const currentIndex = contentOrder.indexOf(e.target);
93
+ const n = contentOrder.length;
94
+ contentOrder[(currentIndex + direction + n) % n].focus();
95
+ return;
96
+ }
97
+ if (e.key === 'Enter') {
98
+ if (e.target === this.clearButton) {
99
+ e.preventDefault();
100
+ void this.set();
101
+ contentOrder[0]?.focus();
102
+ return;
103
+ }
104
+ }
105
+ };
106
+ this.column = column;
107
+ }
108
+ /* *
109
+ *
110
+ * Methods
111
+ *
112
+ * */
113
+ /**
114
+ * Sets the value and condition for the filtering.
115
+ *
116
+ * @param value
117
+ * The value to set.
118
+ *
119
+ * @param condition
120
+ * The condition to set.
121
+ */
122
+ async set(value, condition) {
123
+ if (this.filterInput) {
124
+ this.filterInput.value = value ?? '';
125
+ }
126
+ if (this.filterSelect) {
127
+ this.filterSelect.value =
128
+ condition ?? conditionsMap[this.column.dataType][0];
129
+ }
130
+ await this.applyFilter({ value, condition });
131
+ }
132
+ /**
133
+ * Render the filtering content in the container.
134
+ *
135
+ * @param container
136
+ * The container element.
137
+ */
138
+ renderFilteringContent(container) {
139
+ const column = this.column;
140
+ const columnType = column.dataType;
141
+ if (!column.options.filtering?.enabled) {
142
+ return;
143
+ }
144
+ // Render the input wrapper.
145
+ const inputWrapper = makeHTMLElement('div', {
146
+ className: Globals.getClassName('columnFilterWrapper')
147
+ }, container);
148
+ this.renderConditionSelect(inputWrapper);
149
+ if (columnType !== 'boolean') {
150
+ this.renderFilteringInput(inputWrapper, columnType);
151
+ }
152
+ this.renderClearButton(inputWrapper);
153
+ }
154
+ /**
155
+ * Takes the filtering value and condition from the inputs and applies it
156
+ * to the column.
157
+ */
158
+ applyFilterFromForm() {
159
+ const result = {
160
+ condition: this.filterSelect?.value
161
+ };
162
+ if (this.filterInput) {
163
+ result.value = this.filterInput.value;
164
+ }
165
+ if (result.condition &&
166
+ conditionsMap[this.column.dataType].includes(result.condition)) {
167
+ void this.applyFilter(result);
168
+ }
169
+ }
170
+ /**
171
+ * Applies the filtering to the column.
172
+ *
173
+ * @param condition
174
+ * The filtering condition.
175
+ */
176
+ async applyFilter(condition) {
177
+ const viewport = this.column.viewport;
178
+ const querying = viewport.grid.querying;
179
+ const filteringController = querying.filtering;
180
+ const columnId = this.column.id;
181
+ const a11y = viewport.grid.accessibility;
182
+ const { value } = condition;
183
+ fireEvent(this.column, 'beforeFilter', {
184
+ target: this.column
185
+ });
186
+ const filteringApplied = this.isFilteringApplied();
187
+ const clearButton = this.clearButton;
188
+ if (clearButton && filteringApplied === clearButton.disabled) {
189
+ clearButton.disabled = !filteringApplied;
190
+ }
191
+ if (defined(value) && value !== '' && typeof value !== 'number') {
192
+ switch (this.column.dataType) {
193
+ case 'number':
194
+ condition.value = Number(value);
195
+ break;
196
+ case 'datetime':
197
+ condition.value = new Date(`${value}Z`).getTime();
198
+ break;
199
+ }
200
+ }
201
+ // Update the userOptions.
202
+ void this.column.update({ filtering: condition }, false);
203
+ filteringController.addColumnFilterCondition(columnId, condition);
204
+ this.disableInputIfNeeded();
205
+ await querying.proceed();
206
+ await viewport.updateRows();
207
+ a11y?.userFilteredColumn({
208
+ ...condition,
209
+ columnId,
210
+ rowsCount: viewport.rows.length
211
+ }, filteringApplied);
212
+ fireEvent(this.column, 'afterFilter', {
213
+ target: this.column
214
+ });
215
+ }
216
+ /**
217
+ * Render the filtering input element, based on the column type.
218
+ *
219
+ * @param inputWrapper
220
+ * Reference to the input wrapper.
221
+ *
222
+ * @param columnType
223
+ * Reference to the column type.
224
+ */
225
+ renderFilteringInput(inputWrapper, columnType) {
226
+ // Render the input element.
227
+ this.filterInput = makeHTMLElement('input', {}, inputWrapper);
228
+ this.filterInput.setAttribute('tabindex', '-1');
229
+ const column = this.column;
230
+ this.filterInput.setAttribute('id', 'filter-input-' + column.viewport.grid.id + '-' + column.id);
231
+ this.filterInput.placeholder = 'Value...';
232
+ if (columnType === 'number') {
233
+ this.filterInput.type = 'number';
234
+ }
235
+ else if (columnType === 'datetime') {
236
+ this.filterInput.type = 'date';
237
+ }
238
+ else {
239
+ this.filterInput.type = 'text';
240
+ this.filterInput.classList.add(Globals.getClassName('icon'), Globals.getClassName('iconSearch'));
241
+ }
242
+ // Assign the default input value.
243
+ const { value } = this.column.options.filtering ?? {};
244
+ if (value || value === 0) {
245
+ this.filterInput.value = columnType === 'datetime' ?
246
+ column.viewport.grid.time.dateFormat('%Y-%m-%d', Number(value)) :
247
+ value.toString();
248
+ }
249
+ if (this.filterSelect) {
250
+ this.disableInputIfNeeded();
251
+ }
252
+ const eventTypes = {
253
+ string: ['keyup'],
254
+ number: ['keyup', 'change'],
255
+ datetime: ['change']
256
+ };
257
+ for (const eventType of eventTypes[columnType]) {
258
+ this.filterInput.addEventListener(eventType, () => {
259
+ this.applyFilterFromForm();
260
+ });
261
+ }
262
+ }
263
+ /**
264
+ * Render the condition select element.
265
+ *
266
+ * @param inputWrapper
267
+ * Reference to the input wrapper.
268
+ */
269
+ renderConditionSelect(inputWrapper) {
270
+ // Render the select element.
271
+ this.filterSelect = makeHTMLElement('select', {}, inputWrapper);
272
+ this.filterSelect.setAttribute('tabindex', '-1');
273
+ const column = this.column;
274
+ this.filterSelect.setAttribute('id', 'filter-select-' + column.viewport.grid.id + '-' + column.id);
275
+ const conditions = conditionsMap[column.dataType];
276
+ const langConditions = this.column.viewport.grid.options
277
+ ?.lang?.columnFilteringConditions ?? {};
278
+ // Render the options.
279
+ for (const condition of conditions) {
280
+ const optionElement = document.createElement('option');
281
+ optionElement.value = condition;
282
+ optionElement.textContent = langConditions[condition] ??
283
+ ColumnFiltering.parseCamelCaseToReadable(condition);
284
+ this.filterSelect.appendChild(optionElement);
285
+ }
286
+ // Use condition from options or first available condition as default.
287
+ const filteringCondition = this.column.options.filtering?.condition;
288
+ if (filteringCondition && conditions.includes(filteringCondition)) {
289
+ this.filterSelect.value = filteringCondition;
290
+ }
291
+ else {
292
+ this.filterSelect.value = conditions[0];
293
+ }
294
+ this.disableInputIfNeeded();
295
+ // Attach event listener.
296
+ this.filterSelect.addEventListener('change', () => {
297
+ this.applyFilterFromForm();
298
+ });
299
+ }
300
+ renderClearButton(inputWrapper) {
301
+ this.clearButton = makeHTMLElement('button', {
302
+ className: Globals.getClassName('clearFilterButton'),
303
+ innerText: 'Clear filter' // TODO: Lang
304
+ }, inputWrapper);
305
+ this.clearButton.setAttribute('tabindex', '-1');
306
+ this.clearButton.disabled = !this.isFilteringApplied();
307
+ this.clearButton.addEventListener('click', () => {
308
+ void this.set();
309
+ });
310
+ }
311
+ /**
312
+ * Checks if filtering is applied to the column.
313
+ *
314
+ * @returns
315
+ * `true` if filtering is applied to the column, `false` otherwise.
316
+ */
317
+ isFilteringApplied() {
318
+ const { filterSelect: select, filterInput: input } = this;
319
+ const { dataType } = this.column;
320
+ const condition = select?.value;
321
+ if (dataType === 'boolean') {
322
+ return condition !== 'all';
323
+ }
324
+ if (condition === 'empty' || condition === 'notEmpty') {
325
+ return true;
326
+ }
327
+ return input?.value !== '';
328
+ }
329
+ /**
330
+ * Disables the input element if the condition is `empty` or `notEmpty`.
331
+ */
332
+ disableInputIfNeeded() {
333
+ const { filterSelect: select, filterInput: input } = this;
334
+ const condition = select?.value;
335
+ if (!input || !select) {
336
+ return;
337
+ }
338
+ if (condition === 'empty' || condition === 'notEmpty') {
339
+ input.disabled = true;
340
+ }
341
+ else if (input?.disabled) {
342
+ input.disabled = false;
343
+ }
344
+ }
345
+ }
346
+ /* *
347
+ *
348
+ * Default Export
349
+ *
350
+ * */
351
+ export default ColumnFiltering;
@@ -0,0 +1,14 @@
1
+ import type Row from '../../Row.js';
2
+ import type Column from '../../Column.js';
3
+ import HeaderCell from '../../Header/HeaderCell.js';
4
+ /**
5
+ * Represents a cell in the data grid header.
6
+ */
7
+ declare class FilterCell extends HeaderCell {
8
+ column: Column;
9
+ constructor(row: Row, column: Column);
10
+ render(): void;
11
+ protected onKeyDown(e: KeyboardEvent): void;
12
+ protected onClick(e: MouseEvent): void;
13
+ }
14
+ export default FilterCell;
@@ -0,0 +1,86 @@
1
+ /* *
2
+ *
3
+ * Grid Filter Cell class
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ *
14
+ * */
15
+ 'use strict';
16
+ import HeaderCell from '../../Header/HeaderCell.js';
17
+ import U from '../../../../../Core/Utilities.js';
18
+ const { fireEvent } = U;
19
+ /* *
20
+ *
21
+ * Class
22
+ *
23
+ * */
24
+ /**
25
+ * Represents a cell in the data grid header.
26
+ */
27
+ class FilterCell extends HeaderCell {
28
+ /* *
29
+ *
30
+ * Constructor
31
+ *
32
+ * */
33
+ constructor(row, column) {
34
+ const trueHeader = column.header;
35
+ super(row, column);
36
+ column.header = trueHeader;
37
+ }
38
+ /* *
39
+ *
40
+ * Methods
41
+ *
42
+ * */
43
+ render() {
44
+ const { column } = this;
45
+ if (!column) {
46
+ return;
47
+ }
48
+ // Render content of th element
49
+ this.row.htmlElement.appendChild(this.htmlElement);
50
+ this.htmlElement.setAttribute('scope', 'col');
51
+ this.htmlElement.setAttribute('data-column-id', column.id);
52
+ // Add user column classname
53
+ if (column.options.className) {
54
+ this.htmlElement.classList.add(...column.options.className.split(/\s+/g));
55
+ }
56
+ this.setCustomClassName(column.options.header?.className);
57
+ fireEvent(this, 'afterRender', { column, filtering: true });
58
+ }
59
+ onKeyDown(e) {
60
+ this.column.filtering?.onKeyDown(e);
61
+ if (e.target === this.htmlElement) {
62
+ if (e.key === 'Enter') {
63
+ this.column.filtering?.filterSelect?.focus();
64
+ }
65
+ else {
66
+ super.onKeyDown(e);
67
+ }
68
+ }
69
+ else {
70
+ if (e.key === 'Escape') {
71
+ this.htmlElement.focus();
72
+ }
73
+ }
74
+ }
75
+ onClick(e) {
76
+ if (e.target === this.htmlElement) {
77
+ this.htmlElement.focus();
78
+ }
79
+ }
80
+ }
81
+ /* *
82
+ *
83
+ * Default Export
84
+ *
85
+ * */
86
+ export default FilterCell;
@@ -0,0 +1,19 @@
1
+ import type Table from '../../Table.js';
2
+ import type Column from '../../Column.js';
3
+ import FilterCell from './FilterCell.js';
4
+ import HeaderRow from '../../Header/HeaderRow.js';
5
+ /**
6
+ * Represents a special filtering row in the data grid header.
7
+ */
8
+ declare class FilterRow extends HeaderRow {
9
+ /**
10
+ * Constructs a filtering row in the Grid's header.
11
+ *
12
+ * @param viewport
13
+ * The Grid Table instance which the row belongs to.
14
+ */
15
+ constructor(viewport: Table);
16
+ createCell(column: Column): FilterCell;
17
+ renderContent(): void;
18
+ }
19
+ export default FilterRow;
@@ -0,0 +1,80 @@
1
+ /* *
2
+ *
3
+ * Grid FilteringRow class
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ *
14
+ * */
15
+ 'use strict';
16
+ import FilterCell from './FilterCell.js';
17
+ import Globals from '../../../Globals.js';
18
+ import HeaderRow from '../../Header/HeaderRow.js';
19
+ /* *
20
+ *
21
+ * Class
22
+ *
23
+ * */
24
+ /**
25
+ * Represents a special filtering row in the data grid header.
26
+ */
27
+ class FilterRow extends HeaderRow {
28
+ /* *
29
+ *
30
+ * Constructor
31
+ *
32
+ * */
33
+ /**
34
+ * Constructs a filtering row in the Grid's header.
35
+ *
36
+ * @param viewport
37
+ * The Grid Table instance which the row belongs to.
38
+ */
39
+ constructor(viewport) {
40
+ super(viewport, (viewport.header?.levels ?? 0) + 1 // Level (1-based)
41
+ );
42
+ }
43
+ /* *
44
+ *
45
+ * Methods
46
+ *
47
+ * */
48
+ createCell(column) {
49
+ return new FilterCell(this, column);
50
+ }
51
+ renderContent() {
52
+ const vp = this.viewport;
53
+ const enabledColumns = vp.grid.enabledColumns || [];
54
+ vp.theadElement?.appendChild(this.htmlElement);
55
+ this.htmlElement.classList.add(Globals.getClassName('headerRow'));
56
+ for (let i = 0, iEnd = vp.columns.length; i < iEnd; i++) {
57
+ const column = vp.columns[i];
58
+ if (enabledColumns?.indexOf(column.id) < 0) {
59
+ continue;
60
+ }
61
+ const cell = this.createCell(column);
62
+ cell.render();
63
+ if (column.options.filtering?.inline) {
64
+ column.filtering?.renderFilteringContent(cell.htmlElement);
65
+ }
66
+ }
67
+ const firstCell = this.cells[0];
68
+ if (firstCell.column?.index === 0) {
69
+ // Add class to disable left border on first column
70
+ this.cells[0].htmlElement.classList.add(Globals.getClassName('columnFirst'));
71
+ }
72
+ this.setLastCellClass();
73
+ }
74
+ }
75
+ /* *
76
+ *
77
+ * Default Export
78
+ *
79
+ * */
80
+ export default FilterRow;
@@ -0,0 +1,52 @@
1
+ import type Column from '../../Column';
2
+ /**
3
+ * String filtering conditions.
4
+ */
5
+ export type StringCondition = typeof stringConditions[number];
6
+ /**
7
+ * Number filtering conditions.
8
+ */
9
+ export type NumberCondition = typeof numberConditions[number];
10
+ /**
11
+ * DateTime filtering conditions.
12
+ */
13
+ export type DateTimeCondition = typeof dateTimeConditions[number];
14
+ /**
15
+ * Boolean filtering conditions.
16
+ */
17
+ export type BooleanCondition = typeof booleanConditions[number];
18
+ /**
19
+ * The event object for the 'afterRender' event.
20
+ */
21
+ export type AfterRenderEvent = Event & {
22
+ column: Column;
23
+ filtering: boolean;
24
+ };
25
+ /**
26
+ * Combined filtering conditions.
27
+ */
28
+ export type Condition = StringCondition | NumberCondition | DateTimeCondition | BooleanCondition;
29
+ /**
30
+ * String conditions values for the condition select options.
31
+ */
32
+ export declare const stringConditions: readonly ["contains", "doesNotContain", "equals", "doesNotEqual", "beginsWith", "endsWith", "empty", "notEmpty"];
33
+ /**
34
+ * Number conditions values for the condition select options.
35
+ */
36
+ export declare const numberConditions: readonly ["equals", "doesNotEqual", "greaterThan", "greaterThanOrEqualTo", "lessThan", "lessThanOrEqualTo", "empty", "notEmpty"];
37
+ /**
38
+ * DateTime conditions values for the condition select options.
39
+ */
40
+ export declare const dateTimeConditions: readonly ["equals", "doesNotEqual", "before", "after", "empty", "notEmpty"];
41
+ /**
42
+ * Boolean conditions values for the condition select options.
43
+ */
44
+ export declare const booleanConditions: readonly ["all", "true", "false", "empty"];
45
+ /**
46
+ * Corresponding values for the boolean select options.
47
+ */
48
+ export declare const booleanValueMap: Record<BooleanCondition, 'all' | boolean | null>;
49
+ /**
50
+ * Conditions map for the condition select options.
51
+ */
52
+ export declare const conditionsMap: Record<Column.DataType, readonly Condition[]>;
@@ -0,0 +1,81 @@
1
+ /* *
2
+ *
3
+ * Grid Filtering Types and Constants
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
+ * - Kamil Kubik
15
+ *
16
+ * */
17
+ 'use strict';
18
+ /**
19
+ * String conditions values for the condition select options.
20
+ */
21
+ export const stringConditions = [
22
+ 'contains',
23
+ 'doesNotContain',
24
+ 'equals',
25
+ 'doesNotEqual',
26
+ 'beginsWith',
27
+ 'endsWith',
28
+ 'empty',
29
+ 'notEmpty'
30
+ ];
31
+ /**
32
+ * Number conditions values for the condition select options.
33
+ */
34
+ export const numberConditions = [
35
+ 'equals',
36
+ 'doesNotEqual',
37
+ 'greaterThan',
38
+ 'greaterThanOrEqualTo',
39
+ 'lessThan',
40
+ 'lessThanOrEqualTo',
41
+ 'empty',
42
+ 'notEmpty'
43
+ ];
44
+ /**
45
+ * DateTime conditions values for the condition select options.
46
+ */
47
+ export const dateTimeConditions = [
48
+ 'equals',
49
+ 'doesNotEqual',
50
+ 'before',
51
+ 'after',
52
+ 'empty',
53
+ 'notEmpty'
54
+ ];
55
+ /**
56
+ * Boolean conditions values for the condition select options.
57
+ */
58
+ export const booleanConditions = [
59
+ 'all',
60
+ 'true',
61
+ 'false',
62
+ 'empty'
63
+ ];
64
+ /**
65
+ * Corresponding values for the boolean select options.
66
+ */
67
+ export const booleanValueMap = {
68
+ 'all': 'all',
69
+ 'true': true,
70
+ 'false': false,
71
+ 'empty': null
72
+ };
73
+ /**
74
+ * Conditions map for the condition select options.
75
+ */
76
+ export const conditionsMap = {
77
+ string: stringConditions,
78
+ number: numberConditions,
79
+ datetime: dateTimeConditions,
80
+ 'boolean': booleanConditions
81
+ };