highcharts 9.3.2 → 10.1.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/bower.json +1 -1
- package/css/highcharts.css +19 -2
- package/css/highcharts.scss +17 -2
- package/css/themes/dark-unica.css +19 -2
- package/css/themes/grid-light.css +19 -2
- package/css/themes/sand-signika.css +19 -2
- package/es-modules/Accessibility/A11yI18n.js +4 -4
- package/es-modules/Accessibility/Accessibility.js +1 -1
- package/es-modules/Accessibility/Components/ContainerComponent.js +8 -9
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +14 -9
- package/es-modules/Accessibility/Components/LegendComponent.js +31 -23
- package/es-modules/Accessibility/Components/MenuComponent.js +15 -5
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +2 -2
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +0 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +84 -33
- package/es-modules/Accessibility/Components/ZoomComponent.js +13 -10
- package/es-modules/Accessibility/FocusBorder.js +6 -5
- package/es-modules/Accessibility/HighContrastMode.js +2 -2
- package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
- package/es-modules/Accessibility/Options/LangOptions.js +36 -31
- package/es-modules/Accessibility/Options/Options.js +66 -3
- package/es-modules/Accessibility/ProxyElement.js +14 -6
- package/es-modules/Accessibility/ProxyProvider.js +10 -2
- package/es-modules/Accessibility/Utils/ChartUtilities.js +9 -4
- package/es-modules/Core/Axis/Axis.js +180 -73
- package/es-modules/Core/Axis/Color/ColorAxis.js +22 -5
- package/es-modules/Core/Axis/GridAxis.js +15 -11
- package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
- package/es-modules/Core/Axis/OrdinalAxis.js +3 -2
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +1 -1
- package/es-modules/Core/Axis/StackingAxis.js +0 -1
- package/es-modules/Core/Axis/Tick.js +2 -2
- package/es-modules/Core/Axis/TreeGridTick.js +11 -0
- package/es-modules/Core/Chart/Chart.js +21 -3
- package/es-modules/Core/Chart/Chart3D.js +1 -11
- package/es-modules/Core/Chart/ChartDefaults.js +43 -11
- package/es-modules/Core/Chart/MapChart.js +1 -6
- package/es-modules/Core/Chart/StockChart.js +1 -1
- package/es-modules/Core/DefaultOptions.js +8 -4
- package/es-modules/Core/Geometry/PolygonClip.js +84 -0
- package/es-modules/Core/Globals.js +4 -18
- package/es-modules/Core/HttpUtilities.js +13 -8
- package/es-modules/Core/Legend/Legend.js +11 -9
- package/es-modules/Core/Navigator.js +10 -7
- package/es-modules/Core/Pointer.js +15 -11
- package/es-modules/Core/Renderer/HTML/AST.js +68 -8
- package/es-modules/Core/Renderer/SVG/SVGElement.js +47 -63
- package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +31 -28
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +1 -1
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
- package/es-modules/Core/Scrollbar.js +9 -5
- package/es-modules/Core/Series/DataLabel.js +65 -36
- package/es-modules/Core/Series/Point.js +2 -2
- package/es-modules/Core/Series/Series.js +52 -22
- package/es-modules/Core/Series/SeriesDefaults.js +4 -1
- package/es-modules/Core/Tooltip.js +14 -31
- package/es-modules/Core/Utilities.js +29 -29
- package/es-modules/Extensions/Annotations/Annotations.js +9 -2
- package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
- package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +9 -1
- package/es-modules/Extensions/Annotations/Popup.js +1 -1
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +5 -3
- package/es-modules/Extensions/Boost/BoostInit.js +6 -1
- package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
- package/es-modules/Extensions/Boost/Boostables.js +1 -0
- package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
- package/es-modules/Extensions/Boost/WGLShader.js +4 -3
- package/es-modules/Extensions/Breadcrumbs.js +873 -0
- package/es-modules/Extensions/Data.js +26 -14
- package/es-modules/Extensions/DataGrouping.js +8 -3
- package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
- package/es-modules/Extensions/DraggablePoints.js +9 -7
- package/es-modules/Extensions/Drilldown.js +150 -95
- package/es-modules/Extensions/ExportData.js +1 -2
- package/es-modules/Extensions/Exporting/Exporting.js +31 -20
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +49 -1
- package/es-modules/Extensions/FullScreen.js +121 -54
- package/es-modules/Extensions/GeoJSON.js +151 -125
- package/es-modules/Extensions/MarkerClusters.js +34 -20
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +1 -1
- package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
- package/es-modules/Extensions/Polar.js +4 -1
- package/es-modules/Extensions/ScrollablePlotArea.js +5 -1
- package/es-modules/Extensions/Stacking.js +4 -3
- package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
- package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
- package/es-modules/Maps/MapNavigation.js +50 -13
- package/es-modules/Maps/MapPointer.js +16 -0
- package/es-modules/Maps/MapUtilities.js +56 -0
- package/es-modules/Maps/MapView.js +611 -136
- package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
- package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
- package/es-modules/Maps/Projection.js +169 -77
- package/es-modules/Maps/Projections/EqualEarth.js +15 -6
- package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
- package/es-modules/Maps/Projections/Miller.js +23 -10
- package/es-modules/Maps/Projections/Orthographic.js +21 -10
- package/es-modules/Maps/Projections/WebMercator.js +25 -13
- package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +77 -0
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +589 -0
- package/es-modules/Series/CenteredUtilities.js +6 -1
- package/es-modules/Series/Column/ColumnSeries.js +4 -3
- package/es-modules/Series/DataModifyComposition.js +1 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +2 -2
- package/es-modules/Series/DrawPointComposition.js +7 -4
- package/es-modules/Series/Flags/FlagsSeries.js +7 -12
- package/es-modules/Series/Gauge/GaugeSeries.js +1 -1
- package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -20
- package/es-modules/Series/Lollipop/LollipopSeries.js +1 -1
- package/es-modules/Series/Map/MapPoint.js +24 -1
- package/es-modules/Series/Map/MapSeries.js +206 -169
- package/es-modules/Series/MapBubble/MapBubblePoint.js +16 -24
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +58 -1
- package/es-modules/Series/MapPoint/MapPointPoint.js +2 -8
- package/es-modules/Series/MapPoint/MapPointSeries.js +40 -14
- package/es-modules/Series/NodesComposition.js +60 -13
- package/es-modules/Series/OHLC/OHLCSeries.js +7 -0
- package/es-modules/Series/Organization/OrganizationPoint.js +68 -2
- package/es-modules/Series/Organization/OrganizationSeries.js +79 -25
- package/es-modules/Series/Pie/PieDataLabel.js +3 -1
- package/es-modules/Series/Pie/PiePoint.js +12 -5
- package/es-modules/Series/Pie/PieSeries.js +12 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +19 -0
- package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
- package/es-modules/Series/Sankey/SankeyPoint.js +37 -1
- package/es-modules/Series/Sankey/SankeySeries.js +13 -128
- package/es-modules/Series/Scatter/ScatterSeries.js +1 -1
- package/es-modules/Series/Sunburst/SunburstSeries.js +14 -3
- package/es-modules/Series/Treemap/TreemapSeries.js +88 -80
- package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -0
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +4 -4
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -2
- package/es-modules/Stock/StockToolsBindings.js +31 -24
- package/es-modules/Stock/StockToolsGui.js +1 -1
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +1 -1
- package/es-modules/masters/highcharts.src.js +1 -1
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arc-diagram.src.js +14 -0
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +1 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +2 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +1 -1
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +5 -1
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +1 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +5 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/brand-dark.src.js +1 -1
- package/es-modules/masters/themes/brand-light.src.js +1 -1
- package/es-modules/masters/themes/dark-blue.src.js +1 -1
- package/es-modules/masters/themes/dark-green.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/gray.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/grid.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/skies.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/highcharts-3d.js +99 -98
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +51 -21
- package/highcharts-gantt.js +808 -800
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +781 -426
- package/highcharts-more.js +195 -194
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.js +18 -4
- package/highcharts.d.ts +3224 -542
- package/highcharts.js +592 -584
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3224 -542
- package/highcharts.src.js +732 -400
- package/highmaps.js +760 -728
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +3840 -2189
- package/highstock.js +793 -786
- package/highstock.js.map +1 -1
- package/highstock.src.js +783 -432
- package/indicators/acceleration-bands.js +12 -11
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +11 -2
- package/indicators/accumulation-distribution.js +5 -5
- package/indicators/accumulation-distribution.js.map +1 -1
- package/indicators/accumulation-distribution.src.js +11 -2
- package/indicators/ao.js +6 -6
- package/indicators/ao.js.map +1 -1
- package/indicators/ao.src.js +11 -2
- package/indicators/apo.js +5 -5
- package/indicators/apo.js.map +1 -1
- package/indicators/apo.src.js +11 -2
- package/indicators/aroon-oscillator.js +10 -10
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +11 -2
- package/indicators/aroon.js +11 -11
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +11 -2
- package/indicators/atr.js +5 -5
- package/indicators/atr.js.map +1 -1
- package/indicators/atr.src.js +11 -2
- package/indicators/bollinger-bands.js +12 -12
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +11 -2
- package/indicators/cci.js +5 -5
- package/indicators/cci.js.map +1 -1
- package/indicators/cci.src.js +11 -2
- package/indicators/chaikin.js +8 -8
- package/indicators/chaikin.js.map +1 -1
- package/indicators/chaikin.src.js +11 -2
- package/indicators/cmf.js +6 -6
- package/indicators/cmf.js.map +1 -1
- package/indicators/cmf.src.js +11 -2
- package/indicators/cmo.js +5 -5
- package/indicators/cmo.js.map +1 -1
- package/indicators/cmo.src.js +11 -2
- package/indicators/dema.js +5 -5
- package/indicators/dema.js.map +1 -1
- package/indicators/dema.src.js +11 -2
- package/indicators/disparity-index.js +6 -6
- package/indicators/disparity-index.js.map +1 -1
- package/indicators/disparity-index.src.js +11 -2
- package/indicators/dmi.js +12 -12
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +11 -2
- package/indicators/dpo.js +5 -5
- package/indicators/dpo.js.map +1 -1
- package/indicators/dpo.src.js +11 -2
- package/indicators/ema.js +2 -1
- package/indicators/ema.js.map +1 -1
- package/indicators/ema.src.js +10 -1
- package/indicators/ichimoku-kinko-hyo.js +16 -16
- package/indicators/ichimoku-kinko-hyo.js.map +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +11 -2
- package/indicators/indicators-all.js +195 -194
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +21 -5
- package/indicators/indicators.js +13 -12
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +21 -5
- package/indicators/keltner-channels.js +12 -11
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +11 -2
- package/indicators/klinger.js +13 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +11 -2
- package/indicators/macd.js +12 -11
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +11 -2
- package/indicators/mfi.js +6 -6
- package/indicators/mfi.js.map +1 -1
- package/indicators/mfi.src.js +11 -2
- package/indicators/momentum.js +5 -5
- package/indicators/momentum.js.map +1 -1
- package/indicators/momentum.src.js +11 -2
- package/indicators/natr.js +5 -4
- package/indicators/natr.js.map +1 -1
- package/indicators/natr.src.js +11 -2
- package/indicators/obv.js +5 -5
- package/indicators/obv.js.map +1 -1
- package/indicators/obv.src.js +11 -2
- package/indicators/pivot-points.js +11 -11
- package/indicators/pivot-points.js.map +1 -1
- package/indicators/pivot-points.src.js +11 -2
- package/indicators/ppo.js +5 -5
- package/indicators/ppo.js.map +1 -1
- package/indicators/ppo.src.js +11 -2
- package/indicators/price-channel.js +11 -11
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +11 -2
- package/indicators/price-envelopes.js +8 -8
- package/indicators/price-envelopes.js.map +1 -1
- package/indicators/price-envelopes.src.js +11 -2
- package/indicators/psar.js +7 -6
- package/indicators/psar.js.map +1 -1
- package/indicators/psar.src.js +11 -2
- package/indicators/regressions.js +12 -12
- package/indicators/regressions.js.map +1 -1
- package/indicators/regressions.src.js +11 -2
- package/indicators/roc.js +5 -5
- package/indicators/roc.js.map +1 -1
- package/indicators/roc.src.js +11 -2
- package/indicators/rsi.js +6 -5
- package/indicators/rsi.js.map +1 -1
- package/indicators/rsi.src.js +11 -2
- package/indicators/slow-stochastic.js +5 -5
- package/indicators/slow-stochastic.js.map +1 -1
- package/indicators/slow-stochastic.src.js +11 -2
- package/indicators/stochastic.js +12 -12
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +11 -2
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +11 -2
- package/indicators/tema.js +6 -6
- package/indicators/tema.js.map +1 -1
- package/indicators/tema.src.js +11 -2
- package/indicators/trendline.js +5 -5
- package/indicators/trendline.js.map +1 -1
- package/indicators/trendline.src.js +11 -2
- package/indicators/trix.js +4 -4
- package/indicators/trix.js.map +1 -1
- package/indicators/trix.src.js +11 -2
- package/indicators/volume-by-price.js +17 -17
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +11 -2
- package/indicators/vwap.js +5 -5
- package/indicators/vwap.js.map +1 -1
- package/indicators/vwap.src.js +11 -2
- package/indicators/williams-r.js +6 -5
- package/indicators/williams-r.js.map +1 -1
- package/indicators/williams-r.src.js +11 -2
- package/indicators/wma.js +5 -5
- package/indicators/wma.js.map +1 -1
- package/indicators/wma.src.js +11 -2
- package/indicators/zigzag.js +6 -6
- package/indicators/zigzag.js.map +1 -1
- package/indicators/zigzag.src.js +11 -2
- package/lib/jspdf.js +299 -184
- package/lib/jspdf.src.js +25266 -18067
- package/lib/svg2pdf.js +35 -31
- package/lib/svg2pdf.src.js +5721 -4179
- package/modules/accessibility.js +245 -240
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +510 -283
- package/modules/annotations-advanced.js +144 -144
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +37 -11
- package/modules/annotations.js +79 -79
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +32 -8
- package/modules/arc-diagram.js +25 -0
- package/modules/arc-diagram.js.map +1 -0
- package/modules/arc-diagram.src.js +778 -0
- package/modules/arrow-symbols.js +4 -3
- package/modules/arrow-symbols.js.map +1 -1
- package/modules/arrow-symbols.src.js +11 -2
- package/modules/boost-canvas.js +15 -15
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +11 -2
- package/modules/boost.js +80 -79
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +71 -43
- package/modules/broken-axis.js +13 -13
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +11 -2
- package/modules/bullet.js +9 -9
- package/modules/bullet.js.map +1 -1
- package/modules/bullet.src.js +11 -2
- package/modules/coloraxis.js +24 -24
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +33 -7
- package/modules/current-date-indicator.js +5 -4
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +11 -2
- package/modules/cylinder.js +11 -11
- package/modules/cylinder.js.map +1 -1
- package/modules/cylinder.src.js +11 -2
- package/modules/data.js +34 -33
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +59 -32
- package/modules/datagrouping.js +21 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.js +19 -5
- package/modules/debugger.js +8 -7
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +15 -2
- package/modules/dependency-wheel.js +12 -11
- package/modules/dependency-wheel.js.map +1 -1
- package/modules/dependency-wheel.src.js +14 -5
- package/modules/dotplot.js +6 -6
- package/modules/dotplot.js.map +1 -1
- package/modules/dotplot.src.js +11 -2
- package/modules/drag-panes.js +10 -10
- package/modules/drag-panes.js.map +1 -1
- package/modules/drag-panes.src.js +11 -2
- package/modules/draggable-points.js +35 -34
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +20 -9
- package/modules/drilldown.d.ts +19 -0
- package/modules/drilldown.js +36 -25
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +19 -0
- package/modules/drilldown.src.js +1091 -106
- package/modules/dumbbell.js +17 -17
- package/modules/dumbbell.js.map +1 -1
- package/modules/dumbbell.src.js +11 -2
- package/modules/export-data.js +21 -20
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +12 -4
- package/modules/exporting.js +39 -39
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +227 -92
- package/modules/full-screen.js +8 -7
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +135 -58
- package/modules/funnel.js +12 -12
- package/modules/funnel.js.map +1 -1
- package/modules/funnel.src.js +11 -2
- package/modules/funnel3d.js +21 -21
- package/modules/funnel3d.js.map +1 -1
- package/modules/funnel3d.src.js +11 -2
- package/modules/gantt.js +216 -215
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +60 -28
- package/modules/grid-axis.js +23 -23
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +27 -13
- package/modules/heatmap.js +40 -39
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +46 -27
- package/modules/heikinashi.js +8 -8
- package/modules/heikinashi.js.map +1 -1
- package/modules/heikinashi.src.js +11 -2
- package/modules/histogram-bellcurve.js +13 -13
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +11 -2
- package/modules/hollowcandlestick.js +9 -9
- package/modules/hollowcandlestick.js.map +1 -1
- package/modules/hollowcandlestick.src.js +11 -2
- package/modules/item-series.js +12 -12
- package/modules/item-series.js.map +1 -1
- package/modules/item-series.src.js +11 -2
- package/modules/lollipop.js +7 -7
- package/modules/lollipop.js.map +1 -1
- package/modules/lollipop.src.js +12 -3
- package/modules/map.d.ts +80 -43
- package/modules/map.js +169 -144
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +80 -43
- package/modules/map.src.js +8024 -6696
- package/modules/marker-clusters.js +36 -36
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +47 -23
- package/modules/networkgraph.d.ts +5 -0
- package/modules/networkgraph.js +49 -48
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.d.ts +5 -0
- package/modules/networkgraph.src.js +77 -15
- package/modules/no-data-to-display.js +5 -5
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +11 -2
- package/modules/offline-exporting.js +20 -18
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +126 -25
- package/modules/oldie-polyfills.js +7 -7
- package/modules/oldie-polyfills.js.map +1 -1
- package/modules/oldie-polyfills.src.js +11 -2
- package/modules/oldie.js +30 -30
- package/modules/oldie.js.map +1 -1
- package/modules/oldie.src.js +12 -3
- package/modules/organization.js +16 -14
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +166 -32
- package/modules/overlapping-datalabels.js +3 -2
- package/modules/overlapping-datalabels.js.map +1 -1
- package/modules/overlapping-datalabels.src.js +11 -2
- package/modules/parallel-coordinates.js +11 -11
- package/modules/parallel-coordinates.js.map +1 -1
- package/modules/parallel-coordinates.src.js +11 -2
- package/modules/pareto.js +7 -7
- package/modules/pareto.js.map +1 -1
- package/modules/pareto.src.js +11 -2
- package/modules/pathfinder.js +31 -31
- package/modules/pathfinder.js.map +1 -1
- package/modules/pathfinder.src.js +11 -2
- package/modules/pattern-fill.js +14 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +11 -2
- package/modules/price-indicator.js +5 -5
- package/modules/price-indicator.js.map +1 -1
- package/modules/price-indicator.src.js +11 -2
- package/modules/pyramid3d.js +4 -4
- package/modules/pyramid3d.js.map +1 -1
- package/modules/pyramid3d.src.js +11 -2
- package/modules/sankey.d.ts +5 -0
- package/modules/sankey.js +32 -29
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.d.ts +5 -0
- package/modules/sankey.src.js +341 -157
- package/modules/series-label.js +18 -17
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +11 -2
- package/modules/solid-gauge.js +10 -10
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +11 -2
- package/modules/sonification.js +59 -59
- package/modules/sonification.js.map +1 -1
- package/modules/sonification.src.js +11 -2
- package/modules/static-scale.js +5 -4
- package/modules/static-scale.js.map +1 -1
- package/modules/static-scale.src.js +11 -2
- package/modules/stock-tools.js +145 -145
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +64 -32
- package/modules/stock.js +204 -204
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.js +62 -34
- package/modules/streamgraph.js +5 -4
- package/modules/streamgraph.js.map +1 -1
- package/modules/streamgraph.src.js +11 -2
- package/modules/sunburst.d.ts +3 -0
- package/modules/sunburst.js +73 -60
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.d.ts +3 -0
- package/modules/sunburst.src.js +1048 -97
- package/modules/tilemap.js +17 -17
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +11 -2
- package/modules/timeline.js +18 -18
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +11 -2
- package/modules/treegrid.js +57 -56
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +38 -13
- package/modules/treemap.d.ts +3 -0
- package/modules/treemap.js +53 -41
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.d.ts +3 -0
- package/modules/treemap.src.js +1037 -95
- package/modules/variable-pie.js +9 -9
- package/modules/variable-pie.js.map +1 -1
- package/modules/variable-pie.src.js +11 -2
- package/modules/variwide.js +12 -12
- package/modules/variwide.js.map +1 -1
- package/modules/variwide.src.js +11 -2
- package/modules/vector.js +8 -7
- package/modules/vector.js.map +1 -1
- package/modules/vector.src.js +11 -2
- package/modules/venn.js +31 -31
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +18 -6
- package/modules/windbarb.js +15 -15
- package/modules/windbarb.js.map +1 -1
- package/modules/windbarb.src.js +11 -2
- package/modules/wordcloud.js +24 -23
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +22 -10
- package/modules/xrange.js +16 -16
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +11 -2
- package/package.json +1 -1
- package/themes/avocado.js +4 -3
- package/themes/avocado.js.map +1 -1
- package/themes/avocado.src.js +11 -2
- package/themes/brand-dark.js +9 -8
- package/themes/brand-dark.js.map +1 -1
- package/themes/brand-dark.src.js +11 -2
- package/themes/brand-light.js +8 -8
- package/themes/brand-light.js.map +1 -1
- package/themes/brand-light.src.js +11 -2
- package/themes/dark-blue.js +9 -8
- package/themes/dark-blue.js.map +1 -1
- package/themes/dark-blue.src.js +11 -2
- package/themes/dark-green.js +9 -8
- package/themes/dark-green.js.map +1 -1
- package/themes/dark-green.src.js +11 -2
- package/themes/dark-unica.js +8 -7
- package/themes/dark-unica.js.map +1 -1
- package/themes/dark-unica.src.js +11 -2
- package/themes/gray.js +9 -8
- package/themes/gray.js.map +1 -1
- package/themes/gray.src.js +11 -2
- package/themes/grid-light.js +5 -4
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.js +11 -2
- package/themes/grid.js +5 -5
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.js +11 -2
- package/themes/high-contrast-dark.js +7 -7
- package/themes/high-contrast-dark.js.map +1 -1
- package/themes/high-contrast-dark.src.js +21 -12
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.js.map +1 -1
- package/themes/high-contrast-light.src.js +21 -12
- package/themes/sand-signika.js +5 -5
- package/themes/sand-signika.js.map +1 -1
- package/themes/sand-signika.src.js +11 -2
- package/themes/skies.js +5 -5
- package/themes/skies.js.map +1 -1
- package/themes/skies.src.js +11 -2
- package/themes/sunset.js +3 -3
- package/themes/sunset.js.map +1 -1
- package/themes/sunset.src.js +11 -2
- package/es-modules/Maps/ProjectionDefinition.js +0 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS
|
|
2
|
+
* @license Highcharts JS v10.1.0 (2022-04-29)
|
|
3
3
|
*
|
|
4
4
|
* Accessibility module
|
|
5
5
|
*
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*
|
|
9
9
|
* License: www.highcharts.com/license
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
(function (factory) {
|
|
13
12
|
if (typeof module === 'object' && module.exports) {
|
|
14
13
|
factory['default'] = factory;
|
|
@@ -23,10 +22,20 @@
|
|
|
23
22
|
factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
|
|
24
23
|
}
|
|
25
24
|
}(function (Highcharts) {
|
|
25
|
+
'use strict';
|
|
26
26
|
var _modules = Highcharts ? Highcharts._modules : {};
|
|
27
27
|
function _registerModule(obj, path, args, fn) {
|
|
28
28
|
if (!obj.hasOwnProperty(path)) {
|
|
29
29
|
obj[path] = fn.apply(null, args);
|
|
30
|
+
|
|
31
|
+
if (typeof CustomEvent === 'function') {
|
|
32
|
+
window.dispatchEvent(
|
|
33
|
+
new CustomEvent(
|
|
34
|
+
'HighchartsModuleLoaded',
|
|
35
|
+
{ detail: { path: path, module: obj[path] }
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
_registerModule(_modules, 'Accessibility/A11yI18n.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (F, U) {
|
|
@@ -43,7 +52,8 @@
|
|
|
43
52
|
*
|
|
44
53
|
* */
|
|
45
54
|
var format = F.format;
|
|
46
|
-
var
|
|
55
|
+
var getNestedProperty = U.getNestedProperty,
|
|
56
|
+
pick = U.pick;
|
|
47
57
|
/* *
|
|
48
58
|
*
|
|
49
59
|
* Composition
|
|
@@ -102,7 +112,7 @@
|
|
|
102
112
|
var lenArg = Number(eachArguments[1]),
|
|
103
113
|
len = void 0;
|
|
104
114
|
result = '';
|
|
105
|
-
arr =
|
|
115
|
+
arr = getNestedProperty(eachArguments[0], ctx);
|
|
106
116
|
if (arr) {
|
|
107
117
|
lenArg = isNaN(lenArg) ? arr.length : lenArg;
|
|
108
118
|
len = lenArg < 0 ?
|
|
@@ -117,7 +127,7 @@
|
|
|
117
127
|
}
|
|
118
128
|
// Dealing with a plural-function?
|
|
119
129
|
if (pluralStart > -1) {
|
|
120
|
-
var pluralEnd = (statement.slice(pluralStart).indexOf(')') + pluralStart), pluralStatement = statement.substring(pluralStart + 8, pluralEnd), pluralArguments = pluralStatement.split(','), num = Number(
|
|
130
|
+
var pluralEnd = (statement.slice(pluralStart).indexOf(')') + pluralStart), pluralStatement = statement.substring(pluralStart + 8, pluralEnd), pluralArguments = pluralStatement.split(','), num = Number(getNestedProperty(pluralArguments[0], ctx));
|
|
121
131
|
switch (num) {
|
|
122
132
|
case 0:
|
|
123
133
|
result = pick(pluralArguments[4], pluralArguments[1]);
|
|
@@ -140,7 +150,7 @@
|
|
|
140
150
|
ix = Number(statement.substring(indexStart + 1,
|
|
141
151
|
indexEnd));
|
|
142
152
|
var val = void 0;
|
|
143
|
-
arr = ctx
|
|
153
|
+
arr = getNestedProperty(arrayName, ctx);
|
|
144
154
|
if (!isNaN(ix) && arr) {
|
|
145
155
|
if (ix < 0) {
|
|
146
156
|
val = arr[arr.length + ix];
|
|
@@ -759,9 +769,11 @@
|
|
|
759
769
|
*/
|
|
760
770
|
function getAxisTimeLengthDesc(axis) {
|
|
761
771
|
var chart = axis.chart,
|
|
762
|
-
range = {}
|
|
772
|
+
range = {},
|
|
773
|
+
min = axis.dataMin || axis.min || 0,
|
|
774
|
+
max = axis.dataMax || axis.max || 0;
|
|
763
775
|
var rangeUnit = 'Seconds';
|
|
764
|
-
range.Seconds = (
|
|
776
|
+
range.Seconds = (max - min) / 1000;
|
|
765
777
|
range.Minutes = range.Seconds / 60;
|
|
766
778
|
range.Hours = range.Minutes / 60;
|
|
767
779
|
range.Days = range.Hours / 24;
|
|
@@ -791,9 +803,15 @@
|
|
|
791
803
|
options.accessibility &&
|
|
792
804
|
options.accessibility.screenReaderSection.axisRangeDateFormat ||
|
|
793
805
|
''),
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
806
|
+
extremes = {
|
|
807
|
+
min: axis.dataMin || axis.min || 0,
|
|
808
|
+
max: axis.dataMax || axis.max || 0
|
|
809
|
+
},
|
|
810
|
+
format = function (key) {
|
|
811
|
+
return axis.dateTime ?
|
|
812
|
+
chart.time.dateFormat(dateRangeFormat,
|
|
813
|
+
extremes[key]) :
|
|
814
|
+
extremes[key].toString();
|
|
797
815
|
};
|
|
798
816
|
return chart.langFormat('accessibility.axis.rangeFromTo', {
|
|
799
817
|
chart: chart,
|
|
@@ -1454,20 +1472,19 @@
|
|
|
1454
1472
|
}
|
|
1455
1473
|
};
|
|
1456
1474
|
/**
|
|
1475
|
+
* Set attributes on the chart container element.
|
|
1457
1476
|
* @private
|
|
1458
1477
|
*/
|
|
1459
1478
|
ContainerComponent.prototype.setRenderToAttrs = function () {
|
|
1460
|
-
var chart = this.chart
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1479
|
+
var chart = this.chart, shouldHaveLandmark = chart.options.accessibility
|
|
1480
|
+
.landmarkVerbosity !== 'disabled', containerLabel = chart.langFormat('accessibility.chartContainerLabel', {
|
|
1481
|
+
title: getChartTitle(chart),
|
|
1482
|
+
chart: chart
|
|
1483
|
+
});
|
|
1484
|
+
if (containerLabel) {
|
|
1485
|
+
chart.renderTo.setAttribute('role', shouldHaveLandmark ? 'region' : 'group');
|
|
1486
|
+
chart.renderTo.setAttribute('aria-label', containerLabel);
|
|
1466
1487
|
}
|
|
1467
|
-
chart.renderTo.setAttribute('aria-label', chart.langFormat('accessibility.chartContainerLabel', {
|
|
1468
|
-
title: getChartTitle(chart),
|
|
1469
|
-
chart: chart
|
|
1470
|
-
}));
|
|
1471
1488
|
};
|
|
1472
1489
|
/**
|
|
1473
1490
|
* @private
|
|
@@ -1672,15 +1689,21 @@
|
|
|
1672
1689
|
}
|
|
1673
1690
|
// Add the border rect
|
|
1674
1691
|
var bb = this.getBBox(),
|
|
1675
|
-
pad = pick(margin, 3)
|
|
1692
|
+
pad = pick(margin, 3),
|
|
1693
|
+
parent = this.parentGroup,
|
|
1694
|
+
scaleX = this.scaleX || parent && parent.scaleX,
|
|
1695
|
+
scaleY = this.scaleY || parent && parent.scaleY,
|
|
1696
|
+
oneDefined = scaleX ? !scaleY : scaleY,
|
|
1697
|
+
scaleBoth = oneDefined ? Math.abs(scaleX || scaleY || 1) :
|
|
1698
|
+
(Math.abs(scaleX || 1) + Math.abs(scaleY || 1)) / 2;
|
|
1676
1699
|
bb.x += this.translateX ? this.translateX : 0;
|
|
1677
1700
|
bb.y += this.translateY ? this.translateY : 0;
|
|
1678
1701
|
var borderPosX = bb.x - pad,
|
|
1679
1702
|
borderPosY = bb.y - pad,
|
|
1680
1703
|
borderWidth = bb.width + 2 * pad,
|
|
1681
1704
|
borderHeight = bb.height + 2 * pad;
|
|
1682
|
-
// For text elements, apply x and y offset, #11397.
|
|
1683
1705
|
/**
|
|
1706
|
+
* For text elements, apply x and y offset, #11397.
|
|
1684
1707
|
* @private
|
|
1685
1708
|
*/
|
|
1686
1709
|
function getTextAnchorCorrection(text) {
|
|
@@ -1728,16 +1751,16 @@
|
|
|
1728
1751
|
}
|
|
1729
1752
|
}
|
|
1730
1753
|
}
|
|
1731
|
-
this.focusBorder = this.renderer.rect(borderPosX, borderPosY, borderWidth, borderHeight, parseInt((attribs && attribs.r || 0).toString(), 10))
|
|
1754
|
+
this.focusBorder = this.renderer.rect(borderPosX, borderPosY, borderWidth, borderHeight, parseInt((attribs && attribs.r || 0).toString(), 10) / scaleBoth)
|
|
1732
1755
|
.addClass('highcharts-focus-border')
|
|
1733
1756
|
.attr({
|
|
1734
1757
|
zIndex: 99
|
|
1735
1758
|
})
|
|
1736
|
-
.add(
|
|
1759
|
+
.add(parent);
|
|
1737
1760
|
if (!this.renderer.styledMode) {
|
|
1738
1761
|
this.focusBorder.attr({
|
|
1739
1762
|
stroke: attribs && attribs.stroke,
|
|
1740
|
-
'stroke-width': attribs && attribs.strokeWidth
|
|
1763
|
+
'stroke-width': (attribs && attribs.strokeWidth || 0) / scaleBoth
|
|
1741
1764
|
});
|
|
1742
1765
|
}
|
|
1743
1766
|
avgElementAddUpdateFocusBorderHooks(this, margin, attribs);
|
|
@@ -2176,11 +2199,13 @@
|
|
|
2176
2199
|
function getTypeDescription(chart, types) {
|
|
2177
2200
|
var firstType = types[0],
|
|
2178
2201
|
firstSeries = chart.series && chart.series[0] || {},
|
|
2202
|
+
mapTitle = chart.mapView && chart.mapView.geoMap &&
|
|
2203
|
+
chart.mapView.geoMap.title,
|
|
2179
2204
|
formatContext = {
|
|
2180
2205
|
numSeries: chart.series.length,
|
|
2181
2206
|
numPoints: firstSeries.points && firstSeries.points.length,
|
|
2182
2207
|
chart: chart,
|
|
2183
|
-
mapTitle:
|
|
2208
|
+
mapTitle: mapTitle
|
|
2184
2209
|
};
|
|
2185
2210
|
if (!firstType) {
|
|
2186
2211
|
return getTypeDescForEmptyChart(chart, formatContext);
|
|
@@ -2374,23 +2399,27 @@
|
|
|
2374
2399
|
}
|
|
2375
2400
|
};
|
|
2376
2401
|
/**
|
|
2402
|
+
* Apply a11y attributes to a screen reader info section
|
|
2377
2403
|
* @private
|
|
2378
2404
|
* @param {Highcharts.HTMLDOMElement} sectionDiv The section element
|
|
2379
2405
|
* @param {string} regionKey Name/key of the region we are setting attrs for
|
|
2380
2406
|
*/
|
|
2381
2407
|
InfoRegionsComponent.prototype.setScreenReaderSectionAttribs = function (sectionDiv, regionKey) {
|
|
2382
|
-
var
|
|
2383
|
-
|
|
2408
|
+
var chart = this.chart,
|
|
2409
|
+
labelText = chart.langFormat('accessibility.screenReaderSection.' + regionKey +
|
|
2410
|
+
'RegionLabel', { chart: chart,
|
|
2411
|
+
chartTitle: getChartTitle(chart) }),
|
|
2412
|
+
sectionId = "highcharts-screen-reader-region-" + regionKey + "-" + chart.index;
|
|
2384
2413
|
attr(sectionDiv, {
|
|
2385
2414
|
id: sectionId,
|
|
2386
|
-
'aria-label': labelText
|
|
2415
|
+
'aria-label': labelText || void 0
|
|
2387
2416
|
});
|
|
2388
2417
|
// Sections are wrapped to be positioned relatively to chart in case
|
|
2389
2418
|
// elements inside are tabbed to.
|
|
2390
2419
|
sectionDiv.style.position = 'relative';
|
|
2391
|
-
if (
|
|
2392
|
-
|
|
2393
|
-
|
|
2420
|
+
if (labelText) {
|
|
2421
|
+
sectionDiv.setAttribute('role', chart.options.accessibility.landmarkVerbosity === 'all' ?
|
|
2422
|
+
'region' : 'group');
|
|
2394
2423
|
}
|
|
2395
2424
|
};
|
|
2396
2425
|
/**
|
|
@@ -2611,7 +2640,10 @@
|
|
|
2611
2640
|
return axes.length > 1 || axes[0] &&
|
|
2612
2641
|
pick(axes[0].options.accessibility &&
|
|
2613
2642
|
axes[0].options.accessibility.enabled, defaultCondition);
|
|
2614
|
-
}, hasNoMap = !!chart.types &&
|
|
2643
|
+
}, hasNoMap = !!chart.types &&
|
|
2644
|
+
chart.types.indexOf('map') < 0 &&
|
|
2645
|
+
chart.types.indexOf('treemap') < 0 &&
|
|
2646
|
+
chart.types.indexOf('tilemap') < 0, hasCartesian = !!chart.hasCartesianSeries, showXAxes = shouldDescribeColl('xAxis', !chart.angular && hasCartesian && hasNoMap), showYAxes = shouldDescribeColl('yAxis', hasCartesian && hasNoMap), desc = {};
|
|
2615
2647
|
if (showXAxes) {
|
|
2616
2648
|
desc.xAxis = this.getAxisDescriptionText('xAxis');
|
|
2617
2649
|
}
|
|
@@ -2758,7 +2790,6 @@
|
|
|
2758
2790
|
if (menu) {
|
|
2759
2791
|
menu.setAttribute('aria-hidden', 'true');
|
|
2760
2792
|
}
|
|
2761
|
-
this.isExportMenuShown = false;
|
|
2762
2793
|
this.setExportButtonExpandedState('false');
|
|
2763
2794
|
};
|
|
2764
2795
|
/**
|
|
@@ -2771,7 +2802,6 @@
|
|
|
2771
2802
|
this.addAccessibleContextMenuAttribs();
|
|
2772
2803
|
unhideChartElementFromAT(chart, menu);
|
|
2773
2804
|
}
|
|
2774
|
-
this.isExportMenuShown = true;
|
|
2775
2805
|
this.setExportButtonExpandedState('true');
|
|
2776
2806
|
};
|
|
2777
2807
|
/**
|
|
@@ -2788,8 +2818,21 @@
|
|
|
2788
2818
|
* proxy overlay.
|
|
2789
2819
|
*/
|
|
2790
2820
|
MenuComponent.prototype.onChartRender = function () {
|
|
2821
|
+
var chart = this.chart,
|
|
2822
|
+
focusEl = chart.focusElement,
|
|
2823
|
+
a11y = chart.accessibility;
|
|
2791
2824
|
this.proxyProvider.clearGroup('chartMenu');
|
|
2792
2825
|
this.proxyMenuButton();
|
|
2826
|
+
if (this.exportButtonProxy &&
|
|
2827
|
+
focusEl &&
|
|
2828
|
+
focusEl === chart.exportingGroup) {
|
|
2829
|
+
if (focusEl.focusBorder) {
|
|
2830
|
+
chart.setFocusToElement(focusEl, this.exportButtonProxy.buttonElement);
|
|
2831
|
+
}
|
|
2832
|
+
else if (a11y) {
|
|
2833
|
+
a11y.keyboardNavigation.tabindexContainer.focus();
|
|
2834
|
+
}
|
|
2835
|
+
}
|
|
2793
2836
|
};
|
|
2794
2837
|
/**
|
|
2795
2838
|
* @private
|
|
@@ -2804,7 +2847,8 @@
|
|
|
2804
2847
|
chart: chart,
|
|
2805
2848
|
chartTitle: getChartTitle(chart)
|
|
2806
2849
|
}),
|
|
2807
|
-
'aria-expanded': false
|
|
2850
|
+
'aria-expanded': false,
|
|
2851
|
+
title: chart.options.lang.contextButtonTitle || null
|
|
2808
2852
|
});
|
|
2809
2853
|
}
|
|
2810
2854
|
};
|
|
@@ -2958,7 +3002,7 @@
|
|
|
2958
3002
|
var chart = this.chart;
|
|
2959
3003
|
var curHighlightedItem = chart.exportDivElements[chart.highlightedExportItemIx];
|
|
2960
3004
|
var exportButtonElement = getExportMenuButtonElement(chart).element;
|
|
2961
|
-
if (
|
|
3005
|
+
if (chart.openMenu) {
|
|
2962
3006
|
this.fakeClickEvent(curHighlightedItem);
|
|
2963
3007
|
}
|
|
2964
3008
|
else {
|
|
@@ -3028,7 +3072,7 @@
|
|
|
3028
3072
|
function chartHideExportMenu() {
|
|
3029
3073
|
var chart = this,
|
|
3030
3074
|
exportList = chart.exportDivElements;
|
|
3031
|
-
if (exportList && chart.exportContextMenu) {
|
|
3075
|
+
if (exportList && chart.exportContextMenu && chart.openMenu) {
|
|
3032
3076
|
// Reset hover states etc.
|
|
3033
3077
|
exportList.forEach(function (el) {
|
|
3034
3078
|
if (el &&
|
|
@@ -3226,6 +3270,65 @@
|
|
|
3226
3270
|
this.removeExitAnchor();
|
|
3227
3271
|
}
|
|
3228
3272
|
};
|
|
3273
|
+
/**
|
|
3274
|
+
* We use an exit anchor to move focus out of chart whenever we want, by
|
|
3275
|
+
* setting focus to this div and not preventing the default tab action. We
|
|
3276
|
+
* also use this when users come back into the chart by tabbing back, in
|
|
3277
|
+
* order to navigate from the end of the chart.
|
|
3278
|
+
* @private
|
|
3279
|
+
*/
|
|
3280
|
+
KeyboardNavigation.prototype.updateExitAnchor = function () {
|
|
3281
|
+
var endMarkerId = "highcharts-end-of-chart-marker-" + this.chart.index,
|
|
3282
|
+
endMarker = getElement(endMarkerId);
|
|
3283
|
+
this.removeExitAnchor();
|
|
3284
|
+
if (endMarker) {
|
|
3285
|
+
this.makeElementAnExitAnchor(endMarker);
|
|
3286
|
+
this.exitAnchor = endMarker;
|
|
3287
|
+
}
|
|
3288
|
+
else {
|
|
3289
|
+
this.createExitAnchor();
|
|
3290
|
+
}
|
|
3291
|
+
};
|
|
3292
|
+
/**
|
|
3293
|
+
* Move to prev/next module.
|
|
3294
|
+
* @private
|
|
3295
|
+
* @param {number} direction
|
|
3296
|
+
* Direction to move. +1 for next, -1 for prev.
|
|
3297
|
+
* @return {boolean}
|
|
3298
|
+
* True if there was a valid module in direction.
|
|
3299
|
+
*/
|
|
3300
|
+
KeyboardNavigation.prototype.move = function (direction) {
|
|
3301
|
+
var curModule = this.modules && this.modules[this.currentModuleIx];
|
|
3302
|
+
if (curModule && curModule.terminate) {
|
|
3303
|
+
curModule.terminate(direction);
|
|
3304
|
+
}
|
|
3305
|
+
// Remove existing focus border if any
|
|
3306
|
+
if (this.chart.focusElement) {
|
|
3307
|
+
this.chart.focusElement.removeFocusBorder();
|
|
3308
|
+
}
|
|
3309
|
+
this.currentModuleIx += direction;
|
|
3310
|
+
var newModule = this.modules && this.modules[this.currentModuleIx];
|
|
3311
|
+
if (newModule) {
|
|
3312
|
+
if (newModule.validate && !newModule.validate()) {
|
|
3313
|
+
return this.move(direction); // Invalid module, recurse
|
|
3314
|
+
}
|
|
3315
|
+
if (newModule.init) {
|
|
3316
|
+
newModule.init(direction); // Valid module, init it
|
|
3317
|
+
return true;
|
|
3318
|
+
}
|
|
3319
|
+
}
|
|
3320
|
+
// No module
|
|
3321
|
+
this.currentModuleIx = 0; // Reset counter
|
|
3322
|
+
// Set focus to chart or exit anchor depending on direction
|
|
3323
|
+
this.exiting = true;
|
|
3324
|
+
if (direction > 0) {
|
|
3325
|
+
this.exitAnchor.focus();
|
|
3326
|
+
}
|
|
3327
|
+
else {
|
|
3328
|
+
this.tabindexContainer.focus();
|
|
3329
|
+
}
|
|
3330
|
+
return false;
|
|
3331
|
+
};
|
|
3229
3332
|
/**
|
|
3230
3333
|
* Function to run on container focus
|
|
3231
3334
|
* @private
|
|
@@ -3239,30 +3342,37 @@
|
|
|
3239
3342
|
if (!this.exiting &&
|
|
3240
3343
|
!this.tabbingInBackwards &&
|
|
3241
3344
|
!this.isClickingChart &&
|
|
3242
|
-
!focusComesFromChart
|
|
3243
|
-
this.
|
|
3244
|
-
|
|
3345
|
+
!focusComesFromChart) {
|
|
3346
|
+
var ix = this.getFirstValidModuleIx();
|
|
3347
|
+
if (ix !== null) {
|
|
3348
|
+
this.currentModuleIx = ix;
|
|
3349
|
+
this.modules[ix].init(1);
|
|
3350
|
+
}
|
|
3245
3351
|
}
|
|
3246
3352
|
this.exiting = false;
|
|
3247
3353
|
};
|
|
3248
3354
|
/**
|
|
3249
|
-
* Reset chart navigation state if we click
|
|
3250
|
-
*
|
|
3355
|
+
* Reset chart navigation state if we mouse click and it's not already
|
|
3356
|
+
* reset. Reset fully if outside the chart, otherwise just hide focus
|
|
3357
|
+
* indicator.
|
|
3251
3358
|
* @private
|
|
3252
3359
|
*/
|
|
3253
3360
|
KeyboardNavigation.prototype.onMouseUp = function () {
|
|
3254
3361
|
delete this.isClickingChart;
|
|
3255
|
-
if (!this.keyboardReset
|
|
3256
|
-
var chart = this.chart
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
curMod.terminate
|
|
3362
|
+
if (!this.keyboardReset) {
|
|
3363
|
+
var chart = this.chart;
|
|
3364
|
+
if (!this.pointerIsOverChart) {
|
|
3365
|
+
var curMod = this.modules &&
|
|
3366
|
+
this.modules[this.currentModuleIx || 0];
|
|
3367
|
+
if (curMod && curMod.terminate) {
|
|
3368
|
+
curMod.terminate();
|
|
3369
|
+
}
|
|
3370
|
+
this.currentModuleIx = 0;
|
|
3261
3371
|
}
|
|
3262
3372
|
if (chart.focusElement) {
|
|
3263
3373
|
chart.focusElement.removeFocusBorder();
|
|
3374
|
+
delete chart.focusElement;
|
|
3264
3375
|
}
|
|
3265
|
-
this.currentModuleIx = 0;
|
|
3266
3376
|
this.keyboardReset = true;
|
|
3267
3377
|
}
|
|
3268
3378
|
};
|
|
@@ -3289,10 +3399,10 @@
|
|
|
3289
3399
|
preventDefault = true;
|
|
3290
3400
|
}
|
|
3291
3401
|
else if (response === curNavModule.response.prev) {
|
|
3292
|
-
preventDefault = this.
|
|
3402
|
+
preventDefault = this.move(-1);
|
|
3293
3403
|
}
|
|
3294
3404
|
else if (response === curNavModule.response.next) {
|
|
3295
|
-
preventDefault = this.
|
|
3405
|
+
preventDefault = this.move(1);
|
|
3296
3406
|
}
|
|
3297
3407
|
if (preventDefault) {
|
|
3298
3408
|
e.preventDefault();
|
|
@@ -3300,79 +3410,6 @@
|
|
|
3300
3410
|
}
|
|
3301
3411
|
}
|
|
3302
3412
|
};
|
|
3303
|
-
/**
|
|
3304
|
-
* Go to previous module.
|
|
3305
|
-
* @private
|
|
3306
|
-
*/
|
|
3307
|
-
KeyboardNavigation.prototype.prev = function () {
|
|
3308
|
-
return this.move(-1);
|
|
3309
|
-
};
|
|
3310
|
-
/**
|
|
3311
|
-
* Go to next module.
|
|
3312
|
-
* @private
|
|
3313
|
-
*/
|
|
3314
|
-
KeyboardNavigation.prototype.next = function () {
|
|
3315
|
-
return this.move(1);
|
|
3316
|
-
};
|
|
3317
|
-
/**
|
|
3318
|
-
* Move to prev/next module.
|
|
3319
|
-
* @private
|
|
3320
|
-
* @param {number} direction
|
|
3321
|
-
* Direction to move. +1 for next, -1 for prev.
|
|
3322
|
-
* @return {boolean}
|
|
3323
|
-
* True if there was a valid module in direction.
|
|
3324
|
-
*/
|
|
3325
|
-
KeyboardNavigation.prototype.move = function (direction) {
|
|
3326
|
-
var curModule = this.modules && this.modules[this.currentModuleIx];
|
|
3327
|
-
if (curModule && curModule.terminate) {
|
|
3328
|
-
curModule.terminate(direction);
|
|
3329
|
-
}
|
|
3330
|
-
// Remove existing focus border if any
|
|
3331
|
-
if (this.chart.focusElement) {
|
|
3332
|
-
this.chart.focusElement.removeFocusBorder();
|
|
3333
|
-
}
|
|
3334
|
-
this.currentModuleIx += direction;
|
|
3335
|
-
var newModule = this.modules && this.modules[this.currentModuleIx];
|
|
3336
|
-
if (newModule) {
|
|
3337
|
-
if (newModule.validate && !newModule.validate()) {
|
|
3338
|
-
return this.move(direction); // Invalid module, recurse
|
|
3339
|
-
}
|
|
3340
|
-
if (newModule.init) {
|
|
3341
|
-
newModule.init(direction); // Valid module, init it
|
|
3342
|
-
return true;
|
|
3343
|
-
}
|
|
3344
|
-
}
|
|
3345
|
-
// No module
|
|
3346
|
-
this.currentModuleIx = 0; // Reset counter
|
|
3347
|
-
// Set focus to chart or exit anchor depending on direction
|
|
3348
|
-
this.exiting = true;
|
|
3349
|
-
if (direction > 0) {
|
|
3350
|
-
this.exitAnchor.focus();
|
|
3351
|
-
}
|
|
3352
|
-
else {
|
|
3353
|
-
this.tabindexContainer.focus();
|
|
3354
|
-
}
|
|
3355
|
-
return false;
|
|
3356
|
-
};
|
|
3357
|
-
/**
|
|
3358
|
-
* We use an exit anchor to move focus out of chart whenever we want, by
|
|
3359
|
-
* setting focus to this div and not preventing the default tab action. We
|
|
3360
|
-
* also use this when users come back into the chart by tabbing back, in
|
|
3361
|
-
* order to navigate from the end of the chart.
|
|
3362
|
-
* @private
|
|
3363
|
-
*/
|
|
3364
|
-
KeyboardNavigation.prototype.updateExitAnchor = function () {
|
|
3365
|
-
var endMarkerId = ('highcharts-end-of-chart-marker-' + this.chart.index),
|
|
3366
|
-
endMarker = getElement(endMarkerId);
|
|
3367
|
-
this.removeExitAnchor();
|
|
3368
|
-
if (endMarker) {
|
|
3369
|
-
this.makeElementAnExitAnchor(endMarker);
|
|
3370
|
-
this.exitAnchor = endMarker;
|
|
3371
|
-
}
|
|
3372
|
-
else {
|
|
3373
|
-
this.createExitAnchor();
|
|
3374
|
-
}
|
|
3375
|
-
};
|
|
3376
3413
|
/**
|
|
3377
3414
|
* Chart container should have tabindex if navigation is enabled.
|
|
3378
3415
|
* @private
|
|
@@ -3401,6 +3438,18 @@
|
|
|
3401
3438
|
}
|
|
3402
3439
|
};
|
|
3403
3440
|
/**
|
|
3441
|
+
* Add new exit anchor to the chart.
|
|
3442
|
+
* @private
|
|
3443
|
+
*/
|
|
3444
|
+
KeyboardNavigation.prototype.createExitAnchor = function () {
|
|
3445
|
+
var chart = this.chart,
|
|
3446
|
+
exitAnchor = this.exitAnchor = doc.createElement('div');
|
|
3447
|
+
chart.renderTo.appendChild(exitAnchor);
|
|
3448
|
+
this.makeElementAnExitAnchor(exitAnchor);
|
|
3449
|
+
};
|
|
3450
|
+
/**
|
|
3451
|
+
* Add attributes and events to an element to make it function as an
|
|
3452
|
+
* exit anchor.
|
|
3404
3453
|
* @private
|
|
3405
3454
|
*/
|
|
3406
3455
|
KeyboardNavigation.prototype.makeElementAnExitAnchor = function (el) {
|
|
@@ -3412,27 +3461,17 @@
|
|
|
3412
3461
|
this.addExitAnchorEventsToEl(el);
|
|
3413
3462
|
};
|
|
3414
3463
|
/**
|
|
3415
|
-
*
|
|
3416
|
-
*
|
|
3417
|
-
* @private
|
|
3418
|
-
*/
|
|
3419
|
-
KeyboardNavigation.prototype.createExitAnchor = function () {
|
|
3420
|
-
var chart = this.chart,
|
|
3421
|
-
exitAnchor = this.exitAnchor = doc.createElement('div');
|
|
3422
|
-
chart.renderTo.appendChild(exitAnchor);
|
|
3423
|
-
this.makeElementAnExitAnchor(exitAnchor);
|
|
3424
|
-
};
|
|
3425
|
-
/**
|
|
3464
|
+
* Destroy the exit anchor and remove from DOM.
|
|
3426
3465
|
* @private
|
|
3427
3466
|
*/
|
|
3428
3467
|
KeyboardNavigation.prototype.removeExitAnchor = function () {
|
|
3429
3468
|
if (this.exitAnchor && this.exitAnchor.parentNode) {
|
|
3430
|
-
this.exitAnchor.parentNode
|
|
3431
|
-
.removeChild(this.exitAnchor);
|
|
3469
|
+
this.exitAnchor.parentNode.removeChild(this.exitAnchor);
|
|
3432
3470
|
delete this.exitAnchor;
|
|
3433
3471
|
}
|
|
3434
3472
|
};
|
|
3435
3473
|
/**
|
|
3474
|
+
* Add focus handler to exit anchor element.
|
|
3436
3475
|
* @private
|
|
3437
3476
|
*/
|
|
3438
3477
|
KeyboardNavigation.prototype.addExitAnchorEventsToEl = function (element) {
|
|
@@ -3443,6 +3482,9 @@
|
|
|
3443
3482
|
focusComesFromChart = (e.relatedTarget &&
|
|
3444
3483
|
chart.container.contains(e.relatedTarget)),
|
|
3445
3484
|
comingInBackwards = !(focusComesFromChart || keyboardNavigation.exiting);
|
|
3485
|
+
if (chart.focusElement) {
|
|
3486
|
+
delete chart.focusElement;
|
|
3487
|
+
}
|
|
3446
3488
|
if (comingInBackwards) {
|
|
3447
3489
|
// Focus the container instead
|
|
3448
3490
|
keyboardNavigation.tabbingInBackwards = true;
|
|
@@ -3460,7 +3502,7 @@
|
|
|
3460
3502
|
if (curModule &&
|
|
3461
3503
|
curModule.validate && !curModule.validate()) {
|
|
3462
3504
|
// Invalid. Try moving backwards to find next valid.
|
|
3463
|
-
keyboardNavigation.
|
|
3505
|
+
keyboardNavigation.move(-1);
|
|
3464
3506
|
}
|
|
3465
3507
|
else if (curModule) {
|
|
3466
3508
|
// We have a valid module, init it
|
|
@@ -3474,6 +3516,21 @@
|
|
|
3474
3516
|
}
|
|
3475
3517
|
});
|
|
3476
3518
|
};
|
|
3519
|
+
/**
|
|
3520
|
+
* Get the ix of the first module that either does not require validation or
|
|
3521
|
+
* validates positively.
|
|
3522
|
+
* @private
|
|
3523
|
+
*/
|
|
3524
|
+
KeyboardNavigation.prototype.getFirstValidModuleIx = function () {
|
|
3525
|
+
var len = this.modules.length;
|
|
3526
|
+
for (var i = 0; i < len; ++i) {
|
|
3527
|
+
var mod = this.modules[i];
|
|
3528
|
+
if (!mod.validate || mod.validate()) {
|
|
3529
|
+
return i;
|
|
3530
|
+
}
|
|
3531
|
+
}
|
|
3532
|
+
return null;
|
|
3533
|
+
};
|
|
3477
3534
|
/**
|
|
3478
3535
|
* Remove all traces of keyboard navigation.
|
|
3479
3536
|
* @private
|
|
@@ -3509,6 +3566,7 @@
|
|
|
3509
3566
|
* */
|
|
3510
3567
|
/* eslint-disable valid-jsdoc */
|
|
3511
3568
|
/**
|
|
3569
|
+
* Composition function.
|
|
3512
3570
|
* @private
|
|
3513
3571
|
*/
|
|
3514
3572
|
function compose(ChartClass) {
|
|
@@ -3592,6 +3650,7 @@
|
|
|
3592
3650
|
};
|
|
3593
3651
|
})();
|
|
3594
3652
|
var animObject = A.animObject;
|
|
3653
|
+
var doc = H.doc;
|
|
3595
3654
|
var addEvent = U.addEvent,
|
|
3596
3655
|
fireEvent = U.fireEvent,
|
|
3597
3656
|
isNumber = U.isNumber,
|
|
@@ -3627,6 +3686,19 @@
|
|
|
3627
3686
|
!(chart.colorAxis && chart.colorAxis.length) &&
|
|
3628
3687
|
legendA11yOptions.enabled !== false);
|
|
3629
3688
|
}
|
|
3689
|
+
/**
|
|
3690
|
+
* @private
|
|
3691
|
+
*/
|
|
3692
|
+
function setLegendItemHoverState(hoverActive, legendItem) {
|
|
3693
|
+
legendItem.setState(hoverActive ? 'hover' : '', true);
|
|
3694
|
+
['legendGroup', 'legendItem', 'legendSymbol'].forEach(function (i) {
|
|
3695
|
+
var obj = legendItem[i];
|
|
3696
|
+
var el = obj && obj.element || obj;
|
|
3697
|
+
if (el) {
|
|
3698
|
+
fireEvent(el, hoverActive ? 'mouseover' : 'mouseout');
|
|
3699
|
+
}
|
|
3700
|
+
});
|
|
3701
|
+
}
|
|
3630
3702
|
/* *
|
|
3631
3703
|
*
|
|
3632
3704
|
* Class
|
|
@@ -3650,6 +3722,7 @@
|
|
|
3650
3722
|
var _this = _super !== null && _super.apply(this,
|
|
3651
3723
|
arguments) || this;
|
|
3652
3724
|
_this.highlightedLegendItemIx = NaN;
|
|
3725
|
+
_this.proxyGroup = null;
|
|
3653
3726
|
return _this;
|
|
3654
3727
|
}
|
|
3655
3728
|
/* *
|
|
@@ -3775,12 +3848,19 @@
|
|
|
3775
3848
|
* @private
|
|
3776
3849
|
*/
|
|
3777
3850
|
LegendComponent.prototype.recreateProxies = function () {
|
|
3851
|
+
var focusedElement = doc.activeElement;
|
|
3852
|
+
var proxyGroup = this.proxyGroup;
|
|
3853
|
+
var shouldRestoreFocus = focusedElement && proxyGroup &&
|
|
3854
|
+
proxyGroup.contains(focusedElement);
|
|
3778
3855
|
this.removeProxies();
|
|
3779
3856
|
if (shouldDoLegendA11y(this.chart)) {
|
|
3780
3857
|
this.addLegendProxyGroup();
|
|
3781
3858
|
this.proxyLegendItems();
|
|
3782
3859
|
this.updateLegendItemProxyVisibility();
|
|
3783
3860
|
this.updateLegendTitle();
|
|
3861
|
+
if (shouldRestoreFocus) {
|
|
3862
|
+
this.chart.highlightLegendItem(this.highlightedLegendItemIx);
|
|
3863
|
+
}
|
|
3784
3864
|
return true;
|
|
3785
3865
|
}
|
|
3786
3866
|
return false;
|
|
@@ -3816,7 +3896,7 @@
|
|
|
3816
3896
|
var a11yOptions = this.chart.options.accessibility;
|
|
3817
3897
|
var groupRole = a11yOptions.landmarkVerbosity === 'all' ?
|
|
3818
3898
|
'region' : null;
|
|
3819
|
-
this.proxyProvider.addGroup('legend', 'ul', {
|
|
3899
|
+
this.proxyGroup = this.proxyProvider.addGroup('legend', 'ul', {
|
|
3820
3900
|
// Filled by updateLegendTitle, to keep up to date without
|
|
3821
3901
|
// recreating group
|
|
3822
3902
|
'aria-label': '_placeholder_',
|
|
@@ -3900,21 +3980,19 @@
|
|
|
3900
3980
|
validate: function () {
|
|
3901
3981
|
return component.shouldHaveLegendNavigation();
|
|
3902
3982
|
},
|
|
3903
|
-
init: function (
|
|
3904
|
-
|
|
3983
|
+
init: function () {
|
|
3984
|
+
chart.highlightLegendItem(0);
|
|
3985
|
+
component.highlightedLegendItemIx = 0;
|
|
3905
3986
|
},
|
|
3906
3987
|
terminate: function () {
|
|
3907
3988
|
component.highlightedLegendItemIx = -1;
|
|
3908
|
-
chart.legend.allItems.forEach(function (item) { return
|
|
3989
|
+
chart.legend.allItems.forEach(function (item) { return setLegendItemHoverState(false, item); });
|
|
3909
3990
|
}
|
|
3910
3991
|
});
|
|
3911
3992
|
};
|
|
3912
3993
|
/**
|
|
3994
|
+
* Arrow key navigation
|
|
3913
3995
|
* @private
|
|
3914
|
-
* @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler
|
|
3915
|
-
* @param {number} keyCode
|
|
3916
|
-
* @return {number}
|
|
3917
|
-
* Response code
|
|
3918
3996
|
*/
|
|
3919
3997
|
LegendComponent.prototype.onKbdArrowKey = function (keyboardNavigationHandler, keyCode) {
|
|
3920
3998
|
var keys = this.keyCodes,
|
|
@@ -3933,8 +4011,7 @@
|
|
|
3933
4011
|
keyboardNavigationHandler.init(direction);
|
|
3934
4012
|
return response.success;
|
|
3935
4013
|
}
|
|
3936
|
-
|
|
3937
|
-
return response[direction > 0 ? 'next' : 'prev'];
|
|
4014
|
+
return response.success;
|
|
3938
4015
|
};
|
|
3939
4016
|
/**
|
|
3940
4017
|
* @private
|
|
@@ -3964,17 +4041,6 @@
|
|
|
3964
4041
|
legendA11yOptions.keyboardNavigation &&
|
|
3965
4042
|
legendA11yOptions.keyboardNavigation.enabled);
|
|
3966
4043
|
};
|
|
3967
|
-
/**
|
|
3968
|
-
* @private
|
|
3969
|
-
* @param {number} direction
|
|
3970
|
-
*/
|
|
3971
|
-
LegendComponent.prototype.onKbdNavigationInit = function (direction) {
|
|
3972
|
-
var chart = this.chart,
|
|
3973
|
-
lastIx = chart.legend.allItems.length - 1,
|
|
3974
|
-
ixToHighlight = direction > 0 ? 0 : lastIx;
|
|
3975
|
-
chart.highlightLegendItem(ixToHighlight);
|
|
3976
|
-
this.highlightedLegendItemIx = ixToHighlight;
|
|
3977
|
-
};
|
|
3978
4044
|
return LegendComponent;
|
|
3979
4045
|
}(AccessibilityComponent));
|
|
3980
4046
|
/* *
|
|
@@ -4011,7 +4077,7 @@
|
|
|
4011
4077
|
var itemToHighlight = items[ix];
|
|
4012
4078
|
if (itemToHighlight) {
|
|
4013
4079
|
if (isNumber(oldIx) && items[oldIx]) {
|
|
4014
|
-
|
|
4080
|
+
setLegendItemHoverState(false, items[oldIx]);
|
|
4015
4081
|
}
|
|
4016
4082
|
scrollLegendToItem(this.legend, ix);
|
|
4017
4083
|
var legendItemProp = itemToHighlight.legendItem;
|
|
@@ -4020,9 +4086,7 @@
|
|
|
4020
4086
|
if (legendItemProp && legendItemProp.element && proxyBtn) {
|
|
4021
4087
|
this.setFocusToElement(legendItemProp, proxyBtn);
|
|
4022
4088
|
}
|
|
4023
|
-
|
|
4024
|
-
fireEvent(itemToHighlight.legendGroup.element, 'mouseover');
|
|
4025
|
-
}
|
|
4089
|
+
setLegendItemHoverState(true, itemToHighlight);
|
|
4026
4090
|
return true;
|
|
4027
4091
|
}
|
|
4028
4092
|
return false;
|
|
@@ -4111,14 +4175,21 @@
|
|
|
4111
4175
|
}) || null;
|
|
4112
4176
|
}
|
|
4113
4177
|
/**
|
|
4178
|
+
* Whether or not we should add a dummy point element in
|
|
4179
|
+
* order to describe a point that has no graphic.
|
|
4114
4180
|
* @private
|
|
4115
4181
|
*/
|
|
4116
4182
|
function shouldAddDummyPoint(point) {
|
|
4117
4183
|
// Note: Sunburst series use isNull for hidden points on drilldown.
|
|
4118
4184
|
// Ignore these.
|
|
4119
|
-
var
|
|
4120
|
-
|
|
4121
|
-
|
|
4185
|
+
var series = point.series,
|
|
4186
|
+
chart = series && series.chart,
|
|
4187
|
+
isSunburst = series && series.is('sunburst'),
|
|
4188
|
+
isNull = point.isNull,
|
|
4189
|
+
shouldDescribeNull = chart &&
|
|
4190
|
+
chart
|
|
4191
|
+
.options.accessibility.point.describeNull;
|
|
4192
|
+
return isNull && !isSunburst && shouldDescribeNull;
|
|
4122
4193
|
}
|
|
4123
4194
|
/**
|
|
4124
4195
|
* @private
|
|
@@ -4366,9 +4437,9 @@
|
|
|
4366
4437
|
* @private
|
|
4367
4438
|
*/
|
|
4368
4439
|
function defaultPointDescriptionFormatter(point) {
|
|
4369
|
-
var series = point.series,
|
|
4370
|
-
|
|
4371
|
-
' ' + series.name + '.' : '', annotationsDesc = getPointAnnotationDescription(point), pointAnnotationsText = annotationsDesc ? ' ' + annotationsDesc : '';
|
|
4440
|
+
var series = point.series, shouldExposeSeriesName = series.chart.series.length > 1 ||
|
|
4441
|
+
series.options.name, valText = getPointValueDescription(point), description = point.options && point.options.accessibility &&
|
|
4442
|
+
point.options.accessibility.description, userDescText = description ? ' ' + description : '', seriesNameText = shouldExposeSeriesName ? ' ' + series.name + '.' : '', annotationsDesc = getPointAnnotationDescription(point), pointAnnotationsText = annotationsDesc ? ' ' + annotationsDesc : '';
|
|
4372
4443
|
point.accessibility = point.accessibility || {};
|
|
4373
4444
|
point.accessibility.valueDescription = valText;
|
|
4374
4445
|
return valText + userDescText + seriesNameText + pointAnnotationsText;
|
|
@@ -4399,15 +4470,21 @@
|
|
|
4399
4470
|
*/
|
|
4400
4471
|
function describePointsInSeries(series) {
|
|
4401
4472
|
var setScreenReaderProps = shouldSetScreenReaderPropsOnPoints(series),
|
|
4402
|
-
setKeyboardProps = shouldSetKeyboardNavPropsOnPoints(series)
|
|
4473
|
+
setKeyboardProps = shouldSetKeyboardNavPropsOnPoints(series),
|
|
4474
|
+
shouldDescribeNullPoints = series.chart.options.accessibility
|
|
4475
|
+
.point.describeNull;
|
|
4403
4476
|
if (setScreenReaderProps || setKeyboardProps) {
|
|
4404
4477
|
series.points.forEach(function (point) {
|
|
4405
4478
|
var pointEl = point.graphic && point.graphic.element ||
|
|
4406
|
-
shouldAddDummyPoint(point) && addDummyPointElement(point)
|
|
4407
|
-
|
|
4479
|
+
shouldAddDummyPoint(point) && addDummyPointElement(point),
|
|
4480
|
+
pointA11yDisabled = (point.options &&
|
|
4408
4481
|
point.options.accessibility &&
|
|
4409
4482
|
point.options.accessibility.enabled === false);
|
|
4410
4483
|
if (pointEl) {
|
|
4484
|
+
if (point.isNull && !shouldDescribeNullPoints) {
|
|
4485
|
+
pointEl.setAttribute('aria-hidden', true);
|
|
4486
|
+
return;
|
|
4487
|
+
}
|
|
4411
4488
|
// We always set tabindex, as long as we are setting props.
|
|
4412
4489
|
// When setting tabindex, also remove default outline to
|
|
4413
4490
|
// avoid ugly border on click.
|
|
@@ -4435,14 +4512,19 @@
|
|
|
4435
4512
|
description = getSeriesDescriptionText(series),
|
|
4436
4513
|
shouldDescribeAxis = function (coll) {
|
|
4437
4514
|
return chart[coll] && chart[coll].length > 1 && series[coll];
|
|
4438
|
-
}, xAxisInfo = getSeriesAxisDescriptionText(series, 'xAxis'), yAxisInfo = getSeriesAxisDescriptionText(series, 'yAxis'), summaryContext = {
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4515
|
+
}, seriesNumber = series.index + 1, xAxisInfo = getSeriesAxisDescriptionText(series, 'xAxis'), yAxisInfo = getSeriesAxisDescriptionText(series, 'yAxis'), summaryContext = {
|
|
4516
|
+
seriesNumber: seriesNumber,
|
|
4517
|
+
series: series,
|
|
4518
|
+
chart: chart
|
|
4519
|
+
}, combinationSuffix = chartTypes.length > 1 ? 'Combination' : '', summary = chart.langFormat('accessibility.series.summary.' + series.type + combinationSuffix, summaryContext) || chart.langFormat('accessibility.series.summary.default' + combinationSuffix, summaryContext), axisDescription = (shouldDescribeAxis('yAxis') ? ' ' + yAxisInfo + '.' : '') + (shouldDescribeAxis('xAxis') ? ' ' + xAxisInfo + '.' : ''), formatStr = chart.options.accessibility.series.descriptionFormat || '';
|
|
4520
|
+
return format(formatStr, {
|
|
4521
|
+
seriesDescription: summary,
|
|
4522
|
+
authorDescription: (description ? ' ' + description : ''),
|
|
4523
|
+
axisDescription: axisDescription,
|
|
4524
|
+
series: series,
|
|
4525
|
+
chart: chart,
|
|
4526
|
+
seriesNumber: seriesNumber
|
|
4527
|
+
}, void 0);
|
|
4446
4528
|
}
|
|
4447
4529
|
/**
|
|
4448
4530
|
* Set a11y props on a series element
|
|
@@ -4460,7 +4542,10 @@
|
|
|
4460
4542
|
}
|
|
4461
4543
|
else if (landmarkVerbosity === 'all') {
|
|
4462
4544
|
seriesElement.setAttribute('role', 'region');
|
|
4463
|
-
}
|
|
4545
|
+
}
|
|
4546
|
+
else {
|
|
4547
|
+
seriesElement.setAttribute('role', 'group');
|
|
4548
|
+
}
|
|
4464
4549
|
seriesElement.setAttribute('tabindex', '-1');
|
|
4465
4550
|
if (!series.chart.styledMode) {
|
|
4466
4551
|
// Don't show browser outline on click, despite tabindex
|
|
@@ -4493,7 +4578,7 @@
|
|
|
4493
4578
|
describeSeriesElement(series, seriesEl);
|
|
4494
4579
|
}
|
|
4495
4580
|
else {
|
|
4496
|
-
seriesEl.
|
|
4581
|
+
seriesEl.removeAttribute('aria-label');
|
|
4497
4582
|
}
|
|
4498
4583
|
}
|
|
4499
4584
|
}
|
|
@@ -4628,7 +4713,7 @@
|
|
|
4628
4713
|
var announcer = this,
|
|
4629
4714
|
chart = this.chart,
|
|
4630
4715
|
e = this.eventProvider;
|
|
4631
|
-
e.addEvent(chart, '
|
|
4716
|
+
e.addEvent(chart, 'afterApplyDrilldown', function () {
|
|
4632
4717
|
announcer.lastAnnouncementTime = 0;
|
|
4633
4718
|
});
|
|
4634
4719
|
e.addEvent(chart, 'afterAddSeries', function (e) {
|
|
@@ -4938,9 +5023,15 @@
|
|
|
4938
5023
|
ProxyElement.prototype.updateTarget = function (target, attributes) {
|
|
4939
5024
|
this.target = target;
|
|
4940
5025
|
this.updateCSSClassName();
|
|
5026
|
+
var attrs = attributes || {};
|
|
5027
|
+
Object.keys(attrs).forEach(function (a) {
|
|
5028
|
+
if (attrs[a] === null) {
|
|
5029
|
+
delete attrs[a];
|
|
5030
|
+
}
|
|
5031
|
+
});
|
|
4941
5032
|
attr(this.buttonElement, merge({
|
|
4942
5033
|
'aria-label': this.getTargetAttr(target.click, 'aria-label')
|
|
4943
|
-
},
|
|
5034
|
+
}, attrs));
|
|
4944
5035
|
this.eventProvider.removeAddedEvents();
|
|
4945
5036
|
this.addProxyEventsToButton(this.buttonElement, target.click);
|
|
4946
5037
|
this.refreshPosition();
|
|
@@ -5038,12 +5129,14 @@
|
|
|
5038
5129
|
var chartDiv = this.chart.renderTo;
|
|
5039
5130
|
if (chartDiv && posElement && posElement.getBoundingClientRect) {
|
|
5040
5131
|
var rectEl = posElement.getBoundingClientRect(),
|
|
5041
|
-
|
|
5132
|
+
chartPos = this.chart.pointer.getChartPosition();
|
|
5042
5133
|
return {
|
|
5043
|
-
x: rectEl.left -
|
|
5044
|
-
y: rectEl.top -
|
|
5045
|
-
width: rectEl.right
|
|
5046
|
-
|
|
5134
|
+
x: (rectEl.left - chartPos.left) / chartPos.scaleX,
|
|
5135
|
+
y: (rectEl.top - chartPos.top) / chartPos.scaleY,
|
|
5136
|
+
width: rectEl.right / chartPos.scaleX -
|
|
5137
|
+
rectEl.left / chartPos.scaleX,
|
|
5138
|
+
height: rectEl.bottom / chartPos.scaleY -
|
|
5139
|
+
rectEl.top / chartPos.scaleY
|
|
5047
5140
|
};
|
|
5048
5141
|
}
|
|
5049
5142
|
return { x: 0, y: 0, width: 1, height: 1 };
|
|
@@ -5140,10 +5233,13 @@
|
|
|
5140
5233
|
/**
|
|
5141
5234
|
* Create a group that will contain proxy elements. The group order is
|
|
5142
5235
|
* automatically updated according to the last group order keys.
|
|
5236
|
+
*
|
|
5237
|
+
* Returns the added group.
|
|
5143
5238
|
*/
|
|
5144
5239
|
ProxyProvider.prototype.addGroup = function (groupKey, groupType, attributes) {
|
|
5145
|
-
|
|
5146
|
-
|
|
5240
|
+
var existingGroup = this.groups[groupKey];
|
|
5241
|
+
if (existingGroup) {
|
|
5242
|
+
return existingGroup.groupElement;
|
|
5147
5243
|
}
|
|
5148
5244
|
var proxyContainer = this.domElementProvider.createElement(groupType);
|
|
5149
5245
|
// If we want to add a role to the group, and still use e.g.
|
|
@@ -5172,6 +5268,7 @@
|
|
|
5172
5268
|
// won't have to reorder the whole set of groups.
|
|
5173
5269
|
this.afterChartProxyPosContainer.appendChild(groupElement);
|
|
5174
5270
|
this.updateGroupOrder(this.groupOrder);
|
|
5271
|
+
return groupElement;
|
|
5175
5272
|
};
|
|
5176
5273
|
/**
|
|
5177
5274
|
* Update HTML attributes of a group.
|
|
@@ -5355,6 +5452,10 @@
|
|
|
5355
5452
|
*/
|
|
5356
5453
|
ProxyProvider.prototype.updatePosContainerPositions = function () {
|
|
5357
5454
|
var chart = this.chart;
|
|
5455
|
+
// If exporting, don't add these containers to the DOM.
|
|
5456
|
+
if (chart.renderer.forExport) {
|
|
5457
|
+
return;
|
|
5458
|
+
}
|
|
5358
5459
|
var rendererSVGEl = chart.renderer.box;
|
|
5359
5460
|
chart.container.insertBefore(this.afterChartProxyPosContainer, rendererSVGEl.nextSibling);
|
|
5360
5461
|
chart.container.insertBefore(this.beforeChartProxyPosContainer, rendererSVGEl);
|
|
@@ -7968,7 +8069,7 @@
|
|
|
7968
8069
|
if (chart.accessibility) {
|
|
7969
8070
|
chart.accessibility.keyboardNavigation.tabindexContainer
|
|
7970
8071
|
.focus();
|
|
7971
|
-
chart.accessibility.keyboardNavigation
|
|
8072
|
+
chart.accessibility.keyboardNavigation.move(direction);
|
|
7972
8073
|
}
|
|
7973
8074
|
}
|
|
7974
8075
|
else if (rangeSel) {
|
|
@@ -8059,7 +8160,7 @@
|
|
|
8059
8160
|
e.stopPropagation();
|
|
8060
8161
|
if (a11y) {
|
|
8061
8162
|
a11y.keyboardNavigation.tabindexContainer.focus();
|
|
8062
|
-
a11y.keyboardNavigation
|
|
8163
|
+
a11y.keyboardNavigation.move(e.shiftKey ? -1 : 1);
|
|
8063
8164
|
}
|
|
8064
8165
|
}
|
|
8065
8166
|
});
|
|
@@ -8417,6 +8518,7 @@
|
|
|
8417
8518
|
else if (series.a11yMarkersForced) {
|
|
8418
8519
|
delete series.a11yMarkersForced;
|
|
8419
8520
|
unforceSeriesMarkerOptions(series);
|
|
8521
|
+
delete series.resetA11yMarkerOptions;
|
|
8420
8522
|
}
|
|
8421
8523
|
}
|
|
8422
8524
|
/**
|
|
@@ -8444,20 +8546,20 @@
|
|
|
8444
8546
|
});
|
|
8445
8547
|
}
|
|
8446
8548
|
/**
|
|
8549
|
+
* Reset markers to normal
|
|
8447
8550
|
* @private
|
|
8448
8551
|
*/
|
|
8449
8552
|
function unforceSeriesMarkerOptions(series) {
|
|
8450
8553
|
var resetMarkerOptions = series.resetA11yMarkerOptions;
|
|
8451
8554
|
if (resetMarkerOptions) {
|
|
8452
|
-
|
|
8555
|
+
var originalOpactiy = resetMarkerOptions.states &&
|
|
8556
|
+
resetMarkerOptions.states.normal &&
|
|
8557
|
+
resetMarkerOptions.states.normal.opacity;
|
|
8558
|
+
series.update({
|
|
8453
8559
|
marker: {
|
|
8454
8560
|
enabled: resetMarkerOptions.enabled,
|
|
8455
8561
|
states: {
|
|
8456
|
-
normal: {
|
|
8457
|
-
opacity: resetMarkerOptions.states &&
|
|
8458
|
-
resetMarkerOptions.states.normal &&
|
|
8459
|
-
resetMarkerOptions.states.normal.opacity
|
|
8460
|
-
}
|
|
8562
|
+
normal: { opacity: originalOpactiy }
|
|
8461
8563
|
}
|
|
8462
8564
|
}
|
|
8463
8565
|
});
|
|
@@ -8557,6 +8659,37 @@
|
|
|
8557
8659
|
pointA11yDisabled ||
|
|
8558
8660
|
isSkipSeries(point.series);
|
|
8559
8661
|
}
|
|
8662
|
+
/**
|
|
8663
|
+
* Get the first point that is not a skip point in this series.
|
|
8664
|
+
* @private
|
|
8665
|
+
*/
|
|
8666
|
+
function getFirstValidPointInSeries(series) {
|
|
8667
|
+
var points = series.points || [],
|
|
8668
|
+
len = points.length;
|
|
8669
|
+
for (var i = 0; i < len; ++i) {
|
|
8670
|
+
if (!isSkipPoint(points[i])) {
|
|
8671
|
+
return points[i];
|
|
8672
|
+
}
|
|
8673
|
+
}
|
|
8674
|
+
return null;
|
|
8675
|
+
}
|
|
8676
|
+
/**
|
|
8677
|
+
* Get the first point that is not a skip point in this chart.
|
|
8678
|
+
* @private
|
|
8679
|
+
*/
|
|
8680
|
+
function getFirstValidPointInChart(chart) {
|
|
8681
|
+
var series = chart.series || [],
|
|
8682
|
+
len = series.length;
|
|
8683
|
+
for (var i = 0; i < len; ++i) {
|
|
8684
|
+
if (!isSkipSeries(series[i])) {
|
|
8685
|
+
var point = getFirstValidPointInSeries(series[i]);
|
|
8686
|
+
if (point) {
|
|
8687
|
+
return point;
|
|
8688
|
+
}
|
|
8689
|
+
}
|
|
8690
|
+
}
|
|
8691
|
+
return null;
|
|
8692
|
+
}
|
|
8560
8693
|
/**
|
|
8561
8694
|
* @private
|
|
8562
8695
|
*/
|
|
@@ -8569,7 +8702,7 @@
|
|
|
8569
8702
|
// Highlight first valid point in the series will also
|
|
8570
8703
|
// look backwards. It always starts from currently
|
|
8571
8704
|
// highlighted point.
|
|
8572
|
-
res = chart.series[i].
|
|
8705
|
+
res = chart.series[i].highlightNextValidPoint();
|
|
8573
8706
|
if (res) {
|
|
8574
8707
|
break;
|
|
8575
8708
|
}
|
|
@@ -8577,24 +8710,24 @@
|
|
|
8577
8710
|
return res;
|
|
8578
8711
|
}
|
|
8579
8712
|
/**
|
|
8713
|
+
* After drilling down/up, we need to set focus to the first point for
|
|
8714
|
+
* screen readers and keyboard nav.
|
|
8580
8715
|
* @private
|
|
8581
8716
|
*/
|
|
8582
8717
|
function updateChartFocusAfterDrilling(chart) {
|
|
8583
|
-
|
|
8584
|
-
if (
|
|
8585
|
-
|
|
8718
|
+
var point = getFirstValidPointInChart(chart);
|
|
8719
|
+
if (point) {
|
|
8720
|
+
point.highlight(false); // Do not visually highlight
|
|
8586
8721
|
}
|
|
8587
8722
|
}
|
|
8588
8723
|
/**
|
|
8724
|
+
* Highlight the first point in chart that is not a skip point
|
|
8589
8725
|
* @private
|
|
8590
8726
|
*/
|
|
8591
8727
|
function highlightFirstValidPointInChart(chart) {
|
|
8592
|
-
var res = false;
|
|
8593
8728
|
delete chart.highlightedPoint;
|
|
8594
|
-
|
|
8595
|
-
|
|
8596
|
-
}, false);
|
|
8597
|
-
return res;
|
|
8729
|
+
var point = getFirstValidPointInChart(chart);
|
|
8730
|
+
return point ? point.highlight() : false;
|
|
8598
8731
|
}
|
|
8599
8732
|
/* *
|
|
8600
8733
|
*
|
|
@@ -8632,7 +8765,7 @@
|
|
|
8632
8765
|
e.addEvent(Series, 'destroy', function () {
|
|
8633
8766
|
return keyboardNavigation.onSeriesDestroy(this);
|
|
8634
8767
|
});
|
|
8635
|
-
e.addEvent(chart, '
|
|
8768
|
+
e.addEvent(chart, 'afterApplyDrilldown', function () {
|
|
8636
8769
|
updateChartFocusAfterDrilling(this);
|
|
8637
8770
|
});
|
|
8638
8771
|
e.addEvent(chart, 'drilldown', function (e) {
|
|
@@ -8672,11 +8805,11 @@
|
|
|
8672
8805
|
});
|
|
8673
8806
|
};
|
|
8674
8807
|
/**
|
|
8808
|
+
* After drillup we want to find the point that was drilled down to and
|
|
8809
|
+
* highlight it.
|
|
8675
8810
|
* @private
|
|
8676
8811
|
*/
|
|
8677
8812
|
SeriesKeyboardNavigation.prototype.onDrillupAll = function () {
|
|
8678
|
-
// After drillup we want to find the point that was drilled down to and
|
|
8679
|
-
// highlight it.
|
|
8680
8813
|
var last = this.lastDrilledDownPoint,
|
|
8681
8814
|
chart = this.chart,
|
|
8682
8815
|
series = last && getSeriesFromName(chart,
|
|
@@ -8685,15 +8818,13 @@
|
|
|
8685
8818
|
if (last && series && defined(last.x) && defined(last.y)) {
|
|
8686
8819
|
point = getPointFromXY(series, last.x, last.y);
|
|
8687
8820
|
}
|
|
8821
|
+
point = point || getFirstValidPointInChart(chart);
|
|
8688
8822
|
// Container focus can be lost on drillup due to deleted elements.
|
|
8689
8823
|
if (chart.container) {
|
|
8690
8824
|
chart.container.focus();
|
|
8691
8825
|
}
|
|
8692
8826
|
if (point && point.highlight) {
|
|
8693
|
-
point.highlight();
|
|
8694
|
-
}
|
|
8695
|
-
if (chart.focusElement) {
|
|
8696
|
-
chart.focusElement.removeFocusBorder();
|
|
8827
|
+
point.highlight(false); // Do not visually highlight
|
|
8697
8828
|
}
|
|
8698
8829
|
};
|
|
8699
8830
|
/**
|
|
@@ -8735,8 +8866,10 @@
|
|
|
8735
8866
|
}]
|
|
8736
8867
|
],
|
|
8737
8868
|
init: function () {
|
|
8738
|
-
|
|
8739
|
-
|
|
8869
|
+
return keyboardNavigation.onHandlerInit(this);
|
|
8870
|
+
},
|
|
8871
|
+
validate: function () {
|
|
8872
|
+
return !!getFirstValidPointInChart(chart);
|
|
8740
8873
|
},
|
|
8741
8874
|
terminate: function () {
|
|
8742
8875
|
return keyboardNavigation.onHandlerTerminate();
|
|
@@ -8755,6 +8888,25 @@
|
|
|
8755
8888
|
isNext = keyCode === keys.right || keyCode === keys.down;
|
|
8756
8889
|
return this.attemptHighlightAdjacentPoint(handler, isNext);
|
|
8757
8890
|
};
|
|
8891
|
+
/**
|
|
8892
|
+
* When keyboard navigation inits.
|
|
8893
|
+
* @private
|
|
8894
|
+
* @param {Highcharts.KeyboardNavigationHandler} handler The handler object
|
|
8895
|
+
* @return {number}
|
|
8896
|
+
* response
|
|
8897
|
+
*/
|
|
8898
|
+
SeriesKeyboardNavigation.prototype.onHandlerInit = function (handler) {
|
|
8899
|
+
var chart = this.chart,
|
|
8900
|
+
kbdNavOptions = chart.options.accessibility.keyboardNavigation;
|
|
8901
|
+
if (kbdNavOptions.seriesNavigation.rememberPointFocus &&
|
|
8902
|
+
chart.highlightedPoint) {
|
|
8903
|
+
chart.highlightedPoint.highlight();
|
|
8904
|
+
}
|
|
8905
|
+
else {
|
|
8906
|
+
highlightFirstValidPointInChart(chart);
|
|
8907
|
+
}
|
|
8908
|
+
return handler.response.success;
|
|
8909
|
+
};
|
|
8758
8910
|
/**
|
|
8759
8911
|
* @private
|
|
8760
8912
|
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
@@ -8784,7 +8936,8 @@
|
|
|
8784
8936
|
* @private
|
|
8785
8937
|
*/
|
|
8786
8938
|
SeriesKeyboardNavigation.prototype.onHandlerTerminate = function () {
|
|
8787
|
-
var chart = this.chart
|
|
8939
|
+
var chart = this.chart,
|
|
8940
|
+
kbdNavOptions = chart.options.accessibility.keyboardNavigation;
|
|
8788
8941
|
if (chart.tooltip) {
|
|
8789
8942
|
chart.tooltip.hide(0);
|
|
8790
8943
|
}
|
|
@@ -8795,15 +8948,13 @@
|
|
|
8795
8948
|
if (chart.highlightedPoint && chart.highlightedPoint.onMouseOut) {
|
|
8796
8949
|
chart.highlightedPoint.onMouseOut();
|
|
8797
8950
|
}
|
|
8798
|
-
|
|
8951
|
+
if (!kbdNavOptions.seriesNavigation.rememberPointFocus) {
|
|
8952
|
+
delete chart.highlightedPoint;
|
|
8953
|
+
}
|
|
8799
8954
|
};
|
|
8800
8955
|
/**
|
|
8801
8956
|
* Function that attempts to highlight next/prev point. Handles wrap around.
|
|
8802
8957
|
* @private
|
|
8803
|
-
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
8804
|
-
* @param {boolean} directionIsNext
|
|
8805
|
-
* @return {number}
|
|
8806
|
-
* response
|
|
8807
8958
|
*/
|
|
8808
8959
|
SeriesKeyboardNavigation.prototype.attemptHighlightAdjacentPoint = function (handler, directionIsNext) {
|
|
8809
8960
|
var chart = this.chart,
|
|
@@ -8811,8 +8962,10 @@
|
|
|
8811
8962
|
.wrapAround,
|
|
8812
8963
|
highlightSuccessful = chart.highlightAdjacentPoint(directionIsNext);
|
|
8813
8964
|
if (!highlightSuccessful) {
|
|
8814
|
-
if (wrapAround
|
|
8815
|
-
|
|
8965
|
+
if (wrapAround && (directionIsNext ?
|
|
8966
|
+
highlightFirstValidPointInChart(chart) :
|
|
8967
|
+
highlightLastValidPointInChart(chart))) {
|
|
8968
|
+
return handler.response.success;
|
|
8816
8969
|
}
|
|
8817
8970
|
return handler.response[directionIsNext ? 'next' : 'prev'];
|
|
8818
8971
|
}
|
|
@@ -9019,7 +9172,7 @@
|
|
|
9019
9172
|
// Highlight the new point or any first valid point back or forwards
|
|
9020
9173
|
// from it
|
|
9021
9174
|
newPoint.highlight();
|
|
9022
|
-
return newPoint.series.
|
|
9175
|
+
return newPoint.series.highlightNextValidPoint();
|
|
9023
9176
|
}
|
|
9024
9177
|
/**
|
|
9025
9178
|
* @private
|
|
@@ -9056,7 +9209,7 @@
|
|
|
9056
9209
|
seriesTypes[type].prototype.keyboardMoveVertical = false;
|
|
9057
9210
|
}
|
|
9058
9211
|
});
|
|
9059
|
-
seriesProto.
|
|
9212
|
+
seriesProto.highlightNextValidPoint = (seriesHighlightNextValidPoint);
|
|
9060
9213
|
}
|
|
9061
9214
|
}
|
|
9062
9215
|
SeriesKeyboardNavigation.compose = compose;
|
|
@@ -9094,7 +9247,7 @@
|
|
|
9094
9247
|
return defined(minIx) ? series.points[minIx] : void 0;
|
|
9095
9248
|
}
|
|
9096
9249
|
/**
|
|
9097
|
-
* Highlights a point (show tooltip
|
|
9250
|
+
* Highlights a point (show tooltip, display hover state, focus element).
|
|
9098
9251
|
*
|
|
9099
9252
|
* @private
|
|
9100
9253
|
* @function Highcharts.Point#highlight
|
|
@@ -9102,9 +9255,10 @@
|
|
|
9102
9255
|
* @return {Highcharts.Point}
|
|
9103
9256
|
* This highlighted point.
|
|
9104
9257
|
*/
|
|
9105
|
-
function pointHighlight() {
|
|
9258
|
+
function pointHighlight(highlightVisually) {
|
|
9259
|
+
if (highlightVisually === void 0) { highlightVisually = true; }
|
|
9106
9260
|
var chart = this.series.chart;
|
|
9107
|
-
if (!this.isNull) {
|
|
9261
|
+
if (!this.isNull && highlightVisually) {
|
|
9108
9262
|
this.onMouseOver(); // Show the hover marker and tooltip
|
|
9109
9263
|
}
|
|
9110
9264
|
else {
|
|
@@ -9119,6 +9273,9 @@
|
|
|
9119
9273
|
// change z-index and mess up the element.
|
|
9120
9274
|
if (this.graphic) {
|
|
9121
9275
|
chart.setFocusToElement(this.graphic);
|
|
9276
|
+
if (!highlightVisually && chart.focusElement) {
|
|
9277
|
+
chart.focusElement.removeFocusBorder();
|
|
9278
|
+
}
|
|
9122
9279
|
}
|
|
9123
9280
|
chart.highlightedPoint = this;
|
|
9124
9281
|
return this;
|
|
@@ -9129,9 +9286,9 @@
|
|
|
9129
9286
|
* point in the series, use that as starting point.
|
|
9130
9287
|
*
|
|
9131
9288
|
* @private
|
|
9132
|
-
* @function Highcharts.Series#
|
|
9289
|
+
* @function Highcharts.Series#highlightNextValidPoint
|
|
9133
9290
|
*/
|
|
9134
|
-
function
|
|
9291
|
+
function seriesHighlightNextValidPoint() {
|
|
9135
9292
|
var curPoint = this.chart.highlightedPoint,
|
|
9136
9293
|
start = (curPoint && curPoint.series) === this ?
|
|
9137
9294
|
getPointIndex(curPoint) :
|
|
@@ -9218,7 +9375,6 @@
|
|
|
9218
9375
|
* @private
|
|
9219
9376
|
*/
|
|
9220
9377
|
SeriesComponent.compose = function (ChartClass, PointClass, SeriesClass) {
|
|
9221
|
-
// Handle forcing markers
|
|
9222
9378
|
NewDataAnnouncer.compose(SeriesClass);
|
|
9223
9379
|
ForcedMarkers.compose(SeriesClass);
|
|
9224
9380
|
SeriesKeyboardNavigation.compose(ChartClass, PointClass, SeriesClass);
|
|
@@ -9351,8 +9507,8 @@
|
|
|
9351
9507
|
*/
|
|
9352
9508
|
function chartHasMapZoom(chart) {
|
|
9353
9509
|
return !!(chart.mapZoom &&
|
|
9354
|
-
chart.
|
|
9355
|
-
chart.
|
|
9510
|
+
chart.mapNavigation &&
|
|
9511
|
+
chart.mapNavigation.navButtons.length);
|
|
9356
9512
|
}
|
|
9357
9513
|
/* *
|
|
9358
9514
|
*
|
|
@@ -9392,7 +9548,7 @@
|
|
|
9392
9548
|
chart = this.chart;
|
|
9393
9549
|
this.proxyProvider.addGroup('zoom', 'div');
|
|
9394
9550
|
[
|
|
9395
|
-
'afterShowResetZoom', '
|
|
9551
|
+
'afterShowResetZoom', 'afterApplyDrilldown', 'drillupall'
|
|
9396
9552
|
].forEach(function (eventType) {
|
|
9397
9553
|
component.addEvent(chart, eventType, function () {
|
|
9398
9554
|
component.updateProxyOverlays();
|
|
@@ -9406,8 +9562,8 @@
|
|
|
9406
9562
|
var chart = this.chart,
|
|
9407
9563
|
component = this;
|
|
9408
9564
|
// Make map zoom buttons accessible
|
|
9409
|
-
if (chart.
|
|
9410
|
-
chart.
|
|
9565
|
+
if (chart.mapNavigation) {
|
|
9566
|
+
chart.mapNavigation.navButtons.forEach(function (button, i) {
|
|
9411
9567
|
unhideChartElementFromAT(chart, button.element);
|
|
9412
9568
|
component.setMapNavButtonAttrs(button.element, 'accessibility.zoom.mapZoom' + (i ? 'Out' : 'In'));
|
|
9413
9569
|
});
|
|
@@ -9444,10 +9600,13 @@
|
|
|
9444
9600
|
if (chart.resetZoomButton) {
|
|
9445
9601
|
this.createZoomProxyButton(chart.resetZoomButton, 'resetZoomProxyButton', chart.langFormat('accessibility.zoom.resetZoomButton', { chart: chart }));
|
|
9446
9602
|
}
|
|
9447
|
-
if (chart.drillUpButton
|
|
9603
|
+
if (chart.drillUpButton &&
|
|
9604
|
+
chart.breadcrumbs &&
|
|
9605
|
+
chart.breadcrumbs.list) {
|
|
9606
|
+
var lastBreadcrumb = chart.breadcrumbs.list[chart.breadcrumbs.list.length - 1];
|
|
9448
9607
|
this.createZoomProxyButton(chart.drillUpButton, 'drillUpProxyButton', chart.langFormat('accessibility.drillUpButton', {
|
|
9449
9608
|
chart: chart,
|
|
9450
|
-
buttonText: chart.
|
|
9609
|
+
buttonText: chart.breadcrumbs.getButtonText(lastBreadcrumb)
|
|
9451
9610
|
}));
|
|
9452
9611
|
}
|
|
9453
9612
|
};
|
|
@@ -9531,14 +9690,14 @@
|
|
|
9531
9690
|
var isMoveOutOfRange = isBackwards && !this.focusedMapNavButtonIx ||
|
|
9532
9691
|
!isBackwards && this.focusedMapNavButtonIx;
|
|
9533
9692
|
// Deselect old
|
|
9534
|
-
chart.
|
|
9693
|
+
chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].setState(0);
|
|
9535
9694
|
if (isMoveOutOfRange) {
|
|
9536
9695
|
chart.mapZoom(); // Reset zoom
|
|
9537
9696
|
return response[isBackwards ? 'prev' : 'next'];
|
|
9538
9697
|
}
|
|
9539
9698
|
// Select other button
|
|
9540
9699
|
this.focusedMapNavButtonIx += isBackwards ? -1 : 1;
|
|
9541
|
-
var button = chart.
|
|
9700
|
+
var button = chart.mapNavigation.navButtons[this.focusedMapNavButtonIx];
|
|
9542
9701
|
chart.setFocusToElement(button.box, button.element);
|
|
9543
9702
|
button.setState(2);
|
|
9544
9703
|
return response.success;
|
|
@@ -9559,8 +9718,8 @@
|
|
|
9559
9718
|
*/
|
|
9560
9719
|
ZoomComponent.prototype.onMapNavInit = function (direction) {
|
|
9561
9720
|
var chart = this.chart,
|
|
9562
|
-
zoomIn = chart.
|
|
9563
|
-
zoomOut = chart.
|
|
9721
|
+
zoomIn = chart.mapNavigation.navButtons[0],
|
|
9722
|
+
zoomOut = chart.mapNavigation.navButtons[1],
|
|
9564
9723
|
initialButton = direction > 0 ? zoomIn : zoomOut;
|
|
9565
9724
|
chart.setFocusToElement(initialButton.box, initialButton.element);
|
|
9566
9725
|
initialButton.setState(2);
|
|
@@ -9743,8 +9902,8 @@
|
|
|
9743
9902
|
doc.body.removeChild(testDiv);
|
|
9744
9903
|
return bi === 'none';
|
|
9745
9904
|
}
|
|
9746
|
-
//
|
|
9747
|
-
return
|
|
9905
|
+
// Other browsers use the forced-colors standard
|
|
9906
|
+
return win.matchMedia && win.matchMedia('(forced-colors: active)').matches;
|
|
9748
9907
|
}
|
|
9749
9908
|
/**
|
|
9750
9909
|
* Force high contrast theme for the chart. The default theme is defined in
|
|
@@ -10112,7 +10271,17 @@
|
|
|
10112
10271
|
*/
|
|
10113
10272
|
accessibility: {
|
|
10114
10273
|
/**
|
|
10115
|
-
* Enable accessibility functionality for the chart.
|
|
10274
|
+
* Enable accessibility functionality for the chart. For more
|
|
10275
|
+
* information on how to include these features, and why this is
|
|
10276
|
+
* recommended, see [Highcharts Accessibility](https://www.highcharts.com/docs/accessibility/accessibility-module).
|
|
10277
|
+
*
|
|
10278
|
+
* Highcharts will by default emit a warning to the console if
|
|
10279
|
+
* the [accessibility module](https://code.highcharts.com/modules/accessibility.js)
|
|
10280
|
+
* is not loaded. Setting this option to `false` will override
|
|
10281
|
+
* and silence the warning.
|
|
10282
|
+
*
|
|
10283
|
+
* Once the module is loaded, setting this option to `false`
|
|
10284
|
+
* will disable the module for this chart.
|
|
10116
10285
|
*
|
|
10117
10286
|
* @since 5.0.0
|
|
10118
10287
|
*/
|
|
@@ -10226,12 +10395,43 @@
|
|
|
10226
10395
|
* of the series for a screen reader user. If `false` is returned,
|
|
10227
10396
|
* the default formatter will be used for that series.
|
|
10228
10397
|
*
|
|
10398
|
+
* @see [series.descriptionFormat](#accessibility.series.descriptionFormat)
|
|
10229
10399
|
* @see [series.description](#plotOptions.series.description)
|
|
10230
10400
|
*
|
|
10231
10401
|
* @type {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Series>}
|
|
10232
10402
|
* @since 8.0.0
|
|
10233
10403
|
* @apioption accessibility.series.descriptionFormatter
|
|
10234
10404
|
*/
|
|
10405
|
+
/**
|
|
10406
|
+
* Format to use for describing the data series group to assistive
|
|
10407
|
+
* technology - including screen readers.
|
|
10408
|
+
*
|
|
10409
|
+
* The series context and its subproperties are available under the
|
|
10410
|
+
* variable `{series}`, for example `{series.name}` for the series
|
|
10411
|
+
* name, and `{series.points.length}` for the number of data points.
|
|
10412
|
+
*
|
|
10413
|
+
* The chart context and its subproperties are available under the
|
|
10414
|
+
* variable `{chart}`, for example `{chart.series.length}` for the
|
|
10415
|
+
* number of series in the chart.
|
|
10416
|
+
*
|
|
10417
|
+
* `{seriesDescription}` refers to the automatic description of the
|
|
10418
|
+
* series type and number of points added by Highcharts by default.
|
|
10419
|
+
* `{authorDescription}` refers to the description added in
|
|
10420
|
+
* [series.description](#plotOptions.series.description) if one is
|
|
10421
|
+
* present. `{axisDescription}` refers to the description added if
|
|
10422
|
+
* the chart has multiple X or Y axes.
|
|
10423
|
+
*
|
|
10424
|
+
* Note that if [series.descriptionFormatter](#accessibility.series.descriptionFormatter)
|
|
10425
|
+
* is declared it will take precedence, and this option will be
|
|
10426
|
+
* overridden.
|
|
10427
|
+
*
|
|
10428
|
+
* @sample highcharts/accessibility/advanced-accessible
|
|
10429
|
+
* Accessible low-medium-high chart
|
|
10430
|
+
*
|
|
10431
|
+
* @type {string}
|
|
10432
|
+
* @since 10.1.0
|
|
10433
|
+
*/
|
|
10434
|
+
descriptionFormat: '{seriesDescription}{authorDescription}{axisDescription}',
|
|
10235
10435
|
/**
|
|
10236
10436
|
* Whether or not to add series descriptions to charts with a single
|
|
10237
10437
|
* series.
|
|
@@ -10333,6 +10533,8 @@
|
|
|
10333
10533
|
* to assistive technology - including screen readers.
|
|
10334
10534
|
* The point context is available as `{point}`.
|
|
10335
10535
|
*
|
|
10536
|
+
* Other available context variables include `{index}`, `{value}`, and `{xDescription}`.
|
|
10537
|
+
*
|
|
10336
10538
|
* Additionally, the series name, annotation info, and
|
|
10337
10539
|
* description added in `point.accessibility.description`
|
|
10338
10540
|
* is added by default if relevant. To override this, use the
|
|
@@ -10345,7 +10547,18 @@
|
|
|
10345
10547
|
* @type {string}
|
|
10346
10548
|
* @since 8.0.1
|
|
10347
10549
|
*/
|
|
10348
|
-
valueDescriptionFormat: '{
|
|
10550
|
+
valueDescriptionFormat: '{xDescription}{separator}{value}.',
|
|
10551
|
+
/**
|
|
10552
|
+
* Whether or not to describe points with the value `null` to
|
|
10553
|
+
* assistive technology, such as screen readers.
|
|
10554
|
+
*
|
|
10555
|
+
* @sample {highmaps} maps/demo/all-areas-as-null
|
|
10556
|
+
* Accessible map with null points
|
|
10557
|
+
*
|
|
10558
|
+
* @type {boolean}
|
|
10559
|
+
* @since 10.1.0
|
|
10560
|
+
*/
|
|
10561
|
+
describeNull: true
|
|
10349
10562
|
},
|
|
10350
10563
|
/**
|
|
10351
10564
|
* Amount of landmarks/regions to create for screen reader users. More
|
|
@@ -10589,7 +10802,16 @@
|
|
|
10589
10802
|
* @type {boolean|number}
|
|
10590
10803
|
* @since 8.0.0
|
|
10591
10804
|
*/
|
|
10592
|
-
pointNavigationEnabledThreshold: false
|
|
10805
|
+
pointNavigationEnabledThreshold: false,
|
|
10806
|
+
/**
|
|
10807
|
+
* Remember which point was focused even after navigating away
|
|
10808
|
+
* from the series, so that when navigating back to the series
|
|
10809
|
+
* you start at the last focused point.
|
|
10810
|
+
*
|
|
10811
|
+
* @type {boolean}
|
|
10812
|
+
* @since 10.1.0
|
|
10813
|
+
*/
|
|
10814
|
+
rememberPointFocus: false
|
|
10593
10815
|
}
|
|
10594
10816
|
},
|
|
10595
10817
|
/**
|
|
@@ -10923,7 +11145,7 @@
|
|
|
10923
11145
|
* @since 8.0.0
|
|
10924
11146
|
*/
|
|
10925
11147
|
screenReaderSection: {
|
|
10926
|
-
beforeRegionLabel: '
|
|
11148
|
+
beforeRegionLabel: '',
|
|
10927
11149
|
afterRegionLabel: '',
|
|
10928
11150
|
/**
|
|
10929
11151
|
* Language options for annotation descriptions.
|
|
@@ -11089,12 +11311,12 @@
|
|
|
11089
11311
|
xAxisDescriptionPlural: 'The chart has {numAxes} X axes displaying {#each(names, -1) }and {names[-1]}.',
|
|
11090
11312
|
yAxisDescriptionSingular: 'The chart has 1 Y axis displaying {names[0]}. {ranges[0]}',
|
|
11091
11313
|
yAxisDescriptionPlural: 'The chart has {numAxes} Y axes displaying {#each(names, -1) }and {names[-1]}.',
|
|
11092
|
-
timeRangeDays: '
|
|
11093
|
-
timeRangeHours: '
|
|
11094
|
-
timeRangeMinutes: '
|
|
11095
|
-
timeRangeSeconds: '
|
|
11096
|
-
rangeFromTo: '
|
|
11097
|
-
rangeCategories: '
|
|
11314
|
+
timeRangeDays: 'Data range: {range} days.',
|
|
11315
|
+
timeRangeHours: 'Data range: {range} hours.',
|
|
11316
|
+
timeRangeMinutes: 'Data range: {range} minutes.',
|
|
11317
|
+
timeRangeSeconds: 'Data range: {range} seconds.',
|
|
11318
|
+
rangeFromTo: 'Data ranges from {rangeFrom} to {rangeTo}.',
|
|
11319
|
+
rangeCategories: 'Data range: {numCategories} categories.'
|
|
11098
11320
|
},
|
|
11099
11321
|
/**
|
|
11100
11322
|
* Exporting menu format strings for accessibility module.
|
|
@@ -11125,34 +11347,39 @@
|
|
|
11125
11347
|
* If a definition does not exist for the specific series type
|
|
11126
11348
|
* and mode, the 'default' lang definitions are used.
|
|
11127
11349
|
*
|
|
11350
|
+
* Chart and its subproperties can be accessed with the `{chart}` variable.
|
|
11351
|
+
* The series and its subproperties can be accessed with the `{series}` variable.
|
|
11352
|
+
*
|
|
11353
|
+
* The series index (starting from 1) can be accessed with the `{seriesNumber}` variable.
|
|
11354
|
+
*
|
|
11128
11355
|
* @since 6.0.6
|
|
11129
11356
|
*/
|
|
11130
11357
|
summary: {
|
|
11131
11358
|
/* eslint-disable max-len */
|
|
11132
|
-
'default': '{name}, series {
|
|
11133
|
-
defaultCombination: '{name}, series {
|
|
11134
|
-
line: '{name}, line {
|
|
11135
|
-
lineCombination: '{name}, series {
|
|
11136
|
-
spline: '{name}, line {
|
|
11137
|
-
splineCombination: '{name}, series {
|
|
11138
|
-
column: '{name}, bar series {
|
|
11139
|
-
columnCombination: '{name}, series {
|
|
11140
|
-
bar: '{name}, bar series {
|
|
11141
|
-
barCombination: '{name}, series {
|
|
11142
|
-
pie: '{name}, pie {
|
|
11143
|
-
pieCombination: '{name}, series {
|
|
11144
|
-
scatter: '{name}, scatter plot {
|
|
11145
|
-
scatterCombination: '{name}, series {
|
|
11146
|
-
boxplot: '{name}, boxplot {
|
|
11147
|
-
boxplotCombination: '{name}, series {
|
|
11148
|
-
bubble: '{name}, bubble series {
|
|
11149
|
-
bubbleCombination: '{name}, series {
|
|
11150
|
-
map: '{name}, map {
|
|
11151
|
-
mapCombination: '{name}, series {
|
|
11152
|
-
mapline: '{name}, line {
|
|
11153
|
-
maplineCombination: '{name}, series {
|
|
11154
|
-
mapbubble: '{name}, bubble series {
|
|
11155
|
-
mapbubbleCombination: '{name}, series {
|
|
11359
|
+
'default': '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11360
|
+
defaultCombination: '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11361
|
+
line: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11362
|
+
lineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11363
|
+
spline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11364
|
+
splineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11365
|
+
column: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bars, bar)}.',
|
|
11366
|
+
columnCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#plural(series.points.length, bars, bar)}.',
|
|
11367
|
+
bar: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bars, bar)}.',
|
|
11368
|
+
barCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#plural(series.points.length, bars, bar)}.',
|
|
11369
|
+
pie: '{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, slices, slice)}.',
|
|
11370
|
+
pieCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#plural(series.points.length, slices, slice)}.',
|
|
11371
|
+
scatter: '{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, points, point)}.',
|
|
11372
|
+
scatterCombination: '{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#plural(series.points.length, points, point)}.',
|
|
11373
|
+
boxplot: '{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, boxes, box)}.',
|
|
11374
|
+
boxplotCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#plural(series.points.length, boxes, box)}.',
|
|
11375
|
+
bubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
|
|
11376
|
+
bubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
|
|
11377
|
+
map: '{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, areas, area)}.',
|
|
11378
|
+
mapCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#plural(series.points.length, areas, area)}.',
|
|
11379
|
+
mapline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11380
|
+
maplineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
|
|
11381
|
+
mapbubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
|
|
11382
|
+
mapbubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.'
|
|
11156
11383
|
},
|
|
11157
11384
|
/**
|
|
11158
11385
|
* User supplied description text. This is added in the point
|
|
@@ -11784,7 +12011,7 @@
|
|
|
11784
12011
|
});
|
|
11785
12012
|
});
|
|
11786
12013
|
// Direct updates (events happen after render)
|
|
11787
|
-
['
|
|
12014
|
+
['afterApplyDrilldown', 'drillupall'].forEach(function (event) {
|
|
11788
12015
|
addEvent(ChartClass, event, function chartOnAfterDrilldown() {
|
|
11789
12016
|
var a11y = this.accessibility;
|
|
11790
12017
|
if (a11y && !a11y.zombie) {
|