@highcharts/grid-pro 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/css/grid-pro.css +1756 -0
- package/es-modules/Accessibility/A11yI18n.d.ts +95 -0
- package/es-modules/Accessibility/A11yI18n.js +290 -0
- package/es-modules/Accessibility/Accessibility.d.ts +116 -0
- package/es-modules/Accessibility/Accessibility.js +402 -0
- package/es-modules/Accessibility/AccessibilityComponent.d.ts +97 -0
- package/es-modules/Accessibility/AccessibilityComponent.js +147 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.d.ts +43 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
- package/es-modules/Accessibility/Components/ContainerComponent.d.ts +48 -0
- package/es-modules/Accessibility/Components/ContainerComponent.js +142 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.d.ts +144 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +555 -0
- package/es-modules/Accessibility/Components/LegendComponent.d.ts +124 -0
- package/es-modules/Accessibility/Components/LegendComponent.js +474 -0
- package/es-modules/Accessibility/Components/MenuComponent.d.ts +93 -0
- package/es-modules/Accessibility/Components/MenuComponent.js +430 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.d.ts +57 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.js +235 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.d.ts +126 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +473 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.d.ts +18 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +234 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.d.ts +87 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +309 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.d.ts +53 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +130 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.d.ts +28 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +415 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.d.ts +114 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +721 -0
- package/es-modules/Accessibility/Components/ZoomComponent.d.ts +96 -0
- package/es-modules/Accessibility/Components/ZoomComponent.js +314 -0
- package/es-modules/Accessibility/FocusBorder.d.ts +40 -0
- package/es-modules/Accessibility/FocusBorder.js +301 -0
- package/es-modules/Accessibility/HighContrastMode.d.ts +35 -0
- package/es-modules/Accessibility/HighContrastMode.js +100 -0
- package/es-modules/Accessibility/HighContrastTheme.d.ts +11 -0
- package/es-modules/Accessibility/HighContrastTheme.js +212 -0
- package/es-modules/Accessibility/KeyboardNavigation.d.ts +133 -0
- package/es-modules/Accessibility/KeyboardNavigation.js +450 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.d.ts +48 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +126 -0
- package/es-modules/Accessibility/Options/A11yDefaults.d.ts +68 -0
- package/es-modules/Accessibility/Options/A11yDefaults.js +971 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +22 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +265 -0
- package/es-modules/Accessibility/Options/LangDefaults.d.ts +4 -0
- package/es-modules/Accessibility/Options/LangDefaults.js +440 -0
- package/es-modules/Accessibility/ProxyElement.d.ts +78 -0
- package/es-modules/Accessibility/ProxyElement.js +223 -0
- package/es-modules/Accessibility/ProxyProvider.d.ts +90 -0
- package/es-modules/Accessibility/ProxyProvider.js +315 -0
- package/es-modules/Accessibility/Utils/Announcer.d.ts +26 -0
- package/es-modules/Accessibility/Utils/Announcer.js +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.d.ts +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.js +298 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.d.ts +20 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +69 -0
- package/es-modules/Accessibility/Utils/EventProvider.d.ts +26 -0
- package/es-modules/Accessibility/Utils/EventProvider.js +65 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.d.ts +108 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +319 -0
- package/es-modules/Core/Animation/AnimationUtilities.d.ts +107 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +200 -0
- package/es-modules/Core/Animation/Fx.d.ts +130 -0
- package/es-modules/Core/Animation/Fx.js +388 -0
- package/es-modules/Core/Chart/Chart.d.ts +1009 -0
- package/es-modules/Core/Chart/Chart.js +3008 -0
- package/es-modules/Core/Chart/Chart3D.d.ts +276 -0
- package/es-modules/Core/Chart/Chart3D.js +1686 -0
- package/es-modules/Core/Chart/ChartDefaults.d.ts +8 -0
- package/es-modules/Core/Chart/ChartDefaults.js +1304 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +55 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.js +90 -0
- package/es-modules/Core/Chart/GanttChart.d.ts +74 -0
- package/es-modules/Core/Chart/GanttChart.js +189 -0
- package/es-modules/Core/Chart/MapChart.d.ts +132 -0
- package/es-modules/Core/Chart/MapChart.js +232 -0
- package/es-modules/Core/Chart/StockChart.d.ts +117 -0
- package/es-modules/Core/Chart/StockChart.js +641 -0
- package/es-modules/Core/Color/Color.d.ts +112 -0
- package/es-modules/Core/Color/Color.js +418 -0
- package/es-modules/Core/Color/Palettes.d.ts +84 -0
- package/es-modules/Core/Color/Palettes.js +23 -0
- package/es-modules/Core/Defaults.d.ts +42 -0
- package/es-modules/Core/Defaults.js +2977 -0
- package/es-modules/Core/Foundation.d.ts +19 -0
- package/es-modules/Core/Foundation.js +63 -0
- package/es-modules/Core/Geometry/CircleUtilities.d.ts +189 -0
- package/es-modules/Core/Geometry/CircleUtilities.js +388 -0
- package/es-modules/Core/Geometry/GeometryUtilities.d.ts +48 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +105 -0
- package/es-modules/Core/Geometry/PolygonClip.d.ts +19 -0
- package/es-modules/Core/Geometry/PolygonClip.js +96 -0
- package/es-modules/Core/Globals.d.ts +110 -0
- package/es-modules/Core/Globals.js +127 -0
- package/es-modules/Core/HttpUtilities.d.ts +61 -0
- package/es-modules/Core/HttpUtilities.js +214 -0
- package/es-modules/Core/MSPointer.d.ts +74 -0
- package/es-modules/Core/MSPointer.js +218 -0
- package/es-modules/Core/Math3D.d.ts +117 -0
- package/es-modules/Core/Math3D.js +250 -0
- package/es-modules/Core/Pointer.d.ts +590 -0
- package/es-modules/Core/Pointer.js +1631 -0
- package/es-modules/Core/Renderer/HTML/AST.d.ts +163 -0
- package/es-modules/Core/Renderer/HTML/AST.js +562 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +76 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +471 -0
- package/es-modules/Core/Renderer/RendererRegistry.d.ts +29 -0
- package/es-modules/Core/Renderer/RendererRegistry.js +76 -0
- package/es-modules/Core/Renderer/RendererUtilities.d.ts +26 -0
- package/es-modules/Core/Renderer/RendererUtilities.js +172 -0
- package/es-modules/Core/Responsive.d.ts +55 -0
- package/es-modules/Core/Responsive.js +260 -0
- package/es-modules/Core/Templating.d.ts +125 -0
- package/es-modules/Core/Templating.js +428 -0
- package/es-modules/Core/Time.d.ts +69 -0
- package/es-modules/Core/Time.js +172 -0
- package/es-modules/Core/Tooltip.d.ts +297 -0
- package/es-modules/Core/Tooltip.js +1377 -0
- package/es-modules/Core/Utilities.d.ts +770 -0
- package/es-modules/Core/Utilities.js +1989 -0
- package/es-modules/Data/ColumnUtils.d.ts +87 -0
- package/es-modules/Data/ColumnUtils.js +140 -0
- package/es-modules/Data/Connectors/CSVConnector.d.ts +63 -0
- package/es-modules/Data/Connectors/CSVConnector.js +149 -0
- package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +149 -0
- package/es-modules/Data/Connectors/DataConnector.d.ts +204 -0
- package/es-modules/Data/Connectors/DataConnector.js +345 -0
- package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +87 -0
- package/es-modules/Data/Connectors/DataConnectorType.d.ts +45 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +65 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +226 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +167 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +77 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.js +119 -0
- package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +49 -0
- package/es-modules/Data/Connectors/JSONConnector.d.ts +64 -0
- package/es-modules/Data/Connectors/JSONConnector.js +156 -0
- package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +185 -0
- package/es-modules/Data/Converters/CSVConverter.d.ts +64 -0
- package/es-modules/Data/Converters/CSVConverter.js +374 -0
- package/es-modules/Data/Converters/CSVConverterOptions.d.ts +53 -0
- package/es-modules/Data/Converters/DataConverter.d.ts +168 -0
- package/es-modules/Data/Converters/DataConverter.js +387 -0
- package/es-modules/Data/Converters/DataConverterType.d.ts +40 -0
- package/es-modules/Data/Converters/DataConverterUtils.d.ts +82 -0
- package/es-modules/Data/Converters/DataConverterUtils.js +216 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +46 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +135 -0
- package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +52 -0
- package/es-modules/Data/Converters/HTMLTableConverter.d.ts +72 -0
- package/es-modules/Data/Converters/HTMLTableConverter.js +362 -0
- package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +51 -0
- package/es-modules/Data/Converters/JSONConverter.d.ts +99 -0
- package/es-modules/Data/Converters/JSONConverter.js +239 -0
- package/es-modules/Data/Converters/JSONConverterOptions.d.ts +52 -0
- package/es-modules/Data/DataCursor.d.ts +176 -0
- package/es-modules/Data/DataCursor.js +379 -0
- package/es-modules/Data/DataEvent.d.ts +81 -0
- package/es-modules/Data/DataEvent.js +14 -0
- package/es-modules/Data/DataPool.d.ts +130 -0
- package/es-modules/Data/DataPool.js +257 -0
- package/es-modules/Data/DataPoolOptions.d.ts +66 -0
- package/es-modules/Data/DataTable.d.ts +563 -0
- package/es-modules/Data/DataTable.js +930 -0
- package/es-modules/Data/DataTableCore.d.ts +165 -0
- package/es-modules/Data/DataTableCore.js +316 -0
- package/es-modules/Data/DataTableOptions.d.ts +25 -0
- package/es-modules/Data/DataTableOptions.js +15 -0
- package/es-modules/Data/Formula/Formula.d.ts +21 -0
- package/es-modules/Data/Formula/Formula.js +54 -0
- package/es-modules/Data/Formula/FormulaParser.d.ts +31 -0
- package/es-modules/Data/Formula/FormulaParser.js +488 -0
- package/es-modules/Data/Formula/FormulaProcessor.d.ts +155 -0
- package/es-modules/Data/Formula/FormulaProcessor.js +529 -0
- package/es-modules/Data/Formula/FormulaTypes.d.ts +138 -0
- package/es-modules/Data/Formula/FormulaTypes.js +135 -0
- package/es-modules/Data/Formula/Functions/ABS.d.ts +19 -0
- package/es-modules/Data/Formula/Functions/ABS.js +67 -0
- package/es-modules/Data/Formula/Functions/AND.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AND.js +59 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.js +74 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.js +90 -0
- package/es-modules/Data/Formula/Functions/COUNT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNT.js +65 -0
- package/es-modules/Data/Formula/Functions/COUNTA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNTA.js +71 -0
- package/es-modules/Data/Formula/Functions/IF.d.ts +21 -0
- package/es-modules/Data/Formula/Functions/IF.js +54 -0
- package/es-modules/Data/Formula/Functions/ISNA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/ISNA.js +52 -0
- package/es-modules/Data/Formula/Functions/MAX.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MAX.js +69 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.js +78 -0
- package/es-modules/Data/Formula/Functions/MIN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MIN.js +69 -0
- package/es-modules/Data/Formula/Functions/MOD.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MOD.js +63 -0
- package/es-modules/Data/Formula/Functions/MODE.d.ts +41 -0
- package/es-modules/Data/Formula/Functions/MODE.js +149 -0
- package/es-modules/Data/Formula/Functions/NOT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/NOT.js +60 -0
- package/es-modules/Data/Formula/Functions/OR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/OR.js +62 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.js +68 -0
- package/es-modules/Data/Formula/Functions/SUM.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/SUM.js +65 -0
- package/es-modules/Data/Formula/Functions/XOR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/XOR.js +81 -0
- package/es-modules/Data/Modifiers/ChainModifier.d.ts +128 -0
- package/es-modules/Data/Modifiers/ChainModifier.js +231 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.d.ts +20 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/DataModifier.d.ts +117 -0
- package/es-modules/Data/Modifiers/DataModifier.js +202 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.d.ts +28 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierType.d.ts +44 -0
- package/es-modules/Data/Modifiers/FilterModifier.d.ts +53 -0
- package/es-modules/Data/Modifiers/FilterModifier.js +172 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +110 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/InvertModifier.d.ts +48 -0
- package/es-modules/Data/Modifiers/InvertModifier.js +116 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/MathModifier.d.ts +68 -0
- package/es-modules/Data/Modifiers/MathModifier.js +165 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.d.ts +50 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/RangeModifier.d.ts +46 -0
- package/es-modules/Data/Modifiers/RangeModifier.js +96 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.d.ts +22 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/SortModifier.d.ts +54 -0
- package/es-modules/Data/Modifiers/SortModifier.js +144 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +44 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.js +14 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +148 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.js +17 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +115 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.js +231 -0
- package/es-modules/Grid/Core/Credits.d.ts +57 -0
- package/es-modules/Grid/Core/Credits.js +125 -0
- package/es-modules/Grid/Core/Defaults.d.ts +20 -0
- package/es-modules/Grid/Core/Defaults.js +148 -0
- package/es-modules/Grid/Core/Globals.d.ts +103 -0
- package/es-modules/Grid/Core/Globals.js +134 -0
- package/es-modules/Grid/Core/Grid.d.ts +295 -0
- package/es-modules/Grid/Core/Grid.js +730 -0
- package/es-modules/Grid/Core/GridUtils.d.ts +110 -0
- package/es-modules/Grid/Core/GridUtils.js +191 -0
- package/es-modules/Grid/Core/Options.d.ts +599 -0
- package/es-modules/Grid/Core/Options.js +16 -0
- package/es-modules/Grid/Core/Pagination/Icons.d.ts +7 -0
- package/es-modules/Grid/Core/Pagination/Icons.js +7 -0
- package/es-modules/Grid/Core/Pagination/Pagination.d.ts +278 -0
- package/es-modules/Grid/Core/Pagination/Pagination.js +842 -0
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +228 -0
- package/es-modules/Grid/Core/Querying/FilteringController.d.ts +66 -0
- package/es-modules/Grid/Core/Querying/FilteringController.js +256 -0
- package/es-modules/Grid/Core/Querying/PaginationController.d.ts +50 -0
- package/es-modules/Grid/Core/Querying/PaginationController.js +101 -0
- package/es-modules/Grid/Core/Querying/QueryingController.d.ts +58 -0
- package/es-modules/Grid/Core/Querying/QueryingController.js +127 -0
- package/es-modules/Grid/Core/Querying/SortingController.d.ts +67 -0
- package/es-modules/Grid/Core/Querying/SortingController.js +136 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +114 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +351 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +14 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +86 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +19 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +80 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +52 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +81 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +56 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +170 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.d.ts +55 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +182 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +87 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +346 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +88 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.js +231 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +79 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.js +177 -0
- package/es-modules/Grid/Core/Table/Cell.d.ts +92 -0
- package/es-modules/Grid/Core/Table/Cell.js +223 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.d.ts +30 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.js +40 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +19 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +98 -0
- package/es-modules/Grid/Core/Table/Column.d.ts +136 -0
- package/es-modules/Grid/Core/Table/Column.js +230 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +62 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +32 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +68 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +53 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +63 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +92 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +194 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +68 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +187 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +29 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +77 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.d.ts +13 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +79 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +71 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +66 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +25 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +65 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +80 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +11 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +70 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +225 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +53 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.js +182 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +65 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.js +159 -0
- package/es-modules/Grid/Core/Table/Row.d.ts +76 -0
- package/es-modules/Grid/Core/Table/Row.js +131 -0
- package/es-modules/Grid/Core/Table/Table.d.ts +181 -0
- package/es-modules/Grid/Core/Table/Table.js +399 -0
- package/es-modules/Grid/Core/UI/Button.d.ts +31 -0
- package/es-modules/Grid/Core/UI/Button.js +16 -0
- package/es-modules/Grid/Core/UI/ContextMenu.d.ts +38 -0
- package/es-modules/Grid/Core/UI/ContextMenu.js +132 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +126 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +183 -0
- package/es-modules/Grid/Core/UI/Popup.d.ts +149 -0
- package/es-modules/Grid/Core/UI/Popup.js +271 -0
- package/es-modules/Grid/Core/UI/SvgIcons.d.ts +53 -0
- package/es-modules/Grid/Core/UI/SvgIcons.js +158 -0
- package/es-modules/Grid/Core/UI/Toolbar.d.ts +16 -0
- package/es-modules/Grid/Core/UI/Toolbar.js +16 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +135 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.js +191 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +112 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +80 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +211 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +123 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +198 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.d.ts +23 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +45 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +58 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +48 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +79 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +30 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +122 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +39 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +66 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +145 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +38 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +158 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +173 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +28 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +157 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +168 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +13 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +26 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +16 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +52 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +66 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +45 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +89 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +54 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +43 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +29 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +118 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +270 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +32 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +63 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +35 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.js +112 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +28 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +61 -0
- package/es-modules/Grid/Pro/Export/Exporting.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/Exporting.js +202 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +55 -0
- package/es-modules/Grid/Pro/GridEvents.d.ts +119 -0
- package/es-modules/Grid/Pro/GridEvents.js +107 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +75 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +76 -0
- package/es-modules/Grid/Pro/highcharts.d.ts +7 -0
- package/es-modules/Grid/index.d.ts +5 -0
- package/es-modules/Grid/index.js +19 -0
- package/es-modules/Shared/BaseForm.d.ts +49 -0
- package/es-modules/Shared/BaseForm.js +126 -0
- package/es-modules/Shared/DownloadURL.d.ts +85 -0
- package/es-modules/Shared/DownloadURL.js +198 -0
- package/es-modules/Shared/LangOptionsCore.d.ts +27 -0
- package/es-modules/Shared/TimeBase.d.ts +353 -0
- package/es-modules/Shared/TimeBase.js +830 -0
- package/es-modules/Shared/Types.d.ts +48 -0
- package/es-modules/masters/grid-pro.src.d.ts +99 -0
- package/es-modules/masters/grid-pro.src.js +129 -0
- package/grid-pro.d.ts +50 -0
- package/grid-pro.js +12 -0
- package/grid-pro.js.map +1 -0
- package/grid-pro.src.d.ts +50 -0
- package/grid-pro.src.js +26623 -0
- package/package.json +21 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type Accessibility from './Accessibility';
|
|
2
|
+
import type { DOMElementType, HTMLDOMElement } from '../Core/Renderer/DOMElementType';
|
|
3
|
+
import type KeyboardNavigationHandler from './KeyboardNavigationHandler';
|
|
4
|
+
import Chart from '../Core/Chart/Chart.js';
|
|
5
|
+
import MenuComponent from './Components/MenuComponent.js';
|
|
6
|
+
import EventProvider from './Utils/EventProvider.js';
|
|
7
|
+
/**
|
|
8
|
+
* The KeyboardNavigation class, containing the overall keyboard navigation
|
|
9
|
+
* logic for the chart.
|
|
10
|
+
*
|
|
11
|
+
* @requires modules/accessibility
|
|
12
|
+
*
|
|
13
|
+
* @private
|
|
14
|
+
* @class
|
|
15
|
+
* @param {Highcharts.Chart} chart
|
|
16
|
+
* Chart object
|
|
17
|
+
* @param {Object} components
|
|
18
|
+
* Map of component names to AccessibilityComponent objects.
|
|
19
|
+
* @name Highcharts.KeyboardNavigation
|
|
20
|
+
*/
|
|
21
|
+
declare class KeyboardNavigation {
|
|
22
|
+
constructor(chart: Chart, components: Accessibility.ComponentsObject);
|
|
23
|
+
chart: Chart;
|
|
24
|
+
components: Accessibility.ComponentsObject;
|
|
25
|
+
currentModuleIx: number;
|
|
26
|
+
eventProvider: EventProvider;
|
|
27
|
+
exitAnchor?: DOMElementType;
|
|
28
|
+
exiting?: boolean;
|
|
29
|
+
isClickingChart?: boolean;
|
|
30
|
+
keyboardReset?: boolean;
|
|
31
|
+
modules: Array<KeyboardNavigationHandler>;
|
|
32
|
+
tabindexContainer: HTMLDOMElement;
|
|
33
|
+
tabbingInBackwards?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize the class
|
|
36
|
+
* @private
|
|
37
|
+
* @param {Highcharts.Chart} chart
|
|
38
|
+
* Chart object
|
|
39
|
+
* @param {Object} components
|
|
40
|
+
* Map of component names to AccessibilityComponent objects.
|
|
41
|
+
*/
|
|
42
|
+
init(chart: Chart, components: Accessibility.ComponentsObject): void;
|
|
43
|
+
/**
|
|
44
|
+
* Update the modules for the keyboard navigation.
|
|
45
|
+
* @param {Array<string>} [order]
|
|
46
|
+
* Array specifying the tab order of the components.
|
|
47
|
+
*/
|
|
48
|
+
update(order?: Array<(keyof Accessibility.ComponentsObject)>): void;
|
|
49
|
+
/**
|
|
50
|
+
* We use an exit anchor to move focus out of chart whenever we want, by
|
|
51
|
+
* setting focus to this div and not preventing the default tab action. We
|
|
52
|
+
* also use this when users come back into the chart by tabbing back, in
|
|
53
|
+
* order to navigate from the end of the chart.
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
updateExitAnchor(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Move to prev/next module.
|
|
59
|
+
* @private
|
|
60
|
+
* @param {number} direction
|
|
61
|
+
* Direction to move. +1 for next, -1 for prev.
|
|
62
|
+
* @return {boolean}
|
|
63
|
+
* True if there was a valid module in direction.
|
|
64
|
+
*/
|
|
65
|
+
move(direction: number): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Function to run on container focus
|
|
68
|
+
* @private
|
|
69
|
+
* @param {global.FocusEvent} e Browser focus event.
|
|
70
|
+
*/
|
|
71
|
+
private onFocus;
|
|
72
|
+
/**
|
|
73
|
+
* Reset chart navigation state if we mouse click and it's not already
|
|
74
|
+
* reset. Reset fully if outside the chart, otherwise just hide focus
|
|
75
|
+
* indicator.
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
private onMouseUp;
|
|
79
|
+
/**
|
|
80
|
+
* Function to run on keydown
|
|
81
|
+
* @private
|
|
82
|
+
* @param {global.KeyboardEvent} ev Browser keydown event.
|
|
83
|
+
*/
|
|
84
|
+
private onKeydown;
|
|
85
|
+
/**
|
|
86
|
+
* Chart container should have tabindex if navigation is enabled.
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
private updateContainerTabindex;
|
|
90
|
+
/**
|
|
91
|
+
* Add new exit anchor to the chart.
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
private createExitAnchor;
|
|
95
|
+
/**
|
|
96
|
+
* Add attributes and events to an element to make it function as an
|
|
97
|
+
* exit anchor.
|
|
98
|
+
* @private
|
|
99
|
+
*/
|
|
100
|
+
private makeElementAnExitAnchor;
|
|
101
|
+
/**
|
|
102
|
+
* Destroy the exit anchor and remove from DOM.
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
private removeExitAnchor;
|
|
106
|
+
/**
|
|
107
|
+
* Add focus handler to exit anchor element.
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
private addExitAnchorEventsToEl;
|
|
111
|
+
/**
|
|
112
|
+
* Get the ix of the first module that either does not require validation or
|
|
113
|
+
* validates positively.
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
private getFirstValidModuleIx;
|
|
117
|
+
/**
|
|
118
|
+
* Remove all traces of keyboard navigation.
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
destroy(): void;
|
|
122
|
+
}
|
|
123
|
+
declare namespace KeyboardNavigation {
|
|
124
|
+
class ChartComposition extends MenuComponent.ChartComposition {
|
|
125
|
+
dismissPopupContent(): void;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Composition function.
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
function compose<T extends typeof Chart>(ChartClass: T): (T & typeof ChartComposition);
|
|
132
|
+
}
|
|
133
|
+
export default KeyboardNavigation;
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Main keyboard navigation handling.
|
|
6
|
+
*
|
|
7
|
+
* License: www.highcharts.com/license
|
|
8
|
+
*
|
|
9
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10
|
+
*
|
|
11
|
+
* */
|
|
12
|
+
'use strict';
|
|
13
|
+
import H from '../Core/Globals.js';
|
|
14
|
+
const { doc, win } = H;
|
|
15
|
+
import MenuComponent from './Components/MenuComponent.js';
|
|
16
|
+
import U from '../Core/Utilities.js';
|
|
17
|
+
const { addEvent, defined, fireEvent } = U;
|
|
18
|
+
import EventProvider from './Utils/EventProvider.js';
|
|
19
|
+
import HTMLUtilities from './Utils/HTMLUtilities.js';
|
|
20
|
+
const { getElement, simulatedEventTarget } = HTMLUtilities;
|
|
21
|
+
/* *
|
|
22
|
+
*
|
|
23
|
+
* Class
|
|
24
|
+
*
|
|
25
|
+
* */
|
|
26
|
+
/**
|
|
27
|
+
* The KeyboardNavigation class, containing the overall keyboard navigation
|
|
28
|
+
* logic for the chart.
|
|
29
|
+
*
|
|
30
|
+
* @requires modules/accessibility
|
|
31
|
+
*
|
|
32
|
+
* @private
|
|
33
|
+
* @class
|
|
34
|
+
* @param {Highcharts.Chart} chart
|
|
35
|
+
* Chart object
|
|
36
|
+
* @param {Object} components
|
|
37
|
+
* Map of component names to AccessibilityComponent objects.
|
|
38
|
+
* @name Highcharts.KeyboardNavigation
|
|
39
|
+
*/
|
|
40
|
+
class KeyboardNavigation {
|
|
41
|
+
/* *
|
|
42
|
+
*
|
|
43
|
+
* Constructor
|
|
44
|
+
*
|
|
45
|
+
* */
|
|
46
|
+
constructor(chart, components) {
|
|
47
|
+
this.currentModuleIx = NaN;
|
|
48
|
+
this.modules = [];
|
|
49
|
+
this.init(chart, components);
|
|
50
|
+
}
|
|
51
|
+
/* *
|
|
52
|
+
*
|
|
53
|
+
* Functions
|
|
54
|
+
*
|
|
55
|
+
* */
|
|
56
|
+
/**
|
|
57
|
+
* Initialize the class
|
|
58
|
+
* @private
|
|
59
|
+
* @param {Highcharts.Chart} chart
|
|
60
|
+
* Chart object
|
|
61
|
+
* @param {Object} components
|
|
62
|
+
* Map of component names to AccessibilityComponent objects.
|
|
63
|
+
*/
|
|
64
|
+
init(chart, components) {
|
|
65
|
+
const ep = this.eventProvider = new EventProvider();
|
|
66
|
+
this.chart = chart;
|
|
67
|
+
this.components = components;
|
|
68
|
+
this.modules = [];
|
|
69
|
+
this.currentModuleIx = 0;
|
|
70
|
+
this.update();
|
|
71
|
+
ep.addEvent(this.tabindexContainer, 'keydown', (e) => this.onKeydown(e));
|
|
72
|
+
ep.addEvent(this.tabindexContainer, 'focus', (e) => this.onFocus(e));
|
|
73
|
+
['mouseup', 'touchend'].forEach((eventName) => ep.addEvent(doc, eventName, (e) => this.onMouseUp(e)));
|
|
74
|
+
['mousedown', 'touchstart'].forEach((eventName) => ep.addEvent(chart.renderTo, eventName, () => {
|
|
75
|
+
this.isClickingChart = true;
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Update the modules for the keyboard navigation.
|
|
80
|
+
* @param {Array<string>} [order]
|
|
81
|
+
* Array specifying the tab order of the components.
|
|
82
|
+
*/
|
|
83
|
+
update(order) {
|
|
84
|
+
const a11yOptions = this.chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, components = this.components;
|
|
85
|
+
this.updateContainerTabindex();
|
|
86
|
+
if (keyboardOptions &&
|
|
87
|
+
keyboardOptions.enabled &&
|
|
88
|
+
order &&
|
|
89
|
+
order.length) {
|
|
90
|
+
// We (still) have keyboard navigation. Update module list
|
|
91
|
+
this.modules = order.reduce(function (modules, componentName) {
|
|
92
|
+
const navModules = components[componentName]
|
|
93
|
+
.getKeyboardNavigation();
|
|
94
|
+
return modules.concat(navModules);
|
|
95
|
+
}, []);
|
|
96
|
+
this.updateExitAnchor();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.modules = [];
|
|
100
|
+
this.currentModuleIx = 0;
|
|
101
|
+
this.removeExitAnchor();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* We use an exit anchor to move focus out of chart whenever we want, by
|
|
106
|
+
* setting focus to this div and not preventing the default tab action. We
|
|
107
|
+
* also use this when users come back into the chart by tabbing back, in
|
|
108
|
+
* order to navigate from the end of the chart.
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
updateExitAnchor() {
|
|
112
|
+
const endMarkerId = `highcharts-end-of-chart-marker-${this.chart.index}`, endMarker = getElement(endMarkerId);
|
|
113
|
+
this.removeExitAnchor();
|
|
114
|
+
if (endMarker) {
|
|
115
|
+
this.makeElementAnExitAnchor(endMarker);
|
|
116
|
+
this.exitAnchor = endMarker;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.createExitAnchor();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Move to prev/next module.
|
|
124
|
+
* @private
|
|
125
|
+
* @param {number} direction
|
|
126
|
+
* Direction to move. +1 for next, -1 for prev.
|
|
127
|
+
* @return {boolean}
|
|
128
|
+
* True if there was a valid module in direction.
|
|
129
|
+
*/
|
|
130
|
+
move(direction) {
|
|
131
|
+
const curModule = this.modules && this.modules[this.currentModuleIx];
|
|
132
|
+
if (curModule && curModule.terminate) {
|
|
133
|
+
curModule.terminate(direction);
|
|
134
|
+
}
|
|
135
|
+
// Remove existing focus border if any
|
|
136
|
+
if (this.chart.focusElement) {
|
|
137
|
+
this.chart.focusElement.removeFocusBorder();
|
|
138
|
+
}
|
|
139
|
+
this.currentModuleIx += direction;
|
|
140
|
+
const newModule = this.modules && this.modules[this.currentModuleIx];
|
|
141
|
+
if (newModule) {
|
|
142
|
+
if (newModule.validate && !newModule.validate()) {
|
|
143
|
+
return this.move(direction); // Invalid module, recurse
|
|
144
|
+
}
|
|
145
|
+
if (newModule.init) {
|
|
146
|
+
newModule.init(direction); // Valid module, init it
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// No module
|
|
151
|
+
this.currentModuleIx = 0; // Reset counter
|
|
152
|
+
// Set focus to chart or exit anchor depending on direction
|
|
153
|
+
this.exiting = true;
|
|
154
|
+
if (direction > 0) {
|
|
155
|
+
this.exitAnchor && this.exitAnchor.focus();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.tabindexContainer.focus();
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Function to run on container focus
|
|
164
|
+
* @private
|
|
165
|
+
* @param {global.FocusEvent} e Browser focus event.
|
|
166
|
+
*/
|
|
167
|
+
onFocus(e) {
|
|
168
|
+
const chart = this.chart, focusComesFromChart = (e.relatedTarget &&
|
|
169
|
+
chart.container.contains(e.relatedTarget)), a11yOptions = chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, enabled = keyboardOptions && keyboardOptions.enabled;
|
|
170
|
+
// Init keyboard nav if tabbing into chart
|
|
171
|
+
if (enabled &&
|
|
172
|
+
!this.exiting &&
|
|
173
|
+
!this.tabbingInBackwards &&
|
|
174
|
+
!this.isClickingChart &&
|
|
175
|
+
!focusComesFromChart) {
|
|
176
|
+
const ix = this.getFirstValidModuleIx();
|
|
177
|
+
if (ix !== null) {
|
|
178
|
+
this.currentModuleIx = ix;
|
|
179
|
+
this.modules[ix].init(1);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.keyboardReset = false;
|
|
183
|
+
this.exiting = false;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Reset chart navigation state if we mouse click and it's not already
|
|
187
|
+
* reset. Reset fully if outside the chart, otherwise just hide focus
|
|
188
|
+
* indicator.
|
|
189
|
+
* @private
|
|
190
|
+
*/
|
|
191
|
+
onMouseUp(e) {
|
|
192
|
+
delete this.isClickingChart;
|
|
193
|
+
if (!this.keyboardReset &&
|
|
194
|
+
e.relatedTarget !== simulatedEventTarget) {
|
|
195
|
+
const chart = this.chart;
|
|
196
|
+
if (!e.target ||
|
|
197
|
+
!chart.container.contains(e.target)) {
|
|
198
|
+
const curMod = this.modules &&
|
|
199
|
+
this.modules[this.currentModuleIx || 0];
|
|
200
|
+
if (curMod && curMod.terminate) {
|
|
201
|
+
curMod.terminate();
|
|
202
|
+
}
|
|
203
|
+
this.currentModuleIx = 0;
|
|
204
|
+
}
|
|
205
|
+
if (chart.focusElement) {
|
|
206
|
+
chart.focusElement.removeFocusBorder();
|
|
207
|
+
delete chart.focusElement;
|
|
208
|
+
}
|
|
209
|
+
this.keyboardReset = true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Function to run on keydown
|
|
214
|
+
* @private
|
|
215
|
+
* @param {global.KeyboardEvent} ev Browser keydown event.
|
|
216
|
+
*/
|
|
217
|
+
onKeydown(ev) {
|
|
218
|
+
const e = ev || win.event, curNavModule = (this.modules &&
|
|
219
|
+
this.modules.length &&
|
|
220
|
+
this.modules[this.currentModuleIx]);
|
|
221
|
+
let preventDefault;
|
|
222
|
+
const target = e.target;
|
|
223
|
+
if (target &&
|
|
224
|
+
target.nodeName === 'INPUT' &&
|
|
225
|
+
!target.classList.contains('highcharts-a11y-proxy-element')) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// Used for resetting nav state when clicking outside chart
|
|
229
|
+
this.keyboardReset = false;
|
|
230
|
+
// Used for sending focus out of the chart by the modules.
|
|
231
|
+
this.exiting = false;
|
|
232
|
+
// If there is a nav module for the current index, run it.
|
|
233
|
+
// Otherwise, we are outside of the chart in some direction.
|
|
234
|
+
if (curNavModule) {
|
|
235
|
+
const response = curNavModule.run(e);
|
|
236
|
+
if (response === curNavModule.response.success) {
|
|
237
|
+
preventDefault = true;
|
|
238
|
+
}
|
|
239
|
+
else if (response === curNavModule.response.prev) {
|
|
240
|
+
preventDefault = this.move(-1);
|
|
241
|
+
}
|
|
242
|
+
else if (response === curNavModule.response.next) {
|
|
243
|
+
preventDefault = this.move(1);
|
|
244
|
+
}
|
|
245
|
+
if (preventDefault) {
|
|
246
|
+
e.preventDefault();
|
|
247
|
+
e.stopPropagation();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Chart container should have tabindex if navigation is enabled.
|
|
253
|
+
* @private
|
|
254
|
+
*/
|
|
255
|
+
updateContainerTabindex() {
|
|
256
|
+
const a11yOptions = this.chart.options.accessibility, keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation, shouldHaveTabindex = !(keyboardOptions && keyboardOptions.enabled === false), chart = this.chart, container = chart.container;
|
|
257
|
+
let tabindexContainer;
|
|
258
|
+
if (chart.renderTo.hasAttribute('tabindex')) {
|
|
259
|
+
container.removeAttribute('tabindex');
|
|
260
|
+
tabindexContainer = chart.renderTo;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
tabindexContainer = container;
|
|
264
|
+
}
|
|
265
|
+
this.tabindexContainer = tabindexContainer;
|
|
266
|
+
const curTabindex = tabindexContainer.getAttribute('tabindex');
|
|
267
|
+
if (shouldHaveTabindex && !curTabindex) {
|
|
268
|
+
tabindexContainer.setAttribute('tabindex', '0');
|
|
269
|
+
}
|
|
270
|
+
else if (!shouldHaveTabindex) {
|
|
271
|
+
chart.container.removeAttribute('tabindex');
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Add new exit anchor to the chart.
|
|
276
|
+
* @private
|
|
277
|
+
*/
|
|
278
|
+
createExitAnchor() {
|
|
279
|
+
const chart = this.chart, exitAnchor = this.exitAnchor = doc.createElement('div');
|
|
280
|
+
chart.renderTo.appendChild(exitAnchor);
|
|
281
|
+
this.makeElementAnExitAnchor(exitAnchor);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Add attributes and events to an element to make it function as an
|
|
285
|
+
* exit anchor.
|
|
286
|
+
* @private
|
|
287
|
+
*/
|
|
288
|
+
makeElementAnExitAnchor(el) {
|
|
289
|
+
const chartTabindex = this.tabindexContainer.getAttribute('tabindex') || 0;
|
|
290
|
+
el.setAttribute('class', 'highcharts-exit-anchor');
|
|
291
|
+
el.setAttribute('tabindex', chartTabindex);
|
|
292
|
+
el.setAttribute('aria-hidden', false);
|
|
293
|
+
// Handle focus
|
|
294
|
+
this.addExitAnchorEventsToEl(el);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Destroy the exit anchor and remove from DOM.
|
|
298
|
+
* @private
|
|
299
|
+
*/
|
|
300
|
+
removeExitAnchor() {
|
|
301
|
+
// Remove event from element and from eventRemovers array to prevent
|
|
302
|
+
// memory leak (#20329).
|
|
303
|
+
if (this.exitAnchor) {
|
|
304
|
+
const el = this.eventProvider.eventRemovers.find((el) => el.element === this.exitAnchor);
|
|
305
|
+
if (el && defined(el.remover)) {
|
|
306
|
+
this.eventProvider.removeEvent(el.remover);
|
|
307
|
+
}
|
|
308
|
+
if (this.exitAnchor.parentNode) {
|
|
309
|
+
this.exitAnchor.parentNode.removeChild(this.exitAnchor);
|
|
310
|
+
}
|
|
311
|
+
delete this.exitAnchor;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Add focus handler to exit anchor element.
|
|
316
|
+
* @private
|
|
317
|
+
*/
|
|
318
|
+
addExitAnchorEventsToEl(element) {
|
|
319
|
+
const chart = this.chart, keyboardNavigation = this;
|
|
320
|
+
this.eventProvider.addEvent(element, 'focus', function (ev) {
|
|
321
|
+
const e = ev || win.event, focusComesFromChart = (e.relatedTarget &&
|
|
322
|
+
chart.container.contains(e.relatedTarget)), comingInBackwards = !(focusComesFromChart || keyboardNavigation.exiting);
|
|
323
|
+
if (chart.focusElement) {
|
|
324
|
+
delete chart.focusElement;
|
|
325
|
+
}
|
|
326
|
+
if (comingInBackwards) {
|
|
327
|
+
// Focus the container instead
|
|
328
|
+
keyboardNavigation.tabbingInBackwards = true;
|
|
329
|
+
keyboardNavigation.tabindexContainer.focus();
|
|
330
|
+
delete keyboardNavigation.tabbingInBackwards;
|
|
331
|
+
e.preventDefault();
|
|
332
|
+
// Move to last valid keyboard nav module
|
|
333
|
+
// Note the we don't run it, just set the index
|
|
334
|
+
if (keyboardNavigation.modules &&
|
|
335
|
+
keyboardNavigation.modules.length) {
|
|
336
|
+
keyboardNavigation.currentModuleIx =
|
|
337
|
+
keyboardNavigation.modules.length - 1;
|
|
338
|
+
const curModule = keyboardNavigation.modules[keyboardNavigation.currentModuleIx];
|
|
339
|
+
// Validate the module
|
|
340
|
+
if (curModule &&
|
|
341
|
+
curModule.validate && !curModule.validate()) {
|
|
342
|
+
// Invalid.
|
|
343
|
+
// Try moving backwards to find next valid.
|
|
344
|
+
keyboardNavigation.move(-1);
|
|
345
|
+
}
|
|
346
|
+
else if (curModule) {
|
|
347
|
+
// We have a valid module, init it
|
|
348
|
+
curModule.init(-1);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// Don't skip the next focus, we only skip once.
|
|
354
|
+
keyboardNavigation.exiting = false;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get the ix of the first module that either does not require validation or
|
|
360
|
+
* validates positively.
|
|
361
|
+
* @private
|
|
362
|
+
*/
|
|
363
|
+
getFirstValidModuleIx() {
|
|
364
|
+
const len = this.modules.length;
|
|
365
|
+
for (let i = 0; i < len; ++i) {
|
|
366
|
+
const mod = this.modules[i];
|
|
367
|
+
if (!mod.validate || mod.validate()) {
|
|
368
|
+
return i;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Remove all traces of keyboard navigation.
|
|
375
|
+
* @private
|
|
376
|
+
*/
|
|
377
|
+
destroy() {
|
|
378
|
+
this.removeExitAnchor();
|
|
379
|
+
this.eventProvider.removeAddedEvents();
|
|
380
|
+
this.chart.container.removeAttribute('tabindex');
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/* *
|
|
384
|
+
*
|
|
385
|
+
* Class Namespace
|
|
386
|
+
*
|
|
387
|
+
* */
|
|
388
|
+
(function (KeyboardNavigation) {
|
|
389
|
+
/* *
|
|
390
|
+
*
|
|
391
|
+
* Declarations
|
|
392
|
+
*
|
|
393
|
+
* */
|
|
394
|
+
/* *
|
|
395
|
+
*
|
|
396
|
+
* Functions
|
|
397
|
+
*
|
|
398
|
+
* */
|
|
399
|
+
/**
|
|
400
|
+
* Composition function.
|
|
401
|
+
* @private
|
|
402
|
+
*/
|
|
403
|
+
function compose(ChartClass) {
|
|
404
|
+
MenuComponent.compose(ChartClass);
|
|
405
|
+
const chartProto = ChartClass.prototype;
|
|
406
|
+
if (!chartProto.dismissPopupContent) {
|
|
407
|
+
chartProto.dismissPopupContent = chartDismissPopupContent;
|
|
408
|
+
if (doc) {
|
|
409
|
+
addEvent(doc, 'keydown', documentOnKeydown);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return ChartClass;
|
|
413
|
+
}
|
|
414
|
+
KeyboardNavigation.compose = compose;
|
|
415
|
+
/**
|
|
416
|
+
* Dismiss popup content in chart, including export menu and tooltip.
|
|
417
|
+
* @private
|
|
418
|
+
*/
|
|
419
|
+
function chartDismissPopupContent() {
|
|
420
|
+
const chart = this;
|
|
421
|
+
fireEvent(this, 'dismissPopupContent', {}, function () {
|
|
422
|
+
if (chart.tooltip) {
|
|
423
|
+
chart.tooltip.hide(0);
|
|
424
|
+
}
|
|
425
|
+
chart.hideExportMenu();
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Add event listener to document to detect ESC key press and dismiss
|
|
430
|
+
* hover/popup content.
|
|
431
|
+
* @private
|
|
432
|
+
*/
|
|
433
|
+
function documentOnKeydown(e) {
|
|
434
|
+
const keycode = e.which || e.keyCode;
|
|
435
|
+
const esc = 27;
|
|
436
|
+
if (keycode === esc && H.charts) {
|
|
437
|
+
H.charts.forEach((chart) => {
|
|
438
|
+
if (chart && chart.dismissPopupContent) {
|
|
439
|
+
chart.dismissPopupContent();
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
})(KeyboardNavigation || (KeyboardNavigation = {}));
|
|
445
|
+
/* *
|
|
446
|
+
*
|
|
447
|
+
* Default Export
|
|
448
|
+
*
|
|
449
|
+
* */
|
|
450
|
+
export default KeyboardNavigation;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type Chart from '../Core/Chart/Chart';
|
|
2
|
+
/**
|
|
3
|
+
* Define a keyboard navigation handler for use with a
|
|
4
|
+
* Highcharts.AccessibilityComponent instance. This functions as an abstraction
|
|
5
|
+
* layer for keyboard navigation, and defines a map of keyCodes to handler
|
|
6
|
+
* functions.
|
|
7
|
+
*
|
|
8
|
+
* @requires modules/accessibility
|
|
9
|
+
*
|
|
10
|
+
* @sample highcharts/accessibility/custom-component
|
|
11
|
+
* Custom accessibility component
|
|
12
|
+
*
|
|
13
|
+
* @class
|
|
14
|
+
* @name Highcharts.KeyboardNavigationHandler
|
|
15
|
+
*
|
|
16
|
+
* @param {Highcharts.Chart} chart
|
|
17
|
+
* The chart this module should act on.
|
|
18
|
+
*
|
|
19
|
+
* @param {Highcharts.KeyboardNavigationHandlerOptionsObject} options
|
|
20
|
+
* Options for the keyboard navigation handler.
|
|
21
|
+
*/
|
|
22
|
+
declare class KeyboardNavigationHandler {
|
|
23
|
+
constructor(chart: Chart, options: KeyboardNavigationHandler.Options);
|
|
24
|
+
chart: Chart;
|
|
25
|
+
init: Function;
|
|
26
|
+
keyCodeMap: Array<[Array<number>, Function]>;
|
|
27
|
+
response: Record<string, number>;
|
|
28
|
+
terminate?: Function;
|
|
29
|
+
validate?: Function;
|
|
30
|
+
/**
|
|
31
|
+
* Find handler function(s) for key code in the keyCodeMap and run it.
|
|
32
|
+
*
|
|
33
|
+
* @function KeyboardNavigationHandler#run
|
|
34
|
+
* @param {global.KeyboardEvent} e
|
|
35
|
+
* @return {number} Returns a response code indicating whether the run was
|
|
36
|
+
* a success/fail/unhandled, or if we should move to next/prev module.
|
|
37
|
+
*/
|
|
38
|
+
run(e: KeyboardEvent): number;
|
|
39
|
+
}
|
|
40
|
+
declare namespace KeyboardNavigationHandler {
|
|
41
|
+
interface Options {
|
|
42
|
+
keyCodeMap: Array<[Array<number>, Function]>;
|
|
43
|
+
init: Function;
|
|
44
|
+
terminate?: Function;
|
|
45
|
+
validate?: Function;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export default KeyboardNavigationHandler;
|