vant 3.3.6 → 3.3.7

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 (51) hide show
  1. package/es/badge/Badge.d.ts +12 -0
  2. package/es/badge/Badge.js +4 -3
  3. package/es/badge/index.css +1 -1
  4. package/es/badge/index.d.ts +8 -1
  5. package/es/badge/index.less +22 -1
  6. package/es/calendar/Calendar.d.ts +2 -2
  7. package/es/calendar/index.d.ts +2 -2
  8. package/es/datetime-picker/DatePicker.js +2 -2
  9. package/es/datetime-picker/TimePicker.js +2 -2
  10. package/es/datetime-picker/utils.d.ts +2 -0
  11. package/es/datetime-picker/utils.js +17 -1
  12. package/es/field/Field.js +5 -5
  13. package/es/field/utils.d.ts +2 -0
  14. package/es/field/utils.js +9 -0
  15. package/es/index.d.ts +1 -1
  16. package/es/index.js +1 -1
  17. package/es/pagination/Pagination.js +3 -3
  18. package/es/popup/Popup.d.ts +2 -2
  19. package/es/popup/index.d.ts +2 -2
  20. package/es/toast/Toast.d.ts +2 -2
  21. package/lib/badge/Badge.d.ts +12 -0
  22. package/lib/badge/Badge.js +4 -3
  23. package/lib/badge/index.css +1 -1
  24. package/lib/badge/index.d.ts +8 -1
  25. package/lib/badge/index.less +22 -1
  26. package/lib/calendar/Calendar.d.ts +2 -2
  27. package/lib/calendar/index.d.ts +2 -2
  28. package/lib/datetime-picker/DatePicker.js +1 -1
  29. package/lib/datetime-picker/TimePicker.js +1 -1
  30. package/lib/datetime-picker/utils.d.ts +2 -0
  31. package/lib/datetime-picker/utils.js +22 -3
  32. package/lib/field/Field.js +4 -4
  33. package/lib/field/utils.d.ts +2 -0
  34. package/lib/field/utils.js +13 -0
  35. package/lib/index.css +1 -1
  36. package/lib/index.d.ts +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/pagination/Pagination.js +3 -3
  39. package/lib/popup/Popup.d.ts +2 -2
  40. package/lib/popup/index.d.ts +2 -2
  41. package/lib/toast/Toast.d.ts +2 -2
  42. package/lib/vant.cjs.js +34 -13
  43. package/lib/vant.cjs.min.js +1 -1
  44. package/lib/vant.es.js +34 -13
  45. package/lib/vant.es.min.js +34 -13
  46. package/lib/vant.js +202 -55
  47. package/lib/vant.min.js +1 -1
  48. package/package.json +14 -12
  49. package/vetur/attributes.json +89 -85
  50. package/vetur/tags.json +26 -25
  51. package/vetur/web-types.json +217 -207
package/lib/vant.es.js CHANGED
@@ -476,7 +476,8 @@ var badgeProps = {
476
476
  color: String,
477
477
  offset: Array,
478
478
  content: numericProp,
479
- showZero: truthProp
479
+ showZero: truthProp,
480
+ position: makeStringProp("top-right")
480
481
  };
481
482
  var _Badge = defineComponent({
482
483
  name: name$1t,
@@ -534,10 +535,10 @@ var _Badge = defineComponent({
534
535
  var renderBadge = () => {
535
536
  if (hasContent() || props.dot) {
536
537
  return createVNode("div", {
537
- "class": bem$1p({
538
+ "class": bem$1p([props.position, {
538
539
  dot: props.dot,
539
540
  fixed: !!slots.default
540
- }),
541
+ }]),
541
542
  "style": style.value
542
543
  }, [renderContent()]);
543
544
  }
@@ -2553,6 +2554,12 @@ function mapInputType(type) {
2553
2554
  type
2554
2555
  };
2555
2556
  }
2557
+ function getStringLength(str) {
2558
+ return [...str].length;
2559
+ }
2560
+ function cutString(str, maxlength) {
2561
+ return [...str].slice(0, maxlength).join("");
2562
+ }
2556
2563
  var current = 0;
2557
2564
  function useId() {
2558
2565
  var vm = getCurrentInstance();
@@ -2727,12 +2734,12 @@ var _Field = defineComponent({
2727
2734
  var {
2728
2735
  maxlength
2729
2736
  } = props;
2730
- if (isDef(maxlength) && value.length > maxlength) {
2737
+ if (isDef(maxlength) && getStringLength(value) > maxlength) {
2731
2738
  var modelValue = getModelValue();
2732
- if (modelValue && modelValue.length === +maxlength) {
2739
+ if (modelValue && getStringLength(modelValue) === +maxlength) {
2733
2740
  return modelValue;
2734
2741
  }
2735
- return value.slice(0, +maxlength);
2742
+ return cutString(value, +maxlength);
2736
2743
  }
2737
2744
  return value;
2738
2745
  };
@@ -2896,7 +2903,7 @@ var _Field = defineComponent({
2896
2903
  };
2897
2904
  var renderWordLimit = () => {
2898
2905
  if (props.showWordLimit && props.maxlength) {
2899
- var count = getModelValue().length;
2906
+ var count = getStringLength(getModelValue());
2900
2907
  return createVNode("div", {
2901
2908
  "class": bem$1a("word-limit")
2902
2909
  }, [createVNode("span", {
@@ -4222,6 +4229,20 @@ function getTrueValue(value) {
4222
4229
  return parseInt(value, 10);
4223
4230
  }
4224
4231
  var getMonthEndDay = (year, month) => 32 - new Date(year, month - 1, 32).getDate();
4232
+ var proxyPickerMethods = (picker, callback) => {
4233
+ var methods = ["setValues", "setIndexes", "setColumnIndex", "setColumnValue"];
4234
+ return new Proxy(picker, {
4235
+ get: (target, prop) => {
4236
+ if (methods.includes(prop)) {
4237
+ return function() {
4238
+ target[prop](...arguments);
4239
+ callback();
4240
+ };
4241
+ }
4242
+ return target[prop];
4243
+ }
4244
+ });
4245
+ };
4225
4246
  var useHeight = (element) => {
4226
4247
  var height = ref();
4227
4248
  onMounted(() => nextTick(() => {
@@ -7956,7 +7977,7 @@ var TimePicker = defineComponent({
7956
7977
  }
7957
7978
  });
7958
7979
  useExpose({
7959
- getPicker: () => picker.value
7980
+ getPicker: () => picker.value && proxyPickerMethods(picker.value, updateInnerValue)
7960
7981
  });
7961
7982
  return () => createVNode(Picker, mergeProps({
7962
7983
  "ref": picker,
@@ -8199,7 +8220,7 @@ var DatePicker = defineComponent({
8199
8220
  }
8200
8221
  });
8201
8222
  useExpose({
8202
- getPicker: () => picker.value
8223
+ getPicker: () => picker.value && proxyPickerMethods(picker.value, updateInnerValue)
8203
8224
  });
8204
8225
  return () => createVNode(Picker, mergeProps({
8205
8226
  "ref": picker,
@@ -11639,7 +11660,7 @@ var _Pagination = defineComponent({
11639
11660
  }, [createVNode("button", {
11640
11661
  "type": "button",
11641
11662
  "disabled": disabled,
11642
- "onClick": () => updateModelValue(modelValue - 1)
11663
+ "onClick": () => updateModelValue(modelValue - 1, true)
11643
11664
  }, [slot ? slot() : props.prevText || t$5("prev")])]);
11644
11665
  };
11645
11666
  var renderNextButton = () => {
@@ -11658,7 +11679,7 @@ var _Pagination = defineComponent({
11658
11679
  }, [createVNode("button", {
11659
11680
  "type": "button",
11660
11681
  "disabled": disabled,
11661
- "onClick": () => updateModelValue(modelValue + 1)
11682
+ "onClick": () => updateModelValue(modelValue + 1, true)
11662
11683
  }, [slot ? slot() : props.nextText || t$5("next")])]);
11663
11684
  };
11664
11685
  var renderPages = () => pages.value.map((page) => createVNode("li", {
@@ -11669,7 +11690,7 @@ var _Pagination = defineComponent({
11669
11690
  }, [createVNode("button", {
11670
11691
  "type": "button",
11671
11692
  "aria-current": page.active || void 0,
11672
- "onClick": () => updateModelValue(page.number)
11693
+ "onClick": () => updateModelValue(page.number, true)
11673
11694
  }, [slots.page ? slots.page(page) : page.text])]));
11674
11695
  return () => createVNode("nav", {
11675
11696
  "role": "navigation",
@@ -14308,7 +14329,7 @@ var _Uploader = defineComponent({
14308
14329
  }
14309
14330
  });
14310
14331
  var Uploader = withInstall(_Uploader);
14311
- var version = "3.3.6";
14332
+ var version = "3.3.7";
14312
14333
  function install(app) {
14313
14334
  var components = [ActionBar, ActionBarButton, ActionBarIcon, ActionSheet, AddressEdit, AddressList, Area, Badge, Button, Calendar, Card, Cascader, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ConfigProvider, ContactCard, ContactEdit, ContactList, CountDown, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Divider, DropdownItem, DropdownMenu, Empty, Field, Form, Grid, GridItem, Icon, Image$1, ImagePreview, IndexAnchor, IndexBar, List, Loading, Locale, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, PasswordInput, Picker, Popover, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, ShareSheet, Sidebar, SidebarItem, Skeleton, Slider, Step, Stepper, Steps, Sticky, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader];
14314
14335
  components.forEach((item) => {
@@ -476,7 +476,8 @@ var badgeProps = {
476
476
  color: String,
477
477
  offset: Array,
478
478
  content: numericProp,
479
- showZero: truthProp
479
+ showZero: truthProp,
480
+ position: makeStringProp("top-right")
480
481
  };
481
482
  var _Badge = defineComponent({
482
483
  name: name$1t,
@@ -534,10 +535,10 @@ var _Badge = defineComponent({
534
535
  var renderBadge = () => {
535
536
  if (hasContent() || props.dot) {
536
537
  return createVNode("div", {
537
- "class": bem$1p({
538
+ "class": bem$1p([props.position, {
538
539
  dot: props.dot,
539
540
  fixed: !!slots.default
540
- }),
541
+ }]),
541
542
  "style": style.value
542
543
  }, [renderContent()]);
543
544
  }
@@ -2553,6 +2554,12 @@ function mapInputType(type) {
2553
2554
  type
2554
2555
  };
2555
2556
  }
2557
+ function getStringLength(str) {
2558
+ return [...str].length;
2559
+ }
2560
+ function cutString(str, maxlength) {
2561
+ return [...str].slice(0, maxlength).join("");
2562
+ }
2556
2563
  var current = 0;
2557
2564
  function useId() {
2558
2565
  var vm = getCurrentInstance();
@@ -2727,12 +2734,12 @@ var _Field = defineComponent({
2727
2734
  var {
2728
2735
  maxlength
2729
2736
  } = props;
2730
- if (isDef(maxlength) && value.length > maxlength) {
2737
+ if (isDef(maxlength) && getStringLength(value) > maxlength) {
2731
2738
  var modelValue = getModelValue();
2732
- if (modelValue && modelValue.length === +maxlength) {
2739
+ if (modelValue && getStringLength(modelValue) === +maxlength) {
2733
2740
  return modelValue;
2734
2741
  }
2735
- return value.slice(0, +maxlength);
2742
+ return cutString(value, +maxlength);
2736
2743
  }
2737
2744
  return value;
2738
2745
  };
@@ -2896,7 +2903,7 @@ var _Field = defineComponent({
2896
2903
  };
2897
2904
  var renderWordLimit = () => {
2898
2905
  if (props.showWordLimit && props.maxlength) {
2899
- var count = getModelValue().length;
2906
+ var count = getStringLength(getModelValue());
2900
2907
  return createVNode("div", {
2901
2908
  "class": bem$1a("word-limit")
2902
2909
  }, [createVNode("span", {
@@ -4222,6 +4229,20 @@ function getTrueValue(value) {
4222
4229
  return parseInt(value, 10);
4223
4230
  }
4224
4231
  var getMonthEndDay = (year, month) => 32 - new Date(year, month - 1, 32).getDate();
4232
+ var proxyPickerMethods = (picker, callback) => {
4233
+ var methods = ["setValues", "setIndexes", "setColumnIndex", "setColumnValue"];
4234
+ return new Proxy(picker, {
4235
+ get: (target, prop) => {
4236
+ if (methods.includes(prop)) {
4237
+ return function() {
4238
+ target[prop](...arguments);
4239
+ callback();
4240
+ };
4241
+ }
4242
+ return target[prop];
4243
+ }
4244
+ });
4245
+ };
4225
4246
  var useHeight = (element) => {
4226
4247
  var height = ref();
4227
4248
  onMounted(() => nextTick(() => {
@@ -7956,7 +7977,7 @@ var TimePicker = defineComponent({
7956
7977
  }
7957
7978
  });
7958
7979
  useExpose({
7959
- getPicker: () => picker.value
7980
+ getPicker: () => picker.value && proxyPickerMethods(picker.value, updateInnerValue)
7960
7981
  });
7961
7982
  return () => createVNode(Picker, mergeProps({
7962
7983
  "ref": picker,
@@ -8199,7 +8220,7 @@ var DatePicker = defineComponent({
8199
8220
  }
8200
8221
  });
8201
8222
  useExpose({
8202
- getPicker: () => picker.value
8223
+ getPicker: () => picker.value && proxyPickerMethods(picker.value, updateInnerValue)
8203
8224
  });
8204
8225
  return () => createVNode(Picker, mergeProps({
8205
8226
  "ref": picker,
@@ -11639,7 +11660,7 @@ var _Pagination = defineComponent({
11639
11660
  }, [createVNode("button", {
11640
11661
  "type": "button",
11641
11662
  "disabled": disabled,
11642
- "onClick": () => updateModelValue(modelValue - 1)
11663
+ "onClick": () => updateModelValue(modelValue - 1, true)
11643
11664
  }, [slot ? slot() : props.prevText || t$5("prev")])]);
11644
11665
  };
11645
11666
  var renderNextButton = () => {
@@ -11658,7 +11679,7 @@ var _Pagination = defineComponent({
11658
11679
  }, [createVNode("button", {
11659
11680
  "type": "button",
11660
11681
  "disabled": disabled,
11661
- "onClick": () => updateModelValue(modelValue + 1)
11682
+ "onClick": () => updateModelValue(modelValue + 1, true)
11662
11683
  }, [slot ? slot() : props.nextText || t$5("next")])]);
11663
11684
  };
11664
11685
  var renderPages = () => pages.value.map((page) => createVNode("li", {
@@ -11669,7 +11690,7 @@ var _Pagination = defineComponent({
11669
11690
  }, [createVNode("button", {
11670
11691
  "type": "button",
11671
11692
  "aria-current": page.active || void 0,
11672
- "onClick": () => updateModelValue(page.number)
11693
+ "onClick": () => updateModelValue(page.number, true)
11673
11694
  }, [slots.page ? slots.page(page) : page.text])]));
11674
11695
  return () => createVNode("nav", {
11675
11696
  "role": "navigation",
@@ -14308,7 +14329,7 @@ var _Uploader = defineComponent({
14308
14329
  }
14309
14330
  });
14310
14331
  var Uploader = withInstall(_Uploader);
14311
- var version = "3.3.6";
14332
+ var version = "3.3.7";
14312
14333
  function install(app) {
14313
14334
  var components = [ActionBar, ActionBarButton, ActionBarIcon, ActionSheet, AddressEdit, AddressList, Area, Badge, Button, Calendar, Card, Cascader, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ConfigProvider, ContactCard, ContactEdit, ContactList, CountDown, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Divider, DropdownItem, DropdownMenu, Empty, Field, Form, Grid, GridItem, Icon, Image$1, ImagePreview, IndexAnchor, IndexBar, List, Loading, Locale, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, PasswordInput, Picker, Popover, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, ShareSheet, Sidebar, SidebarItem, Skeleton, Slider, Step, Stepper, Steps, Sticky, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader];
14314
14335
  components.forEach((item) => {