复合选择器
@astryxdesign/core v0.7.1 · ComplexSelector
属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
label | string | - | 字段标签,也是弹层的名称。 |
modelValue | Value | - | 当前值。用 v-model 绑定。 |
triggerLabel | string | - | 触发器上的文字。空的时候用 placeholder。 |
placeholder | string | 选择… | triggerLabel 为空时显示。 |
isLabelHidden | boolean | false | 隐藏可见标签。无障碍名称还在。 |
description | string | - | 标签下面的说明。 |
isOptional | boolean | false | 标成可选。 |
isRequired | boolean | false | 标成必填。 |
isDisabled | boolean | false | 触发器不再打开。 |
isLoading | boolean | false | 触发器上显示加载指示。 |
status | FieldStatusInput | - | 错误、警告或成功消息。 |
statusVariant | 'attached' | 'detached' | 'tooltip' | 'attached' | 状态消息放在哪里。 |
labelTooltip | string | - | 标签上的提示。 |
size | 'sm' | 'md' | 'lg' | 'md' | 触发器尺寸。 |
width | number | string | - | 字段宽度。数字按像素。 |
placement | PopoverPlacement | 'below' | 弹层打开的位置。 |
alignment | 'start' | 'center' | 'end' | 'start' | 弹层沿打开方向的对齐。 |
startIcon | string | Component | - | 内置触发器开头的图标。 |
variant | 'input' | 'secondary' | 'ghost' | 'input' | input 是带边框的字段。secondary 对齐次要按钮。ghost 看起来像工具栏按钮。后两种上的 attached 状态会收成独立说明。 |
containerClass / controlClass | class | — | 外壳接收 container* 和根上的 class。内置按钮接收 control*。自定义触发器上这两类样式不生效,开发环境会警告。 |
renderTrigger | (props) => VNode | - | 换掉字段和内置触发器。把 props 展开到你的控件上。trigger 插槽做同一件事。 |
handleRef | Ref | (handle) => void | - | 拿到 open、close、toggle 和 isOpen。模板 ref 暴露同样的方法。 |
changeAction | (value) => void | Promise<void> | - | 值变化后执行。还没结束时触发器显示加载指示。 |
事件
| 名称 | 参数 | 说明 |
|---|---|---|
update:modelValue | Value | commit 写入的值。 |
change | Value | 和 update:modelValue 一起发出。 |
click | event: MouseEvent | 触发器上的点击,在弹层打开之前触发。调用 event.preventDefault() 可以让它不打开。用 trigger 插槽或 renderTrigger 自己画触发器时,它在开关之后触发,取消不了。 |
keydown | event: KeyboardEvent | 触发器上的按键,在内置处理之后触发,每个键都会收到,包括打开弹层的 ArrowDown。换成自制触发器时,内置处理取消的按键不再透出。 |
openChange | isOpen: boolean | 弹层每次打开或关闭都会触发:触发器、键盘、点外面、Escape、close() 或命令式 handle。 |
插槽
默认插槽收到 value、commit、close 和 state。state 是 { isOpen, isBusy, triggerId, contentId }。value 包含还在提交中的乐观值。