vant 4.6.7 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/es/address-edit/AddressEdit.d.ts +2 -1
  2. package/es/address-edit/AddressEdit.mjs +9 -3
  3. package/es/address-edit/index.d.ts +2 -1
  4. package/es/calendar/Calendar.d.ts +2 -1
  5. package/es/calendar/Calendar.mjs +3 -2
  6. package/es/calendar/CalendarDay.d.ts +2 -1
  7. package/es/calendar/CalendarDay.mjs +3 -1
  8. package/es/calendar/CalendarMonth.d.ts +2 -1
  9. package/es/calendar/CalendarMonth.mjs +3 -2
  10. package/es/calendar/index.d.ts +2 -1
  11. package/es/cell/index.css +1 -1
  12. package/es/config-provider/ConfigProvider.mjs +5 -1
  13. package/es/config-provider/types.d.ts +61 -1
  14. package/es/dialog/function-call.d.ts +3 -3
  15. package/es/dialog/function-call.mjs +1 -1
  16. package/es/floating-panel/FloatingPanel.mjs +1 -1
  17. package/es/icon/index.css +1 -1
  18. package/es/index.d.ts +1 -1
  19. package/es/index.mjs +1 -1
  20. package/es/nav-bar/NavBar.d.ts +8 -0
  21. package/es/nav-bar/NavBar.mjs +18 -4
  22. package/es/nav-bar/index.css +1 -1
  23. package/es/nav-bar/index.d.ts +6 -0
  24. package/es/signature/Signature.mjs +10 -6
  25. package/es/swipe-cell/SwipeCell.mjs +10 -1
  26. package/es/uploader/index.css +1 -1
  27. package/es/utils/interceptor.d.ts +2 -1
  28. package/es/utils/interceptor.mjs +3 -2
  29. package/lib/address-edit/AddressEdit.d.ts +2 -1
  30. package/lib/address-edit/AddressEdit.js +9 -3
  31. package/lib/address-edit/index.d.ts +2 -1
  32. package/lib/calendar/Calendar.d.ts +2 -1
  33. package/lib/calendar/Calendar.js +3 -2
  34. package/lib/calendar/CalendarDay.d.ts +2 -1
  35. package/lib/calendar/CalendarDay.js +3 -1
  36. package/lib/calendar/CalendarMonth.d.ts +2 -1
  37. package/lib/calendar/CalendarMonth.js +3 -2
  38. package/lib/calendar/index.d.ts +2 -1
  39. package/lib/cell/index.css +1 -1
  40. package/lib/config-provider/ConfigProvider.js +5 -1
  41. package/lib/config-provider/types.d.ts +61 -1
  42. package/lib/dialog/function-call.d.ts +3 -3
  43. package/lib/dialog/function-call.js +1 -1
  44. package/lib/floating-panel/FloatingPanel.js +1 -1
  45. package/lib/icon/index.css +1 -1
  46. package/lib/index.css +1 -1
  47. package/lib/index.d.ts +1 -1
  48. package/lib/index.js +1 -1
  49. package/lib/nav-bar/NavBar.d.ts +8 -0
  50. package/lib/nav-bar/NavBar.js +18 -4
  51. package/lib/nav-bar/index.css +1 -1
  52. package/lib/nav-bar/index.d.ts +6 -0
  53. package/lib/signature/Signature.js +10 -6
  54. package/lib/swipe-cell/SwipeCell.js +10 -1
  55. package/lib/uploader/index.css +1 -1
  56. package/lib/utils/interceptor.d.ts +2 -1
  57. package/lib/utils/interceptor.js +3 -2
  58. package/lib/vant.cjs.js +67 -25
  59. package/lib/vant.es.js +67 -25
  60. package/lib/vant.js +67 -25
  61. package/lib/vant.min.js +1 -1
  62. package/lib/web-types.json +1 -1
  63. package/package.json +2 -2
package/lib/index.d.ts CHANGED
@@ -105,4 +105,4 @@ declare namespace _default {
105
105
  }
106
106
  export default _default;
107
107
  export function install(app: any): void;
108
- export const version: "4.6.7";
108
+ export const version: "4.7.0";
package/lib/index.js CHANGED
@@ -224,7 +224,7 @@ __reExport(stdin_exports, require("./toast"), module.exports);
224
224
  __reExport(stdin_exports, require("./tree-select"), module.exports);
225
225
  __reExport(stdin_exports, require("./uploader"), module.exports);
226
226
  __reExport(stdin_exports, require("./watermark"), module.exports);
227
- const version = "4.6.7";
227
+ const version = "4.7.0";
228
228
  function install(app) {
229
229
  const components = [
230
230
  import_action_bar.ActionBar,
@@ -9,6 +9,8 @@ export declare const navBarProps: {
9
9
  };
10
10
  leftText: StringConstructor;
11
11
  rightText: StringConstructor;
12
+ leftDisabled: BooleanConstructor;
13
+ rightDisabled: BooleanConstructor;
12
14
  leftArrow: BooleanConstructor;
13
15
  placeholder: BooleanConstructor;
14
16
  safeAreaInsetTop: BooleanConstructor;
@@ -28,6 +30,8 @@ declare const _default: import("vue").DefineComponent<{
28
30
  };
29
31
  leftText: StringConstructor;
30
32
  rightText: StringConstructor;
33
+ leftDisabled: BooleanConstructor;
34
+ rightDisabled: BooleanConstructor;
31
35
  leftArrow: BooleanConstructor;
32
36
  placeholder: BooleanConstructor;
33
37
  safeAreaInsetTop: BooleanConstructor;
@@ -45,6 +49,8 @@ declare const _default: import("vue").DefineComponent<{
45
49
  };
46
50
  leftText: StringConstructor;
47
51
  rightText: StringConstructor;
52
+ leftDisabled: BooleanConstructor;
53
+ rightDisabled: BooleanConstructor;
48
54
  leftArrow: BooleanConstructor;
49
55
  placeholder: BooleanConstructor;
50
56
  safeAreaInsetTop: BooleanConstructor;
@@ -61,6 +67,8 @@ declare const _default: import("vue").DefineComponent<{
61
67
  clickable: boolean;
62
68
  placeholder: boolean;
63
69
  safeAreaInsetTop: boolean;
70
+ leftDisabled: boolean;
71
+ rightDisabled: boolean;
64
72
  leftArrow: boolean;
65
73
  }, {}>;
66
74
  export default _default;
@@ -34,6 +34,8 @@ const navBarProps = {
34
34
  border: import_utils.truthProp,
35
35
  leftText: String,
36
36
  rightText: String,
37
+ leftDisabled: Boolean,
38
+ rightDisabled: Boolean,
37
39
  leftArrow: Boolean,
38
40
  placeholder: Boolean,
39
41
  safeAreaInsetTop: Boolean,
@@ -49,8 +51,16 @@ var stdin_default = (0, import_vue2.defineComponent)({
49
51
  }) {
50
52
  const navBarRef = (0, import_vue2.ref)();
51
53
  const renderPlaceholder = (0, import_use_placeholder.usePlaceholder)(navBarRef, bem);
52
- const onClickLeft = (event) => emit("clickLeft", event);
53
- const onClickRight = (event) => emit("clickRight", event);
54
+ const onClickLeft = (event) => {
55
+ if (!props.leftDisabled) {
56
+ emit("clickLeft", event);
57
+ }
58
+ };
59
+ const onClickRight = (event) => {
60
+ if (!props.rightDisabled) {
61
+ emit("clickRight", event);
62
+ }
63
+ };
54
64
  const renderLeft = () => {
55
65
  if (slots.left) {
56
66
  return slots.left();
@@ -92,12 +102,16 @@ var stdin_default = (0, import_vue2.defineComponent)({
92
102
  }, [(0, import_vue.createVNode)("div", {
93
103
  "class": bem("content")
94
104
  }, [hasLeft && (0, import_vue.createVNode)("div", {
95
- "class": [bem("left"), props.clickable ? import_utils.HAPTICS_FEEDBACK : ""],
105
+ "class": [bem("left", {
106
+ disabled: props.leftDisabled
107
+ }), props.clickable && !props.leftDisabled ? import_utils.HAPTICS_FEEDBACK : ""],
96
108
  "onClick": onClickLeft
97
109
  }, [renderLeft()]), (0, import_vue.createVNode)("div", {
98
110
  "class": [bem("title"), "van-ellipsis"]
99
111
  }, [slots.title ? slots.title() : title]), hasRight && (0, import_vue.createVNode)("div", {
100
- "class": [bem("right"), props.clickable ? import_utils.HAPTICS_FEEDBACK : ""],
112
+ "class": [bem("right", {
113
+ disabled: props.rightDisabled
114
+ }), props.clickable && !props.rightDisabled ? import_utils.HAPTICS_FEEDBACK : ""],
101
115
  "onClick": onClickRight
102
116
  }, [renderRight()])])]);
103
117
  };
@@ -1 +1 @@
1
- :root{--van-nav-bar-height: 46px;--van-nav-bar-background: var(--van-background-2);--van-nav-bar-arrow-size: 16px;--van-nav-bar-icon-color: var(--van-primary-color);--van-nav-bar-text-color: var(--van-primary-color);--van-nav-bar-title-font-size: var(--van-font-size-lg);--van-nav-bar-title-text-color: var(--van-text-color);--van-nav-bar-z-index: 1}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}
1
+ :root{--van-nav-bar-height: 46px;--van-nav-bar-background: var(--van-background-2);--van-nav-bar-arrow-size: 16px;--van-nav-bar-icon-color: var(--van-primary-color);--van-nav-bar-text-color: var(--van-primary-color);--van-nav-bar-title-font-size: var(--van-font-size-lg);--van-nav-bar-title-text-color: var(--van-text-color);--van-nav-bar-z-index: 1;--van-nav-bar-disabled-opacity: var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}
@@ -8,6 +8,8 @@ export declare const NavBar: import("../utils").WithInstall<import("vue").Define
8
8
  };
9
9
  leftText: StringConstructor;
10
10
  rightText: StringConstructor;
11
+ leftDisabled: BooleanConstructor;
12
+ rightDisabled: BooleanConstructor;
11
13
  leftArrow: BooleanConstructor;
12
14
  placeholder: BooleanConstructor;
13
15
  safeAreaInsetTop: BooleanConstructor;
@@ -25,6 +27,8 @@ export declare const NavBar: import("../utils").WithInstall<import("vue").Define
25
27
  };
26
28
  leftText: StringConstructor;
27
29
  rightText: StringConstructor;
30
+ leftDisabled: BooleanConstructor;
31
+ rightDisabled: BooleanConstructor;
28
32
  leftArrow: BooleanConstructor;
29
33
  placeholder: BooleanConstructor;
30
34
  safeAreaInsetTop: BooleanConstructor;
@@ -41,6 +45,8 @@ export declare const NavBar: import("../utils").WithInstall<import("vue").Define
41
45
  clickable: boolean;
42
46
  placeholder: boolean;
43
47
  safeAreaInsetTop: boolean;
48
+ leftDisabled: boolean;
49
+ rightDisabled: boolean;
44
50
  leftArrow: boolean;
45
51
  }, {}>>;
46
52
  export default NavBar;
@@ -91,12 +91,16 @@ var stdin_default = (0, import_vue2.defineComponent)({
91
91
  const empty = document.createElement("canvas");
92
92
  empty.width = canvas.width;
93
93
  empty.height = canvas.height;
94
+ if (props.backgroundColor) {
95
+ const emptyCtx = empty.getContext("2d");
96
+ setCanvasBgColor(emptyCtx);
97
+ }
94
98
  return canvas.toDataURL() === empty.toDataURL();
95
99
  };
96
- const setCanvasBgColor = () => {
97
- if (state.ctx && props.backgroundColor) {
98
- state.ctx.fillStyle = props.backgroundColor;
99
- state.ctx.fillRect(0, 0, state.width, state.height);
100
+ const setCanvasBgColor = (ctx) => {
101
+ if (ctx && props.backgroundColor) {
102
+ ctx.fillStyle = props.backgroundColor;
103
+ ctx.fillRect(0, 0, state.width, state.height);
100
104
  }
101
105
  };
102
106
  const submit = () => {
@@ -119,7 +123,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
119
123
  if (state.ctx) {
120
124
  state.ctx.clearRect(0, 0, state.width, state.height);
121
125
  state.ctx.closePath();
122
- setCanvasBgColor();
126
+ setCanvasBgColor(state.ctx);
123
127
  }
124
128
  emit("clear");
125
129
  };
@@ -130,7 +134,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
130
134
  state.width = (((_b = wrapRef.value) == null ? void 0 : _b.offsetWidth) || 0) * state.ratio;
131
135
  state.height = (((_c = wrapRef.value) == null ? void 0 : _c.offsetHeight) || 0) * state.ratio;
132
136
  (0, import_vue2.nextTick)(() => {
133
- setCanvasBgColor();
137
+ setCanvasBgColor(state.ctx);
134
138
  });
135
139
  }
136
140
  });
@@ -47,6 +47,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
47
47
  let opened;
48
48
  let lockClick;
49
49
  let startOffset;
50
+ let isInBeforeClosing;
50
51
  const root = (0, import_vue2.ref)();
51
52
  const leftRef = (0, import_vue2.ref)();
52
53
  const rightRef = (0, import_vue2.ref)();
@@ -123,14 +124,22 @@ var stdin_default = (0, import_vue2.defineComponent)({
123
124
  }
124
125
  };
125
126
  const onClick = (position = "outside") => {
127
+ if (isInBeforeClosing)
128
+ return;
126
129
  emit("click", position);
127
130
  if (opened && !lockClick) {
131
+ isInBeforeClosing = true;
128
132
  (0, import_utils.callInterceptor)(props.beforeClose, {
129
133
  args: [{
130
134
  name: props.name,
131
135
  position
132
136
  }],
133
- done: () => close(position)
137
+ done: () => {
138
+ isInBeforeClosing = false;
139
+ close(position);
140
+ },
141
+ canceled: () => isInBeforeClosing = false,
142
+ error: () => isInBeforeClosing = false
134
143
  });
135
144
  }
136
145
  };
@@ -1 +1 @@
1
- :root{--van-uploader-size: 80px;--van-uploader-icon-size: 24px;--van-uploader-icon-color: var(--van-gray-4);--van-uploader-text-color: var(--van-text-color-2);--van-uploader-text-font-size: var(--van-font-size-sm);--van-uploader-upload-background: var(--van-gray-1);--van-uploader-upload-active-color: var(--van-active-color);--van-uploader-delete-color: var(--van-white);--van-uploader-delete-icon-size: 14px;--van-uploader-delete-background: rgba(0, 0, 0, .7);--van-uploader-file-background: var(--van-background);--van-uploader-file-icon-size: 20px;--van-uploader-file-icon-color: var(--van-gray-7);--van-uploader-file-name-padding: 0 var(--van-padding-base);--van-uploader-file-name-margin-top: var(--van-padding-xs);--van-uploader-file-name-font-size: var(--van-font-size-sm);--van-uploader-file-name-text-color: var(--van-gray-7);--van-uploader-mask-text-color: var(--van-white);--van-uploader-mask-background: rgba(50, 50, 51, .88);--van-uploader-mask-icon-size: 22px;--van-uploader-mask-message-font-size: var(--van-font-size-sm);--van-uploader-mask-message-line-height: var(--van-line-height-xs);--van-uploader-loading-icon-size: 22px;--van-uploader-loading-icon-color: var(--van-white);--van-uploader-disabled-opacity: var(--van-disabled-opacity)}.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:flex;flex-wrap:wrap}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;background:var(--van-uploader-upload-background)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;cursor:pointer}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);overflow:hidden}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7) translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}
1
+ :root{--van-uploader-size: 80px;--van-uploader-icon-size: 24px;--van-uploader-icon-color: var(--van-gray-4);--van-uploader-text-color: var(--van-text-color-2);--van-uploader-text-font-size: var(--van-font-size-sm);--van-uploader-upload-background: var(--van-gray-1);--van-uploader-upload-active-color: var(--van-active-color);--van-uploader-delete-color: var(--van-white);--van-uploader-delete-icon-size: 14px;--van-uploader-delete-background: rgba(0, 0, 0, .7);--van-uploader-file-background: var(--van-background);--van-uploader-file-icon-size: 20px;--van-uploader-file-icon-color: var(--van-gray-7);--van-uploader-file-name-padding: 0 var(--van-padding-base);--van-uploader-file-name-margin-top: var(--van-padding-xs);--van-uploader-file-name-font-size: var(--van-font-size-sm);--van-uploader-file-name-text-color: var(--van-gray-7);--van-uploader-mask-text-color: var(--van-white);--van-uploader-mask-background: rgba(50, 50, 51, .88);--van-uploader-mask-icon-size: 22px;--van-uploader-mask-message-font-size: var(--van-font-size-sm);--van-uploader-mask-message-line-height: var(--van-line-height-xs);--van-uploader-loading-icon-size: 22px;--van-uploader-loading-icon-color: var(--van-white);--van-uploader-disabled-opacity: var(--van-disabled-opacity);--van-uploader-border-radius: 0px}.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:flex;flex-wrap:wrap}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;background:var(--van-uploader-upload-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;cursor:pointer}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);overflow:hidden;border-radius:var(--van-uploader-border-radius)}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7) translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}
@@ -1,6 +1,7 @@
1
1
  export type Interceptor = (...args: any[]) => Promise<boolean> | boolean | undefined | void;
2
- export declare function callInterceptor(interceptor: Interceptor | undefined, { args, done, canceled, }: {
2
+ export declare function callInterceptor(interceptor: Interceptor | undefined, { args, done, canceled, error, }: {
3
3
  args?: unknown[];
4
4
  done: () => void;
5
5
  canceled?: () => void;
6
+ error?: () => void;
6
7
  }): void;
@@ -24,7 +24,8 @@ var import_basic = require("./basic");
24
24
  function callInterceptor(interceptor, {
25
25
  args = [],
26
26
  done,
27
- canceled
27
+ canceled,
28
+ error
28
29
  }) {
29
30
  if (interceptor) {
30
31
  const returnVal = interceptor.apply(null, args);
@@ -35,7 +36,7 @@ function callInterceptor(interceptor, {
35
36
  } else if (canceled) {
36
37
  canceled();
37
38
  }
38
- }).catch(import_basic.noop);
39
+ }).catch(error || import_basic.noop);
39
40
  } else if (returnVal) {
40
41
  done();
41
42
  } else if (canceled) {
package/lib/vant.cjs.js CHANGED
@@ -380,7 +380,8 @@ const TAP_OFFSET = 5;
380
380
  function callInterceptor(interceptor, {
381
381
  args = [],
382
382
  done,
383
- canceled
383
+ canceled,
384
+ error
384
385
  }) {
385
386
  if (interceptor) {
386
387
  const returnVal = interceptor.apply(null, args);
@@ -391,7 +392,7 @@ function callInterceptor(interceptor, {
391
392
  } else if (canceled) {
392
393
  canceled();
393
394
  }
394
- }).catch(noop);
395
+ }).catch(error || noop);
395
396
  } else if (returnVal) {
396
397
  done();
397
398
  } else if (canceled) {
@@ -632,10 +633,14 @@ const configProviderProps = {
632
633
  themeVarsScope: makeStringProp("local"),
633
634
  iconPrefix: String
634
635
  };
636
+ function insertDash(str) {
637
+ return str.replace(/([a-zA-Z])(\d)/g, "$1-$2");
638
+ }
635
639
  function mapThemeVarsToCSSVars(themeVars) {
636
640
  const cssVars = {};
637
641
  Object.keys(themeVars).forEach((key) => {
638
- cssVars[`--van-${kebabCase(key)}`] = themeVars[key];
642
+ const formattedKey = insertDash(kebabCase(key));
643
+ cssVars[`--van-${formattedKey}`] = themeVars[key];
639
644
  });
640
645
  return cssVars;
641
646
  }
@@ -4988,7 +4993,7 @@ const addressEditProps = {
4988
4993
  var stdin_default$1q = vue.defineComponent({
4989
4994
  name: name$1g,
4990
4995
  props: addressEditProps,
4991
- emits: ["save", "focus", "delete", "clickArea", "changeArea", "changeDetail", "selectSearch", "changeDefault"],
4996
+ emits: ["save", "focus", "change", "delete", "clickArea", "changeArea", "changeDetail", "selectSearch", "changeDefault"],
4992
4997
  setup(props2, {
4993
4998
  emit,
4994
4999
  slots
@@ -5022,6 +5027,12 @@ var stdin_default$1q = vue.defineComponent({
5022
5027
  detailFocused.value = key === "addressDetail";
5023
5028
  emit("focus", key);
5024
5029
  };
5030
+ const onChange = (key, value) => {
5031
+ emit("change", {
5032
+ key,
5033
+ value
5034
+ });
5035
+ };
5025
5036
  const rules = vue.computed(() => {
5026
5037
  const {
5027
5038
  validator,
@@ -5133,7 +5144,7 @@ var stdin_default$1q = vue.defineComponent({
5133
5144
  "class": bem$1c("fields")
5134
5145
  }, [vue.createVNode(Field, {
5135
5146
  "modelValue": data.name,
5136
- "onUpdate:modelValue": ($event) => data.name = $event,
5147
+ "onUpdate:modelValue": [($event) => data.name = $event, (val) => onChange("name", val)],
5137
5148
  "clearable": true,
5138
5149
  "label": t$i("name"),
5139
5150
  "rules": rules.value.name,
@@ -5141,7 +5152,7 @@ var stdin_default$1q = vue.defineComponent({
5141
5152
  "onFocus": () => onFocus("name")
5142
5153
  }, null), vue.createVNode(Field, {
5143
5154
  "modelValue": data.tel,
5144
- "onUpdate:modelValue": ($event) => data.tel = $event,
5155
+ "onUpdate:modelValue": [($event) => data.tel = $event, (val) => onChange("tel", val)],
5145
5156
  "clearable": true,
5146
5157
  "type": "tel",
5147
5158
  "label": t$i("tel"),
@@ -6136,7 +6147,7 @@ var stdin_default$1h = vue.defineComponent({
6136
6147
  offset: makeNumberProp(0),
6137
6148
  rowHeight: String
6138
6149
  },
6139
- emits: ["click"],
6150
+ emits: ["click", "clickDisabledDate"],
6140
6151
  setup(props2, {
6141
6152
  emit,
6142
6153
  slots
@@ -6182,6 +6193,8 @@ var stdin_default$1h = vue.defineComponent({
6182
6193
  const onClick = () => {
6183
6194
  if (props2.item.type !== "disabled") {
6184
6195
  emit("click", props2.item);
6196
+ } else {
6197
+ emit("clickDisabledDate", props2.item);
6185
6198
  }
6186
6199
  };
6187
6200
  const renderTopInfo = () => {
@@ -6268,7 +6281,7 @@ const calendarMonthProps = {
6268
6281
  var stdin_default$1g = vue.defineComponent({
6269
6282
  name: name$16,
6270
6283
  props: calendarMonthProps,
6271
- emits: ["click"],
6284
+ emits: ["click", "clickDisabledDate"],
6272
6285
  setup(props2, {
6273
6286
  emit,
6274
6287
  slots
@@ -6427,7 +6440,8 @@ var stdin_default$1g = vue.defineComponent({
6427
6440
  "color": props2.color,
6428
6441
  "offset": offset.value,
6429
6442
  "rowHeight": rowHeight.value,
6430
- "onClick": (item2) => emit("click", item2)
6443
+ "onClick": (item2) => emit("click", item2),
6444
+ "onClickDisabledDate": (item2) => emit("clickDisabledDate", item2)
6431
6445
  }, pick(slots, ["top-info", "bottom-info"]));
6432
6446
  const renderDays = () => vue.createVNode("div", {
6433
6447
  "ref": daysRef,
@@ -6552,7 +6566,7 @@ const calendarProps = {
6552
6566
  var stdin_default$1e = vue.defineComponent({
6553
6567
  name: name$18,
6554
6568
  props: calendarProps,
6555
- emits: ["select", "confirm", "unselect", "monthShow", "overRange", "update:show", "clickSubtitle"],
6569
+ emits: ["select", "confirm", "unselect", "monthShow", "overRange", "update:show", "clickSubtitle", "clickDisabledDate"],
6556
6570
  setup(props2, {
6557
6571
  emit,
6558
6572
  slots
@@ -6820,7 +6834,8 @@ var stdin_default$1e = vue.defineComponent({
6820
6834
  "showMonthTitle": showMonthTitle,
6821
6835
  "firstDayOfWeek": dayOffset.value
6822
6836
  }, pick(props2, ["type", "color", "minDate", "maxDate", "showMark", "formatter", "rowHeight", "lazyRender", "showSubtitle", "allowSameDay"]), {
6823
- "onClick": onClickDay
6837
+ "onClick": onClickDay,
6838
+ "onClickDisabledDate": (item) => emit("clickDisabledDate", item)
6824
6839
  }), pick(slots, ["top-info", "bottom-info", "month-title"]));
6825
6840
  };
6826
6841
  const renderFooterButton = () => {
@@ -9398,7 +9413,7 @@ function initInstance$2() {
9398
9413
  }
9399
9414
  function showDialog(options) {
9400
9415
  if (!inBrowser) {
9401
- return Promise.resolve();
9416
+ return Promise.resolve(void 0);
9402
9417
  }
9403
9418
  return new Promise((resolve, reject) => {
9404
9419
  if (!instance$2) {
@@ -10029,7 +10044,7 @@ var stdin_default$Q = vue.defineComponent({
10029
10044
  }, {
10030
10045
  immediate: true
10031
10046
  });
10032
- useLockScroll(rootRef, () => props2.lockScroll);
10047
+ useLockScroll(rootRef, () => props2.lockScroll || dragging.value);
10033
10048
  use.useEventListener("touchmove", onTouchmove, {
10034
10049
  target: rootRef
10035
10050
  });
@@ -11204,6 +11219,8 @@ const navBarProps = {
11204
11219
  border: truthProp,
11205
11220
  leftText: String,
11206
11221
  rightText: String,
11222
+ leftDisabled: Boolean,
11223
+ rightDisabled: Boolean,
11207
11224
  leftArrow: Boolean,
11208
11225
  placeholder: Boolean,
11209
11226
  safeAreaInsetTop: Boolean,
@@ -11219,8 +11236,16 @@ var stdin_default$I = vue.defineComponent({
11219
11236
  }) {
11220
11237
  const navBarRef = vue.ref();
11221
11238
  const renderPlaceholder = usePlaceholder(navBarRef, bem$z);
11222
- const onClickLeft = (event) => emit("clickLeft", event);
11223
- const onClickRight = (event) => emit("clickRight", event);
11239
+ const onClickLeft = (event) => {
11240
+ if (!props2.leftDisabled) {
11241
+ emit("clickLeft", event);
11242
+ }
11243
+ };
11244
+ const onClickRight = (event) => {
11245
+ if (!props2.rightDisabled) {
11246
+ emit("clickRight", event);
11247
+ }
11248
+ };
11224
11249
  const renderLeft = () => {
11225
11250
  if (slots.left) {
11226
11251
  return slots.left();
@@ -11262,12 +11287,16 @@ var stdin_default$I = vue.defineComponent({
11262
11287
  }, [vue.createVNode("div", {
11263
11288
  "class": bem$z("content")
11264
11289
  }, [hasLeft && vue.createVNode("div", {
11265
- "class": [bem$z("left"), props2.clickable ? HAPTICS_FEEDBACK : ""],
11290
+ "class": [bem$z("left", {
11291
+ disabled: props2.leftDisabled
11292
+ }), props2.clickable && !props2.leftDisabled ? HAPTICS_FEEDBACK : ""],
11266
11293
  "onClick": onClickLeft
11267
11294
  }, [renderLeft()]), vue.createVNode("div", {
11268
11295
  "class": [bem$z("title"), "van-ellipsis"]
11269
11296
  }, [slots.title ? slots.title() : title]), hasRight && vue.createVNode("div", {
11270
- "class": [bem$z("right"), props2.clickable ? HAPTICS_FEEDBACK : ""],
11297
+ "class": [bem$z("right", {
11298
+ disabled: props2.rightDisabled
11299
+ }), props2.clickable && !props2.rightDisabled ? HAPTICS_FEEDBACK : ""],
11271
11300
  "onClick": onClickRight
11272
11301
  }, [renderRight()])])]);
11273
11302
  };
@@ -13241,12 +13270,16 @@ var stdin_default$r = vue.defineComponent({
13241
13270
  const empty = document.createElement("canvas");
13242
13271
  empty.width = canvas.width;
13243
13272
  empty.height = canvas.height;
13273
+ if (props2.backgroundColor) {
13274
+ const emptyCtx = empty.getContext("2d");
13275
+ setCanvasBgColor(emptyCtx);
13276
+ }
13244
13277
  return canvas.toDataURL() === empty.toDataURL();
13245
13278
  };
13246
- const setCanvasBgColor = () => {
13247
- if (state.ctx && props2.backgroundColor) {
13248
- state.ctx.fillStyle = props2.backgroundColor;
13249
- state.ctx.fillRect(0, 0, state.width, state.height);
13279
+ const setCanvasBgColor = (ctx) => {
13280
+ if (ctx && props2.backgroundColor) {
13281
+ ctx.fillStyle = props2.backgroundColor;
13282
+ ctx.fillRect(0, 0, state.width, state.height);
13250
13283
  }
13251
13284
  };
13252
13285
  const submit = () => {
@@ -13269,7 +13302,7 @@ var stdin_default$r = vue.defineComponent({
13269
13302
  if (state.ctx) {
13270
13303
  state.ctx.clearRect(0, 0, state.width, state.height);
13271
13304
  state.ctx.closePath();
13272
- setCanvasBgColor();
13305
+ setCanvasBgColor(state.ctx);
13273
13306
  }
13274
13307
  emit("clear");
13275
13308
  };
@@ -13280,7 +13313,7 @@ var stdin_default$r = vue.defineComponent({
13280
13313
  state.width = (((_b = wrapRef.value) == null ? void 0 : _b.offsetWidth) || 0) * state.ratio;
13281
13314
  state.height = (((_c = wrapRef.value) == null ? void 0 : _c.offsetHeight) || 0) * state.ratio;
13282
13315
  vue.nextTick(() => {
13283
- setCanvasBgColor();
13316
+ setCanvasBgColor(state.ctx);
13284
13317
  });
13285
13318
  }
13286
13319
  });
@@ -14354,6 +14387,7 @@ var stdin_default$c = vue.defineComponent({
14354
14387
  let opened;
14355
14388
  let lockClick2;
14356
14389
  let startOffset;
14390
+ let isInBeforeClosing;
14357
14391
  const root = vue.ref();
14358
14392
  const leftRef = vue.ref();
14359
14393
  const rightRef = vue.ref();
@@ -14430,14 +14464,22 @@ var stdin_default$c = vue.defineComponent({
14430
14464
  }
14431
14465
  };
14432
14466
  const onClick = (position = "outside") => {
14467
+ if (isInBeforeClosing)
14468
+ return;
14433
14469
  emit("click", position);
14434
14470
  if (opened && !lockClick2) {
14471
+ isInBeforeClosing = true;
14435
14472
  callInterceptor(props2.beforeClose, {
14436
14473
  args: [{
14437
14474
  name: props2.name,
14438
14475
  position
14439
14476
  }],
14440
- done: () => close(position)
14477
+ done: () => {
14478
+ isInBeforeClosing = false;
14479
+ close(position);
14480
+ },
14481
+ canceled: () => isInBeforeClosing = false,
14482
+ error: () => isInBeforeClosing = false
14441
14483
  });
14442
14484
  }
14443
14485
  };
@@ -16457,7 +16499,7 @@ const Lazyload = {
16457
16499
  });
16458
16500
  }
16459
16501
  };
16460
- const version = "4.6.7";
16502
+ const version = "4.7.0";
16461
16503
  function install(app) {
16462
16504
  const components = [
16463
16505
  ActionBar,