@varlet/cli 1.27.17-alpha.1656907860130 → 1.27.19

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.
Files changed (210) hide show
  1. package/LICENCE +21 -21
  2. package/README.en-US.md +401 -401
  3. package/README.md +396 -396
  4. package/generators/base/.prettierignore +9 -9
  5. package/generators/base/.prettierrc +5 -5
  6. package/generators/base/README.md +82 -82
  7. package/generators/base/babel.config.js +10 -10
  8. package/generators/base/public/highlight.css +1 -1
  9. package/generators/base/public/logo.svg +1 -1
  10. package/generators/base/shims/shims-md.d.ts +4 -4
  11. package/generators/base/shims/shims-vue.d.ts +6 -6
  12. package/generators/base/tsconfig.json +13 -13
  13. package/generators/config/default/base/docs/home.zh-CN.md +10 -10
  14. package/generators/config/default/base/package.json +6 -0
  15. package/generators/config/default/base/types/basicComponent.d.ts +7 -7
  16. package/generators/config/default/base/types/button.d.ts +12 -12
  17. package/generators/config/default/base/types/index.d.ts +6 -6
  18. package/generators/config/default/base/varlet.config.js +110 -110
  19. package/generators/config/default/sfc/src/button/Button.vue +30 -30
  20. package/generators/config/default/sfc/src/button/__tests__/index.spec.js +7 -7
  21. package/generators/config/default/sfc/src/button/button.less +14 -14
  22. package/generators/config/default/sfc/src/button/docs/zh-CN.md +47 -47
  23. package/generators/config/default/sfc/src/button/example/BasicUse.vue +7 -7
  24. package/generators/config/default/sfc/src/button/example/ModifyColor.vue +7 -7
  25. package/generators/config/default/sfc/src/button/example/index.vue +13 -13
  26. package/generators/config/default/sfc/src/button/index.ts +10 -10
  27. package/generators/config/default/tsx/src/button/Button.tsx +31 -31
  28. package/generators/config/default/tsx/src/button/__tests__/index.spec.js +7 -7
  29. package/generators/config/default/tsx/src/button/button.less +14 -14
  30. package/generators/config/default/tsx/src/button/docs/zh-CN.md +47 -47
  31. package/generators/config/default/tsx/src/button/example/BasicUse.vue +7 -7
  32. package/generators/config/default/tsx/src/button/example/ModifyColor.vue +7 -7
  33. package/generators/config/default/tsx/src/button/example/index.vue +13 -13
  34. package/generators/config/default/tsx/src/button/index.ts +10 -10
  35. package/generators/config/i18n/base/docs/home.en-US.md +11 -11
  36. package/generators/config/i18n/base/docs/home.zh-CN.md +10 -10
  37. package/generators/config/i18n/base/package.json +6 -0
  38. package/generators/config/i18n/base/types/basicComponent.d.ts +7 -7
  39. package/generators/config/i18n/base/types/button.d.ts +12 -12
  40. package/generators/config/i18n/base/types/index.d.ts +7 -7
  41. package/generators/config/i18n/base/types/locale.d.ts +24 -24
  42. package/generators/config/i18n/base/varlet.config.js +122 -122
  43. package/generators/config/i18n/sfc/src/button/Button.vue +36 -36
  44. package/generators/config/i18n/sfc/src/button/__tests__/index.spec.js +7 -7
  45. package/generators/config/i18n/sfc/src/button/button.less +14 -14
  46. package/generators/config/i18n/sfc/src/button/docs/en-US.md +34 -34
  47. package/generators/config/i18n/sfc/src/button/docs/zh-CN.md +34 -34
  48. package/generators/config/i18n/sfc/src/button/example/BasicUse.vue +11 -11
  49. package/generators/config/i18n/sfc/src/button/example/ModifyColor.vue +11 -11
  50. package/generators/config/i18n/sfc/src/button/example/index.vue +13 -13
  51. package/generators/config/i18n/sfc/src/button/example/locale/en-US.ts +5 -5
  52. package/generators/config/i18n/sfc/src/button/example/locale/index.ts +23 -23
  53. package/generators/config/i18n/sfc/src/button/example/locale/zh-CN.ts +5 -5
  54. package/generators/config/i18n/sfc/src/button/index.ts +10 -10
  55. package/generators/config/i18n/sfc/src/locale/__tests__/index.spec.js +51 -51
  56. package/generators/config/i18n/sfc/src/locale/docs/en-US.md +26 -26
  57. package/generators/config/i18n/sfc/src/locale/docs/zh-CN.md +25 -25
  58. package/generators/config/i18n/sfc/src/locale/en-US.d.ts +5 -5
  59. package/generators/config/i18n/sfc/src/locale/en-US.ts +7 -7
  60. package/generators/config/i18n/sfc/src/locale/index.ts +67 -67
  61. package/generators/config/i18n/sfc/src/locale/zh-CN.d.ts +5 -5
  62. package/generators/config/i18n/sfc/src/locale/zh-CN.ts +7 -7
  63. package/generators/config/i18n/tsx/src/button/Button.tsx +35 -35
  64. package/generators/config/i18n/tsx/src/button/__tests__/index.spec.js +7 -7
  65. package/generators/config/i18n/tsx/src/button/button.less +14 -14
  66. package/generators/config/i18n/tsx/src/button/docs/en-US.md +34 -34
  67. package/generators/config/i18n/tsx/src/button/docs/zh-CN.md +34 -34
  68. package/generators/config/i18n/tsx/src/button/example/BasicUse.vue +11 -11
  69. package/generators/config/i18n/tsx/src/button/example/ModifyColor.vue +11 -11
  70. package/generators/config/i18n/tsx/src/button/example/index.vue +13 -13
  71. package/generators/config/i18n/tsx/src/button/example/locale/en-US.ts +5 -5
  72. package/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -23
  73. package/generators/config/i18n/tsx/src/button/example/locale/zh-CN.ts +5 -5
  74. package/generators/config/i18n/tsx/src/button/index.ts +10 -10
  75. package/generators/config/i18n/tsx/src/locale/__tests__/index.spec.js +51 -51
  76. package/generators/config/i18n/tsx/src/locale/docs/en-US.md +26 -26
  77. package/generators/config/i18n/tsx/src/locale/docs/zh-CN.md +25 -25
  78. package/generators/config/i18n/tsx/src/locale/en-US.d.ts +5 -5
  79. package/generators/config/i18n/tsx/src/locale/en-US.ts +7 -7
  80. package/generators/config/i18n/tsx/src/locale/index.ts +67 -67
  81. package/generators/config/i18n/tsx/src/locale/zh-CN.d.ts +5 -5
  82. package/generators/config/i18n/tsx/src/locale/zh-CN.ts +7 -7
  83. package/lib/commands/build.d.ts +1 -1
  84. package/lib/commands/build.js +67 -67
  85. package/lib/commands/changelog.d.ts +6 -6
  86. package/lib/commands/changelog.js +27 -27
  87. package/lib/commands/commitLint.d.ts +1 -1
  88. package/lib/commands/commitLint.js +21 -21
  89. package/lib/commands/compile.d.ts +5 -5
  90. package/lib/commands/compile.js +119 -119
  91. package/lib/commands/create.d.ts +3 -3
  92. package/lib/commands/create.js +132 -132
  93. package/lib/commands/dev.d.ts +3 -3
  94. package/lib/commands/dev.js +123 -123
  95. package/lib/commands/gen.d.ts +1 -1
  96. package/lib/commands/gen.js +112 -112
  97. package/lib/commands/jest.d.ts +8 -8
  98. package/lib/commands/jest.js +81 -81
  99. package/lib/commands/lint.d.ts +1 -1
  100. package/lib/commands/lint.js +123 -123
  101. package/lib/commands/preview.d.ts +1 -1
  102. package/lib/commands/preview.js +74 -74
  103. package/lib/commands/release.d.ts +3 -3
  104. package/lib/commands/release.js +270 -267
  105. package/lib/compiler/compileModule.d.ts +5 -5
  106. package/lib/compiler/compileModule.js +186 -186
  107. package/lib/compiler/compileSFC.d.ts +2 -2
  108. package/lib/compiler/compileSFC.js +132 -132
  109. package/lib/compiler/compileScript.d.ts +17 -17
  110. package/lib/compiler/compileScript.js +202 -202
  111. package/lib/compiler/compileSiteEntry.d.ts +13 -13
  112. package/lib/compiler/compileSiteEntry.js +237 -237
  113. package/lib/compiler/compileStyle.d.ts +11 -11
  114. package/lib/compiler/compileStyle.js +101 -101
  115. package/lib/compiler/compileTemplateHighlight.d.ts +10 -10
  116. package/lib/compiler/compileTemplateHighlight.js +193 -193
  117. package/lib/compiler/compileTypes.d.ts +2 -2
  118. package/lib/compiler/compileTypes.js +88 -88
  119. package/lib/config/babel.config.d.ts +2 -2
  120. package/lib/config/babel.config.js +31 -31
  121. package/lib/config/babel.sfc.transform.d.ts +1 -1
  122. package/lib/config/babel.sfc.transform.js +18 -18
  123. package/lib/config/jest.config.d.ts +1 -1
  124. package/lib/config/jest.config.js +36 -36
  125. package/lib/config/jest.media.mock.js +2 -2
  126. package/lib/config/jest.style.mock.js +2 -2
  127. package/lib/config/varlet.config.d.ts +1 -1
  128. package/lib/config/varlet.config.js +24 -24
  129. package/lib/config/vite.config.d.ts +5 -5
  130. package/lib/config/vite.config.js +162 -162
  131. package/lib/index.d.ts +2 -2
  132. package/lib/index.js +83 -83
  133. package/lib/shared/constant.d.ts +43 -43
  134. package/lib/shared/constant.js +50 -50
  135. package/lib/shared/fsUtils.d.ts +12 -12
  136. package/lib/shared/fsUtils.js +108 -108
  137. package/lib/shared/logger.d.ts +7 -7
  138. package/lib/shared/logger.js +20 -20
  139. package/package.json +7 -7
  140. package/preset.js +3 -3
  141. package/site/components/button/Button.vue +84 -84
  142. package/site/components/button/button.less +183 -183
  143. package/site/components/button/index.ts +10 -10
  144. package/site/components/button/props.ts +70 -70
  145. package/site/components/cell/Cell.vue +42 -42
  146. package/site/components/cell/cell.less +74 -74
  147. package/site/components/cell/index.ts +10 -10
  148. package/site/components/cell/props.ts +27 -27
  149. package/site/components/code-example/CodeExample.vue +143 -143
  150. package/site/components/code-example/codeExample.less +41 -41
  151. package/site/components/code-example/index.ts +10 -10
  152. package/site/components/context/index.ts +17 -17
  153. package/site/components/context/lock.ts +103 -103
  154. package/site/components/context/zIndex.ts +20 -20
  155. package/site/components/icon/Icon.vue +68 -68
  156. package/site/components/icon/icon.less +26 -26
  157. package/site/components/icon/index.ts +10 -10
  158. package/site/components/icon/props.ts +24 -24
  159. package/site/components/loading/Loading.vue +55 -55
  160. package/site/components/loading/index.ts +10 -10
  161. package/site/components/loading/loading.less +420 -420
  162. package/site/components/loading/props.ts +37 -37
  163. package/site/components/progress/Progress.vue +108 -108
  164. package/site/components/progress/index.ts +10 -10
  165. package/site/components/progress/progress.less +98 -98
  166. package/site/components/progress/props.ts +55 -55
  167. package/site/components/ripple/index.ts +167 -167
  168. package/site/components/ripple/ripple.less +17 -17
  169. package/site/components/snackbar/Snackbar.vue +38 -38
  170. package/site/components/snackbar/core.vue +117 -117
  171. package/site/components/snackbar/index.tsx +270 -270
  172. package/site/components/snackbar/props.ts +94 -94
  173. package/site/components/snackbar/snackbar.less +135 -135
  174. package/site/components/styles/common.less +64 -64
  175. package/site/components/styles/elevation.less +126 -126
  176. package/site/components/styles/var.less +27 -27
  177. package/site/components/utils/components.ts +69 -69
  178. package/site/components/utils/elements.ts +85 -85
  179. package/site/index.html +49 -49
  180. package/site/mobile/App.vue +291 -291
  181. package/site/mobile/components/AppHome.vue +134 -134
  182. package/site/mobile/components/AppType.vue +22 -22
  183. package/site/mobile/components/app-bar/AppBar.vue +69 -69
  184. package/site/mobile/components/app-bar/appBar.less +56 -56
  185. package/site/mobile/components/app-bar/index.ts +10 -10
  186. package/site/mobile/components/app-bar/props.ts +25 -25
  187. package/site/mobile/components/styles/common.less +64 -64
  188. package/site/mobile/components/styles/elevation.less +126 -126
  189. package/site/mobile/components/styles/var.less +27 -27
  190. package/site/mobile/main.ts +74 -74
  191. package/site/mobile.html +41 -41
  192. package/site/module.d.ts +5 -5
  193. package/site/pc/App.vue +43 -43
  194. package/site/pc/Layout.vue +397 -397
  195. package/site/pc/components/AnimationBox.vue +45 -45
  196. package/site/pc/components/AppHeader.vue +355 -355
  197. package/site/pc/components/AppMobile.vue +54 -54
  198. package/site/pc/components/AppSidebar.vue +134 -134
  199. package/site/pc/components/LogoAnimation.vue +119 -119
  200. package/site/pc/floating.ts +9 -9
  201. package/site/pc/main.ts +94 -94
  202. package/site/pc/pages/index/index.less +231 -194
  203. package/site/pc/pages/index/index.vue +145 -128
  204. package/site/pc/pages/index/locale/en-US.ts +5 -3
  205. package/site/pc/pages/index/locale/zh-CN.ts +5 -3
  206. package/site/tsconfig.json +11 -11
  207. package/site/useProgress.ts +75 -75
  208. package/site/utils.ts +153 -153
  209. package/tsconfig.json +14 -14
  210. package/varlet.default.config.js +145 -151
@@ -1,167 +1,167 @@
1
- import context from '../context'
2
- import './ripple.less'
3
- import '../styles/common.less'
4
- import type { Directive, Plugin, App } from 'vue'
5
- import type { DirectiveBinding } from '@vue/runtime-core'
6
-
7
- interface RippleStyles {
8
- x: number
9
- y: number
10
- centerX: number
11
- centerY: number
12
- size: number
13
- }
14
-
15
- interface RippleOptions {
16
- removeRipple: any
17
- touchmoveForbid: boolean
18
- color?: string
19
- disabled?: boolean
20
- tasker?: number | null
21
- }
22
-
23
- interface RippleHTMLElement extends HTMLElement {
24
- _ripple?: RippleOptions
25
- }
26
-
27
- const ANIMATION_DURATION = 250
28
-
29
- function setStyles(element: RippleHTMLElement) {
30
- const { zIndex, position } = window.getComputedStyle(element)
31
-
32
- element.style.overflow = 'hidden'
33
- element.style.overflowX = 'hidden'
34
- element.style.overflowY = 'hidden'
35
- position === 'static' && (element.style.position = 'relative')
36
- zIndex === 'auto' && (element.style.zIndex = '1')
37
- }
38
-
39
- function computeRippleStyles(element: RippleHTMLElement, event: TouchEvent): RippleStyles {
40
- const { top, left }: DOMRect = element.getBoundingClientRect()
41
- const { clientWidth, clientHeight } = element
42
-
43
- const radius: number = Math.sqrt(clientWidth ** 2 + clientHeight ** 2) / 2
44
- const size: number = radius * 2
45
-
46
- const localX: number = event.touches[0].clientX - left
47
- const localY: number = event.touches[0].clientY - top
48
-
49
- const centerX: number = (clientWidth - radius * 2) / 2
50
- const centerY: number = (clientHeight - radius * 2) / 2
51
-
52
- const x: number = localX - radius
53
- const y: number = localY - radius
54
-
55
- return { x, y, centerX, centerY, size }
56
- }
57
-
58
- function createRipple(this: RippleHTMLElement, event: TouchEvent) {
59
- const _ripple = this._ripple as RippleOptions
60
- _ripple.removeRipple()
61
-
62
- if (_ripple.disabled || _ripple.tasker) {
63
- return
64
- }
65
-
66
- const task = () => {
67
- _ripple.tasker = null
68
-
69
- const { x, y, centerX, centerY, size }: RippleStyles = computeRippleStyles(this, event)
70
- const ripple: RippleHTMLElement = document.createElement('div')
71
- ripple.classList.add('var-site-ripple')
72
- ripple.style.opacity = `0`
73
- ripple.style.transform = `translate(${x}px, ${y}px) scale3d(.3, .3, .3)`
74
- ripple.style.width = `${size}px`
75
- ripple.style.height = `${size}px`
76
- ripple.style.backgroundColor = _ripple.color ?? 'currentColor'
77
- ripple.dataset.createdAt = String(performance.now())
78
-
79
- setStyles(this)
80
-
81
- this.appendChild(ripple)
82
-
83
- window.setTimeout(() => {
84
- ripple.style.transform = `translate(${centerX}px, ${centerY}px) scale3d(1, 1, 1)`
85
- ripple.style.opacity = `.25`
86
- }, 20)
87
- }
88
-
89
- _ripple.tasker = window.setTimeout(task, 60)
90
- }
91
-
92
- function removeRipple(this: RippleHTMLElement) {
93
- const _ripple = this._ripple as RippleOptions
94
-
95
- const task = () => {
96
- const ripples: NodeListOf<RippleHTMLElement> = this.querySelectorAll('.var-site-ripple')
97
- if (!ripples.length) {
98
- return
99
- }
100
-
101
- const lastRipple: RippleHTMLElement = ripples[ripples.length - 1]
102
- const delay: number = ANIMATION_DURATION - performance.now() + Number(lastRipple.dataset.createdAt)
103
-
104
- setTimeout(() => {
105
- lastRipple.style.opacity = `0`
106
-
107
- setTimeout(() => lastRipple.parentNode?.removeChild(lastRipple), ANIMATION_DURATION)
108
- }, delay)
109
- }
110
-
111
- _ripple.tasker ? setTimeout(task, 60) : task()
112
- }
113
-
114
- function forbidRippleTask(this: RippleHTMLElement) {
115
- const _ripple = this._ripple as RippleOptions
116
- if (!_ripple.touchmoveForbid) {
117
- return
118
- }
119
-
120
- _ripple.tasker && window.clearTimeout(_ripple.tasker)
121
- _ripple.tasker = null
122
- }
123
-
124
- function mounted(el: RippleHTMLElement, binding: DirectiveBinding<RippleOptions>) {
125
- el._ripple = {
126
- tasker: null,
127
- ...(binding.value ?? {}),
128
- touchmoveForbid: binding.value?.touchmoveForbid ?? context.touchmoveForbid,
129
- removeRipple: removeRipple.bind(el),
130
- }
131
-
132
- el.addEventListener('touchstart', createRipple, { passive: true })
133
- el.addEventListener('touchmove', forbidRippleTask, { passive: true })
134
- el.addEventListener('dragstart', removeRipple, { passive: true })
135
- document.addEventListener('touchend', el._ripple.removeRipple, { passive: true })
136
- document.addEventListener('touchcancel', el._ripple.removeRipple, { passive: true })
137
- }
138
-
139
- function unmounted(el: RippleHTMLElement) {
140
- el.removeEventListener('touchstart', createRipple)
141
- el.removeEventListener('touchmove', forbidRippleTask)
142
- el.removeEventListener('dragstart', removeRipple)
143
- document.removeEventListener('touchend', el._ripple!.removeRipple)
144
- document.removeEventListener('touchcancel', el._ripple!.removeRipple)
145
- }
146
-
147
- function updated(el: RippleHTMLElement, binding: DirectiveBinding<RippleOptions>) {
148
- el._ripple = {
149
- ...el._ripple,
150
- ...(binding.value ?? {}),
151
- touchmoveForbid: binding.value?.touchmoveForbid ?? context.touchmoveForbid,
152
- tasker: null,
153
- }
154
- }
155
-
156
- const Ripple: Directive & Plugin = {
157
- mounted,
158
- unmounted,
159
- updated,
160
- install(app: App) {
161
- app.directive('ripple', this)
162
- },
163
- }
164
-
165
- export const _RippleComponent = Ripple
166
-
167
- export default Ripple
1
+ import context from '../context'
2
+ import './ripple.less'
3
+ import '../styles/common.less'
4
+ import type { Directive, Plugin, App } from 'vue'
5
+ import type { DirectiveBinding } from '@vue/runtime-core'
6
+
7
+ interface RippleStyles {
8
+ x: number
9
+ y: number
10
+ centerX: number
11
+ centerY: number
12
+ size: number
13
+ }
14
+
15
+ interface RippleOptions {
16
+ removeRipple: any
17
+ touchmoveForbid: boolean
18
+ color?: string
19
+ disabled?: boolean
20
+ tasker?: number | null
21
+ }
22
+
23
+ interface RippleHTMLElement extends HTMLElement {
24
+ _ripple?: RippleOptions
25
+ }
26
+
27
+ const ANIMATION_DURATION = 250
28
+
29
+ function setStyles(element: RippleHTMLElement) {
30
+ const { zIndex, position } = window.getComputedStyle(element)
31
+
32
+ element.style.overflow = 'hidden'
33
+ element.style.overflowX = 'hidden'
34
+ element.style.overflowY = 'hidden'
35
+ position === 'static' && (element.style.position = 'relative')
36
+ zIndex === 'auto' && (element.style.zIndex = '1')
37
+ }
38
+
39
+ function computeRippleStyles(element: RippleHTMLElement, event: TouchEvent): RippleStyles {
40
+ const { top, left }: DOMRect = element.getBoundingClientRect()
41
+ const { clientWidth, clientHeight } = element
42
+
43
+ const radius: number = Math.sqrt(clientWidth ** 2 + clientHeight ** 2) / 2
44
+ const size: number = radius * 2
45
+
46
+ const localX: number = event.touches[0].clientX - left
47
+ const localY: number = event.touches[0].clientY - top
48
+
49
+ const centerX: number = (clientWidth - radius * 2) / 2
50
+ const centerY: number = (clientHeight - radius * 2) / 2
51
+
52
+ const x: number = localX - radius
53
+ const y: number = localY - radius
54
+
55
+ return { x, y, centerX, centerY, size }
56
+ }
57
+
58
+ function createRipple(this: RippleHTMLElement, event: TouchEvent) {
59
+ const _ripple = this._ripple as RippleOptions
60
+ _ripple.removeRipple()
61
+
62
+ if (_ripple.disabled || _ripple.tasker) {
63
+ return
64
+ }
65
+
66
+ const task = () => {
67
+ _ripple.tasker = null
68
+
69
+ const { x, y, centerX, centerY, size }: RippleStyles = computeRippleStyles(this, event)
70
+ const ripple: RippleHTMLElement = document.createElement('div')
71
+ ripple.classList.add('var-site-ripple')
72
+ ripple.style.opacity = `0`
73
+ ripple.style.transform = `translate(${x}px, ${y}px) scale3d(.3, .3, .3)`
74
+ ripple.style.width = `${size}px`
75
+ ripple.style.height = `${size}px`
76
+ ripple.style.backgroundColor = _ripple.color ?? 'currentColor'
77
+ ripple.dataset.createdAt = String(performance.now())
78
+
79
+ setStyles(this)
80
+
81
+ this.appendChild(ripple)
82
+
83
+ window.setTimeout(() => {
84
+ ripple.style.transform = `translate(${centerX}px, ${centerY}px) scale3d(1, 1, 1)`
85
+ ripple.style.opacity = `.25`
86
+ }, 20)
87
+ }
88
+
89
+ _ripple.tasker = window.setTimeout(task, 60)
90
+ }
91
+
92
+ function removeRipple(this: RippleHTMLElement) {
93
+ const _ripple = this._ripple as RippleOptions
94
+
95
+ const task = () => {
96
+ const ripples: NodeListOf<RippleHTMLElement> = this.querySelectorAll('.var-site-ripple')
97
+ if (!ripples.length) {
98
+ return
99
+ }
100
+
101
+ const lastRipple: RippleHTMLElement = ripples[ripples.length - 1]
102
+ const delay: number = ANIMATION_DURATION - performance.now() + Number(lastRipple.dataset.createdAt)
103
+
104
+ setTimeout(() => {
105
+ lastRipple.style.opacity = `0`
106
+
107
+ setTimeout(() => lastRipple.parentNode?.removeChild(lastRipple), ANIMATION_DURATION)
108
+ }, delay)
109
+ }
110
+
111
+ _ripple.tasker ? setTimeout(task, 60) : task()
112
+ }
113
+
114
+ function forbidRippleTask(this: RippleHTMLElement) {
115
+ const _ripple = this._ripple as RippleOptions
116
+ if (!_ripple.touchmoveForbid) {
117
+ return
118
+ }
119
+
120
+ _ripple.tasker && window.clearTimeout(_ripple.tasker)
121
+ _ripple.tasker = null
122
+ }
123
+
124
+ function mounted(el: RippleHTMLElement, binding: DirectiveBinding<RippleOptions>) {
125
+ el._ripple = {
126
+ tasker: null,
127
+ ...(binding.value ?? {}),
128
+ touchmoveForbid: binding.value?.touchmoveForbid ?? context.touchmoveForbid,
129
+ removeRipple: removeRipple.bind(el),
130
+ }
131
+
132
+ el.addEventListener('touchstart', createRipple, { passive: true })
133
+ el.addEventListener('touchmove', forbidRippleTask, { passive: true })
134
+ el.addEventListener('dragstart', removeRipple, { passive: true })
135
+ document.addEventListener('touchend', el._ripple.removeRipple, { passive: true })
136
+ document.addEventListener('touchcancel', el._ripple.removeRipple, { passive: true })
137
+ }
138
+
139
+ function unmounted(el: RippleHTMLElement) {
140
+ el.removeEventListener('touchstart', createRipple)
141
+ el.removeEventListener('touchmove', forbidRippleTask)
142
+ el.removeEventListener('dragstart', removeRipple)
143
+ document.removeEventListener('touchend', el._ripple!.removeRipple)
144
+ document.removeEventListener('touchcancel', el._ripple!.removeRipple)
145
+ }
146
+
147
+ function updated(el: RippleHTMLElement, binding: DirectiveBinding<RippleOptions>) {
148
+ el._ripple = {
149
+ ...el._ripple,
150
+ ...(binding.value ?? {}),
151
+ touchmoveForbid: binding.value?.touchmoveForbid ?? context.touchmoveForbid,
152
+ tasker: null,
153
+ }
154
+ }
155
+
156
+ const Ripple: Directive & Plugin = {
157
+ mounted,
158
+ unmounted,
159
+ updated,
160
+ install(app: App) {
161
+ app.directive('ripple', this)
162
+ },
163
+ }
164
+
165
+ export const _RippleComponent = Ripple
166
+
167
+ export default Ripple
@@ -1,17 +1,17 @@
1
- @site-ripple-cubic-bezier: cubic-bezier(0.68, 0.01, 0.62, 0.6);
2
-
3
- :root {
4
- --site-ripple-cubic-bezier: @site-ripple-cubic-bezier;
5
- }
6
-
7
- .var-site-ripple {
8
- position: absolute;
9
- transition: transform 0.2s var(--site-ripple-cubic-bezier), opacity 0.14s linear;
10
- top: 0;
11
- left: 0;
12
- border-radius: 50%;
13
- opacity: 0;
14
- will-change: transform, opacity;
15
- pointer-events: none;
16
- z-index: 100;
17
- }
1
+ @site-ripple-cubic-bezier: cubic-bezier(0.68, 0.01, 0.62, 0.6);
2
+
3
+ :root {
4
+ --site-ripple-cubic-bezier: @site-ripple-cubic-bezier;
5
+ }
6
+
7
+ .var-site-ripple {
8
+ position: absolute;
9
+ transition: transform 0.2s var(--site-ripple-cubic-bezier), opacity 0.14s linear;
10
+ top: 0;
11
+ left: 0;
12
+ border-radius: 50%;
13
+ opacity: 0;
14
+ will-change: transform, opacity;
15
+ pointer-events: none;
16
+ z-index: 100;
17
+ }
@@ -1,38 +1,38 @@
1
- <template>
2
- <teleport :to="teleport" :disabled="disabled">
3
- <transition name="var-site-snackbar-fade" @after-enter="onOpened" @after-leave="onClosed">
4
- <var-site-snackbar-core v-bind="$props" class="var-site-snackbar-transition">
5
- <slot>{{ content }}</slot>
6
- <template #action>
7
- <slot name="action" />
8
- </template>
9
- </var-site-snackbar-core>
10
- </transition>
11
- </teleport>
12
- </template>
13
-
14
- <script>
15
- import VarSiteSnackbarCore from './core'
16
- import { defineComponent } from 'vue'
17
- import { useTeleport } from '../utils/components'
18
- import { props } from './props'
19
-
20
- export default defineComponent({
21
- name: 'VarSiteSnackbar',
22
- components: {
23
- VarSiteSnackbarCore,
24
- },
25
- props,
26
- setup() {
27
- const { disabled } = useTeleport()
28
-
29
- return {
30
- disabled,
31
- }
32
- },
33
- })
34
- </script>
35
-
36
- <style lang="less">
37
- @import '../styles/common';
38
- </style>
1
+ <template>
2
+ <teleport :to="teleport" :disabled="disabled">
3
+ <transition name="var-site-snackbar-fade" @after-enter="onOpened" @after-leave="onClosed">
4
+ <var-site-snackbar-core v-bind="$props" class="var-site-snackbar-transition">
5
+ <slot>{{ content }}</slot>
6
+ <template #action>
7
+ <slot name="action" />
8
+ </template>
9
+ </var-site-snackbar-core>
10
+ </transition>
11
+ </teleport>
12
+ </template>
13
+
14
+ <script>
15
+ import VarSiteSnackbarCore from './core'
16
+ import { defineComponent } from 'vue'
17
+ import { useTeleport } from '../utils/components'
18
+ import { props } from './props'
19
+
20
+ export default defineComponent({
21
+ name: 'VarSiteSnackbar',
22
+ components: {
23
+ VarSiteSnackbarCore,
24
+ },
25
+ props,
26
+ setup() {
27
+ const { disabled } = useTeleport()
28
+
29
+ return {
30
+ disabled,
31
+ }
32
+ },
33
+ })
34
+ </script>
35
+
36
+ <style lang="less">
37
+ @import '../styles/common';
38
+ </style>