diff --git a/devui/select/src/use-select.ts b/devui/select/src/use-select.ts
index 60b40ee1e6ce3d782246a1991d801ece7447056c..a796cab82a9838f58b9fd49dad74b8f6b516cad3 100644
--- a/devui/select/src/use-select.ts
+++ b/devui/select/src/use-select.ts
@@ -3,18 +3,25 @@ import { PropType, ExtractPropTypes } from 'vue';
export interface OptionObjectItem {
name: string
value: string | number
+ _checked: boolean
[key: string]: any
}
-export type OptionItem = number | string | OptionObjectItem;
+
+export type OptionItem =
+ | number
+ | string
+ | ({ value: string | number; } & Partial
);
export type Options = Array;
+export type ModelValue = number | string | Array;
+
export const selectProps = {
modelValue: {
- type: [String, Number] as PropType,
+ type: [String, Number, Array] as PropType,
default: '',
},
'onUpdate:modelValue': {
- type: Function as PropType<(val: string | number) => void>,
+ type: Function as PropType<(val: ModelValue) => void>,
default: undefined,
},
options: {
@@ -33,6 +40,22 @@ export const selectProps = {
type: String,
default: '请选择',
},
+ multiple: {
+ type: Boolean,
+ default: false,
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ allowClear: {
+ type: Boolean,
+ default: false
+ },
+ optionDisabledKey: {
+ type: String,
+ default: ''
+ },
onToggleChange: {
type: Function as PropType<(bool: boolean) => void>,
default: undefined,
diff --git a/devui/select/src/utils.ts b/devui/select/src/utils.ts
index 3092da7789a04ffc4321311f268cccd1b802bb9b..1bab126858801e0c3372f6cd5ac7eb437ebebb26 100644
--- a/devui/select/src/utils.ts
+++ b/devui/select/src/utils.ts
@@ -17,3 +17,5 @@ export function className(
return classname;
}
+
+export type KeyType = T[K]
diff --git a/sites/components/select/index.md b/sites/components/select/index.md
index 4af9aadcfef8cf06b7909c8073c71cb2810e9873..5440b1c701421c85c04c4995e22167598e44b1f2 100644
--- a/sites/components/select/index.md
+++ b/sites/components/select/index.md
@@ -2,87 +2,174 @@
用于从列表中选择单个或者多个数据
-### 何时使用
+### 基本用法
-需要从列表中选择单个或者多个数据
+:::demo 通过`size`:`sm`,`md(默认)`,`lg`来设置`Select`大小,通过`overview`:`underlined`设置只有下边框样式
-### 基本用法
+```vue
+
+
+ Small
+
-#### Large
+ Middle
+
-
-
-
+ Large
+
-#### Middle
+ Underlined
+
+
+
-
-
-
+
+```
+:::
-#### Underlined
+#### 多选
-
-
-
+:::demo 通过`multiple`:`true`来开启多选
-```html
-
+```vue
+
+
+
-
+
```
+:::
+
+#### 禁用
+
+:::demo 通过`disabled`:`true`来禁用`Select`,通过`option-disabled-key`来设置单个选项禁用,比如设置`disabled`字段,则对象上disabled为`true`时不可选择
+
+```vue
+
+
+
+
+
+
+
-
+
+```
+:::
+
+#### 可清空
+
+:::demo 通过`allow-clear`:`true`来设置`Select`可清空
+
+```vue
+
+
+
+
+
+
+
+
+```
+:::