复选框
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
v-model | boolean | 'indeterminate' | — | 必需,当前的选中状态,支持布尔值与半选。 |
label | string | — | 必需,作为控件无障碍名称的文本。 |
id | string | — | 原生输入元素的 ID,省略时由组件自动生成。 |
size | 'sm' | 'md' | 'md' | 控件尺寸,sm 为 20px,md 为 24px。 |
width | number | string | — | 组件宽度,传入数字时按像素处理。 |
description | string | — | 显示在标签下方的补充说明。 |
isLabelHidden | boolean | false | 在视觉上隐藏标签和说明,但保留它们的无障碍关联。 |
isDisabled | boolean | false | 禁用控件并阻止修改,禁用字段不参与表单提交。 |
disabledMessage | string | — | 禁用原因的说明文字;提供后,禁用控件仍保持可聚焦,原因通过提示气泡展示。 |
isReadOnly | boolean | false | 只读,阻止修改;已选中的字段仍会参与表单提交。 |
isLoading | boolean | false | 显示加载状态,加载期间阻止重复切换。 |
loadingLabel | string | 'Loading' | 加载状态读给屏幕阅读器的提示文本。 |
isRequired | boolean | false | 显示“必填”提示,并启用原生必填校验。 |
isOptional | boolean | false | 显示“可选”提示,优先于 isRequired。 |
optionalLabel | string | 'Optional' | “可选”提示的文字。 |
requiredLabel | string | 'Required' | “必填”提示的文字。 |
htmlName | string | — | 表单提交时的字段名,优先于原生 name 属性。 |
status | FieldStatusInput | — | 状态消息,包含状态类型、可选的消息文本和消息 ID。 |
labelIcon | Component | — | 显示在标签前的装饰图标。 |
labelTooltip | string | — | 标签旁信息按钮的提示文字。 |
changeAction | CheckboxInputChangeAction | — | 选中状态变化后执行的操作,可返回 Promise 用于异步提交。 |
hasAutoFocus | boolean | false | 组件挂载后自动聚焦输入元素。 |
状态消息
status 包含以下字段:
type:'error'、'warning'或'success'。message:可选的消息文本。messageId:可选的消息 ID。
消息显示在复选框下方。错误使用 assertive 播报。警告和成功使用 polite 播报。
事件
update:modelValue(value):用户切换后发出布尔值。change(value, event):模型更新后触发。actionError(error, value, event):异步操作拒绝或同步抛出错误时触发。
event 是可取消的 CheckboxInputChangeEvent。 event.detail.originalEvent 保留原生事件。 在 change 中调用 event.preventDefault() 可跳过 changeAction。 此操作不会撤销模型更新。
异步操作
changeAction(value, event) 接收新值和组件事件。
- 操作返回 Promise 时,组件显示加载状态。
- 操作完成前,组件阻止重复切换。
- 父组件的新值优先于临时显示值。
- Promise 成功或失败后,组件清除加载状态。
- 失败时,组件不会撤销写入
v-model的值。 - 使用
@action-error显示失败信息。 - 需要回滚时,由业务层更新绑定值。
原生表单
htmlName或name设置字段名。- 原生
value设置提交值。默认值是'on'。 value不控制选中状态。选中状态由v-model控制。- 未选和半选字段不参与提交。
- 只读字段在选中时参与提交。
- 禁用字段不参与提交。
- 带禁用原因的字段使用
aria-disabled,并脱离原生表单。 isOptional优先于isRequired。单独传入的原生required仍生效。
原生 form.reset() 后,组件恢复当前 v-model。 需要清空选择时,在表单的 reset 事件中更新绑定值。
模板引用与属性
element:HTMLInputElement | null。focus(options?: FocusOptions):聚焦输入元素。blur():移除输入焦点。class和style应用于组件外层。- 未声明的原生属性和事件传入
input。 aria-labelledby和aria-describedby与组件内部 ID 合并。- 组件管理
checked、indeterminate、type和核心 ARIA 状态。
插槽
labelIcon:标签前的装饰图标。优先于labelIcon属性。
主题
css
.my-checkbox {
--astryx-checkbox-accent: #047857;
--astryx-checkbox-on-accent: #fff;
--astryx-checkbox-focus: #047857;
}--astryx-checkbox-background:未选背景。--astryx-checkbox-border:未选边框。--astryx-checkbox-accent:选中与半选背景。--astryx-checkbox-on-accent:选中标记颜色。--astryx-checkbox-focus:键盘焦点颜色。--astryx-checkbox-disabled-background:禁用且未选时的背景。--astryx-radius-inner:指示器圆角。
Neutral 自动适配 color-scheme。 使用 data-astryx-color-mode="light" 或 "dark" 可指定模式。