From 58e7b136523bd304dedb5d75e2b57e36e5e9931b Mon Sep 17 00:00:00 2001 From: Justineo Date: Sun, 1 Jan 2023 23:51:43 +0800 Subject: [PATCH] feat: improve typings for mouse events --- CHANGELOG.md | 4 ++++ package.json | 2 +- src/types.ts | 29 ++++++++++++++++++++++++----- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f11b7a..1e3af09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 6.4.1 + +* Improve typings for mouse event params. + ## 6.4.0 * Delay the disposal of the ECharts instance to the moment the element is disconnected from the DOM if possible (#433). diff --git a/package.json b/package.json index bbadd7d..66849d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-echarts", - "version": "6.4.0", + "version": "6.4.1", "description": "Vue.js component for Apache ECharts.", "author": "GU Yiling ", "scripts": { diff --git a/src/types.ts b/src/types.ts index 8cae704..eae5d4b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -20,7 +20,7 @@ export type EventTarget = EChartsType | ZRenderType; type SetOptionType = EChartsType["setOption"]; export type Option = Parameters[0]; -type EChartsEventName = +type EChartsMouseEventName = | "click" | "dblclick" | "mousedown" @@ -29,7 +29,8 @@ type EChartsEventName = | "mouseover" | "mouseout" | "globalout" - | "contextmenu" + | "contextmenu"; +type EChartsOtherEventName = | "highlight" | "downplay" | "selectchanged" @@ -77,7 +78,25 @@ type ZRenderEventName = | "dragover" | "drop" | "globalout"; -type EventName = EChartsEventName | `zr:${ZRenderEventName}`; -export type Emits = { - [key in EventName]: null; +type OtherEventName = EChartsOtherEventName | `zr:${ZRenderEventName}`; + +// See https://echarts.apache.org/en/api.html#events.Mouse%20events +interface MouseEventParams { + componentType: string; + seriesType: string; + seriesIndex: number; + seriesName: string; + name: string; + dataIndex: number; + color: string; +} + +type MouseEmits = { + [k in EChartsMouseEventName]: (params: MouseEventParams) => boolean; }; + +type OtherEmits = { + [key in OtherEventName]: null; +}; + +export type Emits = MouseEmits & OtherEmits;