选择与表单

开关 AsamSwitch

立即切换二态设置。

使用场景 ​

立即切换二态设置。默认绑定布尔值;activeValue 与 inactiveValue 可定义字符串或数值状态。异步确认由 beforeChange 决定是否允许变化。

绑定、文本与事件 ​

change 与 input 携带切换后的值;loading 和 disabled 阻止操作。inlinePrompt 将状态文字放在轨道内。

绑定、文本与事件

展开源码

异步确认与动作插槽 ​

返回 boolean 表示同步允许或拒绝,Promise 表示异步允许或拒绝。本地延迟期间应用控制 loading;拒绝后模型保持原值,finally 清除 loading。两种确认共用同一个允许开关,动作插槽展示当前状态。

异步确认与动作插槽

展开源码

四档尺寸与上下文继承 ​

四个实例分别显式使用 large、big、default、small。下面省略 size 的实例随 ConfigProvider 响应切换;显式 size 覆盖祖先。面板本身没有 size 契约的入口不附加虚构尺寸属性。

四档尺寸与上下文继承

展开源码

ASAM 扩展与迁移 ​

四档密度控制轨道与交互区;active/inactive 与 active-action/inactive-action 插槽分别提供状态内容和滑块动作内容。公开实例为 focus 与 checked。旧业务状态需要显式 activeValue/inactiveValue,不通过字符串 true/false 猜测转换。

图标、数字值与实例状态 ​

activeIcon / inactiveIcon 用于轨道内容,activeActionIcon / inactiveActionIcon 用于滑块动作。 完整说明。

图标、数字值、加载与实例状态

展开源码

API 阅读方式 ​

API 按公开类型与运行默认值生成;未知默认值不等于 false 或空值。 完整说明。

下方 Props、Events、Slots、Exposes 按当前实际公开类型与运行默认值生成。组合属性按分支生效,不能任意混搭值模式。标为“未知 / 未声明”的默认值不代表 false 或空值。源码区域提供对应语言的独立 Demo.vue,可直接复制或下载;本地辅助组件、数据和素材已内联到当前文件。

API

属性 AsamSwitchProps

属性名说明类型默认值
modelValue绑定值,必须等于 active-value 或 inactive-value,默认为 Boolean 类型V | undefinedfalse
activeValueswitch 状态为 on 时的值V | undefinedtrue
inactiveValueswitch的状态为 off 时的值V | undefinedfalse
disabled是否禁用boolean | undefinedundefined
loading是否显示加载中boolean | undefinedfalse
validateEvent是否触发表单验证boolean | undefinedtrue
activeTextswitch 打开时的文字描述string | undefined""
inactiveTextswitch 的状态为 off 时的文字描述string | undefined""
nameswitch 对应的 name 属性string | undefined""
idinput 的 idstring | undefined—
ariaLabel等价于原生 input aria-label 属性string | undefined—
tabindexinput 的 tabindex(AsamSwitchProps<V>)["tabindex"]—
widthswitch 的宽度(AsamSwitchProps<V>)["width"]""
inlinePrompt无论图标或文本是否显示在点内,只会呈现文本的第一个字符boolean | undefinedfalse
inactiveActionIconoff状态下显示的图标组件(AsamSwitchProps<V>)["inactiveActionIcon"]—
activeActionIconon状态下显示的图标组件(AsamSwitchProps<V>)["activeActionIcon"]—
activeIconswitch 状态为 on 时所显示图标,设置此项会忽略 active-text(AsamSwitchProps<V>)["activeIcon"]—
inactiveIconswitch 状态为 off 时所显示图标,设置此项会忽略 inactive-text(AsamSwitchProps<V>)["inactiveIcon"]—
beforeChangeswitch 状态改变前的钩子,返回 false 或者返回 Promise 且被 reject 则停止切换(() => Promise<boolean> | boolean) | undefined—
sizeswitch 的大小enum"large" | "big" | "default" | "small"完整类型:AsamControlSize | undefinedundefined

事件 AsamSwitchEmits

属性名说明类型默认值
update:modelValue—[value: AsamValue]—
change—[value: AsamValue]—
input—[value: AsamValue]—

插槽 AsamSwitchSlots

属性名说明类型默认值
active—(() => unknown) | undefined—
inactive—(() => unknown) | undefined—
active-action—(() => unknown) | undefined—
inactive-action—(() => unknown) | undefined—

实例方法与状态 AsamSwitchExpose

属性名说明类型默认值
focus手动 focus 到 switch 组件() => void—
checked开关是否打开。boolean—

用法与契约补充说明 ​

图标、数字值与实例状态 ​

activeIcon / inactiveIcon 用于轨道内容,activeActionIcon / inactiveActionIcon 用于滑块动作。 active / inactive 插槽覆盖内容,active-action / inactive-action 覆盖动作;inlinePrompt 将内容 放入轨道。activeValue 与 inactiveValue 可为字符串、数字或布尔值,模型必须使用同一集合。 loading 和 disabled 禁止操作;beforeChange 可同步允许/拒绝,也可返回 Promise。 input / change / update:modelValue 各自保留实际新值。focus 聚焦原生输入,checked 是实时布尔状态。

API 阅读方式 ​

旧 label 改用 ariaLabel(模板中写 aria-label)。旧 activeColor/inactiveColor/borderColor 已移除,颜色分别用 CSS 变量 --el-switch-on-color、--el-switch-off-color、--el-switch-border-color 设置;变量可写在实例 style 中,状态值仍由 activeValue/inactiveValue 决定。

参数与事件补充说明

参数与事件说明

modelValue

必填:否;声明来源:ASAM 声明。

默认值与来源
false(已安装运行时;已安装组件)
activeValue

必填:否;声明来源:ASAM 声明。

默认值与来源
true(已安装运行时;已安装组件)
inactiveValue

必填:否;声明来源:ASAM 声明。

默认值与来源
false(已安装运行时;已安装组件)
disabled

必填:否;声明来源:ASAM 声明。

disabled 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
undefined(已安装运行时;已安装组件)
loading

必填:否;声明来源:ASAM 声明。

loading 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
false(隐式 Boolean 默认;已安装组件)
validateEvent

必填:否;声明来源:ASAM 声明。

validateEvent 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
true(已安装运行时;已安装组件)
activeText

必填:否;声明来源:ASAM 声明。

默认值与来源
""(已安装运行时;已安装组件)
inactiveText

必填:否;声明来源:ASAM 声明。

默认值与来源
""(已安装运行时;已安装组件)
name

必填:否;声明来源:ASAM 声明。

默认值与来源
""(已安装运行时;已安装组件)
id

必填:否;声明来源:ASAM 声明。

ariaLabel

必填:否;声明来源:上游声明。

默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

tabindex

必填:否;声明来源:上游声明。

默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

width

必填:否;声明来源:上游声明。

默认值与来源
""(已安装运行时;已安装组件)

固定上游文档默认:''(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码默认表达式:''(2.14.7;源码事实,未作为 ASAM 运行实测)

inlinePrompt

必填:否;声明来源:上游声明。

inlinePrompt 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
false(隐式 Boolean 默认;已安装组件)

固定上游文档默认:false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

inactiveActionIcon

必填:否;声明来源:上游声明。

inactiveActionIcon 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamSwitchProps<V>)["inactiveActionIcon"]>, (...args: never[]) => unknown>>[1]): any

  • inactiveActionIcon.__isFragment: undefined — 依赖声明
  • inactiveActionIcon.__isTeleport: undefined — 依赖声明
  • inactiveActionIcon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

activeActionIcon

必填:否;声明来源:上游声明。

activeActionIcon 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamSwitchProps<V>)["activeActionIcon"]>, (...args: never[]) => unknown>>[1]): any

  • activeActionIcon.__isFragment: undefined — 依赖声明
  • activeActionIcon.__isTeleport: undefined — 依赖声明
  • activeActionIcon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

activeIcon

必填:否;声明来源:上游声明。

activeIcon 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamSwitchProps<V>)["activeIcon"]>, (...args: never[]) => unknown>>[1]): any

  • activeIcon.__isFragment: undefined — 依赖声明
  • activeIcon.__isTeleport: undefined — 依赖声明
  • activeIcon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

inactiveIcon

必填:否;声明来源:上游声明。

inactiveIcon 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamSwitchProps<V>)["inactiveIcon"]>, (...args: never[]) => unknown>>[1]): any

  • inactiveIcon.__isFragment: undefined — 依赖声明
  • inactiveIcon.__isTeleport: undefined — 依赖声明
  • inactiveIcon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

beforeChange

必填:否;声明来源:上游声明。

beforeChange 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): boolean | Promise<boolean>

默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

size

必填:否;声明来源:ASAM 声明。

size 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:"large" / "big" / "default" / "small"

默认值与来源
undefined(源码表达式;ASAM 声明)
AsamSwitchProps 公开类型视图
ts
import type { Attrs } from 'vue';
import type { AsamSwitchProps, AsamValue, AsamChoiceRuntimeProps, AsamControlSize } from '@asam-ui/ui';

type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;

// AsamSwitchProps
type PublicContract<V extends AsamValue = boolean> = {
	readonly "modelValue"?: V | undefined;
	readonly "activeValue"?: V | undefined;
	readonly "inactiveValue"?: V | undefined;
	readonly "disabled"?: boolean | undefined;
	readonly "loading"?: boolean | undefined;
	readonly "validateEvent"?: boolean | undefined;
	readonly "activeText"?: string | undefined;
	readonly "inactiveText"?: string | undefined;
	readonly "name"?: string | undefined;
	readonly "id"?: string | undefined;
	readonly "ariaLabel"?: string | undefined;
	readonly "tabindex"?: (AsamSwitchProps<V>)["tabindex"];
	readonly "width"?: (AsamSwitchProps<V>)["width"];
	readonly "inlinePrompt"?: boolean | undefined;
	readonly "inactiveActionIcon"?: (AsamSwitchProps<V>)["inactiveActionIcon"];
	readonly "activeActionIcon"?: (AsamSwitchProps<V>)["activeActionIcon"];
	readonly "activeIcon"?: (AsamSwitchProps<V>)["activeIcon"];
	readonly "inactiveIcon"?: (AsamSwitchProps<V>)["inactiveIcon"];
	readonly "beforeChange"?: (() => Promise<boolean> | boolean) | undefined;
	"size"?: AsamControlSize | undefined;
};

参数与事件说明

update:modelValue

必填:是;声明来源:ASAM 声明。

change

必填:是;声明来源:ASAM 声明。

input

必填:是;声明来源:ASAM 声明。

AsamSwitchEmits 公开类型视图
ts
import type { AsamSwitchEmits, AsamValue } from '@asam-ui/ui';

// AsamSwitchEmits
type PublicContract = {
	"update:modelValue": [value: AsamValue];
	"change": [value: AsamValue];
	"input": [value: AsamValue];
};

参数与事件说明

active

必填:否;声明来源:ASAM 声明。

active 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): unknown

inactive

必填:否;声明来源:ASAM 声明。

inactive 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): unknown

active-action

必填:否;声明来源:ASAM 声明。

active-action 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): unknown

inactive-action

必填:否;声明来源:ASAM 声明。

inactive-action 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): unknown

AsamSwitchSlots 公开类型视图
ts
import type { AsamSwitchSlots } from '@asam-ui/ui';

// AsamSwitchSlots
type PublicContract = {
	"active"?: (() => unknown) | undefined;
	"inactive"?: (() => unknown) | undefined;
	"active-action"?: (() => unknown) | undefined;
	"inactive-action"?: (() => unknown) | undefined;
};

参数与事件说明

focus

必填:是;声明来源:上游声明。

focus 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): void

checked

必填:是;声明来源:上游声明。

checked 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

AsamSwitchExpose 公开类型视图
ts
import type { AsamSwitchExpose } from '@asam-ui/ui';

// AsamSwitchExpose
type PublicContract = {
	"focus": () => void;
	"checked": boolean;
};

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭