vant 4.0.10 → 4.0.11

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
@@ -98,4 +98,4 @@ declare namespace _default {
98
98
  }
99
99
  export default _default;
100
100
  export function install(app: any): void;
101
- export const version: "4.0.10";
101
+ export const version: "4.0.11";
package/lib/index.js CHANGED
@@ -210,7 +210,7 @@ __reExport(stdin_exports, require("./time-picker"), module.exports);
210
210
  __reExport(stdin_exports, require("./toast"), module.exports);
211
211
  __reExport(stdin_exports, require("./tree-select"), module.exports);
212
212
  __reExport(stdin_exports, require("./uploader"), module.exports);
213
- const version = "4.0.10";
213
+ const version = "4.0.11";
214
214
  function install(app) {
215
215
  const components = [
216
216
  import_action_bar.ActionBar,
@@ -177,7 +177,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
177
177
  class: "van-ellipsis",
178
178
  [props.allowHtml ? "innerHTML" : "textContent"]: text
179
179
  };
180
- return (0, import_vue.createVNode)("li", data, [slots.option ? slots.option(option) : (0, import_vue.createVNode)("div", childData, null)]);
180
+ return (0, import_vue.createVNode)("li", data, [slots.option ? slots.option(option, index) : (0, import_vue.createVNode)("div", childData, null)]);
181
181
  });
182
182
  };
183
183
  (0, import_use.useParent)(PICKER_KEY);
@@ -76,12 +76,13 @@ var stdin_default = (0, import_vue2.defineComponent)({
76
76
  "confirmButtonText": confirmButtonText,
77
77
  "onConfirm": onConfirm,
78
78
  "onCancel": onCancel
79
- }, null), (0, import_vue.createVNode)(import_tabs.Tabs, {
79
+ }, (0, import_utils.pick)(slots, import_PickerToolbar.pickerToolbarSlots)), (0, import_vue.createVNode)(import_tabs.Tabs, {
80
80
  "active": activeTab.value,
81
81
  "onUpdate:active": ($event) => activeTab.value = $event,
82
82
  "class": bem("tabs"),
83
83
  "shrink": true,
84
- "animated": true
84
+ "animated": true,
85
+ "lazyRender": false
85
86
  }, {
86
87
  default: () => [props.tabs.map((title, index) => (0, import_vue.createVNode)(import_tab.Tab, {
87
88
  "title": title,
@@ -96,6 +96,10 @@ var stdin_default = (0, import_vue2.defineComponent)({
96
96
  }
97
97
  if (!popper) {
98
98
  popper = createPopperInstance();
99
+ if (import_utils.inBrowser) {
100
+ window.addEventListener("animationend", updateLocation);
101
+ window.addEventListener("transitionend", updateLocation);
102
+ }
99
103
  } else {
100
104
  popper.setOptions(getPopoverOptions());
101
105
  }
@@ -168,6 +172,10 @@ var stdin_default = (0, import_vue2.defineComponent)({
168
172
  });
169
173
  (0, import_vue2.onBeforeUnmount)(() => {
170
174
  if (popper) {
175
+ if (import_utils.inBrowser) {
176
+ window.removeEventListener("animationend", updateLocation);
177
+ window.removeEventListener("transitionend", updateLocation);
178
+ }
171
179
  popper.destroy();
172
180
  popper = null;
173
181
  }
@@ -1 +1 @@
1
- :root{--van-popover-arrow-size: 6px;--van-popover-radius: var(--van-radius-lg);--van-popover-action-width: 128px;--van-popover-action-height: 44px;--van-popover-action-font-size: var(--van-font-size-md);--van-popover-action-line-height: var(--van-line-height-md);--van-popover-action-icon-size: 20px;--van-popover-light-text-color: var(--van-text-color);--van-popover-light-background: var(--van-background-2);--van-popover-light-action-disabled-text-color: var(--van-text-color-3);--van-popover-dark-text-color: var(--van-white);--van-popover-dark-background: #4a4a4a;--van-popover-dark-action-disabled-text-color: var(--van-text-color-2)}.van-popover{position:absolute;overflow:visible;background-color:transparent;transition:opacity .15s,transform .15s}.van-popover__wrapper{display:inline-block}.van-popover__arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;border-width:var(--van-popover-arrow-size)}.van-popover__content{overflow:hidden;border-radius:var(--van-popover-radius)}.van-popover__action{position:relative;display:flex;align-items:center;box-sizing:border-box;width:var(--van-popover-action-width);height:var(--van-popover-action-height);padding:0 var(--van-padding-md);font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);cursor:pointer}.van-popover__action:last-child .van-popover__action-text:after{display:none}.van-popover__action-text{display:flex;flex:1;align-items:center;justify-content:center;height:100%}.van-popover__action-icon{margin-right:var(--van-padding-xs);font-size:var(--van-popover-action-icon-size)}.van-popover__action--with-icon .van-popover__action-text{justify-content:flex-start}.van-popover[data-popper-placement^=top] .van-popover__arrow{bottom:0;border-top-color:currentColor;border-bottom-width:0;transform:translate(-50%);margin-bottom:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=top]{transform-origin:50% 100%}.van-popover[data-popper-placement=top] .van-popover__arrow{left:50%}.van-popover[data-popper-placement=top-start]{transform-origin:0 100%}.van-popover[data-popper-placement=top-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=top-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=top-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover[data-popper-placement^=left] .van-popover__arrow{right:0;border-right-width:0;border-left-color:currentColor;transform:translateY(-50%);margin-right:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=left]{transform-origin:100% 50%}.van-popover[data-popper-placement=left] .van-popover__arrow{top:50%}.van-popover[data-popper-placement=left-start]{transform-origin:100% 0}.van-popover[data-popper-placement=left-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=left-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=left-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=right] .van-popover__arrow{left:0;border-right-color:currentColor;border-left-width:0;transform:translateY(-50%);margin-left:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=right]{transform-origin:0 50%}.van-popover[data-popper-placement=right] .van-popover__arrow{top:50%}.van-popover[data-popper-placement=right-start]{transform-origin:0 0}.van-popover[data-popper-placement=right-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=right-end]{transform-origin:0 100%}.van-popover[data-popper-placement=right-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=bottom] .van-popover__arrow{top:0;border-top-width:0;border-bottom-color:currentColor;transform:translate(-50%);margin-top:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=bottom]{transform-origin:50% 0}.van-popover[data-popper-placement=bottom] .van-popover__arrow{left:50%}.van-popover[data-popper-placement=bottom-start]{transform-origin:0 0}.van-popover[data-popper-placement=bottom-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=bottom-end]{transform-origin:100% 0}.van-popover[data-popper-placement=bottom-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover--light{color:var(--van-popover-light-text-color)}.van-popover--light .van-popover__content{background:var(--van-popover-light-background);box-shadow:0 2px 12px rgba(50,50,51,.12)}.van-popover--light .van-popover__arrow{color:var(--van-popover-light-background)}.van-popover--light .van-popover__action:active{background-color:var(--van-active-color)}.van-popover--light .van-popover__action--disabled{color:var(--van-popover-light-action-disabled-text-color);cursor:not-allowed}.van-popover--light .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark{color:var(--van-popover-dark-text-color)}.van-popover--dark .van-popover__content{background:var(--van-popover-dark-background)}.van-popover--dark .van-popover__arrow{color:var(--van-popover-dark-background)}.van-popover--dark .van-popover__action:active{background-color:rgba(0,0,0,.2)}.van-popover--dark .van-popover__action--disabled{color:var(--van-popover-dark-action-disabled-text-color)}.van-popover--dark .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark .van-popover__action-text:after{border-color:var(--van-gray-7)}.van-popover-zoom-enter-from,.van-popover-zoom-leave-active{transform:scale(.8);opacity:0}.van-popover-zoom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popover-zoom-leave-active{transition-timing-function:var(--van-ease-in)}
1
+ :root{--van-popover-arrow-size: 6px;--van-popover-radius: var(--van-radius-lg);--van-popover-action-width: 128px;--van-popover-action-height: 44px;--van-popover-action-font-size: var(--van-font-size-md);--van-popover-action-line-height: var(--van-line-height-md);--van-popover-action-icon-size: 20px;--van-popover-light-text-color: var(--van-text-color);--van-popover-light-background: var(--van-background-2);--van-popover-light-action-disabled-text-color: var(--van-text-color-3);--van-popover-dark-text-color: var(--van-white);--van-popover-dark-background: #4a4a4a;--van-popover-dark-action-disabled-text-color: var(--van-text-color-2)}.van-popover{position:absolute;overflow:visible;background-color:transparent;transition:opacity .15s,transform .15s}.van-popover__wrapper{display:inline-block}.van-popover__arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;border-width:var(--van-popover-arrow-size)}.van-popover__content{overflow:hidden;border-radius:var(--van-popover-radius)}.van-popover__action{position:relative;display:flex;align-items:center;box-sizing:border-box;width:var(--van-popover-action-width);height:var(--van-popover-action-height);padding:0 var(--van-padding-md);font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);cursor:pointer}.van-popover__action:last-child .van-popover__action-text:after{display:none}.van-popover__action-text{display:flex;flex:1;align-items:center;justify-content:center;height:100%}.van-popover__action-icon{margin-right:var(--van-padding-xs);font-size:var(--van-popover-action-icon-size)}.van-popover__action--with-icon .van-popover__action-text{justify-content:flex-start}.van-popover[data-popper-placement^=top] .van-popover__arrow{bottom:0;border-top-color:currentColor;border-bottom-width:0;margin-bottom:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=top]{transform-origin:50% 100%}.van-popover[data-popper-placement=top] .van-popover__arrow{left:50%;transform:translate(-50%)}.van-popover[data-popper-placement=top-start]{transform-origin:0 100%}.van-popover[data-popper-placement=top-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=top-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=top-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover[data-popper-placement^=left] .van-popover__arrow{right:0;border-right-width:0;border-left-color:currentColor;margin-right:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=left]{transform-origin:100% 50%}.van-popover[data-popper-placement=left] .van-popover__arrow{top:50%;transform:translateY(-50%)}.van-popover[data-popper-placement=left-start]{transform-origin:100% 0}.van-popover[data-popper-placement=left-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=left-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=left-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=right] .van-popover__arrow{left:0;border-right-color:currentColor;border-left-width:0;margin-left:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=right]{transform-origin:0 50%}.van-popover[data-popper-placement=right] .van-popover__arrow{top:50%;transform:translateY(-50%)}.van-popover[data-popper-placement=right-start]{transform-origin:0 0}.van-popover[data-popper-placement=right-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=right-end]{transform-origin:0 100%}.van-popover[data-popper-placement=right-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=bottom] .van-popover__arrow{top:0;border-top-width:0;border-bottom-color:currentColor;margin-top:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=bottom]{transform-origin:50% 0}.van-popover[data-popper-placement=bottom] .van-popover__arrow{left:50%;transform:translate(-50%)}.van-popover[data-popper-placement=bottom-start]{transform-origin:0 0}.van-popover[data-popper-placement=bottom-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=bottom-end]{transform-origin:100% 0}.van-popover[data-popper-placement=bottom-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover--light{color:var(--van-popover-light-text-color)}.van-popover--light .van-popover__content{background:var(--van-popover-light-background);box-shadow:0 2px 12px rgba(50,50,51,.12)}.van-popover--light .van-popover__arrow{color:var(--van-popover-light-background)}.van-popover--light .van-popover__action:active{background-color:var(--van-active-color)}.van-popover--light .van-popover__action--disabled{color:var(--van-popover-light-action-disabled-text-color);cursor:not-allowed}.van-popover--light .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark{color:var(--van-popover-dark-text-color)}.van-popover--dark .van-popover__content{background:var(--van-popover-dark-background)}.van-popover--dark .van-popover__arrow{color:var(--van-popover-dark-background)}.van-popover--dark .van-popover__action:active{background-color:rgba(0,0,0,.2)}.van-popover--dark .van-popover__action--disabled{color:var(--van-popover-dark-action-disabled-text-color)}.van-popover--dark .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark .van-popover__action-text:after{border-color:var(--van-gray-7)}.van-popover-zoom-enter-from,.van-popover-zoom-leave-active{transform:scale(.8);opacity:0}.van-popover-zoom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popover-zoom-leave-active{transition-timing-function:var(--van-ease-in)}
@@ -51,7 +51,7 @@ function filterEmpty(children = []) {
51
51
  });
52
52
  return nodes.filter((c) => {
53
53
  var _a;
54
- return !(c && (typeof Comment !== "undefined" && c.type === Comment || c.type === import_vue2.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === Text && c.children.trim() === ""));
54
+ return !(c && (c.type === import_vue2.Comment || c.type === import_vue2.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === import_vue2.Text && c.children.trim() === ""));
55
55
  });
56
56
  }
57
57
  var stdin_default = (0, import_vue2.defineComponent)({
package/lib/tabs/Tabs.js CHANGED
@@ -38,6 +38,7 @@ var import_use_route = require("../composables/use-route");
38
38
  var import_use_refs = require("../composables/use-refs");
39
39
  var import_use_expose = require("../composables/use-expose");
40
40
  var import_on_popup_reopen = require("../composables/on-popup-reopen");
41
+ var import_use_visibility_change = require("../composables/use-visibility-change");
41
42
  var import_sticky = require("../sticky");
42
43
  var import_TabsTitle = __toESM(require("./TabsTitle"));
43
44
  var import_TabsContent = __toESM(require("./TabsContent"));
@@ -350,6 +351,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
350
351
  (0, import_vue2.onActivated)(setLine);
351
352
  (0, import_on_popup_reopen.onPopupReopen)(setLine);
352
353
  (0, import_use.onMountedOrActivated)(init);
354
+ (0, import_use_visibility_change.useVisibilityChange)(root, setLine);
353
355
  (0, import_use.useEventListener)("scroll", onScroll, {
354
356
  target: scroller,
355
357
  passive: true
package/lib/vant.cjs.js CHANGED
@@ -1761,7 +1761,7 @@ var stdin_default$1A = vue.defineComponent({
1761
1761
  class: "van-ellipsis",
1762
1762
  [props.allowHtml ? "innerHTML" : "textContent"]: text
1763
1763
  };
1764
- return vue.createVNode("li", data, [slots.option ? slots.option(option) : vue.createVNode("div", childData, null)]);
1764
+ return vue.createVNode("li", data, [slots.option ? slots.option(option, index) : vue.createVNode("div", childData, null)]);
1765
1765
  });
1766
1766
  };
1767
1767
  use.useParent(PICKER_KEY);
@@ -2087,7 +2087,7 @@ var stdin_default$1x = vue.defineComponent({
2087
2087
  return style2;
2088
2088
  });
2089
2089
  const renderText = () => {
2090
- const Text2 = vue.createVNode("span", {
2090
+ const Text = vue.createVNode("span", {
2091
2091
  "class": bem$1i("text", {
2092
2092
  ellipsis: !props.scrollable
2093
2093
  })
@@ -2098,10 +2098,10 @@ var stdin_default$1x = vue.defineComponent({
2098
2098
  "content": props.badge,
2099
2099
  "showZero": props.showZeroBadge
2100
2100
  }, {
2101
- default: () => [Text2]
2101
+ default: () => [Text]
2102
2102
  });
2103
2103
  }
2104
- return Text2;
2104
+ return Text;
2105
2105
  };
2106
2106
  return () => vue.createVNode("div", {
2107
2107
  "id": props.id,
@@ -2850,6 +2850,7 @@ var stdin_default$1u = vue.defineComponent({
2850
2850
  vue.onActivated(setLine);
2851
2851
  onPopupReopen(setLine);
2852
2852
  use.onMountedOrActivated(init);
2853
+ useVisibilityChange(root, setLine);
2853
2854
  use.useEventListener("scroll", onScroll, {
2854
2855
  target: scroller,
2855
2856
  passive: true
@@ -3118,12 +3119,13 @@ var stdin_default$1r = vue.defineComponent({
3118
3119
  "confirmButtonText": confirmButtonText,
3119
3120
  "onConfirm": onConfirm,
3120
3121
  "onCancel": onCancel
3121
- }, null), vue.createVNode(Tabs, {
3122
+ }, pick(slots, pickerToolbarSlots)), vue.createVNode(Tabs, {
3122
3123
  "active": activeTab.value,
3123
3124
  "onUpdate:active": ($event) => activeTab.value = $event,
3124
3125
  "class": bem$1c("tabs"),
3125
3126
  "shrink": true,
3126
- "animated": true
3127
+ "animated": true,
3128
+ "lazyRender": false
3127
3129
  }, {
3128
3130
  default: () => [props.tabs.map((title, index) => vue.createVNode(Tab, {
3129
3131
  "title": title,
@@ -5598,6 +5600,7 @@ const [name$12, bem$_] = createNamespace("back-top");
5598
5600
  const backTopProps = {
5599
5601
  right: numericProp,
5600
5602
  bottom: numericProp,
5603
+ zIndex: numericProp,
5601
5604
  target: [String, Object],
5602
5605
  offset: makeNumericProp(200),
5603
5606
  immediate: Boolean,
@@ -5619,7 +5622,7 @@ var stdin_default$1b = vue.defineComponent({
5619
5622
  const show = vue.ref(false);
5620
5623
  const root = vue.ref();
5621
5624
  const scrollParent = vue.ref();
5622
- const style = vue.computed(() => ({
5625
+ const style = vue.computed(() => extend(getZIndexStyle(props.zIndex), {
5623
5626
  right: addUnit(props.right),
5624
5627
  bottom: addUnit(props.bottom)
5625
5628
  }));
@@ -6962,7 +6965,7 @@ var stdin_default$14 = vue.defineComponent({
6962
6965
  } = option;
6963
6966
  const selected = !!(selectedOption && option[valueKey] === selectedOption[valueKey]);
6964
6967
  const color = option.color || (selected ? props.activeColor : void 0);
6965
- const Text2 = slots.option ? slots.option({
6968
+ const Text = slots.option ? slots.option({
6966
6969
  option,
6967
6970
  selected
6968
6971
  }) : vue.createVNode("span", null, [option[textKey]]);
@@ -6979,7 +6982,7 @@ var stdin_default$14 = vue.defineComponent({
6979
6982
  "aria-checked": selected,
6980
6983
  "aria-disabled": disabled || void 0,
6981
6984
  "onClick": () => onSelect(option, tabIndex)
6982
- }, [Text2, selected ? vue.createVNode(Icon, {
6985
+ }, [Text, selected ? vue.createVNode(Icon, {
6983
6986
  "name": "success",
6984
6987
  "class": bem$W("selected-icon")
6985
6988
  }, null) : null]);
@@ -11394,6 +11397,10 @@ var stdin_default$w = vue.defineComponent({
11394
11397
  }
11395
11398
  if (!popper) {
11396
11399
  popper = createPopperInstance();
11400
+ if (inBrowser) {
11401
+ window.addEventListener("animationend", updateLocation);
11402
+ window.addEventListener("transitionend", updateLocation);
11403
+ }
11397
11404
  } else {
11398
11405
  popper.setOptions(getPopoverOptions());
11399
11406
  }
@@ -11466,6 +11473,10 @@ var stdin_default$w = vue.defineComponent({
11466
11473
  });
11467
11474
  vue.onBeforeUnmount(() => {
11468
11475
  if (popper) {
11476
+ if (inBrowser) {
11477
+ window.removeEventListener("animationend", updateLocation);
11478
+ window.removeEventListener("transitionend", updateLocation);
11479
+ }
11469
11480
  popper.destroy();
11470
11481
  popper = null;
11471
11482
  }
@@ -12746,7 +12757,7 @@ function filterEmpty(children = []) {
12746
12757
  });
12747
12758
  return nodes.filter((c) => {
12748
12759
  var _a;
12749
- return !(c && (typeof Comment !== "undefined" && c.type === Comment || c.type === vue.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === Text && c.children.trim() === ""));
12760
+ return !(c && (c.type === vue.Comment || c.type === vue.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === vue.Text && c.children.trim() === ""));
12750
12761
  });
12751
12762
  }
12752
12763
  var stdin_default$f = vue.defineComponent({
@@ -14958,7 +14969,7 @@ const Lazyload = {
14958
14969
  });
14959
14970
  }
14960
14971
  };
14961
- const version = "4.0.10";
14972
+ const version = "4.0.11";
14962
14973
  function install(app) {
14963
14974
  const components = [
14964
14975
  ActionBar,
package/lib/vant.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { unref, ref, reactive, inject, watch, onMounted, nextTick, createVNode, defineComponent, getCurrentInstance, computed, onActivated, onDeactivated, onBeforeUnmount, provide, watchEffect, mergeProps, Transition, withDirectives, vShow, Teleport, Fragment, onBeforeUpdate, createTextVNode, onUnmounted, createApp, resolveDirective, withKeys, onUpdated, h } from "vue";
1
+ import { unref, ref, reactive, inject, watch, onMounted, nextTick, createVNode, defineComponent, getCurrentInstance, computed, onActivated, onDeactivated, onBeforeUnmount, provide, watchEffect, mergeProps, Transition, withDirectives, vShow, Teleport, Fragment, onBeforeUpdate, createTextVNode, onUnmounted, createApp, resolveDirective, withKeys, onUpdated, Comment, Text, h } from "vue";
2
2
  import { useWindowSize, useRect, useChildren, useParent, onMountedOrActivated, getScrollParent, useEventListener, raf, useScrollParent, usePageVisibility, doubleRaf, CUSTOM_FIELD_INJECTION_KEY, useCustomFieldValue, inBrowser as inBrowser$1, useToggle, cancelRaf, useCountDown, useClickAway } from "@vant/use";
3
3
  import { offsetModifier, createPopper } from "@vant/popperjs";
4
4
  const isDef = (val) => val !== void 0 && val !== null;
@@ -1759,7 +1759,7 @@ var stdin_default$1A = defineComponent({
1759
1759
  class: "van-ellipsis",
1760
1760
  [props.allowHtml ? "innerHTML" : "textContent"]: text
1761
1761
  };
1762
- return createVNode("li", data, [slots.option ? slots.option(option) : createVNode("div", childData, null)]);
1762
+ return createVNode("li", data, [slots.option ? slots.option(option, index) : createVNode("div", childData, null)]);
1763
1763
  });
1764
1764
  };
1765
1765
  useParent(PICKER_KEY);
@@ -2848,6 +2848,7 @@ var stdin_default$1u = defineComponent({
2848
2848
  onActivated(setLine);
2849
2849
  onPopupReopen(setLine);
2850
2850
  onMountedOrActivated(init);
2851
+ useVisibilityChange(root, setLine);
2851
2852
  useEventListener("scroll", onScroll, {
2852
2853
  target: scroller,
2853
2854
  passive: true
@@ -3116,12 +3117,13 @@ var stdin_default$1r = defineComponent({
3116
3117
  "confirmButtonText": confirmButtonText,
3117
3118
  "onConfirm": onConfirm,
3118
3119
  "onCancel": onCancel
3119
- }, null), createVNode(Tabs, {
3120
+ }, pick(slots, pickerToolbarSlots)), createVNode(Tabs, {
3120
3121
  "active": activeTab.value,
3121
3122
  "onUpdate:active": ($event) => activeTab.value = $event,
3122
3123
  "class": bem$1c("tabs"),
3123
3124
  "shrink": true,
3124
- "animated": true
3125
+ "animated": true,
3126
+ "lazyRender": false
3125
3127
  }, {
3126
3128
  default: () => [props.tabs.map((title, index) => createVNode(Tab, {
3127
3129
  "title": title,
@@ -5596,6 +5598,7 @@ const [name$12, bem$_] = createNamespace("back-top");
5596
5598
  const backTopProps = {
5597
5599
  right: numericProp,
5598
5600
  bottom: numericProp,
5601
+ zIndex: numericProp,
5599
5602
  target: [String, Object],
5600
5603
  offset: makeNumericProp(200),
5601
5604
  immediate: Boolean,
@@ -5617,7 +5620,7 @@ var stdin_default$1b = defineComponent({
5617
5620
  const show = ref(false);
5618
5621
  const root = ref();
5619
5622
  const scrollParent = ref();
5620
- const style = computed(() => ({
5623
+ const style = computed(() => extend(getZIndexStyle(props.zIndex), {
5621
5624
  right: addUnit(props.right),
5622
5625
  bottom: addUnit(props.bottom)
5623
5626
  }));
@@ -11392,6 +11395,10 @@ var stdin_default$w = defineComponent({
11392
11395
  }
11393
11396
  if (!popper) {
11394
11397
  popper = createPopperInstance();
11398
+ if (inBrowser) {
11399
+ window.addEventListener("animationend", updateLocation);
11400
+ window.addEventListener("transitionend", updateLocation);
11401
+ }
11395
11402
  } else {
11396
11403
  popper.setOptions(getPopoverOptions());
11397
11404
  }
@@ -11464,6 +11471,10 @@ var stdin_default$w = defineComponent({
11464
11471
  });
11465
11472
  onBeforeUnmount(() => {
11466
11473
  if (popper) {
11474
+ if (inBrowser) {
11475
+ window.removeEventListener("animationend", updateLocation);
11476
+ window.removeEventListener("transitionend", updateLocation);
11477
+ }
11467
11478
  popper.destroy();
11468
11479
  popper = null;
11469
11480
  }
@@ -12744,7 +12755,7 @@ function filterEmpty(children = []) {
12744
12755
  });
12745
12756
  return nodes.filter((c) => {
12746
12757
  var _a;
12747
- return !(c && (typeof Comment !== "undefined" && c.type === Comment || c.type === Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === Text && c.children.trim() === ""));
12758
+ return !(c && (c.type === Comment || c.type === Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === Text && c.children.trim() === ""));
12748
12759
  });
12749
12760
  }
12750
12761
  var stdin_default$f = defineComponent({
@@ -14956,7 +14967,7 @@ const Lazyload = {
14956
14967
  });
14957
14968
  }
14958
14969
  };
14959
- const version = "4.0.10";
14970
+ const version = "4.0.11";
14960
14971
  function install(app) {
14961
14972
  const components = [
14962
14973
  ActionBar,
package/lib/vant.js CHANGED
@@ -325,8 +325,12 @@
325
325
  return;
326
326
  }
327
327
  const { target = window, passive: passive2 = false, capture = false } = options;
328
+ let cleaned = false;
328
329
  let attached;
329
330
  const add = (target2) => {
331
+ if (cleaned) {
332
+ return;
333
+ }
330
334
  const element = vue.unref(target2);
331
335
  if (element && !attached) {
332
336
  element.addEventListener(type, listener, {
@@ -337,6 +341,9 @@
337
341
  }
338
342
  };
339
343
  const remove2 = (target2) => {
344
+ if (cleaned) {
345
+ return;
346
+ }
340
347
  const element = vue.unref(target2);
341
348
  if (element && attached) {
342
349
  element.removeEventListener(type, listener, capture);
@@ -346,12 +353,18 @@
346
353
  vue.onUnmounted(() => remove2(target));
347
354
  vue.onDeactivated(() => remove2(target));
348
355
  onMountedOrActivated(() => add(target));
356
+ let stopWatch;
349
357
  if (vue.isRef(target)) {
350
- vue.watch(target, (val, oldVal) => {
358
+ stopWatch = vue.watch(target, (val, oldVal) => {
351
359
  remove2(oldVal);
352
360
  add(val);
353
361
  });
354
362
  }
363
+ return () => {
364
+ stopWatch == null ? void 0 : stopWatch();
365
+ remove2(target);
366
+ cleaned = true;
367
+ };
355
368
  }
356
369
  function useClickAway(target, listener, options = {}) {
357
370
  if (!inBrowser) {
@@ -2137,7 +2150,7 @@
2137
2150
  class: "van-ellipsis",
2138
2151
  [props.allowHtml ? "innerHTML" : "textContent"]: text
2139
2152
  };
2140
- return vue.createVNode("li", data, [slots.option ? slots.option(option) : vue.createVNode("div", childData, null)]);
2153
+ return vue.createVNode("li", data, [slots.option ? slots.option(option, index) : vue.createVNode("div", childData, null)]);
2141
2154
  });
2142
2155
  };
2143
2156
  useParent(PICKER_KEY);
@@ -2460,7 +2473,7 @@
2460
2473
  return style2;
2461
2474
  });
2462
2475
  const renderText = () => {
2463
- const Text2 = vue.createVNode("span", {
2476
+ const Text = vue.createVNode("span", {
2464
2477
  "class": bem$1i("text", {
2465
2478
  ellipsis: !props.scrollable
2466
2479
  })
@@ -2471,10 +2484,10 @@
2471
2484
  "content": props.badge,
2472
2485
  "showZero": props.showZeroBadge
2473
2486
  }, {
2474
- default: () => [Text2]
2487
+ default: () => [Text]
2475
2488
  });
2476
2489
  }
2477
- return Text2;
2490
+ return Text;
2478
2491
  };
2479
2492
  return () => vue.createVNode("div", {
2480
2493
  "id": props.id,
@@ -3223,6 +3236,7 @@
3223
3236
  vue.onActivated(setLine);
3224
3237
  onPopupReopen(setLine);
3225
3238
  onMountedOrActivated(init);
3239
+ useVisibilityChange(root, setLine);
3226
3240
  useEventListener("scroll", onScroll, {
3227
3241
  target: scroller,
3228
3242
  passive: true
@@ -3485,12 +3499,13 @@
3485
3499
  "confirmButtonText": confirmButtonText,
3486
3500
  "onConfirm": onConfirm,
3487
3501
  "onCancel": onCancel
3488
- }, null), vue.createVNode(Tabs, {
3502
+ }, pick(slots, pickerToolbarSlots)), vue.createVNode(Tabs, {
3489
3503
  "active": activeTab.value,
3490
3504
  "onUpdate:active": ($event) => activeTab.value = $event,
3491
3505
  "class": bem$1c("tabs"),
3492
3506
  "shrink": true,
3493
- "animated": true
3507
+ "animated": true,
3508
+ "lazyRender": false
3494
3509
  }, {
3495
3510
  default: () => [props.tabs.map((title, index) => vue.createVNode(Tab, {
3496
3511
  "title": title,
@@ -5965,6 +5980,7 @@
5965
5980
  const backTopProps = {
5966
5981
  right: numericProp,
5967
5982
  bottom: numericProp,
5983
+ zIndex: numericProp,
5968
5984
  target: [String, Object],
5969
5985
  offset: makeNumericProp(200),
5970
5986
  immediate: Boolean,
@@ -5986,7 +6002,7 @@
5986
6002
  const show = vue.ref(false);
5987
6003
  const root = vue.ref();
5988
6004
  const scrollParent = vue.ref();
5989
- const style = vue.computed(() => ({
6005
+ const style = vue.computed(() => extend(getZIndexStyle(props.zIndex), {
5990
6006
  right: addUnit(props.right),
5991
6007
  bottom: addUnit(props.bottom)
5992
6008
  }));
@@ -7326,7 +7342,7 @@
7326
7342
  } = option;
7327
7343
  const selected = !!(selectedOption && option[valueKey] === selectedOption[valueKey]);
7328
7344
  const color = option.color || (selected ? props.activeColor : void 0);
7329
- const Text2 = slots.option ? slots.option({
7345
+ const Text = slots.option ? slots.option({
7330
7346
  option,
7331
7347
  selected
7332
7348
  }) : vue.createVNode("span", null, [option[textKey]]);
@@ -7343,7 +7359,7 @@
7343
7359
  "aria-checked": selected,
7344
7360
  "aria-disabled": disabled || void 0,
7345
7361
  "onClick": () => onSelect(option, tabIndex)
7346
- }, [Text2, selected ? vue.createVNode(Icon, {
7362
+ }, [Text, selected ? vue.createVNode(Icon, {
7347
7363
  "name": "success",
7348
7364
  "class": bem$W("selected-icon")
7349
7365
  }, null) : null]);
@@ -12638,6 +12654,10 @@
12638
12654
  }
12639
12655
  if (!popper) {
12640
12656
  popper = createPopperInstance();
12657
+ if (inBrowser$1) {
12658
+ window.addEventListener("animationend", updateLocation);
12659
+ window.addEventListener("transitionend", updateLocation);
12660
+ }
12641
12661
  } else {
12642
12662
  popper.setOptions(getPopoverOptions());
12643
12663
  }
@@ -12710,6 +12730,10 @@
12710
12730
  });
12711
12731
  vue.onBeforeUnmount(() => {
12712
12732
  if (popper) {
12733
+ if (inBrowser$1) {
12734
+ window.removeEventListener("animationend", updateLocation);
12735
+ window.removeEventListener("transitionend", updateLocation);
12736
+ }
12713
12737
  popper.destroy();
12714
12738
  popper = null;
12715
12739
  }
@@ -13987,7 +14011,7 @@
13987
14011
  });
13988
14012
  return nodes.filter((c) => {
13989
14013
  var _a;
13990
- return !(c && (typeof Comment !== "undefined" && c.type === Comment || c.type === vue.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === Text && c.children.trim() === ""));
14014
+ return !(c && (c.type === vue.Comment || c.type === vue.Fragment && ((_a = c.children) == null ? void 0 : _a.length) === 0 || c.type === vue.Text && c.children.trim() === ""));
13991
14015
  });
13992
14016
  }
13993
14017
  var stdin_default$f = vue.defineComponent({
@@ -16173,7 +16197,7 @@
16173
16197
  });
16174
16198
  }
16175
16199
  };
16176
- const version = "4.0.10";
16200
+ const version = "4.0.11";
16177
16201
  function install(app) {
16178
16202
  const components = [
16179
16203
  ActionBar,