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 CHANGED
@@ -17,7 +17,7 @@
17
17
   
18
18
  ·
19
19
   
20
- <a href="https://vant-ui.github.io/vant">文档站</a>
20
+ <a href="https://vant.pro/vant/">Documentation (backup)</a>
21
21
  &nbsp;
22
22
  ·
23
23
  &nbsp;
@@ -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#/en-US/quickstart).
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
- - [Changelog](https://vant-ui.github.io/vant#/en-US/changelog)
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: import("vue").PropType<AddressListAddress[]>;
5
+ type: PropType<AddressListAddress[]>;
6
6
  default: () => never[];
7
7
  };
8
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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: import("vue").PropType<AddressListAddress[]>;
32
+ type: PropType<AddressListAddress[]>;
33
33
  default: () => never[];
34
34
  };
35
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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: import("vue").PropType<AddressListAddress[]>;
57
+ type: PropType<AddressListAddress[]>;
58
58
  default: () => never[];
59
59
  };
60
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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
- emit("update:modelValue", item.id);
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(RadioGroup, {
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
- return _createVNode(Radio, {
65
- "name": address.id,
66
- "iconSize": 18
67
- }, {
68
- default: () => [Info]
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: (NumberConstructor | StringConstructor)[];
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: (NumberConstructor | StringConstructor)[];
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[0],
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[1])] : [];
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
@@ -106,4 +106,4 @@ declare namespace _default {
106
106
  }
107
107
  export default _default;
108
108
  export function install(app: any): void;
109
- export const version: "4.9.0";
109
+ export const version: "4.9.1";
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.0";
102
+ const version = "4.9.1";
103
103
  function install(app) {
104
104
  const components = [
105
105
  ActionBar,
@@ -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: import("vue").PropType<AddressListAddress[]>;
5
+ type: PropType<AddressListAddress[]>;
6
6
  default: () => never[];
7
7
  };
8
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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: import("vue").PropType<AddressListAddress[]>;
32
+ type: PropType<AddressListAddress[]>;
33
33
  default: () => never[];
34
34
  };
35
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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: import("vue").PropType<AddressListAddress[]>;
57
+ type: PropType<AddressListAddress[]>;
58
58
  default: () => never[];
59
59
  };
60
- modelValue: (NumberConstructor | StringConstructor)[];
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: import("vue").PropType<AddressListAddress[]>;
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: import("vue").PropType<string>;
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
- emit("update:modelValue", item.id);
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)(import_radio_group.RadioGroup, {
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
- return (0, import_vue.createVNode)(import_radio.Radio, {
87
- "name": address.id,
88
- "iconSize": 18
89
- }, {
90
- default: () => [Info]
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: (NumberConstructor | StringConstructor)[];
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: (NumberConstructor | StringConstructor)[];
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[0],
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[1])] : [];
84
+ return placeholder.length > 2 ? [makeOption(placeholder[2])] : [];
85
85
  }
86
86
  };
87
87
  Object.keys(city).forEach((code) => {