@vaadin/charts 22.0.0-rc1 → 23.0.0-alpha2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/charts",
3
- "version": "22.0.0-rc1",
3
+ "version": "23.0.0-alpha2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -33,9 +33,9 @@
33
33
  ],
34
34
  "dependencies": {
35
35
  "@polymer/polymer": "^3.0.0",
36
- "@vaadin/component-base": "22.0.0-rc1",
36
+ "@vaadin/component-base": "23.0.0-alpha2",
37
37
  "@vaadin/vaadin-license-checker": "^2.1.0",
38
- "@vaadin/vaadin-themable-mixin": "22.0.0-rc1",
38
+ "@vaadin/vaadin-themable-mixin": "23.0.0-alpha2",
39
39
  "highcharts": "9.2.2"
40
40
  },
41
41
  "devDependencies": {
@@ -43,5 +43,5 @@
43
43
  "@vaadin/testing-helpers": "^0.3.2",
44
44
  "sinon": "^9.2.4"
45
45
  },
46
- "gitHead": "7b6f44bcd2c0fd415028ace666feeb0fedb1d540"
46
+ "gitHead": "070f586dead02ca41b66717820c647f48bf1665f"
47
47
  }
@@ -371,7 +371,7 @@ class ChartSeries extends PolymerElement {
371
371
  if (parent && parent instanceof Chart) {
372
372
  if (unit && !parent.__getAxis(unit)) {
373
373
  const title = { title: { text: unit } };
374
- parent.__addAxis(Object.assign({ id: unit, axisGenerated: true }, title));
374
+ parent.__addAxis({ id: unit, axisGenerated: true, ...title });
375
375
  }
376
376
  series.update({ yAxis: unit || 0 });
377
377
 
@@ -30,7 +30,7 @@ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mix
30
30
  import { ChartSeries } from './vaadin-chart-series.js';
31
31
 
32
32
  /** @private */
33
- export const deepMerge = function deepMerge(target, source) {
33
+ export function deepMerge(target, source) {
34
34
  const isObject = (item) => item && typeof item === 'object' && !Array.isArray(item);
35
35
 
36
36
  if (isObject(source) && isObject(target)) {
@@ -48,12 +48,12 @@ export const deepMerge = function deepMerge(target, source) {
48
48
  }
49
49
 
50
50
  return target;
51
- };
51
+ }
52
52
 
53
53
  ['exportChart', 'exportChartLocal', 'getSVG'].forEach((methodName) => {
54
- Highcharts.wrap(Highcharts.Chart.prototype, methodName, function (proceed) {
54
+ Highcharts.wrap(Highcharts.Chart.prototype, methodName, function (proceed, ...args) {
55
55
  Highcharts.fireEvent(this, 'beforeExport');
56
- const result = proceed.apply(this, Array.prototype.slice.call(arguments, 1));
56
+ const result = proceed.apply(this, args);
57
57
  Highcharts.fireEvent(this, 'afterExport');
58
58
  return result;
59
59
  });
@@ -259,11 +259,10 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
259
259
  }
260
260
 
261
261
  /** @private */
262
- static __callHighchartsFunction(functionName, redrawCharts) {
262
+ static __callHighchartsFunction(functionName, redrawCharts, ...args) {
263
263
  const functionToCall = Highcharts[functionName];
264
- const argumentsForCall = Array.prototype.splice.call(arguments, 2);
265
264
  if (functionToCall && typeof functionToCall === 'function') {
266
- functionToCall.apply(this.configuration, argumentsForCall);
265
+ functionToCall.apply(this.configuration, args);
267
266
  if (redrawCharts) {
268
267
  Highcharts.charts.forEach((c) => c.redraw());
269
268
  }
@@ -527,7 +526,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
527
526
  return;
528
527
  }
529
528
 
530
- const options = Object.assign({}, this.options, this._jsonConfigurationBuffer);
529
+ const options = { ...this.options, ...this._jsonConfigurationBuffer };
531
530
  this._jsonConfigurationBuffer = null;
532
531
  this.__initChart(options);
533
532
  this.__addChildObserver();
@@ -541,7 +540,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
541
540
  * @return {!Options}
542
541
  */
543
542
  get options() {
544
- const options = Object.assign({}, this._baseConfig);
543
+ const options = { ...this._baseConfig };
545
544
  deepMerge(options, this.additionalOptions);
546
545
 
547
546
  if (this.type) {
@@ -636,7 +635,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
636
635
  if (this.chart3d) {
637
636
  options.chart = options.chart || {};
638
637
 
639
- options.chart.options3d = Object.assign({}, this._baseChart3d, options.chart.options3d);
638
+ options.chart.options3d = { ...this._baseChart3d, ...options.chart.options3d };
640
639
  }
641
640
 
642
641
  return options;
@@ -1037,6 +1036,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1037
1036
  /** @private */
1038
1037
  __initChart(options) {
1039
1038
  this.__initEventsListeners(options);
1039
+ this.__updateStyledMode(options);
1040
1040
  if (this.timeline) {
1041
1041
  this.configuration = Highcharts.stockChart(this.$.chart, options);
1042
1042
  } else {
@@ -1044,6 +1044,12 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1044
1044
  }
1045
1045
  }
1046
1046
 
1047
+ /** @private */
1048
+ __updateStyledMode(options) {
1049
+ const styledMode = options.chart.styledMode;
1050
+ this.$.chart.toggleAttribute('styled-mode', !!styledMode);
1051
+ }
1052
+
1047
1053
  /** @protected */
1048
1054
  disconnectedCallback() {
1049
1055
  super.disconnectedCallback();
@@ -1147,7 +1153,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1147
1153
  }
1148
1154
 
1149
1155
  if (resetConfiguration) {
1150
- const initialOptions = Object.assign({}, this.options, this._jsonConfigurationBuffer);
1156
+ const initialOptions = { ...this.options, ...this._jsonConfigurationBuffer };
1151
1157
 
1152
1158
  this.__initChart(initialOptions);
1153
1159
 
@@ -1212,8 +1218,10 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1212
1218
  const targetProperty = jsonConfiguration[attr];
1213
1219
  if (attr.indexOf('_fn_') === 0 && (typeof targetProperty === 'string' || targetProperty instanceof String)) {
1214
1220
  try {
1221
+ // eslint-disable-next-line no-eval
1215
1222
  jsonConfiguration[attr.substr(4)] = eval('(' + targetProperty + ')');
1216
1223
  } catch (e) {
1224
+ // eslint-disable-next-line no-eval
1217
1225
  jsonConfiguration[attr.substr(4)] = eval('(function(){' + targetProperty + '})');
1218
1226
  }
1219
1227
  delete jsonConfiguration[attr];
@@ -1332,7 +1340,7 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1332
1340
  // Zoom out a bit to avoid clipping the chart's edge on paper
1333
1341
  effectiveCss =
1334
1342
  effectiveCss +
1335
- +'body {' +
1343
+ 'body {' +
1336
1344
  ' -moz-transform: scale(0.9, 0.9);' + // Mozilla
1337
1345
  ' zoom: 0.9;' + // Others
1338
1346
  ' zoom: 90%;' + // Webkit
@@ -1609,12 +1617,11 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1609
1617
  if (chart3d) {
1610
1618
  config.update({
1611
1619
  chart: {
1612
- options3d: Object.assign(
1613
- {},
1614
- this._baseChart3d,
1615
- this.additionalOptions && this.additionalOptions.chart && this.additionalOptions.chart.options3d,
1616
- { enabled: true }
1617
- )
1620
+ options3d: {
1621
+ ...this._baseChart3d,
1622
+ ...(this.additionalOptions && this.additionalOptions.chart && this.additionalOptions.chart.options3d),
1623
+ enabled: true
1624
+ }
1618
1625
  }
1619
1626
  });
1620
1627
  } else {
@@ -1655,30 +1662,28 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1655
1662
  }
1656
1663
 
1657
1664
  /** @private */
1658
- __callChartFunction(functionName) {
1665
+ __callChartFunction(functionName, ...args) {
1659
1666
  if (this.configuration) {
1660
1667
  const functionToCall = this.configuration[functionName];
1661
- const argumentsForCall = Array.prototype.splice.call(arguments, 1);
1662
1668
  if (functionToCall && typeof functionToCall === 'function') {
1663
- functionToCall.apply(this.configuration, argumentsForCall);
1669
+ functionToCall.apply(this.configuration, args);
1664
1670
  }
1665
1671
  }
1666
1672
  }
1667
1673
 
1668
1674
  /** @private */
1669
- __callSeriesFunction(functionName, seriesIndex) {
1675
+ __callSeriesFunction(functionName, seriesIndex, ...args) {
1670
1676
  if (this.configuration && this.configuration.series[seriesIndex]) {
1671
1677
  const series = this.configuration.series[seriesIndex];
1672
1678
  const functionToCall = series[functionName];
1673
- const argumentsForCall = Array.prototype.splice.call(arguments, 2);
1674
1679
  if (functionToCall && typeof functionToCall === 'function') {
1675
- functionToCall.apply(series, argumentsForCall);
1680
+ functionToCall.apply(series, args);
1676
1681
  }
1677
1682
  }
1678
1683
  }
1679
1684
 
1680
1685
  /** @private */
1681
- __callAxisFunction(functionName, axisCategory, axisIndex) {
1686
+ __callAxisFunction(functionName, axisCategory, axisIndex, ...args) {
1682
1687
  /*
1683
1688
  * axisCategory:
1684
1689
  * 0 - xAxis
@@ -1701,20 +1706,21 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1701
1706
  case 3:
1702
1707
  axes = this.configuration.colorAxis;
1703
1708
  break;
1709
+ default:
1710
+ break;
1704
1711
  }
1705
1712
  if (axes && axes[axisIndex]) {
1706
1713
  const axis = axes[axisIndex];
1707
1714
  const functionToCall = axis[functionName];
1708
- const argumentsForCall = Array.prototype.splice.call(arguments, 3);
1709
1715
  if (functionToCall && typeof functionToCall === 'function') {
1710
- functionToCall.apply(axis, argumentsForCall);
1716
+ functionToCall.apply(axis, args);
1711
1717
  }
1712
1718
  }
1713
1719
  }
1714
1720
  }
1715
1721
 
1716
1722
  /** @private */
1717
- __callPointFunction(functionName, seriesIndex, pointIndex) {
1723
+ __callPointFunction(functionName, seriesIndex, pointIndex, ...args) {
1718
1724
  if (
1719
1725
  this.configuration &&
1720
1726
  this.configuration.series[seriesIndex] &&
@@ -1722,9 +1728,8 @@ class Chart extends ElementMixin(ThemableMixin(PolymerElement)) {
1722
1728
  ) {
1723
1729
  const point = this.configuration.series[seriesIndex].data[pointIndex];
1724
1730
  const functionToCall = point[functionName];
1725
- const argumentsForCall = Array.prototype.splice.call(arguments, 3);
1726
1731
  if (functionToCall && typeof functionToCall === 'function') {
1727
- functionToCall.apply(point, argumentsForCall);
1732
+ functionToCall.apply(point, args);
1728
1733
  }
1729
1734
  }
1730
1735
  }
@@ -0,0 +1,84 @@
1
+ import '../vaadin-chart-base-theme.js';
2
+ import '@vaadin/vaadin-lumo-styles/color.js';
3
+ import '@vaadin/vaadin-lumo-styles/typography.js';
4
+ import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/register-styles.js';
5
+
6
+ const chartColors = css`
7
+ :host {
8
+ --vaadin-charts-color-0: #5ac2f7;
9
+ --vaadin-charts-color-1: #1676f3;
10
+ --vaadin-charts-color-2: #ff7d94;
11
+ --vaadin-charts-color-3: #c5164e;
12
+ --vaadin-charts-color-4: #15c15d;
13
+ --vaadin-charts-color-5: #0e8151;
14
+ --vaadin-charts-color-6: #c18ed2;
15
+ --vaadin-charts-color-7: #9233b3;
16
+ --vaadin-charts-color-8: #fda253;
17
+ --vaadin-charts-color-9: #e24932;
18
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-4, #15c15d);
19
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-9, #e24932);
20
+ }
21
+
22
+ :host([theme~='gradient']) {
23
+ --vaadin-charts-color-0: #1676f3;
24
+ --vaadin-charts-color-1: #13bbf0;
25
+ --vaadin-charts-color-2: #1ee;
26
+ --vaadin-charts-color-3: #0cd9bf;
27
+ --vaadin-charts-color-4: #06be81;
28
+ --vaadin-charts-color-5: #00a344;
29
+ --vaadin-charts-color-6: #41c639;
30
+ --vaadin-charts-color-7: #8aed2c;
31
+ --vaadin-charts-color-8: #c0e632;
32
+ --vaadin-charts-color-9: #f6db3a;
33
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-6);
34
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-1);
35
+ }
36
+
37
+ :host([theme~='monotone']) {
38
+ --vaadin-charts-color-0: #1676f3;
39
+ --vaadin-charts-color-1: #4795f5;
40
+ --vaadin-charts-color-2: #71b0f7;
41
+ --vaadin-charts-color-3: #a0cef9;
42
+ --vaadin-charts-color-4: #bce0fa;
43
+ --vaadin-charts-color-5: #a8d8ed;
44
+ --vaadin-charts-color-6: #7fc3dd;
45
+ --vaadin-charts-color-7: #54adcc;
46
+ --vaadin-charts-color-8: #2b99bc;
47
+ --vaadin-charts-color-9: #0284ac;
48
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-3);
49
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-9);
50
+ }
51
+ `;
52
+
53
+ const chartTheme = css`
54
+ :host {
55
+ --vaadin-charts-background: var(--lumo-base-color);
56
+ --vaadin-charts-title-label: var(--lumo-header-text-color);
57
+ --vaadin-charts-axis-title: var(--lumo-secondary-text-color);
58
+ --vaadin-charts-axis-label: var(--lumo-secondary-text-color);
59
+ --vaadin-charts-data-label: var(--lumo-body-text-color);
60
+ --vaadin-charts-secondary-label: var(--lumo-secondary-text-color);
61
+ --vaadin-charts-axis-line: var(--lumo-contrast-5pct);
62
+ --vaadin-charts-grid-line: var(--lumo-contrast-20pct);
63
+ --vaadin-charts-disabled-label: var(--lumo-disabled-text-color);
64
+ --vaadin-charts-contrast: var(--lumo-contrast);
65
+ --vaadin-charts-contrast-5pct: var(--lumo-contrast-5pct);
66
+ --vaadin-charts-contrast-10pct: var(--lumo-contrast-10pct);
67
+ --vaadin-charts-contrast-20pct: var(--lumo-contrast-20pct);
68
+ --vaadin-charts-contrast-60pct: var(--lumo-contrast-60pct);
69
+ --vaadin-charts-tooltip-background: var(--lumo-base-color);
70
+ --vaadin-charts-tooltip-border-color: inherit;
71
+ --vaadin-charts-button-label: var(--lumo-primary-text-color);
72
+ --vaadin-charts-button-background: var(--lumo-contrast-5pct);
73
+ --vaadin-charts-button-hover-background: var(--lumo-primary-color-10pct);
74
+ --vaadin-charts-button-active-label: var(--lumo-primary-contrast-color);
75
+ --vaadin-charts-button-active-background: var(--lumo-primary-color);
76
+ --vaadin-charts-xaxis-line-width: 0;
77
+ --vaadin-charts-tooltip-background-opacity: 1;
78
+ font-family: var(--lumo-font-family);
79
+ }
80
+ `;
81
+
82
+ registerStyles('vaadin-chart', [chartColors, chartTheme], { moduleId: 'lumo-chart' });
83
+
84
+ export { chartColors, chartTheme };
@@ -0,0 +1,2 @@
1
+ import './vaadin-chart-styles.js';
2
+ import '../../src/vaadin-chart.js';
@@ -0,0 +1,84 @@
1
+ import '../vaadin-chart-base-theme.js';
2
+ import '@vaadin/vaadin-material-styles/color.js';
3
+ import '@vaadin/vaadin-material-styles/typography.js';
4
+ import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/register-styles.js';
5
+
6
+ const chartColors = css`
7
+ :host {
8
+ --vaadin-charts-color-0: #6200ee;
9
+ --vaadin-charts-color-1: #2fa69a;
10
+ --vaadin-charts-color-2: #ec611f;
11
+ --vaadin-charts-color-3: #fec02f;
12
+ --vaadin-charts-color-4: #ff4193;
13
+ --vaadin-charts-color-5: #007dee;
14
+ --vaadin-charts-color-6: #b064fc;
15
+ --vaadin-charts-color-7: #0c5d56;
16
+ --vaadin-charts-color-8: #42c6ff;
17
+ --vaadin-charts-color-9: #b00020;
18
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-1, #2fa69a);
19
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-9, #b00020);
20
+ }
21
+
22
+ :host([theme~='gradient']) {
23
+ --vaadin-charts-color-0: #6200ee;
24
+ --vaadin-charts-color-1: #6962e8;
25
+ --vaadin-charts-color-2: #619fe1;
26
+ --vaadin-charts-color-3: #2fbfd3;
27
+ --vaadin-charts-color-4: #03dac6;
28
+ --vaadin-charts-color-5: #5bd091;
29
+ --vaadin-charts-color-6: #acc65e;
30
+ --vaadin-charts-color-7: #ffbc2b;
31
+ --vaadin-charts-color-8: #fe9940;
32
+ --vaadin-charts-color-9: #fd695e;
33
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-6);
34
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-9);
35
+ }
36
+
37
+ :host([theme~='monotone']) {
38
+ --vaadin-charts-color-0: #6200ee;
39
+ --vaadin-charts-color-1: #7f39fb;
40
+ --vaadin-charts-color-2: #985eff;
41
+ --vaadin-charts-color-3: #bb86fc;
42
+ --vaadin-charts-color-4: #dbb2ff;
43
+ --vaadin-charts-color-5: #ecddfd;
44
+ --vaadin-charts-color-6: #9fe3eb;
45
+ --vaadin-charts-color-7: #03dac6;
46
+ --vaadin-charts-color-8: #00c4b4;
47
+ --vaadin-charts-color-9: #01a299;
48
+ --vaadin-charts-color-positive: var(--vaadin-charts-color-8);
49
+ --vaadin-charts-color-negative: var(--vaadin-charts-color-0);
50
+ }
51
+ `;
52
+
53
+ const chartTheme = css`
54
+ :host {
55
+ --vaadin-charts-background: var(--material-background-color);
56
+ --vaadin-charts-title-label: var(--material-body-text-color);
57
+ --vaadin-charts-axis-title: var(--material-secondary-text-color);
58
+ --vaadin-charts-axis-label: var(--material-secondary-text-color);
59
+ --vaadin-charts-data-label: var(--material-body-text-color);
60
+ --vaadin-charts-secondary-label: var(--material-secondary-text-color);
61
+ --vaadin-charts-axis-line: var(--vaadin-charts-contrast-5pct);
62
+ --vaadin-charts-grid-line: var(--vaadin-charts-contrast-10pct);
63
+ --vaadin-charts-disabled-label: var(--material-disabled-text-color);
64
+ --vaadin-charts-contrast: var(--material-body-text-color);
65
+ --vaadin-charts-contrast-5pct: var(--material-secondary-background-color);
66
+ --vaadin-charts-contrast-10pct: var(--material-divider-color);
67
+ --vaadin-charts-contrast-20pct: var(--material-disabled-color);
68
+ --vaadin-charts-contrast-60pct: var(--material-secondary-text-color);
69
+ --vaadin-charts-tooltip-background: var(--material-background-color);
70
+ --vaadin-charts-tooltip-border-color: var(--material-background-color);
71
+ --vaadin-charts-button-label: var(--material-primary-color);
72
+ --vaadin-charts-button-background: var(--material-background-color);
73
+ --vaadin-charts-button-hover-background: var(--material-secondary-background-color);
74
+ --vaadin-charts-button-active-label: var(--material-primary-contrast-color);
75
+ --vaadin-charts-button-active-background: var(--material-primary-color);
76
+ --vaadin-charts-xaxis-line-width: 0;
77
+ --vaadin-charts-tooltip-background-opacity: 1;
78
+ font-family: var(--material-font-family);
79
+ }
80
+ `;
81
+
82
+ registerStyles('vaadin-chart', [chartColors, chartTheme], { moduleId: 'material-chart' });
83
+
84
+ export { chartColors, chartTheme };
@@ -0,0 +1,2 @@
1
+ import './vaadin-chart-styles.js';
2
+ import '../../src/vaadin-chart.js';