@varlet/cli 1.27.17-alpha.1656907860130 → 1.27.17

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 (208) 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/types/basicComponent.d.ts +7 -7
  15. package/generators/config/default/base/types/button.d.ts +12 -12
  16. package/generators/config/default/base/types/index.d.ts +6 -6
  17. package/generators/config/default/base/varlet.config.js +110 -110
  18. package/generators/config/default/sfc/src/button/Button.vue +30 -30
  19. package/generators/config/default/sfc/src/button/__tests__/index.spec.js +7 -7
  20. package/generators/config/default/sfc/src/button/button.less +14 -14
  21. package/generators/config/default/sfc/src/button/docs/zh-CN.md +47 -47
  22. package/generators/config/default/sfc/src/button/example/BasicUse.vue +7 -7
  23. package/generators/config/default/sfc/src/button/example/ModifyColor.vue +7 -7
  24. package/generators/config/default/sfc/src/button/example/index.vue +13 -13
  25. package/generators/config/default/sfc/src/button/index.ts +10 -10
  26. package/generators/config/default/tsx/src/button/Button.tsx +31 -31
  27. package/generators/config/default/tsx/src/button/__tests__/index.spec.js +7 -7
  28. package/generators/config/default/tsx/src/button/button.less +14 -14
  29. package/generators/config/default/tsx/src/button/docs/zh-CN.md +47 -47
  30. package/generators/config/default/tsx/src/button/example/BasicUse.vue +7 -7
  31. package/generators/config/default/tsx/src/button/example/ModifyColor.vue +7 -7
  32. package/generators/config/default/tsx/src/button/example/index.vue +13 -13
  33. package/generators/config/default/tsx/src/button/index.ts +10 -10
  34. package/generators/config/i18n/base/docs/home.en-US.md +11 -11
  35. package/generators/config/i18n/base/docs/home.zh-CN.md +10 -10
  36. package/generators/config/i18n/base/types/basicComponent.d.ts +7 -7
  37. package/generators/config/i18n/base/types/button.d.ts +12 -12
  38. package/generators/config/i18n/base/types/index.d.ts +7 -7
  39. package/generators/config/i18n/base/types/locale.d.ts +24 -24
  40. package/generators/config/i18n/base/varlet.config.js +122 -122
  41. package/generators/config/i18n/sfc/src/button/Button.vue +36 -36
  42. package/generators/config/i18n/sfc/src/button/__tests__/index.spec.js +7 -7
  43. package/generators/config/i18n/sfc/src/button/button.less +14 -14
  44. package/generators/config/i18n/sfc/src/button/docs/en-US.md +34 -34
  45. package/generators/config/i18n/sfc/src/button/docs/zh-CN.md +34 -34
  46. package/generators/config/i18n/sfc/src/button/example/BasicUse.vue +11 -11
  47. package/generators/config/i18n/sfc/src/button/example/ModifyColor.vue +11 -11
  48. package/generators/config/i18n/sfc/src/button/example/index.vue +13 -13
  49. package/generators/config/i18n/sfc/src/button/example/locale/en-US.ts +5 -5
  50. package/generators/config/i18n/sfc/src/button/example/locale/index.ts +23 -23
  51. package/generators/config/i18n/sfc/src/button/example/locale/zh-CN.ts +5 -5
  52. package/generators/config/i18n/sfc/src/button/index.ts +10 -10
  53. package/generators/config/i18n/sfc/src/locale/__tests__/index.spec.js +51 -51
  54. package/generators/config/i18n/sfc/src/locale/docs/en-US.md +26 -26
  55. package/generators/config/i18n/sfc/src/locale/docs/zh-CN.md +25 -25
  56. package/generators/config/i18n/sfc/src/locale/en-US.d.ts +5 -5
  57. package/generators/config/i18n/sfc/src/locale/en-US.ts +7 -7
  58. package/generators/config/i18n/sfc/src/locale/index.ts +67 -67
  59. package/generators/config/i18n/sfc/src/locale/zh-CN.d.ts +5 -5
  60. package/generators/config/i18n/sfc/src/locale/zh-CN.ts +7 -7
  61. package/generators/config/i18n/tsx/src/button/Button.tsx +35 -35
  62. package/generators/config/i18n/tsx/src/button/__tests__/index.spec.js +7 -7
  63. package/generators/config/i18n/tsx/src/button/button.less +14 -14
  64. package/generators/config/i18n/tsx/src/button/docs/en-US.md +34 -34
  65. package/generators/config/i18n/tsx/src/button/docs/zh-CN.md +34 -34
  66. package/generators/config/i18n/tsx/src/button/example/BasicUse.vue +11 -11
  67. package/generators/config/i18n/tsx/src/button/example/ModifyColor.vue +11 -11
  68. package/generators/config/i18n/tsx/src/button/example/index.vue +13 -13
  69. package/generators/config/i18n/tsx/src/button/example/locale/en-US.ts +5 -5
  70. package/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -23
  71. package/generators/config/i18n/tsx/src/button/example/locale/zh-CN.ts +5 -5
  72. package/generators/config/i18n/tsx/src/button/index.ts +10 -10
  73. package/generators/config/i18n/tsx/src/locale/__tests__/index.spec.js +51 -51
  74. package/generators/config/i18n/tsx/src/locale/docs/en-US.md +26 -26
  75. package/generators/config/i18n/tsx/src/locale/docs/zh-CN.md +25 -25
  76. package/generators/config/i18n/tsx/src/locale/en-US.d.ts +5 -5
  77. package/generators/config/i18n/tsx/src/locale/en-US.ts +7 -7
  78. package/generators/config/i18n/tsx/src/locale/index.ts +67 -67
  79. package/generators/config/i18n/tsx/src/locale/zh-CN.d.ts +5 -5
  80. package/generators/config/i18n/tsx/src/locale/zh-CN.ts +7 -7
  81. package/lib/commands/build.d.ts +1 -1
  82. package/lib/commands/build.js +67 -67
  83. package/lib/commands/changelog.d.ts +6 -6
  84. package/lib/commands/changelog.js +27 -27
  85. package/lib/commands/commitLint.d.ts +1 -1
  86. package/lib/commands/commitLint.js +21 -21
  87. package/lib/commands/compile.d.ts +5 -5
  88. package/lib/commands/compile.js +119 -119
  89. package/lib/commands/create.d.ts +3 -3
  90. package/lib/commands/create.js +132 -132
  91. package/lib/commands/dev.d.ts +3 -3
  92. package/lib/commands/dev.js +123 -123
  93. package/lib/commands/gen.d.ts +1 -1
  94. package/lib/commands/gen.js +112 -112
  95. package/lib/commands/jest.d.ts +8 -8
  96. package/lib/commands/jest.js +81 -81
  97. package/lib/commands/lint.d.ts +1 -1
  98. package/lib/commands/lint.js +123 -123
  99. package/lib/commands/preview.d.ts +1 -1
  100. package/lib/commands/preview.js +74 -74
  101. package/lib/commands/release.d.ts +3 -3
  102. package/lib/commands/release.js +269 -267
  103. package/lib/compiler/compileModule.d.ts +5 -5
  104. package/lib/compiler/compileModule.js +186 -186
  105. package/lib/compiler/compileSFC.d.ts +2 -2
  106. package/lib/compiler/compileSFC.js +132 -132
  107. package/lib/compiler/compileScript.d.ts +17 -17
  108. package/lib/compiler/compileScript.js +202 -202
  109. package/lib/compiler/compileSiteEntry.d.ts +13 -13
  110. package/lib/compiler/compileSiteEntry.js +237 -237
  111. package/lib/compiler/compileStyle.d.ts +11 -11
  112. package/lib/compiler/compileStyle.js +101 -101
  113. package/lib/compiler/compileTemplateHighlight.d.ts +10 -10
  114. package/lib/compiler/compileTemplateHighlight.js +193 -193
  115. package/lib/compiler/compileTypes.d.ts +2 -2
  116. package/lib/compiler/compileTypes.js +88 -88
  117. package/lib/config/babel.config.d.ts +2 -2
  118. package/lib/config/babel.config.js +31 -31
  119. package/lib/config/babel.sfc.transform.d.ts +1 -1
  120. package/lib/config/babel.sfc.transform.js +18 -18
  121. package/lib/config/jest.config.d.ts +1 -1
  122. package/lib/config/jest.config.js +36 -36
  123. package/lib/config/jest.media.mock.js +2 -2
  124. package/lib/config/jest.style.mock.js +2 -2
  125. package/lib/config/varlet.config.d.ts +1 -1
  126. package/lib/config/varlet.config.js +24 -24
  127. package/lib/config/vite.config.d.ts +5 -5
  128. package/lib/config/vite.config.js +162 -162
  129. package/lib/index.d.ts +2 -2
  130. package/lib/index.js +83 -83
  131. package/lib/shared/constant.d.ts +43 -43
  132. package/lib/shared/constant.js +50 -50
  133. package/lib/shared/fsUtils.d.ts +12 -12
  134. package/lib/shared/fsUtils.js +108 -108
  135. package/lib/shared/logger.d.ts +7 -7
  136. package/lib/shared/logger.js +20 -20
  137. package/package.json +8 -7
  138. package/preset.js +3 -3
  139. package/site/components/button/Button.vue +84 -84
  140. package/site/components/button/button.less +183 -183
  141. package/site/components/button/index.ts +10 -10
  142. package/site/components/button/props.ts +70 -70
  143. package/site/components/cell/Cell.vue +42 -42
  144. package/site/components/cell/cell.less +74 -74
  145. package/site/components/cell/index.ts +10 -10
  146. package/site/components/cell/props.ts +27 -27
  147. package/site/components/code-example/CodeExample.vue +143 -143
  148. package/site/components/code-example/codeExample.less +41 -41
  149. package/site/components/code-example/index.ts +10 -10
  150. package/site/components/context/index.ts +17 -17
  151. package/site/components/context/lock.ts +103 -103
  152. package/site/components/context/zIndex.ts +20 -20
  153. package/site/components/icon/Icon.vue +68 -68
  154. package/site/components/icon/icon.less +26 -26
  155. package/site/components/icon/index.ts +10 -10
  156. package/site/components/icon/props.ts +24 -24
  157. package/site/components/loading/Loading.vue +55 -55
  158. package/site/components/loading/index.ts +10 -10
  159. package/site/components/loading/loading.less +420 -420
  160. package/site/components/loading/props.ts +37 -37
  161. package/site/components/progress/Progress.vue +108 -108
  162. package/site/components/progress/index.ts +10 -10
  163. package/site/components/progress/progress.less +98 -98
  164. package/site/components/progress/props.ts +55 -55
  165. package/site/components/ripple/index.ts +167 -167
  166. package/site/components/ripple/ripple.less +17 -17
  167. package/site/components/snackbar/Snackbar.vue +38 -38
  168. package/site/components/snackbar/core.vue +117 -117
  169. package/site/components/snackbar/index.tsx +270 -270
  170. package/site/components/snackbar/props.ts +94 -94
  171. package/site/components/snackbar/snackbar.less +135 -135
  172. package/site/components/styles/common.less +64 -64
  173. package/site/components/styles/elevation.less +126 -126
  174. package/site/components/styles/var.less +27 -27
  175. package/site/components/utils/components.ts +69 -69
  176. package/site/components/utils/elements.ts +85 -85
  177. package/site/index.html +49 -49
  178. package/site/mobile/App.vue +291 -291
  179. package/site/mobile/components/AppHome.vue +134 -134
  180. package/site/mobile/components/AppType.vue +22 -22
  181. package/site/mobile/components/app-bar/AppBar.vue +69 -69
  182. package/site/mobile/components/app-bar/appBar.less +56 -56
  183. package/site/mobile/components/app-bar/index.ts +10 -10
  184. package/site/mobile/components/app-bar/props.ts +25 -25
  185. package/site/mobile/components/styles/common.less +64 -64
  186. package/site/mobile/components/styles/elevation.less +126 -126
  187. package/site/mobile/components/styles/var.less +27 -27
  188. package/site/mobile/main.ts +74 -74
  189. package/site/mobile.html +41 -41
  190. package/site/module.d.ts +5 -5
  191. package/site/pc/App.vue +43 -43
  192. package/site/pc/Layout.vue +397 -397
  193. package/site/pc/components/AnimationBox.vue +45 -45
  194. package/site/pc/components/AppHeader.vue +355 -355
  195. package/site/pc/components/AppMobile.vue +54 -54
  196. package/site/pc/components/AppSidebar.vue +134 -134
  197. package/site/pc/components/LogoAnimation.vue +119 -119
  198. package/site/pc/floating.ts +9 -9
  199. package/site/pc/main.ts +94 -94
  200. package/site/pc/pages/index/index.less +194 -194
  201. package/site/pc/pages/index/index.vue +145 -128
  202. package/site/pc/pages/index/locale/en-US.ts +5 -3
  203. package/site/pc/pages/index/locale/zh-CN.ts +5 -3
  204. package/site/tsconfig.json +11 -11
  205. package/site/useProgress.ts +75 -75
  206. package/site/utils.ts +153 -153
  207. package/tsconfig.json +14 -14
  208. 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>