原生 <select> 换肤(与裸 <select> 同一枚 ▾,--ak-select-arrow):弹出的列表、键盘、手机上的滚轮选择器、读屏都是浏览器自己的,所以只画关着时的那个框。选项照 Naive UI 的 n-select 用 options 数组给,v-model 是选中项的 value(数字也行)。
基本
placeholder 是一个选不到的空选项:没选(v-model 为 null / undefined)时显示它。
分组 · 禁用项
{ type: "group", label, children } 渲染成 <optgroup>;选项写 disabled: true 选不到。
尺寸 · 状态
高 30 / 36 / 44,与输入框同一刻度。禁用、status="error"(红边 + aria-invalid)、success(绿边);放在表单字段里时跟字段的 validation-status。
什么时候不用它
- 选项 ≤ 5 个、又想一眼看全:用单选;立即生效的视图切换用单选按钮组。
- 要搜索 / 多选 / 自定义选项外观:原生
<select>做不到,需要下拉菜单类组件(.ak-dropdown)另做。
Vue API
| 属性 | 类型 | 默认 | 说明 |
|---|---|---|---|
options必填 | (SelectOption | SelectGroupOption)[] | — | 选项(同 Naive 的 options):{ label, value, disabled };{ type: "group", label, children } 是一组(<optgroup>) |
placeholder | string | — | 没选时显示的提示(一个选不到的空选项);不写则默认选中第一项的样子 |
size | "md""sm""lg" | "md" | 尺寸:sm 30 · md 36 · lg 44(px 高),与输入框同一刻度 |
status | "success""error" | — | 校验状态:error 红边(aria-invalid)· success 绿边;不写时跟 AkField 的 validation-status |
disabled | boolean | false | 禁用 |
label | string | — | 可访问名(aria-label):不在 AkField 里、旁边也没有 <label> 时必填 |
modelValue | SelectValue | null | — | 选中项的 value;没选是 null / undefined |
| 事件 | 参数 | 说明 |
|---|---|---|
update:modelValue | [value: SelectValue | null | undefined] |
CSS 实现
<select class="ak-select">;尺寸 .ak-select--sm / --lg;状态 :disabled [aria-invalid="true"] / :user-invalid .is-valid。
| 块 | 元素 __ | 修饰 -- |
|---|
