Skip to content

Commit 4367470

Browse files
authored
feat: add chart-end-resize event (#9973)
1 parent 9ac5abe commit 4367470

File tree

6 files changed

+29
-5
lines changed

6 files changed

+29
-5
lines changed

packages/charts/src/vaadin-chart-mixin.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ export type ChartRedrawEvent = CustomEvent<{ chart: HighchartsChart; originalEve
8585
*/
8686
export type ChartSelectionEvent = CustomEvent<{ chart: HighchartsChart; originalEvent: ChartEvent }>;
8787

88+
/**
89+
* Fired when the chart finishes resizing.
90+
*/
91+
export type ChartEndResizeEvent = CustomEvent<{ chart: HighchartsChart; originalEvent: ChartEvent }>;
92+
8893
/**
8994
* Fired when the series has finished its initial animation.
9095
*/
@@ -227,6 +232,8 @@ export interface ChartCustomEventMap {
227232

228233
'chart-selection': ChartSelectionEvent;
229234

235+
'chart-end-resize': ChartEndResizeEvent;
236+
230237
'series-after-animate': ChartSeriesAfterAnimateEvent;
231238

232239
'series-checkbox-click': ChartSeriesCheckboxClickEvent;

packages/charts/src/vaadin-chart-mixin.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,14 @@ export const ChartMixin = (superClass) =>
551551
* @param {Object} chart Chart object where the event was sent from
552552
*/
553553
selection: 'chart-selection',
554+
555+
/**
556+
* Fired when the chart finishes resizing.
557+
* @event chart-end-resize
558+
* @param {Object} detail.originalEvent object with details about the event sent
559+
* @param {Object} chart Chart object where the event was sent from
560+
*/
561+
endResize: 'chart-end-resize',
554562
};
555563
}
556564

packages/charts/src/vaadin-chart.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ export * from './vaadin-chart-mixin.js';
122122
* @fires {CustomEvent} chart-drillupall - Fired after all the drilldown series has been drilled up.
123123
* @fires {CustomEvent} chart-redraw - Fired after the chart redraw.
124124
* @fires {CustomEvent} chart-selection - Fired when an area of the chart has been selected.
125+
* @fires {CustomEvent} chart-end-resize - Fired when the chart finishes resizing.
125126
* @fires {CustomEvent} series-after-animate - Fired when the series has finished its initial animation.
126127
* @fires {CustomEvent} series-checkbox-click - Fired when the checkbox next to the series' name in the legend is clicked.
127128
* @fires {CustomEvent} series-click - Fired when the series is clicked.

packages/charts/src/vaadin-chart.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ import { ChartMixin } from './vaadin-chart-mixin.js';
127127
* @fires {CustomEvent} chart-drillupall - Fired after all the drilldown series has been drilled up.
128128
* @fires {CustomEvent} chart-redraw - Fired after the chart redraw.
129129
* @fires {CustomEvent} chart-selection - Fired when an area of the chart has been selected.
130+
* @fires {CustomEvent} chart-end-resize - Fired when the chart finishes resizing.
130131
* @fires {CustomEvent} series-after-animate - Fired when the series has finished its initial animation.
131132
* @fires {CustomEvent} series-checkbox-click - Fired when the checkbox next to the series' name in the legend is clicked.
132133
* @fires {CustomEvent} series-click - Fired when the series is clicked.

packages/charts/test/chart-element.test.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from '@vaadin/chai-plugins';
2-
import { aTimeout, fixtureSync, nextFrame, nextRender, nextResize, oneEvent } from '@vaadin/testing-helpers';
2+
import { aTimeout, fixtureSync, nextFrame, nextRender, oneEvent } from '@vaadin/testing-helpers';
33
import sinon from 'sinon';
44
import '../src/vaadin-chart.js';
55

@@ -284,7 +284,7 @@ describe('vaadin-chart', () => {
284284

285285
it('should update container height on chart resize', async () => {
286286
chart.style.width = '300px';
287-
await oneEvent(chart, 'chart-redraw');
287+
await oneEvent(chart, 'chart-end-resize');
288288
const rect = chart.$.chart.getBoundingClientRect();
289289
expect(rect.width).to.be.equal(300);
290290
expect(chart.configuration.chartWidth).to.be.equal(300);
@@ -307,7 +307,7 @@ describe('vaadin-chart', () => {
307307

308308
it('should update container height on chart resize', async () => {
309309
chart.style.height = '300px';
310-
await oneEvent(chart, 'chart-redraw');
310+
await oneEvent(chart, 'chart-end-resize');
311311
const rect = chart.$.chart.getBoundingClientRect();
312312
expect(rect.height).to.be.equal(300);
313313
expect(chart.configuration.chartHeight).to.be.equal(300);
@@ -338,7 +338,7 @@ describe('vaadin-chart', () => {
338338
expect(charts[1].configuration.chartWidth).to.be.equal(500);
339339

340340
layout.style.width = '500px';
341-
await nextResize(charts[0]);
341+
await oneEvent(charts[0], 'chart-end-resize');
342342

343343
expect(layout.getBoundingClientRect().width).to.be.equal(500);
344344
expect(charts[0].configuration.chartWidth).to.be.equal(250);
@@ -351,7 +351,7 @@ describe('vaadin-chart', () => {
351351
expect(charts[1].configuration.chartHeight).to.be.equal(300);
352352

353353
layout.style.height = '200px';
354-
await nextResize(charts[0]);
354+
await oneEvent(charts[0], 'chart-end-resize');
355355

356356
expect(layout.getBoundingClientRect().height).to.be.equal(200);
357357
expect(charts[0].configuration.chartHeight).to.be.equal(200);

packages/charts/test/typings/chart.types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type {
1010
ChartDrilldownEvent,
1111
ChartDrillupallEvent,
1212
ChartDrillupEvent,
13+
ChartEndResizeEvent,
1314
ChartLoadEvent,
1415
ChartPointClickEvent,
1516
ChartPointDragEvent,
@@ -113,6 +114,12 @@ chart.addEventListener('chart-selection', (event) => {
113114
assertType<HighchartsChart>(event.detail.originalEvent.target);
114115
});
115116

117+
chart.addEventListener('chart-end-resize', (event) => {
118+
assertType<ChartEndResizeEvent>(event);
119+
assertType<HighchartsChart>(event.detail.chart);
120+
assertType<HighchartsChart>(event.detail.originalEvent.target);
121+
});
122+
116123
chart.addEventListener('series-after-animate', (event) => {
117124
assertType<ChartSeriesAfterAnimateEvent>(event);
118125
assertType<Series>(event.detail.series);

0 commit comments

Comments
 (0)