Skip to content

Commit 83774fa

Browse files
committed
feat(element): element events types
1 parent 299d0a1 commit 83774fa

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

scripts/build-types.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ export default async function buildTypes() {
1212
elapsed.start('types');
1313
let coreEventsReact = '';
1414
let coreEventsVue = '';
15+
let coreEventsElement = '';
1516
let modulesEventsReact = '';
1617
let modulesEventsVue = '';
18+
let modulesEventsElement = '';
1719

1820
const replaceInstances = (content) => {
1921
return content
@@ -29,6 +31,14 @@ export default async function buildTypes() {
2931
coreEventsContent = coreEventsContent
3032
.split('// CORE_EVENTS_START')[1]
3133
.split('// CORE_EVENTS_END')[0];
34+
coreEventsElement = replaceInstances(
35+
coreEventsContent.replace(/ ([a-zA-Z_?]*): ([^;]*);/g, (string, name) => {
36+
if (name.includes('_')) {
37+
return '';
38+
}
39+
return ` ${name.toLowerCase()}: CustomEvent;`;
40+
}),
41+
);
3242
coreEventsReact = replaceInstances(
3343
coreEventsContent.replace(/ ([a-zA-Z]*): \(/g, (string, name) => {
3444
return ` on${name[0].toUpperCase()}${name.substr(1)}?: (`;
@@ -50,6 +60,11 @@ export default async function buildTypes() {
5060
let eventsContent = await fs.readFile(eventsFile, 'utf-8');
5161
eventsContent = eventsContent.split('Events {')[1].split('}')[0].trim();
5262
if (eventsContent.length) {
63+
modulesEventsElement += replaceInstances(
64+
eventsContent.replace(/ ([a-zA-Z]*): ([^;]*);/g, (string, name) => {
65+
return ` ${name.toLowerCase()}: CustomEvent;`;
66+
}),
67+
);
5368
modulesEventsReact += replaceInstances(
5469
eventsContent.replace(/ ([a-zA-Z]*): \(/g, (string, name) => {
5570
return ` on${name[0].toUpperCase()}${name.substr(1)}?: (`;
@@ -86,7 +101,7 @@ export default async function buildTypes() {
86101
return fs.writeFile(destPath, content);
87102
};
88103
if (file.includes('swiper-element.d.ts')) {
89-
return processTypingFile('', '');
104+
return processTypingFile(coreEventsElement, modulesEventsElement);
90105
}
91106
if (file.includes('swiper-react.d.ts')) {
92107
return processTypingFile(coreEventsReact, modulesEventsReact);

src/element/swiper-element.d.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
import { SwiperOptions } from '../types/swiper-options';
2-
import Swiper from '../types/swiper-class';
1+
import { SwiperOptions, Swiper } from '../types/';
32

43
declare const register: (injectStyles?: boolean) => void;
54

5+
// prettier-ignore
66
interface SwiperContainerEventMap extends HTMLElementEventMap {
7-
slidechange: Event;
7+
// CORE_EVENTS
8+
9+
// MODULES_EVENTS
810
}
911

1012
interface SwiperContainer extends HTMLElement {}
1113
interface SwiperContainer extends SwiperOptions {
12-
swiper?: Swiper;
13-
initialize?: () => void;
14-
injectStyles?: string[];
15-
injectStylesUrls?: string[];
16-
eventsPrefix?: string;
14+
swiper: Swiper;
15+
initialize: () => void;
16+
injectStyles: string[];
17+
injectStylesUrls: string[];
18+
eventsPrefix: string;
1719
addEventListener<K extends keyof SwiperContainerEventMap>(
1820
type: K,
1921
listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any,

0 commit comments

Comments
 (0)