vant 3.2.8 → 3.3.0

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 (171) hide show
  1. package/es/address-edit/AddressEdit.js +155 -180
  2. package/es/address-edit/AddressEditDetail.d.ts +10 -9
  3. package/es/address-edit/AddressEditDetail.js +6 -6
  4. package/es/button/Button.js +2 -2
  5. package/es/calendar/CalendarHeader.js +1 -3
  6. package/es/cascader/Cascader.js +10 -2
  7. package/es/checkbox/Checker.js +1 -1
  8. package/es/checkbox/types.d.ts +2 -6
  9. package/es/composables/use-id.d.ts +1 -0
  10. package/es/composables/use-id.js +14 -0
  11. package/es/composables/use-route.d.ts +1 -1
  12. package/es/composables/use-route.js +4 -4
  13. package/es/count-down/CountDown.js +1 -0
  14. package/es/coupon-list/CouponList.js +40 -24
  15. package/es/coupon-list/index.css +1 -1
  16. package/es/coupon-list/index.less +0 -5
  17. package/es/dropdown-item/DropdownItem.js +7 -2
  18. package/es/dropdown-item/types.d.ts +2 -6
  19. package/es/dropdown-menu/DropdownMenu.js +7 -3
  20. package/es/dropdown-menu/types.d.ts +1 -0
  21. package/es/empty/Network.js +22 -34
  22. package/es/field/Field.d.ts +1 -1
  23. package/es/field/Field.js +13 -5
  24. package/es/field/index.d.ts +2 -2
  25. package/es/field/types.d.ts +7 -6
  26. package/es/form/Form.js +2 -2
  27. package/es/image/Image.js +4 -9
  28. package/es/image-preview/ImagePreview.js +3 -4
  29. package/es/index.d.ts +1 -1
  30. package/es/index.js +1 -1
  31. package/es/lazyload/index.d.ts +1 -1
  32. package/es/lazyload/index.js +1 -1
  33. package/es/lazyload/vue-lazyload/index.d.ts +55 -0
  34. package/es/lazyload/vue-lazyload/index.js +46 -0
  35. package/es/lazyload/vue-lazyload/lazy-component.js +53 -0
  36. package/es/lazyload/vue-lazyload/lazy-container.js +98 -0
  37. package/es/lazyload/vue-lazyload/lazy-image.js +115 -0
  38. package/es/lazyload/vue-lazyload/lazy.js +507 -0
  39. package/es/lazyload/vue-lazyload/listener.js +241 -0
  40. package/es/lazyload/vue-lazyload/util.js +183 -0
  41. package/es/list/List.js +3 -1
  42. package/es/number-keyboard/NumberKeyboardKey.js +4 -4
  43. package/es/pagination/Pagination.js +67 -49
  44. package/es/pagination/index.css +1 -1
  45. package/es/pagination/index.less +32 -31
  46. package/es/password-input/PasswordInput.d.ts +1 -1
  47. package/es/password-input/index.d.ts +1 -1
  48. package/es/popover/Popover.js +2 -0
  49. package/es/popup/Popup.d.ts +1 -2
  50. package/es/popup/Popup.js +2 -5
  51. package/es/popup/index.d.ts +1 -2
  52. package/es/rate/Rate.js +5 -3
  53. package/es/search/Search.js +8 -2
  54. package/es/sidebar/Sidebar.js +1 -0
  55. package/es/sidebar-item/SidebarItem.js +4 -1
  56. package/es/slider/Slider.js +5 -3
  57. package/es/stepper/Stepper.js +11 -8
  58. package/es/swipe/Swipe.js +3 -4
  59. package/es/swipe/types.d.ts +1 -3
  60. package/es/switch/Switch.js +1 -0
  61. package/es/switch/index.css +1 -1
  62. package/es/switch/index.less +2 -0
  63. package/es/tab/Tab.js +17 -4
  64. package/es/tab/index.css +1 -1
  65. package/es/tab/index.less +1 -1
  66. package/es/tabbar/Tabbar.d.ts +1 -1
  67. package/es/tabbar/Tabbar.js +10 -10
  68. package/es/tabbar-item/TabbarItem.js +11 -4
  69. package/es/tabs/Tabs.js +10 -5
  70. package/es/tabs/TabsTitle.d.ts +6 -0
  71. package/es/tabs/TabsTitle.js +7 -1
  72. package/es/tabs/types.d.ts +1 -0
  73. package/es/uploader/UploaderPreviewItem.js +4 -1
  74. package/es/uploader/utils.d.ts +2 -2
  75. package/es/uploader/utils.js +2 -2
  76. package/es/utils/dom.d.ts +1 -0
  77. package/es/utils/dom.js +6 -2
  78. package/es/utils/format.js +6 -5
  79. package/es/vue-tsx-shim.d.ts +1 -0
  80. package/lib/address-edit/AddressEdit.js +156 -180
  81. package/lib/address-edit/AddressEditDetail.d.ts +10 -9
  82. package/lib/address-edit/AddressEditDetail.js +6 -6
  83. package/lib/button/Button.js +1 -1
  84. package/lib/calendar/CalendarHeader.js +1 -3
  85. package/lib/cascader/Cascader.js +10 -2
  86. package/lib/checkbox/Checker.js +1 -1
  87. package/lib/checkbox/types.d.ts +2 -6
  88. package/lib/composables/use-id.d.ts +1 -0
  89. package/lib/composables/use-id.js +21 -0
  90. package/lib/composables/use-route.d.ts +1 -1
  91. package/lib/composables/use-route.js +4 -4
  92. package/lib/count-down/CountDown.js +1 -0
  93. package/lib/coupon-list/CouponList.js +39 -22
  94. package/lib/coupon-list/index.css +1 -1
  95. package/lib/coupon-list/index.less +0 -5
  96. package/lib/dropdown-item/DropdownItem.js +7 -2
  97. package/lib/dropdown-item/types.d.ts +2 -6
  98. package/lib/dropdown-menu/DropdownMenu.js +7 -2
  99. package/lib/dropdown-menu/types.d.ts +1 -0
  100. package/lib/empty/Network.js +22 -34
  101. package/lib/field/Field.d.ts +1 -1
  102. package/lib/field/Field.js +14 -5
  103. package/lib/field/index.d.ts +2 -2
  104. package/lib/field/types.d.ts +7 -6
  105. package/lib/form/Form.js +1 -1
  106. package/lib/image/Image.js +4 -9
  107. package/lib/image-preview/ImagePreview.js +1 -2
  108. package/lib/index.css +1 -1
  109. package/lib/index.d.ts +1 -1
  110. package/lib/index.js +1 -1
  111. package/lib/lazyload/index.d.ts +1 -1
  112. package/lib/lazyload/index.js +3 -3
  113. package/lib/lazyload/vue-lazyload/index.d.ts +55 -0
  114. package/lib/lazyload/vue-lazyload/index.js +58 -0
  115. package/lib/lazyload/vue-lazyload/lazy-component.js +62 -0
  116. package/lib/lazyload/vue-lazyload/lazy-container.js +106 -0
  117. package/lib/lazyload/vue-lazyload/lazy-image.js +125 -0
  118. package/lib/lazyload/vue-lazyload/lazy.js +520 -0
  119. package/lib/lazyload/vue-lazyload/listener.js +251 -0
  120. package/lib/lazyload/vue-lazyload/util.js +213 -0
  121. package/lib/list/List.js +3 -1
  122. package/lib/number-keyboard/NumberKeyboardKey.js +3 -3
  123. package/lib/pagination/Pagination.js +65 -47
  124. package/lib/pagination/index.css +1 -1
  125. package/lib/pagination/index.less +32 -31
  126. package/lib/password-input/PasswordInput.d.ts +1 -1
  127. package/lib/password-input/index.d.ts +1 -1
  128. package/lib/popover/Popover.js +2 -0
  129. package/lib/popup/Popup.d.ts +1 -2
  130. package/lib/popup/Popup.js +2 -5
  131. package/lib/popup/index.d.ts +1 -2
  132. package/lib/rate/Rate.js +5 -3
  133. package/lib/search/Search.js +9 -2
  134. package/lib/sidebar/Sidebar.js +1 -0
  135. package/lib/sidebar-item/SidebarItem.js +4 -1
  136. package/lib/slider/Slider.js +5 -3
  137. package/lib/stepper/Stepper.js +11 -8
  138. package/lib/swipe/Swipe.js +1 -2
  139. package/lib/swipe/types.d.ts +1 -3
  140. package/lib/switch/Switch.js +1 -0
  141. package/lib/switch/index.css +1 -1
  142. package/lib/switch/index.less +2 -0
  143. package/lib/tab/Tab.js +19 -4
  144. package/lib/tab/index.css +1 -1
  145. package/lib/tab/index.less +1 -1
  146. package/lib/tabbar/Tabbar.d.ts +1 -1
  147. package/lib/tabbar/Tabbar.js +10 -10
  148. package/lib/tabbar-item/TabbarItem.js +11 -4
  149. package/lib/tabs/Tabs.js +9 -3
  150. package/lib/tabs/TabsTitle.d.ts +6 -0
  151. package/lib/tabs/TabsTitle.js +7 -1
  152. package/lib/tabs/types.d.ts +1 -0
  153. package/lib/uploader/UploaderPreviewItem.js +3 -0
  154. package/lib/uploader/utils.d.ts +2 -2
  155. package/lib/uploader/utils.js +3 -2
  156. package/lib/utils/dom.d.ts +1 -0
  157. package/lib/utils/dom.js +9 -2
  158. package/lib/utils/format.js +7 -5
  159. package/lib/vant.es.js +1086 -1068
  160. package/lib/vant.es.min.js +1086 -1068
  161. package/lib/vant.js +1085 -1067
  162. package/lib/vant.min.js +1 -1
  163. package/lib/vue-tsx-shim.d.ts +1 -0
  164. package/package.json +4 -4
  165. package/vetur/attributes.json +340 -340
  166. package/vetur/tags.json +119 -119
  167. package/vetur/web-types.json +1143 -1143
  168. package/es/composables/use-link-field.d.ts +0 -0
  169. package/es/composables/use-link-field.js +0 -0
  170. package/lib/composables/use-link-field.d.ts +0 -0
  171. package/lib/composables/use-link-field.js +0 -1
package/es/tabs/Tabs.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { ref, watch, computed, reactive, nextTick, onActivated, defineComponent, getCurrentInstance } from 'vue'; // Utils
3
3
 
4
- import { pick, isDef, addUnit, isHidden, unitToPx, truthProp, numericProp, getElementTop, makeStringProp, callInterceptor, createNamespace, makeNumericProp, setRootScrollTop, BORDER_TOP_BOTTOM } from '../utils';
4
+ import { pick, isDef, addUnit, isHidden, unitToPx, truthProp, numericProp, windowWidth, getElementTop, makeStringProp, callInterceptor, createNamespace, makeNumericProp, setRootScrollTop, BORDER_TOP_BOTTOM } from '../utils';
5
5
  import { scrollLeftTo, scrollTopTo } from './utils'; // Composables
6
6
 
7
- import { useRect, useChildren, useWindowSize, useScrollParent, useEventListener, onMountedOrActivated } from '@vant/use';
7
+ import { useRect, useChildren, useScrollParent, useEventListener, onMountedOrActivated } from '@vant/use';
8
+ import { useId } from '../composables/use-id';
8
9
  import { route } from '../composables/use-route';
9
10
  import { useRefs } from '../composables/use-refs';
10
11
  import { useExpose } from '../composables/use-expose';
@@ -68,7 +69,7 @@ export default defineComponent({
68
69
  var root = ref();
69
70
  var navRef = ref();
70
71
  var wrapRef = ref();
71
- var windowSize = useWindowSize();
72
+ var id = useId();
72
73
  var scroller = useScrollParent(root);
73
74
  var [titleRefs, setTitleRefs] = useRefs();
74
75
  var {
@@ -285,12 +286,14 @@ export default defineComponent({
285
286
  };
286
287
 
287
288
  var renderNav = () => children.map((item, index) => _createVNode(TabsTitle, _mergeProps({
289
+ "id": id + "-" + index,
288
290
  "ref": setTitleRefs(index),
289
291
  "type": props.type,
290
292
  "color": props.color,
291
293
  "style": item.titleStyle,
292
294
  "class": item.titleClass,
293
295
  "isActive": index === state.currentIndex,
296
+ "controls": item.id,
294
297
  "scrollable": scrollable.value,
295
298
  "renderTitle": item.$slots.title,
296
299
  "activeColor": props.titleActiveColor,
@@ -318,14 +321,15 @@ export default defineComponent({
318
321
  "class": bem('nav', [type, {
319
322
  complete: scrollable.value
320
323
  }]),
321
- "style": navStyle.value
324
+ "style": navStyle.value,
325
+ "aria-orientation": "horizontal"
322
326
  }, [(_slots$navLeft = slots['nav-left']) == null ? void 0 : _slots$navLeft.call(slots), renderNav(), type === 'line' && _createVNode("div", {
323
327
  "class": bem('line'),
324
328
  "style": state.lineStyle
325
329
  }, null), (_slots$navRight = slots['nav-right']) == null ? void 0 : _slots$navRight.call(slots)])]);
326
330
  };
327
331
 
328
- watch([() => props.color, windowSize.width], setLine);
332
+ watch([() => props.color, windowWidth], setLine);
329
333
  watch(() => props.active, value => {
330
334
  if (value !== currentName.value) {
331
335
  setCurrentIndexByName(value);
@@ -375,6 +379,7 @@ export default defineComponent({
375
379
  target: scroller
376
380
  });
377
381
  linkChildren({
382
+ id,
378
383
  props,
379
384
  setLine,
380
385
  onRendered,
@@ -1,4 +1,5 @@
1
1
  declare const _default: import("vue").DefineComponent<{
2
+ id: StringConstructor;
2
3
  dot: BooleanConstructor;
3
4
  type: StringConstructor;
4
5
  color: StringConstructor;
@@ -6,6 +7,7 @@ declare const _default: import("vue").DefineComponent<{
6
7
  badge: (NumberConstructor | StringConstructor)[];
7
8
  isActive: BooleanConstructor;
8
9
  disabled: BooleanConstructor;
10
+ controls: StringConstructor;
9
11
  scrollable: BooleanConstructor;
10
12
  activeColor: StringConstructor;
11
13
  renderTitle: FunctionConstructor;
@@ -15,6 +17,7 @@ declare const _default: import("vue").DefineComponent<{
15
17
  default: true;
16
18
  };
17
19
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("@vue/runtime-core").ComponentCustomProps, Readonly<{
20
+ id?: unknown;
18
21
  dot?: unknown;
19
22
  type?: unknown;
20
23
  color?: unknown;
@@ -22,6 +25,7 @@ declare const _default: import("vue").DefineComponent<{
22
25
  badge?: unknown;
23
26
  isActive?: unknown;
24
27
  disabled?: unknown;
28
+ controls?: unknown;
25
29
  scrollable?: unknown;
26
30
  activeColor?: unknown;
27
31
  renderTitle?: unknown;
@@ -38,6 +42,8 @@ declare const _default: import("vue").DefineComponent<{
38
42
  badge?: string | number | undefined;
39
43
  title?: string | undefined;
40
44
  color?: string | undefined;
45
+ controls?: string | undefined;
46
+ id?: string | undefined;
41
47
  activeColor?: string | undefined;
42
48
  inactiveColor?: string | undefined;
43
49
  renderTitle?: Function | undefined;
@@ -6,6 +6,7 @@ var [name, bem] = createNamespace('tab');
6
6
  export default defineComponent({
7
7
  name,
8
8
  props: {
9
+ id: String,
9
10
  dot: Boolean,
10
11
  type: String,
11
12
  color: String,
@@ -13,6 +14,7 @@ export default defineComponent({
13
14
  badge: numericProp,
14
15
  isActive: Boolean,
15
16
  disabled: Boolean,
17
+ controls: String,
16
18
  scrollable: Boolean,
17
19
  activeColor: String,
18
20
  renderTitle: Function,
@@ -75,13 +77,17 @@ export default defineComponent({
75
77
  };
76
78
 
77
79
  return () => _createVNode("div", {
80
+ "id": props.id,
78
81
  "role": "tab",
79
82
  "class": [bem({
80
83
  active: props.isActive,
81
84
  disabled: props.disabled
82
85
  })],
83
86
  "style": style.value,
84
- "aria-selected": props.isActive
87
+ "tabindex": props.disabled ? undefined : props.isActive ? 0 : -1,
88
+ "aria-selected": props.isActive,
89
+ "aria-disabled": props.disabled || undefined,
90
+ "aria-controls": props.controls
85
91
  }, [renderText()]);
86
92
  }
87
93
 
@@ -8,6 +8,7 @@ export declare type TabsClickTabEventParams = {
8
8
  disabled: boolean;
9
9
  };
10
10
  export declare type TabsProvide = {
11
+ id: string;
11
12
  props: TabsProps;
12
13
  setLine: () => void;
13
14
  onRendered: (name: string | number, title?: string) => void;
@@ -1,7 +1,7 @@
1
1
  import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
2
2
  import { defineComponent } from 'vue'; // Utils
3
3
 
4
- import { bem, isImageFile } from './utils';
4
+ import { t, bem, isImageFile } from './utils';
5
5
  import { isDef, extend, numericProp, getSizeStyle, callInterceptor, makeRequiredProp } from '../utils'; // Components
6
6
 
7
7
  import { Icon } from '../icon';
@@ -71,7 +71,10 @@ export default defineComponent({
71
71
  var renderDeleteIcon = () => {
72
72
  if (props.deletable && props.item.status !== 'uploading') {
73
73
  return _createVNode("div", {
74
+ "role": "button",
74
75
  "class": bem('preview-delete'),
76
+ "tabindex": 0,
77
+ "aria-label": t('delete'),
75
78
  "onClick": onDelete
76
79
  }, [_createVNode(Icon, {
77
80
  "name": "cross",
@@ -1,6 +1,6 @@
1
1
  import type { UploaderMaxSize, UploaderResultType, UploaderFileListItem } from './types';
2
- declare const name: string, bem: (el?: import("../utils").Mods | undefined, mods?: import("../utils").Mods | undefined) => import("../utils").Mods;
3
- export { name, bem };
2
+ declare const name: string, bem: (el?: import("../utils").Mods | undefined, mods?: import("../utils").Mods | undefined) => import("../utils").Mods, t: (path: string, ...args: unknown[]) => any;
3
+ export { name, bem, t };
4
4
  export declare const toArray: <T>(item: T | T[]) => T[];
5
5
  export declare function readFileContent(file: File, resultType: UploaderResultType): Promise<string | void>;
6
6
  export declare function isOversize(items: UploaderFileListItem | UploaderFileListItem[], maxSize: UploaderMaxSize): boolean;
@@ -1,6 +1,6 @@
1
1
  import { createNamespace, isFunction } from '../utils';
2
- var [name, bem] = createNamespace('uploader');
3
- export { name, bem };
2
+ var [name, bem, t] = createNamespace('uploader');
3
+ export { name, bem, t };
4
4
  export var toArray = item => Array.isArray(item) ? item : [item];
5
5
  export function readFileContent(file, resultType) {
6
6
  return new Promise(resolve => {
package/es/utils/dom.d.ts CHANGED
@@ -9,3 +9,4 @@ export declare function resetScroll(): void;
9
9
  export declare const stopPropagation: (event: Event) => void;
10
10
  export declare function preventDefault(event: Event, isStopPropagation?: boolean): void;
11
11
  export declare function isHidden(elementRef: HTMLElement | Ref<HTMLElement | undefined>): boolean;
12
+ export declare const windowWidth: Ref<number>, windowHeight: Ref<number>;
package/es/utils/dom.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useRect } from '@vant/use';
1
+ import { useRect, useWindowSize } from '@vant/use';
2
2
  import { unref } from 'vue';
3
3
  import { isIOS as checkIsIOS } from './validate';
4
4
  export function getScrollTop(el) {
@@ -62,4 +62,8 @@ export function isHidden(elementRef) {
62
62
 
63
63
  var parentHidden = el.offsetParent === null && style.position !== 'fixed';
64
64
  return hidden || parentHidden;
65
- }
65
+ }
66
+ export var {
67
+ width: windowWidth,
68
+ height: windowHeight
69
+ } = useWindowSize();
@@ -1,11 +1,12 @@
1
1
  import { inBrowser } from './basic';
2
+ import { windowWidth, windowHeight } from './dom';
2
3
  import { isDef, isNumeric } from './validate';
3
4
  export function addUnit(value) {
4
- if (!isDef(value)) {
5
- return undefined;
5
+ if (isDef(value)) {
6
+ return isNumeric(value) ? value + "px" : String(value);
6
7
  }
7
8
 
8
- return isNumeric(value) ? value + "px" : String(value);
9
+ return undefined;
9
10
  }
10
11
  export function getSizeStyle(originSize) {
11
12
  if (isDef(originSize)) {
@@ -45,12 +46,12 @@ function convertRem(value) {
45
46
 
46
47
  function convertVw(value) {
47
48
  value = value.replace(/vw/g, '');
48
- return +value * window.innerWidth / 100;
49
+ return +value * windowWidth.value / 100;
49
50
  }
50
51
 
51
52
  function convertVh(value) {
52
53
  value = value.replace(/vh/g, '');
53
- return +value * window.innerHeight / 100;
54
+ return +value * windowHeight.value / 100;
54
55
  }
55
56
 
56
57
  export function unitToPx(value) {
@@ -4,6 +4,7 @@ type EventHandler = (...args: any[]) => void;
4
4
 
5
5
  declare module 'vue' {
6
6
  interface ComponentCustomProps {
7
+ id?: string;
7
8
  role?: string;
8
9
  tabindex?: number;
9
10
  onClick?: EventHandler;