@progress/kendo-angular-charts 18.1.0-develop.3 → 18.1.0-develop.31

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.
@@ -11,7 +11,7 @@ import { combineLatest } from 'rxjs';
11
11
  import { auditTime, tap } from 'rxjs/operators';
12
12
  import { ConfigurationService, THROTTLE_MS } from './common/configuration.service';
13
13
  import { copyChanges } from './common/copy-changes';
14
- import { ThemeService } from './common/theme.service';
14
+ import { SankeyThemeService } from './sankey/theme.service';
15
15
  import { toSimpleChanges } from './common/to-simple-changes';
16
16
  import { packageMetadata } from './package-metadata';
17
17
  import { InstanceEventService } from './sankey/events';
@@ -24,7 +24,7 @@ import { LocalizedMessagesDirective } from './sankey/localization/localized-mess
24
24
  import { IntlService } from '@progress/kendo-angular-intl';
25
25
  import * as i0 from "@angular/core";
26
26
  import * as i1 from "./common/configuration.service";
27
- import * as i2 from "./common/theme.service";
27
+ import * as i2 from "./sankey/theme.service";
28
28
  import * as i3 from "@progress/kendo-angular-l10n";
29
29
  import * as i4 from "./sankey/events";
30
30
  import * as i5 from "@progress/kendo-angular-intl";
@@ -324,19 +324,13 @@ export class SankeyComponent {
324
324
  this.optionsChange = combineLatest([this.configurationService.onChange$, this.themeService.onChange$])
325
325
  .pipe(tap((result) => {
326
326
  this.options = result[0];
327
- this.theme = this.loadTheme(result[1]);
327
+ this.theme = result[1];
328
328
  }), auditTime(THROTTLE_MS))
329
329
  .subscribe(() => {
330
330
  this.refresh();
331
331
  });
332
332
  });
333
333
  }
334
- loadTheme(chartTheme) {
335
- return {
336
- ...chartTheme,
337
- nodeColors: chartTheme.seriesColors,
338
- };
339
- }
340
334
  run(callback, inZone = true, detectChanges) {
341
335
  if (inZone) {
342
336
  if (detectChanges) {
@@ -375,7 +369,7 @@ export class SankeyComponent {
375
369
  get isRTL() {
376
370
  return Boolean(this.localizationService.rtl);
377
371
  }
378
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurationService }, { token: i2.ThemeService }, { token: i3.LocalizationService }, { token: i4.InstanceEventService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i5.IntlService }], target: i0.ɵɵFactoryTarget.Component });
372
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurationService }, { token: i2.SankeyThemeService }, { token: i3.LocalizationService }, { token: i4.InstanceEventService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i5.IntlService }], target: i0.ɵɵFactoryTarget.Component });
379
373
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyComponent, isStandalone: true, selector: "kendo-sankey", inputs: { data: "data", links: "links", nodes: "nodes", labels: "labels", title: "title", legend: "legend", tooltip: "tooltip", disableAutoLayout: "disableAutoLayout", navigable: "navigable", popupSettings: "popupSettings" }, outputs: { nodeEnter: "nodeEnter", nodeLeave: "nodeLeave", nodeClick: "nodeClick", linkEnter: "linkEnter", linkLeave: "linkLeave", linkClick: "linkClick" }, providers: [
380
374
  ConfigurationService,
381
375
  LocalizationService,
@@ -433,7 +427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
433
427
  standalone: true,
434
428
  imports: [LocalizedMessagesDirective, SankeyTooltipPopupComponent, NgIf, WatermarkOverlayComponent]
435
429
  }]
436
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurationService }, { type: i2.ThemeService }, { type: i3.LocalizationService }, { type: i4.InstanceEventService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i5.IntlService }]; }, propDecorators: { data: [{
430
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurationService }, { type: i2.SankeyThemeService }, { type: i3.LocalizationService }, { type: i4.InstanceEventService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i5.IntlService }]; }, propDecorators: { data: [{
437
431
  type: Input
438
432
  }], links: [{
439
433
  type: Input
@@ -8,7 +8,7 @@ import { isDocumentAvailable, shouldShowValidationUI, ResizeSensorComponent, Wat
8
8
  import * as i3 from '@progress/kendo-angular-intl';
9
9
  import * as i1$1 from '@progress/kendo-angular-l10n';
10
10
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
11
- import { DateCategoryAxis, DateValueAxis, InstanceObserver, chartBaseTheme, Chart, StockChart, Sparkline, Sankey, createSankeyData } from '@progress/kendo-charts';
11
+ import { DateCategoryAxis, DateValueAxis, InstanceObserver, chartBaseTheme, chartTheme, deepExtend, Chart, StockChart, Sparkline, sankeyTheme, Sankey, createSankeyData } from '@progress/kendo-charts';
12
12
  import { exportImage, exportSVG } from '@progress/kendo-drawing';
13
13
  import { validatePackage } from '@progress/kendo-licensing';
14
14
  import { Subject, BehaviorSubject, combineLatest, Subscription } from 'rxjs';
@@ -1937,88 +1937,19 @@ const chartDefaultTheme = () => Object.assign({}, chartBaseTheme(), {
1937
1937
  ]
1938
1938
  });
1939
1939
 
1940
- const font = (style) => `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;
1941
- const computedBackgroundColor = (element) => window.getComputedStyle(element).backgroundColor;
1942
- const letterPos = (letter) => letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0);
1943
- const seriesPos = (name) => {
1944
- const alpha = name.match(/series-([a-z])$/);
1945
- if (alpha !== null) {
1946
- return letterPos(alpha[1]);
1947
- }
1948
- const num = name.split('--series-')[1];
1949
- return parseInt(num, 10) - 1;
1950
- };
1951
- const SERIES_COLORS = 30;
1952
- const seriesTemplate = () => {
1953
- let template = `
1954
- <div class="k-var--series-a"></div>
1955
- <div class="k-var--series-b"></div>
1956
- <div class="k-var--series-c"></div>
1957
- <div class="k-var--series-d"></div>
1958
- <div class="k-var--series-e"></div>
1959
- <div class="k-var--series-f"></div>
1960
- `;
1961
- for (let i = 0; i < SERIES_COLORS; i++) {
1962
- template += `
1963
- <div class="k-var--series-${i + 1}"></div>`;
1964
- }
1965
- return template;
1966
- };
1967
- const template = () => `
1968
- <div class="k-var--primary"></div>
1969
- <div class="k-var--primary-contrast"></div>
1970
- <div class="k-var--base"></div>
1971
- <div class="k-var--background"></div>
1972
-
1973
- <div class="k-var--kendo-color-subtle"></div>
1974
-
1975
- <div class="k-var--normal-background"></div>
1976
- <div class="k-var--normal-text-color"></div>
1977
- <div class="k-var--hover-background"></div>
1978
- <div class="k-var--hover-text-color"></div>
1979
- <div class="k-var--selected-background"></div>
1980
- <div class="k-var--selected-text-color"></div>
1981
- <div class="k-var--chart-error-bars-background"></div>
1982
- <div class="k-var--chart-notes-background"></div>
1983
- <div class="k-var--chart-notes-border"></div>
1984
- <div class="k-var--chart-notes-lines"></div>
1985
- <div class="k-var--chart-crosshair-background"></div>
1986
-
1987
- <div class="k-var--chart-inactive"></div>
1988
- <div class="k-var--chart-major-lines"></div>
1989
- <div class="k-var--chart-minor-lines"></div>
1990
- <div class="k-var--chart-area-opacity"></div>
1991
- <div class="k-var--chart-area-inactive-opacity"></div>
1992
- <div class="k-var--chart-line-inactive-opacity"></div>
1993
-
1994
- <div class="k-widget k-chart">
1995
- <div class="k-var--chart-font"></div>
1996
- <div class="k-var--chart-title-font"></div>
1997
- <div class="k-var--chart-pane-title-font"></div>
1998
- <div class="k-var--chart-label-font"></div>
1999
- </div>
2000
-
2001
- <div class="k-var--series-unset"></div>
2002
- <div class="k-var--series">
2003
- ${seriesTemplate()}
2004
- </div>
2005
- `;
2006
1940
  /**
2007
1941
  * @hidden
2008
1942
  */
2009
1943
  class ThemeService extends ConfigurationService {
2010
1944
  loaded = false;
2011
1945
  element;
2012
- constructor(ngZone) {
2013
- super(ngZone);
2014
- }
2015
1946
  loadTheme() {
2016
1947
  if (this.loaded || !isDocumentAvailable()) {
2017
1948
  return;
2018
1949
  }
2019
- if (!this.readTheme()) {
2020
- this.readDefaultTheme();
2021
- }
1950
+ this.createElement();
1951
+ this.readTheme();
1952
+ this.destroyElement();
2022
1953
  this.loaded = true;
2023
1954
  this.next();
2024
1955
  }
@@ -2028,29 +1959,21 @@ class ThemeService extends ConfigurationService {
2028
1959
  this.loadTheme();
2029
1960
  }
2030
1961
  readTheme() {
2031
- this.createElement();
2032
- const available = this.queryColor('primary') !==
2033
- this.queryColor('primary-contrast');
1962
+ let theme = {};
2034
1963
  try {
2035
- if (available) {
2036
- this.push(chartBaseTheme());
2037
- this.setColors();
2038
- this.setFonts();
2039
- this.setSeriesColors();
2040
- }
1964
+ theme = chartTheme(this.element);
2041
1965
  }
2042
- finally {
2043
- this.destroyElement();
1966
+ catch {
1967
+ theme = {};
2044
1968
  }
2045
- return available;
2046
- }
2047
- readDefaultTheme() {
2048
- this.push(chartDefaultTheme());
1969
+ const available = Boolean(theme.chartArea && theme.chartArea.background);
1970
+ const result = available ? deepExtend(chartBaseTheme(), theme) : chartDefaultTheme();
1971
+ this.push(result);
2049
1972
  }
2050
1973
  createElement() {
2051
1974
  const container = this.element = document.createElement('div');
1975
+ container.className = 'k-chart';
2052
1976
  container.style.display = 'none';
2053
- container.innerHTML = template();
2054
1977
  document.body.appendChild(container);
2055
1978
  }
2056
1979
  destroyElement() {
@@ -2059,113 +1982,7 @@ class ThemeService extends ConfigurationService {
2059
1982
  this.element = undefined;
2060
1983
  }
2061
1984
  }
2062
- setStyle(key, value) {
2063
- this.set(key, value);
2064
- }
2065
- setColors() {
2066
- this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');
2067
- this.mapColor('axisDefaults.labels.color', 'normal-text-color');
2068
- this.mapColor('axisDefaults.line.color', 'chart-major-lines');
2069
- this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');
2070
- this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');
2071
- this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');
2072
- this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');
2073
- this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');
2074
- this.mapColor('axisDefaults.title.color', 'normal-text-color');
2075
- this.mapColor('chartArea.background', 'background');
2076
- this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');
2077
- this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');
2078
- this.mapColor('legend.labels.color', 'normal-text-color');
2079
- this.mapColor('legend.title.color', 'normal-text-color');
2080
- this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');
2081
- this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');
2082
- this.mapColor('seriesDefaults.boxPlot.median.color', 'base');
2083
- this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'primary');
2084
- this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');
2085
- this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');
2086
- this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');
2087
- this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');
2088
- this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');
2089
- this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');
2090
- this.mapColor('seriesDefaults.labels.background', 'background');
2091
- this.mapColor('seriesDefaults.labels.color', 'normal-text-color');
2092
- this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');
2093
- this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');
2094
- this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');
2095
- this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');
2096
- this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');
2097
- this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');
2098
- this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'primary');
2099
- this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');
2100
- this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');
2101
- this.mapColor('title.color', 'normal-text-color');
2102
- this.mapColor('subtitle.color', 'normal-text-color');
2103
- // Sankey diagram
2104
- this.mapColor('labels.color', 'normal-text-color');
2105
- this.mapColor('labels.stroke.color', 'background');
2106
- // 'k-var--kendo-color-subtle' class does not contain the --kendo-color-subtle variable style
2107
- const element = this.element?.querySelector('.k-var--kendo-color-subtle');
2108
- element && (element.style.color = 'var(--kendo-color-subtle)');
2109
- this.mapColor('links.color', 'kendo-color-subtle', 'color');
2110
- const opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);
2111
- if (!isNaN(opacity)) {
2112
- this.setStyle('seriesDefaults.area.opacity', opacity);
2113
- this.setStyle('seriesDefaults.radarArea.opacity', opacity);
2114
- this.setStyle('seriesDefaults.verticalArea.opacity', opacity);
2115
- this.setStyle('seriesDefaults.labels.opacity', opacity);
2116
- }
2117
- this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');
2118
- this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');
2119
- }
2120
- setInactiveOpacity(seriesTypes, selector) {
2121
- const inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);
2122
- if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {
2123
- seriesTypes.forEach(type => this.setStyle(`seriesDefaults.${type}.highlight.inactiveOpacity`, inactiveOpacity));
2124
- }
2125
- }
2126
- setFonts() {
2127
- const defaultFont = font(this.queryStyle('chart-font'));
2128
- const titleFont = font(this.queryStyle('chart-title-font'));
2129
- const paneTitleFont = font(this.queryStyle('chart-pane-title-font'));
2130
- const labelFont = font(this.queryStyle('chart-label-font'));
2131
- this.setStyle('axisDefaults.labels.font', labelFont);
2132
- this.setStyle('axisDefaults.notes.label.font', defaultFont);
2133
- this.setStyle('axisDefaults.title.font', defaultFont);
2134
- this.setStyle('legend.labels.font', defaultFont);
2135
- this.setStyle('seriesDefaults.labels.font', labelFont);
2136
- this.setStyle('seriesDefaults.notes.label.font', defaultFont);
2137
- this.setStyle('title.font', titleFont);
2138
- this.setStyle('subtitle.font', paneTitleFont);
2139
- this.setStyle('paneDefaults.title.font', paneTitleFont);
2140
- // Sankey diagram
2141
- this.setStyle('labels.font', defaultFont);
2142
- }
2143
- setSeriesColors() {
2144
- const element = this.element;
2145
- const series = [].slice.call(element.querySelectorAll('.k-var--series div'));
2146
- const unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));
2147
- const seriesColors = series.reduce((arr, el) => {
2148
- const pos = seriesPos(el.className);
2149
- const color = computedBackgroundColor(el);
2150
- if (color !== unsetColor) {
2151
- arr[pos] = color;
2152
- }
2153
- return arr;
2154
- }, [] // Will populate the series colors in this array
2155
- );
2156
- this.setStyle('seriesColors', seriesColors);
2157
- }
2158
- mapColor(key, varName, styleKey = 'backgroundColor') {
2159
- this.setStyle(key, this.queryStyle(varName)[styleKey]);
2160
- }
2161
- queryColor(varName) {
2162
- return this.queryStyle(varName).backgroundColor;
2163
- }
2164
- queryStyle(varName) {
2165
- const element = this.element.querySelector(`.k-var--${varName}`);
2166
- return window.getComputedStyle(element);
2167
- }
2168
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThemeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
1985
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThemeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2169
1986
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThemeService, providedIn: 'root' });
2170
1987
  }
2171
1988
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThemeService, decorators: [{
@@ -2173,7 +1990,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2173
1990
  args: [{
2174
1991
  providedIn: 'root'
2175
1992
  }]
2176
- }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
1993
+ }] });
2177
1994
 
2178
1995
  /**
2179
1996
  * @hidden
@@ -2909,8 +2726,8 @@ const packageMetadata = {
2909
2726
  productName: 'Kendo UI for Angular',
2910
2727
  productCode: 'KENDOUIANGULAR',
2911
2728
  productCodes: ['KENDOUIANGULAR'],
2912
- publishDate: 1738245977,
2913
- version: '18.1.0-develop.3',
2729
+ publishDate: 1739264428,
2730
+ version: '18.1.0-develop.31',
2914
2731
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2915
2732
  };
2916
2733
 
@@ -4193,12 +4010,22 @@ class XAxisItemComponent extends CollectionItemComponent {
4193
4010
  labels;
4194
4011
  notes;
4195
4012
  title;
4013
+ intlSubscription;
4196
4014
  constructor(configurationService, collectionService, intl, localeId) {
4197
4015
  super(configurationService, collectionService);
4198
4016
  this.configurationService = configurationService;
4199
4017
  this.collectionService = collectionService;
4200
4018
  this.intl = intl;
4201
- this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });
4019
+ intl.localeId = localeId;
4020
+ this.notifyChanges({ weekStartDay: intl.firstDay(intl.localeId) });
4021
+ this.intlSubscription = intl.changes.subscribe(() => {
4022
+ this.notifyChanges({ weekStartDay: intl.firstDay(intl.localeId) });
4023
+ });
4024
+ }
4025
+ ngOnDestroy() {
4026
+ if (this.intlSubscription) {
4027
+ this.intlSubscription.unsubscribe();
4028
+ }
4202
4029
  }
4203
4030
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
4204
4031
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: XAxisItemComponent, isStandalone: true, selector: "kendo-chart-x-axis-item", inputs: { axisCrossingValue: "axisCrossingValue", background: "background", baseUnit: "baseUnit", categories: "categories", color: "color", line: "line", majorGridLines: "majorGridLines", majorTicks: "majorTicks", majorUnit: "majorUnit", max: "max", min: "min", minorGridLines: "minorGridLines", minorTicks: "minorTicks", minorUnit: "minorUnit", name: "name", narrowRange: "narrowRange", pane: "pane", plotBands: "plotBands", reverse: "reverse", startAngle: "startAngle", type: "type", visible: "visible", weekStartDay: "weekStartDay", crosshair: "crosshair", labels: "labels", notes: "notes", title: "title" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -5785,6 +5612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5785
5612
  class CategoryAxisItemComponent extends CollectionItemComponent {
5786
5613
  configurationService;
5787
5614
  collectionService;
5615
+ intl;
5788
5616
  autoBaseUnitSteps;
5789
5617
  axisCrossingValue;
5790
5618
  background;
@@ -5856,11 +5684,22 @@ class CategoryAxisItemComponent extends CollectionItemComponent {
5856
5684
  select;
5857
5685
  title;
5858
5686
  rangeLabels;
5687
+ intlSubscription;
5859
5688
  constructor(configurationService, collectionService, intl, localeId) {
5860
5689
  super(configurationService, collectionService);
5861
5690
  this.configurationService = configurationService;
5862
5691
  this.collectionService = collectionService;
5863
- this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });
5692
+ this.intl = intl;
5693
+ intl.localeId = localeId;
5694
+ this.notifyChanges({ weekStartDay: intl.firstDay(intl.localeId) });
5695
+ this.intlSubscription = intl.changes.subscribe(() => {
5696
+ this.notifyChanges({ weekStartDay: intl.firstDay(intl.localeId) });
5697
+ });
5698
+ }
5699
+ ngOnDestroy() {
5700
+ if (this.intlSubscription) {
5701
+ this.intlSubscription.unsubscribe();
5702
+ }
5864
5703
  }
5865
5704
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CategoryAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
5866
5705
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CategoryAxisItemComponent, isStandalone: true, selector: "kendo-chart-category-axis-item", inputs: { autoBaseUnitSteps: "autoBaseUnitSteps", axisCrossingValue: "axisCrossingValue", background: "background", baseUnit: "baseUnit", baseUnitStep: "baseUnitStep", categories: "categories", color: "color", justified: "justified", line: "line", majorGridLines: "majorGridLines", majorTicks: "majorTicks", max: "max", maxDateGroups: "maxDateGroups", maxDivisions: "maxDivisions", min: "min", minorGridLines: "minorGridLines", minorTicks: "minorTicks", name: "name", pane: "pane", plotBands: "plotBands", reverse: "reverse", roundToBaseUnit: "roundToBaseUnit", startAngle: "startAngle", type: "type", visible: "visible", weekStartDay: "weekStartDay", crosshair: "crosshair", labels: "labels", notes: "notes", select: "select", title: "title", rangeLabels: "rangeLabels" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -8745,13 +8584,14 @@ class LegendComponent extends SettingsComponent {
8745
8584
  inactiveItems;
8746
8585
  item;
8747
8586
  title;
8587
+ focusHighlight;
8748
8588
  constructor(configurationService) {
8749
8589
  super('legend', configurationService);
8750
8590
  this.configurationService = configurationService;
8751
8591
  this.markAsVisible();
8752
8592
  }
8753
8593
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegendComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
8754
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LegendComponent, isStandalone: true, selector: "kendo-chart-legend", inputs: { align: "align", background: "background", border: "border", height: "height", labels: "labels", margin: "margin", offsetX: "offsetX", offsetY: "offsetY", orientation: "orientation", padding: "padding", position: "position", reverse: "reverse", visible: "visible", width: "width", markers: "markers", spacing: "spacing", inactiveItems: "inactiveItems", item: "item", title: "title" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8594
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LegendComponent, isStandalone: true, selector: "kendo-chart-legend", inputs: { align: "align", background: "background", border: "border", height: "height", labels: "labels", margin: "margin", offsetX: "offsetX", offsetY: "offsetY", orientation: "orientation", padding: "padding", position: "position", reverse: "reverse", visible: "visible", width: "width", markers: "markers", spacing: "spacing", inactiveItems: "inactiveItems", item: "item", title: "title", focusHighlight: "focusHighlight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8755
8595
  }
8756
8596
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegendComponent, decorators: [{
8757
8597
  type: Component,
@@ -8799,6 +8639,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
8799
8639
  type: Input
8800
8640
  }], title: [{
8801
8641
  type: Input
8642
+ }], focusHighlight: [{
8643
+ type: Input
8802
8644
  }] } });
8803
8645
 
8804
8646
  /**
@@ -9136,12 +8978,13 @@ class SeriesDefaultsComponent extends SettingsComponent {
9136
8978
  labels;
9137
8979
  notes;
9138
8980
  tooltip;
8981
+ focusHighlight;
9139
8982
  constructor(configurationService) {
9140
8983
  super('seriesDefaults', configurationService);
9141
8984
  this.configurationService = configurationService;
9142
8985
  }
9143
8986
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SeriesDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
9144
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SeriesDefaultsComponent, isStandalone: true, selector: "kendo-chart-series-defaults", inputs: { border: "border", gap: "gap", highlight: "highlight", overlay: "overlay", spacing: "spacing", stack: "stack", type: "type", visual: "visual", labels: "labels", notes: "notes", tooltip: "tooltip" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8987
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SeriesDefaultsComponent, isStandalone: true, selector: "kendo-chart-series-defaults", inputs: { border: "border", gap: "gap", highlight: "highlight", overlay: "overlay", spacing: "spacing", stack: "stack", type: "type", visual: "visual", labels: "labels", notes: "notes", tooltip: "tooltip", focusHighlight: "focusHighlight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
9145
8988
  }
9146
8989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SeriesDefaultsComponent, decorators: [{
9147
8990
  type: Component,
@@ -9173,6 +9016,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9173
9016
  type: Input
9174
9017
  }], tooltip: [{
9175
9018
  type: Input
9019
+ }], focusHighlight: [{
9020
+ type: Input
9176
9021
  }] } });
9177
9022
 
9178
9023
  /**
@@ -10648,6 +10493,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
10648
10493
  args: ['breadcrumb', { static: true }]
10649
10494
  }] } });
10650
10495
 
10496
+ /**
10497
+ * @hidden
10498
+ */
10499
+ class SankeyThemeService extends ThemeService {
10500
+ readTheme() {
10501
+ const theme = sankeyTheme(this.element);
10502
+ this.push(theme);
10503
+ }
10504
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyThemeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10505
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyThemeService, providedIn: 'root' });
10506
+ }
10507
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyThemeService, decorators: [{
10508
+ type: Injectable,
10509
+ args: [{
10510
+ providedIn: 'root'
10511
+ }]
10512
+ }] });
10513
+
10651
10514
  /**
10652
10515
  * @hidden
10653
10516
  */
@@ -11541,19 +11404,13 @@ class SankeyComponent {
11541
11404
  this.optionsChange = combineLatest([this.configurationService.onChange$, this.themeService.onChange$])
11542
11405
  .pipe(tap((result) => {
11543
11406
  this.options = result[0];
11544
- this.theme = this.loadTheme(result[1]);
11407
+ this.theme = result[1];
11545
11408
  }), auditTime(THROTTLE_MS))
11546
11409
  .subscribe(() => {
11547
11410
  this.refresh();
11548
11411
  });
11549
11412
  });
11550
11413
  }
11551
- loadTheme(chartTheme) {
11552
- return {
11553
- ...chartTheme,
11554
- nodeColors: chartTheme.seriesColors,
11555
- };
11556
- }
11557
11414
  run(callback, inZone = true, detectChanges) {
11558
11415
  if (inZone) {
11559
11416
  if (detectChanges) {
@@ -11592,7 +11449,7 @@ class SankeyComponent {
11592
11449
  get isRTL() {
11593
11450
  return Boolean(this.localizationService.rtl);
11594
11451
  }
11595
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyComponent, deps: [{ token: i0.ElementRef }, { token: ConfigurationService }, { token: ThemeService }, { token: i1$1.LocalizationService }, { token: InstanceEventService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i3.IntlService }], target: i0.ɵɵFactoryTarget.Component });
11452
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyComponent, deps: [{ token: i0.ElementRef }, { token: ConfigurationService }, { token: SankeyThemeService }, { token: i1$1.LocalizationService }, { token: InstanceEventService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i3.IntlService }], target: i0.ɵɵFactoryTarget.Component });
11596
11453
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyComponent, isStandalone: true, selector: "kendo-sankey", inputs: { data: "data", links: "links", nodes: "nodes", labels: "labels", title: "title", legend: "legend", tooltip: "tooltip", disableAutoLayout: "disableAutoLayout", navigable: "navigable", popupSettings: "popupSettings" }, outputs: { nodeEnter: "nodeEnter", nodeLeave: "nodeLeave", nodeClick: "nodeClick", linkEnter: "linkEnter", linkLeave: "linkLeave", linkClick: "linkClick" }, providers: [
11597
11454
  ConfigurationService,
11598
11455
  LocalizationService,
@@ -11650,7 +11507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11650
11507
  standalone: true,
11651
11508
  imports: [LocalizedMessagesDirective, SankeyTooltipPopupComponent, NgIf, WatermarkOverlayComponent]
11652
11509
  }]
11653
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ConfigurationService }, { type: ThemeService }, { type: i1$1.LocalizationService }, { type: InstanceEventService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i3.IntlService }]; }, propDecorators: { data: [{
11510
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ConfigurationService }, { type: SankeyThemeService }, { type: i1$1.LocalizationService }, { type: InstanceEventService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i3.IntlService }]; }, propDecorators: { data: [{
11654
11511
  type: Input
11655
11512
  }], links: [{
11656
11513
  type: Input
@@ -11960,12 +11817,13 @@ class SankeyLinksComponent extends SettingsComponent {
11960
11817
  color;
11961
11818
  opacity;
11962
11819
  highlight;
11820
+ focusHighlight;
11963
11821
  constructor(configurationService) {
11964
11822
  super('links', configurationService);
11965
11823
  this.configurationService = configurationService;
11966
11824
  }
11967
11825
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyLinksComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
11968
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyLinksComponent, isStandalone: true, selector: "kendo-sankey-links", inputs: { colorType: "colorType", color: "color", opacity: "opacity", highlight: "highlight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11826
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyLinksComponent, isStandalone: true, selector: "kendo-sankey-links", inputs: { colorType: "colorType", color: "color", opacity: "opacity", highlight: "highlight", focusHighlight: "focusHighlight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11969
11827
  }
11970
11828
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyLinksComponent, decorators: [{
11971
11829
  type: Component,
@@ -11983,6 +11841,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11983
11841
  type: Input
11984
11842
  }], highlight: [{
11985
11843
  type: Input
11844
+ }], focusHighlight: [{
11845
+ type: Input
11986
11846
  }] } });
11987
11847
 
11988
11848
  /**
@@ -12048,12 +11908,13 @@ class SankeyNodesComponent extends SettingsComponent {
12048
11908
  padding;
12049
11909
  width;
12050
11910
  align;
11911
+ focusHighlight;
12051
11912
  constructor(configurationService) {
12052
11913
  super('nodes', configurationService);
12053
11914
  this.configurationService = configurationService;
12054
11915
  }
12055
11916
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyNodesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
12056
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyNodesComponent, isStandalone: true, selector: "kendo-sankey-nodes", inputs: { colorType: "colorType", color: "color", opacity: "opacity", offset: "offset", padding: "padding", width: "width", align: "align" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11917
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SankeyNodesComponent, isStandalone: true, selector: "kendo-sankey-nodes", inputs: { colorType: "colorType", color: "color", opacity: "opacity", offset: "offset", padding: "padding", width: "width", align: "align", focusHighlight: "focusHighlight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12057
11918
  }
12058
11919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SankeyNodesComponent, decorators: [{
12059
11920
  type: Component,
@@ -12077,6 +11938,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12077
11938
  type: Input
12078
11939
  }], align: [{
12079
11940
  type: Input
11941
+ }], focusHighlight: [{
11942
+ type: Input
12080
11943
  }] } });
12081
11944
 
12082
11945
  /**
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Border, LegendLabels, Margin, Padding, LegendTitle } from '../common/property-types';
5
+ import { Border, LegendLabels, Margin, Padding, LegendTitle, FocusHighlight } from '../common/property-types';
6
6
  import { LegendInactiveItems } from './legend/inactive-items.interface';
7
7
  import { LegendItem } from './legend/item.interface';
8
8
  import { LegendMarkers } from './legend/markers.interface';
@@ -93,4 +93,8 @@ export interface Legend {
93
93
  * By default, the Chart will not render a legend title.
94
94
  */
95
95
  title?: LegendTitle;
96
+ /**
97
+ * The focus highlight configuration options of the Chart legend.
98
+ */
99
+ focusHighlight?: FocusHighlight;
96
100
  }
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { drawing } from '@progress/kendo-drawing';
6
- import { Border, Overlay, SeriesHighlight, SeriesStack, SeriesType, SeriesVisualArgs } from '../common/property-types';
6
+ import { Border, FocusHighlight, Overlay, SeriesHighlight, SeriesStack, SeriesType, SeriesVisualArgs } from '../common/property-types';
7
7
  import { Series } from '../option-types/series-item.interface';
8
8
  import { SeriesDefaultsLabels } from './series-defaults/labels.interface';
9
9
  import { SeriesDefaultsNotes } from './series-defaults/notes.interface';
@@ -174,4 +174,8 @@ export interface SeriesDefaults {
174
174
  * The configuration options of the Chart series tooltip.
175
175
  */
176
176
  tooltip?: SeriesDefaultsTooltip;
177
+ /**
178
+ * The focus highlight configuration options.
179
+ */
180
+ focusHighlight?: FocusHighlight;
177
181
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-charts",
3
- "version": "18.1.0-develop.3",
3
+ "version": "18.1.0-develop.31",
4
4
  "description": "Kendo UI Charts for Angular - A comprehensive package for creating beautiful and interactive data visualization. Every chart type, stock charts, and sparklines are included.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -42,7 +42,7 @@
42
42
  "package": {
43
43
  "productName": "Kendo UI for Angular",
44
44
  "productCode": "KENDOUIANGULAR",
45
- "publishDate": 1738245977,
45
+ "publishDate": 1739264428,
46
46
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
47
47
  }
48
48
  },
@@ -52,19 +52,19 @@
52
52
  "@angular/core": "16 - 19",
53
53
  "@angular/platform-browser": "16 - 19",
54
54
  "@progress/kendo-drawing": "^1.21.0",
55
- "@progress/kendo-licensing": "^1.0.2",
56
- "@progress/kendo-angular-common": "18.1.0-develop.3",
57
- "@progress/kendo-angular-intl": "18.1.0-develop.3",
58
- "@progress/kendo-angular-icons": "18.1.0-develop.3",
59
- "@progress/kendo-angular-l10n": "18.1.0-develop.3",
60
- "@progress/kendo-angular-popup": "18.1.0-develop.3",
61
- "@progress/kendo-angular-navigation": "18.1.0-develop.3",
55
+ "@progress/kendo-licensing": "^1.4.0",
56
+ "@progress/kendo-angular-common": "18.1.0-develop.31",
57
+ "@progress/kendo-angular-intl": "18.1.0-develop.31",
58
+ "@progress/kendo-angular-icons": "18.1.0-develop.31",
59
+ "@progress/kendo-angular-l10n": "18.1.0-develop.31",
60
+ "@progress/kendo-angular-popup": "18.1.0-develop.31",
61
+ "@progress/kendo-angular-navigation": "18.1.0-develop.31",
62
62
  "rxjs": "^6.5.3 || ^7.0.0"
63
63
  },
64
64
  "dependencies": {
65
65
  "tslib": "^2.3.1",
66
- "@progress/kendo-angular-schematics": "18.1.0-develop.3",
67
- "@progress/kendo-charts": "2.7.0",
66
+ "@progress/kendo-angular-schematics": "18.1.0-develop.31",
67
+ "@progress/kendo-charts": "2.7.1",
68
68
  "@progress/kendo-svg-icons": "^4.0.0"
69
69
  },
70
70
  "schematics": "./schematics/collection.json",
@@ -13,7 +13,7 @@ export interface SankeyTitle extends Title {
13
13
  /**
14
14
  * Represents the Sankey legend options.
15
15
  */
16
- export interface SankeyLegend extends Omit<Legend, 'inactiveItems' | 'item'> {
16
+ export interface SankeyLegend extends Omit<Legend, 'inactiveItems' | 'item' | 'focusHighlight'> {
17
17
  /**
18
18
  * The configuration of the legend items.
19
19
  */