@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.
- package/README.md +35 -0
- package/css/grid-pro.css +1756 -0
- package/es-modules/Accessibility/A11yI18n.d.ts +95 -0
- package/es-modules/Accessibility/A11yI18n.js +290 -0
- package/es-modules/Accessibility/Accessibility.d.ts +116 -0
- package/es-modules/Accessibility/Accessibility.js +402 -0
- package/es-modules/Accessibility/AccessibilityComponent.d.ts +97 -0
- package/es-modules/Accessibility/AccessibilityComponent.js +147 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.d.ts +43 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
- package/es-modules/Accessibility/Components/ContainerComponent.d.ts +48 -0
- package/es-modules/Accessibility/Components/ContainerComponent.js +142 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.d.ts +144 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +555 -0
- package/es-modules/Accessibility/Components/LegendComponent.d.ts +124 -0
- package/es-modules/Accessibility/Components/LegendComponent.js +474 -0
- package/es-modules/Accessibility/Components/MenuComponent.d.ts +93 -0
- package/es-modules/Accessibility/Components/MenuComponent.js +430 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.d.ts +57 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.js +235 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.d.ts +126 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +473 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.d.ts +18 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +234 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.d.ts +87 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +309 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.d.ts +53 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +130 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.d.ts +28 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +415 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.d.ts +114 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +721 -0
- package/es-modules/Accessibility/Components/ZoomComponent.d.ts +96 -0
- package/es-modules/Accessibility/Components/ZoomComponent.js +314 -0
- package/es-modules/Accessibility/FocusBorder.d.ts +40 -0
- package/es-modules/Accessibility/FocusBorder.js +301 -0
- package/es-modules/Accessibility/HighContrastMode.d.ts +35 -0
- package/es-modules/Accessibility/HighContrastMode.js +100 -0
- package/es-modules/Accessibility/HighContrastTheme.d.ts +11 -0
- package/es-modules/Accessibility/HighContrastTheme.js +212 -0
- package/es-modules/Accessibility/KeyboardNavigation.d.ts +133 -0
- package/es-modules/Accessibility/KeyboardNavigation.js +450 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.d.ts +48 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +126 -0
- package/es-modules/Accessibility/Options/A11yDefaults.d.ts +68 -0
- package/es-modules/Accessibility/Options/A11yDefaults.js +971 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +22 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +265 -0
- package/es-modules/Accessibility/Options/LangDefaults.d.ts +4 -0
- package/es-modules/Accessibility/Options/LangDefaults.js +440 -0
- package/es-modules/Accessibility/ProxyElement.d.ts +78 -0
- package/es-modules/Accessibility/ProxyElement.js +223 -0
- package/es-modules/Accessibility/ProxyProvider.d.ts +90 -0
- package/es-modules/Accessibility/ProxyProvider.js +315 -0
- package/es-modules/Accessibility/Utils/Announcer.d.ts +26 -0
- package/es-modules/Accessibility/Utils/Announcer.js +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.d.ts +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.js +298 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.d.ts +20 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +69 -0
- package/es-modules/Accessibility/Utils/EventProvider.d.ts +26 -0
- package/es-modules/Accessibility/Utils/EventProvider.js +65 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.d.ts +108 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +319 -0
- package/es-modules/Core/Animation/AnimationUtilities.d.ts +107 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +200 -0
- package/es-modules/Core/Animation/Fx.d.ts +130 -0
- package/es-modules/Core/Animation/Fx.js +388 -0
- package/es-modules/Core/Chart/Chart.d.ts +1009 -0
- package/es-modules/Core/Chart/Chart.js +3008 -0
- package/es-modules/Core/Chart/Chart3D.d.ts +276 -0
- package/es-modules/Core/Chart/Chart3D.js +1686 -0
- package/es-modules/Core/Chart/ChartDefaults.d.ts +8 -0
- package/es-modules/Core/Chart/ChartDefaults.js +1304 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +55 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.js +90 -0
- package/es-modules/Core/Chart/GanttChart.d.ts +74 -0
- package/es-modules/Core/Chart/GanttChart.js +189 -0
- package/es-modules/Core/Chart/MapChart.d.ts +132 -0
- package/es-modules/Core/Chart/MapChart.js +232 -0
- package/es-modules/Core/Chart/StockChart.d.ts +117 -0
- package/es-modules/Core/Chart/StockChart.js +641 -0
- package/es-modules/Core/Color/Color.d.ts +112 -0
- package/es-modules/Core/Color/Color.js +418 -0
- package/es-modules/Core/Color/Palettes.d.ts +84 -0
- package/es-modules/Core/Color/Palettes.js +23 -0
- package/es-modules/Core/Defaults.d.ts +42 -0
- package/es-modules/Core/Defaults.js +2977 -0
- package/es-modules/Core/Foundation.d.ts +19 -0
- package/es-modules/Core/Foundation.js +63 -0
- package/es-modules/Core/Geometry/CircleUtilities.d.ts +189 -0
- package/es-modules/Core/Geometry/CircleUtilities.js +388 -0
- package/es-modules/Core/Geometry/GeometryUtilities.d.ts +48 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +105 -0
- package/es-modules/Core/Geometry/PolygonClip.d.ts +19 -0
- package/es-modules/Core/Geometry/PolygonClip.js +96 -0
- package/es-modules/Core/Globals.d.ts +110 -0
- package/es-modules/Core/Globals.js +127 -0
- package/es-modules/Core/HttpUtilities.d.ts +61 -0
- package/es-modules/Core/HttpUtilities.js +214 -0
- package/es-modules/Core/MSPointer.d.ts +74 -0
- package/es-modules/Core/MSPointer.js +218 -0
- package/es-modules/Core/Math3D.d.ts +117 -0
- package/es-modules/Core/Math3D.js +250 -0
- package/es-modules/Core/Pointer.d.ts +590 -0
- package/es-modules/Core/Pointer.js +1631 -0
- package/es-modules/Core/Renderer/HTML/AST.d.ts +163 -0
- package/es-modules/Core/Renderer/HTML/AST.js +562 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +76 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +471 -0
- package/es-modules/Core/Renderer/RendererRegistry.d.ts +29 -0
- package/es-modules/Core/Renderer/RendererRegistry.js +76 -0
- package/es-modules/Core/Renderer/RendererUtilities.d.ts +26 -0
- package/es-modules/Core/Renderer/RendererUtilities.js +172 -0
- package/es-modules/Core/Responsive.d.ts +55 -0
- package/es-modules/Core/Responsive.js +260 -0
- package/es-modules/Core/Templating.d.ts +125 -0
- package/es-modules/Core/Templating.js +428 -0
- package/es-modules/Core/Time.d.ts +69 -0
- package/es-modules/Core/Time.js +172 -0
- package/es-modules/Core/Tooltip.d.ts +297 -0
- package/es-modules/Core/Tooltip.js +1377 -0
- package/es-modules/Core/Utilities.d.ts +770 -0
- package/es-modules/Core/Utilities.js +1989 -0
- package/es-modules/Data/ColumnUtils.d.ts +87 -0
- package/es-modules/Data/ColumnUtils.js +140 -0
- package/es-modules/Data/Connectors/CSVConnector.d.ts +63 -0
- package/es-modules/Data/Connectors/CSVConnector.js +149 -0
- package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +149 -0
- package/es-modules/Data/Connectors/DataConnector.d.ts +204 -0
- package/es-modules/Data/Connectors/DataConnector.js +345 -0
- package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +87 -0
- package/es-modules/Data/Connectors/DataConnectorType.d.ts +45 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +65 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +226 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +167 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +77 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.js +119 -0
- package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +49 -0
- package/es-modules/Data/Connectors/JSONConnector.d.ts +64 -0
- package/es-modules/Data/Connectors/JSONConnector.js +156 -0
- package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +185 -0
- package/es-modules/Data/Converters/CSVConverter.d.ts +64 -0
- package/es-modules/Data/Converters/CSVConverter.js +374 -0
- package/es-modules/Data/Converters/CSVConverterOptions.d.ts +53 -0
- package/es-modules/Data/Converters/DataConverter.d.ts +168 -0
- package/es-modules/Data/Converters/DataConverter.js +387 -0
- package/es-modules/Data/Converters/DataConverterType.d.ts +40 -0
- package/es-modules/Data/Converters/DataConverterUtils.d.ts +82 -0
- package/es-modules/Data/Converters/DataConverterUtils.js +216 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +46 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +135 -0
- package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +52 -0
- package/es-modules/Data/Converters/HTMLTableConverter.d.ts +72 -0
- package/es-modules/Data/Converters/HTMLTableConverter.js +362 -0
- package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +51 -0
- package/es-modules/Data/Converters/JSONConverter.d.ts +99 -0
- package/es-modules/Data/Converters/JSONConverter.js +239 -0
- package/es-modules/Data/Converters/JSONConverterOptions.d.ts +52 -0
- package/es-modules/Data/DataCursor.d.ts +176 -0
- package/es-modules/Data/DataCursor.js +379 -0
- package/es-modules/Data/DataEvent.d.ts +81 -0
- package/es-modules/Data/DataEvent.js +14 -0
- package/es-modules/Data/DataPool.d.ts +130 -0
- package/es-modules/Data/DataPool.js +257 -0
- package/es-modules/Data/DataPoolOptions.d.ts +66 -0
- package/es-modules/Data/DataTable.d.ts +563 -0
- package/es-modules/Data/DataTable.js +930 -0
- package/es-modules/Data/DataTableCore.d.ts +165 -0
- package/es-modules/Data/DataTableCore.js +316 -0
- package/es-modules/Data/DataTableOptions.d.ts +25 -0
- package/es-modules/Data/DataTableOptions.js +15 -0
- package/es-modules/Data/Formula/Formula.d.ts +21 -0
- package/es-modules/Data/Formula/Formula.js +54 -0
- package/es-modules/Data/Formula/FormulaParser.d.ts +31 -0
- package/es-modules/Data/Formula/FormulaParser.js +488 -0
- package/es-modules/Data/Formula/FormulaProcessor.d.ts +155 -0
- package/es-modules/Data/Formula/FormulaProcessor.js +529 -0
- package/es-modules/Data/Formula/FormulaTypes.d.ts +138 -0
- package/es-modules/Data/Formula/FormulaTypes.js +135 -0
- package/es-modules/Data/Formula/Functions/ABS.d.ts +19 -0
- package/es-modules/Data/Formula/Functions/ABS.js +67 -0
- package/es-modules/Data/Formula/Functions/AND.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AND.js +59 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.js +74 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.js +90 -0
- package/es-modules/Data/Formula/Functions/COUNT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNT.js +65 -0
- package/es-modules/Data/Formula/Functions/COUNTA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNTA.js +71 -0
- package/es-modules/Data/Formula/Functions/IF.d.ts +21 -0
- package/es-modules/Data/Formula/Functions/IF.js +54 -0
- package/es-modules/Data/Formula/Functions/ISNA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/ISNA.js +52 -0
- package/es-modules/Data/Formula/Functions/MAX.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MAX.js +69 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.js +78 -0
- package/es-modules/Data/Formula/Functions/MIN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MIN.js +69 -0
- package/es-modules/Data/Formula/Functions/MOD.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MOD.js +63 -0
- package/es-modules/Data/Formula/Functions/MODE.d.ts +41 -0
- package/es-modules/Data/Formula/Functions/MODE.js +149 -0
- package/es-modules/Data/Formula/Functions/NOT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/NOT.js +60 -0
- package/es-modules/Data/Formula/Functions/OR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/OR.js +62 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.js +68 -0
- package/es-modules/Data/Formula/Functions/SUM.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/SUM.js +65 -0
- package/es-modules/Data/Formula/Functions/XOR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/XOR.js +81 -0
- package/es-modules/Data/Modifiers/ChainModifier.d.ts +128 -0
- package/es-modules/Data/Modifiers/ChainModifier.js +231 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.d.ts +20 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/DataModifier.d.ts +117 -0
- package/es-modules/Data/Modifiers/DataModifier.js +202 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.d.ts +28 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierType.d.ts +44 -0
- package/es-modules/Data/Modifiers/FilterModifier.d.ts +53 -0
- package/es-modules/Data/Modifiers/FilterModifier.js +172 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +110 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/InvertModifier.d.ts +48 -0
- package/es-modules/Data/Modifiers/InvertModifier.js +116 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/MathModifier.d.ts +68 -0
- package/es-modules/Data/Modifiers/MathModifier.js +165 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.d.ts +50 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/RangeModifier.d.ts +46 -0
- package/es-modules/Data/Modifiers/RangeModifier.js +96 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.d.ts +22 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/SortModifier.d.ts +54 -0
- package/es-modules/Data/Modifiers/SortModifier.js +144 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +44 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.js +14 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +148 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.js +17 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +115 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.js +231 -0
- package/es-modules/Grid/Core/Credits.d.ts +57 -0
- package/es-modules/Grid/Core/Credits.js +125 -0
- package/es-modules/Grid/Core/Defaults.d.ts +20 -0
- package/es-modules/Grid/Core/Defaults.js +148 -0
- package/es-modules/Grid/Core/Globals.d.ts +103 -0
- package/es-modules/Grid/Core/Globals.js +134 -0
- package/es-modules/Grid/Core/Grid.d.ts +295 -0
- package/es-modules/Grid/Core/Grid.js +730 -0
- package/es-modules/Grid/Core/GridUtils.d.ts +110 -0
- package/es-modules/Grid/Core/GridUtils.js +191 -0
- package/es-modules/Grid/Core/Options.d.ts +599 -0
- package/es-modules/Grid/Core/Options.js +16 -0
- package/es-modules/Grid/Core/Pagination/Icons.d.ts +7 -0
- package/es-modules/Grid/Core/Pagination/Icons.js +7 -0
- package/es-modules/Grid/Core/Pagination/Pagination.d.ts +278 -0
- package/es-modules/Grid/Core/Pagination/Pagination.js +842 -0
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +228 -0
- package/es-modules/Grid/Core/Querying/FilteringController.d.ts +66 -0
- package/es-modules/Grid/Core/Querying/FilteringController.js +256 -0
- package/es-modules/Grid/Core/Querying/PaginationController.d.ts +50 -0
- package/es-modules/Grid/Core/Querying/PaginationController.js +101 -0
- package/es-modules/Grid/Core/Querying/QueryingController.d.ts +58 -0
- package/es-modules/Grid/Core/Querying/QueryingController.js +127 -0
- package/es-modules/Grid/Core/Querying/SortingController.d.ts +67 -0
- package/es-modules/Grid/Core/Querying/SortingController.js +136 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +114 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +351 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +14 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +86 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +19 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +80 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +52 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +81 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +56 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +170 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.d.ts +55 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +182 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +87 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +346 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +88 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.js +231 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +79 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.js +177 -0
- package/es-modules/Grid/Core/Table/Cell.d.ts +92 -0
- package/es-modules/Grid/Core/Table/Cell.js +223 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.d.ts +30 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.js +40 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +19 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +98 -0
- package/es-modules/Grid/Core/Table/Column.d.ts +136 -0
- package/es-modules/Grid/Core/Table/Column.js +230 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +62 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +32 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +68 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +53 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +63 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +92 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +194 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +68 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +187 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +29 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +77 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.d.ts +13 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +79 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +71 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +66 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +25 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +65 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +80 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +11 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +70 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +225 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +53 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.js +182 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +65 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.js +159 -0
- package/es-modules/Grid/Core/Table/Row.d.ts +76 -0
- package/es-modules/Grid/Core/Table/Row.js +131 -0
- package/es-modules/Grid/Core/Table/Table.d.ts +181 -0
- package/es-modules/Grid/Core/Table/Table.js +399 -0
- package/es-modules/Grid/Core/UI/Button.d.ts +31 -0
- package/es-modules/Grid/Core/UI/Button.js +16 -0
- package/es-modules/Grid/Core/UI/ContextMenu.d.ts +38 -0
- package/es-modules/Grid/Core/UI/ContextMenu.js +132 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +126 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +183 -0
- package/es-modules/Grid/Core/UI/Popup.d.ts +149 -0
- package/es-modules/Grid/Core/UI/Popup.js +271 -0
- package/es-modules/Grid/Core/UI/SvgIcons.d.ts +53 -0
- package/es-modules/Grid/Core/UI/SvgIcons.js +158 -0
- package/es-modules/Grid/Core/UI/Toolbar.d.ts +16 -0
- package/es-modules/Grid/Core/UI/Toolbar.js +16 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +135 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.js +191 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +112 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +80 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +211 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +123 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +198 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.d.ts +23 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +45 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +58 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +48 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +79 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +30 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +122 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +39 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +66 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +145 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +38 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +158 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +173 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +28 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +157 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +168 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +13 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +26 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +16 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +52 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +66 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +45 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +89 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +54 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +43 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +29 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +118 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +270 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +32 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +63 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +35 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.js +112 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +28 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +61 -0
- package/es-modules/Grid/Pro/Export/Exporting.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/Exporting.js +202 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +55 -0
- package/es-modules/Grid/Pro/GridEvents.d.ts +119 -0
- package/es-modules/Grid/Pro/GridEvents.js +107 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +75 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +76 -0
- package/es-modules/Grid/Pro/highcharts.d.ts +7 -0
- package/es-modules/Grid/index.d.ts +5 -0
- package/es-modules/Grid/index.js +19 -0
- package/es-modules/Shared/BaseForm.d.ts +49 -0
- package/es-modules/Shared/BaseForm.js +126 -0
- package/es-modules/Shared/DownloadURL.d.ts +85 -0
- package/es-modules/Shared/DownloadURL.js +198 -0
- package/es-modules/Shared/LangOptionsCore.d.ts +27 -0
- package/es-modules/Shared/TimeBase.d.ts +353 -0
- package/es-modules/Shared/TimeBase.js +830 -0
- package/es-modules/Shared/Types.d.ts +48 -0
- package/es-modules/masters/grid-pro.src.d.ts +99 -0
- package/es-modules/masters/grid-pro.src.js +129 -0
- package/grid-pro.d.ts +50 -0
- package/grid-pro.js +12 -0
- package/grid-pro.js.map +1 -0
- package/grid-pro.src.d.ts +50 -0
- package/grid-pro.src.js +26623 -0
- package/package.json +21 -0
|
@@ -0,0 +1,721 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Handle keyboard navigation for series.
|
|
6
|
+
*
|
|
7
|
+
* License: www.highcharts.com/license
|
|
8
|
+
*
|
|
9
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10
|
+
*
|
|
11
|
+
* */
|
|
12
|
+
'use strict';
|
|
13
|
+
import Point from '../../../Core/Series/Point.js';
|
|
14
|
+
import Series from '../../../Core/Series/Series.js';
|
|
15
|
+
import SeriesRegistry from '../../../Core/Series/SeriesRegistry.js';
|
|
16
|
+
const { seriesTypes } = SeriesRegistry;
|
|
17
|
+
import H from '../../../Core/Globals.js';
|
|
18
|
+
const { doc } = H;
|
|
19
|
+
import U from '../../../Core/Utilities.js';
|
|
20
|
+
const { defined, fireEvent } = U;
|
|
21
|
+
import KeyboardNavigationHandler from '../../KeyboardNavigationHandler.js';
|
|
22
|
+
import EventProvider from '../../Utils/EventProvider.js';
|
|
23
|
+
import ChartUtilities from '../../Utils/ChartUtilities.js';
|
|
24
|
+
const { getPointFromXY, getSeriesFromName, scrollAxisToPoint } = ChartUtilities;
|
|
25
|
+
/* *
|
|
26
|
+
*
|
|
27
|
+
* Functions
|
|
28
|
+
*
|
|
29
|
+
* */
|
|
30
|
+
/* eslint-disable valid-jsdoc */
|
|
31
|
+
/**
|
|
32
|
+
* Get the index of a point in a series. This is needed when using e.g. data
|
|
33
|
+
* grouping.
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
* @function getPointIndex
|
|
37
|
+
* @param {Highcharts.AccessibilityPoint} point
|
|
38
|
+
* The point to find index of.
|
|
39
|
+
* @return {number|undefined}
|
|
40
|
+
* The index in the series.points array of the point.
|
|
41
|
+
*/
|
|
42
|
+
function getPointIndex(point) {
|
|
43
|
+
const index = point.index, points = point.series.points;
|
|
44
|
+
let i = points.length;
|
|
45
|
+
if (points[index] !== point) {
|
|
46
|
+
while (i--) {
|
|
47
|
+
if (points[i] === point) {
|
|
48
|
+
return i;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return index;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Determine if series navigation should be skipped
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
function isSkipSeries(series) {
|
|
61
|
+
const a11yOptions = series.chart.options.accessibility, seriesNavOptions = a11yOptions.keyboardNavigation.seriesNavigation, seriesA11yOptions = series.options.accessibility || {}, seriesKbdNavOptions = seriesA11yOptions.keyboardNavigation;
|
|
62
|
+
return seriesKbdNavOptions && seriesKbdNavOptions.enabled === false ||
|
|
63
|
+
seriesA11yOptions.enabled === false ||
|
|
64
|
+
series.options.enableMouseTracking === false || // #8440
|
|
65
|
+
!series.visible ||
|
|
66
|
+
// Skip all points in a series where pointNavigationEnabledThreshold is
|
|
67
|
+
// reached
|
|
68
|
+
(seriesNavOptions.pointNavigationEnabledThreshold &&
|
|
69
|
+
+seriesNavOptions.pointNavigationEnabledThreshold <=
|
|
70
|
+
series.points.length);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Determine if navigation for a point should be skipped
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
function isSkipPoint(point) {
|
|
77
|
+
const series = point.series, nullInteraction = series.options.nullInteraction, pointOptions = point.options, pointA11yOptions = pointOptions.accessibility, a11yOptions = series.chart.options.accessibility, pointA11yDisabled = pointA11yOptions?.enabled === false;
|
|
78
|
+
return a11yOptions
|
|
79
|
+
.keyboardNavigation
|
|
80
|
+
.seriesNavigation
|
|
81
|
+
.skipNullPoints ?? (!(!point.isNull || nullInteraction) &&
|
|
82
|
+
point.visible === false ||
|
|
83
|
+
point.isInside === false ||
|
|
84
|
+
pointA11yDisabled ||
|
|
85
|
+
isSkipSeries(series));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get the first point that is not a skip point in this series.
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
function getFirstValidPointInSeries(series) {
|
|
92
|
+
const points = series.points || [], len = points.length;
|
|
93
|
+
for (let i = 0; i < len; ++i) {
|
|
94
|
+
if (!isSkipPoint(points[i])) {
|
|
95
|
+
return points[i];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the first point that is not a skip point in this chart.
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
function getFirstValidPointInChart(chart) {
|
|
105
|
+
const series = chart.series || [], len = series.length;
|
|
106
|
+
for (let i = 0; i < len; ++i) {
|
|
107
|
+
if (!isSkipSeries(series[i])) {
|
|
108
|
+
const point = getFirstValidPointInSeries(series[i]);
|
|
109
|
+
if (point) {
|
|
110
|
+
return point;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
function highlightLastValidPointInChart(chart) {
|
|
120
|
+
const numSeries = chart.series.length;
|
|
121
|
+
let i = numSeries, res = false;
|
|
122
|
+
while (i--) {
|
|
123
|
+
chart.highlightedPoint = chart.series[i].points[chart.series[i].points.length - 1];
|
|
124
|
+
// Highlight first valid point in the series will also
|
|
125
|
+
// look backwards. It always starts from currently
|
|
126
|
+
// highlighted point.
|
|
127
|
+
res = chart.series[i].highlightNextValidPoint();
|
|
128
|
+
if (res) {
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return res;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* After drilling down/up, we need to set focus to the first point for
|
|
136
|
+
* screen readers and keyboard nav.
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
function updateChartFocusAfterDrilling(chart) {
|
|
140
|
+
const point = getFirstValidPointInChart(chart);
|
|
141
|
+
if (point) {
|
|
142
|
+
point.highlight(false); // Do not visually highlight
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Highlight the first point in chart that is not a skip point
|
|
147
|
+
* @private
|
|
148
|
+
*/
|
|
149
|
+
function highlightFirstValidPointInChart(chart) {
|
|
150
|
+
delete chart.highlightedPoint;
|
|
151
|
+
const point = getFirstValidPointInChart(chart);
|
|
152
|
+
return point ? point.highlight() : false;
|
|
153
|
+
}
|
|
154
|
+
/* *
|
|
155
|
+
*
|
|
156
|
+
* Class
|
|
157
|
+
*
|
|
158
|
+
* */
|
|
159
|
+
/**
|
|
160
|
+
* @private
|
|
161
|
+
* @class
|
|
162
|
+
* @name Highcharts.SeriesKeyboardNavigation
|
|
163
|
+
*/
|
|
164
|
+
class SeriesKeyboardNavigation {
|
|
165
|
+
/* *
|
|
166
|
+
*
|
|
167
|
+
* Constructor
|
|
168
|
+
*
|
|
169
|
+
* */
|
|
170
|
+
constructor(chart, keyCodes) {
|
|
171
|
+
this.keyCodes = keyCodes;
|
|
172
|
+
this.chart = chart;
|
|
173
|
+
}
|
|
174
|
+
/* *
|
|
175
|
+
*
|
|
176
|
+
* Functions
|
|
177
|
+
*
|
|
178
|
+
* */
|
|
179
|
+
/* eslint-disable valid-jsdoc */
|
|
180
|
+
/**
|
|
181
|
+
* Init the keyboard navigation
|
|
182
|
+
*/
|
|
183
|
+
init() {
|
|
184
|
+
const keyboardNavigation = this, chart = this.chart, e = this.eventProvider = new EventProvider();
|
|
185
|
+
e.addEvent(Series, 'destroy', function () {
|
|
186
|
+
return keyboardNavigation.onSeriesDestroy(this);
|
|
187
|
+
});
|
|
188
|
+
e.addEvent(chart, 'afterApplyDrilldown', function () {
|
|
189
|
+
updateChartFocusAfterDrilling(this);
|
|
190
|
+
});
|
|
191
|
+
e.addEvent(chart, 'drilldown', function (e) {
|
|
192
|
+
const point = e.point, series = point.series;
|
|
193
|
+
keyboardNavigation.lastDrilledDownPoint = {
|
|
194
|
+
x: point.x,
|
|
195
|
+
y: point.y,
|
|
196
|
+
seriesName: series ? series.name : ''
|
|
197
|
+
};
|
|
198
|
+
});
|
|
199
|
+
e.addEvent(chart, 'drillupall', function () {
|
|
200
|
+
setTimeout(function () {
|
|
201
|
+
keyboardNavigation.onDrillupAll();
|
|
202
|
+
}, 10);
|
|
203
|
+
});
|
|
204
|
+
// Heatmaps et al. alter z-index in setState, causing elements
|
|
205
|
+
// to lose focus
|
|
206
|
+
e.addEvent(Point, 'afterSetState', function () {
|
|
207
|
+
const point = this;
|
|
208
|
+
const pointEl = point.graphic && point.graphic.element;
|
|
209
|
+
const focusedElement = doc.activeElement;
|
|
210
|
+
// VO brings focus with it to container, causing series nav to run.
|
|
211
|
+
// If then navigating with virtual cursor, it is possible to leave
|
|
212
|
+
// keyboard nav module state on the data points and still activate
|
|
213
|
+
// proxy buttons.
|
|
214
|
+
const focusedElClassName = (focusedElement && focusedElement.getAttribute('class'));
|
|
215
|
+
const isProxyFocused = focusedElClassName &&
|
|
216
|
+
focusedElClassName.indexOf('highcharts-a11y-proxy-element') > -1;
|
|
217
|
+
if (chart.highlightedPoint === point &&
|
|
218
|
+
focusedElement !== pointEl &&
|
|
219
|
+
!isProxyFocused &&
|
|
220
|
+
pointEl &&
|
|
221
|
+
pointEl.focus) {
|
|
222
|
+
pointEl.focus();
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* After drillup we want to find the point that was drilled down to and
|
|
228
|
+
* highlight it.
|
|
229
|
+
* @private
|
|
230
|
+
*/
|
|
231
|
+
onDrillupAll() {
|
|
232
|
+
const last = this.lastDrilledDownPoint, chart = this.chart, series = last && getSeriesFromName(chart, last.seriesName);
|
|
233
|
+
let point;
|
|
234
|
+
if (last && series && defined(last.x) && defined(last.y)) {
|
|
235
|
+
point = getPointFromXY(series, last.x, last.y);
|
|
236
|
+
}
|
|
237
|
+
point = point || getFirstValidPointInChart(chart);
|
|
238
|
+
// Container focus can be lost on drillup due to deleted elements.
|
|
239
|
+
if (chart.container) {
|
|
240
|
+
chart.container.focus();
|
|
241
|
+
}
|
|
242
|
+
if (point && point.highlight) {
|
|
243
|
+
point.highlight(false); // Do not visually highlight
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* @private
|
|
248
|
+
*/
|
|
249
|
+
getKeyboardNavigationHandler() {
|
|
250
|
+
const keyboardNavigation = this, keys = this.keyCodes, chart = this.chart, inverted = chart.inverted;
|
|
251
|
+
return new KeyboardNavigationHandler(chart, {
|
|
252
|
+
keyCodeMap: [
|
|
253
|
+
[
|
|
254
|
+
inverted ? [keys.up, keys.down] : [keys.left, keys.right],
|
|
255
|
+
function (keyCode) {
|
|
256
|
+
return keyboardNavigation.onKbdSideways(this, keyCode);
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
[
|
|
260
|
+
inverted ? [keys.left, keys.right] : [keys.up, keys.down],
|
|
261
|
+
function (keyCode) {
|
|
262
|
+
return keyboardNavigation.onKbdVertical(this, keyCode);
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
[
|
|
266
|
+
[keys.enter, keys.space],
|
|
267
|
+
function (keyCode, event) {
|
|
268
|
+
const point = chart.highlightedPoint;
|
|
269
|
+
if (point) {
|
|
270
|
+
const { plotLeft, plotTop } = this.chart, { plotX = 0, plotY = 0 } = point;
|
|
271
|
+
event = {
|
|
272
|
+
...event,
|
|
273
|
+
chartX: plotLeft + plotX,
|
|
274
|
+
chartY: plotTop + plotY,
|
|
275
|
+
point: point,
|
|
276
|
+
target: point.graphic?.element || event.target
|
|
277
|
+
};
|
|
278
|
+
fireEvent(point.series, 'click', event);
|
|
279
|
+
point.firePointEvent('click', event);
|
|
280
|
+
}
|
|
281
|
+
return this.response.success;
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
[
|
|
285
|
+
[keys.home],
|
|
286
|
+
function () {
|
|
287
|
+
highlightFirstValidPointInChart(chart);
|
|
288
|
+
return this.response.success;
|
|
289
|
+
}
|
|
290
|
+
],
|
|
291
|
+
[
|
|
292
|
+
[keys.end],
|
|
293
|
+
function () {
|
|
294
|
+
highlightLastValidPointInChart(chart);
|
|
295
|
+
return this.response.success;
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
[
|
|
299
|
+
[keys.pageDown, keys.pageUp],
|
|
300
|
+
function (keyCode) {
|
|
301
|
+
chart.highlightAdjacentSeries(keyCode === keys.pageDown);
|
|
302
|
+
return this.response.success;
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
],
|
|
306
|
+
init: function () {
|
|
307
|
+
return keyboardNavigation.onHandlerInit(this);
|
|
308
|
+
},
|
|
309
|
+
validate: function () {
|
|
310
|
+
return !!getFirstValidPointInChart(chart);
|
|
311
|
+
},
|
|
312
|
+
terminate: function () {
|
|
313
|
+
return keyboardNavigation.onHandlerTerminate();
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* @private
|
|
319
|
+
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
320
|
+
* @param {number} keyCode
|
|
321
|
+
* @return {number}
|
|
322
|
+
* response
|
|
323
|
+
*/
|
|
324
|
+
onKbdSideways(handler, keyCode) {
|
|
325
|
+
const keys = this.keyCodes, isNext = keyCode === keys.right || keyCode === keys.down;
|
|
326
|
+
return this.attemptHighlightAdjacentPoint(handler, isNext);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* When keyboard navigation inits.
|
|
330
|
+
* @private
|
|
331
|
+
* @param {Highcharts.KeyboardNavigationHandler} handler The handler object
|
|
332
|
+
* @return {number}
|
|
333
|
+
* response
|
|
334
|
+
*/
|
|
335
|
+
onHandlerInit(handler) {
|
|
336
|
+
const chart = this.chart, kbdNavOptions = chart.options.accessibility.keyboardNavigation;
|
|
337
|
+
if (kbdNavOptions.seriesNavigation.rememberPointFocus &&
|
|
338
|
+
chart.highlightedPoint) {
|
|
339
|
+
chart.highlightedPoint.highlight();
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
highlightFirstValidPointInChart(chart);
|
|
343
|
+
}
|
|
344
|
+
return handler.response.success;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* @private
|
|
348
|
+
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
349
|
+
* @param {number} keyCode
|
|
350
|
+
* @return {number}
|
|
351
|
+
* response
|
|
352
|
+
*/
|
|
353
|
+
onKbdVertical(handler, keyCode) {
|
|
354
|
+
const chart = this.chart, keys = this.keyCodes, isNext = keyCode === keys.down || keyCode === keys.right, navOptions = chart.options.accessibility.keyboardNavigation
|
|
355
|
+
.seriesNavigation;
|
|
356
|
+
// Handle serialized mode, act like left/right
|
|
357
|
+
if (navOptions.mode && navOptions.mode === 'serialize') {
|
|
358
|
+
return this.attemptHighlightAdjacentPoint(handler, isNext);
|
|
359
|
+
}
|
|
360
|
+
// Normal mode, move between series
|
|
361
|
+
const highlightMethod = (chart.highlightedPoint &&
|
|
362
|
+
chart.highlightedPoint.series.keyboardMoveVertical) ?
|
|
363
|
+
'highlightAdjacentPointVertical' :
|
|
364
|
+
'highlightAdjacentSeries';
|
|
365
|
+
chart[highlightMethod](isNext);
|
|
366
|
+
return handler.response.success;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* @private
|
|
370
|
+
*/
|
|
371
|
+
onHandlerTerminate() {
|
|
372
|
+
const chart = this.chart, kbdNavOptions = chart.options.accessibility.keyboardNavigation;
|
|
373
|
+
if (chart.tooltip) {
|
|
374
|
+
chart.tooltip.hide(0);
|
|
375
|
+
}
|
|
376
|
+
const hoverSeries = (chart.highlightedPoint && chart.highlightedPoint.series);
|
|
377
|
+
if (hoverSeries && hoverSeries.onMouseOut) {
|
|
378
|
+
hoverSeries.onMouseOut();
|
|
379
|
+
}
|
|
380
|
+
if (chart.highlightedPoint && chart.highlightedPoint.onMouseOut) {
|
|
381
|
+
chart.highlightedPoint.onMouseOut();
|
|
382
|
+
}
|
|
383
|
+
if (!kbdNavOptions.seriesNavigation.rememberPointFocus) {
|
|
384
|
+
delete chart.highlightedPoint;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Function that attempts to highlight next/prev point. Handles wrap around.
|
|
389
|
+
* @private
|
|
390
|
+
*/
|
|
391
|
+
attemptHighlightAdjacentPoint(handler, directionIsNext) {
|
|
392
|
+
const chart = this.chart, wrapAround = chart.options.accessibility.keyboardNavigation
|
|
393
|
+
.wrapAround, highlightSuccessful = chart.highlightAdjacentPoint(directionIsNext);
|
|
394
|
+
if (!highlightSuccessful) {
|
|
395
|
+
if (wrapAround && (directionIsNext ?
|
|
396
|
+
highlightFirstValidPointInChart(chart) :
|
|
397
|
+
highlightLastValidPointInChart(chart))) {
|
|
398
|
+
return handler.response.success;
|
|
399
|
+
}
|
|
400
|
+
return handler.response[directionIsNext ? 'next' : 'prev'];
|
|
401
|
+
}
|
|
402
|
+
return handler.response.success;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* @private
|
|
406
|
+
*/
|
|
407
|
+
onSeriesDestroy(series) {
|
|
408
|
+
const chart = this.chart, currentHighlightedPointDestroyed = chart.highlightedPoint &&
|
|
409
|
+
chart.highlightedPoint.series === series;
|
|
410
|
+
if (currentHighlightedPointDestroyed) {
|
|
411
|
+
delete chart.highlightedPoint;
|
|
412
|
+
if (chart.focusElement) {
|
|
413
|
+
chart.focusElement.removeFocusBorder();
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* @private
|
|
419
|
+
*/
|
|
420
|
+
destroy() {
|
|
421
|
+
this.eventProvider.removeAddedEvents();
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/* *
|
|
425
|
+
*
|
|
426
|
+
* Class Namespace
|
|
427
|
+
*
|
|
428
|
+
* */
|
|
429
|
+
(function (SeriesKeyboardNavigation) {
|
|
430
|
+
/* *
|
|
431
|
+
*
|
|
432
|
+
* Declarations
|
|
433
|
+
*
|
|
434
|
+
* */
|
|
435
|
+
/* *
|
|
436
|
+
*
|
|
437
|
+
* Functions
|
|
438
|
+
*
|
|
439
|
+
* */
|
|
440
|
+
/**
|
|
441
|
+
* Function to highlight next/previous point in chart.
|
|
442
|
+
*
|
|
443
|
+
* @private
|
|
444
|
+
* @function Highcharts.Chart#highlightAdjacentPoint
|
|
445
|
+
*
|
|
446
|
+
* @param {boolean} next
|
|
447
|
+
* Flag for the direction.
|
|
448
|
+
*
|
|
449
|
+
* @return {Highcharts.Point|boolean}
|
|
450
|
+
* Returns highlighted point on success, false on failure (no adjacent point
|
|
451
|
+
* to highlight in chosen direction).
|
|
452
|
+
*/
|
|
453
|
+
function chartHighlightAdjacentPoint(next) {
|
|
454
|
+
const chart = this, series = chart.series, curPoint = chart.highlightedPoint, curPointIndex = curPoint && getPointIndex(curPoint) || 0, curPoints = curPoint && curPoint.series.points || [], lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries &&
|
|
455
|
+
lastSeries.points &&
|
|
456
|
+
lastSeries.points[lastSeries.points.length - 1];
|
|
457
|
+
let newSeries, newPoint;
|
|
458
|
+
// If no points, return false
|
|
459
|
+
if (!series[0] || !series[0].points) {
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
if (!curPoint) {
|
|
463
|
+
// No point is highlighted yet. Try first/last point depending on
|
|
464
|
+
// move direction
|
|
465
|
+
newPoint = next ? series[0].points[0] : lastPoint;
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
// We have a highlighted point. Grab next/prev point & series.
|
|
469
|
+
newSeries = series[curPoint.series.index + (next ? 1 : -1)];
|
|
470
|
+
newPoint = curPoints[curPointIndex + (next ? 1 : -1)];
|
|
471
|
+
if (!newPoint && newSeries) {
|
|
472
|
+
// Done with this series, try next one
|
|
473
|
+
newPoint = newSeries.points[next ? 0 : newSeries.points.length - 1];
|
|
474
|
+
}
|
|
475
|
+
// If there is no adjacent point, we return false
|
|
476
|
+
if (!newPoint) {
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
// Recursively skip points
|
|
481
|
+
if (isSkipPoint(newPoint)) {
|
|
482
|
+
// If we skip this whole series, move to the end of the series
|
|
483
|
+
// before we recurse, just to optimize
|
|
484
|
+
newSeries = newPoint.series;
|
|
485
|
+
if (isSkipSeries(newSeries)) {
|
|
486
|
+
chart.highlightedPoint = next ?
|
|
487
|
+
newSeries.points[newSeries.points.length - 1] :
|
|
488
|
+
newSeries.points[0];
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
// Otherwise, just move one point
|
|
492
|
+
chart.highlightedPoint = newPoint;
|
|
493
|
+
}
|
|
494
|
+
// Retry
|
|
495
|
+
return chart.highlightAdjacentPoint(next);
|
|
496
|
+
}
|
|
497
|
+
// There is an adjacent point, highlight it
|
|
498
|
+
return newPoint.highlight();
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Highlight the closest point vertically.
|
|
502
|
+
* @private
|
|
503
|
+
*/
|
|
504
|
+
function chartHighlightAdjacentPointVertical(down) {
|
|
505
|
+
const curPoint = this.highlightedPoint;
|
|
506
|
+
let minDistance = Infinity, bestPoint;
|
|
507
|
+
if (!defined(curPoint.plotX) || !defined(curPoint.plotY)) {
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
510
|
+
this.series.forEach((series) => {
|
|
511
|
+
if (isSkipSeries(series)) {
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
series.points.forEach((point) => {
|
|
515
|
+
if (!defined(point.plotY) || !defined(point.plotX) ||
|
|
516
|
+
point === curPoint) {
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
let yDistance = point.plotY - curPoint.plotY;
|
|
520
|
+
const width = Math.abs(point.plotX - curPoint.plotX), distance = Math.abs(yDistance) * Math.abs(yDistance) +
|
|
521
|
+
width * width * 4; // Weigh horizontal distance highly
|
|
522
|
+
// Reverse distance number if axis is reversed
|
|
523
|
+
if (series.yAxis && series.yAxis.reversed) {
|
|
524
|
+
yDistance *= -1;
|
|
525
|
+
}
|
|
526
|
+
if (yDistance <= 0 && down || yDistance >= 0 && !down ||
|
|
527
|
+
distance < 5 || // Points in same spot => infinite loop
|
|
528
|
+
isSkipPoint(point)) {
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
if (distance < minDistance) {
|
|
532
|
+
minDistance = distance;
|
|
533
|
+
bestPoint = point;
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
});
|
|
537
|
+
return bestPoint ? bestPoint.highlight() : false;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Highlight next/previous series in chart. Returns false if no adjacent
|
|
541
|
+
* series in the direction, otherwise returns new highlighted point.
|
|
542
|
+
* @private
|
|
543
|
+
*/
|
|
544
|
+
function chartHighlightAdjacentSeries(down) {
|
|
545
|
+
const chart = this, curPoint = chart.highlightedPoint, lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries && lastSeries.points &&
|
|
546
|
+
lastSeries.points[lastSeries.points.length - 1];
|
|
547
|
+
let newSeries, newPoint, adjacentNewPoint;
|
|
548
|
+
// If no point is highlighted, highlight the first/last point
|
|
549
|
+
if (!chart.highlightedPoint) {
|
|
550
|
+
newSeries = down ? (chart.series && chart.series[0]) : lastSeries;
|
|
551
|
+
newPoint = down ?
|
|
552
|
+
(newSeries && newSeries.points && newSeries.points[0]) :
|
|
553
|
+
lastPoint;
|
|
554
|
+
return newPoint ? newPoint.highlight() : false;
|
|
555
|
+
}
|
|
556
|
+
newSeries = (chart.series[curPoint.series.index + (down ? -1 : 1)]);
|
|
557
|
+
if (!newSeries) {
|
|
558
|
+
return false;
|
|
559
|
+
}
|
|
560
|
+
// We have a new series in this direction, find the right point
|
|
561
|
+
// Weigh xDistance as counting much higher than Y distance
|
|
562
|
+
newPoint = getClosestPoint(curPoint, newSeries, 4);
|
|
563
|
+
if (!newPoint) {
|
|
564
|
+
return false;
|
|
565
|
+
}
|
|
566
|
+
// New series and point exists, but we might want to skip it
|
|
567
|
+
if (isSkipSeries(newSeries)) {
|
|
568
|
+
// Skip the series
|
|
569
|
+
newPoint.highlight();
|
|
570
|
+
// Try recurse
|
|
571
|
+
adjacentNewPoint = chart.highlightAdjacentSeries(down);
|
|
572
|
+
if (!adjacentNewPoint) {
|
|
573
|
+
// Recurse failed
|
|
574
|
+
curPoint.highlight();
|
|
575
|
+
return false;
|
|
576
|
+
}
|
|
577
|
+
// Recurse succeeded
|
|
578
|
+
return adjacentNewPoint;
|
|
579
|
+
}
|
|
580
|
+
// Highlight the new point or any first valid point back or forwards
|
|
581
|
+
// from it
|
|
582
|
+
newPoint.highlight();
|
|
583
|
+
return newPoint.series.highlightNextValidPoint();
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* @private
|
|
587
|
+
*/
|
|
588
|
+
function compose(ChartClass, PointClass, SeriesClass) {
|
|
589
|
+
const chartProto = ChartClass.prototype, pointProto = PointClass.prototype, seriesProto = SeriesClass.prototype;
|
|
590
|
+
if (!chartProto.highlightAdjacentPoint) {
|
|
591
|
+
chartProto.highlightAdjacentPoint = chartHighlightAdjacentPoint;
|
|
592
|
+
chartProto.highlightAdjacentPointVertical = (chartHighlightAdjacentPointVertical);
|
|
593
|
+
chartProto.highlightAdjacentSeries = chartHighlightAdjacentSeries;
|
|
594
|
+
pointProto.highlight = pointHighlight;
|
|
595
|
+
/**
|
|
596
|
+
* Set for which series types it makes sense to move to the closest
|
|
597
|
+
* point with up/down arrows, and which series types should just
|
|
598
|
+
* move to next series.
|
|
599
|
+
* @private
|
|
600
|
+
*/
|
|
601
|
+
seriesProto.keyboardMoveVertical = true;
|
|
602
|
+
[
|
|
603
|
+
'column',
|
|
604
|
+
'gantt',
|
|
605
|
+
'pie'
|
|
606
|
+
].forEach((type) => {
|
|
607
|
+
if (seriesTypes[type]) {
|
|
608
|
+
seriesTypes[type].prototype.keyboardMoveVertical = false;
|
|
609
|
+
}
|
|
610
|
+
});
|
|
611
|
+
seriesProto.highlightNextValidPoint = (seriesHighlightNextValidPoint);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
SeriesKeyboardNavigation.compose = compose;
|
|
615
|
+
/**
|
|
616
|
+
* Get the point in a series that is closest (in pixel distance) to a
|
|
617
|
+
* reference point. Optionally supply weight factors for x and y directions.
|
|
618
|
+
* @private
|
|
619
|
+
*/
|
|
620
|
+
function getClosestPoint(point, series, xWeight, yWeight) {
|
|
621
|
+
let minDistance = Infinity, dPoint, minIx, distance, i = series.points.length;
|
|
622
|
+
const hasUndefinedPosition = (point) => (!(defined(point.plotX) && defined(point.plotY)));
|
|
623
|
+
if (hasUndefinedPosition(point)) {
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
while (i--) {
|
|
627
|
+
dPoint = series.points[i];
|
|
628
|
+
if (hasUndefinedPosition(dPoint)) {
|
|
629
|
+
continue;
|
|
630
|
+
}
|
|
631
|
+
distance = (point.plotX - dPoint.plotX) *
|
|
632
|
+
(point.plotX - dPoint.plotX) *
|
|
633
|
+
(xWeight || 1) +
|
|
634
|
+
(point.plotY - dPoint.plotY) *
|
|
635
|
+
(point.plotY - dPoint.plotY) *
|
|
636
|
+
(yWeight || 1);
|
|
637
|
+
if (distance < minDistance) {
|
|
638
|
+
minDistance = distance;
|
|
639
|
+
minIx = i;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return defined(minIx) ? series.points[minIx] : void 0;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Highlights a point (show tooltip, display hover state, focus element).
|
|
646
|
+
*
|
|
647
|
+
* @private
|
|
648
|
+
* @function Highcharts.Point#highlight
|
|
649
|
+
*
|
|
650
|
+
* @return {Highcharts.Point}
|
|
651
|
+
* This highlighted point.
|
|
652
|
+
*/
|
|
653
|
+
function pointHighlight(highlightVisually = true) {
|
|
654
|
+
const chart = this.series.chart, tooltipElement = chart.tooltip?.label?.element;
|
|
655
|
+
if ((!this.isNull ||
|
|
656
|
+
this.series.options?.nullInteraction) && highlightVisually) {
|
|
657
|
+
this.onMouseOver(); // Show the hover marker and tooltip
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
if (chart.tooltip) {
|
|
661
|
+
chart.tooltip.hide(0);
|
|
662
|
+
}
|
|
663
|
+
// Do not call blur on the element, as it messes up the focus of the
|
|
664
|
+
// div element of the chart
|
|
665
|
+
}
|
|
666
|
+
scrollAxisToPoint(this);
|
|
667
|
+
// We focus only after calling onMouseOver because the state change can
|
|
668
|
+
// change z-index and mess up the element.
|
|
669
|
+
if (this.graphic) {
|
|
670
|
+
chart.setFocusToElement(this.graphic);
|
|
671
|
+
if (!highlightVisually && chart.focusElement) {
|
|
672
|
+
chart.focusElement.removeFocusBorder();
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
chart.highlightedPoint = this;
|
|
676
|
+
// Get position of the tooltip.
|
|
677
|
+
const tooltipTop = tooltipElement?.getBoundingClientRect().top;
|
|
678
|
+
if (tooltipElement && tooltipTop && tooltipTop < 0) {
|
|
679
|
+
// Calculate scroll position.
|
|
680
|
+
const scrollTop = window.scrollY, newScrollTop = scrollTop + tooltipTop;
|
|
681
|
+
// Scroll window to new position.
|
|
682
|
+
window.scrollTo({
|
|
683
|
+
behavior: 'smooth',
|
|
684
|
+
top: newScrollTop
|
|
685
|
+
});
|
|
686
|
+
}
|
|
687
|
+
return this;
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Highlight first valid point in a series. Returns the point if
|
|
691
|
+
* successfully highlighted, otherwise false. If there is a highlighted
|
|
692
|
+
* point in the series, use that as starting point.
|
|
693
|
+
*
|
|
694
|
+
* @private
|
|
695
|
+
* @function Highcharts.Series#highlightNextValidPoint
|
|
696
|
+
*/
|
|
697
|
+
function seriesHighlightNextValidPoint() {
|
|
698
|
+
const curPoint = this.chart.highlightedPoint, start = (curPoint && curPoint.series) === this ?
|
|
699
|
+
getPointIndex(curPoint) :
|
|
700
|
+
0, points = this.points, len = points.length;
|
|
701
|
+
if (points && len) {
|
|
702
|
+
for (let i = start; i < len; ++i) {
|
|
703
|
+
if (!isSkipPoint(points[i])) {
|
|
704
|
+
return points[i].highlight();
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
for (let j = start; j >= 0; --j) {
|
|
708
|
+
if (!isSkipPoint(points[j])) {
|
|
709
|
+
return points[j].highlight();
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
return false;
|
|
714
|
+
}
|
|
715
|
+
})(SeriesKeyboardNavigation || (SeriesKeyboardNavigation = {}));
|
|
716
|
+
/* *
|
|
717
|
+
*
|
|
718
|
+
* Default Export
|
|
719
|
+
*
|
|
720
|
+
* */
|
|
721
|
+
export default SeriesKeyboardNavigation;
|