vant 4.9.0 → 4.9.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.
- package/README.md +5 -4
- package/es/address-list/AddressList.d.ts +13 -13
- package/es/address-list/AddressList.mjs +20 -4
- package/es/address-list/AddressListItem.d.ts +3 -0
- package/es/address-list/AddressListItem.mjs +19 -7
- package/es/address-list/index.d.ts +2 -2
- package/es/address-list/style/index.mjs +1 -0
- package/es/area/utils.mjs +3 -3
- package/es/floating-panel/FloatingPanel.mjs +11 -5
- package/es/index.d.ts +1 -1
- package/es/index.mjs +1 -1
- package/es/stepper/Stepper.mjs +1 -0
- package/es/tabs/index.css +1 -1
- package/lib/address-list/AddressList.d.ts +13 -13
- package/lib/address-list/AddressList.js +19 -3
- package/lib/address-list/AddressListItem.d.ts +3 -0
- package/lib/address-list/AddressListItem.js +19 -7
- package/lib/address-list/index.d.ts +2 -2
- package/lib/address-list/style/index.js +1 -0
- package/lib/area/utils.js +3 -3
- package/lib/floating-panel/FloatingPanel.js +11 -5
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/stepper/Stepper.js +1 -0
- package/lib/tabs/index.css +1 -1
- package/lib/vant.cjs.js +328 -295
- package/lib/vant.es.js +328 -295
- package/lib/vant.js +330 -297
- package/lib/vant.min.js +3 -3
- package/lib/web-types.json +1 -1
- package/package.json +11 -11
package/README.md
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
·
|
19
19
|
|
20
|
-
<a href="https://vant
|
20
|
+
<a href="https://vant.pro/vant/">Documentation (backup)</a>
|
21
21
|
|
22
22
|
·
|
23
23
|
|
@@ -98,7 +98,7 @@ const app = createApp();
|
|
98
98
|
app.use(Button);
|
99
99
|
```
|
100
100
|
|
101
|
-
See more in [Quickstart](https://vant-ui.github.io/vant
|
101
|
+
See more in [Quickstart](https://vant-ui.github.io/vant/#/en-US/quickstart).
|
102
102
|
|
103
103
|
## Browser Support
|
104
104
|
|
@@ -133,8 +133,9 @@ Vant 3/4 supports modern browsers and Chrome >= 51、iOS >= 10.0 (same as Vue 3)
|
|
133
133
|
|
134
134
|
## Links
|
135
135
|
|
136
|
-
- [Documentation](https://vant-ui.github.io/vant)
|
137
|
-
- [
|
136
|
+
- [Documentation](https://vant-ui.github.io/vant/)
|
137
|
+
- [Documentation (backup)](https://vant.pro/vant/)
|
138
|
+
- [Changelog](https://vant-ui.github.io/vant/#/en-US/changelog)
|
138
139
|
- [Discussions](https://github.com/vant-ui/vant/discussions)
|
139
140
|
|
140
141
|
## Preview
|
@@ -1,18 +1,18 @@
|
|
1
|
-
import { type ExtractPropTypes } from 'vue';
|
1
|
+
import { type ExtractPropTypes, type PropType } from 'vue';
|
2
2
|
import { AddressListAddress } from './AddressListItem';
|
3
3
|
export declare const addressListProps: {
|
4
4
|
list: {
|
5
|
-
type:
|
5
|
+
type: PropType<AddressListAddress[]>;
|
6
6
|
default: () => never[];
|
7
7
|
};
|
8
|
-
modelValue: (
|
8
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
9
9
|
switchable: {
|
10
10
|
type: BooleanConstructor;
|
11
11
|
default: true;
|
12
12
|
};
|
13
13
|
disabledText: StringConstructor;
|
14
14
|
disabledList: {
|
15
|
-
type:
|
15
|
+
type: PropType<AddressListAddress[]>;
|
16
16
|
default: () => never[];
|
17
17
|
};
|
18
18
|
showAddButton: {
|
@@ -22,24 +22,24 @@ export declare const addressListProps: {
|
|
22
22
|
addButtonText: StringConstructor;
|
23
23
|
defaultTagText: StringConstructor;
|
24
24
|
rightIcon: {
|
25
|
-
type:
|
25
|
+
type: PropType<string>;
|
26
26
|
default: string;
|
27
27
|
};
|
28
28
|
};
|
29
29
|
export type AddressListProps = ExtractPropTypes<typeof addressListProps>;
|
30
30
|
declare const _default: import("vue").DefineComponent<{
|
31
31
|
list: {
|
32
|
-
type:
|
32
|
+
type: PropType<AddressListAddress[]>;
|
33
33
|
default: () => never[];
|
34
34
|
};
|
35
|
-
modelValue: (
|
35
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
36
36
|
switchable: {
|
37
37
|
type: BooleanConstructor;
|
38
38
|
default: true;
|
39
39
|
};
|
40
40
|
disabledText: StringConstructor;
|
41
41
|
disabledList: {
|
42
|
-
type:
|
42
|
+
type: PropType<AddressListAddress[]>;
|
43
43
|
default: () => never[];
|
44
44
|
};
|
45
45
|
showAddButton: {
|
@@ -49,22 +49,22 @@ declare const _default: import("vue").DefineComponent<{
|
|
49
49
|
addButtonText: StringConstructor;
|
50
50
|
defaultTagText: StringConstructor;
|
51
51
|
rightIcon: {
|
52
|
-
type:
|
52
|
+
type: PropType<string>;
|
53
53
|
default: string;
|
54
54
|
};
|
55
55
|
}, () => import("vue/jsx-runtime").JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "add" | "update:modelValue" | "edit" | "clickItem" | "editDisabled" | "selectDisabled")[], "select" | "add" | "update:modelValue" | "edit" | "clickItem" | "editDisabled" | "selectDisabled", import("vue").PublicProps, Readonly<ExtractPropTypes<{
|
56
56
|
list: {
|
57
|
-
type:
|
57
|
+
type: PropType<AddressListAddress[]>;
|
58
58
|
default: () => never[];
|
59
59
|
};
|
60
|
-
modelValue: (
|
60
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
61
61
|
switchable: {
|
62
62
|
type: BooleanConstructor;
|
63
63
|
default: true;
|
64
64
|
};
|
65
65
|
disabledText: StringConstructor;
|
66
66
|
disabledList: {
|
67
|
-
type:
|
67
|
+
type: PropType<AddressListAddress[]>;
|
68
68
|
default: () => never[];
|
69
69
|
};
|
70
70
|
showAddButton: {
|
@@ -74,7 +74,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
74
74
|
addButtonText: StringConstructor;
|
75
75
|
defaultTagText: StringConstructor;
|
76
76
|
rightIcon: {
|
77
|
-
type:
|
77
|
+
type: PropType<string>;
|
78
78
|
default: string;
|
79
79
|
};
|
80
80
|
}>> & {
|
@@ -1,13 +1,14 @@
|
|
1
1
|
import { createVNode as _createVNode } from "vue";
|
2
|
-
import { defineComponent } from "vue";
|
2
|
+
import { defineComponent, computed } from "vue";
|
3
3
|
import { truthProp, numericProp, makeArrayProp, createNamespace, makeStringProp } from "../utils/index.mjs";
|
4
4
|
import { Button } from "../button/index.mjs";
|
5
5
|
import { RadioGroup } from "../radio-group/index.mjs";
|
6
|
+
import { CheckboxGroup } from "../checkbox-group/index.mjs";
|
6
7
|
import AddressListItem from "./AddressListItem.mjs";
|
7
8
|
const [name, bem, t] = createNamespace("address-list");
|
8
9
|
const addressListProps = {
|
9
10
|
list: makeArrayProp(),
|
10
|
-
modelValue: numericProp,
|
11
|
+
modelValue: [...numericProp, Array],
|
11
12
|
switchable: truthProp,
|
12
13
|
disabledText: String,
|
13
14
|
disabledList: makeArrayProp(),
|
@@ -24,6 +25,7 @@ var stdin_default = defineComponent({
|
|
24
25
|
slots,
|
25
26
|
emit
|
26
27
|
}) {
|
28
|
+
const singleChoice = computed(() => !Array.isArray(props.modelValue));
|
27
29
|
const renderItem = (item, index, disabled) => {
|
28
30
|
const onEdit = () => emit(disabled ? "editDisabled" : "edit", item, index);
|
29
31
|
const onClick = (event) => emit("clickItem", item, index, {
|
@@ -32,7 +34,16 @@ var stdin_default = defineComponent({
|
|
32
34
|
const onSelect = () => {
|
33
35
|
emit(disabled ? "selectDisabled" : "select", item, index);
|
34
36
|
if (!disabled) {
|
35
|
-
|
37
|
+
if (singleChoice.value) {
|
38
|
+
emit("update:modelValue", item.id);
|
39
|
+
} else {
|
40
|
+
const value = props.modelValue;
|
41
|
+
if (value.includes(item.id)) {
|
42
|
+
emit("update:modelValue", value.filter((id) => id !== item.id));
|
43
|
+
} else {
|
44
|
+
emit("update:modelValue", [...value, item.id]);
|
45
|
+
}
|
46
|
+
}
|
36
47
|
}
|
37
48
|
};
|
38
49
|
return _createVNode(AddressListItem, {
|
@@ -40,6 +51,7 @@ var stdin_default = defineComponent({
|
|
40
51
|
"address": item,
|
41
52
|
"disabled": disabled,
|
42
53
|
"switchable": props.switchable,
|
54
|
+
"singleChoice": singleChoice.value,
|
43
55
|
"defaultTagText": props.defaultTagText,
|
44
56
|
"rightIcon": props.rightIcon,
|
45
57
|
"onEdit": onEdit,
|
@@ -74,7 +86,11 @@ var stdin_default = defineComponent({
|
|
74
86
|
}, [props.disabledText]);
|
75
87
|
return _createVNode("div", {
|
76
88
|
"class": bem()
|
77
|
-
}, [(_a = slots.top) == null ? void 0 : _a.call(slots), _createVNode(
|
89
|
+
}, [(_a = slots.top) == null ? void 0 : _a.call(slots), !singleChoice.value && Array.isArray(props.modelValue) ? _createVNode(CheckboxGroup, {
|
90
|
+
"modelValue": props.modelValue
|
91
|
+
}, {
|
92
|
+
default: () => [List]
|
93
|
+
}) : _createVNode(RadioGroup, {
|
78
94
|
"modelValue": props.modelValue
|
79
95
|
}, {
|
80
96
|
default: () => [List]
|
@@ -14,6 +14,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
14
14
|
};
|
15
15
|
disabled: BooleanConstructor;
|
16
16
|
switchable: BooleanConstructor;
|
17
|
+
singleChoice: BooleanConstructor;
|
17
18
|
defaultTagText: StringConstructor;
|
18
19
|
rightIcon: {
|
19
20
|
type: PropType<string>;
|
@@ -26,6 +27,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
26
27
|
};
|
27
28
|
disabled: BooleanConstructor;
|
28
29
|
switchable: BooleanConstructor;
|
30
|
+
singleChoice: BooleanConstructor;
|
29
31
|
defaultTagText: StringConstructor;
|
30
32
|
rightIcon: {
|
31
33
|
type: PropType<string>;
|
@@ -39,5 +41,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
39
41
|
disabled: boolean;
|
40
42
|
rightIcon: string;
|
41
43
|
switchable: boolean;
|
44
|
+
singleChoice: boolean;
|
42
45
|
}, {}>;
|
43
46
|
export default _default;
|
@@ -5,6 +5,7 @@ import { Tag } from "../tag/index.mjs";
|
|
5
5
|
import { Icon } from "../icon/index.mjs";
|
6
6
|
import { Cell } from "../cell/index.mjs";
|
7
7
|
import { Radio } from "../radio/index.mjs";
|
8
|
+
import { Checkbox } from "../checkbox/index.mjs";
|
8
9
|
const [name, bem] = createNamespace("address-item");
|
9
10
|
var stdin_default = defineComponent({
|
10
11
|
name,
|
@@ -12,6 +13,7 @@ var stdin_default = defineComponent({
|
|
12
13
|
address: makeRequiredProp(Object),
|
13
14
|
disabled: Boolean,
|
14
15
|
switchable: Boolean,
|
16
|
+
singleChoice: Boolean,
|
15
17
|
defaultTagText: String,
|
16
18
|
rightIcon: makeStringProp("edit")
|
17
19
|
},
|
@@ -53,7 +55,8 @@ var stdin_default = defineComponent({
|
|
53
55
|
const {
|
54
56
|
address,
|
55
57
|
disabled,
|
56
|
-
switchable
|
58
|
+
switchable,
|
59
|
+
singleChoice
|
57
60
|
} = props;
|
58
61
|
const Info = [_createVNode("div", {
|
59
62
|
"class": bem("name")
|
@@ -61,12 +64,21 @@ var stdin_default = defineComponent({
|
|
61
64
|
"class": bem("address")
|
62
65
|
}, [address.address])];
|
63
66
|
if (switchable && !disabled) {
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
if (singleChoice) {
|
68
|
+
return _createVNode(Radio, {
|
69
|
+
"name": address.id,
|
70
|
+
"iconSize": 18
|
71
|
+
}, {
|
72
|
+
default: () => [Info]
|
73
|
+
});
|
74
|
+
} else {
|
75
|
+
return _createVNode(Checkbox, {
|
76
|
+
"name": address.id,
|
77
|
+
"iconSize": 18
|
78
|
+
}, {
|
79
|
+
default: () => [Info]
|
80
|
+
});
|
81
|
+
}
|
70
82
|
}
|
71
83
|
return Info;
|
72
84
|
};
|
@@ -3,7 +3,7 @@ export declare const AddressList: import("../utils").WithInstall<import("vue").D
|
|
3
3
|
type: import("vue").PropType<import("./AddressListItem").AddressListAddress[]>;
|
4
4
|
default: () => never[];
|
5
5
|
};
|
6
|
-
modelValue: (
|
6
|
+
modelValue: import("vue").PropType<string | number | (string | number)[]>;
|
7
7
|
switchable: {
|
8
8
|
type: BooleanConstructor;
|
9
9
|
default: true;
|
@@ -28,7 +28,7 @@ export declare const AddressList: import("../utils").WithInstall<import("vue").D
|
|
28
28
|
type: import("vue").PropType<import("./AddressListItem").AddressListAddress[]>;
|
29
29
|
default: () => never[];
|
30
30
|
};
|
31
|
-
modelValue: (
|
31
|
+
modelValue: import("vue").PropType<string | number | (string | number)[]>;
|
32
32
|
switchable: {
|
33
33
|
type: BooleanConstructor;
|
34
34
|
default: true;
|
@@ -6,6 +6,7 @@ import "../../cell/index.css";
|
|
6
6
|
import "../../loading/index.css";
|
7
7
|
import "../../button/index.css";
|
8
8
|
import "../../radio-group/index.css";
|
9
|
+
import "../../checkbox-group/index.css";
|
9
10
|
import "../../checkbox/index.css";
|
10
11
|
import "../../radio/index.css";
|
11
12
|
import "../index.css";
|
package/es/area/utils.mjs
CHANGED
@@ -36,9 +36,9 @@ function formatDataForCascade({
|
|
36
36
|
const showCounty = +columnsNum > 2;
|
37
37
|
const getProvinceChildren = () => {
|
38
38
|
if (showCity) {
|
39
|
-
return placeholder.length ? [
|
39
|
+
return placeholder.length > 1 ? [
|
40
40
|
makeOption(
|
41
|
-
placeholder[
|
41
|
+
placeholder[1],
|
42
42
|
AREA_EMPTY_CODE,
|
43
43
|
showCounty ? [] : void 0
|
44
44
|
)
|
@@ -56,7 +56,7 @@ function formatDataForCascade({
|
|
56
56
|
if (showCity) {
|
57
57
|
const getCityChildren = () => {
|
58
58
|
if (showCounty) {
|
59
|
-
return placeholder.length ? [makeOption(placeholder[
|
59
|
+
return placeholder.length > 2 ? [makeOption(placeholder[2])] : [];
|
60
60
|
}
|
61
61
|
};
|
62
62
|
Object.keys(city).forEach((code) => {
|
@@ -102,6 +102,16 @@ var stdin_default = defineComponent({
|
|
102
102
|
useEventListener("touchmove", onTouchmove, {
|
103
103
|
target: rootRef
|
104
104
|
});
|
105
|
+
const renderHeader = () => {
|
106
|
+
if (slots.header) {
|
107
|
+
return slots.header();
|
108
|
+
}
|
109
|
+
return _createVNode("div", {
|
110
|
+
"class": bem("header")
|
111
|
+
}, [_createVNode("div", {
|
112
|
+
"class": bem("header-bar")
|
113
|
+
}, null)]);
|
114
|
+
};
|
105
115
|
return () => {
|
106
116
|
var _a;
|
107
117
|
return _createVNode("div", {
|
@@ -113,11 +123,7 @@ var stdin_default = defineComponent({
|
|
113
123
|
"onTouchstartPassive": onTouchstart,
|
114
124
|
"onTouchend": onTouchend,
|
115
125
|
"onTouchcancel": onTouchend
|
116
|
-
}, [_createVNode("div", {
|
117
|
-
"class": bem("header")
|
118
|
-
}, [_createVNode("div", {
|
119
|
-
"class": bem("header-bar")
|
120
|
-
}, null)]), _createVNode("div", {
|
126
|
+
}, [renderHeader(), _createVNode("div", {
|
121
127
|
"class": bem("content"),
|
122
128
|
"ref": contentRef
|
123
129
|
}, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]);
|
package/es/index.d.ts
CHANGED
package/es/index.mjs
CHANGED
@@ -99,7 +99,7 @@ import { Toast } from "./toast/index.mjs";
|
|
99
99
|
import { TreeSelect } from "./tree-select/index.mjs";
|
100
100
|
import { Uploader } from "./uploader/index.mjs";
|
101
101
|
import { Watermark } from "./watermark/index.mjs";
|
102
|
-
const version = "4.9.
|
102
|
+
const version = "4.9.1";
|
103
103
|
function install(app) {
|
104
104
|
const components = [
|
105
105
|
ActionBar,
|
package/es/stepper/Stepper.mjs
CHANGED
@@ -223,6 +223,7 @@ var stdin_default = defineComponent({
|
|
223
223
|
"readonly": props.disableInput,
|
224
224
|
"inputmode": props.integer ? "numeric" : "decimal",
|
225
225
|
"placeholder": props.placeholder,
|
226
|
+
"autocomplete": "off",
|
226
227
|
"aria-valuemax": props.max,
|
227
228
|
"aria-valuemin": props.min,
|
228
229
|
"aria-valuenow": current.value,
|
package/es/tabs/index.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
:root,:host{--van-tab-text-color: var(--van-gray-7);--van-tab-active-text-color: var(--van-text-color);--van-tab-disabled-text-color: var(--van-text-color-3);--van-tab-font-size: var(--van-font-size-md);--van-tab-line-height: var(--van-line-height-md);--van-tabs-default-color: var(--van-primary-color);--van-tabs-line-height: 44px;--van-tabs-card-height: 30px;--van-tabs-nav-background: var(--van-background-2);--van-tabs-bottom-bar-width: 40px;--van-tabs-bottom-bar-height: 3px;--van-tabs-bottom-bar-color: var(--van-primary-color)}.van-tab{position:relative;display:flex;flex:1;align-items:center;justify-content:center;box-sizing:border-box;padding:0 var(--van-padding-base);color:var(--van-tab-text-color);font-size:var(--van-tab-font-size);line-height:var(--van-tab-line-height);cursor:pointer}.van-tab--active{color:var(--van-tab-active-text-color);font-weight:var(--van-font-bold)}.van-tab--disabled{color:var(--van-tab-disabled-text-color);cursor:not-allowed}.van-tab--grow{flex:1 0 auto;padding:0 var(--van-padding-sm)}.van-tab--shrink{flex:none;padding:0 var(--van-padding-xs)}.van-tab--card{color:var(--van-tabs-default-color);border-right:var(--van-border-width) solid var(--van-tabs-default-color)}.van-tab--card:last-child{border-right:none}.van-tab--card.van-tab--active{color:var(--van-white);background-color:var(--van-tabs-default-color)}.van-tab--card--disabled{color:var(--van-tab-disabled-text-color)}.van-tab__text--ellipsis{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__nav{position:relative;display:flex;background:var(--van-tabs-nav-background);-webkit-user-select:none;user-select:none}.van-tabs__nav--complete{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-tabs__nav--complete::-webkit-scrollbar{display:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--line.van-tabs__nav--shrink,.van-tabs__nav--line.van-tabs__nav--complete{padding-right:var(--van-padding-xs);padding-left:var(--van-padding-xs)}.van-tabs__nav--card{box-sizing:border-box;height:var(--van-tabs-card-height);margin:0 var(--van-padding-md);border:var(--van-border-width) solid var(--van-tabs-default-color);border-radius:var(--van-radius-sm)}.van-tabs__nav--card.van-tabs__nav--shrink{display:inline-flex}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;width:var(--van-tabs-bottom-bar-width);height:var(--van-tabs-bottom-bar-height);background:var(--van-tabs-bottom-bar-color);border-radius:var(--van-tabs-bottom-bar-height)}.van-tabs__track{position:relative;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:var(--van-tabs-line-height)}.van-tabs--card>.van-tabs__wrap{height:var(--van-tabs-card-height)}
|
1
|
+
:root,:host{--van-tab-text-color: var(--van-gray-7);--van-tab-active-text-color: var(--van-text-color);--van-tab-disabled-text-color: var(--van-text-color-3);--van-tab-font-size: var(--van-font-size-md);--van-tab-line-height: var(--van-line-height-md);--van-tabs-default-color: var(--van-primary-color);--van-tabs-line-height: 44px;--van-tabs-card-height: 30px;--van-tabs-nav-background: var(--van-background-2);--van-tabs-bottom-bar-width: 40px;--van-tabs-bottom-bar-height: 3px;--van-tabs-bottom-bar-color: var(--van-primary-color)}.van-tab{position:relative;display:flex;flex:1;align-items:center;justify-content:center;box-sizing:border-box;padding:0 var(--van-padding-base);color:var(--van-tab-text-color);font-size:var(--van-tab-font-size);line-height:var(--van-tab-line-height);cursor:pointer}.van-tab--active{color:var(--van-tab-active-text-color);font-weight:var(--van-font-bold)}.van-tab--disabled{color:var(--van-tab-disabled-text-color);cursor:not-allowed}.van-tab--grow{flex:1 0 auto;padding:0 var(--van-padding-sm)}.van-tab--shrink{flex:none;padding:0 var(--van-padding-xs)}.van-tab--card{color:var(--van-tabs-default-color);border-right:var(--van-border-width) solid var(--van-tabs-default-color)}.van-tab--card:last-child{border-right:none}.van-tab--card.van-tab--active{color:var(--van-white);background-color:var(--van-tabs-default-color)}.van-tab--card.van-tab--disabled{color:var(--van-tab-disabled-text-color)}.van-tab__text--ellipsis{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__nav{position:relative;display:flex;background:var(--van-tabs-nav-background);-webkit-user-select:none;user-select:none}.van-tabs__nav--complete{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-tabs__nav--complete::-webkit-scrollbar{display:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--line.van-tabs__nav--shrink,.van-tabs__nav--line.van-tabs__nav--complete{padding-right:var(--van-padding-xs);padding-left:var(--van-padding-xs)}.van-tabs__nav--card{box-sizing:border-box;height:var(--van-tabs-card-height);margin:0 var(--van-padding-md);border:var(--van-border-width) solid var(--van-tabs-default-color);border-radius:var(--van-radius-sm)}.van-tabs__nav--card.van-tabs__nav--shrink{display:inline-flex}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;width:var(--van-tabs-bottom-bar-width);height:var(--van-tabs-bottom-bar-height);background:var(--van-tabs-bottom-bar-color);border-radius:var(--van-tabs-bottom-bar-height)}.van-tabs__track{position:relative;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:var(--van-tabs-line-height)}.van-tabs--card>.van-tabs__wrap{height:var(--van-tabs-card-height)}
|
@@ -1,18 +1,18 @@
|
|
1
|
-
import { type ExtractPropTypes } from 'vue';
|
1
|
+
import { type ExtractPropTypes, type PropType } from 'vue';
|
2
2
|
import { AddressListAddress } from './AddressListItem';
|
3
3
|
export declare const addressListProps: {
|
4
4
|
list: {
|
5
|
-
type:
|
5
|
+
type: PropType<AddressListAddress[]>;
|
6
6
|
default: () => never[];
|
7
7
|
};
|
8
|
-
modelValue: (
|
8
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
9
9
|
switchable: {
|
10
10
|
type: BooleanConstructor;
|
11
11
|
default: true;
|
12
12
|
};
|
13
13
|
disabledText: StringConstructor;
|
14
14
|
disabledList: {
|
15
|
-
type:
|
15
|
+
type: PropType<AddressListAddress[]>;
|
16
16
|
default: () => never[];
|
17
17
|
};
|
18
18
|
showAddButton: {
|
@@ -22,24 +22,24 @@ export declare const addressListProps: {
|
|
22
22
|
addButtonText: StringConstructor;
|
23
23
|
defaultTagText: StringConstructor;
|
24
24
|
rightIcon: {
|
25
|
-
type:
|
25
|
+
type: PropType<string>;
|
26
26
|
default: string;
|
27
27
|
};
|
28
28
|
};
|
29
29
|
export type AddressListProps = ExtractPropTypes<typeof addressListProps>;
|
30
30
|
declare const _default: import("vue").DefineComponent<{
|
31
31
|
list: {
|
32
|
-
type:
|
32
|
+
type: PropType<AddressListAddress[]>;
|
33
33
|
default: () => never[];
|
34
34
|
};
|
35
|
-
modelValue: (
|
35
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
36
36
|
switchable: {
|
37
37
|
type: BooleanConstructor;
|
38
38
|
default: true;
|
39
39
|
};
|
40
40
|
disabledText: StringConstructor;
|
41
41
|
disabledList: {
|
42
|
-
type:
|
42
|
+
type: PropType<AddressListAddress[]>;
|
43
43
|
default: () => never[];
|
44
44
|
};
|
45
45
|
showAddButton: {
|
@@ -49,22 +49,22 @@ declare const _default: import("vue").DefineComponent<{
|
|
49
49
|
addButtonText: StringConstructor;
|
50
50
|
defaultTagText: StringConstructor;
|
51
51
|
rightIcon: {
|
52
|
-
type:
|
52
|
+
type: PropType<string>;
|
53
53
|
default: string;
|
54
54
|
};
|
55
55
|
}, () => import("vue/jsx-runtime").JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "add" | "update:modelValue" | "edit" | "clickItem" | "editDisabled" | "selectDisabled")[], "select" | "add" | "update:modelValue" | "edit" | "clickItem" | "editDisabled" | "selectDisabled", import("vue").PublicProps, Readonly<ExtractPropTypes<{
|
56
56
|
list: {
|
57
|
-
type:
|
57
|
+
type: PropType<AddressListAddress[]>;
|
58
58
|
default: () => never[];
|
59
59
|
};
|
60
|
-
modelValue: (
|
60
|
+
modelValue: PropType<string | number | (string | number)[]>;
|
61
61
|
switchable: {
|
62
62
|
type: BooleanConstructor;
|
63
63
|
default: true;
|
64
64
|
};
|
65
65
|
disabledText: StringConstructor;
|
66
66
|
disabledList: {
|
67
|
-
type:
|
67
|
+
type: PropType<AddressListAddress[]>;
|
68
68
|
default: () => never[];
|
69
69
|
};
|
70
70
|
showAddButton: {
|
@@ -74,7 +74,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
74
74
|
addButtonText: StringConstructor;
|
75
75
|
defaultTagText: StringConstructor;
|
76
76
|
rightIcon: {
|
77
|
-
type:
|
77
|
+
type: PropType<string>;
|
78
78
|
default: string;
|
79
79
|
};
|
80
80
|
}>> & {
|
@@ -36,11 +36,12 @@ var import_vue2 = require("vue");
|
|
36
36
|
var import_utils = require("../utils");
|
37
37
|
var import_button = require("../button");
|
38
38
|
var import_radio_group = require("../radio-group");
|
39
|
+
var import_checkbox_group = require("../checkbox-group");
|
39
40
|
var import_AddressListItem = __toESM(require("./AddressListItem"));
|
40
41
|
const [name, bem, t] = (0, import_utils.createNamespace)("address-list");
|
41
42
|
const addressListProps = {
|
42
43
|
list: (0, import_utils.makeArrayProp)(),
|
43
|
-
modelValue: import_utils.numericProp,
|
44
|
+
modelValue: [...import_utils.numericProp, Array],
|
44
45
|
switchable: import_utils.truthProp,
|
45
46
|
disabledText: String,
|
46
47
|
disabledList: (0, import_utils.makeArrayProp)(),
|
@@ -57,6 +58,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
57
58
|
slots,
|
58
59
|
emit
|
59
60
|
}) {
|
61
|
+
const singleChoice = (0, import_vue2.computed)(() => !Array.isArray(props.modelValue));
|
60
62
|
const renderItem = (item, index, disabled) => {
|
61
63
|
const onEdit = () => emit(disabled ? "editDisabled" : "edit", item, index);
|
62
64
|
const onClick = (event) => emit("clickItem", item, index, {
|
@@ -65,7 +67,16 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
65
67
|
const onSelect = () => {
|
66
68
|
emit(disabled ? "selectDisabled" : "select", item, index);
|
67
69
|
if (!disabled) {
|
68
|
-
|
70
|
+
if (singleChoice.value) {
|
71
|
+
emit("update:modelValue", item.id);
|
72
|
+
} else {
|
73
|
+
const value = props.modelValue;
|
74
|
+
if (value.includes(item.id)) {
|
75
|
+
emit("update:modelValue", value.filter((id) => id !== item.id));
|
76
|
+
} else {
|
77
|
+
emit("update:modelValue", [...value, item.id]);
|
78
|
+
}
|
79
|
+
}
|
69
80
|
}
|
70
81
|
};
|
71
82
|
return (0, import_vue.createVNode)(import_AddressListItem.default, {
|
@@ -73,6 +84,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
73
84
|
"address": item,
|
74
85
|
"disabled": disabled,
|
75
86
|
"switchable": props.switchable,
|
87
|
+
"singleChoice": singleChoice.value,
|
76
88
|
"defaultTagText": props.defaultTagText,
|
77
89
|
"rightIcon": props.rightIcon,
|
78
90
|
"onEdit": onEdit,
|
@@ -107,7 +119,11 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
107
119
|
}, [props.disabledText]);
|
108
120
|
return (0, import_vue.createVNode)("div", {
|
109
121
|
"class": bem()
|
110
|
-
}, [(_a = slots.top) == null ? void 0 : _a.call(slots), (0, import_vue.createVNode)(
|
122
|
+
}, [(_a = slots.top) == null ? void 0 : _a.call(slots), !singleChoice.value && Array.isArray(props.modelValue) ? (0, import_vue.createVNode)(import_checkbox_group.CheckboxGroup, {
|
123
|
+
"modelValue": props.modelValue
|
124
|
+
}, {
|
125
|
+
default: () => [List]
|
126
|
+
}) : (0, import_vue.createVNode)(import_radio_group.RadioGroup, {
|
111
127
|
"modelValue": props.modelValue
|
112
128
|
}, {
|
113
129
|
default: () => [List]
|
@@ -14,6 +14,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
14
14
|
};
|
15
15
|
disabled: BooleanConstructor;
|
16
16
|
switchable: BooleanConstructor;
|
17
|
+
singleChoice: BooleanConstructor;
|
17
18
|
defaultTagText: StringConstructor;
|
18
19
|
rightIcon: {
|
19
20
|
type: PropType<string>;
|
@@ -26,6 +27,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
26
27
|
};
|
27
28
|
disabled: BooleanConstructor;
|
28
29
|
switchable: BooleanConstructor;
|
30
|
+
singleChoice: BooleanConstructor;
|
29
31
|
defaultTagText: StringConstructor;
|
30
32
|
rightIcon: {
|
31
33
|
type: PropType<string>;
|
@@ -39,5 +41,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
39
41
|
disabled: boolean;
|
40
42
|
rightIcon: string;
|
41
43
|
switchable: boolean;
|
44
|
+
singleChoice: boolean;
|
42
45
|
}, {}>;
|
43
46
|
export default _default;
|
@@ -27,6 +27,7 @@ var import_tag = require("../tag");
|
|
27
27
|
var import_icon = require("../icon");
|
28
28
|
var import_cell = require("../cell");
|
29
29
|
var import_radio = require("../radio");
|
30
|
+
var import_checkbox = require("../checkbox");
|
30
31
|
const [name, bem] = (0, import_utils.createNamespace)("address-item");
|
31
32
|
var stdin_default = (0, import_vue2.defineComponent)({
|
32
33
|
name,
|
@@ -34,6 +35,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
34
35
|
address: (0, import_utils.makeRequiredProp)(Object),
|
35
36
|
disabled: Boolean,
|
36
37
|
switchable: Boolean,
|
38
|
+
singleChoice: Boolean,
|
37
39
|
defaultTagText: String,
|
38
40
|
rightIcon: (0, import_utils.makeStringProp)("edit")
|
39
41
|
},
|
@@ -75,7 +77,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
75
77
|
const {
|
76
78
|
address,
|
77
79
|
disabled,
|
78
|
-
switchable
|
80
|
+
switchable,
|
81
|
+
singleChoice
|
79
82
|
} = props;
|
80
83
|
const Info = [(0, import_vue.createVNode)("div", {
|
81
84
|
"class": bem("name")
|
@@ -83,12 +86,21 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
83
86
|
"class": bem("address")
|
84
87
|
}, [address.address])];
|
85
88
|
if (switchable && !disabled) {
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
if (singleChoice) {
|
90
|
+
return (0, import_vue.createVNode)(import_radio.Radio, {
|
91
|
+
"name": address.id,
|
92
|
+
"iconSize": 18
|
93
|
+
}, {
|
94
|
+
default: () => [Info]
|
95
|
+
});
|
96
|
+
} else {
|
97
|
+
return (0, import_vue.createVNode)(import_checkbox.Checkbox, {
|
98
|
+
"name": address.id,
|
99
|
+
"iconSize": 18
|
100
|
+
}, {
|
101
|
+
default: () => [Info]
|
102
|
+
});
|
103
|
+
}
|
92
104
|
}
|
93
105
|
return Info;
|
94
106
|
};
|
@@ -3,7 +3,7 @@ export declare const AddressList: import("../utils").WithInstall<import("vue").D
|
|
3
3
|
type: import("vue").PropType<import("./AddressListItem").AddressListAddress[]>;
|
4
4
|
default: () => never[];
|
5
5
|
};
|
6
|
-
modelValue: (
|
6
|
+
modelValue: import("vue").PropType<string | number | (string | number)[]>;
|
7
7
|
switchable: {
|
8
8
|
type: BooleanConstructor;
|
9
9
|
default: true;
|
@@ -28,7 +28,7 @@ export declare const AddressList: import("../utils").WithInstall<import("vue").D
|
|
28
28
|
type: import("vue").PropType<import("./AddressListItem").AddressListAddress[]>;
|
29
29
|
default: () => never[];
|
30
30
|
};
|
31
|
-
modelValue: (
|
31
|
+
modelValue: import("vue").PropType<string | number | (string | number)[]>;
|
32
32
|
switchable: {
|
33
33
|
type: BooleanConstructor;
|
34
34
|
default: true;
|
@@ -6,6 +6,7 @@ require("../../cell/index.css");
|
|
6
6
|
require("../../loading/index.css");
|
7
7
|
require("../../button/index.css");
|
8
8
|
require("../../radio-group/index.css");
|
9
|
+
require("../../checkbox-group/index.css");
|
9
10
|
require("../../checkbox/index.css");
|
10
11
|
require("../../radio/index.css");
|
11
12
|
require("../index.css");
|
package/lib/area/utils.js
CHANGED
@@ -61,9 +61,9 @@ function formatDataForCascade({
|
|
61
61
|
const showCounty = +columnsNum > 2;
|
62
62
|
const getProvinceChildren = () => {
|
63
63
|
if (showCity) {
|
64
|
-
return placeholder.length ? [
|
64
|
+
return placeholder.length > 1 ? [
|
65
65
|
makeOption(
|
66
|
-
placeholder[
|
66
|
+
placeholder[1],
|
67
67
|
AREA_EMPTY_CODE,
|
68
68
|
showCounty ? [] : void 0
|
69
69
|
)
|
@@ -81,7 +81,7 @@ function formatDataForCascade({
|
|
81
81
|
if (showCity) {
|
82
82
|
const getCityChildren = () => {
|
83
83
|
if (showCounty) {
|
84
|
-
return placeholder.length ? [makeOption(placeholder[
|
84
|
+
return placeholder.length > 2 ? [makeOption(placeholder[2])] : [];
|
85
85
|
}
|
86
86
|
};
|
87
87
|
Object.keys(city).forEach((code) => {
|