vant 4.2.0 → 4.2.1

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 (49) hide show
  1. package/es/index.d.ts +1 -1
  2. package/es/index.mjs +1 -1
  3. package/es/pagination/Pagination.d.ts +26 -0
  4. package/es/pagination/Pagination.mjs +14 -4
  5. package/es/pagination/index.css +1 -1
  6. package/es/pagination/index.d.ts +18 -0
  7. package/es/picker/Picker.d.ts +2 -1
  8. package/es/picker/Picker.mjs +16 -6
  9. package/es/picker/PickerColumn.d.ts +2 -1
  10. package/es/picker/PickerColumn.mjs +10 -4
  11. package/es/picker/index.d.ts +2 -1
  12. package/es/sticky/Sticky.mjs +20 -4
  13. package/es/tab/Tab.mjs +24 -6
  14. package/es/{tabs/TabsTitle.d.ts → tab/TabTitle.d.ts} +1 -2
  15. package/es/{tabs/TabsTitle.mjs → tab/TabTitle.mjs} +2 -2
  16. package/es/tabs/Tabs.d.ts +1 -1
  17. package/es/tabs/Tabs.mjs +15 -30
  18. package/es/tabs/index.d.ts +1 -1
  19. package/es/tabs/style/index.mjs +0 -1
  20. package/es/tabs/types.d.ts +3 -1
  21. package/es/watermark/Watermark.mjs +3 -1
  22. package/lib/index.css +1 -1
  23. package/lib/index.d.ts +1 -1
  24. package/lib/index.js +1 -1
  25. package/lib/pagination/Pagination.d.ts +26 -0
  26. package/lib/pagination/Pagination.js +13 -3
  27. package/lib/pagination/index.css +1 -1
  28. package/lib/pagination/index.d.ts +18 -0
  29. package/lib/picker/Picker.d.ts +2 -1
  30. package/lib/picker/Picker.js +16 -6
  31. package/lib/picker/PickerColumn.d.ts +2 -1
  32. package/lib/picker/PickerColumn.js +9 -3
  33. package/lib/picker/index.d.ts +2 -1
  34. package/lib/sticky/Sticky.js +18 -2
  35. package/lib/tab/Tab.js +21 -3
  36. package/lib/{tabs/TabsTitle.d.ts → tab/TabTitle.d.ts} +1 -2
  37. package/lib/{tabs/TabsTitle.js → tab/TabTitle.js} +2 -2
  38. package/lib/tabs/Tabs.d.ts +1 -1
  39. package/lib/tabs/Tabs.js +13 -28
  40. package/lib/tabs/index.d.ts +1 -1
  41. package/lib/tabs/style/index.js +0 -1
  42. package/lib/tabs/types.d.ts +3 -1
  43. package/lib/vant.cjs.js +227 -180
  44. package/lib/vant.es.js +227 -180
  45. package/lib/vant.js +227 -180
  46. package/lib/vant.min.js +1 -1
  47. package/lib/watermark/Watermark.js +3 -1
  48. package/lib/web-types.json +1 -1
  49. package/package.json +1 -1
package/lib/vant.cjs.js CHANGED
@@ -237,7 +237,7 @@ function deepAssign(to, from) {
237
237
  });
238
238
  return to;
239
239
  }
240
- var stdin_default$1P = {
240
+ var stdin_default$1O = {
241
241
  name: "姓名",
242
242
  tel: "电话",
243
243
  save: "保存",
@@ -300,7 +300,7 @@ var stdin_default$1P = {
300
300
  };
301
301
  const lang = vue.ref("zh-CN");
302
302
  const messages = vue.reactive({
303
- "zh-CN": stdin_default$1P
303
+ "zh-CN": stdin_default$1O
304
304
  });
305
305
  const Locale = {
306
306
  messages() {
@@ -315,11 +315,11 @@ const Locale = {
315
315
  }
316
316
  };
317
317
  const useCurrentLang = () => lang;
318
- var stdin_default$1O = Locale;
318
+ var stdin_default$1N = Locale;
319
319
  function createTranslate(name2) {
320
320
  const prefix = camelize(name2) + ".";
321
321
  return (path, ...args) => {
322
- const messages2 = stdin_default$1O.messages();
322
+ const messages2 = stdin_default$1N.messages();
323
323
  const message = get(messages2, prefix + path) || get(messages2, path);
324
324
  return isFunction(message) ? message(...args) : message;
325
325
  };
@@ -447,7 +447,7 @@ const actionBarProps = {
447
447
  placeholder: Boolean,
448
448
  safeAreaInsetBottom: truthProp
449
449
  };
450
- var stdin_default$1N = vue.defineComponent({
450
+ var stdin_default$1M = vue.defineComponent({
451
451
  name: name$1D,
452
452
  props: actionBarProps,
453
453
  setup(props, {
@@ -476,7 +476,7 @@ var stdin_default$1N = vue.defineComponent({
476
476
  };
477
477
  }
478
478
  });
479
- const ActionBar = withInstall(stdin_default$1N);
479
+ const ActionBar = withInstall(stdin_default$1M);
480
480
  function useExpose(apis) {
481
481
  const instance2 = vue.getCurrentInstance();
482
482
  if (instance2) {
@@ -515,7 +515,7 @@ const badgeProps = {
515
515
  showZero: truthProp,
516
516
  position: makeStringProp("top-right")
517
517
  };
518
- var stdin_default$1M = vue.defineComponent({
518
+ var stdin_default$1L = vue.defineComponent({
519
519
  name: name$1C,
520
520
  props: badgeProps,
521
521
  setup(props, {
@@ -602,7 +602,7 @@ var stdin_default$1M = vue.defineComponent({
602
602
  };
603
603
  }
604
604
  });
605
- const Badge = withInstall(stdin_default$1M);
605
+ const Badge = withInstall(stdin_default$1L);
606
606
  let globalZIndex = 2e3;
607
607
  const useGlobalZIndex = () => ++globalZIndex;
608
608
  const setGlobalZIndex = (val) => {
@@ -626,7 +626,7 @@ function mapThemeVarsToCSSVars(themeVars) {
626
626
  });
627
627
  return cssVars;
628
628
  }
629
- var stdin_default$1L = vue.defineComponent({
629
+ var stdin_default$1K = vue.defineComponent({
630
630
  name: name$1B,
631
631
  props: configProviderProps,
632
632
  setup(props, {
@@ -681,7 +681,7 @@ const iconProps = {
681
681
  badgeProps: Object,
682
682
  classPrefix: String
683
683
  };
684
- var stdin_default$1K = vue.defineComponent({
684
+ var stdin_default$1J = vue.defineComponent({
685
685
  name: name$1A,
686
686
  props: iconProps,
687
687
  setup(props, {
@@ -720,7 +720,7 @@ var stdin_default$1K = vue.defineComponent({
720
720
  };
721
721
  }
722
722
  });
723
- const Icon = withInstall(stdin_default$1K);
723
+ const Icon = withInstall(stdin_default$1J);
724
724
  const [name$1z, bem$1u] = createNamespace("loading");
725
725
  const SpinIcon = Array(12).fill(null).map((_, index) => vue.createVNode("i", {
726
726
  "class": bem$1u("line", String(index + 1))
@@ -742,7 +742,7 @@ const loadingProps = {
742
742
  textSize: numericProp,
743
743
  textColor: String
744
744
  };
745
- var stdin_default$1J = vue.defineComponent({
745
+ var stdin_default$1I = vue.defineComponent({
746
746
  name: name$1z,
747
747
  props: loadingProps,
748
748
  setup(props, {
@@ -785,7 +785,7 @@ var stdin_default$1J = vue.defineComponent({
785
785
  };
786
786
  }
787
787
  });
788
- const Loading = withInstall(stdin_default$1J);
788
+ const Loading = withInstall(stdin_default$1I);
789
789
  const [name$1y, bem$1t] = createNamespace("button");
790
790
  const buttonProps = extend({}, routeProps, {
791
791
  tag: makeStringProp("button"),
@@ -808,7 +808,7 @@ const buttonProps = extend({}, routeProps, {
808
808
  loadingType: String,
809
809
  iconPosition: makeStringProp("left")
810
810
  });
811
- var stdin_default$1I = vue.defineComponent({
811
+ var stdin_default$1H = vue.defineComponent({
812
812
  name: name$1y,
813
813
  props: buttonProps,
814
814
  emits: ["click"],
@@ -925,7 +925,7 @@ var stdin_default$1I = vue.defineComponent({
925
925
  };
926
926
  }
927
927
  });
928
- const Button = withInstall(stdin_default$1I);
928
+ const Button = withInstall(stdin_default$1H);
929
929
  const [name$1x, bem$1s] = createNamespace("action-bar-button");
930
930
  const actionBarButtonProps = extend({}, routeProps, {
931
931
  type: String,
@@ -935,7 +935,7 @@ const actionBarButtonProps = extend({}, routeProps, {
935
935
  loading: Boolean,
936
936
  disabled: Boolean
937
937
  });
938
- var stdin_default$1H = vue.defineComponent({
938
+ var stdin_default$1G = vue.defineComponent({
939
939
  name: name$1x,
940
940
  props: actionBarButtonProps,
941
941
  setup(props, {
@@ -988,7 +988,7 @@ var stdin_default$1H = vue.defineComponent({
988
988
  };
989
989
  }
990
990
  });
991
- const ActionBarButton = withInstall(stdin_default$1H);
991
+ const ActionBarButton = withInstall(stdin_default$1G);
992
992
  const [name$1w, bem$1r] = createNamespace("action-bar-icon");
993
993
  const actionBarIconProps = extend({}, routeProps, {
994
994
  dot: Boolean,
@@ -1000,7 +1000,7 @@ const actionBarIconProps = extend({}, routeProps, {
1000
1000
  badgeProps: Object,
1001
1001
  iconPrefix: String
1002
1002
  });
1003
- var stdin_default$1G = vue.defineComponent({
1003
+ var stdin_default$1F = vue.defineComponent({
1004
1004
  name: name$1w,
1005
1005
  props: actionBarIconProps,
1006
1006
  setup(props, {
@@ -1046,7 +1046,7 @@ var stdin_default$1G = vue.defineComponent({
1046
1046
  }, [renderIcon(), slots.default ? slots.default() : props.text]);
1047
1047
  }
1048
1048
  });
1049
- const ActionBarIcon = withInstall(stdin_default$1G);
1049
+ const ActionBarIcon = withInstall(stdin_default$1F);
1050
1050
  const popupSharedProps = {
1051
1051
  // whether to show popup
1052
1052
  show: Boolean,
@@ -1207,7 +1207,7 @@ const overlayProps = {
1207
1207
  lazyRender: truthProp,
1208
1208
  customStyle: Object
1209
1209
  };
1210
- var stdin_default$1F = vue.defineComponent({
1210
+ var stdin_default$1E = vue.defineComponent({
1211
1211
  name: name$1v,
1212
1212
  props: overlayProps,
1213
1213
  setup(props, {
@@ -1243,7 +1243,7 @@ var stdin_default$1F = vue.defineComponent({
1243
1243
  });
1244
1244
  }
1245
1245
  });
1246
- const Overlay = withInstall(stdin_default$1F);
1246
+ const Overlay = withInstall(stdin_default$1E);
1247
1247
  const popupProps$2 = extend({}, popupSharedProps, {
1248
1248
  round: Boolean,
1249
1249
  position: makeStringProp("center"),
@@ -1257,7 +1257,7 @@ const popupProps$2 = extend({}, popupSharedProps, {
1257
1257
  safeAreaInsetBottom: Boolean
1258
1258
  });
1259
1259
  const [name$1u, bem$1p] = createNamespace("popup");
1260
- var stdin_default$1E = vue.defineComponent({
1260
+ var stdin_default$1D = vue.defineComponent({
1261
1261
  name: name$1u,
1262
1262
  inheritAttrs: false,
1263
1263
  props: popupProps$2,
@@ -1435,7 +1435,7 @@ var stdin_default$1E = vue.defineComponent({
1435
1435
  };
1436
1436
  }
1437
1437
  });
1438
- const Popup = withInstall(stdin_default$1E);
1438
+ const Popup = withInstall(stdin_default$1D);
1439
1439
  const [name$1t, bem$1o] = createNamespace("action-sheet");
1440
1440
  const actionSheetProps = extend({}, popupSharedProps, {
1441
1441
  title: String,
@@ -1450,7 +1450,7 @@ const actionSheetProps = extend({}, popupSharedProps, {
1450
1450
  safeAreaInsetBottom: truthProp
1451
1451
  });
1452
1452
  const popupInheritKeys$2 = [...popupSharedPropKeys, "round", "closeOnPopstate", "safeAreaInsetBottom"];
1453
- var stdin_default$1D = vue.defineComponent({
1453
+ var stdin_default$1C = vue.defineComponent({
1454
1454
  name: name$1t,
1455
1455
  props: actionSheetProps,
1456
1456
  emits: ["select", "cancel", "update:show"],
@@ -1557,7 +1557,7 @@ var stdin_default$1D = vue.defineComponent({
1557
1557
  });
1558
1558
  }
1559
1559
  });
1560
- const ActionSheet = withInstall(stdin_default$1D);
1560
+ const ActionSheet = withInstall(stdin_default$1C);
1561
1561
  const [name$1s, bem$1n, t$j] = createNamespace("picker");
1562
1562
  const getFirstEnabledOption = (options) => options.find((option) => !option.disabled) || options[0];
1563
1563
  function getColumnsType(columns, fields) {
@@ -1629,7 +1629,7 @@ const MOMENTUM_TIME = 300;
1629
1629
  const MOMENTUM_DISTANCE = 15;
1630
1630
  const [name$1r, bem$1m] = createNamespace("picker-column");
1631
1631
  const PICKER_KEY = Symbol(name$1r);
1632
- var stdin_default$1C = vue.defineComponent({
1632
+ var stdin_default$1B = vue.defineComponent({
1633
1633
  name: name$1r,
1634
1634
  props: {
1635
1635
  value: numericProp,
@@ -1641,7 +1641,7 @@ var stdin_default$1C = vue.defineComponent({
1641
1641
  swipeDuration: makeRequiredProp(numericProp),
1642
1642
  visibleOptionNum: makeRequiredProp(numericProp)
1643
1643
  },
1644
- emits: ["change", "clickOption"],
1644
+ emits: ["change", "clickOption", "scrollInto"],
1645
1645
  setup(props, {
1646
1646
  emit,
1647
1647
  slots
@@ -1685,6 +1685,7 @@ var stdin_default$1C = vue.defineComponent({
1685
1685
  emit("clickOption", props.options[index]);
1686
1686
  };
1687
1687
  const getIndexByOffset = (offset) => clamp(Math.round(-offset / props.optionHeight), 0, count() - 1);
1688
+ const currentIndex = vue.computed(() => getIndexByOffset(currentOffset.value));
1688
1689
  const momentum = (distance, duration) => {
1689
1690
  const speed = Math.abs(distance / duration);
1690
1691
  distance = currentOffset.value + speed / 3e-3 * (distance < 0 ? -1 : 1);
@@ -1724,11 +1725,16 @@ var stdin_default$1C = vue.defineComponent({
1724
1725
  moving = true;
1725
1726
  preventDefault(event, true);
1726
1727
  }
1727
- currentOffset.value = clamp(startOffset + touch.deltaY.value, -(count() * props.optionHeight), props.optionHeight);
1728
+ const newOffset = clamp(startOffset + touch.deltaY.value, -(count() * props.optionHeight), props.optionHeight);
1729
+ const newIndex = getIndexByOffset(newOffset);
1730
+ if (newIndex !== currentIndex.value) {
1731
+ emit("scrollInto", props.options[newIndex]);
1732
+ }
1733
+ currentOffset.value = newOffset;
1728
1734
  const now = Date.now();
1729
1735
  if (now - touchStartTime > MOMENTUM_TIME) {
1730
1736
  touchStartTime = now;
1731
- momentumOffset = currentOffset.value;
1737
+ momentumOffset = newOffset;
1732
1738
  }
1733
1739
  };
1734
1740
  const onTouchEnd = () => {
@@ -1815,7 +1821,7 @@ const pickerToolbarProps = {
1815
1821
  };
1816
1822
  const pickerToolbarSlots = ["cancel", "confirm", "title", "toolbar"];
1817
1823
  const pickerToolbarPropKeys = Object.keys(pickerToolbarProps);
1818
- var stdin_default$1B = vue.defineComponent({
1824
+ var stdin_default$1A = vue.defineComponent({
1819
1825
  name: name$1q,
1820
1826
  props: pickerToolbarProps,
1821
1827
  emits: ["confirm", "cancel"],
@@ -1944,7 +1950,7 @@ const stickyProps = {
1944
1950
  offsetTop: makeNumericProp(0),
1945
1951
  offsetBottom: makeNumericProp(0)
1946
1952
  };
1947
- var stdin_default$1A = vue.defineComponent({
1953
+ var stdin_default$1z = vue.defineComponent({
1948
1954
  name: name$1p,
1949
1955
  props: stickyProps,
1950
1956
  emits: ["scroll", "change"],
@@ -1962,8 +1968,12 @@ var stdin_default$1A = vue.defineComponent({
1962
1968
  // root height
1963
1969
  transform: 0
1964
1970
  });
1971
+ const isReset = vue.ref(false);
1965
1972
  const offset = vue.computed(() => unitToPx(props.position === "top" ? props.offsetTop : props.offsetBottom));
1966
1973
  const rootStyle = vue.computed(() => {
1974
+ if (isReset.value) {
1975
+ return;
1976
+ }
1967
1977
  const {
1968
1978
  fixed,
1969
1979
  height,
@@ -1977,7 +1987,7 @@ var stdin_default$1A = vue.defineComponent({
1977
1987
  }
1978
1988
  });
1979
1989
  const stickyStyle = vue.computed(() => {
1980
- if (!state.fixed) {
1990
+ if (!state.fixed || isReset.value) {
1981
1991
  return;
1982
1992
  }
1983
1993
  const style = extend(getZIndexStyle(props.zIndex), {
@@ -2036,6 +2046,18 @@ var stdin_default$1A = vue.defineComponent({
2036
2046
  passive: true
2037
2047
  });
2038
2048
  useVisibilityChange(root, onScroll);
2049
+ vue.watch([windowWidth, windowHeight], () => {
2050
+ if (!root.value || isHidden(root) || !state.fixed) {
2051
+ return;
2052
+ }
2053
+ isReset.value = true;
2054
+ vue.nextTick(() => {
2055
+ const rootRect = use.useRect(root);
2056
+ state.width = rootRect.width;
2057
+ state.height = rootRect.height;
2058
+ isReset.value = false;
2059
+ });
2060
+ });
2039
2061
  return () => {
2040
2062
  var _a;
2041
2063
  return vue.createVNode("div", {
@@ -2043,98 +2065,15 @@ var stdin_default$1A = vue.defineComponent({
2043
2065
  "style": rootStyle.value
2044
2066
  }, [vue.createVNode("div", {
2045
2067
  "class": bem$1l({
2046
- fixed: state.fixed
2068
+ fixed: state.fixed && !isReset.value
2047
2069
  }),
2048
2070
  "style": stickyStyle.value
2049
2071
  }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]);
2050
2072
  };
2051
2073
  }
2052
2074
  });
2053
- const Sticky = withInstall(stdin_default$1A);
2054
- const [name$1o, bem$1k] = createNamespace("tab");
2055
- var stdin_default$1z = vue.defineComponent({
2056
- name: name$1o,
2057
- props: {
2058
- id: String,
2059
- dot: Boolean,
2060
- type: String,
2061
- color: String,
2062
- title: String,
2063
- badge: numericProp,
2064
- shrink: Boolean,
2065
- isActive: Boolean,
2066
- disabled: Boolean,
2067
- controls: String,
2068
- scrollable: Boolean,
2069
- activeColor: String,
2070
- inactiveColor: String,
2071
- showZeroBadge: truthProp
2072
- },
2073
- setup(props, {
2074
- slots
2075
- }) {
2076
- const style = vue.computed(() => {
2077
- const style2 = {};
2078
- const {
2079
- type,
2080
- color,
2081
- disabled,
2082
- isActive,
2083
- activeColor,
2084
- inactiveColor
2085
- } = props;
2086
- const isCard = type === "card";
2087
- if (color && isCard) {
2088
- style2.borderColor = color;
2089
- if (!disabled) {
2090
- if (isActive) {
2091
- style2.backgroundColor = color;
2092
- } else {
2093
- style2.color = color;
2094
- }
2095
- }
2096
- }
2097
- const titleColor = isActive ? activeColor : inactiveColor;
2098
- if (titleColor) {
2099
- style2.color = titleColor;
2100
- }
2101
- return style2;
2102
- });
2103
- const renderText = () => {
2104
- const Text = vue.createVNode("span", {
2105
- "class": bem$1k("text", {
2106
- ellipsis: !props.scrollable
2107
- })
2108
- }, [slots.title ? slots.title() : props.title]);
2109
- if (props.dot || isDef(props.badge) && props.badge !== "") {
2110
- return vue.createVNode(Badge, {
2111
- "dot": props.dot,
2112
- "content": props.badge,
2113
- "showZero": props.showZeroBadge
2114
- }, {
2115
- default: () => [Text]
2116
- });
2117
- }
2118
- return Text;
2119
- };
2120
- return () => vue.createVNode("div", {
2121
- "id": props.id,
2122
- "role": "tab",
2123
- "class": [bem$1k([props.type, {
2124
- grow: props.scrollable && !props.shrink,
2125
- shrink: props.shrink,
2126
- active: props.isActive,
2127
- disabled: props.disabled
2128
- }])],
2129
- "style": style.value,
2130
- "tabindex": props.disabled ? void 0 : props.isActive ? 0 : -1,
2131
- "aria-selected": props.isActive,
2132
- "aria-disabled": props.disabled || void 0,
2133
- "aria-controls": props.controls
2134
- }, [renderText()]);
2135
- }
2136
- });
2137
- const [name$1n, bem$1j] = createNamespace("swipe");
2075
+ const Sticky = withInstall(stdin_default$1z);
2076
+ const [name$1o, bem$1k] = createNamespace("swipe");
2138
2077
  const swipeProps = {
2139
2078
  loop: truthProp,
2140
2079
  width: numericProp,
@@ -2149,9 +2088,9 @@ const swipeProps = {
2149
2088
  showIndicators: truthProp,
2150
2089
  stopPropagation: truthProp
2151
2090
  };
2152
- const SWIPE_KEY = Symbol(name$1n);
2091
+ const SWIPE_KEY = Symbol(name$1o);
2153
2092
  var stdin_default$1y = vue.defineComponent({
2154
- name: name$1n,
2093
+ name: name$1o,
2155
2094
  props: swipeProps,
2156
2095
  emits: ["change", "dragStart", "dragEnd"],
2157
2096
  setup(props, {
@@ -2429,7 +2368,7 @@ var stdin_default$1y = vue.defineComponent({
2429
2368
  } : void 0;
2430
2369
  return vue.createVNode("i", {
2431
2370
  "style": style,
2432
- "class": bem$1j("indicator", {
2371
+ "class": bem$1k("indicator", {
2433
2372
  active
2434
2373
  })
2435
2374
  }, null);
@@ -2443,7 +2382,7 @@ var stdin_default$1y = vue.defineComponent({
2443
2382
  }
2444
2383
  if (props.showIndicators && count.value > 1) {
2445
2384
  return vue.createVNode("div", {
2446
- "class": bem$1j("indicators", {
2385
+ "class": bem$1k("indicators", {
2447
2386
  vertical: props.vertical
2448
2387
  })
2449
2388
  }, [Array(count.value).fill("").map(renderDot)]);
@@ -2485,11 +2424,11 @@ var stdin_default$1y = vue.defineComponent({
2485
2424
  var _a;
2486
2425
  return vue.createVNode("div", {
2487
2426
  "ref": root,
2488
- "class": bem$1j()
2427
+ "class": bem$1k()
2489
2428
  }, [vue.createVNode("div", {
2490
2429
  "ref": track,
2491
2430
  "style": trackStyle.value,
2492
- "class": bem$1j("track", {
2431
+ "class": bem$1k("track", {
2493
2432
  vertical: props.vertical
2494
2433
  }),
2495
2434
  "onTouchstartPassive": onTouchStart,
@@ -2500,9 +2439,9 @@ var stdin_default$1y = vue.defineComponent({
2500
2439
  }
2501
2440
  });
2502
2441
  const Swipe = withInstall(stdin_default$1y);
2503
- const [name$1m, bem$1i] = createNamespace("tabs");
2442
+ const [name$1n, bem$1j] = createNamespace("tabs");
2504
2443
  var stdin_default$1x = vue.defineComponent({
2505
- name: name$1m,
2444
+ name: name$1n,
2506
2445
  props: {
2507
2446
  count: makeRequiredProp(Number),
2508
2447
  inited: Boolean,
@@ -2526,7 +2465,7 @@ var stdin_default$1x = vue.defineComponent({
2526
2465
  return vue.createVNode(Swipe, {
2527
2466
  "ref": swipeRef,
2528
2467
  "loop": false,
2529
- "class": bem$1i("track"),
2468
+ "class": bem$1j("track"),
2530
2469
  "duration": +props.duration * 1e3,
2531
2470
  "touchable": props.swipeable,
2532
2471
  "lazyRender": props.lazyRender,
@@ -2554,13 +2493,13 @@ var stdin_default$1x = vue.defineComponent({
2554
2493
  swipeRef
2555
2494
  });
2556
2495
  return () => vue.createVNode("div", {
2557
- "class": bem$1i("content", {
2496
+ "class": bem$1j("content", {
2558
2497
  animated: props.animated || props.swipeable
2559
2498
  })
2560
2499
  }, [renderChildren()]);
2561
2500
  }
2562
2501
  });
2563
- const [name$1l, bem$1h] = createNamespace("tabs");
2502
+ const [name$1m, bem$1i] = createNamespace("tabs");
2564
2503
  const tabsProps = {
2565
2504
  type: makeStringProp("line"),
2566
2505
  color: String,
@@ -2583,9 +2522,9 @@ const tabsProps = {
2583
2522
  titleActiveColor: String,
2584
2523
  titleInactiveColor: String
2585
2524
  };
2586
- const TABS_KEY = Symbol(name$1l);
2525
+ const TABS_KEY = Symbol(name$1m);
2587
2526
  var stdin_default$1w = vue.defineComponent({
2588
- name: name$1l,
2527
+ name: name$1m,
2589
2528
  props: tabsProps,
2590
2529
  emits: ["change", "scroll", "rendered", "clickTab", "update:active"],
2591
2530
  setup(props, {
@@ -2774,28 +2713,10 @@ var stdin_default$1w = vue.defineComponent({
2774
2713
  setCurrentIndex(index);
2775
2714
  }
2776
2715
  };
2777
- const renderNav = () => children.map((item, index) => vue.createVNode(stdin_default$1z, vue.mergeProps({
2778
- "key": item.id,
2779
- "id": `${id}-${index}`,
2780
- "ref": setTitleRefs(index),
2781
- "type": props.type,
2782
- "color": props.color,
2783
- "style": item.titleStyle,
2784
- "class": item.titleClass,
2785
- "shrink": props.shrink,
2786
- "isActive": index === state.currentIndex,
2787
- "controls": item.id,
2788
- "scrollable": scrollable.value,
2789
- "activeColor": props.titleActiveColor,
2790
- "inactiveColor": props.titleInactiveColor,
2791
- "onClick": (event) => onClickTab(item, index, event)
2792
- }, pick(item, ["dot", "badge", "title", "disabled", "showZeroBadge"])), {
2793
- title: item.$slots.title
2794
- }));
2795
2716
  const renderLine = () => {
2796
2717
  if (props.type === "line" && children.length) {
2797
2718
  return vue.createVNode("div", {
2798
- "class": bem$1h("line"),
2719
+ "class": bem$1i("line"),
2799
2720
  "style": state.lineStyle
2800
2721
  }, null);
2801
2722
  }
@@ -2809,19 +2730,19 @@ var stdin_default$1w = vue.defineComponent({
2809
2730
  } = props;
2810
2731
  const Header = [vue.createVNode("div", {
2811
2732
  "ref": sticky ? void 0 : wrapRef,
2812
- "class": [bem$1h("wrap"), {
2733
+ "class": [bem$1i("wrap"), {
2813
2734
  [BORDER_TOP_BOTTOM]: type === "line" && border
2814
2735
  }]
2815
2736
  }, [vue.createVNode("div", {
2816
2737
  "ref": navRef,
2817
2738
  "role": "tablist",
2818
- "class": bem$1h("nav", [type, {
2739
+ "class": bem$1i("nav", [type, {
2819
2740
  shrink: props.shrink,
2820
2741
  complete: scrollable.value
2821
2742
  }]),
2822
2743
  "style": navStyle.value,
2823
2744
  "aria-orientation": "horizontal"
2824
- }, [(_a = slots["nav-left"]) == null ? void 0 : _a.call(slots), renderNav(), renderLine(), (_b = slots["nav-right"]) == null ? void 0 : _b.call(slots)])]), (_c = slots["nav-bottom"]) == null ? void 0 : _c.call(slots)];
2745
+ }, [(_a = slots["nav-left"]) == null ? void 0 : _a.call(slots), children.map((item) => item.renderTitle(onClickTab)), renderLine(), (_b = slots["nav-right"]) == null ? void 0 : _b.call(slots)])]), (_c = slots["nav-bottom"]) == null ? void 0 : _c.call(slots)];
2825
2746
  if (sticky) {
2826
2747
  return vue.createVNode("div", {
2827
2748
  "ref": wrapRef
@@ -2829,7 +2750,16 @@ var stdin_default$1w = vue.defineComponent({
2829
2750
  }
2830
2751
  return Header;
2831
2752
  };
2832
- vue.watch([() => props.color, windowWidth], setLine);
2753
+ const resize = () => {
2754
+ setLine();
2755
+ vue.nextTick(() => {
2756
+ var _a, _b;
2757
+ scrollIntoView(true);
2758
+ (_b = (_a = contentRef.value) == null ? void 0 : _a.swipeRef.value) == null ? void 0 : _b.resize();
2759
+ });
2760
+ };
2761
+ vue.watch(() => [props.color, props.duration, props.lineWidth, props.lineHeight], setLine);
2762
+ vue.watch(windowWidth, resize);
2833
2763
  vue.watch(() => props.active, (value) => {
2834
2764
  if (value !== currentName.value) {
2835
2765
  setCurrentIndexByName(value);
@@ -2855,13 +2785,6 @@ var stdin_default$1w = vue.defineComponent({
2855
2785
  });
2856
2786
  };
2857
2787
  const onRendered = (name2, title) => emit("rendered", name2, title);
2858
- const resize = () => {
2859
- setLine();
2860
- vue.nextTick(() => {
2861
- var _a, _b;
2862
- return (_b = (_a = contentRef.value) == null ? void 0 : _a.swipeRef.value) == null ? void 0 : _b.resize();
2863
- });
2864
- };
2865
2788
  useExpose({
2866
2789
  resize,
2867
2790
  scrollTo
@@ -2878,13 +2801,15 @@ var stdin_default$1w = vue.defineComponent({
2878
2801
  id,
2879
2802
  props,
2880
2803
  setLine,
2804
+ scrollable,
2881
2805
  onRendered,
2882
2806
  currentName,
2807
+ setTitleRefs,
2883
2808
  scrollIntoView
2884
2809
  });
2885
2810
  return () => vue.createVNode("div", {
2886
2811
  "ref": root,
2887
- "class": bem$1h([props.type])
2812
+ "class": bem$1i([props.type])
2888
2813
  }, [props.sticky ? vue.createVNode(Sticky, {
2889
2814
  "container": root.value,
2890
2815
  "offsetTop": offsetTopPx.value,
@@ -2911,6 +2836,89 @@ var stdin_default$1w = vue.defineComponent({
2911
2836
  });
2912
2837
  const TAB_STATUS_KEY = Symbol();
2913
2838
  const useTabStatus = () => vue.inject(TAB_STATUS_KEY, null);
2839
+ const [name$1l, bem$1h] = createNamespace("tab");
2840
+ const TabTitle = vue.defineComponent({
2841
+ name: name$1l,
2842
+ props: {
2843
+ id: String,
2844
+ dot: Boolean,
2845
+ type: String,
2846
+ color: String,
2847
+ title: String,
2848
+ badge: numericProp,
2849
+ shrink: Boolean,
2850
+ isActive: Boolean,
2851
+ disabled: Boolean,
2852
+ controls: String,
2853
+ scrollable: Boolean,
2854
+ activeColor: String,
2855
+ inactiveColor: String,
2856
+ showZeroBadge: truthProp
2857
+ },
2858
+ setup(props, {
2859
+ slots
2860
+ }) {
2861
+ const style = vue.computed(() => {
2862
+ const style2 = {};
2863
+ const {
2864
+ type,
2865
+ color,
2866
+ disabled,
2867
+ isActive,
2868
+ activeColor,
2869
+ inactiveColor
2870
+ } = props;
2871
+ const isCard = type === "card";
2872
+ if (color && isCard) {
2873
+ style2.borderColor = color;
2874
+ if (!disabled) {
2875
+ if (isActive) {
2876
+ style2.backgroundColor = color;
2877
+ } else {
2878
+ style2.color = color;
2879
+ }
2880
+ }
2881
+ }
2882
+ const titleColor = isActive ? activeColor : inactiveColor;
2883
+ if (titleColor) {
2884
+ style2.color = titleColor;
2885
+ }
2886
+ return style2;
2887
+ });
2888
+ const renderText = () => {
2889
+ const Text = vue.createVNode("span", {
2890
+ "class": bem$1h("text", {
2891
+ ellipsis: !props.scrollable
2892
+ })
2893
+ }, [slots.title ? slots.title() : props.title]);
2894
+ if (props.dot || isDef(props.badge) && props.badge !== "") {
2895
+ return vue.createVNode(Badge, {
2896
+ "dot": props.dot,
2897
+ "content": props.badge,
2898
+ "showZero": props.showZeroBadge
2899
+ }, {
2900
+ default: () => [Text]
2901
+ });
2902
+ }
2903
+ return Text;
2904
+ };
2905
+ return () => vue.createVNode("div", {
2906
+ "id": props.id,
2907
+ "role": "tab",
2908
+ "class": [bem$1h([props.type, {
2909
+ grow: props.scrollable && !props.shrink,
2910
+ shrink: props.shrink,
2911
+ active: props.isActive,
2912
+ disabled: props.disabled
2913
+ }])],
2914
+ "style": style.value,
2915
+ "tabindex": props.disabled ? void 0 : props.isActive ? 0 : -1,
2916
+ "aria-selected": props.isActive,
2917
+ "aria-disabled": props.disabled || void 0,
2918
+ "aria-controls": props.controls
2919
+ }, [renderText()]);
2920
+ }
2921
+ });
2914
2922
  const [name$1k, bem$1g] = createNamespace("swipe-item");
2915
2923
  var stdin_default$1v = vue.defineComponent({
2916
2924
  name: name$1k,
@@ -3004,6 +3012,7 @@ var stdin_default$1u = vue.defineComponent({
3004
3012
  }) {
3005
3013
  const id = useId();
3006
3014
  const inited = vue.ref(false);
3015
+ const instance2 = vue.getCurrentInstance();
3007
3016
  const {
3008
3017
  parent,
3009
3018
  index
@@ -3033,6 +3042,21 @@ var stdin_default$1u = vue.defineComponent({
3033
3042
  }
3034
3043
  return isActive;
3035
3044
  });
3045
+ const renderTitle = (onClickTab) => vue.createVNode(TabTitle, vue.mergeProps({
3046
+ "key": id,
3047
+ "id": `${parent.id}-${index.value}`,
3048
+ "ref": parent.setTitleRefs(index.value),
3049
+ "style": props.titleStyle,
3050
+ "class": props.titleClass,
3051
+ "isActive": active.value,
3052
+ "controls": id,
3053
+ "scrollable": parent.scrollable.value,
3054
+ "activeColor": parent.props.titleActiveColor,
3055
+ "inactiveColor": parent.props.titleInactiveColor,
3056
+ "onClick": (event) => onClickTab(instance2.proxy, index.value, event)
3057
+ }, pick(parent.props, ["type", "color", "shrink"]), pick(props, ["dot", "badge", "title", "disabled", "showZeroBadge"])), {
3058
+ title: slots.title
3059
+ });
3036
3060
  const hasInactiveClass = vue.ref(!active.value);
3037
3061
  vue.watch(active, (val) => {
3038
3062
  if (val) {
@@ -3048,6 +3072,10 @@ var stdin_default$1u = vue.defineComponent({
3048
3072
  parent.scrollIntoView();
3049
3073
  });
3050
3074
  vue.provide(TAB_STATUS_KEY, active);
3075
+ useExpose({
3076
+ id,
3077
+ renderTitle
3078
+ });
3051
3079
  return () => {
3052
3080
  var _a;
3053
3081
  const label = `${parent.id}-${index.value}`;
@@ -3082,9 +3110,6 @@ var stdin_default$1u = vue.defineComponent({
3082
3110
  }
3083
3111
  const shouldRender = inited.value || scrollspy || !lazyRender;
3084
3112
  const Content = shouldRender ? (_a = slots.default) == null ? void 0 : _a.call(slots) : null;
3085
- useExpose({
3086
- id
3087
- });
3088
3113
  return vue.withDirectives(vue.createVNode("div", {
3089
3114
  "id": id,
3090
3115
  "role": "tabpanel",
@@ -3132,7 +3157,7 @@ var stdin_default$1t = vue.defineComponent({
3132
3157
  const confirmButtonText = showNextButton() ? props.nextStepText : props.confirmButtonText;
3133
3158
  return vue.createVNode("div", {
3134
3159
  "class": bem$1e()
3135
- }, [vue.createVNode(stdin_default$1B, {
3160
+ }, [vue.createVNode(stdin_default$1A, {
3136
3161
  "title": props.title,
3137
3162
  "cancelButtonText": props.cancelButtonText,
3138
3163
  "confirmButtonText": confirmButtonText,
@@ -3174,7 +3199,7 @@ const pickerProps = extend({}, pickerSharedProps, {
3174
3199
  var stdin_default$1s = vue.defineComponent({
3175
3200
  name: name$1s,
3176
3201
  props: pickerProps,
3177
- emits: ["confirm", "cancel", "change", "clickOption", "update:modelValue"],
3202
+ emits: ["confirm", "cancel", "change", "scrollInto", "clickOption", "update:modelValue"],
3178
3203
  setup(props, {
3179
3204
  emit,
3180
3205
  slots
@@ -3236,10 +3261,14 @@ var stdin_default$1s = vue.defineComponent({
3236
3261
  }, getEventParams()));
3237
3262
  });
3238
3263
  };
3239
- const onClickOption = (currentOption, columnIndex) => emit("clickOption", extend({
3240
- columnIndex,
3241
- currentOption
3242
- }, getEventParams()));
3264
+ const onClickOption = (currentOption, columnIndex) => {
3265
+ const params = {
3266
+ columnIndex,
3267
+ currentOption
3268
+ };
3269
+ emit("clickOption", extend(getEventParams(), params));
3270
+ emit("scrollInto", params);
3271
+ };
3243
3272
  const confirm = () => {
3244
3273
  children.forEach((child) => child.stopMomentum());
3245
3274
  const params = getEventParams();
@@ -3249,7 +3278,7 @@ var stdin_default$1s = vue.defineComponent({
3249
3278
  return params;
3250
3279
  };
3251
3280
  const cancel = () => emit("cancel", getEventParams());
3252
- const renderColumnItems = () => currentColumns.value.map((options, columnIndex) => vue.createVNode(stdin_default$1C, {
3281
+ const renderColumnItems = () => currentColumns.value.map((options, columnIndex) => vue.createVNode(stdin_default$1B, {
3253
3282
  "value": selectedValues.value[columnIndex],
3254
3283
  "fields": fields.value,
3255
3284
  "options": options,
@@ -3259,7 +3288,13 @@ var stdin_default$1s = vue.defineComponent({
3259
3288
  "swipeDuration": props.swipeDuration,
3260
3289
  "visibleOptionNum": props.visibleOptionNum,
3261
3290
  "onChange": (value) => onChange(value, columnIndex),
3262
- "onClickOption": (option) => onClickOption(option, columnIndex)
3291
+ "onClickOption": (option) => onClickOption(option, columnIndex),
3292
+ "onScrollInto": (option) => {
3293
+ emit("scrollInto", {
3294
+ currentOption: option,
3295
+ columnIndex
3296
+ });
3297
+ }
3263
3298
  }, {
3264
3299
  option: slots.option
3265
3300
  }));
@@ -3293,7 +3328,7 @@ var stdin_default$1s = vue.defineComponent({
3293
3328
  };
3294
3329
  const renderToolbar = () => {
3295
3330
  if (props.showToolbar && !parent) {
3296
- return vue.createVNode(stdin_default$1B, vue.mergeProps(pick(props, pickerToolbarPropKeys), {
3331
+ return vue.createVNode(stdin_default$1A, vue.mergeProps(pick(props, pickerToolbarPropKeys), {
3297
3332
  "onConfirm": confirm,
3298
3333
  "onCancel": cancel
3299
3334
  }), pick(slots, pickerToolbarSlots));
@@ -7757,7 +7792,7 @@ var stdin_default$_ = vue.defineComponent({
7757
7792
  }
7758
7793
  });
7759
7794
  const CollapseItem = withInstall(stdin_default$_);
7760
- const ConfigProvider = withInstall(stdin_default$1L);
7795
+ const ConfigProvider = withInstall(stdin_default$1K);
7761
7796
  const [name$Q, bem$P, t$d] = createNamespace("contact-card");
7762
7797
  const contactCardProps = {
7763
7798
  tel: String,
@@ -11147,7 +11182,9 @@ const paginationProps = {
11147
11182
  totalItems: makeNumericProp(0),
11148
11183
  showPageSize: makeNumericProp(5),
11149
11184
  itemsPerPage: makeNumericProp(10),
11150
- forceEllipses: Boolean
11185
+ forceEllipses: Boolean,
11186
+ showPrevButton: truthProp,
11187
+ showNextButton: truthProp
11151
11188
  };
11152
11189
  var stdin_default$A = vue.defineComponent({
11153
11190
  name: name$s,
@@ -11217,8 +11254,12 @@ var stdin_default$A = vue.defineComponent({
11217
11254
  const renderPrevButton = () => {
11218
11255
  const {
11219
11256
  mode,
11220
- modelValue
11257
+ modelValue,
11258
+ showPrevButton
11221
11259
  } = props;
11260
+ if (!showPrevButton) {
11261
+ return;
11262
+ }
11222
11263
  const slot = slots["prev-text"];
11223
11264
  const disabled = modelValue === 1;
11224
11265
  return vue.createVNode("li", {
@@ -11236,8 +11277,12 @@ var stdin_default$A = vue.defineComponent({
11236
11277
  const renderNextButton = () => {
11237
11278
  const {
11238
11279
  mode,
11239
- modelValue
11280
+ modelValue,
11281
+ showNextButton
11240
11282
  } = props;
11283
+ if (!showNextButton) {
11284
+ return;
11285
+ }
11241
11286
  const slot = slots["next-text"];
11242
11287
  const disabled = modelValue === count.value;
11243
11288
  return vue.createVNode("li", {
@@ -14389,6 +14434,7 @@ var stdin_default$4 = vue.defineComponent({
14389
14434
  if (props.image && !slots.content) {
14390
14435
  return vue.createVNode("image", {
14391
14436
  "href": imageBase64.value,
14437
+ "xlink:href": imageBase64.value,
14392
14438
  "x": "0",
14393
14439
  "y": "0",
14394
14440
  "width": props.width,
@@ -14417,6 +14463,7 @@ var stdin_default$4 = vue.defineComponent({
14417
14463
  "width": svgWidth,
14418
14464
  "height": svgHeight,
14419
14465
  "xmlns": "http://www.w3.org/2000/svg",
14466
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
14420
14467
  "style": {
14421
14468
  padding: `0 ${props.gapX}px ${props.gapY}px 0`,
14422
14469
  opacity: props.opacity
@@ -14439,7 +14486,7 @@ var stdin_default$4 = vue.defineComponent({
14439
14486
  };
14440
14487
  const makeSvgToBlobUrl = (svgStr) => {
14441
14488
  const svgBlob = new Blob([svgStr], {
14442
- type: "image/svg+xml;charset=utf-8"
14489
+ type: "image/svg+xml"
14443
14490
  });
14444
14491
  return URL.createObjectURL(svgBlob);
14445
14492
  };
@@ -15357,7 +15404,7 @@ const Lazyload = {
15357
15404
  });
15358
15405
  }
15359
15406
  };
15360
- const version = "4.2.0";
15407
+ const version = "4.2.1";
15361
15408
  function install(app) {
15362
15409
  const components = [
15363
15410
  ActionBar,