@eclipse-scout/chart 25.2.20 → 26.1.0-beta.1

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.
Files changed (44) hide show
  1. package/README.md +2 -2
  2. package/dist/cyclonedx/bom.json +9 -9
  3. package/dist/cyclonedx/bom.xml +9 -9
  4. package/dist/d.ts/src/chart/AbstractSvgChartRenderer.d.ts +0 -1
  5. package/dist/d.ts/src/chart/AbstractSvgChartRenderer.d.ts.map +1 -1
  6. package/dist/d.ts/src/chart/ChartJsRenderer.d.ts +1 -1
  7. package/dist/d.ts/src/chart/ChartJsRenderer.d.ts.map +1 -1
  8. package/dist/d.ts/src/chart/VennChartRenderer.d.ts +0 -1
  9. package/dist/d.ts/src/chart/VennChartRenderer.d.ts.map +1 -1
  10. package/dist/d.ts/src/chart/chartJsDateAdapter.d.ts.map +1 -1
  11. package/dist/d.ts/src/index.d.ts +1 -0
  12. package/dist/d.ts/src/index.d.ts.map +1 -1
  13. package/dist/d.ts/src/table/controls/ChartTableControl.d.ts +15 -7
  14. package/dist/d.ts/src/table/controls/ChartTableControl.d.ts.map +1 -1
  15. package/dist/d.ts/src/table/controls/FocusFirstChartTypeKeyStroke.d.ts +12 -0
  16. package/dist/d.ts/src/table/controls/FocusFirstChartTypeKeyStroke.d.ts.map +1 -0
  17. package/dist/eclipse-scout-chart-a0ba2d4527b56d5f365b.min.js +3 -0
  18. package/dist/eclipse-scout-chart-a0ba2d4527b56d5f365b.min.js.map +1 -0
  19. package/dist/{eclipse-scout-chart-theme-dark-378a537154001198a741.min.css → eclipse-scout-chart-theme-dark-b66633525a81fd799cce.min.css} +1 -1
  20. package/dist/eclipse-scout-chart-theme-dark.css +20 -24
  21. package/dist/eclipse-scout-chart-theme-dark.css.map +1 -1
  22. package/dist/{eclipse-scout-chart-theme-03e8dfdce2c2cd602f40.min.css → eclipse-scout-chart-theme-f814f69e9d7fea0e5af7.min.css} +1 -1
  23. package/dist/eclipse-scout-chart-theme.css +20 -24
  24. package/dist/eclipse-scout-chart-theme.css.map +1 -1
  25. package/dist/eclipse-scout-chart.esm-93dfff2828c44625222f.min.js +3 -0
  26. package/dist/eclipse-scout-chart.esm-93dfff2828c44625222f.min.js.map +1 -0
  27. package/dist/eclipse-scout-chart.esm.js +341 -209
  28. package/dist/eclipse-scout-chart.esm.js.map +1 -1
  29. package/dist/eclipse-scout-chart.js +311 -179
  30. package/dist/eclipse-scout-chart.js.map +1 -1
  31. package/dist/file-list +6 -6
  32. package/dist/texts.json +28 -12
  33. package/package.json +11 -11
  34. package/src/chart/ChartJsRenderer.ts +13 -2
  35. package/src/chart/SalesfunnelChartRenderer.ts +7 -7
  36. package/src/chart/chartJsDateAdapter.ts +2 -2
  37. package/src/index.ts +1 -0
  38. package/src/table/controls/ChartTableControl.less +15 -28
  39. package/src/table/controls/ChartTableControl.ts +114 -57
  40. package/src/table/controls/FocusFirstChartTypeKeyStroke.ts +37 -0
  41. package/dist/eclipse-scout-chart-bbeb0621046a40fee663.min.js +0 -3
  42. package/dist/eclipse-scout-chart-bbeb0621046a40fee663.min.js.map +0 -1
  43. package/dist/eclipse-scout-chart.esm-4768ef7787c7b4db4fea.min.js +0 -3
  44. package/dist/eclipse-scout-chart.esm-4768ef7787c7b4db4fea.min.js.map +0 -1
@@ -2,11 +2,11 @@
2
2
  /******/ "use strict";
3
3
  /******/ var __webpack_modules__ = ({
4
4
 
5
- /***/ "./src/bookmark/ChartTableControlConfigHelperImpl.ts":
5
+ /***/ "./src/bookmark/ChartTableControlConfigHelperImpl.ts"
6
6
  /*!***********************************************************!*\
7
7
  !*** ./src/bookmark/ChartTableControlConfigHelperImpl.ts ***!
8
8
  \***********************************************************/
9
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10
10
 
11
11
  __webpack_require__.r(__webpack_exports__);
12
12
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -69,13 +69,13 @@ class ChartTableControlConfigHelperImpl extends _eclipse_scout_core__WEBPACK_IMP
69
69
  }
70
70
  }
71
71
 
72
- /***/ }),
72
+ /***/ },
73
73
 
74
- /***/ "./src/chart/AbstractChartRenderer.ts":
74
+ /***/ "./src/chart/AbstractChartRenderer.ts"
75
75
  /*!********************************************!*\
76
76
  !*** ./src/chart/AbstractChartRenderer.ts ***!
77
77
  \********************************************/
78
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
78
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
79
79
 
80
80
  __webpack_require__.r(__webpack_exports__);
81
81
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -265,13 +265,13 @@ class AbstractChartRenderer extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE
265
265
  }
266
266
  }
267
267
 
268
- /***/ }),
268
+ /***/ },
269
269
 
270
- /***/ "./src/chart/AbstractSvgChartRenderer.ts":
270
+ /***/ "./src/chart/AbstractSvgChartRenderer.ts"
271
271
  /*!***********************************************!*\
272
272
  !*** ./src/chart/AbstractSvgChartRenderer.ts ***!
273
273
  \***********************************************/
274
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
274
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
275
275
 
276
276
  __webpack_require__.r(__webpack_exports__);
277
277
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -674,13 +674,13 @@ class AbstractSvgChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_2__.Abstr
674
674
  }
675
675
  }
676
676
 
677
- /***/ }),
677
+ /***/ },
678
678
 
679
- /***/ "./src/chart/Chart.ts":
679
+ /***/ "./src/chart/Chart.ts"
680
680
  /*!****************************!*\
681
681
  !*** ./src/chart/Chart.ts ***!
682
682
  \****************************/
683
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
683
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
684
684
 
685
685
  __webpack_require__.r(__webpack_exports__);
686
686
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -1079,13 +1079,13 @@ var ChartColorMode;
1079
1079
  ChartColorMode["DATA"] = "data";
1080
1080
  })(ChartColorMode || (ChartColorMode = {}));
1081
1081
 
1082
- /***/ }),
1082
+ /***/ },
1083
1083
 
1084
- /***/ "./src/chart/ChartAdapter.ts":
1084
+ /***/ "./src/chart/ChartAdapter.ts"
1085
1085
  /*!***********************************!*\
1086
1086
  !*** ./src/chart/ChartAdapter.ts ***!
1087
1087
  \***********************************/
1088
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1088
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1089
1089
 
1090
1090
  __webpack_require__.r(__webpack_exports__);
1091
1091
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -1116,24 +1116,24 @@ class ChartAdapter extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.Mode
1116
1116
  }
1117
1117
  }
1118
1118
 
1119
- /***/ }),
1119
+ /***/ },
1120
1120
 
1121
- /***/ "./src/chart/ChartEventMap.ts":
1121
+ /***/ "./src/chart/ChartEventMap.ts"
1122
1122
  /*!************************************!*\
1123
1123
  !*** ./src/chart/ChartEventMap.ts ***!
1124
1124
  \************************************/
1125
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1125
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1126
1126
 
1127
1127
  __webpack_require__.r(__webpack_exports__);
1128
1128
 
1129
1129
 
1130
- /***/ }),
1130
+ /***/ },
1131
1131
 
1132
- /***/ "./src/chart/ChartJsRenderer.ts":
1132
+ /***/ "./src/chart/ChartJsRenderer.ts"
1133
1133
  /*!**************************************!*\
1134
1134
  !*** ./src/chart/ChartJsRenderer.ts ***!
1135
1135
  \**************************************/
1136
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1136
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1137
1137
 
1138
1138
  __webpack_require__.r(__webpack_exports__);
1139
1139
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -3792,8 +3792,8 @@ class ChartJsRenderer extends _index__WEBPACK_IMPORTED_MODULE_0__.AbstractChartR
3792
3792
  yAxisDiffType.grid.drawTicks = true;
3793
3793
  let yAxisType = datasets[0].type || type,
3794
3794
  yAxisDiffTypeType = datasetsDiffType[0].type || type,
3795
- yAxisTypeLabel = this.chart.session.text('ui.' + yAxisType),
3796
- yAxisDiffTypeTypeLabel = this.chart.session.text('ui.' + yAxisDiffTypeType),
3795
+ yAxisTypeLabel = this._typeText(yAxisType),
3796
+ yAxisDiffTypeTypeLabel = this._typeText(yAxisDiffTypeType),
3797
3797
  yAxisScaleLabel = options.scaleLabelByTypeMap ? options.scaleLabelByTypeMap[yAxisType] : null,
3798
3798
  yAxisDiffTypeScaleLabel = options.scaleLabelByTypeMap ? options.scaleLabelByTypeMap[yAxisDiffTypeType] : null;
3799
3799
  yAxis.title.display = true;
@@ -3807,6 +3807,16 @@ class ChartJsRenderer extends _index__WEBPACK_IMPORTED_MODULE_0__.AbstractChartR
3807
3807
  dataset.yAxisID = 'yDiffType';
3808
3808
  });
3809
3809
  }
3810
+ _typeText(chartType) {
3811
+ if (chartType === _index__WEBPACK_IMPORTED_MODULE_0__.Chart.Type.BAR) {
3812
+ return this.chart.session.text('ui.ChartTypeBar');
3813
+ }
3814
+ if (chartType === _index__WEBPACK_IMPORTED_MODULE_0__.Chart.Type.LINE) {
3815
+ return this.chart.session.text('ui.ChartTypeLine');
3816
+ }
3817
+ // Not relevant for other types because the text is only used for the COMBO_BAR_LINE chart
3818
+ return '';
3819
+ }
3810
3820
  _adjustAxisMaxMin(axis, maxTicks, maxMinValue) {
3811
3821
  if (!axis) {
3812
3822
  return;
@@ -3835,13 +3845,13 @@ class ChartJsRenderer extends _index__WEBPACK_IMPORTED_MODULE_0__.AbstractChartR
3835
3845
  }
3836
3846
  }
3837
3847
 
3838
- /***/ }),
3848
+ /***/ },
3839
3849
 
3840
- /***/ "./src/chart/ChartLayout.ts":
3850
+ /***/ "./src/chart/ChartLayout.ts"
3841
3851
  /*!**********************************!*\
3842
3852
  !*** ./src/chart/ChartLayout.ts ***!
3843
3853
  \**********************************/
3844
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3854
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3845
3855
 
3846
3856
  __webpack_require__.r(__webpack_exports__);
3847
3857
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -3894,24 +3904,24 @@ class ChartLayout extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.Abstr
3894
3904
  }
3895
3905
  }
3896
3906
 
3897
- /***/ }),
3907
+ /***/ },
3898
3908
 
3899
- /***/ "./src/chart/ChartModel.ts":
3909
+ /***/ "./src/chart/ChartModel.ts"
3900
3910
  /*!*********************************!*\
3901
3911
  !*** ./src/chart/ChartModel.ts ***!
3902
3912
  \*********************************/
3903
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3913
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3904
3914
 
3905
3915
  __webpack_require__.r(__webpack_exports__);
3906
3916
 
3907
3917
 
3908
- /***/ }),
3918
+ /***/ },
3909
3919
 
3910
- /***/ "./src/chart/FulfillmentChartRenderer.ts":
3920
+ /***/ "./src/chart/FulfillmentChartRenderer.ts"
3911
3921
  /*!***********************************************!*\
3912
3922
  !*** ./src/chart/FulfillmentChartRenderer.ts ***!
3913
3923
  \***********************************************/
3914
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3924
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3915
3925
 
3916
3926
  __webpack_require__.r(__webpack_exports__);
3917
3927
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -4085,13 +4095,13 @@ class FulfillmentChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_1__.Abstr
4085
4095
  }
4086
4096
  }
4087
4097
 
4088
- /***/ }),
4098
+ /***/ },
4089
4099
 
4090
- /***/ "./src/chart/SalesfunnelChartRenderer.ts":
4100
+ /***/ "./src/chart/SalesfunnelChartRenderer.ts"
4091
4101
  /*!***********************************************!*\
4092
4102
  !*** ./src/chart/SalesfunnelChartRenderer.ts ***!
4093
4103
  \***********************************************/
4094
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4104
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4095
4105
 
4096
4106
  __webpack_require__.r(__webpack_exports__);
4097
4107
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -4103,7 +4113,7 @@ __webpack_require__.r(__webpack_exports__);
4103
4113
  /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! jquery */ "jquery");
4104
4114
  /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_2__);
4105
4115
  /*
4106
- * Copyright (c) 2010, 2025 BSI Business Systems Integration AG
4116
+ * Copyright (c) 2010, 2026 BSI Business Systems Integration AG
4107
4117
  *
4108
4118
  * This program and the accompanying materials are made
4109
4119
  * available under the terms of the Eclipse Public License 2.0
@@ -4393,12 +4403,12 @@ class SalesfunnelChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_1__.Abstr
4393
4403
  }
4394
4404
  _analyzeData(valueGroups) {
4395
4405
  let result = {
4396
- labelCount: 0,
4397
- maxValue: null,
4398
- maxLengthFirstValueRow: 0,
4399
- maxLengthSecondValueRow: 0
4400
- },
4401
- labelClass = this._dynamicCssClass('salesfunnel-label');
4406
+ labelCount: 0,
4407
+ maxValue: null,
4408
+ maxLengthFirstValueRow: 0,
4409
+ maxLengthSecondValueRow: 0
4410
+ };
4411
+ let labelClass = this._dynamicCssClass('salesfunnel-label');
4402
4412
  for (let i = 0; i < valueGroups.length; i++) {
4403
4413
  let valueGroup = valueGroups[i];
4404
4414
  result.labelCount = Math.max(result.labelCount, valueGroup.values.length);
@@ -4462,13 +4472,13 @@ class SalesfunnelChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_1__.Abstr
4462
4472
  }
4463
4473
  }
4464
4474
 
4465
- /***/ }),
4475
+ /***/ },
4466
4476
 
4467
- /***/ "./src/chart/SpeedoChartRenderer.ts":
4477
+ /***/ "./src/chart/SpeedoChartRenderer.ts"
4468
4478
  /*!******************************************!*\
4469
4479
  !*** ./src/chart/SpeedoChartRenderer.ts ***!
4470
4480
  \******************************************/
4471
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4481
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4472
4482
 
4473
4483
  __webpack_require__.r(__webpack_exports__);
4474
4484
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -4846,13 +4856,13 @@ class SpeedoChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_1__.AbstractSv
4846
4856
  }
4847
4857
  _staticBlock();
4848
4858
 
4849
- /***/ }),
4859
+ /***/ },
4850
4860
 
4851
- /***/ "./src/chart/VennAsync3Calculator.ts":
4861
+ /***/ "./src/chart/VennAsync3Calculator.ts"
4852
4862
  /*!*******************************************!*\
4853
4863
  !*** ./src/chart/VennAsync3Calculator.ts ***!
4854
4864
  \*******************************************/
4855
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4865
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4856
4866
 
4857
4867
  __webpack_require__.r(__webpack_exports__);
4858
4868
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5058,13 +5068,13 @@ class VennAsync3Calculator {
5058
5068
  }
5059
5069
  }
5060
5070
 
5061
- /***/ }),
5071
+ /***/ },
5062
5072
 
5063
- /***/ "./src/chart/VennChartRenderer.ts":
5073
+ /***/ "./src/chart/VennChartRenderer.ts"
5064
5074
  /*!****************************************!*\
5065
5075
  !*** ./src/chart/VennChartRenderer.ts ***!
5066
5076
  \****************************************/
5067
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5077
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5068
5078
 
5069
5079
  __webpack_require__.r(__webpack_exports__);
5070
5080
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5441,13 +5451,13 @@ class VennChartRenderer extends _index__WEBPACK_IMPORTED_MODULE_0__.AbstractSvgC
5441
5451
  }
5442
5452
  }
5443
5453
 
5444
- /***/ }),
5454
+ /***/ },
5445
5455
 
5446
- /***/ "./src/chart/VennCircle.ts":
5456
+ /***/ "./src/chart/VennCircle.ts"
5447
5457
  /*!*********************************!*\
5448
5458
  !*** ./src/chart/VennCircle.ts ***!
5449
5459
  \*********************************/
5450
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5460
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5451
5461
 
5452
5462
  __webpack_require__.r(__webpack_exports__);
5453
5463
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5491,13 +5501,13 @@ class VennCircle {
5491
5501
  }
5492
5502
  }
5493
5503
 
5494
- /***/ }),
5504
+ /***/ },
5495
5505
 
5496
- /***/ "./src/chart/VennCircleHelper.ts":
5506
+ /***/ "./src/chart/VennCircleHelper.ts"
5497
5507
  /*!***************************************!*\
5498
5508
  !*** ./src/chart/VennCircleHelper.ts ***!
5499
5509
  \***************************************/
5500
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5510
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5501
5511
 
5502
5512
  __webpack_require__.r(__webpack_exports__);
5503
5513
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5582,13 +5592,13 @@ class VennCircleHelper {
5582
5592
  }
5583
5593
  }
5584
5594
 
5585
- /***/ }),
5595
+ /***/ },
5586
5596
 
5587
- /***/ "./src/chart/chartJsDateAdapter.ts":
5597
+ /***/ "./src/chart/chartJsDateAdapter.ts"
5588
5598
  /*!*****************************************!*\
5589
5599
  !*** ./src/chart/chartJsDateAdapter.ts ***!
5590
5600
  \*****************************************/
5591
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5601
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5592
5602
 
5593
5603
  __webpack_require__.r(__webpack_exports__);
5594
5604
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5771,13 +5781,13 @@ function _getNumberOfDays(month, year) {
5771
5781
  return 31;
5772
5782
  }
5773
5783
 
5774
- /***/ }),
5784
+ /***/ },
5775
5785
 
5776
- /***/ "./src/form/fields/chartfield/ChartField.ts":
5786
+ /***/ "./src/form/fields/chartfield/ChartField.ts"
5777
5787
  /*!**************************************************!*\
5778
5788
  !*** ./src/form/fields/chartfield/ChartField.ts ***!
5779
5789
  \**************************************************/
5780
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5790
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5781
5791
 
5782
5792
  __webpack_require__.r(__webpack_exports__);
5783
5793
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5824,13 +5834,13 @@ class ChartField extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.FormFi
5824
5834
  }
5825
5835
  }
5826
5836
 
5827
- /***/ }),
5837
+ /***/ },
5828
5838
 
5829
- /***/ "./src/form/fields/chartfield/ChartFieldAdapter.ts":
5839
+ /***/ "./src/form/fields/chartfield/ChartFieldAdapter.ts"
5830
5840
  /*!*********************************************************!*\
5831
5841
  !*** ./src/form/fields/chartfield/ChartFieldAdapter.ts ***!
5832
5842
  \*********************************************************/
5833
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5843
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5834
5844
 
5835
5845
  __webpack_require__.r(__webpack_exports__);
5836
5846
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5850,24 +5860,24 @@ __webpack_require__.r(__webpack_exports__);
5850
5860
 
5851
5861
  class ChartFieldAdapter extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.FormFieldAdapter {}
5852
5862
 
5853
- /***/ }),
5863
+ /***/ },
5854
5864
 
5855
- /***/ "./src/form/fields/chartfield/ChartFieldModel.ts":
5865
+ /***/ "./src/form/fields/chartfield/ChartFieldModel.ts"
5856
5866
  /*!*******************************************************!*\
5857
5867
  !*** ./src/form/fields/chartfield/ChartFieldModel.ts ***!
5858
5868
  \*******************************************************/
5859
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5869
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5860
5870
 
5861
5871
  __webpack_require__.r(__webpack_exports__);
5862
5872
 
5863
5873
 
5864
- /***/ }),
5874
+ /***/ },
5865
5875
 
5866
- /***/ "./src/index.ts":
5876
+ /***/ "./src/index.ts"
5867
5877
  /*!**********************!*\
5868
5878
  !*** ./src/index.ts ***!
5869
5879
  \**********************/
5870
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5880
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5871
5881
 
5872
5882
  __webpack_require__.r(__webpack_exports__);
5873
5883
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -5888,6 +5898,7 @@ __webpack_require__.r(__webpack_exports__);
5888
5898
  /* harmony export */ ChartTableControlConfigHelperImpl: () => (/* reexport safe */ _bookmark_ChartTableControlConfigHelperImpl__WEBPACK_IMPORTED_MODULE_3__.ChartTableControlConfigHelperImpl),
5889
5899
  /* harmony export */ ChartTableControlLayout: () => (/* reexport safe */ _table_controls_ChartTableControlLayout__WEBPACK_IMPORTED_MODULE_30__.ChartTableControlLayout),
5890
5900
  /* harmony export */ ChartTableUserFilter: () => (/* reexport safe */ _table_controls_ChartTableUserFilter__WEBPACK_IMPORTED_MODULE_32__.ChartTableUserFilter),
5901
+ /* harmony export */ FocusFirstChartTypeKeyStroke: () => (/* reexport safe */ _table_controls_FocusFirstChartTypeKeyStroke__WEBPACK_IMPORTED_MODULE_34__.FocusFirstChartTypeKeyStroke),
5891
5902
  /* harmony export */ FulfillmentChartRenderer: () => (/* reexport safe */ _chart_FulfillmentChartRenderer__WEBPACK_IMPORTED_MODULE_13__.FulfillmentChartRenderer),
5892
5903
  /* harmony export */ SalesfunnelChartRenderer: () => (/* reexport safe */ _chart_SalesfunnelChartRenderer__WEBPACK_IMPORTED_MODULE_15__.SalesfunnelChartRenderer),
5893
5904
  /* harmony export */ SpeedoChartRenderer: () => (/* reexport safe */ _chart_SpeedoChartRenderer__WEBPACK_IMPORTED_MODULE_14__.SpeedoChartRenderer),
@@ -5933,6 +5944,7 @@ __webpack_require__.r(__webpack_exports__);
5933
5944
  /* harmony import */ var _table_controls_ChartTableControlModel__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./table/controls/ChartTableControlModel */ "./src/table/controls/ChartTableControlModel.ts");
5934
5945
  /* harmony import */ var _table_controls_ChartTableUserFilter__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./table/controls/ChartTableUserFilter */ "./src/table/controls/ChartTableUserFilter.ts");
5935
5946
  /* harmony import */ var _table_controls_ChartTableUserFilterModel__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./table/controls/ChartTableUserFilterModel */ "./src/table/controls/ChartTableUserFilterModel.ts");
5947
+ /* harmony import */ var _table_controls_FocusFirstChartTypeKeyStroke__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./table/controls/FocusFirstChartTypeKeyStroke */ "./src/table/controls/FocusFirstChartTypeKeyStroke.ts");
5936
5948
  /*
5937
5949
  * Copyright (c) 2010, 2025 BSI Business Systems Integration AG
5938
5950
  *
@@ -5974,18 +5986,19 @@ __webpack_require__.r(__webpack_exports__);
5974
5986
 
5975
5987
 
5976
5988
 
5989
+
5977
5990
 
5978
5991
 
5979
5992
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_index__WEBPACK_IMPORTED_MODULE_1__);
5980
5993
  _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.ObjectFactory.get().registerNamespace('scout', _index__WEBPACK_IMPORTED_MODULE_1__);
5981
5994
 
5982
- /***/ }),
5995
+ /***/ },
5983
5996
 
5984
- /***/ "./src/objectFactories.ts":
5997
+ /***/ "./src/objectFactories.ts"
5985
5998
  /*!********************************!*\
5986
5999
  !*** ./src/objectFactories.ts ***!
5987
6000
  \********************************/
5988
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6001
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5989
6002
 
5990
6003
  __webpack_require__.r(__webpack_exports__);
5991
6004
  /* harmony import */ var _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @eclipse-scout/core */ "@eclipse-scout/core");
@@ -6006,13 +6019,13 @@ _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.addObjectFactories({
6006
6019
  'ChartTableControlConfigHelper': () => new _index__WEBPACK_IMPORTED_MODULE_1__.ChartTableControlConfigHelperImpl()
6007
6020
  });
6008
6021
 
6009
- /***/ }),
6022
+ /***/ },
6010
6023
 
6011
- /***/ "./src/table/controls/ChartTableControl.ts":
6024
+ /***/ "./src/table/controls/ChartTableControl.ts"
6012
6025
  /*!*************************************************!*\
6013
6026
  !*** ./src/table/controls/ChartTableControl.ts ***!
6014
6027
  \*************************************************/
6015
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6028
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6016
6029
 
6017
6030
  __webpack_require__.r(__webpack_exports__);
6018
6031
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -6052,9 +6065,13 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6052
6065
  $yAxisSelect;
6053
6066
  $dataSelect;
6054
6067
  _chartTypeMap;
6068
+ _chartTypeTabbableCoordinator;
6055
6069
  _aggregationMap;
6070
+ _aggregationTabbableCoordinator;
6056
6071
  _chartGroup1Map;
6072
+ _chartGroup1TabbableCoordinator;
6057
6073
  _chartGroup2Map;
6074
+ _chartGroup2TabbableCoordinator;
6058
6075
  _tableUpdatedHandler;
6059
6076
  _tableColumnStructureChangedHandler;
6060
6077
  _chartValueClickedHandler;
@@ -6079,6 +6096,26 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6079
6096
  this.xAxis = null;
6080
6097
  this.yAxis = null;
6081
6098
  this.dateGroup = null;
6099
+ this._chartTypeTabbableCoordinator = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableCoordinator, {
6100
+ parent: this,
6101
+ autoRegisterKeyStrokes: false,
6102
+ orientation: 'vertical'
6103
+ });
6104
+ this._chartGroup1TabbableCoordinator = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableCoordinator, {
6105
+ parent: this,
6106
+ autoRegisterKeyStrokes: false,
6107
+ orientation: 'vertical'
6108
+ });
6109
+ this._chartGroup2TabbableCoordinator = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableCoordinator, {
6110
+ parent: this,
6111
+ autoRegisterKeyStrokes: false,
6112
+ orientation: 'vertical'
6113
+ });
6114
+ this._aggregationTabbableCoordinator = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableCoordinator, {
6115
+ parent: this,
6116
+ autoRegisterKeyStrokes: false,
6117
+ orientation: 'vertical'
6118
+ });
6082
6119
  this._tableUpdatedHandler = this._onTableUpdated.bind(this);
6083
6120
  this._tableColumnStructureChangedHandler = this._onTableColumnStructureChanged.bind(this);
6084
6121
  this._chartValueClickedHandler = this._onChartValueClick.bind(this);
@@ -6096,6 +6133,10 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6096
6133
  this.table.off('columnStructureChanged', this._tableColumnStructureChangedHandler);
6097
6134
  super._destroy();
6098
6135
  }
6136
+ _initKeyStrokeContext() {
6137
+ super._initKeyStrokeContext();
6138
+ this.tableControlKeyStrokeContext.registerKeyStroke(new _index__WEBPACK_IMPORTED_MODULE_1__.FocusFirstChartTypeKeyStroke(this));
6139
+ }
6099
6140
  _computeEnabled(inheritAccessibility, parentEnabled) {
6100
6141
  if (!this._hasColumns() && !this.selected) {
6101
6142
  return false;
@@ -6121,6 +6162,7 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6121
6162
  this.$yAxisSelect.data('scroll-shadow').setVisible(true);
6122
6163
  this.$yAxisSelect.removeClass('animated');
6123
6164
  });
6165
+ this._chartGroup2TabbableCoordinator.setItems(this.$yAxisSelect.hasClass('hide') ? [] : this.$yAxisSelect.children('.select-axis').map((i, item) => new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableItem(jquery__WEBPACK_IMPORTED_MODULE_2___default()(item))).get());
6124
6166
  if (this.contentRendered) {
6125
6167
  this.chart.$container.animateAVCSD('opacity', 0, () => {
6126
6168
  this.chart.$container.css('opacity', 1);
@@ -6129,10 +6171,10 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6129
6171
  }
6130
6172
  }
6131
6173
  _selectChartType() {
6132
- _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.objects.values(this._chartTypeMap).forEach($element => {
6133
- $element.removeClass('selected');
6174
+ _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.objects.values(this._chartTypeMap).forEach(action => {
6175
+ action.setSelected(false);
6134
6176
  });
6135
- this._chartTypeMap[this.chartType].addClass('selected');
6177
+ this._chartTypeMap[this.chartType].setSelected(true);
6136
6178
  }
6137
6179
  _renderChartGroup1() {
6138
6180
  this._renderChartGroup(1);
@@ -6149,8 +6191,8 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6149
6191
  let chartGroup = this[groupName];
6150
6192
  if (chartGroup) {
6151
6193
  let $element = this[map][chartGroup.id];
6152
- $element.siblings('.select-axis').animateAVCSD('height', 30);
6153
- $element.selectOne('selected');
6194
+ $element.siblings('.select-axis').setSelected(false).animateAVCSD('height', 30);
6195
+ $element.setSelected(true);
6154
6196
  if (chartGroup.modifier > 0) {
6155
6197
  let dateGroupIndex = chartGroup.modifier ^ ChartTableControl.DATE_GROUP_FLAG;
6156
6198
  $element.animateAVCSD('height', 42);
@@ -6164,8 +6206,8 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6164
6206
  _renderChartAggregation() {
6165
6207
  let $element = this._aggregationMap[this.chartAggregation.id || 'all'];
6166
6208
  if ($element) {
6167
- $element.selectOne();
6168
- $element.removeClass('data-sum').removeClass('data-avg');
6209
+ $element.siblings('.select-data').setSelected(false);
6210
+ $element.setSelected(true).removeClass('data-sum').removeClass('data-avg');
6169
6211
  $element.addClass(this._getAggregationCssClass());
6170
6212
  if (this.contentRendered) {
6171
6213
  this._drawChart();
@@ -6184,20 +6226,19 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6184
6226
  return null;
6185
6227
  }
6186
6228
  }
6187
- _renderChartSelect(cssClass, chartType, iconId) {
6188
- let icon = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.Icon, {
6229
+ _renderChartSelect(cssClass, chartType, iconId, tooltipText) {
6230
+ let action = _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.create(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.Action, {
6189
6231
  parent: this,
6190
- iconDesc: iconId,
6191
- cssClass: cssClass
6232
+ iconId,
6233
+ cssClass,
6234
+ tooltipText
6192
6235
  });
6193
- icon.render(this.$chartSelect);
6194
- this.$contentContainer.one('remove', () => icon.destroy());
6195
- let $iconContainer = icon.$container;
6196
- $iconContainer.toggleClass('disabled', !this.enabledComputed || !this._hasColumns()).data('chartType', chartType);
6197
- if (this.enabledComputed && this._hasColumns()) {
6198
- $iconContainer.on('click', this._onClickChartType.bind(this));
6199
- }
6200
- this._chartTypeMap[chartType] = $iconContainer;
6236
+ action.render(this.$chartSelect);
6237
+ action.$container.addClass('chart-type menu-item').data('chartType', chartType);
6238
+ action.on('action', this._onChartTypeAction.bind(this));
6239
+ action.setEnabled(this._hasColumns());
6240
+ this.$contentContainer.one('remove', () => action.destroy());
6241
+ this._chartTypeMap[chartType] = action;
6201
6242
  }
6202
6243
  /**
6203
6244
  * Appends a chart selection divs to this.$contentContainer and sets the this.$chartSelect property.
@@ -6209,34 +6250,49 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6209
6250
  this._chartTypeMap = {};
6210
6251
  let supportedChartTypes = this._getSupportedChartTypes();
6211
6252
  if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR, supportedChartTypes)) {
6212
- this._renderChartSelect('chart-bar', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_BARS_VERTICAL);
6253
+ this._renderChartSelect('chart-bar', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_BARS_VERTICAL, this.session.text('ui.ChartTypeBar'));
6213
6254
  }
6214
6255
  if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR_HORIZONTAL, supportedChartTypes)) {
6215
- this._renderChartSelect('chart-stacked', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR_HORIZONTAL, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_BARS_HORIZONTAL);
6256
+ this._renderChartSelect('chart-stacked', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR_HORIZONTAL, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_BARS_HORIZONTAL, this.session.text('ui.ChartTypeBarHorizontal'));
6216
6257
  }
6217
6258
  if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.LINE, supportedChartTypes)) {
6218
- this._renderChartSelect('chart-line', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.LINE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_LINE);
6259
+ this._renderChartSelect('chart-line', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.LINE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_LINE, this.session.text('ui.ChartTypeLine'));
6219
6260
  }
6220
6261
  if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.PIE, supportedChartTypes)) {
6221
- this._renderChartSelect('chart-pie', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.PIE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_PIE);
6262
+ this._renderChartSelect('chart-pie', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.PIE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_PIE, this.session.text('ui.ChartTypePie'));
6222
6263
  }
6223
6264
  if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BUBBLE, supportedChartTypes)) {
6224
- this._renderChartSelect('chart-bubble', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BUBBLE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_SCATTER);
6265
+ this._renderChartSelect('chart-bubble', _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BUBBLE, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.icons.DIAGRAM_SCATTER, this.session.text('ui.ChartTypeBubble'));
6225
6266
  }
6267
+ let keyStrokeContext = new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.KeyStrokeContext({
6268
+ $bindTarget: this.$chartSelect,
6269
+ $scopeTarget: this.$chartSelect
6270
+ });
6271
+ this.session.keyStrokeManager.installKeyStrokeContext(keyStrokeContext);
6272
+ this._chartTypeTabbableCoordinator.registerKeyStrokes(this, keyStrokeContext);
6273
+ this._chartTypeTabbableCoordinator.setItems(Object.values(this._chartTypeMap));
6226
6274
  }
6227
6275
  _getSupportedChartTypes() {
6228
6276
  return [_index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR, _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BAR_HORIZONTAL, _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.LINE, _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.PIE, _index__WEBPACK_IMPORTED_MODULE_1__.Chart.Type.BUBBLE];
6229
6277
  }
6230
- _onClickChartType(event) {
6231
- let $target = jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget),
6232
- chartType = $target.data('chartType');
6278
+ _onChartTypeAction(event) {
6279
+ const chartType = event.source.$container.data('chartType');
6233
6280
  this.setChartType(chartType);
6234
6281
  }
6235
- _onClickChartGroup(event) {
6236
- let $target = jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget),
6237
- groupId = $target.parent().data('groupId'),
6238
- column = $target.data('column'),
6239
- origModifier = $target.data('modifier');
6282
+ _onChartGroupKeyDown(event) {
6283
+ if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(event.which, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.keys.ENTER, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.keys.SPACE)) {
6284
+ this._doChartGroupAction(jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget));
6285
+ event.stopPropagation();
6286
+ event.preventDefault(); // Don't scroll when pressing space
6287
+ }
6288
+ }
6289
+ _onChartGroupClick(event) {
6290
+ this._doChartGroupAction(jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget));
6291
+ }
6292
+ _doChartGroupAction($target) {
6293
+ let groupId = $target.parent().data('groupId');
6294
+ let column = $target.data('column');
6295
+ let origModifier = $target.data('modifier');
6240
6296
  // do nothing when item is disabled
6241
6297
  if (!$target.isEnabled()) {
6242
6298
  return;
@@ -6249,8 +6305,16 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6249
6305
  };
6250
6306
  this._setChartGroup(groupId, config);
6251
6307
  }
6252
- _onClickAggregation(event) {
6253
- let $target = jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget);
6308
+ _onAggregationKeyDown(event) {
6309
+ if (_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.scout.isOneOf(event.which, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.keys.ENTER, _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.keys.SPACE)) {
6310
+ this._doAggregationAction(jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget));
6311
+ event.stopPropagation();
6312
+ }
6313
+ }
6314
+ _onAggregationClick(event) {
6315
+ this._doAggregationAction(jquery__WEBPACK_IMPORTED_MODULE_2___default()(event.currentTarget));
6316
+ }
6317
+ _doAggregationAction($target) {
6254
6318
  // update modifier
6255
6319
  let origModifier = $target.data('modifier');
6256
6320
  let modifier = $target.isSelected() ? this._nextModifier(origModifier) : origModifier;
@@ -6351,7 +6415,8 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6351
6415
  return text;
6352
6416
  }
6353
6417
  _renderContent($parent) {
6354
- this.$contentContainer = $parent.appendDiv('chart-container');
6418
+ this.$contentContainer = $parent.appendDiv('chart-container').attr('tabindex', '-1');
6419
+ this.$contentContainer[0].focus(); // Pressing tab should select first chart type action
6355
6420
  // scrollbars
6356
6421
  this._installScrollbars();
6357
6422
  this._renderChartSelectContainer();
@@ -6405,16 +6470,11 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6405
6470
  columnCount.sort((a, b) => {
6406
6471
  return Math.abs(a[1] - 8) - Math.abs(b[1] - 8);
6407
6472
  });
6408
- let axisCount,
6409
- enabled,
6410
- numberOfAxisItems = 0,
6411
- columns = matrix.columns(false); // filterNumberColumns false: number columns will be filtered below
6473
+ let axisCount, enabled;
6474
+ let columns = matrix.columns(false); // filterNumberColumns false: number columns will be filtered below
6412
6475
  // all x/y-axis for selection
6413
6476
  for (let c1 = 0; c1 < columns.length; c1++) {
6414
- let content,
6415
- $div,
6416
- $yDiv,
6417
- column1 = columns[c1];
6477
+ let column1 = columns[c1];
6418
6478
  // Check if data-spread is too large. This is a problem in large tables where a column has unique values.
6419
6479
  // We cannot create DOM elements for each unique value because this causes all browser to stop script
6420
6480
  // execution. May be in a later release we could implement some sort of data aggregation, but this is not
@@ -6429,8 +6489,8 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6429
6489
  axisCount = this._axisCount(columnCount, column1);
6430
6490
  enabled = axisCount <= ChartTableControl.MAX_AXIS_COUNT;
6431
6491
  }
6432
- content = this._axisContentForColumn(column1);
6433
- $div = this.$contentContainer.makeDiv('select-axis', this._plainAxisText(column1, content.text)).data('column', column1).setEnabled(enabled);
6492
+ let content = this._axisContentForColumn(column1);
6493
+ let $div = this.$contentContainer.makeDiv('select-axis prevent-initial-focus', this._plainAxisText(column1, content.text)).data('column', column1).unfocusable().setEnabled(enabled);
6434
6494
  if (!enabled) {
6435
6495
  if (this.chartGroup1 && this.chartGroup1.id === column1.id) {
6436
6496
  this.chartGroup1 = null;
@@ -6444,11 +6504,12 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6444
6504
  $div.addClass(content.icon.appendCssClass('font-icon'));
6445
6505
  }
6446
6506
  if (column1 instanceof _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.DateColumn) {
6447
- $div.data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.DateGroup.YEAR).appendDiv('select-axis-group', this.dateGroup[0][1]);
6507
+ $div.data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.DateGroup.YEAR).appendDiv('select-axis-group', String(this.dateGroup[0][1]));
6448
6508
  }
6449
6509
  // install click handler or tooltip
6450
6510
  if (enabled) {
6451
- $div.on('click', this._onClickChartGroup.bind(this));
6511
+ $div.on('click', this._onChartGroupClick.bind(this));
6512
+ $div.on('keydown', this._onChartGroupKeyDown.bind(this));
6452
6513
  _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.tooltips.installForEllipsis($div, {
6453
6514
  parent: this
6454
6515
  });
@@ -6458,13 +6519,26 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6458
6519
  text: this.session.text('ui.TooMuchData')
6459
6520
  });
6460
6521
  }
6461
- numberOfAxisItems++;
6462
- $yDiv = $div.clone(true);
6522
+ let $yDiv = $div.clone(true);
6463
6523
  this._chartGroup1Map[column1.id] = $div;
6464
6524
  this._chartGroup2Map[column1.id] = $yDiv;
6465
6525
  this.$xAxisSelect.append($div);
6466
6526
  this.$yAxisSelect.append($yDiv);
6467
6527
  }
6528
+ let chartGroup1KeyStrokeContext = new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.KeyStrokeContext({
6529
+ $bindTarget: this.$xAxisSelect,
6530
+ $scopeTarget: this.$xAxisSelect
6531
+ });
6532
+ this.session.keyStrokeManager.installKeyStrokeContext(chartGroup1KeyStrokeContext);
6533
+ this._chartGroup1TabbableCoordinator.registerKeyStrokes(this, chartGroup1KeyStrokeContext);
6534
+ this._chartGroup1TabbableCoordinator.setItems(this.$xAxisSelect.children('.select-axis').map((i, item) => new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableItem(jquery__WEBPACK_IMPORTED_MODULE_2___default()(item))).get());
6535
+ let chartGroup2KeyStrokeContext = new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.KeyStrokeContext({
6536
+ $bindTarget: this.$yAxisSelect,
6537
+ $scopeTarget: this.$yAxisSelect
6538
+ });
6539
+ this.session.keyStrokeManager.installKeyStrokeContext(chartGroup2KeyStrokeContext);
6540
+ this._chartGroup2TabbableCoordinator.registerKeyStrokes(this, chartGroup2KeyStrokeContext);
6541
+ // Items will be set in _renderChartType
6468
6542
  // map for selection (column id, $element)
6469
6543
  this._aggregationMap = {};
6470
6544
  if (this._hasColumns()) {
@@ -6477,7 +6551,7 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6477
6551
  });
6478
6552
  // add data-count for no column restriction (all columns)
6479
6553
  let countDesc = this.session.text('ui.Count');
6480
- this._aggregationMap.all = this.$dataSelect.appendDiv('select-data data-count', countDesc).data('column', null).data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.NumberGroup.COUNT);
6554
+ this._aggregationMap.all = this.$dataSelect.appendDiv('select-data data-count prevent-initial-focus', countDesc).unfocusable().data('column', null).data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.NumberGroup.COUNT);
6481
6555
  // all data for selection
6482
6556
  for (let c2 = 0; c2 < columns.length; c2++) {
6483
6557
  let column2 = columns[c2];
@@ -6491,11 +6565,18 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
6491
6565
  } else {
6492
6566
  columnText = '[' + fakeNumberLabelCol2 + ']';
6493
6567
  }
6494
- this._aggregationMap[column2.id] = this.$dataSelect.appendDiv('select-data data-sum', columnText).data('column', column2).data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.NumberGroup.SUM);
6568
+ this._aggregationMap[column2.id] = this.$dataSelect.appendDiv('select-data data-sum prevent-initial-focus', columnText).unfocusable().data('column', column2).data('modifier', _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TableMatrix.NumberGroup.SUM);
6495
6569
  }
6496
6570
  }
6497
6571
  // click handling for data
6498
- jquery__WEBPACK_IMPORTED_MODULE_2___default()('.select-data', this.$contentContainer).on('click', this._onClickAggregation.bind(this));
6572
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('.select-data', this.$contentContainer).on('click', this._onAggregationClick.bind(this)).on('keydown', this._onAggregationKeyDown.bind(this));
6573
+ let keyStrokeContext = new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.KeyStrokeContext({
6574
+ $bindTarget: this.$dataSelect,
6575
+ $scopeTarget: this.$dataSelect
6576
+ });
6577
+ this.session.keyStrokeManager.installKeyStrokeContext(keyStrokeContext);
6578
+ this._aggregationTabbableCoordinator.registerKeyStrokes(this, keyStrokeContext);
6579
+ this._aggregationTabbableCoordinator.setItems(this.$dataSelect.children('.select-data').map((i, item) => new _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.TabbableItem(jquery__WEBPACK_IMPORTED_MODULE_2___default()(item))).get());
6499
6580
  }
6500
6581
  return columnCount;
6501
6582
  }
@@ -7110,13 +7191,13 @@ class ChartTableControl extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__
7110
7191
  }
7111
7192
  }
7112
7193
 
7113
- /***/ }),
7194
+ /***/ },
7114
7195
 
7115
- /***/ "./src/table/controls/ChartTableControlAdapter.ts":
7196
+ /***/ "./src/table/controls/ChartTableControlAdapter.ts"
7116
7197
  /*!********************************************************!*\
7117
7198
  !*** ./src/table/controls/ChartTableControlAdapter.ts ***!
7118
7199
  \********************************************************/
7119
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7200
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7120
7201
 
7121
7202
  __webpack_require__.r(__webpack_exports__);
7122
7203
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7141,13 +7222,13 @@ class ChartTableControlAdapter extends _eclipse_scout_core__WEBPACK_IMPORTED_MOD
7141
7222
  }
7142
7223
  }
7143
7224
 
7144
- /***/ }),
7225
+ /***/ },
7145
7226
 
7146
- /***/ "./src/table/controls/ChartTableControlConfigDo.ts":
7227
+ /***/ "./src/table/controls/ChartTableControlConfigDo.ts"
7147
7228
  /*!*********************************************************!*\
7148
7229
  !*** ./src/table/controls/ChartTableControlConfigDo.ts ***!
7149
7230
  \*********************************************************/
7150
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7231
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7151
7232
 
7152
7233
  __webpack_require__.r(__webpack_exports__);
7153
7234
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7192,24 +7273,24 @@ ChartTableControlConfigDo = __decorate([(0,_eclipse_scout_core__WEBPACK_IMPORTED
7192
7273
 
7193
7274
  window["scout"]["DataObjectInventory"].get().add(ChartTableControlConfigDo, "scout.ChartTableControlConfig", "ChartTableControlConfigDo");
7194
7275
 
7195
- /***/ }),
7276
+ /***/ },
7196
7277
 
7197
- /***/ "./src/table/controls/ChartTableControlEventMap.ts":
7278
+ /***/ "./src/table/controls/ChartTableControlEventMap.ts"
7198
7279
  /*!*********************************************************!*\
7199
7280
  !*** ./src/table/controls/ChartTableControlEventMap.ts ***!
7200
7281
  \*********************************************************/
7201
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7282
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7202
7283
 
7203
7284
  __webpack_require__.r(__webpack_exports__);
7204
7285
 
7205
7286
 
7206
- /***/ }),
7287
+ /***/ },
7207
7288
 
7208
- /***/ "./src/table/controls/ChartTableControlLayout.ts":
7289
+ /***/ "./src/table/controls/ChartTableControlLayout.ts"
7209
7290
  /*!*******************************************************!*\
7210
7291
  !*** ./src/table/controls/ChartTableControlLayout.ts ***!
7211
7292
  \*******************************************************/
7212
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7293
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7213
7294
 
7214
7295
  __webpack_require__.r(__webpack_exports__);
7215
7296
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7244,24 +7325,24 @@ class ChartTableControlLayout extends _eclipse_scout_core__WEBPACK_IMPORTED_MODU
7244
7325
  }
7245
7326
  }
7246
7327
 
7247
- /***/ }),
7328
+ /***/ },
7248
7329
 
7249
- /***/ "./src/table/controls/ChartTableControlModel.ts":
7330
+ /***/ "./src/table/controls/ChartTableControlModel.ts"
7250
7331
  /*!******************************************************!*\
7251
7332
  !*** ./src/table/controls/ChartTableControlModel.ts ***!
7252
7333
  \******************************************************/
7253
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7334
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7254
7335
 
7255
7336
  __webpack_require__.r(__webpack_exports__);
7256
7337
 
7257
7338
 
7258
- /***/ }),
7339
+ /***/ },
7259
7340
 
7260
- /***/ "./src/table/controls/ChartTableUserFilter.ts":
7341
+ /***/ "./src/table/controls/ChartTableUserFilter.ts"
7261
7342
  /*!****************************************************!*\
7262
7343
  !*** ./src/table/controls/ChartTableUserFilter.ts ***!
7263
7344
  \****************************************************/
7264
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7345
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7265
7346
 
7266
7347
  __webpack_require__.r(__webpack_exports__);
7267
7348
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7336,24 +7417,69 @@ class ChartTableUserFilter extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_
7336
7417
  }
7337
7418
  }
7338
7419
 
7339
- /***/ }),
7420
+ /***/ },
7340
7421
 
7341
- /***/ "./src/table/controls/ChartTableUserFilterModel.ts":
7422
+ /***/ "./src/table/controls/ChartTableUserFilterModel.ts"
7342
7423
  /*!*********************************************************!*\
7343
7424
  !*** ./src/table/controls/ChartTableUserFilterModel.ts ***!
7344
7425
  \*********************************************************/
7345
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7426
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7346
7427
 
7347
7428
  __webpack_require__.r(__webpack_exports__);
7348
7429
 
7349
7430
 
7350
- /***/ }),
7431
+ /***/ },
7432
+
7433
+ /***/ "./src/table/controls/FocusFirstChartTypeKeyStroke.ts"
7434
+ /*!************************************************************!*\
7435
+ !*** ./src/table/controls/FocusFirstChartTypeKeyStroke.ts ***!
7436
+ \************************************************************/
7437
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7438
+
7439
+ __webpack_require__.r(__webpack_exports__);
7440
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7441
+ /* harmony export */ FocusFirstChartTypeKeyStroke: () => (/* binding */ FocusFirstChartTypeKeyStroke)
7442
+ /* harmony export */ });
7443
+ /* harmony import */ var _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @eclipse-scout/core */ "@eclipse-scout/core");
7444
+ /* harmony import */ var _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__);
7445
+ /*
7446
+ * Copyright (c) 2010, 2025 BSI Business Systems Integration AG
7447
+ *
7448
+ * This program and the accompanying materials are made
7449
+ * available under the terms of the Eclipse Public License 2.0
7450
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7451
+ *
7452
+ * SPDX-License-Identifier: EPL-2.0
7453
+ */
7454
+
7455
+ /**
7456
+ * Focuses the first chart type if the focus is on the content container of the chart table control (which is the case when the table control opens).
7457
+ */
7458
+ class FocusFirstChartTypeKeyStroke extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.KeyStroke {
7459
+ constructor(action) {
7460
+ super();
7461
+ this.field = action;
7462
+ this.which = [_eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.keys.DOWN];
7463
+ this.stopPropagation = true;
7464
+ }
7465
+ _accept(event) {
7466
+ if (!super._accept(event)) {
7467
+ return false;
7468
+ }
7469
+ return _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.focusUtils.isActiveElement(this.field.$contentContainer);
7470
+ }
7471
+ handle(event) {
7472
+ this.field.$chartSelect.children('.chart-type').first()[0]?.focus();
7473
+ }
7474
+ }
7475
+
7476
+ /***/ },
7351
7477
 
7352
- /***/ "./src/tile/ChartFieldTile.ts":
7478
+ /***/ "./src/tile/ChartFieldTile.ts"
7353
7479
  /*!************************************!*\
7354
7480
  !*** ./src/tile/ChartFieldTile.ts ***!
7355
7481
  \************************************/
7356
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7482
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7357
7483
 
7358
7484
  __webpack_require__.r(__webpack_exports__);
7359
7485
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7402,13 +7528,13 @@ class ChartFieldTile extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.Fo
7402
7528
  }
7403
7529
  }
7404
7530
 
7405
- /***/ }),
7531
+ /***/ },
7406
7532
 
7407
- /***/ "./src/tile/ChartFieldTileAdapter.ts":
7533
+ /***/ "./src/tile/ChartFieldTileAdapter.ts"
7408
7534
  /*!*******************************************!*\
7409
7535
  !*** ./src/tile/ChartFieldTileAdapter.ts ***!
7410
7536
  \*******************************************/
7411
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7537
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7412
7538
 
7413
7539
  __webpack_require__.r(__webpack_exports__);
7414
7540
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -7428,58 +7554,58 @@ __webpack_require__.r(__webpack_exports__);
7428
7554
 
7429
7555
  class ChartFieldTileAdapter extends _eclipse_scout_core__WEBPACK_IMPORTED_MODULE_0__.FormFieldTileAdapter {}
7430
7556
 
7431
- /***/ }),
7557
+ /***/ },
7432
7558
 
7433
- /***/ "./src/tile/ChartFieldTileModel.ts":
7559
+ /***/ "./src/tile/ChartFieldTileModel.ts"
7434
7560
  /*!*****************************************!*\
7435
7561
  !*** ./src/tile/ChartFieldTileModel.ts ***!
7436
7562
  \*****************************************/
7437
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7563
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
7438
7564
 
7439
7565
  __webpack_require__.r(__webpack_exports__);
7440
7566
 
7441
7567
 
7442
- /***/ }),
7568
+ /***/ },
7569
+
7570
+ /***/ "@eclipse-scout/core"
7571
+ /*!************************!*\
7572
+ !*** external "scout" ***!
7573
+ \************************/
7574
+ (module) {
7575
+
7576
+ module.exports = scout;
7577
+
7578
+ /***/ },
7443
7579
 
7444
- /***/ "chart.js":
7580
+ /***/ "chart.js"
7445
7581
  /*!************************!*\
7446
7582
  !*** external "Chart" ***!
7447
7583
  \************************/
7448
- /***/ ((module) => {
7584
+ (module) {
7449
7585
 
7450
7586
  module.exports = Chart;
7451
7587
 
7452
- /***/ }),
7588
+ /***/ },
7453
7589
 
7454
- /***/ "chartjs-plugin-datalabels":
7590
+ /***/ "chartjs-plugin-datalabels"
7455
7591
  /*!**********************************!*\
7456
7592
  !*** external "ChartDataLabels" ***!
7457
7593
  \**********************************/
7458
- /***/ ((module) => {
7594
+ (module) {
7459
7595
 
7460
7596
  module.exports = ChartDataLabels;
7461
7597
 
7462
- /***/ }),
7598
+ /***/ },
7463
7599
 
7464
- /***/ "jquery":
7600
+ /***/ "jquery"
7465
7601
  /*!*************************!*\
7466
7602
  !*** external "jQuery" ***!
7467
7603
  \*************************/
7468
- /***/ ((module) => {
7604
+ (module) {
7469
7605
 
7470
7606
  module.exports = jQuery;
7471
7607
 
7472
- /***/ }),
7473
-
7474
- /***/ "@eclipse-scout/core":
7475
- /*!************************!*\
7476
- !*** external "scout" ***!
7477
- \************************/
7478
- /***/ ((module) => {
7479
-
7480
- module.exports = scout;
7481
-
7482
- /***/ })
7608
+ /***/ }
7483
7609
 
7484
7610
  /******/ });
7485
7611
  /************************************************************************/
@@ -7493,6 +7619,12 @@ module.exports = scout;
7493
7619
  /******/ if (cachedModule !== undefined) {
7494
7620
  /******/ return cachedModule.exports;
7495
7621
  /******/ }
7622
+ /******/ // Check if module exists (development only)
7623
+ /******/ if (__webpack_modules__[moduleId] === undefined) {
7624
+ /******/ var e = new Error("Cannot find module '" + moduleId + "'");
7625
+ /******/ e.code = 'MODULE_NOT_FOUND';
7626
+ /******/ throw e;
7627
+ /******/ }
7496
7628
  /******/ // Create a new module (and put it into the cache)
7497
7629
  /******/ var module = __webpack_module_cache__[moduleId] = {
7498
7630
  /******/ // no module.id needed