vant 4.0.0-rc.8 → 4.0.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.
package/lib/index.d.ts CHANGED
@@ -94,4 +94,4 @@ declare namespace _default {
94
94
  }
95
95
  export default _default;
96
96
  export function install(app: any): void;
97
- export const version: "4.0.0-rc.8";
97
+ export const version: "4.0.0";
package/lib/index.js CHANGED
@@ -202,7 +202,7 @@ __reExport(stdin_exports, require("./time-picker"), module.exports);
202
202
  __reExport(stdin_exports, require("./toast"), module.exports);
203
203
  __reExport(stdin_exports, require("./tree-select"), module.exports);
204
204
  __reExport(stdin_exports, require("./uploader"), module.exports);
205
- const version = "4.0.0-rc.8";
205
+ const version = "4.0.0";
206
206
  function install(app) {
207
207
  const components = [
208
208
  import_action_bar.ActionBar,
@@ -7,6 +7,7 @@ export declare const listProps: {
7
7
  default: number;
8
8
  };
9
9
  loading: BooleanConstructor;
10
+ disabled: BooleanConstructor;
10
11
  finished: BooleanConstructor;
11
12
  errorText: StringConstructor;
12
13
  direction: {
@@ -28,6 +29,7 @@ declare const _default: import("vue").DefineComponent<{
28
29
  default: number;
29
30
  };
30
31
  loading: BooleanConstructor;
32
+ disabled: BooleanConstructor;
31
33
  finished: BooleanConstructor;
32
34
  errorText: StringConstructor;
33
35
  direction: {
@@ -47,6 +49,7 @@ declare const _default: import("vue").DefineComponent<{
47
49
  default: number;
48
50
  };
49
51
  loading: BooleanConstructor;
52
+ disabled: BooleanConstructor;
50
53
  finished: BooleanConstructor;
51
54
  errorText: StringConstructor;
52
55
  direction: {
@@ -65,6 +68,7 @@ declare const _default: import("vue").DefineComponent<{
65
68
  "onUpdate:loading"?: ((...args: any[]) => any) | undefined;
66
69
  }, {
67
70
  offset: string | number;
71
+ disabled: boolean;
68
72
  error: boolean;
69
73
  loading: boolean;
70
74
  direction: ListDirection;
package/lib/list/List.js CHANGED
@@ -33,6 +33,7 @@ const listProps = {
33
33
  error: Boolean,
34
34
  offset: (0, import_utils.makeNumericProp)(300),
35
35
  loading: Boolean,
36
+ disabled: Boolean,
36
37
  finished: Boolean,
37
38
  errorText: String,
38
39
  direction: (0, import_utils.makeStringProp)("down"),
@@ -55,7 +56,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
55
56
  const scrollParent = (0, import_use.useScrollParent)(root);
56
57
  const check = () => {
57
58
  (0, import_vue2.nextTick)(() => {
58
- if (loading.value || props.finished || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
59
+ if (loading.value || props.finished || props.disabled || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
59
60
  return;
60
61
  }
61
62
  const {
@@ -108,7 +109,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
108
109
  }
109
110
  };
110
111
  const renderLoading = () => {
111
- if (loading.value && !props.finished) {
112
+ if (loading.value && !props.finished && !props.disabled) {
112
113
  return (0, import_vue.createVNode)("div", {
113
114
  "class": bem("loading")
114
115
  }, [slots.loading ? slots.loading() : (0, import_vue.createVNode)(import_loading.Loading, {
@@ -6,6 +6,7 @@ export declare const List: import("../utils").WithInstall<import("vue").DefineCo
6
6
  default: number;
7
7
  };
8
8
  loading: BooleanConstructor;
9
+ disabled: BooleanConstructor;
9
10
  finished: BooleanConstructor;
10
11
  errorText: StringConstructor;
11
12
  direction: {
@@ -25,6 +26,7 @@ export declare const List: import("../utils").WithInstall<import("vue").DefineCo
25
26
  default: number;
26
27
  };
27
28
  loading: BooleanConstructor;
29
+ disabled: BooleanConstructor;
28
30
  finished: BooleanConstructor;
29
31
  errorText: StringConstructor;
30
32
  direction: {
@@ -43,6 +45,7 @@ export declare const List: import("../utils").WithInstall<import("vue").DefineCo
43
45
  "onUpdate:loading"?: ((...args: any[]) => any) | undefined;
44
46
  }, {
45
47
  offset: string | number;
48
+ disabled: boolean;
46
49
  error: boolean;
47
50
  loading: boolean;
48
51
  direction: import("./types").ListDirection;
@@ -1 +1 @@
1
- :root{--van-black: #000;--van-white: #fff;--van-gray-1: #f7f8fa;--van-gray-2: #f2f3f5;--van-gray-3: #ebedf0;--van-gray-4: #dcdee0;--van-gray-5: #c8c9cc;--van-gray-6: #969799;--van-gray-7: #646566;--van-gray-8: #323233;--van-red: #ee0a24;--van-blue: #1989fa;--van-orange: #ff976a;--van-orange-dark: #ed6a0c;--van-orange-light: #fffbe8;--van-green: #07c160;--van-gradient-red: linear-gradient(to right, #ff6034, #ee0a24);--van-gradient-orange: linear-gradient(to right, #ffd01e, #ff8917);--van-primary-color: var(--van-blue);--van-success-color: var(--van-green);--van-danger-color: var(--van-red);--van-warning-color: var(--van-orange);--van-text-color: var(--van-gray-8);--van-text-color-2: var(--van-gray-6);--van-text-color-3: var(--van-gray-5);--van-link-color: #576b95;--van-active-color: var(--van-gray-2);--van-active-opacity: .6;--van-disabled-opacity: .5;--van-background: var(--van-gray-1);--van-background-2: var(--van-white);--van-background-3: var(--van-white);--van-padding-base: 4px;--van-padding-xs: 8px;--van-padding-sm: 12px;--van-padding-md: 16px;--van-padding-lg: 24px;--van-padding-xl: 32px;--van-font-bold: 600;--van-font-size-xs: 10px;--van-font-size-sm: 12px;--van-font-size-md: 14px;--van-font-size-lg: 16px;--van-line-height-xs: 14px;--van-line-height-sm: 18px;--van-line-height-md: 20px;--van-line-height-lg: 22px;--van-base-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Segoe UI, Arial, Roboto, "PingFang SC", "miui", "Hiragino Sans GB", "Microsoft Yahei", sans-serif;--van-price-font: avenir-heavy, "PingFang SC", helvetica neue, arial, sans-serif;--van-duration-base: .3s;--van-duration-fast: .2s;--van-ease-out: ease-out;--van-ease-in: ease-in;--van-border-color: var(--van-gray-3);--van-border-width: 1px;--van-radius-sm: 2px;--van-radius-md: 4px;--van-radius-lg: 8px;--van-radius-max: 999px}.van-theme-dark{--van-text-color: #f5f5f5;--van-text-color-2: #707070;--van-text-color-3: #4d4d4d;--van-border-color: #3a3a3c;--van-active-color: #3a3a3c;--van-background: #000;--van-background-2: #1c1c1e;--van-background-3: #37363b}html{-webkit-tap-highlight-color:transparent}:root{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}@keyframes van-slide-up-enter{0%{transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{transform:translate3d(0,100%,0)}}@keyframes van-slide-down-enter{0%{transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{transform:translate3d(0,-100%,0)}}@keyframes van-slide-left-enter{0%{transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{transform:translate3d(-100%,0,0)}}@keyframes van-slide-right-enter{0%{transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{transform:translate3d(100%,0,0)}}@keyframes van-fade-in{0%{opacity:0}to{opacity:1}}@keyframes van-fade-out{0%{opacity:1}to{opacity:0}}@keyframes van-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.van-fade-enter-active{animation:var(--van-duration-base) van-fade-in both var(--van-ease-out)}.van-fade-leave-active{animation:var(--van-duration-base) van-fade-out both var(--van-ease-in)}.van-slide-up-enter-active{animation:van-slide-up-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-up-leave-active{animation:van-slide-up-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-down-enter-active{animation:van-slide-down-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-down-leave-active{animation:van-slide-down-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-left-enter-active{animation:van-slide-left-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-left-leave-active{animation:van-slide-left-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-right-enter-active{animation:van-slide-right-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-right-leave-active{animation:van-slide-right-leave var(--van-duration-base) both var(--van-ease-in)}.van-clearfix:after{display:table;clear:both;content:""}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}.van-safe-area-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-safe-area-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-haptics-feedback{cursor:pointer}.van-haptics-feedback:active{opacity:var(--van-active-opacity)}[class*=van-hairline]:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--van-border-color);transform:scale(.5)}.van-hairline,.van-hairline--top,.van-hairline--left,.van-hairline--right,.van-hairline--bottom,.van-hairline--surround,.van-hairline--top-bottom{position:relative}.van-hairline--top:after{border-top-width:var(--van-border-width)}.van-hairline--left:after{border-left-width:var(--van-border-width)}.van-hairline--right:after{border-right-width:var(--van-border-width)}.van-hairline--bottom:after{border-bottom-width:var(--van-border-width)}.van-hairline--top-bottom:after,.van-hairline-unset--top-bottom:after{border-width:var(--van-border-width) 0}.van-hairline--surround:after{border-width:var(--van-border-width)}
1
+ :root{--van-black: #000;--van-white: #fff;--van-gray-1: #f7f8fa;--van-gray-2: #f2f3f5;--van-gray-3: #ebedf0;--van-gray-4: #dcdee0;--van-gray-5: #c8c9cc;--van-gray-6: #969799;--van-gray-7: #646566;--van-gray-8: #323233;--van-red: #ee0a24;--van-blue: #1989fa;--van-orange: #ff976a;--van-orange-dark: #ed6a0c;--van-orange-light: #fffbe8;--van-green: #07c160;--van-gradient-red: linear-gradient(to right, #ff6034, #ee0a24);--van-gradient-orange: linear-gradient(to right, #ffd01e, #ff8917);--van-primary-color: var(--van-blue);--van-success-color: var(--van-green);--van-danger-color: var(--van-red);--van-warning-color: var(--van-orange);--van-text-color: var(--van-gray-8);--van-text-color-2: var(--van-gray-6);--van-text-color-3: var(--van-gray-5);--van-link-color: #576b95;--van-active-color: var(--van-gray-2);--van-active-opacity: .6;--van-disabled-opacity: .5;--van-background: var(--van-gray-1);--van-background-2: var(--van-white);--van-background-3: var(--van-white);--van-padding-base: 4px;--van-padding-xs: 8px;--van-padding-sm: 12px;--van-padding-md: 16px;--van-padding-lg: 24px;--van-padding-xl: 32px;--van-font-bold: 600;--van-font-size-xs: 10px;--van-font-size-sm: 12px;--van-font-size-md: 14px;--van-font-size-lg: 16px;--van-line-height-xs: 14px;--van-line-height-sm: 18px;--van-line-height-md: 20px;--van-line-height-lg: 22px;--van-base-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Segoe UI, Arial, Roboto, "PingFang SC", "miui", "Hiragino Sans GB", "Microsoft Yahei", sans-serif;--van-price-font: avenir-heavy, "PingFang SC", helvetica neue, arial, sans-serif;--van-duration-base: .3s;--van-duration-fast: .2s;--van-ease-out: ease-out;--van-ease-in: ease-in;--van-border-color: var(--van-gray-3);--van-border-width: 1px;--van-radius-sm: 2px;--van-radius-md: 4px;--van-radius-lg: 8px;--van-radius-max: 999px}.van-theme-dark{--van-text-color: #f5f5f5;--van-text-color-2: #707070;--van-text-color-3: #4d4d4d;--van-border-color: #3a3a3c;--van-active-color: #3a3a3c;--van-background: #000;--van-background-2: #1c1c1e;--van-background-3: #37363b}html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}@keyframes van-slide-up-enter{0%{transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{transform:translate3d(0,100%,0)}}@keyframes van-slide-down-enter{0%{transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{transform:translate3d(0,-100%,0)}}@keyframes van-slide-left-enter{0%{transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{transform:translate3d(-100%,0,0)}}@keyframes van-slide-right-enter{0%{transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{transform:translate3d(100%,0,0)}}@keyframes van-fade-in{0%{opacity:0}to{opacity:1}}@keyframes van-fade-out{0%{opacity:1}to{opacity:0}}@keyframes van-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.van-fade-enter-active{animation:var(--van-duration-base) van-fade-in both var(--van-ease-out)}.van-fade-leave-active{animation:var(--van-duration-base) van-fade-out both var(--van-ease-in)}.van-slide-up-enter-active{animation:van-slide-up-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-up-leave-active{animation:van-slide-up-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-down-enter-active{animation:van-slide-down-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-down-leave-active{animation:van-slide-down-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-left-enter-active{animation:van-slide-left-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-left-leave-active{animation:van-slide-left-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-right-enter-active{animation:van-slide-right-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-right-leave-active{animation:van-slide-right-leave var(--van-duration-base) both var(--van-ease-in)}.van-clearfix:after{display:table;clear:both;content:""}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}.van-safe-area-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-safe-area-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-haptics-feedback{cursor:pointer}.van-haptics-feedback:active{opacity:var(--van-active-opacity)}[class*=van-hairline]:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--van-border-color);transform:scale(.5)}.van-hairline,.van-hairline--top,.van-hairline--left,.van-hairline--right,.van-hairline--bottom,.van-hairline--surround,.van-hairline--top-bottom{position:relative}.van-hairline--top:after{border-top-width:var(--van-border-width)}.van-hairline--left:after{border-left-width:var(--van-border-width)}.van-hairline--right:after{border-right-width:var(--van-border-width)}.van-hairline--bottom:after{border-bottom-width:var(--van-border-width)}.van-hairline--top-bottom:after,.van-hairline-unset--top-bottom:after{border-width:var(--van-border-width) 0}.van-hairline--surround:after{border-width:var(--van-border-width)}
@@ -1 +1 @@
1
- html{-webkit-tap-highlight-color:transparent}:root{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}
1
+ html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}
package/lib/vant.cjs.js CHANGED
@@ -3509,7 +3509,7 @@ var stdin_default$1l = vue.defineComponent({
3509
3509
  return slots["right-icon"]();
3510
3510
  }
3511
3511
  if (props.isLink) {
3512
- const name2 = props.arrowDirection ? `arrow-${props.arrowDirection}` : "arrow";
3512
+ const name2 = props.arrowDirection && props.arrowDirection !== "right" ? `arrow-${props.arrowDirection}` : "arrow";
3513
3513
  return vue.createVNode(Icon, {
3514
3514
  "name": name2,
3515
3515
  "class": bem$1a("right-icon")
@@ -3983,7 +3983,12 @@ var stdin_default$1j = vue.defineComponent({
3983
3983
  value = props.formatter(value);
3984
3984
  }
3985
3985
  if (inputRef.value && inputRef.value.value !== value) {
3986
+ const {
3987
+ selectionStart,
3988
+ selectionEnd
3989
+ } = inputRef.value;
3986
3990
  inputRef.value.value = value;
3991
+ inputRef.value.setSelectionRange(selectionStart, selectionEnd);
3987
3992
  }
3988
3993
  if (value !== props.modelValue) {
3989
3994
  emit("update:modelValue", value);
@@ -5501,10 +5506,10 @@ class ImageCache {
5501
5506
  }
5502
5507
  const [name$12, bem$_] = createNamespace("back-top");
5503
5508
  const backTopProps = {
5504
- right: makeNumericProp(30),
5505
- bottom: makeNumericProp(40),
5509
+ right: numericProp,
5510
+ bottom: numericProp,
5506
5511
  target: [String, Object],
5507
- visibilityHeight: makeNumericProp(200),
5512
+ offset: makeNumericProp(200),
5508
5513
  teleport: {
5509
5514
  type: [String, Object],
5510
5515
  default: "body"
@@ -5521,50 +5526,52 @@ var stdin_default$18 = vue.defineComponent({
5521
5526
  attrs
5522
5527
  }) {
5523
5528
  const show = vue.ref(false);
5529
+ const root = vue.ref();
5524
5530
  const scrollParent = vue.ref();
5525
- const root = vue.ref(null);
5526
- let target;
5527
5531
  const style = vue.computed(() => ({
5528
5532
  right: addUnit(props.right),
5529
5533
  bottom: addUnit(props.bottom)
5530
5534
  }));
5531
5535
  const onClick = (event) => {
5536
+ var _a;
5532
5537
  emit("click", event);
5533
- target.scrollTo({
5538
+ (_a = scrollParent.value) == null ? void 0 : _a.scrollTo({
5534
5539
  top: 0,
5535
5540
  behavior: "smooth"
5536
5541
  });
5537
5542
  };
5538
5543
  const scroll = () => {
5539
- show.value = getScrollTop(target) >= props.visibilityHeight;
5544
+ show.value = scrollParent.value ? getScrollTop(scrollParent.value) >= props.offset : false;
5540
5545
  };
5541
5546
  const getTarget = () => {
5542
5547
  const {
5543
- target: target2
5548
+ target
5544
5549
  } = props;
5545
- if (typeof target2 === "string") {
5546
- const el = document.querySelector(props.target);
5547
- if (!el) {
5548
- throw Error("[Vant] BackTop: target element is not found.");
5550
+ if (typeof target === "string") {
5551
+ const el = document.querySelector(target);
5552
+ if (el) {
5553
+ return el;
5549
5554
  }
5550
- return el;
5555
+ if (process.env.NODE_ENV !== "production") {
5556
+ console.error(`[Vant] BackTop: target element "${target}" was not found, the BackTop component will not be rendered.`);
5557
+ }
5558
+ } else {
5559
+ return target;
5551
5560
  }
5552
- if (isObject(target2)) {
5553
- return target2;
5561
+ };
5562
+ const updateTarget = () => {
5563
+ if (inBrowser) {
5564
+ vue.nextTick(() => {
5565
+ scrollParent.value = props.target ? getTarget() : use.getScrollParent(root.value);
5566
+ scroll();
5567
+ });
5554
5568
  }
5555
- throw Error('[Vant] BackTop: type of prop "target" should be a selector or an element object');
5556
5569
  };
5557
- use.useEventListener("scroll", throttle(scroll, 300), {
5570
+ use.useEventListener("scroll", throttle(scroll, 100), {
5558
5571
  target: scrollParent
5559
5572
  });
5560
- vue.onMounted(() => {
5561
- vue.nextTick(() => {
5562
- if (inBrowser) {
5563
- target = props.target ? getTarget() : use.getScrollParent(root.value);
5564
- scrollParent.value = target;
5565
- }
5566
- });
5567
- });
5573
+ vue.onMounted(updateTarget);
5574
+ vue.watch(() => props.target, updateTarget);
5568
5575
  return () => {
5569
5576
  const Content = vue.createVNode("div", vue.mergeProps({
5570
5577
  "ref": root,
@@ -10186,6 +10193,7 @@ const listProps = {
10186
10193
  error: Boolean,
10187
10194
  offset: makeNumericProp(300),
10188
10195
  loading: Boolean,
10196
+ disabled: Boolean,
10189
10197
  finished: Boolean,
10190
10198
  errorText: String,
10191
10199
  direction: makeStringProp("down"),
@@ -10208,7 +10216,7 @@ var stdin_default$B = vue.defineComponent({
10208
10216
  const scrollParent = use.useScrollParent(root);
10209
10217
  const check = () => {
10210
10218
  vue.nextTick(() => {
10211
- if (loading.value || props.finished || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10219
+ if (loading.value || props.finished || props.disabled || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10212
10220
  return;
10213
10221
  }
10214
10222
  const {
@@ -10261,7 +10269,7 @@ var stdin_default$B = vue.defineComponent({
10261
10269
  }
10262
10270
  };
10263
10271
  const renderLoading = () => {
10264
- if (loading.value && !props.finished) {
10272
+ if (loading.value && !props.finished && !props.disabled) {
10265
10273
  return vue.createVNode("div", {
10266
10274
  "class": bem$v("loading")
10267
10275
  }, [slots.loading ? slots.loading() : vue.createVNode(Loading, {
@@ -14809,7 +14817,7 @@ const Lazyload = {
14809
14817
  });
14810
14818
  }
14811
14819
  };
14812
- const version = "4.0.0-rc.8";
14820
+ const version = "4.0.0";
14813
14821
  function install(app) {
14814
14822
  const components = [
14815
14823
  ActionBar,
package/lib/vant.es.js CHANGED
@@ -3507,7 +3507,7 @@ var stdin_default$1l = defineComponent({
3507
3507
  return slots["right-icon"]();
3508
3508
  }
3509
3509
  if (props.isLink) {
3510
- const name2 = props.arrowDirection ? `arrow-${props.arrowDirection}` : "arrow";
3510
+ const name2 = props.arrowDirection && props.arrowDirection !== "right" ? `arrow-${props.arrowDirection}` : "arrow";
3511
3511
  return createVNode(Icon, {
3512
3512
  "name": name2,
3513
3513
  "class": bem$1a("right-icon")
@@ -3981,7 +3981,12 @@ var stdin_default$1j = defineComponent({
3981
3981
  value = props.formatter(value);
3982
3982
  }
3983
3983
  if (inputRef.value && inputRef.value.value !== value) {
3984
+ const {
3985
+ selectionStart,
3986
+ selectionEnd
3987
+ } = inputRef.value;
3984
3988
  inputRef.value.value = value;
3989
+ inputRef.value.setSelectionRange(selectionStart, selectionEnd);
3985
3990
  }
3986
3991
  if (value !== props.modelValue) {
3987
3992
  emit("update:modelValue", value);
@@ -5499,10 +5504,10 @@ class ImageCache {
5499
5504
  }
5500
5505
  const [name$12, bem$_] = createNamespace("back-top");
5501
5506
  const backTopProps = {
5502
- right: makeNumericProp(30),
5503
- bottom: makeNumericProp(40),
5507
+ right: numericProp,
5508
+ bottom: numericProp,
5504
5509
  target: [String, Object],
5505
- visibilityHeight: makeNumericProp(200),
5510
+ offset: makeNumericProp(200),
5506
5511
  teleport: {
5507
5512
  type: [String, Object],
5508
5513
  default: "body"
@@ -5519,50 +5524,52 @@ var stdin_default$18 = defineComponent({
5519
5524
  attrs
5520
5525
  }) {
5521
5526
  const show = ref(false);
5527
+ const root = ref();
5522
5528
  const scrollParent = ref();
5523
- const root = ref(null);
5524
- let target;
5525
5529
  const style = computed(() => ({
5526
5530
  right: addUnit(props.right),
5527
5531
  bottom: addUnit(props.bottom)
5528
5532
  }));
5529
5533
  const onClick = (event) => {
5534
+ var _a;
5530
5535
  emit("click", event);
5531
- target.scrollTo({
5536
+ (_a = scrollParent.value) == null ? void 0 : _a.scrollTo({
5532
5537
  top: 0,
5533
5538
  behavior: "smooth"
5534
5539
  });
5535
5540
  };
5536
5541
  const scroll = () => {
5537
- show.value = getScrollTop(target) >= props.visibilityHeight;
5542
+ show.value = scrollParent.value ? getScrollTop(scrollParent.value) >= props.offset : false;
5538
5543
  };
5539
5544
  const getTarget = () => {
5540
5545
  const {
5541
- target: target2
5546
+ target
5542
5547
  } = props;
5543
- if (typeof target2 === "string") {
5544
- const el = document.querySelector(props.target);
5545
- if (!el) {
5546
- throw Error("[Vant] BackTop: target element is not found.");
5548
+ if (typeof target === "string") {
5549
+ const el = document.querySelector(target);
5550
+ if (el) {
5551
+ return el;
5547
5552
  }
5548
- return el;
5553
+ if (process.env.NODE_ENV !== "production") {
5554
+ console.error(`[Vant] BackTop: target element "${target}" was not found, the BackTop component will not be rendered.`);
5555
+ }
5556
+ } else {
5557
+ return target;
5549
5558
  }
5550
- if (isObject(target2)) {
5551
- return target2;
5559
+ };
5560
+ const updateTarget = () => {
5561
+ if (inBrowser) {
5562
+ nextTick(() => {
5563
+ scrollParent.value = props.target ? getTarget() : getScrollParent(root.value);
5564
+ scroll();
5565
+ });
5552
5566
  }
5553
- throw Error('[Vant] BackTop: type of prop "target" should be a selector or an element object');
5554
5567
  };
5555
- useEventListener("scroll", throttle(scroll, 300), {
5568
+ useEventListener("scroll", throttle(scroll, 100), {
5556
5569
  target: scrollParent
5557
5570
  });
5558
- onMounted(() => {
5559
- nextTick(() => {
5560
- if (inBrowser) {
5561
- target = props.target ? getTarget() : getScrollParent(root.value);
5562
- scrollParent.value = target;
5563
- }
5564
- });
5565
- });
5571
+ onMounted(updateTarget);
5572
+ watch(() => props.target, updateTarget);
5566
5573
  return () => {
5567
5574
  const Content = createVNode("div", mergeProps({
5568
5575
  "ref": root,
@@ -10184,6 +10191,7 @@ const listProps = {
10184
10191
  error: Boolean,
10185
10192
  offset: makeNumericProp(300),
10186
10193
  loading: Boolean,
10194
+ disabled: Boolean,
10187
10195
  finished: Boolean,
10188
10196
  errorText: String,
10189
10197
  direction: makeStringProp("down"),
@@ -10206,7 +10214,7 @@ var stdin_default$B = defineComponent({
10206
10214
  const scrollParent = useScrollParent(root);
10207
10215
  const check = () => {
10208
10216
  nextTick(() => {
10209
- if (loading.value || props.finished || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10217
+ if (loading.value || props.finished || props.disabled || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10210
10218
  return;
10211
10219
  }
10212
10220
  const {
@@ -10259,7 +10267,7 @@ var stdin_default$B = defineComponent({
10259
10267
  }
10260
10268
  };
10261
10269
  const renderLoading = () => {
10262
- if (loading.value && !props.finished) {
10270
+ if (loading.value && !props.finished && !props.disabled) {
10263
10271
  return createVNode("div", {
10264
10272
  "class": bem$v("loading")
10265
10273
  }, [slots.loading ? slots.loading() : createVNode(Loading, {
@@ -14807,7 +14815,7 @@ const Lazyload = {
14807
14815
  });
14808
14816
  }
14809
14817
  };
14810
- const version = "4.0.0-rc.8";
14818
+ const version = "4.0.0";
14811
14819
  function install(app) {
14812
14820
  const components = [
14813
14821
  ActionBar,
package/lib/vant.js CHANGED
@@ -3867,7 +3867,7 @@
3867
3867
  return slots["right-icon"]();
3868
3868
  }
3869
3869
  if (props.isLink) {
3870
- const name2 = props.arrowDirection ? `arrow-${props.arrowDirection}` : "arrow";
3870
+ const name2 = props.arrowDirection && props.arrowDirection !== "right" ? `arrow-${props.arrowDirection}` : "arrow";
3871
3871
  return vue.createVNode(Icon, {
3872
3872
  "name": name2,
3873
3873
  "class": bem$1a("right-icon")
@@ -4341,7 +4341,12 @@
4341
4341
  value = props.formatter(value);
4342
4342
  }
4343
4343
  if (inputRef.value && inputRef.value.value !== value) {
4344
+ const {
4345
+ selectionStart,
4346
+ selectionEnd
4347
+ } = inputRef.value;
4344
4348
  inputRef.value.value = value;
4349
+ inputRef.value.setSelectionRange(selectionStart, selectionEnd);
4345
4350
  }
4346
4351
  if (value !== props.modelValue) {
4347
4352
  emit("update:modelValue", value);
@@ -5859,10 +5864,10 @@
5859
5864
  }
5860
5865
  const [name$12, bem$_] = createNamespace("back-top");
5861
5866
  const backTopProps = {
5862
- right: makeNumericProp(30),
5863
- bottom: makeNumericProp(40),
5867
+ right: numericProp,
5868
+ bottom: numericProp,
5864
5869
  target: [String, Object],
5865
- visibilityHeight: makeNumericProp(200),
5870
+ offset: makeNumericProp(200),
5866
5871
  teleport: {
5867
5872
  type: [String, Object],
5868
5873
  default: "body"
@@ -5879,50 +5884,49 @@
5879
5884
  attrs
5880
5885
  }) {
5881
5886
  const show = vue.ref(false);
5887
+ const root = vue.ref();
5882
5888
  const scrollParent = vue.ref();
5883
- const root = vue.ref(null);
5884
- let target;
5885
5889
  const style = vue.computed(() => ({
5886
5890
  right: addUnit(props.right),
5887
5891
  bottom: addUnit(props.bottom)
5888
5892
  }));
5889
5893
  const onClick = (event) => {
5894
+ var _a;
5890
5895
  emit("click", event);
5891
- target.scrollTo({
5896
+ (_a = scrollParent.value) == null ? void 0 : _a.scrollTo({
5892
5897
  top: 0,
5893
5898
  behavior: "smooth"
5894
5899
  });
5895
5900
  };
5896
5901
  const scroll = () => {
5897
- show.value = getScrollTop(target) >= props.visibilityHeight;
5902
+ show.value = scrollParent.value ? getScrollTop(scrollParent.value) >= props.offset : false;
5898
5903
  };
5899
5904
  const getTarget = () => {
5900
5905
  const {
5901
- target: target2
5906
+ target
5902
5907
  } = props;
5903
- if (typeof target2 === "string") {
5904
- const el = document.querySelector(props.target);
5905
- if (!el) {
5906
- throw Error("[Vant] BackTop: target element is not found.");
5908
+ if (typeof target === "string") {
5909
+ const el = document.querySelector(target);
5910
+ if (el) {
5911
+ return el;
5907
5912
  }
5908
- return el;
5913
+ } else {
5914
+ return target;
5909
5915
  }
5910
- if (isObject(target2)) {
5911
- return target2;
5916
+ };
5917
+ const updateTarget = () => {
5918
+ if (inBrowser$1) {
5919
+ vue.nextTick(() => {
5920
+ scrollParent.value = props.target ? getTarget() : getScrollParent$1(root.value);
5921
+ scroll();
5922
+ });
5912
5923
  }
5913
- throw Error('[Vant] BackTop: type of prop "target" should be a selector or an element object');
5914
5924
  };
5915
- useEventListener("scroll", throttle(scroll, 300), {
5925
+ useEventListener("scroll", throttle(scroll, 100), {
5916
5926
  target: scrollParent
5917
5927
  });
5918
- vue.onMounted(() => {
5919
- vue.nextTick(() => {
5920
- if (inBrowser$1) {
5921
- target = props.target ? getTarget() : getScrollParent$1(root.value);
5922
- scrollParent.value = target;
5923
- }
5924
- });
5925
- });
5928
+ vue.onMounted(updateTarget);
5929
+ vue.watch(() => props.target, updateTarget);
5926
5930
  return () => {
5927
5931
  const Content = vue.createVNode("div", vue.mergeProps({
5928
5932
  "ref": root,
@@ -10515,6 +10519,7 @@
10515
10519
  error: Boolean,
10516
10520
  offset: makeNumericProp(300),
10517
10521
  loading: Boolean,
10522
+ disabled: Boolean,
10518
10523
  finished: Boolean,
10519
10524
  errorText: String,
10520
10525
  direction: makeStringProp("down"),
@@ -10537,7 +10542,7 @@
10537
10542
  const scrollParent = useScrollParent(root);
10538
10543
  const check = () => {
10539
10544
  vue.nextTick(() => {
10540
- if (loading.value || props.finished || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10545
+ if (loading.value || props.finished || props.disabled || props.error || (tabStatus == null ? void 0 : tabStatus.value) === false) {
10541
10546
  return;
10542
10547
  }
10543
10548
  const {
@@ -10590,7 +10595,7 @@
10590
10595
  }
10591
10596
  };
10592
10597
  const renderLoading = () => {
10593
- if (loading.value && !props.finished) {
10598
+ if (loading.value && !props.finished && !props.disabled) {
10594
10599
  return vue.createVNode("div", {
10595
10600
  "class": bem$v("loading")
10596
10601
  }, [slots.loading ? slots.loading() : vue.createVNode(Loading, {
@@ -16018,7 +16023,7 @@
16018
16023
  });
16019
16024
  }
16020
16025
  };
16021
- const version = "4.0.0-rc.8";
16026
+ const version = "4.0.0";
16022
16027
  function install(app) {
16023
16028
  const components = [
16024
16029
  ActionBar,