@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.
@@ -69,11 +69,11 @@
69
69
  },
70
70
  "var-back-top/bottom": {
71
71
  "type": "string | number",
72
- "description": "`BackTop` 距离页面底部的高度 默认值:40"
72
+ "description": "`BackTop` 距离页面底部的距离 默认值:40"
73
73
  },
74
74
  "var-back-top/right": {
75
75
  "type": "string | number",
76
- "description": "`BackTop` 距离页面右侧的宽度 默认值:40"
76
+ "description": "`BackTop` 距离页面右侧的距离 默认值:40"
77
77
  },
78
78
  "var-back-top/duration": {
79
79
  "type": "number",
@@ -97,7 +97,7 @@
97
97
  },
98
98
  "var-badge/position": {
99
99
  "type": "string",
100
- "description": "徽标标签中有其他标签时定义徽标在其他标签上的位置,可选值 `right-top` `top-bottom` `left-top` `left-bottom` 默认值:right-top"
100
+ "description": "徽标标签中有其他标签时定义徽标在其他标签上的位置,可选值 `right-top` `right-bottom` `left-top` `left-bottom` 默认值:right-top"
101
101
  },
102
102
  "var-badge/color": {
103
103
  "type": "string",
@@ -945,7 +945,7 @@
945
945
  },
946
946
  "var-loading/radius": {
947
947
  "type": "string | number",
948
- "description": "loading 的类型为 `circle` 时,可设置其大小 默认值:-"
948
+ "description": "loading 的类型为 `circle` 时,可设置其半径大小 默认值:-"
949
949
  },
950
950
  "var-menu/v-model:show": {
951
951
  "type": "string",
@@ -1035,6 +1035,10 @@
1035
1035
  "type": "boolean",
1036
1036
  "description": "是否开启级联模式 默认值:true"
1037
1037
  },
1038
+ "var-picker/cascade-initial-indexes": {
1039
+ "type": "number[]",
1040
+ "description": "级联模式的初始化索引列表 默认值:-"
1041
+ },
1038
1042
  "var-picker/option-height": {
1039
1043
  "type": "string | number",
1040
1044
  "description": "选项的高度(px rem) 默认值:44"
@@ -397,6 +397,7 @@
397
397
  "text-key",
398
398
  "toolbar",
399
399
  "cascade",
400
+ "cascade-initial-indexes",
400
401
  "option-height",
401
402
  "option-count",
402
403
  "confirm-button-text",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
- "version": "1.27.3",
4
+ "version": "1.27.6",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
@@ -225,7 +225,7 @@
225
225
  },
226
226
  {
227
227
  "name": "bottom",
228
- "description": "`BackTop` 距离页面底部的高度",
228
+ "description": "`BackTop` 距离页面底部的距离",
229
229
  "default": "40",
230
230
  "value": {
231
231
  "type": "string | number",
@@ -234,7 +234,7 @@
234
234
  },
235
235
  {
236
236
  "name": "right",
237
- "description": "`BackTop` 距离页面右侧的宽度",
237
+ "description": "`BackTop` 距离页面右侧的距离",
238
238
  "default": "40",
239
239
  "value": {
240
240
  "type": "string | number",
@@ -305,7 +305,7 @@
305
305
  },
306
306
  {
307
307
  "name": "position",
308
- "description": "徽标标签中有其他标签时定义徽标在其他标签上的位置,可选值 `right-top` `top-bottom` `left-top` `left-bottom`",
308
+ "description": "徽标标签中有其他标签时定义徽标在其他标签上的位置,可选值 `right-top` `right-bottom` `left-top` `left-bottom`",
309
309
  "default": "right-top",
310
310
  "value": {
311
311
  "type": "string",
@@ -2821,7 +2821,7 @@
2821
2821
  },
2822
2822
  {
2823
2823
  "name": "radius",
2824
- "description": "loading 的类型为 `circle` 时,可设置其大小",
2824
+ "description": "loading 的类型为 `circle` 时,可设置其半径大小",
2825
2825
  "default": "-",
2826
2826
  "value": {
2827
2827
  "type": "string | number",
@@ -3114,6 +3114,15 @@
3114
3114
  "kind": "expression"
3115
3115
  }
3116
3116
  },
3117
+ {
3118
+ "name": "cascade-initial-indexes",
3119
+ "description": "级联模式的初始化索引列表",
3120
+ "default": "-",
3121
+ "value": {
3122
+ "type": "number[]",
3123
+ "kind": "expression"
3124
+ }
3125
+ },
3117
3126
  {
3118
3127
  "name": "option-height",
3119
3128
  "description": "选项的高度(px rem)",
@@ -4155,7 +4164,7 @@
4155
4164
  "slots": [
4156
4165
  {
4157
4166
  "name": "default",
4158
- "description": "加载成功后显示的内容"
4167
+ "description": "非加载状态下的内容"
4159
4168
  }
4160
4169
  ]
4161
4170
  },
@@ -26,33 +26,26 @@ function releaseLock(uid) {
26
26
  delete _.default.locks[uid];
27
27
  resolveLock();
28
28
  }
29
- /**
30
- * 组件锁操作
31
- * @param props 组件props
32
- * @param state 组件props中控制组件加锁的开关对应的key值
33
- * @param use 组件props中控制组件加锁的开关是否可用对应的key值
34
- */
35
29
 
36
-
37
- function useLock(props, state, use) {
30
+ function useLock(source, useSource) {
38
31
  var {
39
32
  uid
40
33
  } = (0, _vue.getCurrentInstance)();
41
34
 
42
- if (use) {
43
- (0, _vue.watch)(() => props[use], newValue => {
35
+ if (useSource) {
36
+ (0, _vue.watch)(useSource, newValue => {
44
37
  if (newValue === false) {
45
38
  // 改变为禁用状态 组件解锁
46
39
  releaseLock(uid);
47
- } else if (newValue === true && props[state] === true) {
40
+ } else if (newValue === true && source() === true) {
48
41
  // 改变为启用状态 并且popup处于开启状态 组件加锁
49
42
  addLock(uid);
50
43
  }
51
44
  });
52
45
  }
53
46
 
54
- (0, _vue.watch)(() => props[state], newValue => {
55
- if (use && props[use] === false) {
47
+ (0, _vue.watch)(source, newValue => {
48
+ if (useSource && useSource() === false) {
56
49
  return;
57
50
  }
58
51
 
@@ -65,41 +58,41 @@ function useLock(props, state, use) {
65
58
  }
66
59
  });
67
60
  (0, _vue.onBeforeMount)(() => {
68
- if (use && props[use] === false) {
61
+ if (useSource && useSource() === false) {
69
62
  return;
70
63
  }
71
64
 
72
- if (props[state] === true) {
65
+ if (source() === true) {
73
66
  // popup处于开启状态 组件挂载 组件加锁
74
67
  addLock(uid);
75
68
  }
76
69
  });
77
70
  (0, _vue.onUnmounted)(() => {
78
- if (use && props[use] === false) {
71
+ if (useSource && useSource() === false) {
79
72
  return;
80
73
  }
81
74
 
82
- if (props[state] === true) {
75
+ if (source() === true) {
83
76
  // popup处于开启状态 组件卸载 组件解锁
84
77
  releaseLock(uid);
85
78
  }
86
79
  });
87
80
  (0, _vue.onActivated)(() => {
88
- if (use && props[use] === false) {
81
+ if (useSource && useSource() === false) {
89
82
  return;
90
83
  }
91
84
 
92
- if (props[state] === true) {
85
+ if (source() === true) {
93
86
  // popup处于开启状态 组件处于keepalive前台 组件加锁
94
87
  addLock(uid);
95
88
  }
96
89
  });
97
90
  (0, _vue.onDeactivated)(() => {
98
- if (use && props[use] === false) {
91
+ if (useSource && useSource() === false) {
99
92
  return;
100
93
  }
101
94
 
102
- if (props[state] === true) {
95
+ if (source() === true) {
103
96
  // popup处于开启状态 组件处于keepalive后台 组件解锁
104
97
  releaseLock(uid);
105
98
  }
@@ -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);}
@@ -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 {
@@ -126,10 +126,7 @@ function render(_ctx, _cache) {
126
126
  /* KEYED_FRAGMENT */
127
127
  ))]),
128
128
  default: (0, _vue.withCtx)(() => [(0, _vue.createElementVNode)("div", {
129
- class: (0, _vue.normalizeClass)(_ctx.n('size--open')),
130
- style: {
131
- "display": "flex"
132
- },
129
+ class: (0, _vue.normalizeClass)(_ctx.classes(_ctx.n('size--open'), [_ctx.current <= 1 || _ctx.disabled, _ctx.n('size--open--disabled')])),
133
130
  onClick: _cache[5] || (_cache[5] = function () {
134
131
  return _ctx.showMenu && _ctx.showMenu(...arguments);
135
132
  })
@@ -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--active { background: var(--pagination-bg-disabled-color);}.var-pagination__item--hide { display: none;}.var-pagination__item--disabled { cursor: default !important; color: var(--pagination-disabled-color);}.var-pagination__item--disabled:hover { background-color: unset;}.var-pagination__item--hover:hover { background: inherit;}.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__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);}
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 !important;
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
- &--hover {
99
- &:hover {
100
- background: inherit;
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
 
@@ -313,26 +313,33 @@ var _default = (0, _vue.defineComponent)({
313
313
  scrollEl: null,
314
314
  scrolling: false
315
315
  };
316
- scrollTo(scrollColumn, scrollColumn.index, 200);
316
+ scrollTo(scrollColumn, scrollColumn.index, 0, true);
317
317
  return scrollColumn;
318
318
  });
319
319
  };
320
320
 
321
321
  var normalizeCascadeColumns = cascadeColumns => {
322
322
  var scrollColumns = [];
323
- createChildren(scrollColumns, cascadeColumns);
323
+ createChildren(scrollColumns, cascadeColumns, true);
324
324
  return scrollColumns;
325
325
  };
326
326
 
327
- var createChildren = (scrollColumns, children) => {
327
+ var createChildren = function (scrollColumns, children, initial) {
328
+ if (initial === void 0) {
329
+ initial = false;
330
+ }
331
+
328
332
  if ((0, _shared.isArray)(children) && children.length) {
333
+ var _props$cascadeInitial;
334
+
335
+ var index = initial ? (_props$cascadeInitial = props.cascadeInitialIndexes[scrollColumns.length]) != null ? _props$cascadeInitial : 0 : 0;
329
336
  var scrollColumn = {
330
337
  id: sid++,
331
338
  prevY: undefined,
332
339
  momentumPrevY: undefined,
333
340
  touching: false,
334
341
  translate: center.value,
335
- index: 0,
342
+ index,
336
343
  duration: 0,
337
344
  momentumTime: 0,
338
345
  column: {
@@ -343,7 +350,8 @@ var _default = (0, _vue.defineComponent)({
343
350
  scrolling: false
344
351
  };
345
352
  scrollColumns.push(scrollColumn);
346
- createChildren(scrollColumns, scrollColumn.columns[scrollColumn.index].children);
353
+ scrollTo(scrollColumn, scrollColumn.index, 0, true);
354
+ createChildren(scrollColumns, scrollColumn.columns[scrollColumn.index].children, initial);
347
355
  }
348
356
  };
349
357
 
@@ -29,6 +29,10 @@ var props = _extends({
29
29
  type: Boolean,
30
30
  default: false
31
31
  },
32
+ cascadeInitialIndexes: {
33
+ type: Array,
34
+ default: () => []
35
+ },
32
36
  optionHeight: {
33
37
  type: [Number, String],
34
38
  default: 44
@@ -61,7 +61,7 @@ var _default = (0, _vue.defineComponent)({
61
61
  (_props$onUpdateShow = props['onUpdate:show']) == null ? void 0 : _props$onUpdateShow.call(props, false);
62
62
  };
63
63
 
64
- (0, _lock.useLock)(props, 'show', 'lockScroll');
64
+ (0, _lock.useLock)(() => props.show, () => props.lockScroll);
65
65
  (0, _vue.watch)(() => props.show, newValue => {
66
66
  var {
67
67
  onOpen,
@@ -18,13 +18,17 @@ var _components = require("../utils/components");
18
18
 
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
+ 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); } }
22
+
23
+ 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); }); }; }
24
+
21
25
  var {
22
26
  n,
23
27
  classes
24
28
  } = (0, _components.createNamespace)('pull-refresh');
25
29
  var MAX_DISTANCE = 100;
26
30
  var CONTROL_POSITION = -50;
27
- var scroller;
31
+ var ICON_TRANSITION = 150;
28
32
 
29
33
  function render(_ctx, _cache) {
30
34
  var _component_var_icon = (0, _vue.resolveComponent)("var-icon");
@@ -49,12 +53,12 @@ function render(_ctx, _cache) {
49
53
  style: (0, _vue.normalizeStyle)(_ctx.controlStyle)
50
54
  }, [(0, _vue.createVNode)(_component_var_icon, {
51
55
  name: _ctx.iconName,
52
- transition: 200,
53
- class: (0, _vue.normalizeClass)(_ctx.classes(_ctx.n('icon'), [_ctx.refreshStatus === 'loading', _ctx.n('animation')])),
56
+ transition: _ctx.ICON_TRANSITION,
57
+ class: (0, _vue.normalizeClass)(_ctx.classes(_ctx.n('icon'), [_ctx.refreshStatus === 'loading' && _ctx.iconHasChanged, _ctx.n('animation')])),
54
58
  "var-pull-refresh-cover": ""
55
59
  }, null, 8
56
60
  /* PROPS */
57
- , ["name", "class"])], 6
61
+ , ["name", "transition", "class"])], 6
58
62
  /* CLASS, STYLE */
59
63
  ), (0, _vue.renderSlot)(_ctx.$slots, "default")], 34
60
64
  /* CLASS, HYDRATE_EVENTS */
@@ -70,12 +74,16 @@ var _default = (0, _vue.defineComponent)({
70
74
  props: _props.props,
71
75
 
72
76
  setup(props) {
77
+ var scroller;
78
+ var changing;
73
79
  var freshNode = (0, _vue.ref)(null);
74
80
  var startPosition = (0, _vue.ref)(0);
75
81
  var distance = (0, _vue.ref)(CONTROL_POSITION);
76
82
  var iconName = (0, _vue.ref)('arrow-down');
77
83
  var refreshStatus = (0, _vue.ref)('default');
78
- var isEnd = (0, _vue.ref)(false);
84
+ var isEnd = (0, _vue.ref)(false); // https://github.com/varletjs/varlet/issues/509
85
+
86
+ var iconHasChanged = (0, _vue.ref)(true);
79
87
  var isTouchable = (0, _vue.computed)(() => refreshStatus.value !== 'loading' && refreshStatus.value !== 'success' && !props.disabled);
80
88
  var controlStyle = (0, _vue.computed)(() => ({
81
89
  transform: "translate3d(0px, " + distance.value + "px, 0px) translate(-50%, 0)",
@@ -85,6 +93,15 @@ var _default = (0, _vue.defineComponent)({
85
93
  }));
86
94
  var isSuccess = (0, _vue.computed)(() => refreshStatus.value === 'success');
87
95
 
96
+ var changeIcon = () => {
97
+ return new Promise(resolve => {
98
+ window.setTimeout(() => {
99
+ iconHasChanged.value = true;
100
+ resolve();
101
+ }, ICON_TRANSITION);
102
+ });
103
+ };
104
+
88
105
  var touchStart = event => {
89
106
  if (!isTouchable.value) return;
90
107
  refreshStatus.value = 'pulling';
@@ -97,30 +114,44 @@ var _default = (0, _vue.defineComponent)({
97
114
  if (scrollTop === 0 && distance.value > CONTROL_POSITION) event.cancelable && event.preventDefault();
98
115
  var moveDistance = (event.touches[0].clientY - startPosition.value) / 2 + CONTROL_POSITION;
99
116
  distance.value = moveDistance >= MAX_DISTANCE ? MAX_DISTANCE : moveDistance;
100
- iconName.value = distance.value >= MAX_DISTANCE * 0.2 ? 'refresh' : 'arrow-down';
101
- };
102
-
103
- var touchEnd = () => {
104
- if (!isTouchable.value) return;
105
- isEnd.value = true;
106
117
 
107
118
  if (distance.value >= MAX_DISTANCE * 0.2) {
108
- var _props$onUpdateModel;
109
-
110
- refreshStatus.value = 'loading';
111
- distance.value = MAX_DISTANCE * 0.3;
112
- (_props$onUpdateModel = props['onUpdate:modelValue']) == null ? void 0 : _props$onUpdateModel.call(props, true);
113
- props.onRefresh == null ? void 0 : props.onRefresh();
119
+ iconHasChanged.value = false;
120
+ iconName.value = 'refresh';
121
+ changing = changeIcon();
114
122
  } else {
115
- refreshStatus.value = 'loosing';
116
123
  iconName.value = 'arrow-down';
117
- distance.value = CONTROL_POSITION;
118
- setTimeout(() => {
119
- isEnd.value = false;
120
- }, (0, _shared.toNumber)(props.animationDuration));
121
124
  }
122
125
  };
123
126
 
127
+ var touchEnd = /*#__PURE__*/function () {
128
+ var _ref = _asyncToGenerator(function* () {
129
+ if (!isTouchable.value) return;
130
+ isEnd.value = true;
131
+
132
+ if (distance.value >= MAX_DISTANCE * 0.2) {
133
+ var _props$onUpdateModel;
134
+
135
+ yield changing;
136
+ refreshStatus.value = 'loading';
137
+ distance.value = MAX_DISTANCE * 0.3;
138
+ (_props$onUpdateModel = props['onUpdate:modelValue']) == null ? void 0 : _props$onUpdateModel.call(props, true);
139
+ props.onRefresh == null ? void 0 : props.onRefresh();
140
+ } else {
141
+ refreshStatus.value = 'loosing';
142
+ iconName.value = 'arrow-down';
143
+ distance.value = CONTROL_POSITION;
144
+ setTimeout(() => {
145
+ isEnd.value = false;
146
+ }, (0, _shared.toNumber)(props.animationDuration));
147
+ }
148
+ });
149
+
150
+ return function touchEnd() {
151
+ return _ref.apply(this, arguments);
152
+ };
153
+ }();
154
+
124
155
  var reset = () => {
125
156
  setTimeout(() => {
126
157
  refreshStatus.value = 'default';
@@ -146,6 +177,8 @@ var _default = (0, _vue.defineComponent)({
146
177
  return {
147
178
  n,
148
179
  classes,
180
+ iconHasChanged,
181
+ ICON_TRANSITION,
149
182
  refreshStatus,
150
183
  freshNode,
151
184
  touchStart,
@@ -92,7 +92,7 @@ var _default = (0, _vue.defineComponent)({
92
92
  var {
93
93
  zIndex
94
94
  } = (0, _zIndex.useZIndex)(() => props.show, 1);
95
- (0, _lock.useLock)(props, 'show', 'lockScroll');
95
+ (0, _lock.useLock)(() => props.show, () => props.lockScroll);
96
96
  var isForbidClick = (0, _vue.computed)(() => props.type === 'loading' || props.forbidClick);
97
97
  var iconName = (0, _vue.computed)(() => {
98
98
  if (!props.type) return '';