@highcharts/grid-pro 2.1.1 → 2.2.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/css/grid-pro.css +428 -432
- package/es-modules/Accessibility/A11yI18n.js +3 -3
- package/es-modules/Accessibility/Accessibility.js +4 -3
- package/es-modules/Accessibility/AccessibilityComponent.d.ts +1 -1
- package/es-modules/Accessibility/AccessibilityComponent.js +4 -3
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +4 -3
- package/es-modules/Accessibility/Components/ContainerComponent.js +4 -3
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +4 -3
- package/es-modules/Accessibility/Components/LegendComponent.js +4 -3
- package/es-modules/Accessibility/Components/MenuComponent.js +4 -3
- package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -3
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +4 -3
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +14 -3
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +4 -3
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +4 -3
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -3
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +4 -3
- package/es-modules/Accessibility/Components/ZoomComponent.js +4 -3
- package/es-modules/Accessibility/FocusBorder.js +4 -3
- package/es-modules/Accessibility/HighContrastMode.js +4 -3
- package/es-modules/Accessibility/HighContrastTheme.js +4 -3
- package/es-modules/Accessibility/KeyboardNavigation.js +4 -3
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +4 -3
- package/es-modules/Accessibility/Options/A11yDefaults.js +4 -3
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +4 -3
- package/es-modules/Accessibility/Options/LangDefaults.js +4 -3
- package/es-modules/Accessibility/ProxyElement.js +4 -3
- package/es-modules/Accessibility/ProxyProvider.js +4 -3
- package/es-modules/Accessibility/Utils/Announcer.js +4 -3
- package/es-modules/Accessibility/Utils/ChartUtilities.js +4 -3
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +4 -3
- package/es-modules/Accessibility/Utils/EventProvider.d.ts +1 -1
- package/es-modules/Accessibility/Utils/EventProvider.js +4 -3
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +4 -3
- package/es-modules/Core/Animation/AnimationOptions.d.ts +42 -0
- package/es-modules/Core/Animation/AnimationOptions.js +10 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +39 -3
- package/es-modules/Core/Animation/Fx.d.ts +1 -130
- package/es-modules/Core/Animation/Fx.js +13 -6
- package/es-modules/Core/Animation/FxBase.d.ts +1 -0
- package/es-modules/Core/Animation/FxBase.js +11 -0
- package/es-modules/Core/Callback.d.ts +49 -0
- package/es-modules/Core/Callback.js +10 -0
- package/es-modules/Core/Chart/Chart.d.ts +659 -400
- package/es-modules/Core/Chart/Chart.js +64 -54
- package/es-modules/Core/Chart/Chart3D.d.ts +123 -233
- package/es-modules/Core/Chart/Chart3D.js +22 -35
- package/es-modules/Core/Chart/ChartBase.d.ts +3 -0
- package/es-modules/Core/Chart/ChartBase.js +11 -0
- package/es-modules/Core/Chart/ChartDefaults.js +7 -12
- package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +1 -55
- package/es-modules/Core/Chart/ChartNavigationComposition.js +13 -13
- package/es-modules/Core/Chart/ChartOptions.d.ts +1217 -0
- package/es-modules/Core/Chart/ChartOptions.js +10 -0
- package/es-modules/Core/Chart/GanttChart.d.ts +0 -38
- package/es-modules/Core/Chart/GanttChart.js +4 -3
- package/es-modules/Core/Chart/MapChart.d.ts +9 -4
- package/es-modules/Core/Chart/MapChart.js +13 -3
- package/es-modules/Core/Chart/StockChart.d.ts +0 -85
- package/es-modules/Core/Chart/StockChart.js +33 -15
- package/es-modules/Core/Color/Color.d.ts +16 -24
- package/es-modules/Core/Color/Color.js +26 -8
- package/es-modules/Core/Color/ColorString.d.ts +0 -23
- package/es-modules/Core/Color/ColorString.js +11 -0
- package/es-modules/Core/Color/ColorType.d.ts +0 -33
- package/es-modules/Core/Color/ColorType.js +11 -0
- package/es-modules/Core/Color/GradientColor.d.ts +0 -33
- package/es-modules/Core/Color/GradientColor.js +11 -0
- package/es-modules/Core/Color/Palettes.d.ts +1 -84
- package/es-modules/Core/Color/Palettes.js +2 -1
- package/es-modules/Core/Defaults.d.ts +6 -0
- package/es-modules/Core/Defaults.js +30 -66
- package/es-modules/Core/Foundation.d.ts +1 -19
- package/es-modules/Core/Foundation.js +7 -4
- package/es-modules/Core/Geometry/CircleObject.d.ts +5 -0
- package/es-modules/Core/Geometry/CircleObject.js +10 -0
- package/es-modules/Core/Geometry/CircleUtilities.d.ts +1 -189
- package/es-modules/Core/Geometry/CircleUtilities.js +17 -15
- package/es-modules/Core/Geometry/GeometryObject.d.ts +7 -0
- package/es-modules/Core/Geometry/GeometryObject.js +10 -0
- package/es-modules/Core/Geometry/GeometryUtilities.d.ts +1 -48
- package/es-modules/Core/Geometry/GeometryUtilities.js +9 -7
- package/es-modules/Core/Geometry/IntersectionObject.d.ts +7 -0
- package/es-modules/Core/Geometry/IntersectionObject.js +10 -0
- package/es-modules/Core/Geometry/PolygonClip.d.ts +1 -19
- package/es-modules/Core/Geometry/PolygonClip.js +9 -7
- package/es-modules/Core/Globals.d.ts +9 -31
- package/es-modules/Core/Globals.js +9 -10
- package/es-modules/Core/GlobalsBase.d.ts +35 -0
- package/es-modules/Core/GlobalsBase.js +11 -0
- package/es-modules/Core/HttpUtilities.d.ts +54 -17
- package/es-modules/Core/HttpUtilities.js +15 -14
- package/es-modules/Core/JSON.d.ts +29 -0
- package/es-modules/Core/JSON.js +13 -0
- package/es-modules/Core/KeyboardEvent.d.ts +1 -0
- package/es-modules/Core/KeyboardEvent.js +11 -0
- package/es-modules/Core/MSPointer.d.ts +1 -74
- package/es-modules/Core/MSPointer.js +23 -13
- package/es-modules/Core/Math3D.d.ts +1 -117
- package/es-modules/Core/Math3D.js +13 -10
- package/es-modules/Core/Options.d.ts +334 -0
- package/es-modules/Core/Options.js +10 -0
- package/es-modules/Core/Pointer.d.ts +71 -445
- package/es-modules/Core/Pointer.js +51 -65
- package/es-modules/Core/PointerEvent.d.ts +18 -0
- package/es-modules/Core/PointerEvent.js +11 -0
- package/es-modules/Core/Renderer/AlignObject.d.ts +25 -27
- package/es-modules/Core/Renderer/AlignObject.js +11 -0
- package/es-modules/Core/Renderer/BBoxObject.d.ts +20 -31
- package/es-modules/Core/Renderer/BBoxObject.js +11 -0
- package/es-modules/Core/Renderer/CSSObject.d.ts +268 -59
- package/es-modules/Core/Renderer/CSSObject.js +10 -0
- package/es-modules/Core/Renderer/DOMElementType.d.ts +1 -33
- package/es-modules/Core/Renderer/DOMElementType.js +11 -0
- package/es-modules/Core/Renderer/DashStyleValue.d.ts +1 -27
- package/es-modules/Core/Renderer/DashStyleValue.js +11 -0
- package/es-modules/Core/Renderer/FontMetricsObject.d.ts +6 -26
- package/es-modules/Core/Renderer/FontMetricsObject.js +11 -0
- package/es-modules/Core/Renderer/HTML/AST.d.ts +3 -15
- package/es-modules/Core/Renderer/HTML/AST.js +22 -13
- package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +1 -25
- package/es-modules/Core/Renderer/HTML/HTMLAttributes.js +11 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +0 -54
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +27 -22
- package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +15 -12
- package/es-modules/Core/Renderer/PolygonBoxObject.js +11 -0
- package/es-modules/Core/Renderer/Position3DObject.d.ts +6 -30
- package/es-modules/Core/Renderer/Position3DObject.js +11 -0
- package/es-modules/Core/Renderer/PositionObject.d.ts +9 -23
- package/es-modules/Core/Renderer/PositionObject.js +11 -0
- package/es-modules/Core/Renderer/RectangleObject.d.ts +6 -30
- package/es-modules/Core/Renderer/RectangleObject.js +11 -0
- package/es-modules/Core/Renderer/RendererRegistry.d.ts +1 -29
- package/es-modules/Core/Renderer/RendererRegistry.js +6 -3
- package/es-modules/Core/Renderer/RendererType.d.ts +1 -53
- package/es-modules/Core/Renderer/RendererType.js +11 -0
- package/es-modules/Core/Renderer/RendererUtilities.d.ts +1 -26
- package/es-modules/Core/Renderer/RendererUtilities.js +7 -4
- package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +26 -31
- package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +1 -44
- package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +15 -51
- package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +1 -42
- package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +1 -42
- package/es-modules/Core/Renderer/SVG/SVGElement.d.ts +459 -0
- package/es-modules/Core/Renderer/SVG/SVGElement3D.d.ts +1 -0
- package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +0 -23
- package/es-modules/Core/Renderer/SVG/SVGLabel.d.ts +14 -0
- package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +18 -56
- package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +0 -30
- package/es-modules/Core/Renderer/SVG/SVGRenderer.d.ts +652 -0
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.d.ts +1 -0
- package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +0 -24
- package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +3 -26
- package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +1 -41
- package/es-modules/Core/Renderer/SVG/Symbols.d.ts +146 -0
- package/es-modules/Core/Renderer/SVG/TextBuilder.d.ts +1 -0
- package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +21 -30
- package/es-modules/Core/Renderer/ShadowOptionsObject.js +11 -0
- package/es-modules/Core/Renderer/SizeObject.d.ts +0 -23
- package/es-modules/Core/Renderer/SizeObject.js +11 -0
- package/es-modules/Core/Responsive.d.ts +91 -28
- package/es-modules/Core/Responsive.js +7 -8
- package/es-modules/Core/Templating.d.ts +16 -0
- package/es-modules/Core/Templating.js +9 -4
- package/es-modules/Core/Time.d.ts +10 -1
- package/es-modules/Core/Time.js +4 -3
- package/es-modules/Core/Tooltip.d.ts +63 -115
- package/es-modules/Core/Tooltip.js +61 -27
- package/es-modules/Core/TooltipOptions.d.ts +681 -0
- package/es-modules/Core/TooltipOptions.js +10 -0
- package/es-modules/Core/Utilities.d.ts +75 -106
- package/es-modules/Core/Utilities.js +19 -53
- package/es-modules/Data/ColumnUtils.js +3 -3
- package/es-modules/Data/Connectors/CSVConnector.js +3 -3
- package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +3 -3
- package/es-modules/Data/Connectors/DataConnector.d.ts +12 -1
- package/es-modules/Data/Connectors/DataConnector.js +34 -4
- package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +3 -3
- package/es-modules/Data/Connectors/DataConnectorType.d.ts +3 -3
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +3 -3
- package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +3 -3
- package/es-modules/Data/Connectors/HTMLTableConnector.js +3 -3
- package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +3 -3
- package/es-modules/Data/Connectors/JSONConnector.js +3 -3
- package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +3 -3
- package/es-modules/Data/Converters/CSVConverter.js +3 -3
- package/es-modules/Data/Converters/CSVConverterOptions.d.ts +3 -3
- package/es-modules/Data/Converters/DataConverter.js +3 -3
- package/es-modules/Data/Converters/DataConverterType.d.ts +3 -3
- package/es-modules/Data/Converters/DataConverterUtils.js +3 -3
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +3 -3
- package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +3 -3
- package/es-modules/Data/Converters/HTMLTableConverter.js +3 -3
- package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +3 -3
- package/es-modules/Data/Converters/JSONConverter.js +3 -3
- package/es-modules/Data/Converters/JSONConverterOptions.d.ts +3 -3
- package/es-modules/Data/DataCursor.js +3 -3
- package/es-modules/Data/DataEvent.js +3 -3
- package/es-modules/Data/DataPool.js +3 -3
- package/es-modules/Data/DataPoolOptions.d.ts +3 -3
- package/es-modules/Data/DataTable.d.ts +6 -6
- package/es-modules/Data/DataTable.js +64 -30
- package/es-modules/Data/DataTableCore.d.ts +2 -2
- package/es-modules/Data/DataTableCore.js +5 -5
- package/es-modules/Data/DataTableOptions.js +3 -3
- package/es-modules/Data/Formula/Formula.js +3 -3
- package/es-modules/Data/Formula/FormulaParser.js +3 -3
- package/es-modules/Data/Formula/FormulaProcessor.js +3 -3
- package/es-modules/Data/Formula/FormulaTypes.js +3 -3
- package/es-modules/Data/Formula/Functions/ABS.js +3 -3
- package/es-modules/Data/Formula/Functions/AND.js +3 -3
- package/es-modules/Data/Formula/Functions/AVERAGE.js +3 -3
- package/es-modules/Data/Formula/Functions/AVERAGEA.js +3 -3
- package/es-modules/Data/Formula/Functions/COUNT.js +3 -3
- package/es-modules/Data/Formula/Functions/COUNTA.js +3 -3
- package/es-modules/Data/Formula/Functions/IF.js +3 -3
- package/es-modules/Data/Formula/Functions/ISNA.js +3 -3
- package/es-modules/Data/Formula/Functions/MAX.js +3 -3
- package/es-modules/Data/Formula/Functions/MEDIAN.js +3 -3
- package/es-modules/Data/Formula/Functions/MIN.js +3 -3
- package/es-modules/Data/Formula/Functions/MOD.js +3 -3
- package/es-modules/Data/Formula/Functions/MODE.js +3 -3
- package/es-modules/Data/Formula/Functions/NOT.js +3 -3
- package/es-modules/Data/Formula/Functions/OR.js +3 -3
- package/es-modules/Data/Formula/Functions/PRODUCT.js +3 -3
- package/es-modules/Data/Formula/Functions/SUM.js +3 -3
- package/es-modules/Data/Formula/Functions/XOR.js +3 -3
- package/es-modules/Data/Modifiers/ChainModifier.js +3 -3
- package/es-modules/Data/Modifiers/ChainModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/DataModifier.js +3 -3
- package/es-modules/Data/Modifiers/DataModifierEvent.js +3 -3
- package/es-modules/Data/Modifiers/DataModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/DataModifierType.d.ts +3 -3
- package/es-modules/Data/Modifiers/FilterModifier.js +3 -3
- package/es-modules/Data/Modifiers/FilterModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/InvertModifier.js +3 -3
- package/es-modules/Data/Modifiers/InvertModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/MathModifier.js +3 -3
- package/es-modules/Data/Modifiers/MathModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/RangeModifier.js +3 -3
- package/es-modules/Data/Modifiers/RangeModifierOptions.js +3 -3
- package/es-modules/Data/Modifiers/SortModifier.js +32 -6
- package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +41 -4
- package/es-modules/Data/Modifiers/SortModifierOptions.js +3 -3
- package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +77 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.js +4 -3
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +67 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.js +176 -3
- package/es-modules/Grid/Core/Credits.js +3 -3
- package/es-modules/Grid/Core/Defaults.js +17 -5
- package/es-modules/Grid/Core/Globals.d.ts +4 -4
- package/es-modules/Grid/Core/Globals.js +5 -5
- package/es-modules/Grid/Core/Grid.d.ts +12 -1
- package/es-modules/Grid/Core/Grid.js +110 -8
- package/es-modules/Grid/Core/GridUtils.js +3 -3
- package/es-modules/Grid/Core/Options.d.ts +17 -1
- package/es-modules/Grid/Core/Options.js +3 -3
- package/es-modules/Grid/Core/Pagination/Pagination.js +3 -3
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +0 -40
- package/es-modules/Grid/Core/Pagination/PaginationOptions.js +11 -0
- package/es-modules/Grid/Core/Querying/FilteringController.js +3 -3
- package/es-modules/Grid/Core/Querying/PaginationController.js +3 -3
- package/es-modules/Grid/Core/Querying/QueryingController.js +3 -3
- package/es-modules/Grid/Core/Querying/SortingController.d.ts +15 -0
- package/es-modules/Grid/Core/Querying/SortingController.js +89 -51
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +3 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +2 -2
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +3 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +3 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +3 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +12 -2
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +85 -18
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +3 -3
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +37 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +137 -26
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +9 -2
- package/es-modules/Grid/Core/Table/Body/TableCell.js +15 -8
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +18 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.js +56 -10
- package/es-modules/Grid/Core/Table/Cell.d.ts +0 -7
- package/es-modules/Grid/Core/Table/Cell.js +5 -3
- package/es-modules/Grid/Core/Table/CellContent/CellContent.js +3 -3
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +4 -4
- package/es-modules/Grid/Core/Table/Column.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Column.js +3 -3
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +3 -3
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +3 -3
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +3 -3
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +3 -3
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +3 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +14 -5
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +3 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +3 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +9 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +35 -6
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +5 -4
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +11 -7
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +3 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +3 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +5 -1
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +92 -9
- package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +2 -2
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +8 -7
- package/es-modules/Grid/Core/Table/Header/HeaderRow.js +3 -3
- package/es-modules/Grid/Core/Table/Header/TableHeader.js +3 -3
- package/es-modules/Grid/Core/Table/Row.js +3 -3
- package/es-modules/Grid/Core/Table/Table.d.ts +30 -0
- package/es-modules/Grid/Core/Table/Table.js +118 -7
- package/es-modules/Grid/Core/UI/Button.js +3 -3
- package/es-modules/Grid/Core/UI/ContextMenu.js +3 -3
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +3 -3
- package/es-modules/Grid/Core/UI/Popup.js +3 -3
- package/es-modules/Grid/Core/UI/SvgIcons.js +3 -3
- package/es-modules/Grid/Core/UI/Toolbar.js +3 -3
- package/es-modules/Grid/Core/UI/ToolbarButton.js +3 -3
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +3 -44
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.js +16 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +3 -3
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +1 -34
- package/es-modules/Grid/Pro/CellRendering/CellRendererType.js +15 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +7 -5
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +10 -1
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +50 -8
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +3 -3
- package/es-modules/Grid/Pro/Credits/CreditsPro.js +3 -3
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +3 -3
- package/es-modules/Grid/Pro/Export/Exporting.js +4 -5
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +3 -3
- package/es-modules/Grid/Pro/GridEvents.d.ts +1 -0
- package/es-modules/Grid/Pro/GridEvents.js +3 -3
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +3 -3
- package/es-modules/Grid/index.js +3 -3
- package/es-modules/Shared/BaseForm.js +3 -3
- package/es-modules/Shared/DownloadURL.d.ts +1 -85
- package/es-modules/Shared/DownloadURL.js +14 -11
- package/es-modules/Shared/LangOptionsCore.d.ts +4 -3
- package/es-modules/Shared/TimeBase.d.ts +1 -46
- package/es-modules/Shared/TimeBase.js +8 -7
- package/es-modules/Shared/Types.d.ts +4 -3
- package/es-modules/masters/grid-pro.src.d.ts +8 -13
- package/es-modules/masters/grid-pro.src.js +15 -7
- package/grid-pro.d.ts +8 -13
- package/grid-pro.js +6 -5
- package/grid-pro.js.map +1 -1
- package/grid-pro.src.d.ts +8 -13
- package/grid-pro.src.js +1923 -721
- package/package.json +1 -1
- package/es-modules/Grid/Pro/highcharts.d.ts +0 -7
package/grid-pro.src.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
1
2
|
/**
|
|
2
|
-
* @license Highcharts Grid Pro v2.
|
|
3
|
+
* @license Highcharts Grid Pro v2.2.0 (2026-01-13)
|
|
3
4
|
* @module grid/grid-pro
|
|
4
5
|
*
|
|
5
|
-
* (c) 2009-
|
|
6
|
+
* (c) 2009-2026 Highsoft AS
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* A commercial license may be required depending on use.
|
|
9
|
+
* See www.highcharts.com/license
|
|
8
10
|
*/
|
|
9
11
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
10
12
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -52,11 +54,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
52
54
|
;// ./code/grid/es-modules/Core/Globals.js
|
|
53
55
|
/* *
|
|
54
56
|
*
|
|
55
|
-
* (c) 2010-
|
|
57
|
+
* (c) 2010-2026 Highsoft AS
|
|
58
|
+
* Author: Torstein Honsi
|
|
56
59
|
*
|
|
57
|
-
*
|
|
60
|
+
* A commercial license may be required depending on use.
|
|
61
|
+
* See www.highcharts.com/license
|
|
58
62
|
*
|
|
59
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
60
63
|
*
|
|
61
64
|
* */
|
|
62
65
|
|
|
@@ -67,7 +70,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
67
70
|
* */
|
|
68
71
|
/**
|
|
69
72
|
* Shared Highcharts properties.
|
|
70
|
-
* @
|
|
73
|
+
* @internal
|
|
71
74
|
*/
|
|
72
75
|
var Globals;
|
|
73
76
|
(function (Globals) {
|
|
@@ -76,7 +79,7 @@ var Globals;
|
|
|
76
79
|
* Constants
|
|
77
80
|
*
|
|
78
81
|
* */
|
|
79
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '2.
|
|
82
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '2.2.0', Globals.win = (typeof window !== 'undefined' ?
|
|
80
83
|
window :
|
|
81
84
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
82
85
|
Globals.doc = Globals.win.document, Globals.svg = !!Globals.doc?.createElementNS?.(Globals.SVG_NS, 'svg')?.createSVGRect, Globals.pageLang = Globals.doc?.documentElement?.closest('[lang]')?.lang, Globals.userAgent = Globals.win.navigator?.userAgent || '', Globals.isChrome = Globals.win.chrome, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.marginNames = [
|
|
@@ -114,7 +117,7 @@ var Globals;
|
|
|
114
117
|
/**
|
|
115
118
|
* A shared registry between all bundles to keep track of applied
|
|
116
119
|
* compositions.
|
|
117
|
-
* @
|
|
120
|
+
* @internal
|
|
118
121
|
*/
|
|
119
122
|
Globals.composed = [];
|
|
120
123
|
/**
|
|
@@ -139,14 +142,12 @@ var Globals;
|
|
|
139
142
|
*/
|
|
140
143
|
Globals.dateFormats = {};
|
|
141
144
|
/**
|
|
142
|
-
* @
|
|
145
|
+
* @internal
|
|
143
146
|
* @deprecated
|
|
144
147
|
* @todo Use only `Core/Series/SeriesRegistry.seriesTypes`
|
|
145
148
|
*/
|
|
146
149
|
Globals.seriesTypes = {};
|
|
147
|
-
/**
|
|
148
|
-
* @private
|
|
149
|
-
*/
|
|
150
|
+
/** @internal */
|
|
150
151
|
Globals.symbolSizes = {};
|
|
151
152
|
/* *
|
|
152
153
|
*
|
|
@@ -181,11 +182,12 @@ var Globals;
|
|
|
181
182
|
;// ./code/grid/es-modules/Core/Utilities.js
|
|
182
183
|
/* *
|
|
183
184
|
*
|
|
184
|
-
* (c) 2010-
|
|
185
|
+
* (c) 2010-2026 Highsoft AS
|
|
186
|
+
* Author: Torstein Honsi
|
|
185
187
|
*
|
|
186
|
-
*
|
|
188
|
+
* A commercial license may be required depending on use.
|
|
189
|
+
* See www.highcharts.com/license
|
|
187
190
|
*
|
|
188
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
189
191
|
*
|
|
190
192
|
* */
|
|
191
193
|
|
|
@@ -325,7 +327,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
325
327
|
/**
|
|
326
328
|
* Constrain a value to within a lower and upper threshold.
|
|
327
329
|
*
|
|
328
|
-
* @
|
|
330
|
+
* @internal
|
|
329
331
|
* @param {number} value The initial value
|
|
330
332
|
* @param {number} min The lower threshold
|
|
331
333
|
* @param {number} max The upper threshold
|
|
@@ -353,7 +355,7 @@ function crisp(value, lineWidth = 0, inverted) {
|
|
|
353
355
|
/**
|
|
354
356
|
* Return the deep difference between two objects. It can either return the new
|
|
355
357
|
* properties, or optionally return the old values of new properties.
|
|
356
|
-
* @
|
|
358
|
+
* @internal
|
|
357
359
|
*/
|
|
358
360
|
function diffObjects(newer, older, keepOlder, collectionsWithUpdate) {
|
|
359
361
|
const ret = {};
|
|
@@ -419,7 +421,7 @@ function diffObjects(newer, older, keepOlder, collectionsWithUpdate) {
|
|
|
419
421
|
/**
|
|
420
422
|
* Shortcut for parseInt
|
|
421
423
|
*
|
|
422
|
-
* @
|
|
424
|
+
* @internal
|
|
423
425
|
* @function Highcharts.pInt
|
|
424
426
|
*
|
|
425
427
|
* @param {*} s
|
|
@@ -556,7 +558,7 @@ function erase(arr, item) {
|
|
|
556
558
|
* according to the index option and whether it is internal. Used internally
|
|
557
559
|
* when adding series and axes.
|
|
558
560
|
*
|
|
559
|
-
* @
|
|
561
|
+
* @internal
|
|
560
562
|
* @function Highcharts.Chart#insertItem
|
|
561
563
|
* @param {Highcharts.Series|Highcharts.Axis} item
|
|
562
564
|
* The item to insert
|
|
@@ -1187,14 +1189,14 @@ const timeUnits = {
|
|
|
1187
1189
|
/**
|
|
1188
1190
|
* Easing definition
|
|
1189
1191
|
*
|
|
1190
|
-
* @
|
|
1192
|
+
* @internal
|
|
1191
1193
|
* @function Math.easeInOutSine
|
|
1192
1194
|
*
|
|
1193
1195
|
* @param {number} pos
|
|
1194
|
-
*
|
|
1196
|
+
* Current position, ranging from 0 to 1.
|
|
1195
1197
|
*
|
|
1196
1198
|
* @return {number}
|
|
1197
|
-
*
|
|
1199
|
+
* Ease result
|
|
1198
1200
|
*/
|
|
1199
1201
|
Math.easeInOutSine = function (pos) {
|
|
1200
1202
|
return -0.5 * (Math.cos(Math.PI * pos) - 1);
|
|
@@ -1202,7 +1204,7 @@ Math.easeInOutSine = function (pos) {
|
|
|
1202
1204
|
/**
|
|
1203
1205
|
* Convenience function to get the align factor, used several places for
|
|
1204
1206
|
* computing positions
|
|
1205
|
-
* @
|
|
1207
|
+
* @internal
|
|
1206
1208
|
*/
|
|
1207
1209
|
const getAlignFactor = (align = '') => ({
|
|
1208
1210
|
center: 0.5,
|
|
@@ -1212,7 +1214,7 @@ const getAlignFactor = (align = '') => ({
|
|
|
1212
1214
|
}[align] || 0);
|
|
1213
1215
|
/**
|
|
1214
1216
|
* Find the closest distance between two values of a two-dimensional array
|
|
1215
|
-
* @
|
|
1217
|
+
* @internal
|
|
1216
1218
|
* @function Highcharts.getClosestDistance
|
|
1217
1219
|
*
|
|
1218
1220
|
* @param {Array<Array<number>>} arrays
|
|
@@ -1245,7 +1247,7 @@ function getClosestDistance(arrays, onError) {
|
|
|
1245
1247
|
/**
|
|
1246
1248
|
* Returns the value of a property path on a given object.
|
|
1247
1249
|
*
|
|
1248
|
-
* @
|
|
1250
|
+
* @internal
|
|
1249
1251
|
* @function getNestedProperty
|
|
1250
1252
|
*
|
|
1251
1253
|
* @param {string} path
|
|
@@ -1513,18 +1515,14 @@ function addEvent(el, type, fn, options = {}) {
|
|
|
1513
1515
|
*/
|
|
1514
1516
|
function removeEvent(el, type, fn) {
|
|
1515
1517
|
/* eslint-enable valid-jsdoc */
|
|
1516
|
-
/**
|
|
1517
|
-
* @private
|
|
1518
|
-
*/
|
|
1518
|
+
/** @internal */
|
|
1519
1519
|
function removeOneEvent(type, fn) {
|
|
1520
1520
|
const removeEventListener = el.removeEventListener;
|
|
1521
1521
|
if (removeEventListener) {
|
|
1522
1522
|
removeEventListener.call(el, type, fn, false);
|
|
1523
1523
|
}
|
|
1524
1524
|
}
|
|
1525
|
-
/**
|
|
1526
|
-
* @private
|
|
1527
|
-
*/
|
|
1525
|
+
/** @internal */
|
|
1528
1526
|
function removeAllEvents(eventCollection) {
|
|
1529
1527
|
let types, len;
|
|
1530
1528
|
if (!el.nodeName) {
|
|
@@ -1776,11 +1774,6 @@ if (win.jQuery) {
|
|
|
1776
1774
|
}
|
|
1777
1775
|
};
|
|
1778
1776
|
}
|
|
1779
|
-
/* *
|
|
1780
|
-
*
|
|
1781
|
-
* Default Export
|
|
1782
|
-
*
|
|
1783
|
-
* */
|
|
1784
1777
|
// TODO use named exports when supported.
|
|
1785
1778
|
const Utilities = {
|
|
1786
1779
|
addEvent,
|
|
@@ -1842,35 +1835,6 @@ const Utilities = {
|
|
|
1842
1835
|
* API Declarations
|
|
1843
1836
|
*
|
|
1844
1837
|
* */
|
|
1845
|
-
/**
|
|
1846
|
-
* An animation configuration. Animation configurations can also be defined as
|
|
1847
|
-
* booleans, where `false` turns off animation and `true` defaults to a duration
|
|
1848
|
-
* of 500ms and defer of 0ms.
|
|
1849
|
-
*
|
|
1850
|
-
* @interface Highcharts.AnimationOptionsObject
|
|
1851
|
-
*/ /**
|
|
1852
|
-
* A callback function to execute when the animation finishes.
|
|
1853
|
-
* @name Highcharts.AnimationOptionsObject#complete
|
|
1854
|
-
* @type {Function|undefined}
|
|
1855
|
-
*/ /**
|
|
1856
|
-
* The animation defer in milliseconds.
|
|
1857
|
-
* @name Highcharts.AnimationOptionsObject#defer
|
|
1858
|
-
* @type {number|undefined}
|
|
1859
|
-
*/ /**
|
|
1860
|
-
* The animation duration in milliseconds.
|
|
1861
|
-
* @name Highcharts.AnimationOptionsObject#duration
|
|
1862
|
-
* @type {number|undefined}
|
|
1863
|
-
*/ /**
|
|
1864
|
-
* The name of an easing function as defined on the `Math` object.
|
|
1865
|
-
* @name Highcharts.AnimationOptionsObject#easing
|
|
1866
|
-
* @type {string|Function|undefined}
|
|
1867
|
-
*/ /**
|
|
1868
|
-
* A callback function to execute on each step of each attribute or CSS property
|
|
1869
|
-
* that's being animated. The first argument contains information about the
|
|
1870
|
-
* animation and progress.
|
|
1871
|
-
* @name Highcharts.AnimationOptionsObject#step
|
|
1872
|
-
* @type {Function|undefined}
|
|
1873
|
-
*/
|
|
1874
1838
|
/**
|
|
1875
1839
|
* Creates a frame for the animated SVG element.
|
|
1876
1840
|
*
|
|
@@ -2031,6 +1995,9 @@ const Utilities = {
|
|
|
2031
1995
|
* @name Highcharts.Dictionary<T>#[key:string]
|
|
2032
1996
|
* @type {T}
|
|
2033
1997
|
*/
|
|
1998
|
+
/**
|
|
1999
|
+
* @typedef {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} Highcharts.DOMElementType
|
|
2000
|
+
*/
|
|
2034
2001
|
/**
|
|
2035
2002
|
* The function callback to execute when the event is fired. The `this` context
|
|
2036
2003
|
* contains the instance, that fired the event.
|
|
@@ -2172,11 +2139,12 @@ const Utilities = {
|
|
|
2172
2139
|
;// ./code/grid/es-modules/Core/Renderer/HTML/AST.js
|
|
2173
2140
|
/* *
|
|
2174
2141
|
*
|
|
2175
|
-
* (c) 2010-
|
|
2142
|
+
* (c) 2010-2026 Highsoft AS
|
|
2143
|
+
* Author: Torstein Honsi
|
|
2176
2144
|
*
|
|
2177
|
-
*
|
|
2145
|
+
* A commercial license may be required depending on use.
|
|
2146
|
+
* See www.highcharts.com/license
|
|
2178
2147
|
*
|
|
2179
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
2180
2148
|
*
|
|
2181
2149
|
* */
|
|
2182
2150
|
|
|
@@ -2256,6 +2224,15 @@ class AST {
|
|
|
2256
2224
|
});
|
|
2257
2225
|
return attributes;
|
|
2258
2226
|
}
|
|
2227
|
+
/**
|
|
2228
|
+
* Utility function to parse a style string to a CSSObject.
|
|
2229
|
+
*
|
|
2230
|
+
* @internal
|
|
2231
|
+
* @param {string} style
|
|
2232
|
+
* The style string to parse.
|
|
2233
|
+
* @return {Highcharts.CSSObject}
|
|
2234
|
+
* The parsed CSSObject.
|
|
2235
|
+
*/
|
|
2259
2236
|
static parseStyle(style) {
|
|
2260
2237
|
return style
|
|
2261
2238
|
.split(';')
|
|
@@ -2317,11 +2294,11 @@ class AST {
|
|
|
2317
2294
|
*/
|
|
2318
2295
|
addToDOM(parent) {
|
|
2319
2296
|
/**
|
|
2320
|
-
* @
|
|
2297
|
+
* @internal
|
|
2321
2298
|
* @param {Highcharts.ASTNode} subtree
|
|
2322
|
-
* HTML/SVG definition
|
|
2299
|
+
* HTML/SVG definition.
|
|
2323
2300
|
* @param {Element} [subParent]
|
|
2324
|
-
*
|
|
2301
|
+
* Parent node.
|
|
2325
2302
|
* @return {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}
|
|
2326
2303
|
* The inserted node.
|
|
2327
2304
|
*/
|
|
@@ -2392,13 +2369,11 @@ class AST {
|
|
|
2392
2369
|
* Parse HTML/SVG markup into AST Node objects. Used internally from the
|
|
2393
2370
|
* constructor.
|
|
2394
2371
|
*
|
|
2395
|
-
* @
|
|
2396
|
-
*
|
|
2397
|
-
*
|
|
2398
|
-
*
|
|
2399
|
-
*
|
|
2400
|
-
*
|
|
2401
|
-
* @return {Array<Highcharts.ASTNode>} The parsed nodes.
|
|
2372
|
+
* @internal
|
|
2373
|
+
* @param {string} markup
|
|
2374
|
+
* The markup string.
|
|
2375
|
+
* @return {Array<Highcharts.ASTNode>}
|
|
2376
|
+
* The parsed nodes.
|
|
2402
2377
|
*/
|
|
2403
2378
|
parseMarkup(markup) {
|
|
2404
2379
|
const nodes = [];
|
|
@@ -2674,6 +2649,7 @@ AST.allowedTags = [
|
|
|
2674
2649
|
'u',
|
|
2675
2650
|
'ul'
|
|
2676
2651
|
];
|
|
2652
|
+
/** @internal */
|
|
2677
2653
|
AST.emptyHTML = emptyHTML;
|
|
2678
2654
|
/**
|
|
2679
2655
|
* Allow all custom SVG and HTML attributes, references and tags (together
|
|
@@ -2736,11 +2712,12 @@ AST.bypassHTMLFiltering = false;
|
|
|
2736
2712
|
;// ./code/grid/es-modules/Core/Chart/ChartDefaults.js
|
|
2737
2713
|
/* *
|
|
2738
2714
|
*
|
|
2739
|
-
* (c) 2010-
|
|
2715
|
+
* (c) 2010-2026 Highsoft AS
|
|
2716
|
+
* Author: Torstein Honsi
|
|
2740
2717
|
*
|
|
2741
|
-
*
|
|
2718
|
+
* A commercial license may be required depending on use.
|
|
2719
|
+
* See www.highcharts.com/license
|
|
2742
2720
|
*
|
|
2743
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
2744
2721
|
*
|
|
2745
2722
|
* */
|
|
2746
2723
|
|
|
@@ -3859,13 +3836,9 @@ const ChartDefaults = {
|
|
|
3859
3836
|
* @since 10.2.1
|
|
3860
3837
|
*/
|
|
3861
3838
|
position: {
|
|
3862
|
-
/**
|
|
3863
|
-
* The horizontal alignment of the button.
|
|
3864
|
-
*/
|
|
3839
|
+
/** @internal */
|
|
3865
3840
|
align: 'right',
|
|
3866
|
-
/**
|
|
3867
|
-
* The horizontal offset of the button.
|
|
3868
|
-
*/
|
|
3841
|
+
/** @internal */
|
|
3869
3842
|
x: -10,
|
|
3870
3843
|
/**
|
|
3871
3844
|
* The vertical alignment of the button.
|
|
@@ -3874,9 +3847,7 @@ const ChartDefaults = {
|
|
|
3874
3847
|
* @default top
|
|
3875
3848
|
* @apioption chart.zooming.resetButton.position.verticalAlign
|
|
3876
3849
|
*/
|
|
3877
|
-
/**
|
|
3878
|
-
* The vertical offset of the button.
|
|
3879
|
-
*/
|
|
3850
|
+
/** @internal */
|
|
3880
3851
|
y: 10
|
|
3881
3852
|
}
|
|
3882
3853
|
}
|
|
@@ -4043,7 +4014,7 @@ const ChartDefaults = {
|
|
|
4043
4014
|
/**
|
|
4044
4015
|
* Series palettes for Highcharts. Series colors are defined in highcharts.css.
|
|
4045
4016
|
* **Do not edit this file!** This file is generated using the 'gulp palette' task.
|
|
4046
|
-
* @
|
|
4017
|
+
* @internal
|
|
4047
4018
|
*/
|
|
4048
4019
|
const SeriesPalettes = {
|
|
4049
4020
|
/**
|
|
@@ -4062,16 +4033,18 @@ const SeriesPalettes = {
|
|
|
4062
4033
|
'#91e8e1'
|
|
4063
4034
|
],
|
|
4064
4035
|
};
|
|
4036
|
+
/** @internal */
|
|
4065
4037
|
/* harmony default export */ const Palettes = (SeriesPalettes);
|
|
4066
4038
|
|
|
4067
4039
|
;// ./code/grid/es-modules/Shared/TimeBase.js
|
|
4068
4040
|
/* *
|
|
4069
4041
|
*
|
|
4070
|
-
* (c) 2010-
|
|
4042
|
+
* (c) 2010-2026 Highsoft AS
|
|
4043
|
+
* Author: Torstein Honsi
|
|
4071
4044
|
*
|
|
4072
|
-
*
|
|
4045
|
+
* A commercial license may be required depending on use.
|
|
4046
|
+
* See www.highcharts.com/license
|
|
4073
4047
|
*
|
|
4074
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
4075
4048
|
*
|
|
4076
4049
|
* */
|
|
4077
4050
|
|
|
@@ -4181,7 +4154,7 @@ class TimeBase {
|
|
|
4181
4154
|
* initializing Highcharts, after running `Highcharts.setOptions` and on
|
|
4182
4155
|
* `Chart.update`.
|
|
4183
4156
|
*
|
|
4184
|
-
* @
|
|
4157
|
+
* @internal
|
|
4185
4158
|
* @function Highcharts.Time#update
|
|
4186
4159
|
*
|
|
4187
4160
|
* @param {Highcharts.TimeOptions} [options]
|
|
@@ -4661,7 +4634,7 @@ class TimeBase {
|
|
|
4661
4634
|
/**
|
|
4662
4635
|
* Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into
|
|
4663
4636
|
* an object.
|
|
4664
|
-
* @
|
|
4637
|
+
* @internal
|
|
4665
4638
|
* @param {string|Array<T>|Highcharts.Dictionary<T>} f
|
|
4666
4639
|
* General format description
|
|
4667
4640
|
* @return {Highcharts.Dictionary<T>}
|
|
@@ -4685,7 +4658,7 @@ class TimeBase {
|
|
|
4685
4658
|
/**
|
|
4686
4659
|
* Get the optimal date format for a point, based on a range.
|
|
4687
4660
|
*
|
|
4688
|
-
* @
|
|
4661
|
+
* @internal
|
|
4689
4662
|
* @function Highcharts.Time#getDateFormat
|
|
4690
4663
|
*
|
|
4691
4664
|
* @param {number} range
|
|
@@ -4877,7 +4850,7 @@ class TimeBase {
|
|
|
4877
4850
|
* The number of fractional digits to use. 3 means milliseconds.
|
|
4878
4851
|
*
|
|
4879
4852
|
* @name Highcharts.DateTimeFormatOptions#fractionalSecondDigits
|
|
4880
|
-
* @type {
|
|
4853
|
+
* @type {1|2|3|undefined}
|
|
4881
4854
|
*/ /**
|
|
4882
4855
|
* The representation of the time zone name.
|
|
4883
4856
|
*
|
|
@@ -4899,11 +4872,12 @@ class TimeBase {
|
|
|
4899
4872
|
;// ./code/grid/es-modules/Core/Time.js
|
|
4900
4873
|
/* *
|
|
4901
4874
|
*
|
|
4902
|
-
* (c) 2010-
|
|
4875
|
+
* (c) 2010-2026 Highsoft AS
|
|
4876
|
+
* Author: Torstein Honsi
|
|
4903
4877
|
*
|
|
4904
|
-
*
|
|
4878
|
+
* A commercial license may be required depending on use.
|
|
4879
|
+
* See www.highcharts.com/license
|
|
4905
4880
|
*
|
|
4906
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
4907
4881
|
*
|
|
4908
4882
|
* */
|
|
4909
4883
|
|
|
@@ -5073,11 +5047,12 @@ class Time extends Shared_TimeBase {
|
|
|
5073
5047
|
;// ./code/grid/es-modules/Core/Defaults.js
|
|
5074
5048
|
/* *
|
|
5075
5049
|
*
|
|
5076
|
-
* (c) 2010-
|
|
5050
|
+
* (c) 2010-2026 Highsoft AS
|
|
5051
|
+
* Author: Torstein Honsi
|
|
5077
5052
|
*
|
|
5078
|
-
*
|
|
5053
|
+
* A commercial license may be required depending on use.
|
|
5054
|
+
* See www.highcharts.com/license
|
|
5079
5055
|
*
|
|
5080
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
5081
5056
|
*
|
|
5082
5057
|
* */
|
|
5083
5058
|
|
|
@@ -5100,7 +5075,7 @@ const { fireEvent: Defaults_fireEvent, merge: Defaults_merge } = Core_Utilities;
|
|
|
5100
5075
|
* @type {Highcharts.Options}
|
|
5101
5076
|
*/ /**
|
|
5102
5077
|
* @optionparent
|
|
5103
|
-
* @
|
|
5078
|
+
* @internal
|
|
5104
5079
|
*/
|
|
5105
5080
|
const defaultOptions = {
|
|
5106
5081
|
/**
|
|
@@ -5335,17 +5310,17 @@ const defaultOptions = {
|
|
|
5335
5310
|
* @since 1.2.4
|
|
5336
5311
|
*/
|
|
5337
5312
|
resetZoom: 'Reset zoom',
|
|
5338
|
-
/**
|
|
5339
|
-
* The tooltip title for the label appearing when a chart is zoomed.
|
|
5340
|
-
*
|
|
5341
|
-
* @since 1.2.4
|
|
5342
|
-
*/
|
|
5343
5313
|
/**
|
|
5344
5314
|
* The default title of the Y axis
|
|
5345
5315
|
*
|
|
5346
5316
|
* @since 12.2.0
|
|
5347
5317
|
*/
|
|
5348
5318
|
yAxisTitle: 'Values',
|
|
5319
|
+
/**
|
|
5320
|
+
* The tooltip title for the label appearing when a chart is zoomed.
|
|
5321
|
+
*
|
|
5322
|
+
* @since 1.2.4
|
|
5323
|
+
*/
|
|
5349
5324
|
resetZoomTitle: 'Reset zoom level 1:1'
|
|
5350
5325
|
},
|
|
5351
5326
|
/**
|
|
@@ -5557,7 +5532,7 @@ const defaultOptions = {
|
|
|
5557
5532
|
* `"UTC"`. Setting `useUTC` to false is equivalent to setting
|
|
5558
5533
|
* `time.timezone` to `undefined`.
|
|
5559
5534
|
*
|
|
5560
|
-
* @see [
|
|
5535
|
+
* @see [timezone](#time.timezone)
|
|
5561
5536
|
*
|
|
5562
5537
|
* @sample {highcharts} highcharts/time/useutc-true/
|
|
5563
5538
|
* True by default
|
|
@@ -5785,27 +5760,6 @@ const defaultOptions = {
|
|
|
5785
5760
|
* @since 2.1
|
|
5786
5761
|
* @apioption subtitle.floating
|
|
5787
5762
|
*/
|
|
5788
|
-
/**
|
|
5789
|
-
* CSS styles for the title.
|
|
5790
|
-
*
|
|
5791
|
-
* In styled mode, the subtitle style is given in the
|
|
5792
|
-
* `.highcharts-subtitle` class.
|
|
5793
|
-
*
|
|
5794
|
-
* @sample {highcharts} highcharts/subtitle/style/
|
|
5795
|
-
* Custom color and weight
|
|
5796
|
-
* @sample {highcharts} highcharts/css/titles/
|
|
5797
|
-
* Styled mode
|
|
5798
|
-
* @sample {highstock} stock/chart/subtitle-style
|
|
5799
|
-
* Custom color and weight
|
|
5800
|
-
* @sample {highstock} highcharts/css/titles/
|
|
5801
|
-
* Styled mode
|
|
5802
|
-
* @sample {highmaps} highcharts/css/titles/
|
|
5803
|
-
* Styled mode
|
|
5804
|
-
*
|
|
5805
|
-
* @type {Highcharts.CSSObject}
|
|
5806
|
-
* @default {"color": "#666666"}
|
|
5807
|
-
* @apioption subtitle.style
|
|
5808
|
-
*/
|
|
5809
5763
|
/**
|
|
5810
5764
|
* Whether to
|
|
5811
5765
|
* [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)
|
|
@@ -6097,7 +6051,7 @@ const defaultOptions = {
|
|
|
6097
6051
|
*
|
|
6098
6052
|
* @declare Highcharts.LegendEventsOptionsObject
|
|
6099
6053
|
*
|
|
6100
|
-
* @
|
|
6054
|
+
* @internal
|
|
6101
6055
|
*/
|
|
6102
6056
|
events: {},
|
|
6103
6057
|
/**
|
|
@@ -6949,8 +6903,17 @@ const defaultOptions = {
|
|
|
6949
6903
|
* @apioption tooltip.borderColor
|
|
6950
6904
|
*/
|
|
6951
6905
|
/**
|
|
6952
|
-
* A CSS class name to apply to the tooltip
|
|
6953
|
-
*
|
|
6906
|
+
* A CSS class name to apply to the tooltip, allowing unique CSS
|
|
6907
|
+
* styling for each chart.
|
|
6908
|
+
*
|
|
6909
|
+
* **Note:** The class is applied to the SVG element of the tooltip
|
|
6910
|
+
* (the tooltip label group), not to a container div. This allows you
|
|
6911
|
+
* to style the tooltip using CSS applicable to SVG elements.
|
|
6912
|
+
*
|
|
6913
|
+
* When [tooltip.outside](#tooltip.outside) is `true`, a separate
|
|
6914
|
+
* container div with class `highcharts-tooltip-container` is created
|
|
6915
|
+
* as the parent to the SVG tooltip element, but the `className` option
|
|
6916
|
+
* is still applied to the SVG element itself, not to the container.
|
|
6954
6917
|
*
|
|
6955
6918
|
* @type {string}
|
|
6956
6919
|
* @apioption tooltip.className
|
|
@@ -7223,35 +7186,6 @@ const defaultOptions = {
|
|
|
7223
7186
|
* @product highcharts highstock
|
|
7224
7187
|
* @apioption tooltip.split
|
|
7225
7188
|
*/
|
|
7226
|
-
/**
|
|
7227
|
-
* Prevents the tooltip from switching or closing, when touched or
|
|
7228
|
-
* pointed.
|
|
7229
|
-
*
|
|
7230
|
-
* @sample highcharts/tooltip/stickoncontact/
|
|
7231
|
-
* Tooltip sticks on pointer contact
|
|
7232
|
-
*
|
|
7233
|
-
* @type {boolean}
|
|
7234
|
-
* @since 8.0.1
|
|
7235
|
-
* @apioption tooltip.stickOnContact
|
|
7236
|
-
*/
|
|
7237
|
-
/**
|
|
7238
|
-
* Use HTML to render the contents of the tooltip instead of SVG. Using
|
|
7239
|
-
* HTML allows advanced formatting like tables and images in the
|
|
7240
|
-
* tooltip. It is also recommended for rtl languages as it works around
|
|
7241
|
-
* rtl bugs in early Firefox.
|
|
7242
|
-
*
|
|
7243
|
-
* @sample {highcharts|highstock} highcharts/tooltip/footerformat/
|
|
7244
|
-
* A table for value alignment
|
|
7245
|
-
* @sample {highcharts|highstock} highcharts/tooltip/fullhtml/
|
|
7246
|
-
* Full HTML tooltip
|
|
7247
|
-
* @sample {highmaps} maps/tooltip/usehtml/
|
|
7248
|
-
* Pure HTML tooltip
|
|
7249
|
-
*
|
|
7250
|
-
* @type {boolean}
|
|
7251
|
-
* @default false
|
|
7252
|
-
* @since 2.2
|
|
7253
|
-
* @apioption tooltip.useHTML
|
|
7254
|
-
*/
|
|
7255
7189
|
/**
|
|
7256
7190
|
* How many decimals to show in each series' y value. This is
|
|
7257
7191
|
* overridable in each series' tooltip options object. The default is to
|
|
@@ -7574,6 +7508,9 @@ const defaultOptions = {
|
|
|
7574
7508
|
* contains the category name, x value or datetime string depending on
|
|
7575
7509
|
* the type of axis. For datetime axes, the `point.key` date format can
|
|
7576
7510
|
* be set using `tooltip.xDateFormat`.
|
|
7511
|
+
* In v12+, locale-aware date names follow the browser's casing and can
|
|
7512
|
+
* be lower-case, so use the `ucfirst` helper (for example
|
|
7513
|
+
* `{ucfirst point.key}`) if you want a capitalized header.
|
|
7577
7514
|
*
|
|
7578
7515
|
* @sample {highcharts} highcharts/tooltip/footerformat/
|
|
7579
7516
|
* An HTML table in the tooltip
|
|
@@ -7688,13 +7625,14 @@ const defaultOptions = {
|
|
|
7688
7625
|
* @apioption tooltip.shadow
|
|
7689
7626
|
*/
|
|
7690
7627
|
/**
|
|
7691
|
-
* Prevents the tooltip from switching or closing when touched or
|
|
7628
|
+
* Prevents the tooltip from switching or closing, when touched or
|
|
7692
7629
|
* pointed.
|
|
7693
7630
|
*
|
|
7694
7631
|
* @sample highcharts/tooltip/stickoncontact/
|
|
7695
7632
|
* Tooltip sticks on pointer contact
|
|
7696
7633
|
*
|
|
7697
|
-
* @
|
|
7634
|
+
* @type {boolean}
|
|
7635
|
+
* @since 8.0.1
|
|
7698
7636
|
*/
|
|
7699
7637
|
stickOnContact: false,
|
|
7700
7638
|
/**
|
|
@@ -7733,7 +7671,7 @@ const defaultOptions = {
|
|
|
7733
7671
|
* @sample {highmaps} maps/tooltip/usehtml/
|
|
7734
7672
|
* Pure HTML tooltip
|
|
7735
7673
|
*
|
|
7736
|
-
* @since
|
|
7674
|
+
* @since 2.2
|
|
7737
7675
|
*/
|
|
7738
7676
|
useHTML: false
|
|
7739
7677
|
},
|
|
@@ -8052,11 +7990,12 @@ const DefaultOptions = {
|
|
|
8052
7990
|
;// ./code/grid/es-modules/Core/Templating.js
|
|
8053
7991
|
/* *
|
|
8054
7992
|
*
|
|
8055
|
-
* (c) 2010-
|
|
7993
|
+
* (c) 2010-2026 Highsoft AS
|
|
7994
|
+
* Author: Torstein Honsi
|
|
8056
7995
|
*
|
|
8057
|
-
*
|
|
7996
|
+
* A commercial license may be required depending on use.
|
|
7997
|
+
* See www.highcharts.com/license
|
|
8058
7998
|
*
|
|
8059
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8060
7999
|
*
|
|
8061
8000
|
* */
|
|
8062
8001
|
|
|
@@ -8066,6 +8005,7 @@ const { defaultOptions: Templating_defaultOptions, defaultTime: Templating_defau
|
|
|
8066
8005
|
const { pageLang: Templating_pageLang } = Core_Globals;
|
|
8067
8006
|
|
|
8068
8007
|
const { extend: Templating_extend, getNestedProperty: Templating_getNestedProperty, isArray: Templating_isArray, isNumber: Templating_isNumber, isObject: Templating_isObject, isString: Templating_isString, pick: Templating_pick, ucfirst: Templating_ucfirst } = Core_Utilities;
|
|
8008
|
+
/** @internal */
|
|
8069
8009
|
const helpers = {
|
|
8070
8010
|
// Built-in helpers
|
|
8071
8011
|
add: (a, b) => a + b,
|
|
@@ -8100,7 +8040,10 @@ const numberFormatCache = {};
|
|
|
8100
8040
|
* Functions
|
|
8101
8041
|
*
|
|
8102
8042
|
* */
|
|
8103
|
-
|
|
8043
|
+
/**
|
|
8044
|
+
* Internal convenience function.
|
|
8045
|
+
* @internal
|
|
8046
|
+
*/
|
|
8104
8047
|
const isQuotedString = (str) => /^["'].+["']$/.test(str);
|
|
8105
8048
|
/**
|
|
8106
8049
|
* Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a
|
|
@@ -8483,11 +8426,11 @@ const Templating = {
|
|
|
8483
8426
|
*
|
|
8484
8427
|
* Resizing Mode abstract class
|
|
8485
8428
|
*
|
|
8486
|
-
* (c) 2020-
|
|
8429
|
+
* (c) 2020-2026 Highsoft AS
|
|
8487
8430
|
*
|
|
8488
|
-
*
|
|
8431
|
+
* A commercial license may be required depending on use.
|
|
8432
|
+
* See www.highcharts.com/license
|
|
8489
8433
|
*
|
|
8490
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8491
8434
|
*
|
|
8492
8435
|
* Authors:
|
|
8493
8436
|
* - Dawid Dragula
|
|
@@ -8679,11 +8622,11 @@ ResizingMode.MIN_COLUMN_WIDTH = 20;
|
|
|
8679
8622
|
*
|
|
8680
8623
|
* Adjacent Resizing Mode class
|
|
8681
8624
|
*
|
|
8682
|
-
* (c) 2020-
|
|
8625
|
+
* (c) 2020-2026 Highsoft AS
|
|
8683
8626
|
*
|
|
8684
|
-
*
|
|
8627
|
+
* A commercial license may be required depending on use.
|
|
8628
|
+
* See www.highcharts.com/license
|
|
8685
8629
|
*
|
|
8686
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8687
8630
|
*
|
|
8688
8631
|
* Authors:
|
|
8689
8632
|
* - Dawid Dragula
|
|
@@ -8743,11 +8686,11 @@ class AdjacentResizingMode extends ColumnResizing_ResizingMode {
|
|
|
8743
8686
|
*
|
|
8744
8687
|
* Independent Resizing Mode class
|
|
8745
8688
|
*
|
|
8746
|
-
* (c) 2020-
|
|
8689
|
+
* (c) 2020-2026 Highsoft AS
|
|
8747
8690
|
*
|
|
8748
|
-
*
|
|
8691
|
+
* A commercial license may be required depending on use.
|
|
8692
|
+
* See www.highcharts.com/license
|
|
8749
8693
|
*
|
|
8750
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8751
8694
|
*
|
|
8752
8695
|
* Authors:
|
|
8753
8696
|
* - Dawid Dragula
|
|
@@ -8808,11 +8751,11 @@ class IndependentResizingMode extends ColumnResizing_ResizingMode {
|
|
|
8808
8751
|
*
|
|
8809
8752
|
* Distributed Resizing Mode class
|
|
8810
8753
|
*
|
|
8811
|
-
* (c) 2020-
|
|
8754
|
+
* (c) 2020-2026 Highsoft AS
|
|
8812
8755
|
*
|
|
8813
|
-
*
|
|
8756
|
+
* A commercial license may be required depending on use.
|
|
8757
|
+
* See www.highcharts.com/license
|
|
8814
8758
|
*
|
|
8815
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8816
8759
|
*
|
|
8817
8760
|
* Authors:
|
|
8818
8761
|
* - Dawid Dragula
|
|
@@ -8863,11 +8806,11 @@ class DistributedResizingMode extends ColumnResizing_ResizingMode {
|
|
|
8863
8806
|
*
|
|
8864
8807
|
* Column Resizing namespace
|
|
8865
8808
|
*
|
|
8866
|
-
* (c) 2020-
|
|
8809
|
+
* (c) 2020-2026 Highsoft AS
|
|
8867
8810
|
*
|
|
8868
|
-
*
|
|
8811
|
+
* A commercial license may be required depending on use.
|
|
8812
|
+
* See www.highcharts.com/license
|
|
8869
8813
|
*
|
|
8870
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8871
8814
|
*
|
|
8872
8815
|
* Authors:
|
|
8873
8816
|
* - Dawid Dragula
|
|
@@ -8931,11 +8874,11 @@ function initMode(viewport) {
|
|
|
8931
8874
|
;// ./code/grid/es-modules/Data/Modifiers/DataModifier.js
|
|
8932
8875
|
/* *
|
|
8933
8876
|
*
|
|
8934
|
-
* (c) 2009-
|
|
8877
|
+
* (c) 2009-2026 Highsoft AS
|
|
8935
8878
|
*
|
|
8936
|
-
*
|
|
8879
|
+
* A commercial license may be required depending on use.
|
|
8880
|
+
* See www.highcharts.com/license
|
|
8937
8881
|
*
|
|
8938
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8939
8882
|
*
|
|
8940
8883
|
* Authors:
|
|
8941
8884
|
* - Sophie Bremer
|
|
@@ -9135,11 +9078,11 @@ class DataModifier {
|
|
|
9135
9078
|
;// ./code/grid/es-modules/Data/ColumnUtils.js
|
|
9136
9079
|
/* *
|
|
9137
9080
|
*
|
|
9138
|
-
* (c) 2020-
|
|
9081
|
+
* (c) 2020-2026 Highsoft AS
|
|
9139
9082
|
*
|
|
9140
|
-
*
|
|
9083
|
+
* A commercial license may be required depending on use.
|
|
9084
|
+
* See www.highcharts.com/license
|
|
9141
9085
|
*
|
|
9142
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
9143
9086
|
*
|
|
9144
9087
|
* Authors:
|
|
9145
9088
|
* - Dawid Dragula
|
|
@@ -9277,11 +9220,11 @@ var ColumnUtils;
|
|
|
9277
9220
|
;// ./code/grid/es-modules/Data/DataTableCore.js
|
|
9278
9221
|
/* *
|
|
9279
9222
|
*
|
|
9280
|
-
* (c) 2009-
|
|
9223
|
+
* (c) 2009-2026 Highsoft AS
|
|
9281
9224
|
*
|
|
9282
|
-
*
|
|
9225
|
+
* A commercial license may be required depending on use.
|
|
9226
|
+
* See www.highcharts.com/license
|
|
9283
9227
|
*
|
|
9284
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
9285
9228
|
*
|
|
9286
9229
|
* Authors:
|
|
9287
9230
|
* - Sophie Bremer
|
|
@@ -9551,11 +9494,11 @@ class DataTableCore {
|
|
|
9551
9494
|
}
|
|
9552
9495
|
}
|
|
9553
9496
|
/**
|
|
9554
|
-
* Returns the
|
|
9497
|
+
* Returns the modified (clone) or the original data table if the modified
|
|
9555
9498
|
* one does not exist.
|
|
9556
9499
|
*
|
|
9557
9500
|
* @return {Highcharts.DataTableCore}
|
|
9558
|
-
* The
|
|
9501
|
+
* The modified (clone) or the original data table.
|
|
9559
9502
|
*/
|
|
9560
9503
|
getModified() {
|
|
9561
9504
|
return this.modified || this;
|
|
@@ -9604,11 +9547,11 @@ class DataTableCore {
|
|
|
9604
9547
|
;// ./code/grid/es-modules/Data/DataTable.js
|
|
9605
9548
|
/* *
|
|
9606
9549
|
*
|
|
9607
|
-
* (c) 2009-
|
|
9550
|
+
* (c) 2009-2026 Highsoft AS
|
|
9608
9551
|
*
|
|
9609
|
-
*
|
|
9552
|
+
* A commercial license may be required depending on use.
|
|
9553
|
+
* See www.highcharts.com/license
|
|
9610
9554
|
*
|
|
9611
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
9612
9555
|
*
|
|
9613
9556
|
* Authors:
|
|
9614
9557
|
* - Sophie Bremer
|
|
@@ -9763,11 +9706,11 @@ class DataTable extends Data_DataTableCore {
|
|
|
9763
9706
|
*
|
|
9764
9707
|
* @function Highcharts.DataTable#deleteRows
|
|
9765
9708
|
*
|
|
9766
|
-
* @param {number} [rowIndex]
|
|
9767
|
-
* Index
|
|
9768
|
-
* deleted.
|
|
9709
|
+
* @param {number | number[]} [rowIndex]
|
|
9710
|
+
* Index of the row where deletion should start, or an array of indices for
|
|
9711
|
+
* deleting multiple rows. If not specified, all rows will be deleted.
|
|
9769
9712
|
*
|
|
9770
|
-
* @param {number} [rowCount
|
|
9713
|
+
* @param {number} [rowCount]
|
|
9771
9714
|
* Number of rows to delete.
|
|
9772
9715
|
*
|
|
9773
9716
|
* @param {Highcharts.DataTableEventDetail} [eventDetail]
|
|
@@ -9780,43 +9723,77 @@ class DataTable extends Data_DataTableCore {
|
|
|
9780
9723
|
* @emits #afterDeleteRows
|
|
9781
9724
|
*/
|
|
9782
9725
|
deleteRows(rowIndex, rowCount = 1, eventDetail) {
|
|
9783
|
-
const
|
|
9784
|
-
|
|
9726
|
+
const { columns, modifier } = this;
|
|
9727
|
+
const deletedRows = [];
|
|
9728
|
+
let indices;
|
|
9729
|
+
let actualRowCount;
|
|
9730
|
+
if (!DataTable_defined(rowIndex)) {
|
|
9731
|
+
// No index provided - delete all rows.
|
|
9732
|
+
indices = [0];
|
|
9733
|
+
actualRowCount = this.rowCount;
|
|
9734
|
+
}
|
|
9735
|
+
else if (Array.isArray(rowIndex)) {
|
|
9736
|
+
// Array of indices provided - delete the specified rows.
|
|
9737
|
+
indices = rowIndex
|
|
9738
|
+
// Remove negative indices, and indices beyond the row count,
|
|
9739
|
+
// and remove duplicates.
|
|
9740
|
+
.filter((index, i, arr) => (index >= 0 &&
|
|
9741
|
+
index < this.rowCount &&
|
|
9742
|
+
arr.indexOf(index) === i))
|
|
9743
|
+
// Sort indices in descending order.
|
|
9744
|
+
.sort((a, b) => b - a);
|
|
9745
|
+
actualRowCount = indices.length;
|
|
9746
|
+
}
|
|
9747
|
+
else {
|
|
9748
|
+
// Single index provided - delete the specified range of rows.
|
|
9749
|
+
indices = [rowIndex];
|
|
9750
|
+
actualRowCount = rowCount;
|
|
9751
|
+
}
|
|
9752
|
+
this.emit({
|
|
9785
9753
|
type: 'deleteRows',
|
|
9786
9754
|
detail: eventDetail,
|
|
9787
|
-
rowCount,
|
|
9788
|
-
rowIndex:
|
|
9755
|
+
rowCount: actualRowCount,
|
|
9756
|
+
rowIndex: rowIndex ?? 0
|
|
9789
9757
|
});
|
|
9790
|
-
if (
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
-
|
|
9794
|
-
|
|
9795
|
-
|
|
9796
|
-
|
|
9797
|
-
|
|
9798
|
-
|
|
9799
|
-
|
|
9800
|
-
|
|
9801
|
-
|
|
9758
|
+
if (actualRowCount > 0) {
|
|
9759
|
+
const columnIds = Object.keys(columns);
|
|
9760
|
+
for (let i = 0; i < columnIds.length; ++i) {
|
|
9761
|
+
const columnId = columnIds[i];
|
|
9762
|
+
const column = columns[columnId];
|
|
9763
|
+
let deletedCells;
|
|
9764
|
+
// Perform a range splice.
|
|
9765
|
+
if (indices.length === 1 && actualRowCount > 1) {
|
|
9766
|
+
const result = DataTable_splice(column, indices[0], actualRowCount);
|
|
9767
|
+
deletedCells = result.removed;
|
|
9768
|
+
columns[columnId] = result.array;
|
|
9769
|
+
}
|
|
9770
|
+
else {
|
|
9771
|
+
// Perform a index splice for each index in the array.
|
|
9772
|
+
deletedCells = [];
|
|
9773
|
+
for (const index of indices) {
|
|
9774
|
+
deletedCells.push(column[index]);
|
|
9775
|
+
DataTable_splice(column, index, 1);
|
|
9776
|
+
}
|
|
9777
|
+
// Reverse the deleted cells to maintain the correct order.
|
|
9778
|
+
deletedCells.reverse();
|
|
9779
|
+
}
|
|
9802
9780
|
if (!i) {
|
|
9803
|
-
|
|
9781
|
+
this.rowCount = column.length;
|
|
9804
9782
|
}
|
|
9805
9783
|
for (let j = 0, jEnd = deletedCells.length; j < jEnd; ++j) {
|
|
9806
|
-
deletedRows[j] =
|
|
9784
|
+
deletedRows[j] = deletedRows[j] || [];
|
|
9807
9785
|
deletedRows[j][i] = deletedCells[j];
|
|
9808
9786
|
}
|
|
9809
|
-
modifiedRows.push(new Array(iEnd));
|
|
9810
9787
|
}
|
|
9811
9788
|
}
|
|
9812
9789
|
if (modifier) {
|
|
9813
|
-
modifier.modifyTable(
|
|
9790
|
+
modifier.modifyTable(this);
|
|
9814
9791
|
}
|
|
9815
|
-
|
|
9792
|
+
this.emit({
|
|
9816
9793
|
type: 'afterDeleteRows',
|
|
9817
9794
|
detail: eventDetail,
|
|
9818
|
-
rowCount,
|
|
9819
|
-
rowIndex:
|
|
9795
|
+
rowCount: actualRowCount,
|
|
9796
|
+
rowIndex: rowIndex ?? 0,
|
|
9820
9797
|
rows: deletedRows
|
|
9821
9798
|
});
|
|
9822
9799
|
return deletedRows;
|
|
@@ -10537,11 +10514,11 @@ class DataTable extends Data_DataTableCore {
|
|
|
10537
10514
|
;// ./code/grid/es-modules/Data/Connectors/DataConnector.js
|
|
10538
10515
|
/* *
|
|
10539
10516
|
*
|
|
10540
|
-
* (c) 2009-
|
|
10517
|
+
* (c) 2009-2026 Highsoft AS
|
|
10541
10518
|
*
|
|
10542
|
-
*
|
|
10519
|
+
* A commercial license may be required depending on use.
|
|
10520
|
+
* See www.highcharts.com/license
|
|
10543
10521
|
*
|
|
10544
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10545
10522
|
*
|
|
10546
10523
|
* Authors:
|
|
10547
10524
|
* - Sophie Bremer
|
|
@@ -10703,6 +10680,34 @@ class DataConnector {
|
|
|
10703
10680
|
connector.describeColumn(columnIds[i], { index: i });
|
|
10704
10681
|
}
|
|
10705
10682
|
}
|
|
10683
|
+
/**
|
|
10684
|
+
* Updates the connector with new options.
|
|
10685
|
+
*
|
|
10686
|
+
* @param newOptions
|
|
10687
|
+
* The new options to be applied to the connector.
|
|
10688
|
+
*
|
|
10689
|
+
* @param reload
|
|
10690
|
+
* Whether to reload the connector after applying the new options.
|
|
10691
|
+
*/
|
|
10692
|
+
async update(newOptions, reload = true) {
|
|
10693
|
+
this.emit({ type: 'beforeUpdate' });
|
|
10694
|
+
DataConnector_merge(true, this.options, newOptions);
|
|
10695
|
+
const { options } = this;
|
|
10696
|
+
if ('enablePolling' in newOptions || 'dataRefreshRate' in newOptions) {
|
|
10697
|
+
if ('enablePolling' in options && options.enablePolling) {
|
|
10698
|
+
this.stopPolling();
|
|
10699
|
+
this.startPolling(('dataRefreshRate' in options &&
|
|
10700
|
+
typeof options.dataRefreshRate === 'number') ? Math.max(options.dataRefreshRate, 1) * 1000 : 1000);
|
|
10701
|
+
}
|
|
10702
|
+
else {
|
|
10703
|
+
this.stopPolling();
|
|
10704
|
+
}
|
|
10705
|
+
}
|
|
10706
|
+
if (reload) {
|
|
10707
|
+
await this.load();
|
|
10708
|
+
}
|
|
10709
|
+
this.emit({ type: 'afterUpdate' });
|
|
10710
|
+
}
|
|
10706
10711
|
/**
|
|
10707
10712
|
* The default load method, which fires the `afterLoad` event
|
|
10708
10713
|
*
|
|
@@ -10746,7 +10751,9 @@ class DataConnector {
|
|
|
10746
10751
|
this.pollingController = new AbortController();
|
|
10747
10752
|
// Clear the polling timeout.
|
|
10748
10753
|
window.clearTimeout(connector._polling);
|
|
10749
|
-
connector._polling = window.setTimeout(
|
|
10754
|
+
connector._polling = window.setTimeout(
|
|
10755
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
10756
|
+
() => connector
|
|
10750
10757
|
.load()['catch']((error) => connector.emit({
|
|
10751
10758
|
type: 'loadError',
|
|
10752
10759
|
error
|
|
@@ -10885,11 +10892,11 @@ class DataConnector {
|
|
|
10885
10892
|
;// ./code/grid/es-modules/Data/Converters/DataConverterUtils.js
|
|
10886
10893
|
/* *
|
|
10887
10894
|
*
|
|
10888
|
-
* (c) 2009-
|
|
10895
|
+
* (c) 2009-2026 Highsoft AS
|
|
10889
10896
|
*
|
|
10890
|
-
*
|
|
10897
|
+
* A commercial license may be required depending on use.
|
|
10898
|
+
* See www.highcharts.com/license
|
|
10891
10899
|
*
|
|
10892
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10893
10900
|
*
|
|
10894
10901
|
* Authors:
|
|
10895
10902
|
* - Kamil Kubik
|
|
@@ -11103,11 +11110,11 @@ var DataConverterUtils;
|
|
|
11103
11110
|
;// ./code/grid/es-modules/Data/Converters/DataConverter.js
|
|
11104
11111
|
/* *
|
|
11105
11112
|
*
|
|
11106
|
-
* (c) 2009-
|
|
11113
|
+
* (c) 2009-2026 Highsoft AS
|
|
11107
11114
|
*
|
|
11108
|
-
*
|
|
11115
|
+
* A commercial license may be required depending on use.
|
|
11116
|
+
* See www.highcharts.com/license
|
|
11109
11117
|
*
|
|
11110
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
11111
11118
|
*
|
|
11112
11119
|
* Authors:
|
|
11113
11120
|
* - Sophie Bremer
|
|
@@ -11492,11 +11499,11 @@ DataConverter.defaultOptions = {
|
|
|
11492
11499
|
;// ./code/grid/es-modules/Data/DataCursor.js
|
|
11493
11500
|
/* *
|
|
11494
11501
|
*
|
|
11495
|
-
* (c) 2020-
|
|
11502
|
+
* (c) 2020-2026 Highsoft AS
|
|
11496
11503
|
*
|
|
11497
|
-
*
|
|
11504
|
+
* A commercial license may be required depending on use.
|
|
11505
|
+
* See www.highcharts.com/license
|
|
11498
11506
|
*
|
|
11499
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
11500
11507
|
*
|
|
11501
11508
|
* Authors:
|
|
11502
11509
|
* - Sophie Bremer
|
|
@@ -11873,13 +11880,14 @@ class DataCursor {
|
|
|
11873
11880
|
;// ./code/grid/es-modules/Accessibility/HighContrastMode.js
|
|
11874
11881
|
/* *
|
|
11875
11882
|
*
|
|
11876
|
-
* (c) 2009-
|
|
11883
|
+
* (c) 2009-2026 Highsoft AS
|
|
11884
|
+
* Author: Øystein Moseng
|
|
11877
11885
|
*
|
|
11878
11886
|
* Handling for Windows High Contrast Mode.
|
|
11879
11887
|
*
|
|
11880
|
-
*
|
|
11888
|
+
* A commercial license may be required depending on use.
|
|
11889
|
+
* See www.highcharts.com/license
|
|
11881
11890
|
*
|
|
11882
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
11883
11891
|
*
|
|
11884
11892
|
* */
|
|
11885
11893
|
|
|
@@ -11975,11 +11983,11 @@ const whcm = {
|
|
|
11975
11983
|
;// ./code/grid/es-modules/Grid/Core/Globals.js
|
|
11976
11984
|
/* *
|
|
11977
11985
|
*
|
|
11978
|
-
* (c) 2009-
|
|
11986
|
+
* (c) 2009-2026 Highsoft AS
|
|
11979
11987
|
*
|
|
11980
|
-
*
|
|
11988
|
+
* A commercial license may be required depending on use.
|
|
11989
|
+
* See www.highcharts.com/license
|
|
11981
11990
|
*
|
|
11982
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
11983
11991
|
*
|
|
11984
11992
|
* Authors:
|
|
11985
11993
|
* - Dawid Dragula
|
|
@@ -11993,7 +12001,7 @@ const whcm = {
|
|
|
11993
12001
|
*
|
|
11994
12002
|
* */
|
|
11995
12003
|
const classNamePrefix = 'hcg-';
|
|
11996
|
-
const version = '2.
|
|
12004
|
+
const version = '2.2.0';
|
|
11997
12005
|
const rawClassNames = {
|
|
11998
12006
|
container: 'container',
|
|
11999
12007
|
tableElement: 'table',
|
|
@@ -12005,7 +12013,6 @@ const rawClassNames = {
|
|
|
12005
12013
|
rowEven: 'row-even',
|
|
12006
12014
|
rowOdd: 'row-odd',
|
|
12007
12015
|
hoveredRow: 'hovered-row',
|
|
12008
|
-
columnElement: 'column',
|
|
12009
12016
|
hoveredCell: 'hovered-cell',
|
|
12010
12017
|
hoveredColumn: 'hovered-column',
|
|
12011
12018
|
syncedRow: 'synced-row',
|
|
@@ -12031,6 +12038,7 @@ const rawClassNames = {
|
|
|
12031
12038
|
columnSortableIcon: 'column-sortable-icon',
|
|
12032
12039
|
columnSortedAsc: 'column-sorted-asc',
|
|
12033
12040
|
columnSortedDesc: 'column-sorted-desc',
|
|
12041
|
+
sortPriorityIndicator: 'sort-priority-indicator',
|
|
12034
12042
|
resizableContent: 'resizable-content',
|
|
12035
12043
|
resizerHandles: 'column-resizer',
|
|
12036
12044
|
resizedColumn: 'column-resized',
|
|
@@ -12100,11 +12108,11 @@ const getClassName = (classNameKey) => classNamePrefix + rawClassNames[className
|
|
|
12100
12108
|
*
|
|
12101
12109
|
* Grid utilities
|
|
12102
12110
|
*
|
|
12103
|
-
* (c) 2009-
|
|
12111
|
+
* (c) 2009-2026 Highsoft AS
|
|
12104
12112
|
*
|
|
12105
|
-
*
|
|
12113
|
+
* A commercial license may be required depending on use.
|
|
12114
|
+
* See www.highcharts.com/license
|
|
12106
12115
|
*
|
|
12107
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
12108
12116
|
*
|
|
12109
12117
|
* Authors:
|
|
12110
12118
|
* - Dawid Dragula
|
|
@@ -12281,11 +12289,11 @@ function formatText(template, values) {
|
|
|
12281
12289
|
*
|
|
12282
12290
|
* Grid Filtering Types and Constants
|
|
12283
12291
|
*
|
|
12284
|
-
* (c) 2020-
|
|
12292
|
+
* (c) 2020-2026 Highsoft AS
|
|
12285
12293
|
*
|
|
12286
|
-
*
|
|
12294
|
+
* A commercial license may be required depending on use.
|
|
12295
|
+
* See www.highcharts.com/license
|
|
12287
12296
|
*
|
|
12288
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
12289
12297
|
*
|
|
12290
12298
|
* Authors:
|
|
12291
12299
|
* - Dawid Dragula
|
|
@@ -12364,11 +12372,11 @@ const conditionsMap = {
|
|
|
12364
12372
|
*
|
|
12365
12373
|
* Grid ColumnFiltering class
|
|
12366
12374
|
*
|
|
12367
|
-
* (c) 2020-
|
|
12375
|
+
* (c) 2020-2026 Highsoft AS
|
|
12368
12376
|
*
|
|
12369
|
-
*
|
|
12377
|
+
* A commercial license may be required depending on use.
|
|
12378
|
+
* See www.highcharts.com/license
|
|
12370
12379
|
*
|
|
12371
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
12372
12380
|
*
|
|
12373
12381
|
* Authors:
|
|
12374
12382
|
* - Dawid Dragula
|
|
@@ -12740,75 +12748,411 @@ class ColumnFiltering {
|
|
|
12740
12748
|
* */
|
|
12741
12749
|
/* harmony default export */ const ColumnFiltering_ColumnFiltering = (ColumnFiltering);
|
|
12742
12750
|
|
|
12743
|
-
;// ./code/grid/es-modules/
|
|
12751
|
+
;// ./code/grid/es-modules/Accessibility/Utils/HTMLUtilities.js
|
|
12744
12752
|
/* *
|
|
12745
12753
|
*
|
|
12746
|
-
*
|
|
12747
|
-
*
|
|
12748
|
-
* (c) 2020-2025 Highsoft AS
|
|
12754
|
+
* (c) 2009-2026 Highsoft AS
|
|
12755
|
+
* Author: Øystein Moseng
|
|
12749
12756
|
*
|
|
12750
|
-
*
|
|
12757
|
+
* Utility functions for accessibility module.
|
|
12751
12758
|
*
|
|
12752
|
-
*
|
|
12759
|
+
* A commercial license may be required depending on use.
|
|
12760
|
+
* See www.highcharts.com/license
|
|
12753
12761
|
*
|
|
12754
|
-
* Authors:
|
|
12755
|
-
* - Dawid Dragula
|
|
12756
|
-
* - Sebastian Bochan
|
|
12757
12762
|
*
|
|
12758
12763
|
* */
|
|
12759
12764
|
|
|
12760
12765
|
|
|
12766
|
+
const { doc: HTMLUtilities_doc, win: HTMLUtilities_win } = Core_Globals;
|
|
12761
12767
|
|
|
12762
|
-
|
|
12763
|
-
|
|
12764
|
-
|
|
12768
|
+
const { css: HTMLUtilities_css } = Core_Utilities;
|
|
12769
|
+
/* *
|
|
12770
|
+
*
|
|
12771
|
+
* Constants
|
|
12772
|
+
*
|
|
12773
|
+
* */
|
|
12774
|
+
const simulatedEventTarget = HTMLUtilities_win.EventTarget && new HTMLUtilities_win.EventTarget() || 'none';
|
|
12775
|
+
/* *
|
|
12776
|
+
*
|
|
12777
|
+
* Functions
|
|
12778
|
+
*
|
|
12779
|
+
* */
|
|
12780
|
+
/* eslint-disable valid-jsdoc */
|
|
12765
12781
|
/**
|
|
12766
|
-
*
|
|
12782
|
+
* @private
|
|
12783
|
+
* @param {Highcharts.HTMLDOMElement} el
|
|
12784
|
+
* @param {string} className
|
|
12785
|
+
* @return {void}
|
|
12767
12786
|
*/
|
|
12768
|
-
|
|
12769
|
-
|
|
12770
|
-
|
|
12771
|
-
* Constructor
|
|
12772
|
-
*
|
|
12773
|
-
* */
|
|
12774
|
-
/**
|
|
12775
|
-
* Construct the accessibility object.
|
|
12776
|
-
*
|
|
12777
|
-
* @param grid
|
|
12778
|
-
* The Grid Table instance which the accessibility controller belong to.
|
|
12779
|
-
*/
|
|
12780
|
-
constructor(grid) {
|
|
12781
|
-
this.grid = grid;
|
|
12782
|
-
this.element = document.createElement('div');
|
|
12783
|
-
this.element.classList.add(Grid_Core_Globals.getClassName('visuallyHidden'));
|
|
12784
|
-
this.grid.container?.prepend(this.element);
|
|
12785
|
-
this.announcerElement = document.createElement('p');
|
|
12786
|
-
this.announcerElement.setAttribute('aria-atomic', 'true');
|
|
12787
|
-
this.announcerElement.setAttribute('aria-hidden', 'false');
|
|
12787
|
+
function addClass(el, className) {
|
|
12788
|
+
if (el.classList) {
|
|
12789
|
+
el.classList.add(className);
|
|
12788
12790
|
}
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
|
|
12791
|
+
else if (el.className.indexOf(className) < 0) {
|
|
12792
|
+
// Note: Dumb check for class name exists, should be fine for practical
|
|
12793
|
+
// use cases, but will return false positives if the element has a class
|
|
12794
|
+
// that contains the className.
|
|
12795
|
+
el.className += ' ' + className;
|
|
12796
|
+
}
|
|
12797
|
+
}
|
|
12798
|
+
/**
|
|
12799
|
+
* @private
|
|
12800
|
+
* @param {Highcharts.HTMLDOMElement} el
|
|
12801
|
+
* @param {string} className
|
|
12802
|
+
* @return {void}
|
|
12803
|
+
*/
|
|
12804
|
+
function removeClass(el, className) {
|
|
12805
|
+
if (el.classList) {
|
|
12806
|
+
el.classList.remove(className);
|
|
12807
|
+
}
|
|
12808
|
+
else {
|
|
12809
|
+
// Note: Dumb logic that will break if the element has a class name that
|
|
12810
|
+
// consists of className plus something else.
|
|
12811
|
+
el.className = el.className.replace(new RegExp(className, 'g'), '');
|
|
12812
|
+
}
|
|
12813
|
+
}
|
|
12814
|
+
/**
|
|
12815
|
+
* Utility function to clone a mouse event for re-dispatching.
|
|
12816
|
+
* @private
|
|
12817
|
+
*/
|
|
12818
|
+
function cloneMouseEvent(e) {
|
|
12819
|
+
if (typeof HTMLUtilities_win.MouseEvent === 'function') {
|
|
12820
|
+
return new HTMLUtilities_win.MouseEvent(e.type, e);
|
|
12821
|
+
}
|
|
12822
|
+
// No MouseEvent support, try using initMouseEvent
|
|
12823
|
+
if (HTMLUtilities_doc?.createEvent) {
|
|
12824
|
+
const evt = HTMLUtilities_doc.createEvent('MouseEvent');
|
|
12825
|
+
if (evt.initMouseEvent) {
|
|
12826
|
+
evt.initMouseEvent(e.type, e.bubbles, // #10561, #12161
|
|
12827
|
+
e.cancelable, e.view || HTMLUtilities_win, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);
|
|
12828
|
+
return evt;
|
|
12806
12829
|
}
|
|
12807
12830
|
}
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12831
|
+
return getFakeMouseEvent(e.type);
|
|
12832
|
+
}
|
|
12833
|
+
/**
|
|
12834
|
+
* Utility function to clone a touch event for re-dispatching.
|
|
12835
|
+
* @private
|
|
12836
|
+
*/
|
|
12837
|
+
function cloneTouchEvent(e) {
|
|
12838
|
+
const touchListToTouchArray = (l) => {
|
|
12839
|
+
const touchArray = [];
|
|
12840
|
+
for (let i = 0; i < l.length; ++i) {
|
|
12841
|
+
const item = l.item(i);
|
|
12842
|
+
if (item) {
|
|
12843
|
+
touchArray.push(item);
|
|
12844
|
+
}
|
|
12845
|
+
}
|
|
12846
|
+
return touchArray;
|
|
12847
|
+
};
|
|
12848
|
+
if (typeof HTMLUtilities_win.TouchEvent === 'function') {
|
|
12849
|
+
const newEvent = new HTMLUtilities_win.TouchEvent(e.type, {
|
|
12850
|
+
touches: touchListToTouchArray(e.touches),
|
|
12851
|
+
targetTouches: touchListToTouchArray(e.targetTouches),
|
|
12852
|
+
changedTouches: touchListToTouchArray(e.changedTouches),
|
|
12853
|
+
ctrlKey: e.ctrlKey,
|
|
12854
|
+
shiftKey: e.shiftKey,
|
|
12855
|
+
altKey: e.altKey,
|
|
12856
|
+
metaKey: e.metaKey,
|
|
12857
|
+
bubbles: e.bubbles,
|
|
12858
|
+
cancelable: e.cancelable,
|
|
12859
|
+
composed: e.composed,
|
|
12860
|
+
detail: e.detail,
|
|
12861
|
+
view: e.view
|
|
12862
|
+
});
|
|
12863
|
+
if (e.defaultPrevented) {
|
|
12864
|
+
newEvent.preventDefault();
|
|
12865
|
+
}
|
|
12866
|
+
return newEvent;
|
|
12867
|
+
}
|
|
12868
|
+
const fakeEvt = cloneMouseEvent(e);
|
|
12869
|
+
fakeEvt.touches = e.touches;
|
|
12870
|
+
fakeEvt.changedTouches = e.changedTouches;
|
|
12871
|
+
fakeEvt.targetTouches = e.targetTouches;
|
|
12872
|
+
return fakeEvt;
|
|
12873
|
+
}
|
|
12874
|
+
/**
|
|
12875
|
+
* @private
|
|
12876
|
+
*/
|
|
12877
|
+
function escapeStringForHTML(str) {
|
|
12878
|
+
return str
|
|
12879
|
+
.replace(/&/g, '&')
|
|
12880
|
+
.replace(/</g, '<')
|
|
12881
|
+
.replace(/>/g, '>')
|
|
12882
|
+
.replace(/"/g, '"')
|
|
12883
|
+
.replace(/'/g, ''')
|
|
12884
|
+
.replace(/\//g, '/');
|
|
12885
|
+
}
|
|
12886
|
+
/**
|
|
12887
|
+
* Get an element by ID
|
|
12888
|
+
* @private
|
|
12889
|
+
*/
|
|
12890
|
+
function getElement(id) {
|
|
12891
|
+
return HTMLUtilities_doc.getElementById(id);
|
|
12892
|
+
}
|
|
12893
|
+
/**
|
|
12894
|
+
* Get a fake mouse event of a given type. If relatedTarget is not given,
|
|
12895
|
+
* it will point to simulatedEventTarget, as an indicator that the event
|
|
12896
|
+
* is fake.
|
|
12897
|
+
* @private
|
|
12898
|
+
*/
|
|
12899
|
+
function getFakeMouseEvent(type, position, relatedTarget) {
|
|
12900
|
+
const pos = position || {
|
|
12901
|
+
x: 0,
|
|
12902
|
+
y: 0
|
|
12903
|
+
};
|
|
12904
|
+
if (typeof HTMLUtilities_win.MouseEvent === 'function') {
|
|
12905
|
+
return new HTMLUtilities_win.MouseEvent(type, {
|
|
12906
|
+
bubbles: true,
|
|
12907
|
+
cancelable: true,
|
|
12908
|
+
composed: true,
|
|
12909
|
+
button: 0,
|
|
12910
|
+
buttons: 1,
|
|
12911
|
+
relatedTarget: relatedTarget || simulatedEventTarget,
|
|
12912
|
+
view: HTMLUtilities_win,
|
|
12913
|
+
detail: type === 'click' ? 1 : 0,
|
|
12914
|
+
screenX: pos.x,
|
|
12915
|
+
screenY: pos.y,
|
|
12916
|
+
clientX: pos.x,
|
|
12917
|
+
clientY: pos.y
|
|
12918
|
+
});
|
|
12919
|
+
}
|
|
12920
|
+
// No MouseEvent support, try using initMouseEvent
|
|
12921
|
+
if (HTMLUtilities_doc?.createEvent) {
|
|
12922
|
+
const evt = HTMLUtilities_doc.createEvent('MouseEvent');
|
|
12923
|
+
if (evt.initMouseEvent) {
|
|
12924
|
+
evt.initMouseEvent(type, true, // Bubble
|
|
12925
|
+
true, // Cancel
|
|
12926
|
+
HTMLUtilities_win, // View
|
|
12927
|
+
type === 'click' ? 1 : 0, // Detail
|
|
12928
|
+
// Coords
|
|
12929
|
+
pos.x, pos.y, pos.x, pos.y,
|
|
12930
|
+
// Pressed keys
|
|
12931
|
+
false, false, false, false, 0, // Button
|
|
12932
|
+
null // Related target
|
|
12933
|
+
);
|
|
12934
|
+
return evt;
|
|
12935
|
+
}
|
|
12936
|
+
}
|
|
12937
|
+
return { type: type };
|
|
12938
|
+
}
|
|
12939
|
+
/**
|
|
12940
|
+
* Get an appropriate heading level for an element. Corresponds to the
|
|
12941
|
+
* heading level below the previous heading in the DOM.
|
|
12942
|
+
*
|
|
12943
|
+
* Note: Only detects previous headings in the DOM that are siblings,
|
|
12944
|
+
* ancestors, or previous siblings of ancestors. Headings that are nested below
|
|
12945
|
+
* siblings of ancestors (cousins et.al) are not picked up. This is because it
|
|
12946
|
+
* is ambiguous whether or not the nesting is for layout purposes or indicates a
|
|
12947
|
+
* separate section.
|
|
12948
|
+
*
|
|
12949
|
+
* @private
|
|
12950
|
+
* @param {Highcharts.HTMLDOMElement} [element]
|
|
12951
|
+
* @return {string} The heading tag name (h1, h2 etc).
|
|
12952
|
+
* If no nearest heading is found, "p" is returned.
|
|
12953
|
+
*/
|
|
12954
|
+
function getHeadingTagNameForElement(element) {
|
|
12955
|
+
const getIncreasedHeadingLevel = (tagName) => {
|
|
12956
|
+
const headingLevel = parseInt(tagName.slice(1), 10), newLevel = Math.min(6, headingLevel + 1);
|
|
12957
|
+
return 'h' + newLevel;
|
|
12958
|
+
};
|
|
12959
|
+
const isHeading = (tagName) => /^H[1-6]$/i.test(tagName);
|
|
12960
|
+
const getPreviousSiblingsHeading = (el) => {
|
|
12961
|
+
let sibling = el;
|
|
12962
|
+
while (sibling = sibling.previousSibling) { // eslint-disable-line
|
|
12963
|
+
const tagName = sibling.tagName || '';
|
|
12964
|
+
if (isHeading(tagName)) {
|
|
12965
|
+
return tagName;
|
|
12966
|
+
}
|
|
12967
|
+
}
|
|
12968
|
+
return '';
|
|
12969
|
+
};
|
|
12970
|
+
const getHeadingRecursive = (el) => {
|
|
12971
|
+
const prevSiblingsHeading = getPreviousSiblingsHeading(el);
|
|
12972
|
+
if (prevSiblingsHeading) {
|
|
12973
|
+
return getIncreasedHeadingLevel(prevSiblingsHeading);
|
|
12974
|
+
}
|
|
12975
|
+
// No previous siblings are headings, try parent node
|
|
12976
|
+
const parent = el.parentElement;
|
|
12977
|
+
if (!parent) {
|
|
12978
|
+
return 'h6';
|
|
12979
|
+
}
|
|
12980
|
+
const parentTagName = parent.tagName;
|
|
12981
|
+
if (isHeading(parentTagName)) {
|
|
12982
|
+
return getIncreasedHeadingLevel(parentTagName);
|
|
12983
|
+
}
|
|
12984
|
+
return getHeadingRecursive(parent);
|
|
12985
|
+
};
|
|
12986
|
+
return getHeadingRecursive(element);
|
|
12987
|
+
}
|
|
12988
|
+
/**
|
|
12989
|
+
* Remove an element from the DOM.
|
|
12990
|
+
* @private
|
|
12991
|
+
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} [element]
|
|
12992
|
+
* @return {void}
|
|
12993
|
+
*/
|
|
12994
|
+
function removeElement(element) {
|
|
12995
|
+
if (element && element.parentNode) {
|
|
12996
|
+
element.parentNode.removeChild(element);
|
|
12997
|
+
}
|
|
12998
|
+
}
|
|
12999
|
+
/**
|
|
13000
|
+
* Remove all child nodes from an element.
|
|
13001
|
+
* @private
|
|
13002
|
+
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} [element]
|
|
13003
|
+
* @return {void}
|
|
13004
|
+
*/
|
|
13005
|
+
function removeChildNodes(element) {
|
|
13006
|
+
while (element.lastChild) {
|
|
13007
|
+
element.removeChild(element.lastChild);
|
|
13008
|
+
}
|
|
13009
|
+
}
|
|
13010
|
+
/**
|
|
13011
|
+
* Utility function. Reverses child nodes of a DOM element.
|
|
13012
|
+
* @private
|
|
13013
|
+
*/
|
|
13014
|
+
function reverseChildNodes(node) {
|
|
13015
|
+
let i = node.childNodes.length;
|
|
13016
|
+
while (i--) {
|
|
13017
|
+
node.appendChild(node.childNodes[i]);
|
|
13018
|
+
}
|
|
13019
|
+
}
|
|
13020
|
+
/**
|
|
13021
|
+
* Used for aria-label attributes, painting on a canvas will fail if the
|
|
13022
|
+
* text contains tags.
|
|
13023
|
+
* @private
|
|
13024
|
+
*/
|
|
13025
|
+
function stripHTMLTagsFromString(str, isForExport = false) {
|
|
13026
|
+
return (typeof str === 'string') ?
|
|
13027
|
+
(isForExport ?
|
|
13028
|
+
str.replace(/<\/?[^>]+(>|$)/g, '') :
|
|
13029
|
+
str.replace(/<\/?(?!\s)[^>]+(>|$)/g, '')) : str;
|
|
13030
|
+
}
|
|
13031
|
+
/**
|
|
13032
|
+
* Utility function for hiding an element visually, but still keeping it
|
|
13033
|
+
* available to screen reader users.
|
|
13034
|
+
* @private
|
|
13035
|
+
*/
|
|
13036
|
+
function visuallyHideElement(element) {
|
|
13037
|
+
HTMLUtilities_css(element, {
|
|
13038
|
+
position: 'absolute',
|
|
13039
|
+
width: '1px',
|
|
13040
|
+
height: '1px',
|
|
13041
|
+
overflow: 'hidden',
|
|
13042
|
+
whiteSpace: 'nowrap',
|
|
13043
|
+
clip: 'rect(1px, 1px, 1px, 1px)',
|
|
13044
|
+
marginTop: '-3px',
|
|
13045
|
+
'-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=1)',
|
|
13046
|
+
filter: 'alpha(opacity=1)',
|
|
13047
|
+
opacity: 0.01
|
|
13048
|
+
});
|
|
13049
|
+
}
|
|
13050
|
+
/* *
|
|
13051
|
+
*
|
|
13052
|
+
* Default Export
|
|
13053
|
+
*
|
|
13054
|
+
* */
|
|
13055
|
+
const HTMLUtilities = {
|
|
13056
|
+
addClass,
|
|
13057
|
+
cloneMouseEvent,
|
|
13058
|
+
cloneTouchEvent,
|
|
13059
|
+
escapeStringForHTML,
|
|
13060
|
+
getElement,
|
|
13061
|
+
getFakeMouseEvent,
|
|
13062
|
+
getHeadingTagNameForElement,
|
|
13063
|
+
removeChildNodes,
|
|
13064
|
+
removeClass,
|
|
13065
|
+
removeElement,
|
|
13066
|
+
reverseChildNodes,
|
|
13067
|
+
simulatedEventTarget,
|
|
13068
|
+
stripHTMLTagsFromString,
|
|
13069
|
+
visuallyHideElement
|
|
13070
|
+
};
|
|
13071
|
+
/* harmony default export */ const Utils_HTMLUtilities = (HTMLUtilities);
|
|
13072
|
+
|
|
13073
|
+
;// ./code/grid/es-modules/Grid/Core/Accessibility/Accessibility.js
|
|
13074
|
+
/* *
|
|
13075
|
+
*
|
|
13076
|
+
* Grid Accessibility class
|
|
13077
|
+
*
|
|
13078
|
+
* (c) 2020-2026 Highsoft AS
|
|
13079
|
+
*
|
|
13080
|
+
* A commercial license may be required depending on use.
|
|
13081
|
+
* See www.highcharts.com/license
|
|
13082
|
+
*
|
|
13083
|
+
*
|
|
13084
|
+
* Authors:
|
|
13085
|
+
* - Dawid Dragula
|
|
13086
|
+
* - Sebastian Bochan
|
|
13087
|
+
* - Kamil Kubik
|
|
13088
|
+
*
|
|
13089
|
+
* */
|
|
13090
|
+
|
|
13091
|
+
|
|
13092
|
+
|
|
13093
|
+
|
|
13094
|
+
|
|
13095
|
+
|
|
13096
|
+
|
|
13097
|
+
|
|
13098
|
+
const { formatText: Accessibility_formatText } = GridUtils;
|
|
13099
|
+
const { replaceNested: Accessibility_replaceNested } = Core_Utilities;
|
|
13100
|
+
const { getHeadingTagNameForElement: Accessibility_getHeadingTagNameForElement } = Utils_HTMLUtilities;
|
|
13101
|
+
/**
|
|
13102
|
+
* Representing the accessibility functionalities for the Data Grid.
|
|
13103
|
+
*/
|
|
13104
|
+
class Accessibility {
|
|
13105
|
+
/* *
|
|
13106
|
+
*
|
|
13107
|
+
* Constructor
|
|
13108
|
+
*
|
|
13109
|
+
* */
|
|
13110
|
+
/**
|
|
13111
|
+
* Construct the accessibility object.
|
|
13112
|
+
*
|
|
13113
|
+
* @param grid
|
|
13114
|
+
* The Grid Table instance which the accessibility controller belong to.
|
|
13115
|
+
*/
|
|
13116
|
+
constructor(grid) {
|
|
13117
|
+
/**
|
|
13118
|
+
* The before Grid screen reader section element.
|
|
13119
|
+
*/
|
|
13120
|
+
this.beforeGridElement = null;
|
|
13121
|
+
/**
|
|
13122
|
+
* The after Grid screen reader section element.
|
|
13123
|
+
*/
|
|
13124
|
+
this.afterGridElement = null;
|
|
13125
|
+
this.grid = grid;
|
|
13126
|
+
this.element = document.createElement('div');
|
|
13127
|
+
this.element.classList.add(Grid_Core_Globals.getClassName('visuallyHidden'));
|
|
13128
|
+
this.grid.container?.prepend(this.element);
|
|
13129
|
+
this.announcerElement = document.createElement('p');
|
|
13130
|
+
this.announcerElement.setAttribute('aria-atomic', 'true');
|
|
13131
|
+
this.announcerElement.setAttribute('aria-hidden', 'false');
|
|
13132
|
+
}
|
|
13133
|
+
/* *
|
|
13134
|
+
*
|
|
13135
|
+
* Methods
|
|
13136
|
+
*
|
|
13137
|
+
* */
|
|
13138
|
+
/**
|
|
13139
|
+
* Add the description to the header cell.
|
|
13140
|
+
*
|
|
13141
|
+
* @param thElement
|
|
13142
|
+
* The header cell element to add the description to.
|
|
13143
|
+
*
|
|
13144
|
+
* @param description
|
|
13145
|
+
* The description to be added.
|
|
13146
|
+
*/
|
|
13147
|
+
addHeaderCellDescription(thElement, description) {
|
|
13148
|
+
if (description) {
|
|
13149
|
+
thElement.setAttribute('aria-description', description);
|
|
13150
|
+
}
|
|
13151
|
+
}
|
|
13152
|
+
/**
|
|
13153
|
+
* Announce the message to the screen reader.
|
|
13154
|
+
*
|
|
13155
|
+
* @param msg
|
|
12812
13156
|
* The message to be announced.
|
|
12813
13157
|
*
|
|
12814
13158
|
* @param assertive
|
|
@@ -12957,10 +13301,169 @@ class Accessibility {
|
|
|
12957
13301
|
}
|
|
12958
13302
|
this.addHighContrast();
|
|
12959
13303
|
}
|
|
13304
|
+
/**
|
|
13305
|
+
* Adds the screen reader section before or after the Grid.
|
|
13306
|
+
*
|
|
13307
|
+
* @param placement
|
|
13308
|
+
* Either 'before' or 'after'.
|
|
13309
|
+
*/
|
|
13310
|
+
addScreenReaderSection(placement) {
|
|
13311
|
+
const grid = this.grid;
|
|
13312
|
+
const isBefore = placement === 'before';
|
|
13313
|
+
// Get the screen reader section content.
|
|
13314
|
+
const defaultFormatter = isBefore ?
|
|
13315
|
+
this.defaultBeforeFormatter() :
|
|
13316
|
+
this.defaultAfterFormatter();
|
|
13317
|
+
const formatter = grid.options?.accessibility?.screenReaderSection?.[`${placement}GridFormatter`];
|
|
13318
|
+
const content = formatter ? formatter(grid) : defaultFormatter;
|
|
13319
|
+
// Create the screen reader section element.
|
|
13320
|
+
const sectionElement = this[`${placement}GridElement`] = (this[`${placement}GridElement`] || document.createElement('div'));
|
|
13321
|
+
// Create the hidden element.
|
|
13322
|
+
const hiddenElement = sectionElement.firstChild ||
|
|
13323
|
+
document.createElement('div');
|
|
13324
|
+
if (content) {
|
|
13325
|
+
this.setScreenReaderSectionAttributes(sectionElement, placement);
|
|
13326
|
+
HTML_AST.setElementHTML(hiddenElement, content);
|
|
13327
|
+
// Append only if not already a child.
|
|
13328
|
+
if (hiddenElement.parentNode !== sectionElement) {
|
|
13329
|
+
sectionElement.appendChild(hiddenElement);
|
|
13330
|
+
}
|
|
13331
|
+
// Insert only if not already in the DOM.
|
|
13332
|
+
const gridContainer = grid.container;
|
|
13333
|
+
if (!sectionElement.parentNode && gridContainer) {
|
|
13334
|
+
if (isBefore) {
|
|
13335
|
+
gridContainer.insertBefore(sectionElement, gridContainer.firstChild);
|
|
13336
|
+
}
|
|
13337
|
+
else {
|
|
13338
|
+
gridContainer.appendChild(sectionElement);
|
|
13339
|
+
}
|
|
13340
|
+
}
|
|
13341
|
+
hiddenElement.classList.add(Grid_Core_Globals.getClassName('visuallyHidden'));
|
|
13342
|
+
}
|
|
13343
|
+
else {
|
|
13344
|
+
if (sectionElement.parentNode) {
|
|
13345
|
+
sectionElement.parentNode.removeChild(sectionElement);
|
|
13346
|
+
}
|
|
13347
|
+
this[`${placement}GridElement`] = null;
|
|
13348
|
+
}
|
|
13349
|
+
}
|
|
13350
|
+
/**
|
|
13351
|
+
* Sets the accessibility attributes for the screen reader section.
|
|
13352
|
+
*
|
|
13353
|
+
* @param sectionElement
|
|
13354
|
+
* The section element.
|
|
13355
|
+
*
|
|
13356
|
+
* @param placement
|
|
13357
|
+
* Either 'before' or 'after'.
|
|
13358
|
+
*/
|
|
13359
|
+
setScreenReaderSectionAttributes(sectionElement, placement) {
|
|
13360
|
+
const grid = this.grid;
|
|
13361
|
+
sectionElement.setAttribute('id', `grid-screen-reader-region-${placement}-${grid.id}`);
|
|
13362
|
+
const regionLabel = grid.options?.lang?.accessibility?.screenReaderSection?.[`${placement}RegionLabel`];
|
|
13363
|
+
if (regionLabel) {
|
|
13364
|
+
sectionElement.setAttribute('aria-label', regionLabel);
|
|
13365
|
+
sectionElement.setAttribute('role', 'region');
|
|
13366
|
+
}
|
|
13367
|
+
// Position the section relatively to the Grid.
|
|
13368
|
+
sectionElement.style.position = 'relative';
|
|
13369
|
+
}
|
|
13370
|
+
/**
|
|
13371
|
+
* Gets the default formatter for the before-Grid screen reader section.
|
|
13372
|
+
* @private
|
|
13373
|
+
*/
|
|
13374
|
+
defaultBeforeFormatter() {
|
|
13375
|
+
const grid = this.grid;
|
|
13376
|
+
const { container, dataTable, options } = grid;
|
|
13377
|
+
const format = options?.accessibility?.screenReaderSection?.beforeGridFormat;
|
|
13378
|
+
if (!format || !container) {
|
|
13379
|
+
return '';
|
|
13380
|
+
}
|
|
13381
|
+
const gridTitle = options?.caption?.text;
|
|
13382
|
+
let formattedGridTitle = '';
|
|
13383
|
+
if (gridTitle) {
|
|
13384
|
+
if (this.isWrappedInHeadingTag(gridTitle)) {
|
|
13385
|
+
formattedGridTitle = gridTitle;
|
|
13386
|
+
}
|
|
13387
|
+
else {
|
|
13388
|
+
const headingTag = Accessibility_getHeadingTagNameForElement(container);
|
|
13389
|
+
formattedGridTitle =
|
|
13390
|
+
`<${headingTag}>${gridTitle}</${headingTag}>`;
|
|
13391
|
+
}
|
|
13392
|
+
}
|
|
13393
|
+
const context = {
|
|
13394
|
+
gridTitle: formattedGridTitle,
|
|
13395
|
+
gridDescription: options?.description?.text || '',
|
|
13396
|
+
rowCount: dataTable?.rowCount || 0,
|
|
13397
|
+
columnCount: (dataTable?.getColumnIds() || []).length
|
|
13398
|
+
};
|
|
13399
|
+
const formattedString = this.formatTemplateString(format, context);
|
|
13400
|
+
return this.stripEmptyHTMLTags(formattedString);
|
|
13401
|
+
}
|
|
13402
|
+
/**
|
|
13403
|
+
* Checks if a string is already wrapped in a heading tag (h1-h6).
|
|
13404
|
+
* @private
|
|
13405
|
+
*
|
|
13406
|
+
* @param text
|
|
13407
|
+
* The text to check.
|
|
13408
|
+
*
|
|
13409
|
+
* @returns
|
|
13410
|
+
* True if the text is wrapped in a heading tag.
|
|
13411
|
+
*/
|
|
13412
|
+
isWrappedInHeadingTag(text) {
|
|
13413
|
+
return /^<h([1-6])[^>]*>[\s\S]*<\/h\1>$/i.test(text.trim());
|
|
13414
|
+
}
|
|
13415
|
+
/**
|
|
13416
|
+
* Formats a string with template variables.
|
|
13417
|
+
*
|
|
13418
|
+
* @param format
|
|
13419
|
+
* The format string.
|
|
13420
|
+
*
|
|
13421
|
+
* @param context
|
|
13422
|
+
* The context object.
|
|
13423
|
+
*
|
|
13424
|
+
* @private
|
|
13425
|
+
*/
|
|
13426
|
+
formatTemplateString(format, context) {
|
|
13427
|
+
return format.replace(/\{(\w+)\}/g, (_, key) => (key in context ? String(context[key]) : `{${key}}`));
|
|
13428
|
+
}
|
|
13429
|
+
/**
|
|
13430
|
+
* Gets the default formatter for the after-Grid screen reader section.
|
|
13431
|
+
* @private
|
|
13432
|
+
*/
|
|
13433
|
+
defaultAfterFormatter() {
|
|
13434
|
+
const grid = this.grid;
|
|
13435
|
+
const format = grid.options?.accessibility?.screenReaderSection
|
|
13436
|
+
?.afterGridFormat;
|
|
13437
|
+
if (!format) {
|
|
13438
|
+
return '';
|
|
13439
|
+
}
|
|
13440
|
+
return this.stripEmptyHTMLTags(format);
|
|
13441
|
+
}
|
|
13442
|
+
/**
|
|
13443
|
+
* Strips empty HTML tags from a string recursively.
|
|
13444
|
+
*
|
|
13445
|
+
* @param string
|
|
13446
|
+
* The string to strip empty HTML tags from.
|
|
13447
|
+
*
|
|
13448
|
+
* @private
|
|
13449
|
+
*/
|
|
13450
|
+
stripEmptyHTMLTags(string) {
|
|
13451
|
+
return Accessibility_replaceNested(string, [/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g, '']);
|
|
13452
|
+
}
|
|
12960
13453
|
/**
|
|
12961
13454
|
* Destroy the accessibility controller.
|
|
12962
13455
|
*/
|
|
12963
13456
|
destroy() {
|
|
13457
|
+
// Removes the screen reader before section.
|
|
13458
|
+
const beforeGridElement = this.beforeGridElement;
|
|
13459
|
+
if (beforeGridElement?.parentNode) {
|
|
13460
|
+
beforeGridElement.parentNode.removeChild(beforeGridElement);
|
|
13461
|
+
}
|
|
13462
|
+
// Removes the screen reader after section.
|
|
13463
|
+
const afterGridElement = this.afterGridElement;
|
|
13464
|
+
if (afterGridElement?.parentNode) {
|
|
13465
|
+
afterGridElement.parentNode.removeChild(afterGridElement);
|
|
13466
|
+
}
|
|
12964
13467
|
this.element.remove();
|
|
12965
13468
|
this.announcerElement.remove();
|
|
12966
13469
|
clearTimeout(this.announcerTimeout);
|
|
@@ -12987,11 +13490,11 @@ const icons = {
|
|
|
12987
13490
|
*
|
|
12988
13491
|
* Grid Pagination class
|
|
12989
13492
|
*
|
|
12990
|
-
* (c) 2020-
|
|
13493
|
+
* (c) 2020-2026 Highsoft AS
|
|
12991
13494
|
*
|
|
12992
|
-
*
|
|
13495
|
+
* A commercial license may be required depending on use.
|
|
13496
|
+
* See www.highcharts.com/license
|
|
12993
13497
|
*
|
|
12994
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
12995
13498
|
*
|
|
12996
13499
|
* Authors:
|
|
12997
13500
|
* - Sebastian Bochan
|
|
@@ -13825,11 +14328,11 @@ Pagination.defaultOptions = {
|
|
|
13825
14328
|
*
|
|
13826
14329
|
* Grid default options
|
|
13827
14330
|
*
|
|
13828
|
-
* (c) 2009-
|
|
14331
|
+
* (c) 2009-2026 Highsoft AS
|
|
13829
14332
|
*
|
|
13830
|
-
*
|
|
14333
|
+
* A commercial license may be required depending on use.
|
|
14334
|
+
* See www.highcharts.com/license
|
|
13831
14335
|
*
|
|
13832
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
13833
14336
|
*
|
|
13834
14337
|
* Authors:
|
|
13835
14338
|
* - Dawid Dragula
|
|
@@ -13851,7 +14354,8 @@ const defaultLangOptions = {
|
|
|
13851
14354
|
ascending: 'Sorted ascending.',
|
|
13852
14355
|
descending: 'Sorted descending.',
|
|
13853
14356
|
none: 'Not sorted.'
|
|
13854
|
-
}
|
|
14357
|
+
},
|
|
14358
|
+
priority: 'Priority {priority}.'
|
|
13855
14359
|
},
|
|
13856
14360
|
pagination: {
|
|
13857
14361
|
announcements: {
|
|
@@ -13868,6 +14372,10 @@ const defaultLangOptions = {
|
|
|
13868
14372
|
filterCleared: 'Filter cleared for {columnId}. ' +
|
|
13869
14373
|
'{rowsCount} results found.'
|
|
13870
14374
|
}
|
|
14375
|
+
},
|
|
14376
|
+
screenReaderSection: {
|
|
14377
|
+
beforeRegionLabel: '',
|
|
14378
|
+
afterRegionLabel: ''
|
|
13871
14379
|
}
|
|
13872
14380
|
},
|
|
13873
14381
|
loading: 'Loading...',
|
|
@@ -13918,6 +14426,13 @@ const Defaults_defaultOptions = {
|
|
|
13918
14426
|
announcements: {
|
|
13919
14427
|
sorting: true,
|
|
13920
14428
|
filtering: true
|
|
14429
|
+
},
|
|
14430
|
+
screenReaderSection: {
|
|
14431
|
+
beforeGridFormat: '{gridTitle}' +
|
|
14432
|
+
'<div>{gridDescription}</div>' +
|
|
14433
|
+
'<div>Grid with {rowCount} rows and {columnCount}' +
|
|
14434
|
+
' columns.</div>',
|
|
14435
|
+
afterGridFormat: 'End of Grid.'
|
|
13921
14436
|
}
|
|
13922
14437
|
},
|
|
13923
14438
|
time: {
|
|
@@ -13943,7 +14458,7 @@ const Defaults_defaultOptions = {
|
|
|
13943
14458
|
},
|
|
13944
14459
|
columnDefaults: {
|
|
13945
14460
|
sorting: {
|
|
13946
|
-
|
|
14461
|
+
enabled: true
|
|
13947
14462
|
},
|
|
13948
14463
|
filtering: {
|
|
13949
14464
|
inline: false
|
|
@@ -13977,11 +14492,11 @@ function Defaults_setOptions(options) {
|
|
|
13977
14492
|
*
|
|
13978
14493
|
* Cell Content abstract class
|
|
13979
14494
|
*
|
|
13980
|
-
* (c) 2020-
|
|
14495
|
+
* (c) 2020-2026 Highsoft AS
|
|
13981
14496
|
*
|
|
13982
|
-
*
|
|
14497
|
+
* A commercial license may be required depending on use.
|
|
14498
|
+
* See www.highcharts.com/license
|
|
13983
14499
|
*
|
|
13984
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
13985
14500
|
*
|
|
13986
14501
|
* Authors:
|
|
13987
14502
|
* - Dawid Dragula
|
|
@@ -14019,11 +14534,11 @@ class CellContent {
|
|
|
14019
14534
|
*
|
|
14020
14535
|
* Text Cell Content class
|
|
14021
14536
|
*
|
|
14022
|
-
* (c) 2020-
|
|
14537
|
+
* (c) 2020-2026 Highsoft AS
|
|
14023
14538
|
*
|
|
14024
|
-
*
|
|
14539
|
+
* A commercial license may be required depending on use.
|
|
14540
|
+
* See www.highcharts.com/license
|
|
14025
14541
|
*
|
|
14026
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14027
14542
|
*
|
|
14028
14543
|
* Authors:
|
|
14029
14544
|
* - Dawid Dragula
|
|
@@ -14114,7 +14629,7 @@ class TextContent extends CellContent_CellContent {
|
|
|
14114
14629
|
* */
|
|
14115
14630
|
TextContent.defaultFormatsForDataTypes = {
|
|
14116
14631
|
string: '{value}',
|
|
14117
|
-
number: '{value}',
|
|
14632
|
+
number: '{value:,.f}',
|
|
14118
14633
|
'boolean': '{value}',
|
|
14119
14634
|
datetime: '{value:%Y-%m-%d %H:%M:%S}'
|
|
14120
14635
|
};
|
|
@@ -14130,11 +14645,11 @@ TextContent.defaultFormatsForDataTypes = {
|
|
|
14130
14645
|
*
|
|
14131
14646
|
* Grid Column class
|
|
14132
14647
|
*
|
|
14133
|
-
* (c) 2020-
|
|
14648
|
+
* (c) 2020-2026 Highsoft AS
|
|
14134
14649
|
*
|
|
14135
|
-
*
|
|
14650
|
+
* A commercial license may be required depending on use.
|
|
14651
|
+
* See www.highcharts.com/license
|
|
14136
14652
|
*
|
|
14137
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14138
14653
|
*
|
|
14139
14654
|
* Authors:
|
|
14140
14655
|
* - Dawid Dragula
|
|
@@ -14384,11 +14899,11 @@ class Column {
|
|
|
14384
14899
|
*
|
|
14385
14900
|
* Grid Row abstract class
|
|
14386
14901
|
*
|
|
14387
|
-
* (c) 2020-
|
|
14902
|
+
* (c) 2020-2026 Highsoft AS
|
|
14388
14903
|
*
|
|
14389
|
-
*
|
|
14904
|
+
* A commercial license may be required depending on use.
|
|
14905
|
+
* See www.highcharts.com/license
|
|
14390
14906
|
*
|
|
14391
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14392
14907
|
*
|
|
14393
14908
|
* Authors:
|
|
14394
14909
|
* - Dawid Dragula
|
|
@@ -14517,11 +15032,11 @@ class Row {
|
|
|
14517
15032
|
*
|
|
14518
15033
|
* Grid Cell abstract class
|
|
14519
15034
|
*
|
|
14520
|
-
* (c) 2020-
|
|
15035
|
+
* (c) 2020-2026 Highsoft AS
|
|
14521
15036
|
*
|
|
14522
|
-
*
|
|
15037
|
+
* A commercial license may be required depending on use.
|
|
15038
|
+
* See www.highcharts.com/license
|
|
14523
15039
|
*
|
|
14524
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14525
15040
|
*
|
|
14526
15041
|
* Authors:
|
|
14527
15042
|
* - Dawid Dragula
|
|
@@ -14621,6 +15136,8 @@ class Cell {
|
|
|
14621
15136
|
*
|
|
14622
15137
|
* @param e
|
|
14623
15138
|
* Keyboard event object.
|
|
15139
|
+
*
|
|
15140
|
+
* @internal
|
|
14624
15141
|
*/
|
|
14625
15142
|
onKeyDown(e) {
|
|
14626
15143
|
const { row, column } = this;
|
|
@@ -14772,11 +15289,11 @@ class Cell {
|
|
|
14772
15289
|
*
|
|
14773
15290
|
* Grid ColumnSorting class
|
|
14774
15291
|
*
|
|
14775
|
-
* (c) 2020-
|
|
15292
|
+
* (c) 2020-2026 Highsoft AS
|
|
14776
15293
|
*
|
|
14777
|
-
*
|
|
15294
|
+
* A commercial license may be required depending on use.
|
|
15295
|
+
* See www.highcharts.com/license
|
|
14778
15296
|
*
|
|
14779
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14780
15297
|
*
|
|
14781
15298
|
* Authors:
|
|
14782
15299
|
* - Dawid Dragula
|
|
@@ -14813,24 +15330,35 @@ class ColumnSorting {
|
|
|
14813
15330
|
constructor(column, headerCellElement) {
|
|
14814
15331
|
/**
|
|
14815
15332
|
* Toggle sorting order for the column in the order: asc -> desc -> none
|
|
15333
|
+
*
|
|
15334
|
+
* @param e
|
|
15335
|
+
* Optional mouse or keyboard event.
|
|
14816
15336
|
*/
|
|
14817
|
-
this.toggle = () => {
|
|
15337
|
+
this.toggle = (e) => {
|
|
14818
15338
|
const viewport = this.column.viewport;
|
|
14819
15339
|
const querying = viewport.grid.querying;
|
|
14820
15340
|
const sortingController = querying.sorting;
|
|
14821
|
-
const
|
|
14822
|
-
|
|
15341
|
+
const additive = !!e?.shiftKey;
|
|
15342
|
+
const currentOrder = (additive ?
|
|
15343
|
+
sortingController.currentSortings?.find((sorting) => sorting.columnId === this.column.id)?.order :
|
|
15344
|
+
(sortingController.currentSorting?.columnId ===
|
|
15345
|
+
this.column.id ?
|
|
15346
|
+
sortingController.currentSorting.order :
|
|
15347
|
+
null)) || 'none';
|
|
14823
15348
|
const consequents = {
|
|
14824
15349
|
none: 'asc',
|
|
14825
15350
|
asc: 'desc',
|
|
14826
15351
|
desc: null
|
|
14827
15352
|
};
|
|
14828
|
-
void this.setOrder(consequents[currentOrder]);
|
|
15353
|
+
void this.setOrder(consequents[currentOrder], additive);
|
|
14829
15354
|
};
|
|
14830
15355
|
this.column = column;
|
|
14831
15356
|
this.headerCellElement = headerCellElement;
|
|
14832
15357
|
this.addHeaderElementAttributes();
|
|
14833
|
-
|
|
15358
|
+
const sortingOptions = column.options.sorting;
|
|
15359
|
+
const sortingEnabled = sortingOptions?.enabled ??
|
|
15360
|
+
sortingOptions?.sortable;
|
|
15361
|
+
if (sortingEnabled) {
|
|
14834
15362
|
headerCellElement.classList.add(Grid_Core_Globals.getClassName('columnSortable'));
|
|
14835
15363
|
}
|
|
14836
15364
|
}
|
|
@@ -14846,19 +15374,25 @@ class ColumnSorting {
|
|
|
14846
15374
|
const col = this.column;
|
|
14847
15375
|
const a11y = col.viewport.grid.accessibility;
|
|
14848
15376
|
const sortingOptions = col.options.sorting;
|
|
14849
|
-
const { currentSorting } = col.viewport.grid.querying.sorting;
|
|
15377
|
+
const { currentSorting, currentSortings } = col.viewport.grid.querying.sorting;
|
|
14850
15378
|
const sortedAscClassName = Grid_Core_Globals.getClassName('columnSortedAsc');
|
|
14851
15379
|
const sortedDescClassName = Grid_Core_Globals.getClassName('columnSortedDesc');
|
|
14852
15380
|
const el = this.headerCellElement;
|
|
14853
|
-
|
|
15381
|
+
const sortingEnabled = sortingOptions?.enabled ??
|
|
15382
|
+
sortingOptions?.sortable;
|
|
15383
|
+
const columnSorting = (currentSortings?.find((sorting) => sorting.columnId === col.id) ||
|
|
15384
|
+
(currentSorting?.columnId === col.id ?
|
|
15385
|
+
currentSorting :
|
|
15386
|
+
void 0));
|
|
15387
|
+
if (!columnSorting?.order) {
|
|
14854
15388
|
el.classList.remove(sortedAscClassName);
|
|
14855
15389
|
el.classList.remove(sortedDescClassName);
|
|
14856
|
-
if (
|
|
15390
|
+
if (sortingEnabled) {
|
|
14857
15391
|
a11y?.setColumnSortState(el, 'none');
|
|
14858
15392
|
}
|
|
14859
15393
|
return;
|
|
14860
15394
|
}
|
|
14861
|
-
switch (
|
|
15395
|
+
switch (columnSorting.order) {
|
|
14862
15396
|
case 'asc':
|
|
14863
15397
|
el.classList.add(sortedAscClassName);
|
|
14864
15398
|
el.classList.remove(sortedDescClassName);
|
|
@@ -14871,6 +15405,12 @@ class ColumnSorting {
|
|
|
14871
15405
|
break;
|
|
14872
15406
|
}
|
|
14873
15407
|
}
|
|
15408
|
+
/**
|
|
15409
|
+
* Refreshes the sorting-related header attributes and classes.
|
|
15410
|
+
*/
|
|
15411
|
+
refreshHeaderAttributes() {
|
|
15412
|
+
this.addHeaderElementAttributes();
|
|
15413
|
+
}
|
|
14874
15414
|
/**
|
|
14875
15415
|
* Updates the column options with the new sorting state.
|
|
14876
15416
|
*
|
|
@@ -14878,12 +15418,24 @@ class ColumnSorting {
|
|
|
14878
15418
|
* The column to update.
|
|
14879
15419
|
*/
|
|
14880
15420
|
updateColumnOptions(col) {
|
|
14881
|
-
const
|
|
14882
|
-
|
|
14883
|
-
|
|
15421
|
+
const sortings = col.viewport.grid.querying.sorting.currentSortings || [];
|
|
15422
|
+
const sortingIndex = sortings.findIndex((sorting) => sorting.columnId === col.id);
|
|
15423
|
+
if (sortingIndex !== -1 && sortings[sortingIndex].order) {
|
|
15424
|
+
const sorting = sortings[sortingIndex];
|
|
15425
|
+
const sortingOptions = {
|
|
15426
|
+
order: sorting.order
|
|
15427
|
+
};
|
|
15428
|
+
if (sortings.length > 1) {
|
|
15429
|
+
sortingOptions.priority = sortingIndex + 1;
|
|
15430
|
+
}
|
|
15431
|
+
col.setOptions({ sorting: sortingOptions });
|
|
15432
|
+
if (sortings.length < 2) {
|
|
15433
|
+
delete col.options.sorting?.priority;
|
|
15434
|
+
}
|
|
14884
15435
|
}
|
|
14885
15436
|
else {
|
|
14886
15437
|
delete col.options.sorting?.order;
|
|
15438
|
+
delete col.options.sorting?.priority;
|
|
14887
15439
|
if (col.options.sorting &&
|
|
14888
15440
|
Object.keys(col.options.sorting).length < 1) {
|
|
14889
15441
|
delete col.options.sorting;
|
|
@@ -14897,8 +15449,11 @@ class ColumnSorting {
|
|
|
14897
15449
|
* @param order
|
|
14898
15450
|
* The order of sorting. It can be `'asc'`, `'desc'` or `null` if the
|
|
14899
15451
|
* sorting should be disabled.
|
|
15452
|
+
*
|
|
15453
|
+
* @param additive
|
|
15454
|
+
* Whether to add this sort to existing sorts or replace them.
|
|
14900
15455
|
*/
|
|
14901
|
-
async setOrder(order) {
|
|
15456
|
+
async setOrder(order, additive = false) {
|
|
14902
15457
|
const viewport = this.column.viewport;
|
|
14903
15458
|
// Do not call sorting when cell is currently edited and validated.
|
|
14904
15459
|
if (viewport.validator?.errorCell) {
|
|
@@ -14913,11 +15468,40 @@ class ColumnSorting {
|
|
|
14913
15468
|
order
|
|
14914
15469
|
});
|
|
14915
15470
|
});
|
|
14916
|
-
|
|
15471
|
+
if (additive) {
|
|
15472
|
+
const baseSortings = (sortingController.currentSortings ||
|
|
15473
|
+
(sortingController.currentSorting?.columnId &&
|
|
15474
|
+
sortingController.currentSorting.order ?
|
|
15475
|
+
[sortingController.currentSorting] :
|
|
15476
|
+
[])).filter((sorting) => !!(sorting.columnId && sorting.order));
|
|
15477
|
+
const sortings = baseSortings.slice();
|
|
15478
|
+
const index = sortings.findIndex((sorting) => sorting.columnId === this.column.id);
|
|
15479
|
+
if (!order) {
|
|
15480
|
+
if (index !== -1) {
|
|
15481
|
+
sortings.splice(index, 1);
|
|
15482
|
+
}
|
|
15483
|
+
}
|
|
15484
|
+
else {
|
|
15485
|
+
const sorting = {
|
|
15486
|
+
columnId: this.column.id,
|
|
15487
|
+
order
|
|
15488
|
+
};
|
|
15489
|
+
if (index !== -1) {
|
|
15490
|
+
sortings[index] = sorting;
|
|
15491
|
+
}
|
|
15492
|
+
else {
|
|
15493
|
+
sortings.push(sorting);
|
|
15494
|
+
}
|
|
15495
|
+
}
|
|
15496
|
+
sortingController.setSorting(sortings);
|
|
15497
|
+
}
|
|
15498
|
+
else {
|
|
15499
|
+
sortingController.setSorting(order, this.column.id);
|
|
15500
|
+
}
|
|
14917
15501
|
await viewport.updateRows();
|
|
14918
15502
|
for (const col of viewport.columns) {
|
|
14919
15503
|
this.updateColumnOptions(col);
|
|
14920
|
-
col.sorting?.
|
|
15504
|
+
col.sorting?.refreshHeaderAttributes();
|
|
14921
15505
|
}
|
|
14922
15506
|
a11y?.userSortedColumn(order);
|
|
14923
15507
|
[this.column, viewport.grid].forEach((source) => {
|
|
@@ -14940,11 +15524,11 @@ class ColumnSorting {
|
|
|
14940
15524
|
*
|
|
14941
15525
|
* Grid Svg Icons Registry
|
|
14942
15526
|
*
|
|
14943
|
-
* (c) 2020-
|
|
15527
|
+
* (c) 2020-2026 Highsoft AS
|
|
14944
15528
|
*
|
|
14945
|
-
*
|
|
15529
|
+
* A commercial license may be required depending on use.
|
|
15530
|
+
* See www.highcharts.com/license
|
|
14946
15531
|
*
|
|
14947
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
14948
15532
|
*
|
|
14949
15533
|
* Authors:
|
|
14950
15534
|
* - Mikkel Espolin Birkeland
|
|
@@ -15091,11 +15675,11 @@ function createGridIcon(name, className = Grid_Core_Globals.getClassName('icon')
|
|
|
15091
15675
|
*
|
|
15092
15676
|
* Grid Toolbar Button class
|
|
15093
15677
|
*
|
|
15094
|
-
* (c) 2020-
|
|
15678
|
+
* (c) 2020-2026 Highsoft AS
|
|
15095
15679
|
*
|
|
15096
|
-
*
|
|
15680
|
+
* A commercial license may be required depending on use.
|
|
15681
|
+
* See www.highcharts.com/license
|
|
15097
15682
|
*
|
|
15098
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15099
15683
|
*
|
|
15100
15684
|
* Authors:
|
|
15101
15685
|
* - Dawid Dragula
|
|
@@ -15285,11 +15869,11 @@ class ToolbarButton {
|
|
|
15285
15869
|
*
|
|
15286
15870
|
* Grid Header Cell State Helpers namespace
|
|
15287
15871
|
*
|
|
15288
|
-
* (c) 2020-
|
|
15872
|
+
* (c) 2020-2026 Highsoft AS
|
|
15289
15873
|
*
|
|
15290
|
-
*
|
|
15874
|
+
* A commercial license may be required depending on use.
|
|
15875
|
+
* See www.highcharts.com/license
|
|
15291
15876
|
*
|
|
15292
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15293
15877
|
*
|
|
15294
15878
|
* Authors:
|
|
15295
15879
|
* - Dawid Dragula
|
|
@@ -15327,13 +15911,17 @@ function isFiltered(column) {
|
|
|
15327
15911
|
* only if the column is sorted in the provided order.
|
|
15328
15912
|
*/
|
|
15329
15913
|
function isSorted(column, order) {
|
|
15330
|
-
const { currentSorting } = column.viewport.grid.querying.sorting || {};
|
|
15331
|
-
|
|
15914
|
+
const { currentSorting, currentSortings } = column.viewport.grid.querying.sorting || {};
|
|
15915
|
+
const columnSorting = (currentSortings?.find((sorting) => sorting.columnId === column.id) ||
|
|
15916
|
+
(currentSorting?.columnId === column.id ?
|
|
15917
|
+
currentSorting :
|
|
15918
|
+
void 0));
|
|
15919
|
+
if (!columnSorting?.order) {
|
|
15332
15920
|
return false;
|
|
15333
15921
|
}
|
|
15334
15922
|
return order ?
|
|
15335
|
-
|
|
15336
|
-
!!
|
|
15923
|
+
columnSorting.order === order :
|
|
15924
|
+
!!columnSorting.order;
|
|
15337
15925
|
}
|
|
15338
15926
|
/* *
|
|
15339
15927
|
*
|
|
@@ -15350,11 +15938,11 @@ function isSorted(column, order) {
|
|
|
15350
15938
|
*
|
|
15351
15939
|
* Grid Sort Toolbar Button class
|
|
15352
15940
|
*
|
|
15353
|
-
* (c) 2020-
|
|
15941
|
+
* (c) 2020-2026 Highsoft AS
|
|
15354
15942
|
*
|
|
15355
|
-
*
|
|
15943
|
+
* A commercial license may be required depending on use.
|
|
15944
|
+
* See www.highcharts.com/license
|
|
15356
15945
|
*
|
|
15357
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15358
15946
|
*
|
|
15359
15947
|
* Authors:
|
|
15360
15948
|
* - Dawid Dragula
|
|
@@ -15364,6 +15952,9 @@ function isSorted(column, order) {
|
|
|
15364
15952
|
|
|
15365
15953
|
|
|
15366
15954
|
|
|
15955
|
+
|
|
15956
|
+
|
|
15957
|
+
const { formatText: SortToolbarButton_formatText } = GridUtils;
|
|
15367
15958
|
const { addEvent: SortToolbarButton_addEvent } = Core_Utilities;
|
|
15368
15959
|
/* *
|
|
15369
15960
|
*
|
|
@@ -15371,6 +15962,48 @@ const { addEvent: SortToolbarButton_addEvent } = Core_Utilities;
|
|
|
15371
15962
|
*
|
|
15372
15963
|
* */
|
|
15373
15964
|
class SortToolbarButton extends UI_ToolbarButton {
|
|
15965
|
+
getColumnLabel() {
|
|
15966
|
+
const column = this.toolbar?.column;
|
|
15967
|
+
const label = (column?.header?.headerContent?.textContent ||
|
|
15968
|
+
column?.header?.value ||
|
|
15969
|
+
column?.id ||
|
|
15970
|
+
'').trim();
|
|
15971
|
+
return label || column?.id || '';
|
|
15972
|
+
}
|
|
15973
|
+
updateA11yLabel(order, priority) {
|
|
15974
|
+
const button = this.wrapper?.querySelector('button');
|
|
15975
|
+
if (!button) {
|
|
15976
|
+
return;
|
|
15977
|
+
}
|
|
15978
|
+
const column = this.toolbar?.column;
|
|
15979
|
+
const lang = column?.viewport.grid.options?.lang;
|
|
15980
|
+
const sortingLang = lang?.accessibility?.sorting;
|
|
15981
|
+
const announcements = sortingLang?.announcements;
|
|
15982
|
+
const columnLabel = this.getColumnLabel();
|
|
15983
|
+
const labelParts = [];
|
|
15984
|
+
if (columnLabel) {
|
|
15985
|
+
labelParts.push(columnLabel);
|
|
15986
|
+
}
|
|
15987
|
+
let stateLabel;
|
|
15988
|
+
if (order === 'asc') {
|
|
15989
|
+
stateLabel = announcements?.ascending;
|
|
15990
|
+
}
|
|
15991
|
+
else if (order === 'desc') {
|
|
15992
|
+
stateLabel = announcements?.descending;
|
|
15993
|
+
}
|
|
15994
|
+
else {
|
|
15995
|
+
stateLabel = announcements?.none;
|
|
15996
|
+
}
|
|
15997
|
+
if (stateLabel) {
|
|
15998
|
+
labelParts.push(stateLabel);
|
|
15999
|
+
}
|
|
16000
|
+
if (priority) {
|
|
16001
|
+
labelParts.push(SortToolbarButton_formatText(sortingLang?.priority ?? 'Priority {priority}.', { priority: String(priority) }));
|
|
16002
|
+
}
|
|
16003
|
+
if (labelParts.length) {
|
|
16004
|
+
button.setAttribute('aria-label', labelParts.join(' '));
|
|
16005
|
+
}
|
|
16006
|
+
}
|
|
15374
16007
|
/* *
|
|
15375
16008
|
*
|
|
15376
16009
|
* Constructor
|
|
@@ -15392,21 +16025,56 @@ class SortToolbarButton extends UI_ToolbarButton {
|
|
|
15392
16025
|
* */
|
|
15393
16026
|
clickHandler(event) {
|
|
15394
16027
|
super.clickHandler(event);
|
|
15395
|
-
this.toolbar?.column.sorting?.toggle();
|
|
16028
|
+
this.toolbar?.column.sorting?.toggle(event);
|
|
16029
|
+
}
|
|
16030
|
+
renderSortPriorityIndicator(priority) {
|
|
16031
|
+
const wrapper = this.wrapper;
|
|
16032
|
+
if (!wrapper) {
|
|
16033
|
+
return;
|
|
16034
|
+
}
|
|
16035
|
+
const button = wrapper.querySelector('button');
|
|
16036
|
+
if (!button) {
|
|
16037
|
+
return;
|
|
16038
|
+
}
|
|
16039
|
+
if (!priority) {
|
|
16040
|
+
this.sortPriorityIndicator?.remove();
|
|
16041
|
+
delete this.sortPriorityIndicator;
|
|
16042
|
+
return;
|
|
16043
|
+
}
|
|
16044
|
+
if (!this.sortPriorityIndicator) {
|
|
16045
|
+
this.sortPriorityIndicator = document.createElement('span');
|
|
16046
|
+
this.sortPriorityIndicator.className = Grid_Core_Globals.getClassName('sortPriorityIndicator');
|
|
16047
|
+
}
|
|
16048
|
+
// Ensure the indicator is rendered to the right of the icon.
|
|
16049
|
+
button.appendChild(this.sortPriorityIndicator);
|
|
16050
|
+
this.sortPriorityIndicator.textContent = String(priority);
|
|
15396
16051
|
}
|
|
15397
16052
|
refreshState() {
|
|
15398
16053
|
const column = this.toolbar?.column;
|
|
15399
16054
|
if (!column) {
|
|
15400
16055
|
return;
|
|
15401
16056
|
}
|
|
15402
|
-
|
|
16057
|
+
const { currentSortings, currentSorting } = column.viewport.grid.querying.sorting;
|
|
16058
|
+
const sortings = currentSortings || [];
|
|
16059
|
+
const columnSorting = (sortings.find((sorting) => sorting.columnId === column.id) ||
|
|
16060
|
+
(currentSorting?.columnId === column.id ?
|
|
16061
|
+
currentSorting :
|
|
16062
|
+
void 0));
|
|
16063
|
+
if (!StateHelpers.isSorted(column) || !columnSorting?.order) {
|
|
15403
16064
|
this.setActive(false);
|
|
15404
16065
|
this.setIcon('upDownArrows');
|
|
16066
|
+
this.renderSortPriorityIndicator();
|
|
16067
|
+
this.updateA11yLabel(null);
|
|
15405
16068
|
return;
|
|
15406
16069
|
}
|
|
15407
|
-
const { currentSorting } = column.viewport.grid.querying.sorting;
|
|
15408
16070
|
this.setActive(true);
|
|
15409
|
-
this.setIcon(
|
|
16071
|
+
this.setIcon(columnSorting.order === 'asc' ? 'sortAsc' : 'sortDesc');
|
|
16072
|
+
const sortIndex = sortings.findIndex((sorting) => sorting.columnId === column.id);
|
|
16073
|
+
const priority = (sortings.length > 1 && sortIndex !== -1 ?
|
|
16074
|
+
sortIndex + 1 :
|
|
16075
|
+
void 0);
|
|
16076
|
+
this.renderSortPriorityIndicator(priority);
|
|
16077
|
+
this.updateA11yLabel(columnSorting.order, priority);
|
|
15410
16078
|
}
|
|
15411
16079
|
addEventListeners() {
|
|
15412
16080
|
super.addEventListeners();
|
|
@@ -15417,8 +16085,11 @@ class SortToolbarButton extends UI_ToolbarButton {
|
|
|
15417
16085
|
// If this grid is currently sorted, update the state
|
|
15418
16086
|
this.eventListenerDestroyers.push(SortToolbarButton_addEvent(column.viewport.grid, 'afterSort', () => this.refreshState()));
|
|
15419
16087
|
}
|
|
15420
|
-
|
|
15421
|
-
|
|
16088
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16089
|
+
renderActiveIndicator(render) {
|
|
16090
|
+
// Sorting uses directional icons + priority indicators
|
|
16091
|
+
// (for multi-sort), not the generic active dot indicator
|
|
16092
|
+
// (reserved for filtering).
|
|
15422
16093
|
}
|
|
15423
16094
|
}
|
|
15424
16095
|
/* *
|
|
@@ -15433,11 +16104,11 @@ class SortToolbarButton extends UI_ToolbarButton {
|
|
|
15433
16104
|
*
|
|
15434
16105
|
* Grid Popup abstract class
|
|
15435
16106
|
*
|
|
15436
|
-
* (c) 2020-
|
|
16107
|
+
* (c) 2020-2026 Highsoft AS
|
|
15437
16108
|
*
|
|
15438
|
-
*
|
|
16109
|
+
* A commercial license may be required depending on use.
|
|
16110
|
+
* See www.highcharts.com/license
|
|
15439
16111
|
*
|
|
15440
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15441
16112
|
*
|
|
15442
16113
|
* Authors:
|
|
15443
16114
|
* - Dawid Dragula
|
|
@@ -15707,11 +16378,11 @@ class Popup {
|
|
|
15707
16378
|
*
|
|
15708
16379
|
* Grid Filter Popup class
|
|
15709
16380
|
*
|
|
15710
|
-
* (c) 2020-
|
|
16381
|
+
* (c) 2020-2026 Highsoft AS
|
|
15711
16382
|
*
|
|
15712
|
-
*
|
|
16383
|
+
* A commercial license may be required depending on use.
|
|
16384
|
+
* See www.highcharts.com/license
|
|
15713
16385
|
*
|
|
15714
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15715
16386
|
*
|
|
15716
16387
|
* Authors:
|
|
15717
16388
|
* - Dawid Dragula
|
|
@@ -15786,11 +16457,11 @@ class FilterPopup extends UI_Popup {
|
|
|
15786
16457
|
*
|
|
15787
16458
|
* Grid Filter Toolbar Button class
|
|
15788
16459
|
*
|
|
15789
|
-
* (c) 2020-
|
|
16460
|
+
* (c) 2020-2026 Highsoft AS
|
|
15790
16461
|
*
|
|
15791
|
-
*
|
|
16462
|
+
* A commercial license may be required depending on use.
|
|
16463
|
+
* See www.highcharts.com/license
|
|
15792
16464
|
*
|
|
15793
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15794
16465
|
*
|
|
15795
16466
|
* Authors:
|
|
15796
16467
|
* - Dawid Dragula
|
|
@@ -15869,11 +16540,11 @@ class FilterToolbarButton extends UI_ToolbarButton {
|
|
|
15869
16540
|
*
|
|
15870
16541
|
* Grid Context Menu abstract class
|
|
15871
16542
|
*
|
|
15872
|
-
* (c) 2020-
|
|
16543
|
+
* (c) 2020-2026 Highsoft AS
|
|
15873
16544
|
*
|
|
15874
|
-
*
|
|
16545
|
+
* A commercial license may be required depending on use.
|
|
16546
|
+
* See www.highcharts.com/license
|
|
15875
16547
|
*
|
|
15876
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
15877
16548
|
*
|
|
15878
16549
|
* Authors:
|
|
15879
16550
|
* - Dawid Dragula
|
|
@@ -16003,11 +16674,11 @@ class ContextMenu extends UI_Popup {
|
|
|
16003
16674
|
*
|
|
16004
16675
|
* Grid Context Menu Button class
|
|
16005
16676
|
*
|
|
16006
|
-
* (c) 2020-
|
|
16677
|
+
* (c) 2020-2026 Highsoft AS
|
|
16007
16678
|
*
|
|
16008
|
-
*
|
|
16679
|
+
* A commercial license may be required depending on use.
|
|
16680
|
+
* See www.highcharts.com/license
|
|
16009
16681
|
*
|
|
16010
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16011
16682
|
*
|
|
16012
16683
|
* Authors:
|
|
16013
16684
|
* - Dawid Dragula
|
|
@@ -16188,11 +16859,11 @@ class ContextMenuButton {
|
|
|
16188
16859
|
*
|
|
16189
16860
|
* Grid Filter Context Menu Button class
|
|
16190
16861
|
*
|
|
16191
|
-
* (c) 2020-
|
|
16862
|
+
* (c) 2020-2026 Highsoft AS
|
|
16192
16863
|
*
|
|
16193
|
-
*
|
|
16864
|
+
* A commercial license may be required depending on use.
|
|
16865
|
+
* See www.highcharts.com/license
|
|
16194
16866
|
*
|
|
16195
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16196
16867
|
*
|
|
16197
16868
|
* Authors:
|
|
16198
16869
|
* - Dawid Dragula
|
|
@@ -16269,11 +16940,11 @@ class FilterMenuButton_FilterToolbarButton extends UI_ContextMenuButton {
|
|
|
16269
16940
|
*
|
|
16270
16941
|
* Grid Sort Context Menu Button class
|
|
16271
16942
|
*
|
|
16272
|
-
* (c) 2020-
|
|
16943
|
+
* (c) 2020-2026 Highsoft AS
|
|
16273
16944
|
*
|
|
16274
|
-
*
|
|
16945
|
+
* A commercial license may be required depending on use.
|
|
16946
|
+
* See www.highcharts.com/license
|
|
16275
16947
|
*
|
|
16276
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16277
16948
|
*
|
|
16278
16949
|
* Authors:
|
|
16279
16950
|
* - Dawid Dragula
|
|
@@ -16298,7 +16969,8 @@ class SortMenuButton extends UI_ContextMenuButton {
|
|
|
16298
16969
|
constructor(langOptions, direction) {
|
|
16299
16970
|
super({ icon: direction === 'asc' ? 'sortAsc' : 'sortDesc' });
|
|
16300
16971
|
this.direction = direction;
|
|
16301
|
-
this.
|
|
16972
|
+
this.baseLabel = langOptions[direction === 'asc' ? 'sortAscending' : 'sortDescending'] || '';
|
|
16973
|
+
this.options.label = this.baseLabel;
|
|
16302
16974
|
}
|
|
16303
16975
|
/* *
|
|
16304
16976
|
*
|
|
@@ -16310,7 +16982,35 @@ class SortMenuButton extends UI_ContextMenuButton {
|
|
|
16310
16982
|
if (!column) {
|
|
16311
16983
|
return;
|
|
16312
16984
|
}
|
|
16313
|
-
|
|
16985
|
+
const isSorted = StateHelpers.isSorted(column, this.direction);
|
|
16986
|
+
this.setActive(isSorted);
|
|
16987
|
+
// Update label with priority if multi-column sorting is active
|
|
16988
|
+
this.updateLabelWithPriority(isSorted ? column : void 0);
|
|
16989
|
+
}
|
|
16990
|
+
/**
|
|
16991
|
+
* Updates the label to include the sort priority when multi-column
|
|
16992
|
+
* sorting is active.
|
|
16993
|
+
*
|
|
16994
|
+
* @param column
|
|
16995
|
+
* The column to get the priority from, or undefined to reset the label.
|
|
16996
|
+
*/
|
|
16997
|
+
updateLabelWithPriority(column) {
|
|
16998
|
+
if (!column) {
|
|
16999
|
+
this.setLabel(this.baseLabel);
|
|
17000
|
+
return;
|
|
17001
|
+
}
|
|
17002
|
+
const { currentSortings } = column.viewport.grid.querying.sorting;
|
|
17003
|
+
const sortings = currentSortings || [];
|
|
17004
|
+
const sortIndex = sortings.findIndex((sorting) => sorting.columnId === column.id);
|
|
17005
|
+
const priority = (sortings.length > 1 && sortIndex !== -1 ?
|
|
17006
|
+
sortIndex + 1 :
|
|
17007
|
+
void 0);
|
|
17008
|
+
if (priority) {
|
|
17009
|
+
this.setLabel(`${this.baseLabel} (${priority})`);
|
|
17010
|
+
}
|
|
17011
|
+
else {
|
|
17012
|
+
this.setLabel(this.baseLabel);
|
|
17013
|
+
}
|
|
16314
17014
|
}
|
|
16315
17015
|
addEventListeners() {
|
|
16316
17016
|
super.addEventListeners();
|
|
@@ -16327,7 +17027,7 @@ class SortMenuButton extends UI_ContextMenuButton {
|
|
|
16327
17027
|
if (!sorting) {
|
|
16328
17028
|
return;
|
|
16329
17029
|
}
|
|
16330
|
-
void sorting.setOrder(this.isActive ? null : this.direction);
|
|
17030
|
+
void sorting.setOrder(this.isActive ? null : this.direction, !!event?.shiftKey);
|
|
16331
17031
|
}
|
|
16332
17032
|
}
|
|
16333
17033
|
/* *
|
|
@@ -16342,11 +17042,11 @@ class SortMenuButton extends UI_ContextMenuButton {
|
|
|
16342
17042
|
*
|
|
16343
17043
|
* Grid Menu Popup class
|
|
16344
17044
|
*
|
|
16345
|
-
* (c) 2020-
|
|
17045
|
+
* (c) 2020-2026 Highsoft AS
|
|
16346
17046
|
*
|
|
16347
|
-
*
|
|
17047
|
+
* A commercial license may be required depending on use.
|
|
17048
|
+
* See www.highcharts.com/license
|
|
16348
17049
|
*
|
|
16349
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16350
17050
|
*
|
|
16351
17051
|
* Authors:
|
|
16352
17052
|
* - Dawid Dragula
|
|
@@ -16384,7 +17084,8 @@ class MenuPopup extends UI_ContextMenu {
|
|
|
16384
17084
|
const columnOptions = this.button.toolbar?.column.options || {};
|
|
16385
17085
|
const filteringEnabled = (columnOptions.filtering?.enabled &&
|
|
16386
17086
|
!columnOptions.filtering.inline);
|
|
16387
|
-
const sortingEnabled = columnOptions.sorting?.
|
|
17087
|
+
const sortingEnabled = columnOptions.sorting?.enabled ??
|
|
17088
|
+
columnOptions.sorting?.sortable;
|
|
16388
17089
|
this.addHeader(this.button.toolbar?.column.header?.value || '', lang.column);
|
|
16389
17090
|
if (sortingEnabled) {
|
|
16390
17091
|
new MenuButtons_SortMenuButton(lang, 'desc').add(this);
|
|
@@ -16410,11 +17111,11 @@ class MenuPopup extends UI_ContextMenu {
|
|
|
16410
17111
|
*
|
|
16411
17112
|
* Grid Menu Toolbar Button class
|
|
16412
17113
|
*
|
|
16413
|
-
* (c) 2020-
|
|
17114
|
+
* (c) 2020-2026 Highsoft AS
|
|
16414
17115
|
*
|
|
16415
|
-
*
|
|
17116
|
+
* A commercial license may be required depending on use.
|
|
17117
|
+
* See www.highcharts.com/license
|
|
16416
17118
|
*
|
|
16417
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16418
17119
|
*
|
|
16419
17120
|
* Authors:
|
|
16420
17121
|
* - Dawid Dragula
|
|
@@ -16492,11 +17193,11 @@ class MenuToolbarButton extends UI_ToolbarButton {
|
|
|
16492
17193
|
*
|
|
16493
17194
|
* Grid Header Cell Toolbar class
|
|
16494
17195
|
*
|
|
16495
|
-
* (c) 2020-
|
|
17196
|
+
* (c) 2020-2026 Highsoft AS
|
|
16496
17197
|
*
|
|
16497
|
-
*
|
|
17198
|
+
* A commercial license may be required depending on use.
|
|
17199
|
+
* See www.highcharts.com/license
|
|
16498
17200
|
*
|
|
16499
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16500
17201
|
*
|
|
16501
17202
|
* Authors:
|
|
16502
17203
|
* - Dawid Dragula
|
|
@@ -16541,7 +17242,9 @@ class HeaderCellToolbar {
|
|
|
16541
17242
|
*/
|
|
16542
17243
|
renderFull() {
|
|
16543
17244
|
const columnOptions = this.column.options;
|
|
16544
|
-
|
|
17245
|
+
const sortingEnabled = columnOptions.sorting?.enabled ??
|
|
17246
|
+
columnOptions.sorting?.sortable;
|
|
17247
|
+
if (sortingEnabled) {
|
|
16545
17248
|
new ToolbarButtons_SortToolbarButton().add(this);
|
|
16546
17249
|
}
|
|
16547
17250
|
if (columnOptions.filtering?.enabled &&
|
|
@@ -16551,7 +17254,9 @@ class HeaderCellToolbar {
|
|
|
16551
17254
|
}
|
|
16552
17255
|
renderMinimized() {
|
|
16553
17256
|
const columnOptions = this.column.options;
|
|
16554
|
-
|
|
17257
|
+
const sortingEnabled = columnOptions.sorting?.enabled ??
|
|
17258
|
+
columnOptions.sorting?.sortable;
|
|
17259
|
+
if (sortingEnabled || (columnOptions.filtering?.enabled &&
|
|
16555
17260
|
!columnOptions.filtering.inline)) {
|
|
16556
17261
|
new ToolbarButtons_MenuToolbarButton().add(this);
|
|
16557
17262
|
}
|
|
@@ -16617,6 +17322,11 @@ class HeaderCellToolbar {
|
|
|
16617
17322
|
}
|
|
16618
17323
|
}
|
|
16619
17324
|
if (!shouldBeMinimized) {
|
|
17325
|
+
// Ensure we reset any "minimized only" header state. This can
|
|
17326
|
+
// happen if the grid was initialized in a hidden container
|
|
17327
|
+
// (e.g. display:none) where widths measure as 0. (#24002)
|
|
17328
|
+
this.isMenuCentered = void 0;
|
|
17329
|
+
this.column.header?.container?.classList.remove(Grid_Core_Globals.getClassName('noWidth'));
|
|
16620
17330
|
return;
|
|
16621
17331
|
}
|
|
16622
17332
|
const parent = this.column.header?.htmlElement;
|
|
@@ -16691,11 +17401,11 @@ HeaderCellToolbar.MINIMIZED_COLUMN_WIDTH = 120;
|
|
|
16691
17401
|
*
|
|
16692
17402
|
* Grid HeaderCell class
|
|
16693
17403
|
*
|
|
16694
|
-
* (c) 2020-
|
|
17404
|
+
* (c) 2020-2026 Highsoft AS
|
|
16695
17405
|
*
|
|
16696
|
-
*
|
|
17406
|
+
* A commercial license may be required depending on use.
|
|
17407
|
+
* See www.highcharts.com/license
|
|
16697
17408
|
*
|
|
16698
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16699
17409
|
*
|
|
16700
17410
|
* Authors:
|
|
16701
17411
|
* - Dawid Dragula
|
|
@@ -16795,8 +17505,8 @@ class HeaderCell extends Table_Cell {
|
|
|
16795
17505
|
const { column } = this;
|
|
16796
17506
|
const options = HeaderCell_createOptionsProxy(this.superColumnOptions, column?.options);
|
|
16797
17507
|
const headerCellOptions = options.header || {};
|
|
16798
|
-
if (headerCellOptions.formatter) {
|
|
16799
|
-
this.value = headerCellOptions.formatter.call(
|
|
17508
|
+
if (column && headerCellOptions.formatter) {
|
|
17509
|
+
this.value = headerCellOptions.formatter.call(column).toString();
|
|
16800
17510
|
}
|
|
16801
17511
|
else if (HeaderCell_isString(headerCellOptions.format)) {
|
|
16802
17512
|
this.value = column ?
|
|
@@ -16873,8 +17583,9 @@ class HeaderCell extends Table_Cell {
|
|
|
16873
17583
|
e.target !== column.header?.headerContent) || column.viewport.columnsResizer?.isResizing) {
|
|
16874
17584
|
return;
|
|
16875
17585
|
}
|
|
16876
|
-
if (column.options.sorting?.
|
|
16877
|
-
column.sorting?.
|
|
17586
|
+
if ((column.options.sorting?.enabled ??
|
|
17587
|
+
column.options.sorting?.sortable)) {
|
|
17588
|
+
column.sorting?.toggle(e);
|
|
16878
17589
|
}
|
|
16879
17590
|
HeaderCell_fireEvent(this, 'click', {
|
|
16880
17591
|
originalEvent: e,
|
|
@@ -16917,11 +17628,11 @@ class HeaderCell extends Table_Cell {
|
|
|
16917
17628
|
*
|
|
16918
17629
|
* Grid HeaderRow class
|
|
16919
17630
|
*
|
|
16920
|
-
* (c) 2020-
|
|
17631
|
+
* (c) 2020-2026 Highsoft AS
|
|
16921
17632
|
*
|
|
16922
|
-
*
|
|
17633
|
+
* A commercial license may be required depending on use.
|
|
17634
|
+
* See www.highcharts.com/license
|
|
16923
17635
|
*
|
|
16924
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
16925
17636
|
*
|
|
16926
17637
|
* Authors:
|
|
16927
17638
|
* - Dawid Dragula
|
|
@@ -17101,11 +17812,11 @@ class HeaderRow extends Table_Row {
|
|
|
17101
17812
|
*
|
|
17102
17813
|
* Grid Filter Cell class
|
|
17103
17814
|
*
|
|
17104
|
-
* (c) 2020-
|
|
17815
|
+
* (c) 2020-2026 Highsoft AS
|
|
17105
17816
|
*
|
|
17106
|
-
*
|
|
17817
|
+
* A commercial license may be required depending on use.
|
|
17818
|
+
* See www.highcharts.com/license
|
|
17107
17819
|
*
|
|
17108
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17109
17820
|
*
|
|
17110
17821
|
* Authors:
|
|
17111
17822
|
* - Dawid Dragula
|
|
@@ -17189,11 +17900,11 @@ class FilterCell extends Header_HeaderCell {
|
|
|
17189
17900
|
*
|
|
17190
17901
|
* Grid FilteringRow class
|
|
17191
17902
|
*
|
|
17192
|
-
* (c) 2020-
|
|
17903
|
+
* (c) 2020-2026 Highsoft AS
|
|
17193
17904
|
*
|
|
17194
|
-
*
|
|
17905
|
+
* A commercial license may be required depending on use.
|
|
17906
|
+
* See www.highcharts.com/license
|
|
17195
17907
|
*
|
|
17196
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17197
17908
|
*
|
|
17198
17909
|
* Authors:
|
|
17199
17910
|
* - Dawid Dragula
|
|
@@ -17271,11 +17982,11 @@ class FilterRow extends Header_HeaderRow {
|
|
|
17271
17982
|
*
|
|
17272
17983
|
* Grid TableHeader class
|
|
17273
17984
|
*
|
|
17274
|
-
* (c) 2020-
|
|
17985
|
+
* (c) 2020-2026 Highsoft AS
|
|
17275
17986
|
*
|
|
17276
|
-
*
|
|
17987
|
+
* A commercial license may be required depending on use.
|
|
17988
|
+
* See www.highcharts.com/license
|
|
17277
17989
|
*
|
|
17278
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17279
17990
|
*
|
|
17280
17991
|
* Authors:
|
|
17281
17992
|
* - Dawid Dragula
|
|
@@ -17432,11 +18143,11 @@ class TableHeader {
|
|
|
17432
18143
|
*
|
|
17433
18144
|
* Grid class
|
|
17434
18145
|
*
|
|
17435
|
-
* (c) 2020-
|
|
18146
|
+
* (c) 2020-2026 Highsoft AS
|
|
17436
18147
|
*
|
|
17437
|
-
*
|
|
18148
|
+
* A commercial license may be required depending on use.
|
|
18149
|
+
* See www.highcharts.com/license
|
|
17438
18150
|
*
|
|
17439
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17440
18151
|
*
|
|
17441
18152
|
* Authors:
|
|
17442
18153
|
* - Dawid Dragula
|
|
@@ -17563,12 +18274,19 @@ class TableCell extends Table_Cell {
|
|
|
17563
18274
|
await vp.updateRows();
|
|
17564
18275
|
return true;
|
|
17565
18276
|
}
|
|
18277
|
+
/**
|
|
18278
|
+
* Initialize event listeners for table body cells.
|
|
18279
|
+
*
|
|
18280
|
+
* Most events (click, dblclick, keydown, mousedown, mouseover, mouseout)
|
|
18281
|
+
* are delegated to Table for better performance with virtualization.
|
|
18282
|
+
* Only focus/blur remain on individual cells for focus management.
|
|
18283
|
+
*/
|
|
17566
18284
|
initEvents() {
|
|
17567
|
-
this.cellEvents.push(['
|
|
17568
|
-
this.cellEvents.push(['
|
|
17569
|
-
|
|
17570
|
-
|
|
17571
|
-
|
|
18285
|
+
this.cellEvents.push(['blur', () => this.onBlur()]);
|
|
18286
|
+
this.cellEvents.push(['focus', () => this.onFocus()]);
|
|
18287
|
+
this.cellEvents.forEach((pair) => {
|
|
18288
|
+
this.htmlElement.addEventListener(pair[0], pair[1]);
|
|
18289
|
+
});
|
|
17572
18290
|
}
|
|
17573
18291
|
/**
|
|
17574
18292
|
* Handles the focus event on the cell.
|
|
@@ -17662,11 +18380,11 @@ class TableCell extends Table_Cell {
|
|
|
17662
18380
|
*
|
|
17663
18381
|
* Grid TableRow class
|
|
17664
18382
|
*
|
|
17665
|
-
* (c) 2020-
|
|
18383
|
+
* (c) 2020-2026 Highsoft AS
|
|
17666
18384
|
*
|
|
17667
|
-
*
|
|
18385
|
+
* A commercial license may be required depending on use.
|
|
18386
|
+
* See www.highcharts.com/license
|
|
17668
18387
|
*
|
|
17669
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17670
18388
|
*
|
|
17671
18389
|
* Authors:
|
|
17672
18390
|
* - Dawid Dragula
|
|
@@ -17739,18 +18457,47 @@ class TableRow extends Table_Row {
|
|
|
17739
18457
|
this.data = data;
|
|
17740
18458
|
}
|
|
17741
18459
|
/**
|
|
17742
|
-
* Updates the row data and its cells with the latest values from the data
|
|
17743
|
-
* table.
|
|
18460
|
+
* Updates the row data and its cells with the latest values from the data
|
|
18461
|
+
* table.
|
|
18462
|
+
*/
|
|
18463
|
+
update() {
|
|
18464
|
+
this.id = this.viewport.dataTable.getOriginalRowIndex(this.index);
|
|
18465
|
+
this.updateRowAttributes();
|
|
18466
|
+
this.loadData();
|
|
18467
|
+
for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
|
|
18468
|
+
const cell = this.cells[i];
|
|
18469
|
+
void cell.setValue();
|
|
18470
|
+
}
|
|
18471
|
+
this.reflow();
|
|
18472
|
+
}
|
|
18473
|
+
/**
|
|
18474
|
+
* Reuses the row instance for a new index.
|
|
18475
|
+
*
|
|
18476
|
+
* @param index
|
|
18477
|
+
* The index of the row in the data table.
|
|
18478
|
+
*
|
|
18479
|
+
* @param doReflow
|
|
18480
|
+
* Whether to reflow the row after updating the cells.
|
|
17744
18481
|
*/
|
|
17745
|
-
|
|
17746
|
-
|
|
18482
|
+
reuse(index, doReflow = true) {
|
|
18483
|
+
if (this.index === index) {
|
|
18484
|
+
this.update();
|
|
18485
|
+
return;
|
|
18486
|
+
}
|
|
18487
|
+
this.index = index;
|
|
18488
|
+
this.id = this.viewport.dataTable.getOriginalRowIndex(index);
|
|
18489
|
+
this.htmlElement.setAttribute('data-row-index', index);
|
|
17747
18490
|
this.updateRowAttributes();
|
|
18491
|
+
this.updateParityClass();
|
|
18492
|
+
this.updateStateClasses();
|
|
17748
18493
|
this.loadData();
|
|
17749
18494
|
for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
|
|
17750
18495
|
const cell = this.cells[i];
|
|
17751
18496
|
void cell.setValue();
|
|
17752
18497
|
}
|
|
17753
|
-
|
|
18498
|
+
if (doReflow) {
|
|
18499
|
+
this.reflow();
|
|
18500
|
+
}
|
|
17754
18501
|
}
|
|
17755
18502
|
/**
|
|
17756
18503
|
* Adds or removes the hovered CSS class to the row element.
|
|
@@ -17787,13 +18534,8 @@ class TableRow extends Table_Row {
|
|
|
17787
18534
|
el.setAttribute('data-row-index', idx);
|
|
17788
18535
|
this.updateRowAttributes();
|
|
17789
18536
|
// Indexing from 0, so rows with even index are odd.
|
|
17790
|
-
|
|
17791
|
-
|
|
17792
|
-
el.classList.add(Grid_Core_Globals.getClassName('hoveredRow'));
|
|
17793
|
-
}
|
|
17794
|
-
if (this.viewport.grid.syncedRowIndex === idx) {
|
|
17795
|
-
el.classList.add(Grid_Core_Globals.getClassName('syncedRow'));
|
|
17796
|
-
}
|
|
18537
|
+
this.updateParityClass();
|
|
18538
|
+
this.updateStateClasses();
|
|
17797
18539
|
}
|
|
17798
18540
|
/**
|
|
17799
18541
|
* Sets the row HTML element attributes that are updateable in the row
|
|
@@ -17811,6 +18553,28 @@ class TableRow extends Table_Row {
|
|
|
17811
18553
|
// Calculate levels of header, 1 to avoid indexing from 0
|
|
17812
18554
|
a11y?.setRowIndex(el, idx + (vp.header?.rows.length ?? 0) + 1);
|
|
17813
18555
|
}
|
|
18556
|
+
/**
|
|
18557
|
+
* Updates the row parity class based on index.
|
|
18558
|
+
*/
|
|
18559
|
+
updateParityClass() {
|
|
18560
|
+
const el = this.htmlElement;
|
|
18561
|
+
el.classList.remove(Grid_Core_Globals.getClassName('rowEven'), Grid_Core_Globals.getClassName('rowOdd'));
|
|
18562
|
+
// Indexing from 0, so rows with even index are odd.
|
|
18563
|
+
el.classList.add(Grid_Core_Globals.getClassName(this.index % 2 ? 'rowEven' : 'rowOdd'));
|
|
18564
|
+
}
|
|
18565
|
+
/**
|
|
18566
|
+
* Updates the hovered and synced classes based on grid state.
|
|
18567
|
+
*/
|
|
18568
|
+
updateStateClasses() {
|
|
18569
|
+
const el = this.htmlElement;
|
|
18570
|
+
el.classList.remove(Grid_Core_Globals.getClassName('hoveredRow'), Grid_Core_Globals.getClassName('syncedRow'));
|
|
18571
|
+
if (this.viewport.grid.hoveredRowIndex === this.index) {
|
|
18572
|
+
el.classList.add(Grid_Core_Globals.getClassName('hoveredRow'));
|
|
18573
|
+
}
|
|
18574
|
+
if (this.viewport.grid.syncedRowIndex === this.index) {
|
|
18575
|
+
el.classList.add(Grid_Core_Globals.getClassName('syncedRow'));
|
|
18576
|
+
}
|
|
18577
|
+
}
|
|
17814
18578
|
/**
|
|
17815
18579
|
* Sets the vertical translation of the row. Used for virtual scrolling.
|
|
17816
18580
|
*
|
|
@@ -17841,11 +18605,11 @@ class TableRow extends Table_Row {
|
|
|
17841
18605
|
*
|
|
17842
18606
|
* Grid Rows Renderer class.
|
|
17843
18607
|
*
|
|
17844
|
-
* (c) 2020-
|
|
18608
|
+
* (c) 2020-2026 Highsoft AS
|
|
17845
18609
|
*
|
|
17846
|
-
*
|
|
18610
|
+
* A commercial license may be required depending on use.
|
|
18611
|
+
* See www.highcharts.com/license
|
|
17847
18612
|
*
|
|
17848
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
17849
18613
|
*
|
|
17850
18614
|
* Authors:
|
|
17851
18615
|
* - Dawid Dragula
|
|
@@ -17884,6 +18648,15 @@ class RowsVirtualizer {
|
|
|
17884
18648
|
* flickering loops when scrolling to the last row.
|
|
17885
18649
|
*/
|
|
17886
18650
|
this.preventScroll = false;
|
|
18651
|
+
/**
|
|
18652
|
+
* Reuse pool for rows that are currently out of viewport.
|
|
18653
|
+
*/
|
|
18654
|
+
this.rowPool = [];
|
|
18655
|
+
/**
|
|
18656
|
+
* Flag indicating if a scroll update is queued for the next animation
|
|
18657
|
+
* frame.
|
|
18658
|
+
*/
|
|
18659
|
+
this.scrollQueued = false;
|
|
17887
18660
|
this.rowSettings =
|
|
17888
18661
|
viewport.grid.options?.rendering?.rows;
|
|
17889
18662
|
this.viewport = viewport;
|
|
@@ -17920,6 +18693,12 @@ class RowsVirtualizer {
|
|
|
17920
18693
|
let rows = this.viewport.rows;
|
|
17921
18694
|
const oldScrollLeft = tbody.scrollLeft;
|
|
17922
18695
|
let oldScrollTop;
|
|
18696
|
+
if (this.rowPool.length) {
|
|
18697
|
+
for (let i = this.rowPool.length - 1; i >= 0; --i) {
|
|
18698
|
+
this.rowPool[i].destroy();
|
|
18699
|
+
}
|
|
18700
|
+
this.rowPool.length = 0;
|
|
18701
|
+
}
|
|
17923
18702
|
if (rows.length) {
|
|
17924
18703
|
oldScrollTop = tbody.scrollTop;
|
|
17925
18704
|
for (let i = 0, iEnd = rows.length; i < iEnd; ++i) {
|
|
@@ -17946,6 +18725,19 @@ class RowsVirtualizer {
|
|
|
17946
18725
|
* is enabled.
|
|
17947
18726
|
*/
|
|
17948
18727
|
scroll() {
|
|
18728
|
+
if (this.scrollQueued) {
|
|
18729
|
+
return;
|
|
18730
|
+
}
|
|
18731
|
+
this.scrollQueued = true;
|
|
18732
|
+
requestAnimationFrame(() => {
|
|
18733
|
+
this.scrollQueued = false;
|
|
18734
|
+
this.applyScroll();
|
|
18735
|
+
});
|
|
18736
|
+
}
|
|
18737
|
+
/**
|
|
18738
|
+
* Applies the scroll logic for virtualized rows.
|
|
18739
|
+
*/
|
|
18740
|
+
applyScroll() {
|
|
17949
18741
|
const target = this.viewport.tbodyElement;
|
|
17950
18742
|
const { defaultRowHeight: rowHeight } = this;
|
|
17951
18743
|
const lastScrollTop = target.scrollTop;
|
|
@@ -18034,36 +18826,70 @@ class RowsVirtualizer {
|
|
|
18034
18826
|
const to = Math.min(rowCursor + rowsPerPage + buffer, rows[rows.length - 1].index - 1);
|
|
18035
18827
|
const alwaysLastRow = rows.pop();
|
|
18036
18828
|
const tempRows = [];
|
|
18037
|
-
|
|
18038
|
-
|
|
18039
|
-
|
|
18040
|
-
|
|
18041
|
-
|
|
18042
|
-
|
|
18829
|
+
const currentFrom = rows[0]?.index;
|
|
18830
|
+
const currentTo = rows[rows.length - 1]?.index;
|
|
18831
|
+
const hasOverlap = (rows.length > 0 &&
|
|
18832
|
+
currentFrom !== void 0 &&
|
|
18833
|
+
currentTo !== void 0 &&
|
|
18834
|
+
!(to < currentFrom || from > currentTo));
|
|
18835
|
+
if (!hasOverlap) {
|
|
18836
|
+
// Remove rows that are out of the range except the last row.
|
|
18837
|
+
for (let i = 0, iEnd = rows.length; i < iEnd; ++i) {
|
|
18838
|
+
const row = rows[i];
|
|
18839
|
+
const rowIndex = row.index;
|
|
18840
|
+
if (rowIndex < from || rowIndex > to) {
|
|
18841
|
+
this.poolRow(row);
|
|
18842
|
+
}
|
|
18843
|
+
else {
|
|
18844
|
+
tempRows.push(row);
|
|
18845
|
+
}
|
|
18043
18846
|
}
|
|
18044
|
-
|
|
18045
|
-
|
|
18847
|
+
rows = tempRows;
|
|
18848
|
+
vp.rows = rows;
|
|
18849
|
+
for (let i = from; i <= to; ++i) {
|
|
18850
|
+
const row = rows[i - (rows[0]?.index || 0)];
|
|
18851
|
+
// Recreate row when it is destroyed and it is in the range.
|
|
18852
|
+
if (!row) {
|
|
18853
|
+
rows.push(this.getOrCreateRow(i));
|
|
18854
|
+
}
|
|
18046
18855
|
}
|
|
18856
|
+
rows.sort((a, b) => a.index - b.index);
|
|
18047
18857
|
}
|
|
18048
|
-
|
|
18049
|
-
|
|
18050
|
-
|
|
18051
|
-
|
|
18052
|
-
|
|
18053
|
-
|
|
18054
|
-
|
|
18055
|
-
rows.
|
|
18056
|
-
|
|
18057
|
-
|
|
18058
|
-
|
|
18858
|
+
else {
|
|
18859
|
+
// Remove rows outside the range from the start.
|
|
18860
|
+
while (rows.length && rows[0].index < from) {
|
|
18861
|
+
this.poolRow(rows.shift());
|
|
18862
|
+
}
|
|
18863
|
+
// Remove rows outside the range from the end.
|
|
18864
|
+
while (rows.length && rows[rows.length - 1].index > to) {
|
|
18865
|
+
this.poolRow(rows.pop());
|
|
18866
|
+
}
|
|
18867
|
+
if (!rows.length) {
|
|
18868
|
+
for (let i = from; i <= to; ++i) {
|
|
18869
|
+
rows.push(this.getOrCreateRow(i));
|
|
18870
|
+
}
|
|
18871
|
+
}
|
|
18872
|
+
else {
|
|
18873
|
+
// Add rows before the current range.
|
|
18874
|
+
for (let i = rows[0].index - 1; i >= from; --i) {
|
|
18875
|
+
rows.unshift(this.getOrCreateRow(i));
|
|
18876
|
+
}
|
|
18877
|
+
// Add rows after the current range.
|
|
18878
|
+
for (let i = rows[rows.length - 1].index + 1; i <= to; ++i) {
|
|
18879
|
+
rows.push(this.getOrCreateRow(i));
|
|
18059
18880
|
}
|
|
18060
18881
|
}
|
|
18882
|
+
vp.rows = rows;
|
|
18061
18883
|
}
|
|
18062
|
-
rows.sort((a, b) => a.index - b.index);
|
|
18063
18884
|
for (let i = 0, iEnd = rows.length; i < iEnd; ++i) {
|
|
18064
|
-
|
|
18065
|
-
|
|
18066
|
-
|
|
18885
|
+
const row = rows[i];
|
|
18886
|
+
if (!row.rendered) {
|
|
18887
|
+
vp.tbodyElement.insertBefore(row.htmlElement, vp.tbodyElement.lastChild);
|
|
18888
|
+
row.render();
|
|
18889
|
+
continue;
|
|
18890
|
+
}
|
|
18891
|
+
if (!row.htmlElement.isConnected) {
|
|
18892
|
+
vp.tbodyElement.insertBefore(row.htmlElement, vp.tbodyElement.lastChild);
|
|
18067
18893
|
}
|
|
18068
18894
|
}
|
|
18069
18895
|
if (alwaysLastRow) {
|
|
@@ -18161,9 +18987,54 @@ class RowsVirtualizer {
|
|
|
18161
18987
|
}
|
|
18162
18988
|
this.adjustRowHeights();
|
|
18163
18989
|
}
|
|
18990
|
+
/**
|
|
18991
|
+
* Gets a row from the pool or creates a new one for the given index.
|
|
18992
|
+
*
|
|
18993
|
+
* @param index
|
|
18994
|
+
* The row index in the data table.
|
|
18995
|
+
*
|
|
18996
|
+
* @returns
|
|
18997
|
+
* A TableRow instance ready for use.
|
|
18998
|
+
*/
|
|
18999
|
+
getOrCreateRow(index) {
|
|
19000
|
+
const vp = this.viewport;
|
|
19001
|
+
const isVirtualization = vp.virtualRows;
|
|
19002
|
+
const pooledRow = this.rowPool.pop();
|
|
19003
|
+
if (pooledRow) {
|
|
19004
|
+
pooledRow.reuse(index, false);
|
|
19005
|
+
if (isVirtualization) {
|
|
19006
|
+
pooledRow.setTranslateY(pooledRow.getDefaultTopOffset());
|
|
19007
|
+
}
|
|
19008
|
+
return pooledRow;
|
|
19009
|
+
}
|
|
19010
|
+
const newRow = new Body_TableRow(vp, index);
|
|
19011
|
+
newRow.rendered = false;
|
|
19012
|
+
if (isVirtualization) {
|
|
19013
|
+
newRow.setTranslateY(newRow.getDefaultTopOffset());
|
|
19014
|
+
}
|
|
19015
|
+
return newRow;
|
|
19016
|
+
}
|
|
19017
|
+
/**
|
|
19018
|
+
* Adds a row to the reuse pool, or destroys it if the pool is full.
|
|
19019
|
+
*
|
|
19020
|
+
* @param row
|
|
19021
|
+
* The row to pool.
|
|
19022
|
+
*/
|
|
19023
|
+
poolRow(row) {
|
|
19024
|
+
row.htmlElement.remove();
|
|
19025
|
+
if (this.rowPool.length < RowsVirtualizer.MAX_POOL_SIZE) {
|
|
19026
|
+
this.rowPool.push(row);
|
|
19027
|
+
}
|
|
19028
|
+
else {
|
|
19029
|
+
row.destroy();
|
|
19030
|
+
}
|
|
19031
|
+
}
|
|
18164
19032
|
/**
|
|
18165
19033
|
* Returns the default height of a row. This method should be called only
|
|
18166
19034
|
* once on initialization.
|
|
19035
|
+
*
|
|
19036
|
+
* @returns
|
|
19037
|
+
* The default height of a row.
|
|
18167
19038
|
*/
|
|
18168
19039
|
getDefaultRowHeight() {
|
|
18169
19040
|
const vp = this.viewport;
|
|
@@ -18177,6 +19048,10 @@ class RowsVirtualizer {
|
|
|
18177
19048
|
return defaultRowHeight;
|
|
18178
19049
|
}
|
|
18179
19050
|
}
|
|
19051
|
+
/**
|
|
19052
|
+
* Maximum number of rows to keep in the reuse pool.
|
|
19053
|
+
*/
|
|
19054
|
+
RowsVirtualizer.MAX_POOL_SIZE = 100;
|
|
18180
19055
|
/* *
|
|
18181
19056
|
*
|
|
18182
19057
|
* Default Export
|
|
@@ -18189,11 +19064,11 @@ class RowsVirtualizer {
|
|
|
18189
19064
|
*
|
|
18190
19065
|
* Grid Columns Resizer class.
|
|
18191
19066
|
*
|
|
18192
|
-
* (c) 2020-
|
|
19067
|
+
* (c) 2020-2026 Highsoft AS
|
|
18193
19068
|
*
|
|
18194
|
-
*
|
|
19069
|
+
* A commercial license may be required depending on use.
|
|
19070
|
+
* See www.highcharts.com/license
|
|
18195
19071
|
*
|
|
18196
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
18197
19072
|
*
|
|
18198
19073
|
* Authors:
|
|
18199
19074
|
* - Dawid Dragula
|
|
@@ -18373,11 +19248,11 @@ class ColumnsResizer {
|
|
|
18373
19248
|
*
|
|
18374
19249
|
* Grid Table Viewport class
|
|
18375
19250
|
*
|
|
18376
|
-
* (c) 2020-
|
|
19251
|
+
* (c) 2020-2026 Highsoft AS
|
|
18377
19252
|
*
|
|
18378
|
-
*
|
|
19253
|
+
* A commercial license may be required depending on use.
|
|
19254
|
+
* See www.highcharts.com/license
|
|
18379
19255
|
*
|
|
18380
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
18381
19256
|
*
|
|
18382
19257
|
* Authors:
|
|
18383
19258
|
* - Dawid Dragula
|
|
@@ -18453,20 +19328,77 @@ class Table {
|
|
|
18453
19328
|
}
|
|
18454
19329
|
this.header?.scrollHorizontally(this.tbodyElement.scrollLeft);
|
|
18455
19330
|
};
|
|
19331
|
+
/**
|
|
19332
|
+
* Delegated click handler for cells.
|
|
19333
|
+
* @param e Mouse event
|
|
19334
|
+
*/
|
|
19335
|
+
this.onCellClick = (e) => {
|
|
19336
|
+
const cell = this.getCellFromElement(e.target);
|
|
19337
|
+
if (cell) {
|
|
19338
|
+
cell
|
|
19339
|
+
.onClick(e);
|
|
19340
|
+
}
|
|
19341
|
+
};
|
|
19342
|
+
/**
|
|
19343
|
+
* Delegated double-click handler for cells.
|
|
19344
|
+
* @param e Mouse event
|
|
19345
|
+
*/
|
|
19346
|
+
this.onCellDblClick = (e) => {
|
|
19347
|
+
const cell = this.getCellFromElement(e.target);
|
|
19348
|
+
if (cell && 'onDblClick' in cell) {
|
|
19349
|
+
cell.onDblClick(e);
|
|
19350
|
+
}
|
|
19351
|
+
};
|
|
19352
|
+
/**
|
|
19353
|
+
* Delegated mousedown handler for cells.
|
|
19354
|
+
* @param e Mouse event
|
|
19355
|
+
*/
|
|
19356
|
+
this.onCellMouseDown = (e) => {
|
|
19357
|
+
const cell = this.getCellFromElement(e.target);
|
|
19358
|
+
if (cell && 'onMouseDown' in cell) {
|
|
19359
|
+
cell.onMouseDown(e);
|
|
19360
|
+
}
|
|
19361
|
+
};
|
|
19362
|
+
/**
|
|
19363
|
+
* Delegated mouseover handler for cells.
|
|
19364
|
+
* @param e Mouse event
|
|
19365
|
+
*/
|
|
19366
|
+
this.onCellMouseOver = (e) => {
|
|
19367
|
+
const cell = this.getCellFromElement(e.target);
|
|
19368
|
+
if (cell) {
|
|
19369
|
+
cell.onMouseOver();
|
|
19370
|
+
}
|
|
19371
|
+
};
|
|
19372
|
+
/**
|
|
19373
|
+
* Delegated mouseout handler for cells.
|
|
19374
|
+
* @param e Mouse event
|
|
19375
|
+
*/
|
|
19376
|
+
this.onCellMouseOut = (e) => {
|
|
19377
|
+
const cell = this.getCellFromElement(e.target);
|
|
19378
|
+
if (cell) {
|
|
19379
|
+
cell.onMouseOut();
|
|
19380
|
+
}
|
|
19381
|
+
};
|
|
19382
|
+
/**
|
|
19383
|
+
* Delegated keydown handler for cells.
|
|
19384
|
+
* @param e Keyboard event
|
|
19385
|
+
*/
|
|
19386
|
+
this.onCellKeyDown = (e) => {
|
|
19387
|
+
const cell = this.getCellFromElement(e.target);
|
|
19388
|
+
if (cell) {
|
|
19389
|
+
cell.onKeyDown(e);
|
|
19390
|
+
}
|
|
19391
|
+
};
|
|
18456
19392
|
this.grid = grid;
|
|
18457
19393
|
this.tableElement = tableElement;
|
|
18458
19394
|
this.dataTable = this.grid.presentationTable;
|
|
18459
19395
|
const dgOptions = grid.options;
|
|
18460
19396
|
const customClassName = dgOptions?.rendering?.table?.className;
|
|
18461
19397
|
this.columnResizing = ColumnResizing.initMode(this);
|
|
18462
|
-
this.virtualRows = this.shouldVirtualizeRows();
|
|
18463
19398
|
if (dgOptions?.rendering?.header?.enabled) {
|
|
18464
19399
|
this.theadElement = Table_makeHTMLElement('thead', {}, tableElement);
|
|
18465
19400
|
}
|
|
18466
19401
|
this.tbodyElement = Table_makeHTMLElement('tbody', {}, tableElement);
|
|
18467
|
-
if (this.virtualRows) {
|
|
18468
|
-
tableElement.classList.add(Grid_Core_Globals.getClassName('virtualization'));
|
|
18469
|
-
}
|
|
18470
19402
|
if (dgOptions?.rendering?.columns?.resizing?.enabled) {
|
|
18471
19403
|
this.columnsResizer = new Actions_ColumnsResizer(this);
|
|
18472
19404
|
}
|
|
@@ -18477,6 +19409,10 @@ class Table {
|
|
|
18477
19409
|
// Load columns
|
|
18478
19410
|
this.loadColumns();
|
|
18479
19411
|
// Virtualization
|
|
19412
|
+
this.virtualRows = this.shouldVirtualizeRows();
|
|
19413
|
+
if (this.virtualRows) {
|
|
19414
|
+
tableElement.classList.add(Grid_Core_Globals.getClassName('virtualization'));
|
|
19415
|
+
}
|
|
18480
19416
|
this.rowsVirtualizer = new Actions_RowsVirtualizer(this);
|
|
18481
19417
|
// Init Table
|
|
18482
19418
|
this.init();
|
|
@@ -18485,6 +19421,13 @@ class Table {
|
|
|
18485
19421
|
this.resizeObserver.observe(tableElement);
|
|
18486
19422
|
this.tbodyElement.addEventListener('scroll', this.onScroll);
|
|
18487
19423
|
this.tbodyElement.addEventListener('focus', this.onTBodyFocus);
|
|
19424
|
+
// Delegated cell events
|
|
19425
|
+
this.tbodyElement.addEventListener('click', this.onCellClick);
|
|
19426
|
+
this.tbodyElement.addEventListener('dblclick', this.onCellDblClick);
|
|
19427
|
+
this.tbodyElement.addEventListener('mousedown', this.onCellMouseDown);
|
|
19428
|
+
this.tbodyElement.addEventListener('mouseover', this.onCellMouseOver);
|
|
19429
|
+
this.tbodyElement.addEventListener('mouseout', this.onCellMouseOut);
|
|
19430
|
+
this.tbodyElement.addEventListener('keydown', this.onCellKeyDown);
|
|
18488
19431
|
}
|
|
18489
19432
|
/* *
|
|
18490
19433
|
*
|
|
@@ -18680,12 +19623,55 @@ class Table {
|
|
|
18680
19623
|
getWidthFromRatio(ratio) {
|
|
18681
19624
|
return this.tbodyElement.clientWidth * ratio;
|
|
18682
19625
|
}
|
|
19626
|
+
/**
|
|
19627
|
+
* Finds a cell from a DOM element within the table body.
|
|
19628
|
+
*
|
|
19629
|
+
* @param element
|
|
19630
|
+
* The DOM element to find the cell for (typically event.target).
|
|
19631
|
+
*
|
|
19632
|
+
* @returns
|
|
19633
|
+
* The Cell instance or undefined if not found.
|
|
19634
|
+
*
|
|
19635
|
+
* @internal
|
|
19636
|
+
*/
|
|
19637
|
+
getCellFromElement(element) {
|
|
19638
|
+
if (!(element instanceof Element)) {
|
|
19639
|
+
return;
|
|
19640
|
+
}
|
|
19641
|
+
const td = element.closest('td');
|
|
19642
|
+
if (!td) {
|
|
19643
|
+
return;
|
|
19644
|
+
}
|
|
19645
|
+
const tr = td.parentElement;
|
|
19646
|
+
if (!tr) {
|
|
19647
|
+
return;
|
|
19648
|
+
}
|
|
19649
|
+
const rowIndexAttr = tr.getAttribute('data-row-index');
|
|
19650
|
+
if (rowIndexAttr === null) {
|
|
19651
|
+
return;
|
|
19652
|
+
}
|
|
19653
|
+
const rowIndex = parseInt(rowIndexAttr, 10);
|
|
19654
|
+
const firstRowIndex = this.rows[0]?.index ?? 0;
|
|
19655
|
+
const row = this.rows[rowIndex - firstRowIndex];
|
|
19656
|
+
if (!row) {
|
|
19657
|
+
return;
|
|
19658
|
+
}
|
|
19659
|
+
// Find cell index by position in row
|
|
19660
|
+
const cellIndex = Array.prototype.indexOf.call(tr.children, td);
|
|
19661
|
+
return row.cells[cellIndex];
|
|
19662
|
+
}
|
|
18683
19663
|
/**
|
|
18684
19664
|
* Destroys the grid table.
|
|
18685
19665
|
*/
|
|
18686
19666
|
destroy() {
|
|
18687
19667
|
this.tbodyElement.removeEventListener('focus', this.onTBodyFocus);
|
|
18688
19668
|
this.tbodyElement.removeEventListener('scroll', this.onScroll);
|
|
19669
|
+
this.tbodyElement.removeEventListener('click', this.onCellClick);
|
|
19670
|
+
this.tbodyElement.removeEventListener('dblclick', this.onCellDblClick);
|
|
19671
|
+
this.tbodyElement.removeEventListener('mousedown', this.onCellMouseDown);
|
|
19672
|
+
this.tbodyElement.removeEventListener('mouseover', this.onCellMouseOver);
|
|
19673
|
+
this.tbodyElement.removeEventListener('mouseout', this.onCellMouseOut);
|
|
19674
|
+
this.tbodyElement.removeEventListener('keydown', this.onCellKeyDown);
|
|
18689
19675
|
this.resizeObserver.disconnect();
|
|
18690
19676
|
this.columnsResizer?.removeEventListeners();
|
|
18691
19677
|
this.header?.destroy();
|
|
@@ -18776,11 +19762,11 @@ class Table {
|
|
|
18776
19762
|
;// ./code/grid/es-modules/Data/Modifiers/ChainModifier.js
|
|
18777
19763
|
/* *
|
|
18778
19764
|
*
|
|
18779
|
-
* (c) 2009-
|
|
19765
|
+
* (c) 2009-2026 Highsoft AS
|
|
18780
19766
|
*
|
|
18781
|
-
*
|
|
19767
|
+
* A commercial license may be required depending on use.
|
|
19768
|
+
* See www.highcharts.com/license
|
|
18782
19769
|
*
|
|
18783
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
18784
19770
|
*
|
|
18785
19771
|
* Authors:
|
|
18786
19772
|
* - Sophie Bremer
|
|
@@ -19009,11 +19995,11 @@ Modifiers_DataModifier.registerType('Chain', ChainModifier);
|
|
|
19009
19995
|
;// ./code/grid/es-modules/Data/Modifiers/SortModifier.js
|
|
19010
19996
|
/* *
|
|
19011
19997
|
*
|
|
19012
|
-
* (c) 2009-
|
|
19998
|
+
* (c) 2009-2026 Highsoft AS
|
|
19013
19999
|
*
|
|
19014
|
-
*
|
|
20000
|
+
* A commercial license may be required depending on use.
|
|
20001
|
+
* See www.highcharts.com/license
|
|
19015
20002
|
*
|
|
19016
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19017
20003
|
*
|
|
19018
20004
|
* Authors:
|
|
19019
20005
|
* - Sophie Bremer
|
|
@@ -19104,9 +20090,35 @@ class SortModifier extends Modifiers_DataModifier {
|
|
|
19104
20090
|
modifyTable(table, eventDetail) {
|
|
19105
20091
|
const modifier = this;
|
|
19106
20092
|
modifier.emit({ type: 'modify', detail: eventDetail, table });
|
|
19107
|
-
const columnIds = table.getColumnIds(), rowCount = table.getRowCount(), rowReferences = this.getRowReferences(table), { direction,
|
|
19108
|
-
|
|
19109
|
-
|
|
20093
|
+
const columnIds = table.getColumnIds(), rowCount = table.getRowCount(), rowReferences = this.getRowReferences(table), { direction, orderInColumn, compare: customCompare } = modifier.options, modified = table.getModified();
|
|
20094
|
+
const orderBy = ('columns' in modifier.options ?
|
|
20095
|
+
modifier.options.columns :
|
|
20096
|
+
[modifier.options.orderByColumn]);
|
|
20097
|
+
const orderByIndexes = [];
|
|
20098
|
+
for (let i = 0, iEnd = orderBy.length; i < iEnd; ++i) {
|
|
20099
|
+
const sort = orderBy[i];
|
|
20100
|
+
const isString = typeof sort === 'string';
|
|
20101
|
+
const column = isString ? sort : sort.column;
|
|
20102
|
+
const columnIndex = columnIds.indexOf(column);
|
|
20103
|
+
if (columnIndex === -1) {
|
|
20104
|
+
continue;
|
|
20105
|
+
}
|
|
20106
|
+
orderByIndexes.push({
|
|
20107
|
+
columnIndex,
|
|
20108
|
+
compare: SortModifier.compareFactory(isString ? direction : (sort.direction || direction), isString ? customCompare : (sort.compare || customCompare))
|
|
20109
|
+
});
|
|
20110
|
+
}
|
|
20111
|
+
if (orderByIndexes.length) {
|
|
20112
|
+
rowReferences.sort((a, b) => {
|
|
20113
|
+
for (let i = 0, iEnd = orderByIndexes.length; i < iEnd; ++i) {
|
|
20114
|
+
const { columnIndex, compare } = orderByIndexes[i];
|
|
20115
|
+
const result = compare(a.row[columnIndex], b.row[columnIndex]);
|
|
20116
|
+
if (result) {
|
|
20117
|
+
return result;
|
|
20118
|
+
}
|
|
20119
|
+
}
|
|
20120
|
+
return a.index - b.index;
|
|
20121
|
+
});
|
|
19110
20122
|
}
|
|
19111
20123
|
if (orderInColumn) {
|
|
19112
20124
|
const column = [];
|
|
@@ -19157,11 +20169,11 @@ Modifiers_DataModifier.registerType('Sort', SortModifier);
|
|
|
19157
20169
|
*
|
|
19158
20170
|
* Grid Sorting Controller class
|
|
19159
20171
|
*
|
|
19160
|
-
* (c) 2020-
|
|
20172
|
+
* (c) 2020-2026 Highsoft AS
|
|
19161
20173
|
*
|
|
19162
|
-
*
|
|
20174
|
+
* A commercial license may be required depending on use.
|
|
20175
|
+
* See www.highcharts.com/license
|
|
19163
20176
|
*
|
|
19164
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19165
20177
|
*
|
|
19166
20178
|
* Authors:
|
|
19167
20179
|
* - Dawid Dragula
|
|
@@ -19192,23 +20204,24 @@ class SortingController {
|
|
|
19192
20204
|
constructor(querying) {
|
|
19193
20205
|
this.querying = querying;
|
|
19194
20206
|
}
|
|
19195
|
-
|
|
19196
|
-
|
|
19197
|
-
|
|
19198
|
-
|
|
19199
|
-
|
|
19200
|
-
|
|
19201
|
-
|
|
19202
|
-
|
|
19203
|
-
|
|
19204
|
-
|
|
19205
|
-
|
|
19206
|
-
|
|
19207
|
-
|
|
19208
|
-
|
|
19209
|
-
|
|
19210
|
-
|
|
19211
|
-
|
|
20207
|
+
setSorting(orderOrSortings, columnId) {
|
|
20208
|
+
if (Array.isArray(orderOrSortings)) {
|
|
20209
|
+
const sortings = orderOrSortings
|
|
20210
|
+
.filter((sorting) => !!(sorting.columnId && sorting.order))
|
|
20211
|
+
.map((sorting) => ({
|
|
20212
|
+
columnId: sorting.columnId,
|
|
20213
|
+
order: sorting.order
|
|
20214
|
+
}));
|
|
20215
|
+
const currentSortings = this.currentSortings || [];
|
|
20216
|
+
if (!SortingController.sortingsEqual(sortings, currentSortings)) {
|
|
20217
|
+
this.querying.shouldBeUpdated = true;
|
|
20218
|
+
this.currentSortings = sortings;
|
|
20219
|
+
this.currentSorting = sortings[0] || { order: null };
|
|
20220
|
+
}
|
|
20221
|
+
this.modifier = this.createModifier();
|
|
20222
|
+
return;
|
|
20223
|
+
}
|
|
20224
|
+
const order = orderOrSortings;
|
|
19212
20225
|
if (this.currentSorting?.columnId !== columnId ||
|
|
19213
20226
|
this.currentSorting?.order !== order) {
|
|
19214
20227
|
this.querying.shouldBeUpdated = true;
|
|
@@ -19216,69 +20229,106 @@ class SortingController {
|
|
|
19216
20229
|
columnId,
|
|
19217
20230
|
order
|
|
19218
20231
|
};
|
|
20232
|
+
this.currentSortings = (order && columnId ?
|
|
20233
|
+
[{ columnId, order }] :
|
|
20234
|
+
[]);
|
|
19219
20235
|
}
|
|
19220
20236
|
this.modifier = this.createModifier();
|
|
19221
20237
|
}
|
|
20238
|
+
/**
|
|
20239
|
+
* Checks whether two sorting state arrays are equal.
|
|
20240
|
+
*
|
|
20241
|
+
* @param a
|
|
20242
|
+
* First sorting state array.
|
|
20243
|
+
*
|
|
20244
|
+
* @param b
|
|
20245
|
+
* Second sorting state array.
|
|
20246
|
+
*/
|
|
20247
|
+
static sortingsEqual(a, b) {
|
|
20248
|
+
if (a.length !== b.length) {
|
|
20249
|
+
return false;
|
|
20250
|
+
}
|
|
20251
|
+
for (let i = 0, iEnd = a.length; i < iEnd; ++i) {
|
|
20252
|
+
if (a[i].columnId !== b[i].columnId ||
|
|
20253
|
+
a[i].order !== b[i].order) {
|
|
20254
|
+
return false;
|
|
20255
|
+
}
|
|
20256
|
+
}
|
|
20257
|
+
return true;
|
|
20258
|
+
}
|
|
19222
20259
|
/**
|
|
19223
20260
|
* Returns the sorting options from the data grid options.
|
|
19224
20261
|
*/
|
|
19225
20262
|
getSortingOptions() {
|
|
19226
20263
|
const grid = this.querying.grid, { columnOptionsMap } = grid;
|
|
19227
20264
|
if (!columnOptionsMap) {
|
|
19228
|
-
return
|
|
20265
|
+
return [];
|
|
19229
20266
|
}
|
|
19230
20267
|
const columnIDs = Object.keys(columnOptionsMap);
|
|
19231
|
-
|
|
19232
|
-
let
|
|
19233
|
-
for (let i = columnIDs.length - 1; i > -1; --i) {
|
|
20268
|
+
const sortings = [];
|
|
20269
|
+
for (let i = 0, iEnd = columnIDs.length; i < iEnd; ++i) {
|
|
19234
20270
|
const columnId = columnIDs[i];
|
|
19235
20271
|
const columnOptions = columnOptionsMap[columnId]?.options || {};
|
|
19236
20272
|
const order = columnOptions.sorting?.order;
|
|
19237
20273
|
if (order) {
|
|
19238
|
-
|
|
19239
|
-
|
|
19240
|
-
|
|
19241
|
-
|
|
19242
|
-
|
|
19243
|
-
|
|
19244
|
-
}
|
|
19245
|
-
foundOrder = order;
|
|
19246
|
-
foundColumnId = columnId;
|
|
20274
|
+
sortings.push({
|
|
20275
|
+
columnId,
|
|
20276
|
+
order,
|
|
20277
|
+
priority: columnOptions.sorting?.priority,
|
|
20278
|
+
index: i
|
|
20279
|
+
});
|
|
19247
20280
|
}
|
|
19248
20281
|
}
|
|
19249
|
-
|
|
19250
|
-
|
|
19251
|
-
|
|
19252
|
-
|
|
20282
|
+
if (sortings.some((sorting) => typeof sorting.priority === 'number')) {
|
|
20283
|
+
sortings.sort((a, b) => {
|
|
20284
|
+
const aPriority = (typeof a.priority === 'number' ?
|
|
20285
|
+
a.priority :
|
|
20286
|
+
Number.POSITIVE_INFINITY);
|
|
20287
|
+
const bPriority = (typeof b.priority === 'number' ?
|
|
20288
|
+
b.priority :
|
|
20289
|
+
Number.POSITIVE_INFINITY);
|
|
20290
|
+
if (aPriority !== bPriority) {
|
|
20291
|
+
return aPriority - bPriority;
|
|
20292
|
+
}
|
|
20293
|
+
return a.index - b.index;
|
|
20294
|
+
});
|
|
20295
|
+
}
|
|
20296
|
+
else {
|
|
20297
|
+
sortings.reverse();
|
|
20298
|
+
}
|
|
20299
|
+
return sortings.map((sorting) => ({
|
|
20300
|
+
columnId: sorting.columnId,
|
|
20301
|
+
order: sorting.order
|
|
20302
|
+
}));
|
|
19253
20303
|
}
|
|
19254
20304
|
/**
|
|
19255
20305
|
* Loads sorting options from the data grid options.
|
|
19256
20306
|
*/
|
|
19257
20307
|
loadOptions() {
|
|
19258
|
-
const
|
|
19259
|
-
if (
|
|
19260
|
-
|
|
19261
|
-
this.setSorting(stateFromOptions.order, stateFromOptions.columnId);
|
|
20308
|
+
const sortingsFromOptions = this.getSortingOptions();
|
|
20309
|
+
if (!SortingController.sortingsEqual(sortingsFromOptions, this.currentSortings || [])) {
|
|
20310
|
+
this.setSorting(sortingsFromOptions);
|
|
19262
20311
|
}
|
|
19263
20312
|
}
|
|
19264
20313
|
/**
|
|
19265
20314
|
* Returns the sorting modifier based on the loaded sorting options.
|
|
19266
20315
|
*/
|
|
19267
20316
|
createModifier() {
|
|
19268
|
-
|
|
19269
|
-
|
|
19270
|
-
|
|
19271
|
-
const { columnId, order } = this.currentSorting;
|
|
19272
|
-
if (!order || !columnId) {
|
|
20317
|
+
const sortings = (this.currentSortings ||
|
|
20318
|
+
(this.currentSorting ? [this.currentSorting] : [])).filter((sorting) => !!(sorting.columnId && sorting.order));
|
|
20319
|
+
if (!sortings.length) {
|
|
19273
20320
|
return;
|
|
19274
20321
|
}
|
|
19275
20322
|
const grid = this.querying.grid;
|
|
20323
|
+
const defaultCompare = grid.options?.columnDefaults?.sorting?.compare;
|
|
19276
20324
|
return new Modifiers_SortModifier({
|
|
19277
|
-
|
|
19278
|
-
|
|
19279
|
-
|
|
19280
|
-
|
|
19281
|
-
grid.
|
|
20325
|
+
direction: sortings[0].order,
|
|
20326
|
+
columns: sortings.map((sorting) => ({
|
|
20327
|
+
column: sorting.columnId,
|
|
20328
|
+
direction: sorting.order,
|
|
20329
|
+
compare: grid.columnOptionsMap?.[sorting.columnId]
|
|
20330
|
+
?.options?.sorting?.compare || defaultCompare
|
|
20331
|
+
}))
|
|
19282
20332
|
});
|
|
19283
20333
|
}
|
|
19284
20334
|
}
|
|
@@ -19292,11 +20342,11 @@ class SortingController {
|
|
|
19292
20342
|
;// ./code/grid/es-modules/Data/Modifiers/FilterModifier.js
|
|
19293
20343
|
/* *
|
|
19294
20344
|
*
|
|
19295
|
-
* (c) 2009-
|
|
20345
|
+
* (c) 2009-2026 Highsoft AS
|
|
19296
20346
|
*
|
|
19297
|
-
*
|
|
20347
|
+
* A commercial license may be required depending on use.
|
|
20348
|
+
* See www.highcharts.com/license
|
|
19298
20349
|
*
|
|
19299
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19300
20350
|
*
|
|
19301
20351
|
* Authors:
|
|
19302
20352
|
* - Dawid Dragula
|
|
@@ -19468,11 +20518,11 @@ Modifiers_DataModifier.registerType('Filter', FilterModifier);
|
|
|
19468
20518
|
*
|
|
19469
20519
|
* Grid Filtering Controller class
|
|
19470
20520
|
*
|
|
19471
|
-
* (c) 2020-
|
|
20521
|
+
* (c) 2020-2026 Highsoft AS
|
|
19472
20522
|
*
|
|
19473
|
-
*
|
|
20523
|
+
* A commercial license may be required depending on use.
|
|
20524
|
+
* See www.highcharts.com/license
|
|
19474
20525
|
*
|
|
19475
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19476
20526
|
*
|
|
19477
20527
|
* Authors:
|
|
19478
20528
|
* - Dawid Dragula
|
|
@@ -19724,11 +20774,11 @@ class FilteringController {
|
|
|
19724
20774
|
;// ./code/grid/es-modules/Data/Modifiers/RangeModifier.js
|
|
19725
20775
|
/* *
|
|
19726
20776
|
*
|
|
19727
|
-
* (c) 2009-
|
|
20777
|
+
* (c) 2009-2026 Highsoft AS
|
|
19728
20778
|
*
|
|
19729
|
-
*
|
|
20779
|
+
* A commercial license may be required depending on use.
|
|
20780
|
+
* See www.highcharts.com/license
|
|
19730
20781
|
*
|
|
19731
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19732
20782
|
*
|
|
19733
20783
|
* Authors:
|
|
19734
20784
|
* - Sophie Bremer
|
|
@@ -19824,11 +20874,11 @@ Modifiers_DataModifier.registerType('Range', RangeModifier);
|
|
|
19824
20874
|
*
|
|
19825
20875
|
* Grid Pagination Controller class
|
|
19826
20876
|
*
|
|
19827
|
-
* (c) 2020-
|
|
20877
|
+
* (c) 2020-2026 Highsoft AS
|
|
19828
20878
|
*
|
|
19829
|
-
*
|
|
20879
|
+
* A commercial license may be required depending on use.
|
|
20880
|
+
* See www.highcharts.com/license
|
|
19830
20881
|
*
|
|
19831
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19832
20882
|
*
|
|
19833
20883
|
* Authors:
|
|
19834
20884
|
* - Sebastian Bochan
|
|
@@ -19967,11 +21017,11 @@ class PaginationController {
|
|
|
19967
21017
|
*
|
|
19968
21018
|
* Grid Querying Controller class
|
|
19969
21019
|
*
|
|
19970
|
-
* (c) 2020-
|
|
21020
|
+
* (c) 2020-2026 Highsoft AS
|
|
19971
21021
|
*
|
|
19972
|
-
*
|
|
21022
|
+
* A commercial license may be required depending on use.
|
|
21023
|
+
* See www.highcharts.com/license
|
|
19973
21024
|
*
|
|
19974
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
19975
21025
|
*
|
|
19976
21026
|
* Authors:
|
|
19977
21027
|
* - Dawid Dragula
|
|
@@ -20096,11 +21146,11 @@ class QueryingController {
|
|
|
20096
21146
|
*
|
|
20097
21147
|
* Highcharts Grid class
|
|
20098
21148
|
*
|
|
20099
|
-
* (c) 2020-
|
|
21149
|
+
* (c) 2020-2026 Highsoft AS
|
|
20100
21150
|
*
|
|
20101
|
-
*
|
|
21151
|
+
* A commercial license may be required depending on use.
|
|
21152
|
+
* See www.highcharts.com/license
|
|
20102
21153
|
*
|
|
20103
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
20104
21154
|
*
|
|
20105
21155
|
* Authors:
|
|
20106
21156
|
* - Dawid Dragula
|
|
@@ -20119,8 +21169,8 @@ class QueryingController {
|
|
|
20119
21169
|
|
|
20120
21170
|
|
|
20121
21171
|
|
|
20122
|
-
const { makeHTMLElement: Grid_makeHTMLElement, setHTMLContent: Grid_setHTMLContent } = GridUtils;
|
|
20123
|
-
const { defined: Grid_defined, diffObjects: Grid_diffObjects, extend: Grid_extend, fireEvent: Grid_fireEvent,
|
|
21172
|
+
const { makeHTMLElement: Grid_makeHTMLElement, setHTMLContent: Grid_setHTMLContent, createOptionsProxy: Grid_createOptionsProxy } = GridUtils;
|
|
21173
|
+
const { defined: Grid_defined, diffObjects: Grid_diffObjects, extend: Grid_extend, fireEvent: Grid_fireEvent, merge: Grid_merge, pick: Grid_pick } = Core_Utilities;
|
|
20124
21174
|
/* *
|
|
20125
21175
|
*
|
|
20126
21176
|
* Class
|
|
@@ -20247,8 +21297,8 @@ class Grid {
|
|
|
20247
21297
|
throw new Error('Rendering div not found. It is unable to find the HTML ' +
|
|
20248
21298
|
'element to render the Grid in.');
|
|
20249
21299
|
}
|
|
20250
|
-
this.initialContainerHeight = Grid_getStyle(container, 'height', true) || 0;
|
|
20251
21300
|
this.container = container;
|
|
21301
|
+
this.container.style.minHeight = 0 + 'px';
|
|
20252
21302
|
this.container.innerHTML = HTML_AST.emptyHTML;
|
|
20253
21303
|
this.contentWrapper = Grid_makeHTMLElement('div', {
|
|
20254
21304
|
className: Grid_Core_Globals.getClassName('container')
|
|
@@ -20289,6 +21339,9 @@ class Grid {
|
|
|
20289
21339
|
Grid_merge(true, diff, Grid_diffObjects(newOptions, this.userOptions));
|
|
20290
21340
|
this.userOptions = Grid_merge(this.userOptions, newOptions);
|
|
20291
21341
|
this.options = Grid_merge(this.options ?? Defaults_defaultOptions, this.userOptions);
|
|
21342
|
+
this.viewport?.columns.forEach((column) => {
|
|
21343
|
+
column.options = Grid_createOptionsProxy(this.columnOptionsMap?.[column.id]?.options ?? {}, this.options?.columnDefaults);
|
|
21344
|
+
});
|
|
20292
21345
|
return diff;
|
|
20293
21346
|
}
|
|
20294
21347
|
/**
|
|
@@ -20590,7 +21643,9 @@ class Grid {
|
|
|
20590
21643
|
Grid_fireEvent(this, 'beforeRedraw');
|
|
20591
21644
|
const flags = this.dirtyFlags;
|
|
20592
21645
|
if (flags.has('grid')) {
|
|
20593
|
-
|
|
21646
|
+
await this.render();
|
|
21647
|
+
Grid_fireEvent(this, 'afterRedraw');
|
|
21648
|
+
return;
|
|
20594
21649
|
}
|
|
20595
21650
|
const { viewport: vp, pagination } = this;
|
|
20596
21651
|
const colResizing = vp?.columnResizing;
|
|
@@ -20677,6 +21732,90 @@ class Grid {
|
|
|
20677
21732
|
columnId
|
|
20678
21733
|
});
|
|
20679
21734
|
}
|
|
21735
|
+
/**
|
|
21736
|
+
* Sets the sorting order for one or more columns. Provide the sortings
|
|
21737
|
+
* in priority order. Use `null` to clear sorting.
|
|
21738
|
+
*
|
|
21739
|
+
* @param sortings
|
|
21740
|
+
* The sorting definition in priority order.
|
|
21741
|
+
*/
|
|
21742
|
+
async setSorting(sortings) {
|
|
21743
|
+
const viewport = this.viewport;
|
|
21744
|
+
if (!viewport) {
|
|
21745
|
+
return;
|
|
21746
|
+
}
|
|
21747
|
+
if (viewport.validator?.errorCell) {
|
|
21748
|
+
return;
|
|
21749
|
+
}
|
|
21750
|
+
const normalized = (sortings || []).filter((sorting) => !!(sorting.columnId && sorting.order));
|
|
21751
|
+
const sortingController = this.querying.sorting;
|
|
21752
|
+
const previousSortings = sortingController.currentSortings || [];
|
|
21753
|
+
const eventColumnIds = new Set();
|
|
21754
|
+
for (const sorting of previousSortings) {
|
|
21755
|
+
if (sorting.columnId) {
|
|
21756
|
+
eventColumnIds.add(sorting.columnId);
|
|
21757
|
+
}
|
|
21758
|
+
}
|
|
21759
|
+
for (const sorting of normalized) {
|
|
21760
|
+
eventColumnIds.add(sorting.columnId);
|
|
21761
|
+
}
|
|
21762
|
+
const eventColumns = Array.from(eventColumnIds)
|
|
21763
|
+
.map((columnId) => {
|
|
21764
|
+
const column = viewport.getColumn(columnId);
|
|
21765
|
+
if (!column) {
|
|
21766
|
+
return null;
|
|
21767
|
+
}
|
|
21768
|
+
const order = normalized.find((sorting) => sorting.columnId === columnId)?.order || null;
|
|
21769
|
+
return { column, order };
|
|
21770
|
+
})
|
|
21771
|
+
.filter((item) => !!item);
|
|
21772
|
+
for (const { column, order } of eventColumns) {
|
|
21773
|
+
[column, this].forEach((source) => {
|
|
21774
|
+
Grid_fireEvent(source, 'beforeSort', {
|
|
21775
|
+
target: column,
|
|
21776
|
+
order
|
|
21777
|
+
});
|
|
21778
|
+
});
|
|
21779
|
+
}
|
|
21780
|
+
sortingController.setSorting(normalized);
|
|
21781
|
+
await viewport.updateRows();
|
|
21782
|
+
const currentSortings = sortingController.currentSortings || [];
|
|
21783
|
+
const hasMultiple = currentSortings.length > 1;
|
|
21784
|
+
for (const column of viewport.columns) {
|
|
21785
|
+
const sortingIndex = currentSortings.findIndex((sorting) => sorting.columnId === column.id);
|
|
21786
|
+
if (sortingIndex !== -1 && currentSortings[sortingIndex].order) {
|
|
21787
|
+
const sorting = currentSortings[sortingIndex];
|
|
21788
|
+
const sortingOptions = {
|
|
21789
|
+
order: sorting.order
|
|
21790
|
+
};
|
|
21791
|
+
if (hasMultiple) {
|
|
21792
|
+
sortingOptions.priority = sortingIndex + 1;
|
|
21793
|
+
}
|
|
21794
|
+
column.setOptions({ sorting: sortingOptions });
|
|
21795
|
+
if (!hasMultiple) {
|
|
21796
|
+
delete column.options.sorting?.priority;
|
|
21797
|
+
}
|
|
21798
|
+
}
|
|
21799
|
+
else {
|
|
21800
|
+
delete column.options.sorting?.order;
|
|
21801
|
+
delete column.options.sorting?.priority;
|
|
21802
|
+
if (column.options.sorting &&
|
|
21803
|
+
Object.keys(column.options.sorting).length < 1) {
|
|
21804
|
+
delete column.options.sorting;
|
|
21805
|
+
}
|
|
21806
|
+
}
|
|
21807
|
+
column.sorting?.refreshHeaderAttributes();
|
|
21808
|
+
}
|
|
21809
|
+
this.accessibility?.userSortedColumn(currentSortings[0]?.order || null);
|
|
21810
|
+
for (const { column, order } of eventColumns) {
|
|
21811
|
+
[column, this].forEach((source) => {
|
|
21812
|
+
Grid_fireEvent(source, 'afterSort', {
|
|
21813
|
+
target: column,
|
|
21814
|
+
order
|
|
21815
|
+
});
|
|
21816
|
+
});
|
|
21817
|
+
}
|
|
21818
|
+
}
|
|
20680
21819
|
async render() {
|
|
20681
21820
|
if (this.isRendered) {
|
|
20682
21821
|
this.destroy(true);
|
|
@@ -20859,7 +21998,7 @@ class Grid {
|
|
|
20859
21998
|
else {
|
|
20860
21999
|
this.renderNoData();
|
|
20861
22000
|
}
|
|
20862
|
-
this.
|
|
22001
|
+
this.renderAccessibility();
|
|
20863
22002
|
// Render bottom pagination, footer pagination,
|
|
20864
22003
|
// or custom container pagination (after table).
|
|
20865
22004
|
if (paginationPosition !== 'top') {
|
|
@@ -20869,6 +22008,19 @@ class Grid {
|
|
|
20869
22008
|
Grid_fireEvent(this, 'afterRenderViewport');
|
|
20870
22009
|
this.viewport?.reflow();
|
|
20871
22010
|
}
|
|
22011
|
+
/**
|
|
22012
|
+
* Renders the Grid accessibility.
|
|
22013
|
+
* @internal
|
|
22014
|
+
*/
|
|
22015
|
+
renderAccessibility() {
|
|
22016
|
+
const accessibility = this.accessibility;
|
|
22017
|
+
if (!accessibility) {
|
|
22018
|
+
return;
|
|
22019
|
+
}
|
|
22020
|
+
accessibility.setA11yOptions();
|
|
22021
|
+
accessibility.addScreenReaderSection('before');
|
|
22022
|
+
accessibility.addScreenReaderSection('after');
|
|
22023
|
+
}
|
|
20872
22024
|
/**
|
|
20873
22025
|
* Renders the table (viewport) of the Grid.
|
|
20874
22026
|
*
|
|
@@ -21116,11 +22268,11 @@ Grid.grids = [];
|
|
|
21116
22268
|
;// ./code/grid/es-modules/Data/DataPool.js
|
|
21117
22269
|
/* *
|
|
21118
22270
|
*
|
|
21119
|
-
* (c) 2009-
|
|
22271
|
+
* (c) 2009-2026 Highsoft AS
|
|
21120
22272
|
*
|
|
21121
|
-
*
|
|
22273
|
+
* A commercial license may be required depending on use.
|
|
22274
|
+
* See www.highcharts.com/license
|
|
21122
22275
|
*
|
|
21123
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21124
22276
|
*
|
|
21125
22277
|
* Authors:
|
|
21126
22278
|
* - Sophie Bremer
|
|
@@ -21375,11 +22527,11 @@ DataPool.defaultOptions = {
|
|
|
21375
22527
|
;// ./code/grid/es-modules/Grid/Pro/GridEvents.js
|
|
21376
22528
|
/* *
|
|
21377
22529
|
*
|
|
21378
|
-
* (c) 2020-
|
|
22530
|
+
* (c) 2020-2026 Highsoft AS
|
|
21379
22531
|
*
|
|
21380
|
-
*
|
|
22532
|
+
* A commercial license may be required depending on use.
|
|
22533
|
+
* See www.highcharts.com/license
|
|
21381
22534
|
*
|
|
21382
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21383
22535
|
*
|
|
21384
22536
|
* Authors:
|
|
21385
22537
|
* - Dawid Dragula
|
|
@@ -21490,11 +22642,11 @@ function compose(GridClass, ColumnClass, HeaderCellClass, TableCellClass) {
|
|
|
21490
22642
|
*
|
|
21491
22643
|
* Grid Cell Editing class.
|
|
21492
22644
|
*
|
|
21493
|
-
* (c) 2020-
|
|
22645
|
+
* (c) 2020-2026 Highsoft AS
|
|
21494
22646
|
*
|
|
21495
|
-
*
|
|
22647
|
+
* A commercial license may be required depending on use.
|
|
22648
|
+
* See www.highcharts.com/license
|
|
21496
22649
|
*
|
|
21497
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21498
22650
|
*
|
|
21499
22651
|
* Authors:
|
|
21500
22652
|
* - Dawid Dragula
|
|
@@ -21700,11 +22852,11 @@ const classNames = {
|
|
|
21700
22852
|
*
|
|
21701
22853
|
* Cell Renderer Registry
|
|
21702
22854
|
*
|
|
21703
|
-
* (c) 2020-
|
|
22855
|
+
* (c) 2020-2026 Highsoft AS
|
|
21704
22856
|
*
|
|
21705
|
-
*
|
|
22857
|
+
* A commercial license may be required depending on use.
|
|
22858
|
+
* See www.highcharts.com/license
|
|
21706
22859
|
*
|
|
21707
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21708
22860
|
*
|
|
21709
22861
|
* Authors:
|
|
21710
22862
|
* - Dawid Dragula
|
|
@@ -21754,11 +22906,11 @@ function registerRenderer(key, CellRendererClass) {
|
|
|
21754
22906
|
*
|
|
21755
22907
|
* Grid Cell Editing class.
|
|
21756
22908
|
*
|
|
21757
|
-
* (c) 2020-
|
|
22909
|
+
* (c) 2020-2026 Highsoft AS
|
|
21758
22910
|
*
|
|
21759
|
-
*
|
|
22911
|
+
* A commercial license may be required depending on use.
|
|
22912
|
+
* See www.highcharts.com/license
|
|
21760
22913
|
*
|
|
21761
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21762
22914
|
*
|
|
21763
22915
|
* Authors:
|
|
21764
22916
|
* - Dawid Dragula
|
|
@@ -21954,11 +23106,11 @@ function announceA11yUserEditedCell(cell, msgType) {
|
|
|
21954
23106
|
*
|
|
21955
23107
|
* Grid Credits class
|
|
21956
23108
|
*
|
|
21957
|
-
* (c) 2020-
|
|
23109
|
+
* (c) 2020-2026 Highsoft AS
|
|
21958
23110
|
*
|
|
21959
|
-
*
|
|
23111
|
+
* A commercial license may be required depending on use.
|
|
23112
|
+
* See www.highcharts.com/license
|
|
21960
23113
|
*
|
|
21961
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
21962
23114
|
*
|
|
21963
23115
|
* Authors:
|
|
21964
23116
|
* - Dawid Dragula
|
|
@@ -22081,11 +23233,11 @@ Credits.defaultOptions = {
|
|
|
22081
23233
|
*
|
|
22082
23234
|
* Grid Credits class
|
|
22083
23235
|
*
|
|
22084
|
-
* (c) 2020-
|
|
23236
|
+
* (c) 2020-2026 Highsoft AS
|
|
22085
23237
|
*
|
|
22086
|
-
*
|
|
23238
|
+
* A commercial license may be required depending on use.
|
|
23239
|
+
* See www.highcharts.com/license
|
|
22087
23240
|
*
|
|
22088
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22089
23241
|
*
|
|
22090
23242
|
* Authors:
|
|
22091
23243
|
* - Dawid Dragula
|
|
@@ -22195,11 +23347,11 @@ class CreditsPro extends Core_Credits {
|
|
|
22195
23347
|
*
|
|
22196
23348
|
* Grid Credits class
|
|
22197
23349
|
*
|
|
22198
|
-
* (c) 2020-
|
|
23350
|
+
* (c) 2020-2026 Highsoft AS
|
|
22199
23351
|
*
|
|
22200
|
-
*
|
|
23352
|
+
* A commercial license may be required depending on use.
|
|
23353
|
+
* See www.highcharts.com/license
|
|
22201
23354
|
*
|
|
22202
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22203
23355
|
*
|
|
22204
23356
|
* Authors:
|
|
22205
23357
|
* - Dawid Dragula
|
|
@@ -22254,11 +23406,12 @@ function initCredits() {
|
|
|
22254
23406
|
;// ./code/grid/es-modules/Shared/DownloadURL.js
|
|
22255
23407
|
/* *
|
|
22256
23408
|
*
|
|
22257
|
-
* (c) 2015-
|
|
23409
|
+
* (c) 2015-2026 Highsoft AS
|
|
23410
|
+
* Author: Oystein Moseng
|
|
22258
23411
|
*
|
|
22259
|
-
*
|
|
23412
|
+
* A commercial license may be required depending on use.
|
|
23413
|
+
* See www.highcharts.com/license
|
|
22260
23414
|
*
|
|
22261
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22262
23415
|
*
|
|
22263
23416
|
* Mixin for downloading content in the browser
|
|
22264
23417
|
*
|
|
@@ -22287,7 +23440,7 @@ const domurl = DownloadURL_win.URL || DownloadURL_win.webkitURL || DownloadURL_w
|
|
|
22287
23440
|
/**
|
|
22288
23441
|
* Convert base64 dataURL to Blob if supported, otherwise returns undefined.
|
|
22289
23442
|
*
|
|
22290
|
-
* @
|
|
23443
|
+
* @internal
|
|
22291
23444
|
* @function Highcharts.dataURLtoBlob
|
|
22292
23445
|
*
|
|
22293
23446
|
* @param {string} dataURL
|
|
@@ -22319,7 +23472,7 @@ function dataURLtoBlob(dataURL) {
|
|
|
22319
23472
|
/**
|
|
22320
23473
|
* Download a data URL in the browser. Can also take a blob as first param.
|
|
22321
23474
|
*
|
|
22322
|
-
* @
|
|
23475
|
+
* @internal
|
|
22323
23476
|
* @function Highcharts.downloadURL
|
|
22324
23477
|
*
|
|
22325
23478
|
* @param {string | global.URL} dataURL
|
|
@@ -22378,7 +23531,7 @@ function downloadURL(dataURL, filename) {
|
|
|
22378
23531
|
/**
|
|
22379
23532
|
* Asynchronously downloads a script from a provided location.
|
|
22380
23533
|
*
|
|
22381
|
-
* @
|
|
23534
|
+
* @internal
|
|
22382
23535
|
* @function Highcharts.getScript
|
|
22383
23536
|
*
|
|
22384
23537
|
* @param {string} scriptLocation
|
|
@@ -22407,7 +23560,7 @@ function getScript(scriptLocation) {
|
|
|
22407
23560
|
/**
|
|
22408
23561
|
* Get a blob object from content, if blob is supported.
|
|
22409
23562
|
*
|
|
22410
|
-
* @
|
|
23563
|
+
* @internal
|
|
22411
23564
|
* @function Highcharts.getBlobFromContent
|
|
22412
23565
|
*
|
|
22413
23566
|
* @param {string} content
|
|
@@ -22443,24 +23596,26 @@ function getBlobFromContent(content, type) {
|
|
|
22443
23596
|
* Default Export
|
|
22444
23597
|
*
|
|
22445
23598
|
* */
|
|
23599
|
+
/** @internal */
|
|
22446
23600
|
const DownloadURL = {
|
|
22447
23601
|
dataURLtoBlob,
|
|
22448
23602
|
downloadURL,
|
|
22449
23603
|
getBlobFromContent,
|
|
22450
23604
|
getScript
|
|
22451
23605
|
};
|
|
22452
|
-
|
|
23606
|
+
/** @internal */
|
|
23607
|
+
/* harmony default export */ const Shared_DownloadURL = ((/* unused pure expression or super */ null && (DownloadURL)));
|
|
22453
23608
|
|
|
22454
23609
|
;// ./code/grid/es-modules/Grid/Pro/Export/Exporting.js
|
|
22455
23610
|
/* *
|
|
22456
23611
|
*
|
|
22457
23612
|
* Grid Exporting class
|
|
22458
23613
|
*
|
|
22459
|
-
* (c) 2020-
|
|
23614
|
+
* (c) 2020-2026 Highsoft AS
|
|
22460
23615
|
*
|
|
22461
|
-
*
|
|
23616
|
+
* A commercial license may be required depending on use.
|
|
23617
|
+
* See www.highcharts.com/license
|
|
22462
23618
|
*
|
|
22463
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22464
23619
|
*
|
|
22465
23620
|
* Authors:
|
|
22466
23621
|
* - Karol Kolodziej
|
|
@@ -22469,7 +23624,6 @@ const DownloadURL = {
|
|
|
22469
23624
|
|
|
22470
23625
|
|
|
22471
23626
|
|
|
22472
|
-
const { downloadURL: Exporting_downloadURL, getBlobFromContent: Exporting_getBlobFromContent } = Shared_DownloadURL;
|
|
22473
23627
|
const { defined: Exporting_defined } = Core_Utilities;
|
|
22474
23628
|
/* *
|
|
22475
23629
|
*
|
|
@@ -22508,7 +23662,7 @@ class Exporting {
|
|
|
22508
23662
|
*/
|
|
22509
23663
|
downloadCSV(modified = true) {
|
|
22510
23664
|
const csv = this.getCSV(modified);
|
|
22511
|
-
|
|
23665
|
+
downloadURL(getBlobFromContent(csv, 'text/csv') ||
|
|
22512
23666
|
'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
|
|
22513
23667
|
}
|
|
22514
23668
|
/**
|
|
@@ -22520,7 +23674,7 @@ class Exporting {
|
|
|
22520
23674
|
*/
|
|
22521
23675
|
downloadJSON(modified = true) {
|
|
22522
23676
|
const json = this.getJSON(modified);
|
|
22523
|
-
|
|
23677
|
+
downloadURL(getBlobFromContent(json, 'application/json') ||
|
|
22524
23678
|
'data:application/json,\uFEFF' + encodeURIComponent(json), this.getFilename() + '.json');
|
|
22525
23679
|
}
|
|
22526
23680
|
/**
|
|
@@ -22666,11 +23820,11 @@ Exporting.defaultOptions = {
|
|
|
22666
23820
|
*
|
|
22667
23821
|
* Grid Exporting composition
|
|
22668
23822
|
*
|
|
22669
|
-
* (c) 2020-
|
|
23823
|
+
* (c) 2020-2026 Highsoft AS
|
|
22670
23824
|
*
|
|
22671
|
-
*
|
|
23825
|
+
* A commercial license may be required depending on use.
|
|
23826
|
+
* See www.highcharts.com/license
|
|
22672
23827
|
*
|
|
22673
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22674
23828
|
*
|
|
22675
23829
|
* Authors:
|
|
22676
23830
|
* - Karol Kolodziej
|
|
@@ -22721,11 +23875,11 @@ function initExporting() {
|
|
|
22721
23875
|
*
|
|
22722
23876
|
* Grid cell content validator
|
|
22723
23877
|
*
|
|
22724
|
-
* (c) 2009-
|
|
23878
|
+
* (c) 2009-2026 Highsoft AS
|
|
22725
23879
|
*
|
|
22726
|
-
*
|
|
23880
|
+
* A commercial license may be required depending on use.
|
|
23881
|
+
* See www.highcharts.com/license
|
|
22727
23882
|
*
|
|
22728
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22729
23883
|
*
|
|
22730
23884
|
* Authors:
|
|
22731
23885
|
* - Dawid Dragula
|
|
@@ -22777,6 +23931,7 @@ class Validator {
|
|
|
22777
23931
|
validate(cell, errors = []) {
|
|
22778
23932
|
const { options, dataType } = cell.column;
|
|
22779
23933
|
const validationErrors = cell.row.viewport.grid.options?.lang?.validationErrors;
|
|
23934
|
+
const rendererType = cell.column.options?.cells?.renderer?.type;
|
|
22780
23935
|
let rules = Array.from(options?.cells?.editMode?.validationRules || []);
|
|
22781
23936
|
// Remove duplicates in validationRules
|
|
22782
23937
|
const isArrayString = rules.every((rule) => typeof rule === 'string');
|
|
@@ -22784,7 +23939,12 @@ class Validator {
|
|
|
22784
23939
|
rules = [...new Set(rules)];
|
|
22785
23940
|
}
|
|
22786
23941
|
else {
|
|
22787
|
-
const predefined =
|
|
23942
|
+
const predefined = [
|
|
23943
|
+
...(Validator.predefinedRules.dataType[dataType] ?? [])
|
|
23944
|
+
];
|
|
23945
|
+
if (rendererType) {
|
|
23946
|
+
predefined.push(...Validator.predefinedRules.renderer[rendererType] ?? []);
|
|
23947
|
+
}
|
|
22788
23948
|
const hasPredefined = rules.some((rule) => typeof rule !== 'string' &&
|
|
22789
23949
|
typeof rule.validate === 'string' &&
|
|
22790
23950
|
predefined.includes(rule.validate));
|
|
@@ -22955,16 +24115,52 @@ Validator.rulesRegistry = {
|
|
|
22955
24115
|
return !isDuplicate;
|
|
22956
24116
|
},
|
|
22957
24117
|
notification: 'Value must be unique within this column (case-sensitive).'
|
|
24118
|
+
},
|
|
24119
|
+
arrayNumber: {
|
|
24120
|
+
validate: function ({ rawValue }) {
|
|
24121
|
+
return rawValue
|
|
24122
|
+
.split(',')
|
|
24123
|
+
.every((item) => !Number.isNaN(Number(item.trim())));
|
|
24124
|
+
},
|
|
24125
|
+
notification: 'Value should be a list of numbers separated by commas.'
|
|
24126
|
+
},
|
|
24127
|
+
json: {
|
|
24128
|
+
validate: function ({ rawValue }) {
|
|
24129
|
+
try {
|
|
24130
|
+
JSON.parse(rawValue);
|
|
24131
|
+
return true;
|
|
24132
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24133
|
+
}
|
|
24134
|
+
catch (e) {
|
|
24135
|
+
return false;
|
|
24136
|
+
}
|
|
24137
|
+
},
|
|
24138
|
+
notification: 'Value should be a valid JSON.'
|
|
24139
|
+
},
|
|
24140
|
+
sparkline: {
|
|
24141
|
+
validate: function ({ rawValue }) {
|
|
24142
|
+
const arrayNumberValidate = Validator.rulesRegistry.arrayNumber.validate;
|
|
24143
|
+
const jsonValidate = Validator.rulesRegistry.json.validate;
|
|
24144
|
+
return arrayNumberValidate({ rawValue }) ||
|
|
24145
|
+
jsonValidate({ rawValue });
|
|
24146
|
+
},
|
|
24147
|
+
// eslint-disable-next-line max-len
|
|
24148
|
+
notification: 'Value should be a valid JSON or a list of numbers separated by commas.'
|
|
22958
24149
|
}
|
|
22959
24150
|
};
|
|
22960
24151
|
/**
|
|
22961
24152
|
* Default validation rules for each dataType.
|
|
22962
24153
|
*/
|
|
22963
24154
|
Validator.predefinedRules = {
|
|
22964
|
-
|
|
22965
|
-
|
|
22966
|
-
|
|
22967
|
-
|
|
24155
|
+
dataType: {
|
|
24156
|
+
'boolean': ['boolean'],
|
|
24157
|
+
datetime: ['datetime'],
|
|
24158
|
+
number: ['number'],
|
|
24159
|
+
string: []
|
|
24160
|
+
},
|
|
24161
|
+
renderer: {
|
|
24162
|
+
sparkline: ['sparkline']
|
|
24163
|
+
}
|
|
22968
24164
|
};
|
|
22969
24165
|
/* *
|
|
22970
24166
|
*
|
|
@@ -22978,11 +24174,11 @@ Validator.predefinedRules = {
|
|
|
22978
24174
|
*
|
|
22979
24175
|
* Validator Composition.
|
|
22980
24176
|
*
|
|
22981
|
-
* (c) 2020-
|
|
24177
|
+
* (c) 2020-2026 Highsoft AS
|
|
22982
24178
|
*
|
|
22983
|
-
*
|
|
24179
|
+
* A commercial license may be required depending on use.
|
|
24180
|
+
* See www.highcharts.com/license
|
|
22984
24181
|
*
|
|
22985
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
22986
24182
|
*
|
|
22987
24183
|
* Authors:
|
|
22988
24184
|
* - Sebastian Bochan
|
|
@@ -23038,11 +24234,11 @@ function destroy() {
|
|
|
23038
24234
|
*
|
|
23039
24235
|
* Cell Content Pro composition
|
|
23040
24236
|
*
|
|
23041
|
-
* (c) 2020-
|
|
24237
|
+
* (c) 2020-2026 Highsoft AS
|
|
23042
24238
|
*
|
|
23043
|
-
*
|
|
24239
|
+
* A commercial license may be required depending on use.
|
|
24240
|
+
* See www.highcharts.com/license
|
|
23044
24241
|
*
|
|
23045
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23046
24242
|
*
|
|
23047
24243
|
* Authors:
|
|
23048
24244
|
* - Dawid Dragula
|
|
@@ -23114,11 +24310,11 @@ function createCellContent(cell) {
|
|
|
23114
24310
|
*
|
|
23115
24311
|
* Grid Pro Pagination class
|
|
23116
24312
|
*
|
|
23117
|
-
* (c) 2020-
|
|
24313
|
+
* (c) 2020-2026 Highsoft AS
|
|
23118
24314
|
*
|
|
23119
|
-
*
|
|
24315
|
+
* A commercial license may be required depending on use.
|
|
24316
|
+
* See www.highcharts.com/license
|
|
23120
24317
|
*
|
|
23121
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23122
24318
|
*
|
|
23123
24319
|
* Authors:
|
|
23124
24320
|
* - Sebastian Bochan
|
|
@@ -23191,11 +24387,11 @@ function PaginationComposition_compose(PaginationClass) {
|
|
|
23191
24387
|
*
|
|
23192
24388
|
* Cell Content Pro abstract class
|
|
23193
24389
|
*
|
|
23194
|
-
* (c) 2020-
|
|
24390
|
+
* (c) 2020-2026 Highsoft AS
|
|
23195
24391
|
*
|
|
23196
|
-
*
|
|
24392
|
+
* A commercial license may be required depending on use.
|
|
24393
|
+
* See www.highcharts.com/license
|
|
23197
24394
|
*
|
|
23198
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23199
24395
|
*
|
|
23200
24396
|
* Authors:
|
|
23201
24397
|
* - Dawid Dragula
|
|
@@ -23238,11 +24434,11 @@ class CellContentPro extends CellContent_CellContent {
|
|
|
23238
24434
|
*
|
|
23239
24435
|
* Cell Renderer abstract class
|
|
23240
24436
|
*
|
|
23241
|
-
* (c) 2020-
|
|
24437
|
+
* (c) 2020-2026 Highsoft AS
|
|
23242
24438
|
*
|
|
23243
|
-
*
|
|
24439
|
+
* A commercial license may be required depending on use.
|
|
24440
|
+
* See www.highcharts.com/license
|
|
23244
24441
|
*
|
|
23245
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23246
24442
|
*
|
|
23247
24443
|
* Authors:
|
|
23248
24444
|
* - Dawid Dragula
|
|
@@ -23279,11 +24475,11 @@ class CellRenderer {
|
|
|
23279
24475
|
;// ./code/grid/es-modules/Data/Converters/CSVConverter.js
|
|
23280
24476
|
/* *
|
|
23281
24477
|
*
|
|
23282
|
-
* (c) 2009-
|
|
24478
|
+
* (c) 2009-2026 Highsoft AS
|
|
23283
24479
|
*
|
|
23284
|
-
*
|
|
24480
|
+
* A commercial license may be required depending on use.
|
|
24481
|
+
* See www.highcharts.com/license
|
|
23285
24482
|
*
|
|
23286
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23287
24483
|
*
|
|
23288
24484
|
* Authors:
|
|
23289
24485
|
* - Torstein Hønsi
|
|
@@ -23655,11 +24851,11 @@ Converters_DataConverter.registerType('CSV', CSVConverter);
|
|
|
23655
24851
|
;// ./code/grid/es-modules/Data/Connectors/CSVConnector.js
|
|
23656
24852
|
/* *
|
|
23657
24853
|
*
|
|
23658
|
-
* (c) 2009-
|
|
24854
|
+
* (c) 2009-2026 Highsoft AS
|
|
23659
24855
|
*
|
|
23660
|
-
*
|
|
24856
|
+
* A commercial license may be required depending on use.
|
|
24857
|
+
* See www.highcharts.com/license
|
|
23661
24858
|
*
|
|
23662
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23663
24859
|
*
|
|
23664
24860
|
* Authors:
|
|
23665
24861
|
* - Torstein Hønsi
|
|
@@ -23806,11 +25002,11 @@ Connectors_DataConnector.registerType('CSV', CSVConnector);
|
|
|
23806
25002
|
;// ./code/grid/es-modules/Data/Converters/GoogleSheetsConverter.js
|
|
23807
25003
|
/* *
|
|
23808
25004
|
*
|
|
23809
|
-
* (c) 2009-
|
|
25005
|
+
* (c) 2009-2026 Highsoft AS
|
|
23810
25006
|
*
|
|
23811
|
-
*
|
|
25007
|
+
* A commercial license may be required depending on use.
|
|
25008
|
+
* See www.highcharts.com/license
|
|
23812
25009
|
*
|
|
23813
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23814
25010
|
*
|
|
23815
25011
|
* Authors:
|
|
23816
25012
|
* - Torstein Hønsi
|
|
@@ -23943,11 +25139,11 @@ function isDateObject(value) {
|
|
|
23943
25139
|
;// ./code/grid/es-modules/Data/Connectors/GoogleSheetsConnector.js
|
|
23944
25140
|
/* *
|
|
23945
25141
|
*
|
|
23946
|
-
* (c) 2009-
|
|
25142
|
+
* (c) 2009-2026 Highsoft AS
|
|
23947
25143
|
*
|
|
23948
|
-
*
|
|
25144
|
+
* A commercial license may be required depending on use.
|
|
25145
|
+
* See www.highcharts.com/license
|
|
23949
25146
|
*
|
|
23950
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23951
25147
|
*
|
|
23952
25148
|
* Authors:
|
|
23953
25149
|
* - Torstein Hønsi
|
|
@@ -24171,11 +25367,11 @@ Connectors_DataConnector.registerType('GoogleSheets', GoogleSheetsConnector);
|
|
|
24171
25367
|
;// ./code/grid/es-modules/Data/Converters/HTMLTableConverter.js
|
|
24172
25368
|
/* *
|
|
24173
25369
|
*
|
|
24174
|
-
* (c) 2009-
|
|
25370
|
+
* (c) 2009-2026 Highsoft AS
|
|
24175
25371
|
*
|
|
24176
|
-
*
|
|
25372
|
+
* A commercial license may be required depending on use.
|
|
25373
|
+
* See www.highcharts.com/license
|
|
24177
25374
|
*
|
|
24178
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
24179
25375
|
*
|
|
24180
25376
|
* Authors:
|
|
24181
25377
|
* - Torstein Hønsi
|
|
@@ -24535,11 +25731,11 @@ Converters_DataConverter.registerType('HTMLTable', HTMLTableConverter);
|
|
|
24535
25731
|
;// ./code/grid/es-modules/Data/Connectors/HTMLTableConnector.js
|
|
24536
25732
|
/* *
|
|
24537
25733
|
*
|
|
24538
|
-
* (c) 2009-
|
|
25734
|
+
* (c) 2009-2026 Highsoft AS
|
|
24539
25735
|
*
|
|
24540
|
-
*
|
|
25736
|
+
* A commercial license may be required depending on use.
|
|
25737
|
+
* See www.highcharts.com/license
|
|
24541
25738
|
*
|
|
24542
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
24543
25739
|
*
|
|
24544
25740
|
* Authors:
|
|
24545
25741
|
* - Torstein Hønsi
|
|
@@ -24656,11 +25852,11 @@ Connectors_DataConnector.registerType('HTMLTable', HTMLTableConnector);
|
|
|
24656
25852
|
;// ./code/grid/es-modules/Data/Converters/JSONConverter.js
|
|
24657
25853
|
/* *
|
|
24658
25854
|
*
|
|
24659
|
-
* (c) 2009-
|
|
25855
|
+
* (c) 2009-2026 Highsoft AS
|
|
24660
25856
|
*
|
|
24661
|
-
*
|
|
25857
|
+
* A commercial license may be required depending on use.
|
|
25858
|
+
* See www.highcharts.com/license
|
|
24662
25859
|
*
|
|
24663
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
24664
25860
|
*
|
|
24665
25861
|
* Authors:
|
|
24666
25862
|
* - Pawel Lysy
|
|
@@ -24897,11 +26093,11 @@ Converters_DataConverter.registerType('JSON', JSONConverter);
|
|
|
24897
26093
|
;// ./code/grid/es-modules/Data/Connectors/JSONConnector.js
|
|
24898
26094
|
/* *
|
|
24899
26095
|
*
|
|
24900
|
-
* (c) 2009-
|
|
26096
|
+
* (c) 2009-2026 Highsoft AS
|
|
24901
26097
|
*
|
|
24902
|
-
*
|
|
26098
|
+
* A commercial license may be required depending on use.
|
|
26099
|
+
* See www.highcharts.com/license
|
|
24903
26100
|
*
|
|
24904
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
24905
26101
|
*
|
|
24906
26102
|
* Authors:
|
|
24907
26103
|
* - Pawel Lysy
|
|
@@ -25055,11 +26251,11 @@ Connectors_DataConnector.registerType('JSON', JSONConnector);
|
|
|
25055
26251
|
;// ./code/grid/es-modules/Data/Modifiers/InvertModifier.js
|
|
25056
26252
|
/* *
|
|
25057
26253
|
*
|
|
25058
|
-
* (c) 2009-
|
|
26254
|
+
* (c) 2009-2026 Highsoft AS
|
|
25059
26255
|
*
|
|
25060
|
-
*
|
|
26256
|
+
* A commercial license may be required depending on use.
|
|
26257
|
+
* See www.highcharts.com/license
|
|
25061
26258
|
*
|
|
25062
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25063
26259
|
*
|
|
25064
26260
|
* Authors:
|
|
25065
26261
|
* - Wojciech Chmiel
|
|
@@ -25175,11 +26371,11 @@ Modifiers_DataModifier.registerType('Invert', InvertModifier);
|
|
|
25175
26371
|
*
|
|
25176
26372
|
* Text Cell Renderer class
|
|
25177
26373
|
*
|
|
25178
|
-
* (c) 2020-
|
|
26374
|
+
* (c) 2020-2026 Highsoft AS
|
|
25179
26375
|
*
|
|
25180
|
-
*
|
|
26376
|
+
* A commercial license may be required depending on use.
|
|
26377
|
+
* See www.highcharts.com/license
|
|
25181
26378
|
*
|
|
25182
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25183
26379
|
*
|
|
25184
26380
|
* Authors:
|
|
25185
26381
|
* - Dawid Dragula
|
|
@@ -25251,11 +26447,11 @@ registerRenderer('text', TextRenderer);
|
|
|
25251
26447
|
*
|
|
25252
26448
|
* Checkbox Cell Content class
|
|
25253
26449
|
*
|
|
25254
|
-
* (c) 2020-
|
|
26450
|
+
* (c) 2020-2026 Highsoft AS
|
|
25255
26451
|
*
|
|
25256
|
-
*
|
|
26452
|
+
* A commercial license may be required depending on use.
|
|
26453
|
+
* See www.highcharts.com/license
|
|
25257
26454
|
*
|
|
25258
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25259
26455
|
*
|
|
25260
26456
|
* Authors:
|
|
25261
26457
|
* - Dawid Dragula
|
|
@@ -25375,11 +26571,11 @@ class CheckboxContent extends CellRendering_CellContentPro {
|
|
|
25375
26571
|
*
|
|
25376
26572
|
* Checkbox Cell Renderer class
|
|
25377
26573
|
*
|
|
25378
|
-
* (c) 2020-
|
|
26574
|
+
* (c) 2020-2026 Highsoft AS
|
|
25379
26575
|
*
|
|
25380
|
-
*
|
|
26576
|
+
* A commercial license may be required depending on use.
|
|
26577
|
+
* See www.highcharts.com/license
|
|
25381
26578
|
*
|
|
25382
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25383
26579
|
*
|
|
25384
26580
|
* Authors:
|
|
25385
26581
|
* - Dawid Dragula
|
|
@@ -25442,11 +26638,11 @@ registerRenderer('checkbox', CheckboxRenderer);
|
|
|
25442
26638
|
*
|
|
25443
26639
|
* Select Cell Content class
|
|
25444
26640
|
*
|
|
25445
|
-
* (c) 2020-
|
|
26641
|
+
* (c) 2020-2026 Highsoft AS
|
|
25446
26642
|
*
|
|
25447
|
-
*
|
|
26643
|
+
* A commercial license may be required depending on use.
|
|
26644
|
+
* See www.highcharts.com/license
|
|
25448
26645
|
*
|
|
25449
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25450
26646
|
*
|
|
25451
26647
|
* Authors:
|
|
25452
26648
|
* - Dawid Dragula
|
|
@@ -25619,11 +26815,11 @@ class SelectContent extends CellRendering_CellContentPro {
|
|
|
25619
26815
|
*
|
|
25620
26816
|
* Select Cell Renderer class
|
|
25621
26817
|
*
|
|
25622
|
-
* (c) 2020-
|
|
26818
|
+
* (c) 2020-2026 Highsoft AS
|
|
25623
26819
|
*
|
|
25624
|
-
*
|
|
26820
|
+
* A commercial license may be required depending on use.
|
|
26821
|
+
* See www.highcharts.com/license
|
|
25625
26822
|
*
|
|
25626
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25627
26823
|
*
|
|
25628
26824
|
* Authors:
|
|
25629
26825
|
* - Dawid Dragula
|
|
@@ -25687,11 +26883,11 @@ registerRenderer('select', SelectRenderer);
|
|
|
25687
26883
|
*
|
|
25688
26884
|
* Text Input Cell Content class
|
|
25689
26885
|
*
|
|
25690
|
-
* (c) 2020-
|
|
26886
|
+
* (c) 2020-2026 Highsoft AS
|
|
25691
26887
|
*
|
|
25692
|
-
*
|
|
26888
|
+
* A commercial license may be required depending on use.
|
|
26889
|
+
* See www.highcharts.com/license
|
|
25693
26890
|
*
|
|
25694
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25695
26891
|
*
|
|
25696
26892
|
* Authors:
|
|
25697
26893
|
* - Dawid Dragula
|
|
@@ -25859,11 +27055,11 @@ class TextInputContent extends CellRendering_CellContentPro {
|
|
|
25859
27055
|
*
|
|
25860
27056
|
* Text Input Cell Renderer class
|
|
25861
27057
|
*
|
|
25862
|
-
* (c) 2020-
|
|
27058
|
+
* (c) 2020-2026 Highsoft AS
|
|
25863
27059
|
*
|
|
25864
|
-
*
|
|
27060
|
+
* A commercial license may be required depending on use.
|
|
27061
|
+
* See www.highcharts.com/license
|
|
25865
27062
|
*
|
|
25866
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25867
27063
|
*
|
|
25868
27064
|
* Authors:
|
|
25869
27065
|
* - Dawid Dragula
|
|
@@ -25926,11 +27122,11 @@ registerRenderer('textInput', TextInputRenderer);
|
|
|
25926
27122
|
*
|
|
25927
27123
|
* Date Input Cell Content Base class
|
|
25928
27124
|
*
|
|
25929
|
-
* (c) 2020-
|
|
27125
|
+
* (c) 2020-2026 Highsoft AS
|
|
25930
27126
|
*
|
|
25931
|
-
*
|
|
27127
|
+
* A commercial license may be required depending on use.
|
|
27128
|
+
* See www.highcharts.com/license
|
|
25932
27129
|
*
|
|
25933
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
25934
27130
|
*
|
|
25935
27131
|
* Authors:
|
|
25936
27132
|
* - Dawid Dragula
|
|
@@ -26075,11 +27271,11 @@ class DateInputContentBase extends CellRendering_CellContentPro {
|
|
|
26075
27271
|
*
|
|
26076
27272
|
* Date Input Cell Content class
|
|
26077
27273
|
*
|
|
26078
|
-
* (c) 2020-
|
|
27274
|
+
* (c) 2020-2026 Highsoft AS
|
|
26079
27275
|
*
|
|
26080
|
-
*
|
|
27276
|
+
* A commercial license may be required depending on use.
|
|
27277
|
+
* See www.highcharts.com/license
|
|
26081
27278
|
*
|
|
26082
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26083
27279
|
*
|
|
26084
27280
|
* Authors:
|
|
26085
27281
|
* - Dawid Dragula
|
|
@@ -26116,11 +27312,11 @@ class DateInputContent extends ContentTypes_DateInputContentBase {
|
|
|
26116
27312
|
*
|
|
26117
27313
|
* Date Input Cell Renderer class
|
|
26118
27314
|
*
|
|
26119
|
-
* (c) 2020-
|
|
27315
|
+
* (c) 2020-2026 Highsoft AS
|
|
26120
27316
|
*
|
|
26121
|
-
*
|
|
27317
|
+
* A commercial license may be required depending on use.
|
|
27318
|
+
* See www.highcharts.com/license
|
|
26122
27319
|
*
|
|
26123
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26124
27320
|
*
|
|
26125
27321
|
* Authors:
|
|
26126
27322
|
* - Dawid Dragula
|
|
@@ -26183,11 +27379,11 @@ registerRenderer('dateInput', DateInputRenderer);
|
|
|
26183
27379
|
*
|
|
26184
27380
|
* DateTime Input Cell Content class
|
|
26185
27381
|
*
|
|
26186
|
-
* (c) 2020-
|
|
27382
|
+
* (c) 2020-2026 Highsoft AS
|
|
26187
27383
|
*
|
|
26188
|
-
*
|
|
27384
|
+
* A commercial license may be required depending on use.
|
|
27385
|
+
* See www.highcharts.com/license
|
|
26189
27386
|
*
|
|
26190
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26191
27387
|
*
|
|
26192
27388
|
* Authors:
|
|
26193
27389
|
* - Dawid Dragula
|
|
@@ -26223,11 +27419,11 @@ class DateTimeInputContent extends ContentTypes_DateInputContentBase {
|
|
|
26223
27419
|
*
|
|
26224
27420
|
* Date Time Input Cell Renderer class
|
|
26225
27421
|
*
|
|
26226
|
-
* (c) 2020-
|
|
27422
|
+
* (c) 2020-2026 Highsoft AS
|
|
26227
27423
|
*
|
|
26228
|
-
*
|
|
27424
|
+
* A commercial license may be required depending on use.
|
|
27425
|
+
* See www.highcharts.com/license
|
|
26229
27426
|
*
|
|
26230
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26231
27427
|
*
|
|
26232
27428
|
* Authors:
|
|
26233
27429
|
* - Dawid Dragula
|
|
@@ -26289,11 +27485,11 @@ registerRenderer('dateTimeInput', DateTimeInputRenderer);
|
|
|
26289
27485
|
*
|
|
26290
27486
|
* Time Input Cell Content class
|
|
26291
27487
|
*
|
|
26292
|
-
* (c) 2020-
|
|
27488
|
+
* (c) 2020-2026 Highsoft AS
|
|
26293
27489
|
*
|
|
26294
|
-
*
|
|
27490
|
+
* A commercial license may be required depending on use.
|
|
27491
|
+
* See www.highcharts.com/license
|
|
26295
27492
|
*
|
|
26296
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26297
27493
|
*
|
|
26298
27494
|
* Authors:
|
|
26299
27495
|
* - Dawid Dragula
|
|
@@ -26332,11 +27528,11 @@ class TimeInputContent extends ContentTypes_DateInputContentBase {
|
|
|
26332
27528
|
*
|
|
26333
27529
|
* Time Input Cell Renderer class
|
|
26334
27530
|
*
|
|
26335
|
-
* (c) 2020-
|
|
27531
|
+
* (c) 2020-2026 Highsoft AS
|
|
26336
27532
|
*
|
|
26337
|
-
*
|
|
27533
|
+
* A commercial license may be required depending on use.
|
|
27534
|
+
* See www.highcharts.com/license
|
|
26338
27535
|
*
|
|
26339
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26340
27536
|
*
|
|
26341
27537
|
* Authors:
|
|
26342
27538
|
* - Dawid Dragula
|
|
@@ -26398,11 +27594,11 @@ registerRenderer('timeInput', TimeInputRenderer);
|
|
|
26398
27594
|
*
|
|
26399
27595
|
* Sparkline Cell Content class
|
|
26400
27596
|
*
|
|
26401
|
-
* (c) 2020-
|
|
27597
|
+
* (c) 2020-2026 Highsoft AS
|
|
26402
27598
|
*
|
|
26403
|
-
*
|
|
27599
|
+
* A commercial license may be required depending on use.
|
|
27600
|
+
* See www.highcharts.com/license
|
|
26404
27601
|
*
|
|
26405
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26406
27602
|
*
|
|
26407
27603
|
* Authors:
|
|
26408
27604
|
* - Dawid Dragula
|
|
@@ -26561,11 +27757,11 @@ SparklineContent.defaultChartOptions = {
|
|
|
26561
27757
|
*
|
|
26562
27758
|
* Sparkline Cell Renderer class
|
|
26563
27759
|
*
|
|
26564
|
-
* (c) 2020-
|
|
27760
|
+
* (c) 2020-2026 Highsoft AS
|
|
26565
27761
|
*
|
|
26566
|
-
*
|
|
27762
|
+
* A commercial license may be required depending on use.
|
|
27763
|
+
* See www.highcharts.com/license
|
|
26567
27764
|
*
|
|
26568
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26569
27765
|
*
|
|
26570
27766
|
* Authors:
|
|
26571
27767
|
* - Dawid Dragula
|
|
@@ -26644,11 +27840,11 @@ registerRenderer('sparkline', SparklineRenderer);
|
|
|
26644
27840
|
*
|
|
26645
27841
|
* Text Input Cell Content class
|
|
26646
27842
|
*
|
|
26647
|
-
* (c) 2020-
|
|
27843
|
+
* (c) 2020-2026 Highsoft AS
|
|
26648
27844
|
*
|
|
26649
|
-
*
|
|
27845
|
+
* A commercial license may be required depending on use.
|
|
27846
|
+
* See www.highcharts.com/license
|
|
26650
27847
|
*
|
|
26651
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26652
27848
|
*
|
|
26653
27849
|
* Authors:
|
|
26654
27850
|
* - Sebastian Bochan
|
|
@@ -26806,11 +28002,11 @@ class NumberInputContent extends CellRendering_CellContentPro {
|
|
|
26806
28002
|
*
|
|
26807
28003
|
* Date Input Cell Renderer class
|
|
26808
28004
|
*
|
|
26809
|
-
* (c) 2020-
|
|
28005
|
+
* (c) 2020-2026 Highsoft AS
|
|
26810
28006
|
*
|
|
26811
|
-
*
|
|
28007
|
+
* A commercial license may be required depending on use.
|
|
28008
|
+
* See www.highcharts.com/license
|
|
26812
28009
|
*
|
|
26813
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
26814
28010
|
*
|
|
26815
28011
|
* Authors:
|
|
26816
28012
|
* - Sebastian Bochan
|
|
@@ -26983,9 +28179,15 @@ PaginationComposition.compose(G.Pagination);
|
|
|
26983
28179
|
*
|
|
26984
28180
|
* */
|
|
26985
28181
|
|
|
26986
|
-
const { classNamePrefix: grid_pro_src_classNamePrefix, defaultOptions: grid_pro_src_defaultOptions,
|
|
26987
|
-
|
|
26988
|
-
|
|
28182
|
+
const { classNamePrefix: grid_pro_src_classNamePrefix, defaultOptions: grid_pro_src_defaultOptions, grid, grids, isHighContrastModeActive: grid_pro_src_isHighContrastModeActive, merge: grid_pro_src_merge, product, setOptions: grid_pro_src_setOptions, version: grid_pro_src_version, win: grid_pro_src_win } = G;
|
|
28183
|
+
/* *
|
|
28184
|
+
*
|
|
28185
|
+
* Classic Extensions
|
|
28186
|
+
*
|
|
28187
|
+
* */
|
|
28188
|
+
const wnd = G.win;
|
|
28189
|
+
if (wnd.Highcharts) {
|
|
28190
|
+
G.CellRendererRegistry.types.sparkline.useHighcharts(wnd.Highcharts);
|
|
26989
28191
|
}
|
|
26990
28192
|
/* harmony default export */ const grid_pro_src = (G);
|
|
26991
28193
|
|