@varlet/ui 1.27.4 → 1.27.7-alpha.1650880107793
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.
- package/README.en-US.md +3 -3
- package/README.md +3 -3
- package/es/context/lock.js +14 -21
- package/es/counter/counter.css +1 -1
- package/es/counter/counter.less +4 -0
- package/es/pagination/Pagination.js +1 -4
- package/es/pagination/pagination.css +1 -1
- package/es/pagination/pagination.less +19 -10
- package/es/picker/Picker.js +13 -5
- package/es/picker/props.js +4 -0
- package/es/popup/Popup.js +1 -1
- package/es/pull-refresh/PullRefresh.js +55 -22
- package/es/snackbar/core.js +1 -1
- package/es/style.css +1 -1
- package/es/utils/jest.js +5 -2
- package/es/varlet.esm.js +186 -125
- package/highlight/attributes.json +8 -4
- package/highlight/tags.json +1 -0
- package/highlight/web-types.json +15 -6
- package/lib/context/lock.js +14 -21
- package/lib/counter/counter.css +1 -1
- package/lib/counter/counter.less +4 -0
- package/lib/pagination/Pagination.js +1 -4
- package/lib/pagination/pagination.css +1 -1
- package/lib/pagination/pagination.less +19 -10
- package/lib/picker/Picker.js +13 -5
- package/lib/picker/props.js +4 -0
- package/lib/popup/Popup.js +1 -1
- package/lib/pull-refresh/PullRefresh.js +55 -22
- package/lib/snackbar/core.js +1 -1
- package/lib/style.css +1 -1
- package/lib/utils/jest.js +5 -2
- package/package.json +6 -6
- package/types/picker.d.ts +2 -0
- package/umd/varlet.js +4 -4
package/README.en-US.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://varlet.
|
|
3
|
-
<img src="https://varlet.
|
|
2
|
+
<a href="https://varlet-varletjs.vercel.app/#/en-US/home">
|
|
3
|
+
<img src="https://varlet-varletjs.vercel.app/logo.svg" width="150">
|
|
4
4
|
</a>
|
|
5
5
|
<h1>VARLET</h1>
|
|
6
6
|
<p>Material design mobile component library for Vue3</p>
|
|
7
7
|
<p>
|
|
8
|
-
<a href="https://varlet.
|
|
8
|
+
<a href="https://varlet-varletjs.vercel.app/#/en-US/home">Documentation</a>
|
|
9
9
|
</p>
|
|
10
10
|
<p>
|
|
11
11
|
<img src="https://img.shields.io/npm/v/@varlet/ui?style=flat-square" alt="version">
|
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://varlet.
|
|
3
|
-
<img src="https://varlet.
|
|
2
|
+
<a href="https://varlet-varletjs.vercel.app">
|
|
3
|
+
<img src="https://varlet-varletjs.vercel.app/logo.svg" width="150" >
|
|
4
4
|
</a>
|
|
5
5
|
<h1>VARLET</h1>
|
|
6
6
|
<p>基于 Vue3 的 Material design 风格移动端组件库</p>
|
|
7
7
|
<p>
|
|
8
|
-
<a href="https://varlet.
|
|
8
|
+
<a href="https://varlet-varletjs.vercel.app">开发文档</a> | <a href="https://github.com/varletjs/varlet/blob/dev/README.en-US.md">English</a>
|
|
9
9
|
</p>
|
|
10
10
|
<p>
|
|
11
11
|
<img src="https://img.shields.io/npm/v/@varlet/ui?style=flat-square" alt="version">
|
package/es/context/lock.js
CHANGED
|
@@ -12,32 +12,25 @@ export function releaseLock(uid) {
|
|
|
12
12
|
delete context.locks[uid];
|
|
13
13
|
resolveLock();
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
* 组件锁操作
|
|
17
|
-
* @param props 组件props
|
|
18
|
-
* @param state 组件props中控制组件加锁的开关对应的key值
|
|
19
|
-
* @param use 组件props中控制组件加锁的开关是否可用对应的key值
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
export function useLock(props, state, use) {
|
|
15
|
+
export function useLock(source, useSource) {
|
|
23
16
|
var {
|
|
24
17
|
uid
|
|
25
18
|
} = getCurrentInstance();
|
|
26
19
|
|
|
27
|
-
if (
|
|
28
|
-
watch(
|
|
20
|
+
if (useSource) {
|
|
21
|
+
watch(useSource, newValue => {
|
|
29
22
|
if (newValue === false) {
|
|
30
23
|
// 改变为禁用状态 组件解锁
|
|
31
24
|
releaseLock(uid);
|
|
32
|
-
} else if (newValue === true &&
|
|
25
|
+
} else if (newValue === true && source() === true) {
|
|
33
26
|
// 改变为启用状态 并且popup处于开启状态 组件加锁
|
|
34
27
|
addLock(uid);
|
|
35
28
|
}
|
|
36
29
|
});
|
|
37
30
|
}
|
|
38
31
|
|
|
39
|
-
watch(
|
|
40
|
-
if (
|
|
32
|
+
watch(source, newValue => {
|
|
33
|
+
if (useSource && useSource() === false) {
|
|
41
34
|
return;
|
|
42
35
|
}
|
|
43
36
|
|
|
@@ -50,41 +43,41 @@ export function useLock(props, state, use) {
|
|
|
50
43
|
}
|
|
51
44
|
});
|
|
52
45
|
onBeforeMount(() => {
|
|
53
|
-
if (
|
|
46
|
+
if (useSource && useSource() === false) {
|
|
54
47
|
return;
|
|
55
48
|
}
|
|
56
49
|
|
|
57
|
-
if (
|
|
50
|
+
if (source() === true) {
|
|
58
51
|
// popup处于开启状态 组件挂载 组件加锁
|
|
59
52
|
addLock(uid);
|
|
60
53
|
}
|
|
61
54
|
});
|
|
62
55
|
onUnmounted(() => {
|
|
63
|
-
if (
|
|
56
|
+
if (useSource && useSource() === false) {
|
|
64
57
|
return;
|
|
65
58
|
}
|
|
66
59
|
|
|
67
|
-
if (
|
|
60
|
+
if (source() === true) {
|
|
68
61
|
// popup处于开启状态 组件卸载 组件解锁
|
|
69
62
|
releaseLock(uid);
|
|
70
63
|
}
|
|
71
64
|
});
|
|
72
65
|
onActivated(() => {
|
|
73
|
-
if (
|
|
66
|
+
if (useSource && useSource() === false) {
|
|
74
67
|
return;
|
|
75
68
|
}
|
|
76
69
|
|
|
77
|
-
if (
|
|
70
|
+
if (source() === true) {
|
|
78
71
|
// popup处于开启状态 组件处于keepalive前台 组件加锁
|
|
79
72
|
addLock(uid);
|
|
80
73
|
}
|
|
81
74
|
});
|
|
82
75
|
onDeactivated(() => {
|
|
83
|
-
if (
|
|
76
|
+
if (useSource && useSource() === false) {
|
|
84
77
|
return;
|
|
85
78
|
}
|
|
86
79
|
|
|
87
|
-
if (
|
|
80
|
+
if (source() === true) {
|
|
88
81
|
// popup处于开启状态 组件处于keepalive后台 组件解锁
|
|
89
82
|
releaseLock(uid);
|
|
90
83
|
}
|
package/es/counter/counter.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root { --counter-padding: 0 4px; --counter-font-color: #fff; --counter-background: var(--color-primary); --counter-input-width: 28px; --counter-input-margin: 0 4px; --counter-input-font-size: 14px; --counter-button-size: 28px; --counter-button-icon-size: 100%; --counter-disabled-color: var(--color-text-disabled); --input-error-color: var(--color-danger);}.var-counter { display: inline-flex; flex-direction: column; align-items: flex-start;}.var-counter__controller { display: flex; align-items: center; color: var(--counter-font-color); border-radius: var(--counter-button-size); padding: var(--counter-padding); background: var(--counter-background); transition: background-color 0.25s;}.var-counter__decrement-button[var-counter-cover] { width: var(--counter-button-size); height: var(--counter-button-size); font-size: var(--counter-button-icon-size); border-radius: 50%; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-counter__input { width: var(--counter-input-width); font-size: var(--counter-input-font-size); outline: none; border: none; background: transparent; padding: 0; text-align: center; color: var(--counter-font-color); margin: var(--counter-input-margin);}.var-counter__input[disabled] { background: transparent;}.var-counter__increment-button[var-counter-cover] { width: var(--counter-button-size); height: var(--counter-button-size); font-size: var(--counter-button-icon-size); border-radius: 50%; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-counter--disabled { background: var(--counter-disabled-color);}.var-counter--hidden { opacity: 0;}.var-counter--error { background: var(--color-danger);}
|
|
1
|
+
:root { --counter-padding: 0 4px; --counter-font-color: #fff; --counter-background: var(--color-primary); --counter-input-width: 28px; --counter-input-margin: 0 4px; --counter-input-font-size: 14px; --counter-button-size: 28px; --counter-button-icon-size: 100%; --counter-disabled-color: var(--color-text-disabled); --input-error-color: var(--color-danger);}.var-counter { display: inline-flex; flex-direction: column; align-items: flex-start;}.var-counter__controller { display: flex; align-items: center; color: var(--counter-font-color); border-radius: var(--counter-button-size); padding: var(--counter-padding); background: var(--counter-background); transition: background-color 0.25s;}.var-counter__decrement-button[var-counter-cover] { width: var(--counter-button-size); height: var(--counter-button-size); font-size: var(--counter-button-icon-size); border-radius: 50%; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-user-select: none; user-select: none;}.var-counter__input { width: var(--counter-input-width); font-size: var(--counter-input-font-size); outline: none; border: none; background: transparent; padding: 0; text-align: center; color: var(--counter-font-color); margin: var(--counter-input-margin);}.var-counter__input[disabled] { background: transparent;}.var-counter__increment-button[var-counter-cover] { width: var(--counter-button-size); height: var(--counter-button-size); font-size: var(--counter-button-icon-size); border-radius: 50%; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-user-select: none; user-select: none;}.var-counter--disabled { background: var(--counter-disabled-color);}.var-counter--hidden { opacity: 0;}.var-counter--error { background: var(--color-danger);}
|
package/es/counter/counter.less
CHANGED
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
border-radius: 50%;
|
|
45
45
|
cursor: pointer;
|
|
46
46
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
47
|
+
-webkit-user-select: none; // for safari
|
|
48
|
+
user-select: none;
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
&__input {
|
|
@@ -69,6 +71,8 @@
|
|
|
69
71
|
border-radius: 50%;
|
|
70
72
|
cursor: pointer;
|
|
71
73
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
74
|
+
-webkit-user-select: none; // for safari
|
|
75
|
+
user-select: none;
|
|
72
76
|
}
|
|
73
77
|
|
|
74
78
|
&--disabled {
|
|
@@ -108,10 +108,7 @@ export function render(_ctx, _cache) {
|
|
|
108
108
|
/* KEYED_FRAGMENT */
|
|
109
109
|
))]),
|
|
110
110
|
default: _withCtx(() => [_createElementVNode("div", {
|
|
111
|
-
class: _normalizeClass(_ctx.n('size--open')),
|
|
112
|
-
style: {
|
|
113
|
-
"display": "flex"
|
|
114
|
-
},
|
|
111
|
+
class: _normalizeClass(_ctx.classes(_ctx.n('size--open'), [_ctx.current <= 1 || _ctx.disabled, _ctx.n('size--open--disabled')])),
|
|
115
112
|
onClick: _cache[5] || (_cache[5] = function () {
|
|
116
113
|
return _ctx.showMenu && _ctx.showMenu(...arguments);
|
|
117
114
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root { --pagination-font-size: var(--font-size-md); --pagination-active-color: #fff; --pagination-active-bg-color: var(--color-primary); --pagination-hover-bg-color: #edf5ff; --pagination-total-margin: 0 12px; --pagination-total-line-height: 24px; --pagination-item-width: 32px; --pagination-item-height: 32px; --pagination-item-margin: 0 6px; --pagination-item-background: #fff; --pagination-item-border-radius: 4px; --pagination-list-bg-color: #fff; --pagination-list-active-bg-color: #edf5ff; --pagination-list-active-color: var(--color-primary); --pagination-input-width: 32px; --pagination-simple-padding: 0 0 2px 0; --pagination-disabled-color: var(--color-text-disabled); --pagination-bg-disabled-color: var(--color-disabled); --pagination-size-line-height: 24px;}.pagination-flex-nowrap { display: flex; white-space: nowrap; align-items: center;}.var-pagination { display: flex; align-items: center; list-style: none; margin: 0; font-size: var(--pagination-font-size); padding: 0;}.var-pagination__item { display: inline-flex; min-width: var(--pagination-item-width); align-items: center; justify-content: center; margin: var(--pagination-item-margin); height: var(--pagination-item-height); cursor: pointer; border-radius: var(--pagination-item-border-radius); outline: none; transition: all 0.25s; user-select: none; background: var(--pagination-item-background);}.var-pagination__item:hover { background-color: var(--pagination-hover-bg-color);}.var-pagination__item--active { color: var(--pagination-active-color); background-color: var(--pagination-active-bg-color) !important;}.var-pagination__item--disabled
|
|
1
|
+
:root { --pagination-font-size: var(--font-size-md); --pagination-active-color: #fff; --pagination-active-bg-color: var(--color-primary); --pagination-hover-bg-color: #edf5ff; --pagination-total-margin: 0 12px; --pagination-total-line-height: 24px; --pagination-item-width: 32px; --pagination-item-height: 32px; --pagination-item-margin: 0 6px; --pagination-item-background: #fff; --pagination-item-border-radius: 4px; --pagination-list-bg-color: #fff; --pagination-list-active-bg-color: #edf5ff; --pagination-list-active-color: var(--color-primary); --pagination-input-width: 32px; --pagination-simple-padding: 0 0 2px 0; --pagination-disabled-color: var(--color-text-disabled); --pagination-bg-disabled-color: var(--color-disabled); --pagination-size-line-height: 24px;}.pagination-flex-nowrap { display: flex; white-space: nowrap; align-items: center;}.var-pagination { display: flex; align-items: center; list-style: none; margin: 0; font-size: var(--pagination-font-size); padding: 0;}.var-pagination__item { display: inline-flex; min-width: var(--pagination-item-width); align-items: center; justify-content: center; margin: var(--pagination-item-margin); height: var(--pagination-item-height); cursor: pointer; border-radius: var(--pagination-item-border-radius); outline: none; transition: all 0.25s; user-select: none; background-color: var(--pagination-item-background);}.var-pagination__item:hover { background-color: var(--pagination-hover-bg-color);}.var-pagination__item--active { color: var(--pagination-active-color); background-color: var(--pagination-active-bg-color) !important;}.var-pagination__item--hide { display: none;}.var-pagination__item--disabled { cursor: default; color: var(--pagination-disabled-color); background-color: unset;}.var-pagination__item--disabled:hover { background-color: unset;}.var-pagination__item--disabled--hover:hover { background-color: inherit;}.var-pagination__item--disabled--active { background-color: var(--pagination-bg-disabled-color);}.var-pagination__item--disabled--active:hover { background-color: var(--pagination-bg-disabled-color);}.var-pagination__prev { margin-left: 0;}.var-pagination__total { display: flex; white-space: nowrap; align-items: center; line-height: var(--pagination-total-line-height); margin: var(--pagination-total-margin);}.var-pagination__size { display: flex; white-space: nowrap; align-items: center; line-height: var(--pagination-size-line-height); margin: var(--pagination-item-margin);}.var-pagination__size--open { display: flex; align-items: center; cursor: pointer;}.var-pagination__size--open--disabled { cursor: default;}.var-pagination__list { background-color: var(--pagination-list-bg-color); cursor: pointer; transition: all 0.25s;}.var-pagination__list:hover { color: var(--pagination-list-active-color); background-color: var(--pagination-hover-bg-color);}.var-pagination__list--active { background-color: var(--pagination-list-active-bg-color) !important; color: var(--pagination-list-active-color);}.var-pagination__quickly,.var-pagination__simple { display: flex; white-space: nowrap; align-items: center;}.var-pagination__quickly [var-pagination-cover],.var-pagination__simple [var-pagination-cover] { width: var(--pagination-input-width);}.var-pagination__quickly [var-pagination-cover] .var-input__wrap,.var-pagination__simple [var-pagination-cover] .var-input__wrap { padding: 0;}.var-pagination__quickly [var-pagination-cover] .var-input__input,.var-pagination__simple [var-pagination-cover] .var-input__input { height: auto; text-align: center;}.var-pagination__quickly { margin: var(--pagination-item-margin);}.var-pagination__quickly [var-pagination-cover] { margin-left: 6px;}.var-pagination__size--open-icon[var-pagination-cover] { font-size: inherit;}.var-pagination--simple-padding { padding: var(--pagination-simple-padding);}
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
outline: none;
|
|
68
68
|
transition: all 0.25s;
|
|
69
69
|
user-select: none;
|
|
70
|
-
background: var(--pagination-item-background);
|
|
70
|
+
background-color: var(--pagination-item-background);
|
|
71
71
|
|
|
72
72
|
&:hover {
|
|
73
73
|
background-color: var(--pagination-hover-bg-color);
|
|
@@ -78,26 +78,31 @@
|
|
|
78
78
|
background-color: var(--pagination-active-bg-color) !important;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
&--disabled--active {
|
|
82
|
-
background: var(--pagination-bg-disabled-color);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
81
|
&--hide {
|
|
86
82
|
display: none;
|
|
87
83
|
}
|
|
88
84
|
|
|
89
85
|
&--disabled {
|
|
90
|
-
cursor: default
|
|
86
|
+
cursor: default;
|
|
91
87
|
color: var(--pagination-disabled-color);
|
|
88
|
+
background-color: unset;
|
|
92
89
|
|
|
93
90
|
&:hover {
|
|
94
91
|
background-color: unset;
|
|
95
92
|
}
|
|
96
|
-
}
|
|
97
93
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
&--hover {
|
|
95
|
+
&:hover {
|
|
96
|
+
background-color: inherit;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&--active {
|
|
101
|
+
background-color: var(--pagination-bg-disabled-color);
|
|
102
|
+
|
|
103
|
+
&:hover {
|
|
104
|
+
background-color: var(--pagination-bg-disabled-color);
|
|
105
|
+
}
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
108
|
}
|
|
@@ -123,6 +128,10 @@
|
|
|
123
128
|
display: flex;
|
|
124
129
|
align-items: center;
|
|
125
130
|
cursor: pointer;
|
|
131
|
+
|
|
132
|
+
&--disabled {
|
|
133
|
+
cursor: default;
|
|
134
|
+
}
|
|
126
135
|
}
|
|
127
136
|
}
|
|
128
137
|
|
package/es/picker/Picker.js
CHANGED
|
@@ -296,26 +296,33 @@ export default defineComponent({
|
|
|
296
296
|
scrollEl: null,
|
|
297
297
|
scrolling: false
|
|
298
298
|
};
|
|
299
|
-
scrollTo(scrollColumn, scrollColumn.index,
|
|
299
|
+
scrollTo(scrollColumn, scrollColumn.index, 0, true);
|
|
300
300
|
return scrollColumn;
|
|
301
301
|
});
|
|
302
302
|
};
|
|
303
303
|
|
|
304
304
|
var normalizeCascadeColumns = cascadeColumns => {
|
|
305
305
|
var scrollColumns = [];
|
|
306
|
-
createChildren(scrollColumns, cascadeColumns);
|
|
306
|
+
createChildren(scrollColumns, cascadeColumns, true);
|
|
307
307
|
return scrollColumns;
|
|
308
308
|
};
|
|
309
309
|
|
|
310
|
-
var createChildren = (scrollColumns, children)
|
|
310
|
+
var createChildren = function (scrollColumns, children, initial) {
|
|
311
|
+
if (initial === void 0) {
|
|
312
|
+
initial = false;
|
|
313
|
+
}
|
|
314
|
+
|
|
311
315
|
if (isArray(children) && children.length) {
|
|
316
|
+
var _props$cascadeInitial;
|
|
317
|
+
|
|
318
|
+
var index = initial ? (_props$cascadeInitial = props.cascadeInitialIndexes[scrollColumns.length]) != null ? _props$cascadeInitial : 0 : 0;
|
|
312
319
|
var scrollColumn = {
|
|
313
320
|
id: sid++,
|
|
314
321
|
prevY: undefined,
|
|
315
322
|
momentumPrevY: undefined,
|
|
316
323
|
touching: false,
|
|
317
324
|
translate: center.value,
|
|
318
|
-
index
|
|
325
|
+
index,
|
|
319
326
|
duration: 0,
|
|
320
327
|
momentumTime: 0,
|
|
321
328
|
column: {
|
|
@@ -326,7 +333,8 @@ export default defineComponent({
|
|
|
326
333
|
scrolling: false
|
|
327
334
|
};
|
|
328
335
|
scrollColumns.push(scrollColumn);
|
|
329
|
-
|
|
336
|
+
scrollTo(scrollColumn, scrollColumn.index, 0, true);
|
|
337
|
+
createChildren(scrollColumns, scrollColumn.columns[scrollColumn.index].children, initial);
|
|
330
338
|
}
|
|
331
339
|
};
|
|
332
340
|
|
package/es/picker/props.js
CHANGED
package/es/popup/Popup.js
CHANGED
|
@@ -51,7 +51,7 @@ export default defineComponent({
|
|
|
51
51
|
(_props$onUpdateShow = props['onUpdate:show']) == null ? void 0 : _props$onUpdateShow.call(props, false);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
useLock(props
|
|
54
|
+
useLock(() => props.show, () => props.lockScroll);
|
|
55
55
|
watch(() => props.show, newValue => {
|
|
56
56
|
var {
|
|
57
57
|
onOpen,
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
+
|
|
3
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
+
|
|
1
5
|
import VarIcon from '../icon';
|
|
2
6
|
import { defineComponent, ref, computed, watch, onMounted } from 'vue';
|
|
3
7
|
import { getParentScroller, getScrollTop } from '../utils/elements';
|
|
@@ -10,7 +14,7 @@ var {
|
|
|
10
14
|
} = createNamespace('pull-refresh');
|
|
11
15
|
var MAX_DISTANCE = 100;
|
|
12
16
|
var CONTROL_POSITION = -50;
|
|
13
|
-
var
|
|
17
|
+
var ICON_TRANSITION = 150;
|
|
14
18
|
import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
|
|
15
19
|
export function render(_ctx, _cache) {
|
|
16
20
|
var _component_var_icon = _resolveComponent("var-icon");
|
|
@@ -35,12 +39,12 @@ export function render(_ctx, _cache) {
|
|
|
35
39
|
style: _normalizeStyle(_ctx.controlStyle)
|
|
36
40
|
}, [_createVNode(_component_var_icon, {
|
|
37
41
|
name: _ctx.iconName,
|
|
38
|
-
transition:
|
|
39
|
-
class: _normalizeClass(_ctx.classes(_ctx.n('icon'), [_ctx.refreshStatus === 'loading', _ctx.n('animation')])),
|
|
42
|
+
transition: _ctx.ICON_TRANSITION,
|
|
43
|
+
class: _normalizeClass(_ctx.classes(_ctx.n('icon'), [_ctx.refreshStatus === 'loading' && _ctx.iconHasChanged, _ctx.n('animation')])),
|
|
40
44
|
"var-pull-refresh-cover": ""
|
|
41
45
|
}, null, 8
|
|
42
46
|
/* PROPS */
|
|
43
|
-
, ["name", "class"])], 6
|
|
47
|
+
, ["name", "transition", "class"])], 6
|
|
44
48
|
/* CLASS, STYLE */
|
|
45
49
|
), _renderSlot(_ctx.$slots, "default")], 34
|
|
46
50
|
/* CLASS, HYDRATE_EVENTS */
|
|
@@ -55,12 +59,16 @@ export default defineComponent({
|
|
|
55
59
|
props,
|
|
56
60
|
|
|
57
61
|
setup(props) {
|
|
62
|
+
var scroller;
|
|
63
|
+
var changing;
|
|
58
64
|
var freshNode = ref(null);
|
|
59
65
|
var startPosition = ref(0);
|
|
60
66
|
var distance = ref(CONTROL_POSITION);
|
|
61
67
|
var iconName = ref('arrow-down');
|
|
62
68
|
var refreshStatus = ref('default');
|
|
63
|
-
var isEnd = ref(false);
|
|
69
|
+
var isEnd = ref(false); // https://github.com/varletjs/varlet/issues/509
|
|
70
|
+
|
|
71
|
+
var iconHasChanged = ref(true);
|
|
64
72
|
var isTouchable = computed(() => refreshStatus.value !== 'loading' && refreshStatus.value !== 'success' && !props.disabled);
|
|
65
73
|
var controlStyle = computed(() => ({
|
|
66
74
|
transform: "translate3d(0px, " + distance.value + "px, 0px) translate(-50%, 0)",
|
|
@@ -70,6 +78,15 @@ export default defineComponent({
|
|
|
70
78
|
}));
|
|
71
79
|
var isSuccess = computed(() => refreshStatus.value === 'success');
|
|
72
80
|
|
|
81
|
+
var changeIcon = () => {
|
|
82
|
+
return new Promise(resolve => {
|
|
83
|
+
window.setTimeout(() => {
|
|
84
|
+
iconHasChanged.value = true;
|
|
85
|
+
resolve();
|
|
86
|
+
}, ICON_TRANSITION);
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
73
90
|
var touchStart = event => {
|
|
74
91
|
if (!isTouchable.value) return;
|
|
75
92
|
refreshStatus.value = 'pulling';
|
|
@@ -82,30 +99,44 @@ export default defineComponent({
|
|
|
82
99
|
if (scrollTop === 0 && distance.value > CONTROL_POSITION) event.cancelable && event.preventDefault();
|
|
83
100
|
var moveDistance = (event.touches[0].clientY - startPosition.value) / 2 + CONTROL_POSITION;
|
|
84
101
|
distance.value = moveDistance >= MAX_DISTANCE ? MAX_DISTANCE : moveDistance;
|
|
85
|
-
iconName.value = distance.value >= MAX_DISTANCE * 0.2 ? 'refresh' : 'arrow-down';
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
var touchEnd = () => {
|
|
89
|
-
if (!isTouchable.value) return;
|
|
90
|
-
isEnd.value = true;
|
|
91
102
|
|
|
92
103
|
if (distance.value >= MAX_DISTANCE * 0.2) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
distance.value = MAX_DISTANCE * 0.3;
|
|
97
|
-
(_props$onUpdateModel = props['onUpdate:modelValue']) == null ? void 0 : _props$onUpdateModel.call(props, true);
|
|
98
|
-
props.onRefresh == null ? void 0 : props.onRefresh();
|
|
104
|
+
iconHasChanged.value = false;
|
|
105
|
+
iconName.value = 'refresh';
|
|
106
|
+
changing = changeIcon();
|
|
99
107
|
} else {
|
|
100
|
-
refreshStatus.value = 'loosing';
|
|
101
108
|
iconName.value = 'arrow-down';
|
|
102
|
-
distance.value = CONTROL_POSITION;
|
|
103
|
-
setTimeout(() => {
|
|
104
|
-
isEnd.value = false;
|
|
105
|
-
}, toNumber(props.animationDuration));
|
|
106
109
|
}
|
|
107
110
|
};
|
|
108
111
|
|
|
112
|
+
var touchEnd = /*#__PURE__*/function () {
|
|
113
|
+
var _ref = _asyncToGenerator(function* () {
|
|
114
|
+
if (!isTouchable.value) return;
|
|
115
|
+
isEnd.value = true;
|
|
116
|
+
|
|
117
|
+
if (distance.value >= MAX_DISTANCE * 0.2) {
|
|
118
|
+
var _props$onUpdateModel;
|
|
119
|
+
|
|
120
|
+
yield changing;
|
|
121
|
+
refreshStatus.value = 'loading';
|
|
122
|
+
distance.value = MAX_DISTANCE * 0.3;
|
|
123
|
+
(_props$onUpdateModel = props['onUpdate:modelValue']) == null ? void 0 : _props$onUpdateModel.call(props, true);
|
|
124
|
+
props.onRefresh == null ? void 0 : props.onRefresh();
|
|
125
|
+
} else {
|
|
126
|
+
refreshStatus.value = 'loosing';
|
|
127
|
+
iconName.value = 'arrow-down';
|
|
128
|
+
distance.value = CONTROL_POSITION;
|
|
129
|
+
setTimeout(() => {
|
|
130
|
+
isEnd.value = false;
|
|
131
|
+
}, toNumber(props.animationDuration));
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
return function touchEnd() {
|
|
136
|
+
return _ref.apply(this, arguments);
|
|
137
|
+
};
|
|
138
|
+
}();
|
|
139
|
+
|
|
109
140
|
var reset = () => {
|
|
110
141
|
setTimeout(() => {
|
|
111
142
|
refreshStatus.value = 'default';
|
|
@@ -131,6 +162,8 @@ export default defineComponent({
|
|
|
131
162
|
return {
|
|
132
163
|
n,
|
|
133
164
|
classes,
|
|
165
|
+
iconHasChanged,
|
|
166
|
+
ICON_TRANSITION,
|
|
134
167
|
refreshStatus,
|
|
135
168
|
freshNode,
|
|
136
169
|
touchStart,
|
package/es/snackbar/core.js
CHANGED
|
@@ -75,7 +75,7 @@ export default defineComponent({
|
|
|
75
75
|
var {
|
|
76
76
|
zIndex
|
|
77
77
|
} = useZIndex(() => props.show, 1);
|
|
78
|
-
useLock(props
|
|
78
|
+
useLock(() => props.show, () => props.lockScroll);
|
|
79
79
|
var isForbidClick = computed(() => props.type === 'loading' || props.forbidClick);
|
|
80
80
|
var iconName = computed(() => {
|
|
81
81
|
if (!props.type) return '';
|