@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,223 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Proxy elements are used to shadow SVG elements in HTML for assistive
|
|
6
|
+
* technology, such as screen readers or voice input software.
|
|
7
|
+
*
|
|
8
|
+
* The ProxyElement class represents such an element, and deals with
|
|
9
|
+
* overlay positioning and mirroring events for the target.
|
|
10
|
+
*
|
|
11
|
+
* License: www.highcharts.com/license
|
|
12
|
+
*
|
|
13
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14
|
+
*
|
|
15
|
+
* */
|
|
16
|
+
'use strict';
|
|
17
|
+
import H from '../Core/Globals.js';
|
|
18
|
+
const { doc, win } = H;
|
|
19
|
+
import U from '../Core/Utilities.js';
|
|
20
|
+
const { attr, css, merge } = U;
|
|
21
|
+
import EventProvider from './Utils/EventProvider.js';
|
|
22
|
+
import ChartUtilities from './Utils/ChartUtilities.js';
|
|
23
|
+
const { fireEventOnWrappedOrUnwrappedElement } = ChartUtilities;
|
|
24
|
+
import HTMLUtilities from './Utils/HTMLUtilities.js';
|
|
25
|
+
const { cloneMouseEvent, cloneTouchEvent, getFakeMouseEvent, removeElement } = HTMLUtilities;
|
|
26
|
+
/* *
|
|
27
|
+
*
|
|
28
|
+
* Class
|
|
29
|
+
*
|
|
30
|
+
* */
|
|
31
|
+
/**
|
|
32
|
+
* Represents a proxy element that overlays a target and relays events
|
|
33
|
+
* to its target.
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
* @class
|
|
37
|
+
*/
|
|
38
|
+
class ProxyElement {
|
|
39
|
+
/* *
|
|
40
|
+
*
|
|
41
|
+
* Constructor
|
|
42
|
+
*
|
|
43
|
+
* */
|
|
44
|
+
constructor(chart, target, proxyElementType = 'button', wrapperElementType, attributes) {
|
|
45
|
+
this.chart = chart;
|
|
46
|
+
this.target = target;
|
|
47
|
+
this.eventProvider = new EventProvider();
|
|
48
|
+
const innerEl = this.innerElement =
|
|
49
|
+
doc.createElement(proxyElementType), wrapperEl = this.element = wrapperElementType ?
|
|
50
|
+
doc.createElement(wrapperElementType) : innerEl;
|
|
51
|
+
if (!chart.styledMode) {
|
|
52
|
+
this.hideElementVisually(innerEl);
|
|
53
|
+
}
|
|
54
|
+
if (wrapperElementType) {
|
|
55
|
+
if (wrapperElementType === 'li' && !chart.styledMode) {
|
|
56
|
+
wrapperEl.style.listStyle = 'none';
|
|
57
|
+
}
|
|
58
|
+
wrapperEl.appendChild(innerEl);
|
|
59
|
+
this.element = wrapperEl;
|
|
60
|
+
}
|
|
61
|
+
this.updateTarget(target, attributes);
|
|
62
|
+
}
|
|
63
|
+
/* *
|
|
64
|
+
*
|
|
65
|
+
* Functions
|
|
66
|
+
*
|
|
67
|
+
* */
|
|
68
|
+
/**
|
|
69
|
+
* Fake a click event on the target.
|
|
70
|
+
*/
|
|
71
|
+
click() {
|
|
72
|
+
const pos = this.getTargetPosition();
|
|
73
|
+
pos.x += pos.width / 2;
|
|
74
|
+
pos.y += pos.height / 2;
|
|
75
|
+
const fakeEventObject = getFakeMouseEvent('click', pos);
|
|
76
|
+
fireEventOnWrappedOrUnwrappedElement(this.target.click, fakeEventObject);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Update the target to be proxied. The position and events are updated to
|
|
80
|
+
* match the new target.
|
|
81
|
+
* @param target The new target definition
|
|
82
|
+
* @param attributes New HTML attributes to apply to the proxy. Set an
|
|
83
|
+
* attribute to null to remove.
|
|
84
|
+
*/
|
|
85
|
+
updateTarget(target, attributes) {
|
|
86
|
+
this.target = target;
|
|
87
|
+
this.updateCSSClassName();
|
|
88
|
+
const attrs = attributes || {};
|
|
89
|
+
Object.keys(attrs).forEach((a) => {
|
|
90
|
+
if (attrs[a] === null) {
|
|
91
|
+
delete attrs[a];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
const targetAriaLabel = this.getTargetAttr(target.click, 'aria-label');
|
|
95
|
+
attr(this.innerElement, merge(targetAriaLabel ? {
|
|
96
|
+
'aria-label': targetAriaLabel
|
|
97
|
+
} : {}, attrs));
|
|
98
|
+
this.eventProvider.removeAddedEvents();
|
|
99
|
+
this.addProxyEventsToElement(this.innerElement, target.click);
|
|
100
|
+
this.refreshPosition();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Refresh the position of the proxy element to match the current target
|
|
104
|
+
*/
|
|
105
|
+
refreshPosition() {
|
|
106
|
+
const bBox = this.getTargetPosition();
|
|
107
|
+
css(this.innerElement, {
|
|
108
|
+
width: (bBox.width || 1) + 'px',
|
|
109
|
+
height: (bBox.height || 1) + 'px',
|
|
110
|
+
left: (Math.round(bBox.x) || 0) + 'px',
|
|
111
|
+
top: (Math.round(bBox.y) || 0) + 'px'
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Remove button from DOM, and clear events.
|
|
116
|
+
*/
|
|
117
|
+
remove() {
|
|
118
|
+
this.eventProvider.removeAddedEvents();
|
|
119
|
+
removeElement(this.element);
|
|
120
|
+
}
|
|
121
|
+
// -------------------------- private ------------------------------------
|
|
122
|
+
/**
|
|
123
|
+
* Update the CSS class name to match target
|
|
124
|
+
*/
|
|
125
|
+
updateCSSClassName() {
|
|
126
|
+
const stringHasNoTooltip = (s) => (s.indexOf('highcharts-no-tooltip') > -1);
|
|
127
|
+
const legend = this.chart.legend;
|
|
128
|
+
const groupDiv = legend.group && legend.group.div;
|
|
129
|
+
const noTooltipOnGroup = stringHasNoTooltip(groupDiv && groupDiv.className || '');
|
|
130
|
+
const targetClassName = this.getTargetAttr(this.target.click, 'class') || '';
|
|
131
|
+
const noTooltipOnTarget = stringHasNoTooltip(targetClassName);
|
|
132
|
+
this.innerElement.className = noTooltipOnGroup || noTooltipOnTarget ?
|
|
133
|
+
'highcharts-a11y-proxy-element highcharts-no-tooltip' :
|
|
134
|
+
'highcharts-a11y-proxy-element';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Mirror events for a proxy element to a target
|
|
138
|
+
*/
|
|
139
|
+
addProxyEventsToElement(element, target) {
|
|
140
|
+
[
|
|
141
|
+
'click', 'touchstart', 'touchend', 'touchcancel', 'touchmove',
|
|
142
|
+
'mouseover', 'mouseenter', 'mouseleave', 'mouseout'
|
|
143
|
+
].forEach((evtType) => {
|
|
144
|
+
const isTouchEvent = evtType.indexOf('touch') === 0;
|
|
145
|
+
this.eventProvider.addEvent(element, evtType, (e) => {
|
|
146
|
+
const clonedEvent = isTouchEvent ?
|
|
147
|
+
cloneTouchEvent(e) :
|
|
148
|
+
cloneMouseEvent(e);
|
|
149
|
+
if (target) {
|
|
150
|
+
fireEventOnWrappedOrUnwrappedElement(target, clonedEvent);
|
|
151
|
+
}
|
|
152
|
+
e.stopPropagation();
|
|
153
|
+
// #9682, #15318: Touch scrolling didn't work when touching
|
|
154
|
+
// proxy
|
|
155
|
+
if (!isTouchEvent) {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
}
|
|
158
|
+
}, { passive: false });
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Set visually hidden style on a proxy element
|
|
163
|
+
*/
|
|
164
|
+
hideElementVisually(el) {
|
|
165
|
+
css(el, {
|
|
166
|
+
borderWidth: 0,
|
|
167
|
+
backgroundColor: 'transparent',
|
|
168
|
+
cursor: 'pointer',
|
|
169
|
+
outline: 'none',
|
|
170
|
+
opacity: 0.001,
|
|
171
|
+
filter: 'alpha(opacity=1)',
|
|
172
|
+
zIndex: 999,
|
|
173
|
+
overflow: 'hidden',
|
|
174
|
+
padding: 0,
|
|
175
|
+
margin: 0,
|
|
176
|
+
display: 'block',
|
|
177
|
+
position: 'absolute',
|
|
178
|
+
'-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=1)'
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get the position relative to chart container for the target
|
|
183
|
+
*/
|
|
184
|
+
getTargetPosition() {
|
|
185
|
+
const clickTarget = this.target.click;
|
|
186
|
+
// We accept both DOM elements and wrapped elements as click targets.
|
|
187
|
+
const clickTargetElement = clickTarget.element ?
|
|
188
|
+
clickTarget.element :
|
|
189
|
+
clickTarget;
|
|
190
|
+
const posElement = this.target.visual || clickTargetElement;
|
|
191
|
+
const chartDiv = this.chart.renderTo, pointer = this.chart.pointer;
|
|
192
|
+
if (chartDiv && posElement?.getBoundingClientRect && pointer) {
|
|
193
|
+
const scrollTop = win.scrollY ||
|
|
194
|
+
doc.documentElement.scrollTop, rectEl = posElement.getBoundingClientRect(), chartPos = pointer.getChartPosition();
|
|
195
|
+
return {
|
|
196
|
+
x: (rectEl.left - chartPos.left) / chartPos.scaleX,
|
|
197
|
+
// #21994, Add scroll position as "getBoundingClientRect"
|
|
198
|
+
// returns the position from the viewport, not the document top.
|
|
199
|
+
y: ((rectEl.top + scrollTop) - chartPos.top) / chartPos.scaleY,
|
|
200
|
+
width: rectEl.right / chartPos.scaleX -
|
|
201
|
+
rectEl.left / chartPos.scaleX,
|
|
202
|
+
height: rectEl.bottom / chartPos.scaleY -
|
|
203
|
+
rectEl.top / chartPos.scaleY
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
return { x: 0, y: 0, width: 1, height: 1 };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get an attribute value of a target
|
|
210
|
+
*/
|
|
211
|
+
getTargetAttr(target, key) {
|
|
212
|
+
if (target.element) {
|
|
213
|
+
return target.element.getAttribute(key);
|
|
214
|
+
}
|
|
215
|
+
return target.getAttribute(key);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/* *
|
|
219
|
+
*
|
|
220
|
+
* Default Export
|
|
221
|
+
*
|
|
222
|
+
* */
|
|
223
|
+
export default ProxyElement;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type Accessibility from './Accessibility';
|
|
2
|
+
import type HTMLAttributes from '../Core/Renderer/HTML/HTMLAttributes';
|
|
3
|
+
import type { NullableHTMLAttributes } from './ProxyElement';
|
|
4
|
+
import ProxyElement from './ProxyElement.js';
|
|
5
|
+
/**
|
|
6
|
+
* Keeps track of all proxy elements and proxy groups.
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @class
|
|
10
|
+
*/
|
|
11
|
+
declare class ProxyProvider {
|
|
12
|
+
private chart;
|
|
13
|
+
private afterChartProxyPosContainer;
|
|
14
|
+
private beforeChartProxyPosContainer;
|
|
15
|
+
private domElementProvider;
|
|
16
|
+
private groupOrder;
|
|
17
|
+
private groups;
|
|
18
|
+
constructor(chart: Accessibility.ChartComposition);
|
|
19
|
+
/**
|
|
20
|
+
* Add a new proxy element to a group, proxying a target control.
|
|
21
|
+
*/
|
|
22
|
+
addProxyElement(groupKey: string, target: ProxyElement.Target, proxyElementType?: keyof HTMLElementTagNameMap, attributes?: NullableHTMLAttributes): ProxyElement;
|
|
23
|
+
/**
|
|
24
|
+
* Create a group that will contain proxy elements. The group order is
|
|
25
|
+
* automatically updated according to the last group order keys.
|
|
26
|
+
*
|
|
27
|
+
* Returns the added group.
|
|
28
|
+
*/
|
|
29
|
+
addGroup(groupKey: string, groupElementType?: keyof HTMLElementTagNameMap, attributes?: HTMLAttributes): HTMLElement;
|
|
30
|
+
/**
|
|
31
|
+
* Update HTML attributes of a group.
|
|
32
|
+
*/
|
|
33
|
+
updateGroupAttrs(groupKey: string, attributes: HTMLAttributes): void;
|
|
34
|
+
/**
|
|
35
|
+
* Reorder the proxy groups.
|
|
36
|
+
*
|
|
37
|
+
* The group key "series" refers to the chart's data points / <svg> element.
|
|
38
|
+
* This is so that the keyboardNavigation.order option can be used to
|
|
39
|
+
* determine the proxy group order.
|
|
40
|
+
*/
|
|
41
|
+
updateGroupOrder(groupKeys: string[]): void;
|
|
42
|
+
/**
|
|
43
|
+
* Remove all proxy elements in a group
|
|
44
|
+
*/
|
|
45
|
+
clearGroup(groupKey: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Remove a group from the DOM and from the proxy provider's group list.
|
|
48
|
+
* All child elements are removed.
|
|
49
|
+
* If the group does not exist, nothing happens.
|
|
50
|
+
*/
|
|
51
|
+
removeGroup(groupKey: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Update the position and order of all proxy groups and elements
|
|
54
|
+
*/
|
|
55
|
+
update(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Update all proxy element positions
|
|
58
|
+
*/
|
|
59
|
+
updateProxyElementPositions(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Update a group's proxy elements' positions.
|
|
62
|
+
* If the group does not exist, nothing happens.
|
|
63
|
+
*/
|
|
64
|
+
updateGroupProxyElementPositions(groupKey: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Remove all added elements
|
|
67
|
+
*/
|
|
68
|
+
destroy(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Create and return a pos container element (the overall containers for
|
|
71
|
+
* the proxy groups).
|
|
72
|
+
*/
|
|
73
|
+
private createProxyPosContainer;
|
|
74
|
+
/**
|
|
75
|
+
* Get an array of group keys that corresponds to the current group order
|
|
76
|
+
* in the DOM.
|
|
77
|
+
*/
|
|
78
|
+
private getCurrentGroupOrderInDOM;
|
|
79
|
+
/**
|
|
80
|
+
* Check if the current DOM order matches the current group order, so that
|
|
81
|
+
* a reordering/update is unnecessary.
|
|
82
|
+
*/
|
|
83
|
+
private isDOMOrderGroupOrder;
|
|
84
|
+
/**
|
|
85
|
+
* Update the DOM positions of the before/after proxy
|
|
86
|
+
* positioning containers for the groups.
|
|
87
|
+
*/
|
|
88
|
+
private updatePosContainerPositions;
|
|
89
|
+
}
|
|
90
|
+
export default ProxyProvider;
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Proxy elements are used to shadow SVG elements in HTML for assistive
|
|
6
|
+
* technology, such as screen readers or voice input software.
|
|
7
|
+
*
|
|
8
|
+
* The ProxyProvider keeps track of all proxy elements of the a11y module,
|
|
9
|
+
* and updating their order and positioning.
|
|
10
|
+
*
|
|
11
|
+
* License: www.highcharts.com/license
|
|
12
|
+
*
|
|
13
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14
|
+
*
|
|
15
|
+
* */
|
|
16
|
+
'use strict';
|
|
17
|
+
import H from '../Core/Globals.js';
|
|
18
|
+
const { doc } = H;
|
|
19
|
+
import U from '../Core/Utilities.js';
|
|
20
|
+
const { attr, css } = U;
|
|
21
|
+
import CU from './Utils/ChartUtilities.js';
|
|
22
|
+
const { unhideChartElementFromAT } = CU;
|
|
23
|
+
import DOMElementProvider from './Utils/DOMElementProvider.js';
|
|
24
|
+
import HU from './Utils/HTMLUtilities.js';
|
|
25
|
+
const { removeChildNodes } = HU;
|
|
26
|
+
import ProxyElement from './ProxyElement.js';
|
|
27
|
+
/* *
|
|
28
|
+
*
|
|
29
|
+
* Class
|
|
30
|
+
*
|
|
31
|
+
* */
|
|
32
|
+
/**
|
|
33
|
+
* Keeps track of all proxy elements and proxy groups.
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
* @class
|
|
37
|
+
*/
|
|
38
|
+
class ProxyProvider {
|
|
39
|
+
/* *
|
|
40
|
+
*
|
|
41
|
+
* Constructor
|
|
42
|
+
*
|
|
43
|
+
* */
|
|
44
|
+
constructor(chart) {
|
|
45
|
+
this.chart = chart;
|
|
46
|
+
this.domElementProvider = new DOMElementProvider();
|
|
47
|
+
this.groups = {};
|
|
48
|
+
this.groupOrder = [];
|
|
49
|
+
this.beforeChartProxyPosContainer = this.createProxyPosContainer('before');
|
|
50
|
+
this.afterChartProxyPosContainer = this.createProxyPosContainer('after');
|
|
51
|
+
this.update();
|
|
52
|
+
}
|
|
53
|
+
/* *
|
|
54
|
+
*
|
|
55
|
+
* Functions
|
|
56
|
+
*
|
|
57
|
+
* */
|
|
58
|
+
/* eslint-disable */
|
|
59
|
+
/**
|
|
60
|
+
* Add a new proxy element to a group, proxying a target control.
|
|
61
|
+
*/
|
|
62
|
+
addProxyElement(groupKey, target, proxyElementType = 'button', attributes) {
|
|
63
|
+
const group = this.groups[groupKey];
|
|
64
|
+
if (!group) {
|
|
65
|
+
throw new Error('ProxyProvider.addProxyElement: Invalid group key ' + groupKey);
|
|
66
|
+
}
|
|
67
|
+
const wrapperElementType = group.type === 'ul' || group.type === 'ol' ?
|
|
68
|
+
'li' : void 0, proxy = new ProxyElement(this.chart, target, proxyElementType, wrapperElementType, attributes);
|
|
69
|
+
group.proxyContainerElement.appendChild(proxy.element);
|
|
70
|
+
group.proxyElements.push(proxy);
|
|
71
|
+
return proxy;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a group that will contain proxy elements. The group order is
|
|
75
|
+
* automatically updated according to the last group order keys.
|
|
76
|
+
*
|
|
77
|
+
* Returns the added group.
|
|
78
|
+
*/
|
|
79
|
+
addGroup(groupKey, groupElementType = 'div', attributes) {
|
|
80
|
+
const existingGroup = this.groups[groupKey];
|
|
81
|
+
if (existingGroup) {
|
|
82
|
+
return existingGroup.groupElement;
|
|
83
|
+
}
|
|
84
|
+
const proxyContainer = this.domElementProvider
|
|
85
|
+
.createElement(groupElementType);
|
|
86
|
+
// If we want to add a role to the group, and still use e.g.
|
|
87
|
+
// a list group, we need a wrapper div around the proxyContainer.
|
|
88
|
+
// Used for setting region role on legend.
|
|
89
|
+
let groupElement;
|
|
90
|
+
if (attributes && attributes.role && groupElementType !== 'div') {
|
|
91
|
+
groupElement = this.domElementProvider.createElement('div');
|
|
92
|
+
groupElement.appendChild(proxyContainer);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
groupElement = proxyContainer;
|
|
96
|
+
}
|
|
97
|
+
groupElement.className = 'highcharts-a11y-proxy-group highcharts-a11y-proxy-group-' +
|
|
98
|
+
groupKey.replace(/\W/g, '-');
|
|
99
|
+
this.groups[groupKey] = {
|
|
100
|
+
proxyContainerElement: proxyContainer,
|
|
101
|
+
groupElement,
|
|
102
|
+
type: groupElementType,
|
|
103
|
+
proxyElements: []
|
|
104
|
+
};
|
|
105
|
+
attr(groupElement, attributes || {});
|
|
106
|
+
if (groupElementType === 'ul') {
|
|
107
|
+
proxyContainer.setAttribute('role', 'list'); // Needed for webkit
|
|
108
|
+
}
|
|
109
|
+
// Add the group to the end by default, and perhaps then we
|
|
110
|
+
// won't have to reorder the whole set of groups.
|
|
111
|
+
this.afterChartProxyPosContainer.appendChild(groupElement);
|
|
112
|
+
this.updateGroupOrder(this.groupOrder);
|
|
113
|
+
return groupElement;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Update HTML attributes of a group.
|
|
117
|
+
*/
|
|
118
|
+
updateGroupAttrs(groupKey, attributes) {
|
|
119
|
+
const group = this.groups[groupKey];
|
|
120
|
+
if (!group) {
|
|
121
|
+
throw new Error('ProxyProvider.updateGroupAttrs: Invalid group key ' + groupKey);
|
|
122
|
+
}
|
|
123
|
+
attr(group.groupElement, attributes);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reorder the proxy groups.
|
|
127
|
+
*
|
|
128
|
+
* The group key "series" refers to the chart's data points / <svg> element.
|
|
129
|
+
* This is so that the keyboardNavigation.order option can be used to
|
|
130
|
+
* determine the proxy group order.
|
|
131
|
+
*/
|
|
132
|
+
updateGroupOrder(groupKeys) {
|
|
133
|
+
// Store so that we can update order when a new group is created
|
|
134
|
+
this.groupOrder = groupKeys.slice();
|
|
135
|
+
// Don't unnecessarily reorder, because keyboard focus is lost
|
|
136
|
+
if (this.isDOMOrderGroupOrder()) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const seriesIx = groupKeys.indexOf('series');
|
|
140
|
+
const beforeKeys = seriesIx > -1 ? groupKeys.slice(0, seriesIx) : groupKeys;
|
|
141
|
+
const afterKeys = seriesIx > -1 ? groupKeys.slice(seriesIx + 1) : [];
|
|
142
|
+
// Store focused element since it will be lost when reordering
|
|
143
|
+
const activeElement = doc.activeElement;
|
|
144
|
+
// Add groups to correct container
|
|
145
|
+
['before', 'after'].forEach((pos) => {
|
|
146
|
+
const posContainer = this[pos === 'before' ?
|
|
147
|
+
'beforeChartProxyPosContainer' :
|
|
148
|
+
'afterChartProxyPosContainer'];
|
|
149
|
+
const keys = pos === 'before' ? beforeKeys : afterKeys;
|
|
150
|
+
removeChildNodes(posContainer);
|
|
151
|
+
keys.forEach((groupKey) => {
|
|
152
|
+
const group = this.groups[groupKey];
|
|
153
|
+
if (group) {
|
|
154
|
+
posContainer.appendChild(group.groupElement);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
// Attempt to restore focus after reordering, but note that this may
|
|
159
|
+
// cause screen readers re-announcing the button.
|
|
160
|
+
if ((this.beforeChartProxyPosContainer.contains(activeElement) ||
|
|
161
|
+
this.afterChartProxyPosContainer.contains(activeElement)) &&
|
|
162
|
+
activeElement && activeElement.focus) {
|
|
163
|
+
activeElement.focus();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Remove all proxy elements in a group
|
|
168
|
+
*/
|
|
169
|
+
clearGroup(groupKey) {
|
|
170
|
+
const group = this.groups[groupKey];
|
|
171
|
+
if (!group) {
|
|
172
|
+
throw new Error('ProxyProvider.clearGroup: Invalid group key ' + groupKey);
|
|
173
|
+
}
|
|
174
|
+
removeChildNodes(group.proxyContainerElement);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Remove a group from the DOM and from the proxy provider's group list.
|
|
178
|
+
* All child elements are removed.
|
|
179
|
+
* If the group does not exist, nothing happens.
|
|
180
|
+
*/
|
|
181
|
+
removeGroup(groupKey) {
|
|
182
|
+
const group = this.groups[groupKey];
|
|
183
|
+
if (group) {
|
|
184
|
+
// Remove detached HTML elements to prevent memory leak (#20329).
|
|
185
|
+
this.domElementProvider.removeElement(group.groupElement);
|
|
186
|
+
// Sometimes groupElement is a wrapper around the proxyContainer, so
|
|
187
|
+
// the real one proxyContainer needs to be removed also.
|
|
188
|
+
if (group.groupElement !== group.proxyContainerElement) {
|
|
189
|
+
this.domElementProvider.removeElement(group.proxyContainerElement);
|
|
190
|
+
}
|
|
191
|
+
delete this.groups[groupKey];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Update the position and order of all proxy groups and elements
|
|
196
|
+
*/
|
|
197
|
+
update() {
|
|
198
|
+
this.updatePosContainerPositions();
|
|
199
|
+
this.updateGroupOrder(this.groupOrder);
|
|
200
|
+
this.updateProxyElementPositions();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Update all proxy element positions
|
|
204
|
+
*/
|
|
205
|
+
updateProxyElementPositions() {
|
|
206
|
+
Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this));
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Update a group's proxy elements' positions.
|
|
210
|
+
* If the group does not exist, nothing happens.
|
|
211
|
+
*/
|
|
212
|
+
updateGroupProxyElementPositions(groupKey) {
|
|
213
|
+
const group = this.groups[groupKey];
|
|
214
|
+
if (group) {
|
|
215
|
+
group.proxyElements.forEach((el) => el.refreshPosition());
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Remove all added elements
|
|
220
|
+
*/
|
|
221
|
+
destroy() {
|
|
222
|
+
this.domElementProvider.destroyCreatedElements();
|
|
223
|
+
}
|
|
224
|
+
// -------------------------- private ------------------------------------
|
|
225
|
+
/**
|
|
226
|
+
* Create and return a pos container element (the overall containers for
|
|
227
|
+
* the proxy groups).
|
|
228
|
+
*/
|
|
229
|
+
createProxyPosContainer(classNamePostfix) {
|
|
230
|
+
const el = this.domElementProvider.createElement('div');
|
|
231
|
+
el.setAttribute('aria-hidden', 'false');
|
|
232
|
+
el.className = 'highcharts-a11y-proxy-container' + (classNamePostfix ? '-' + classNamePostfix : '');
|
|
233
|
+
css(el, {
|
|
234
|
+
top: '0',
|
|
235
|
+
left: '0'
|
|
236
|
+
});
|
|
237
|
+
if (!this.chart.styledMode) {
|
|
238
|
+
el.style.whiteSpace = 'nowrap';
|
|
239
|
+
el.style.position = 'absolute';
|
|
240
|
+
}
|
|
241
|
+
return el;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get an array of group keys that corresponds to the current group order
|
|
245
|
+
* in the DOM.
|
|
246
|
+
*/
|
|
247
|
+
getCurrentGroupOrderInDOM() {
|
|
248
|
+
const getGroupKeyFromElement = (el) => {
|
|
249
|
+
const allGroups = Object.keys(this.groups);
|
|
250
|
+
let i = allGroups.length;
|
|
251
|
+
while (i--) {
|
|
252
|
+
const groupKey = allGroups[i];
|
|
253
|
+
const group = this.groups[groupKey];
|
|
254
|
+
if (group && el === group.groupElement) {
|
|
255
|
+
return groupKey;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
const getChildrenGroupOrder = (el) => {
|
|
260
|
+
const childrenOrder = [];
|
|
261
|
+
const children = el.children;
|
|
262
|
+
for (let i = 0; i < children.length; ++i) {
|
|
263
|
+
const groupKey = getGroupKeyFromElement(children[i]);
|
|
264
|
+
if (groupKey) {
|
|
265
|
+
childrenOrder.push(groupKey);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return childrenOrder;
|
|
269
|
+
};
|
|
270
|
+
const before = getChildrenGroupOrder(this.beforeChartProxyPosContainer);
|
|
271
|
+
const after = getChildrenGroupOrder(this.afterChartProxyPosContainer);
|
|
272
|
+
before.push('series');
|
|
273
|
+
return before.concat(after);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Check if the current DOM order matches the current group order, so that
|
|
277
|
+
* a reordering/update is unnecessary.
|
|
278
|
+
*/
|
|
279
|
+
isDOMOrderGroupOrder() {
|
|
280
|
+
const domOrder = this.getCurrentGroupOrderInDOM();
|
|
281
|
+
const groupOrderWithGroups = this.groupOrder.filter((x) => x === 'series' || !!this.groups[x]);
|
|
282
|
+
let i = domOrder.length;
|
|
283
|
+
if (i !== groupOrderWithGroups.length) {
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
while (i--) {
|
|
287
|
+
if (domOrder[i] !== groupOrderWithGroups[i]) {
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Update the DOM positions of the before/after proxy
|
|
295
|
+
* positioning containers for the groups.
|
|
296
|
+
*/
|
|
297
|
+
updatePosContainerPositions() {
|
|
298
|
+
const chart = this.chart;
|
|
299
|
+
// If exporting, don't add these containers to the DOM.
|
|
300
|
+
if (chart.renderer.forExport) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const rendererSVGEl = chart.renderer.box;
|
|
304
|
+
chart.container.insertBefore(this.afterChartProxyPosContainer, rendererSVGEl.nextSibling);
|
|
305
|
+
chart.container.insertBefore(this.beforeChartProxyPosContainer, rendererSVGEl);
|
|
306
|
+
unhideChartElementFromAT(this.chart, this.afterChartProxyPosContainer);
|
|
307
|
+
unhideChartElementFromAT(this.chart, this.beforeChartProxyPosContainer);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/* *
|
|
311
|
+
*
|
|
312
|
+
* Export Default
|
|
313
|
+
*
|
|
314
|
+
* */
|
|
315
|
+
export default ProxyProvider;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type Chart from '../../Core/Chart/Chart';
|
|
2
|
+
import type { HTMLDOMElement } from '../../Core/Renderer/DOMElementType';
|
|
3
|
+
/**
|
|
4
|
+
* Internal types.
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
7
|
+
declare module '../../Core/Chart/ChartBase' {
|
|
8
|
+
interface ChartBase {
|
|
9
|
+
announcerContainer?: HTMLDOMElement;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare class Announcer {
|
|
13
|
+
private chart;
|
|
14
|
+
private domElementProvider;
|
|
15
|
+
private announceRegion;
|
|
16
|
+
private clearAnnouncementRegionTimer?;
|
|
17
|
+
constructor(chart: Chart, type: Announcer.Type);
|
|
18
|
+
destroy(): void;
|
|
19
|
+
announce(message: string): void;
|
|
20
|
+
private addAnnounceRegion;
|
|
21
|
+
private createAnnouncerContainer;
|
|
22
|
+
}
|
|
23
|
+
declare namespace Announcer {
|
|
24
|
+
type Type = ('assertive' | 'polite');
|
|
25
|
+
}
|
|
26
|
+
export default Announcer;
|