Skip to content

Commit f52d1fe

Browse files
committed
feat: switch click wave effect
1 parent e030b94 commit f52d1fe

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"scripts": {
99
"test": "jest",
1010
"build": "rm -rf dist && tsc && lessc src/index.less dist/index.css",
11-
"example": "npm run build && cp dist/* example",
11+
"example": "esbuild ./src/index.ts --bundle --outdir=example --format=esm && lessc src/index.less example/index.css",
1212
"prepublishOnly": "npm run build && np --no-publish",
1313
"gh-pages": "npm run example && gh-pages -d example"
1414
},
@@ -29,9 +29,13 @@
2929
"@babel/preset-typescript": "^7.13.0",
3030
"@types/jest": "^26.0.23",
3131
"babel-jest": "^26.6.3",
32+
"esbuild": "^0.11.20",
3233
"gh-pages": "^3.1.0",
3334
"jest": "^26.6.3",
3435
"less": "^4.1.1",
3536
"typescript": "^4.2.4"
37+
},
38+
"dependencies": {
39+
"wave-effect": "^1.0.0"
3640
}
3741
}

src/index.less

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// lessc don't support ~
2+
@import 'wave-effect/src/wave.less';
3+
14
/**
25
Copy from Ant Design
36
https://github.com/ant-design/ant-design/blob/master/components/switch/style/index.less

src/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import wave, { clearEffect } from 'wave-effect'
2+
13
interface ExtendOptions {
24
prefixCls?: string
35
role?: string
@@ -71,11 +73,13 @@ const extend = (options: ExtendOptions) => {
7173

7274
const createSwitch = <T extends HTMLElement>(element: T, values?: Partial<SwitchValues>) => {
7375
const buttonEle = element
76+
buttonEle.innerHTML = ''
77+
7478
const handleEle = document.createElement('div')
7579
const textEle = document.createElement('span')
7680
const loadingEle = document.createElement('span')
7781

78-
buttonEle.className = classWithPrefix('switch')
82+
buttonEle.classList.add(classWithPrefix('switch'))
7983
if (small) {
8084
buttonEle.classList.add(classWithPrefix('switch-small'))
8185
}
@@ -135,12 +139,18 @@ const extend = (options: ExtendOptions) => {
135139

136140
buttonEle.addEventListener('click', internalClickEvent)
137141

142+
wave(buttonEle, {
143+
disabledClass: ['loading', 'disabled'],
144+
})
145+
138146
return proxyValues
139147
}
140148
return createSwitch
141149
}
142150

143151
const deleteSwitch = <T extends HTMLElement>(element: HTMLElement) => {
152+
clearEffect(element)
153+
144154
element.innerHTML = ''
145155
element.className = ''
146156
element.removeAttribute('role')

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{
22
"compilerOptions": {
33
"target": "ES2015",
4-
"module": "ES2015",
4+
"module": "commonjs",
55
"outDir": "./dist",
66
"strict": true,
77
"esModuleInterop": true,
88
"declaration": true,
99
"skipLibCheck": true,
10+
"moduleResolution": "node",
1011
"forceConsistentCasingInFileNames": true
1112
},
1213
"exclude": ["*/test.ts"]

0 commit comments

Comments
 (0)