使用场景 ​
常驻显示级联菜单,用于不需要输入框与弹层的层级选择。面板使用原始 options 与 props 字段映射,模型默认保存完整路径。
路径与节点插槽 ​
default 收到 node/data。change 更新选择路径;getCheckedNodes 读取选中节点,clearCheckedNodes 清空内部勾选。
路径与节点插槽
<template>
<div class="example">
<AsamCascaderPanel ref="panel" v-model="value" :options="options">
<template #default="{ data }">
{{ data.label }}
</template>
<template #empty> 暂无节点 </template>
</AsamCascaderPanel>
<div class="row">
<AsamButton type="default" @click="inspect"> 读取选中节点 </AsamButton>
<AsamButton type="default" @click="clear"> 清空 </AsamButton>
</div>
<output>路径:{{ value }};节点:{{ selected }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamCascaderPanelBasicExample' });
import { ref } from 'vue';
import { AsamCascaderPanel, AsamButton } from '@asam-ui/ui';
import type { AsamCascaderPanelExpose, AsamCascaderPanelProps } from '@asam-ui/ui';
const panel = ref<AsamCascaderPanelExpose>();
const value = ref<AsamCascaderPanelProps['modelValue']>([]);
const options = [
{
value: 'team',
label: '团队',
children: [
{ value: 'design', label: '设计' },
{ value: 'dev', label: '开发' }
]
}
];
const selected = ref('');
function inspect() {
selected.value = JSON.stringify(panel.value?.getCheckedNodes(true).map((node) => node.value));
}
function clear() {
panel.value?.clearCheckedNodes();
value.value = [];
}
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<AsamCascaderPanel ref="panel" v-model="value" :options="options">
<template #default="{ data }">
{{ data.label }}
</template>
<template #empty> 暂无节点 </template>
</AsamCascaderPanel>
<div class="row">
<AsamButton type="default" @click="inspect"> 读取选中节点 </AsamButton>
<AsamButton type="default" @click="clear"> 清空 </AsamButton>
</div>
<output>路径:{{ value }};节点:{{ selected }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamCascaderPanelBasicExample' });
import { ref } from 'vue';
import { AsamCascaderPanel, AsamButton } from '@asam-ui/ui';
const panel = ref();
const value = ref([]);
const options = [
{
value: 'team',
label: '团队',
children: [
{ value: 'design', label: '设计' },
{ value: 'dev', label: '开发' }
]
}
];
const selected = ref('');
function inspect() {
selected.value = JSON.stringify(panel.value?.getCheckedNodes(true).map((node) => node.value));
}
function clear() {
panel.value?.clearCheckedNodes();
value.value = [];
}
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
多选与非叶节点 ​
props.multiple 开启多选,checkStrictly 允许选择任意层级,emitPath=false 返回节点值。与 ASAM Cascader 的规范化 valueMode 区分。
多选与非叶节点
<template>
<div class="example">
<AsamCascaderPanel
v-model="value"
:options="options"
:props="{ multiple: true, checkStrictly: true, emitPath: false }"
/>
<output>节点值:{{ value }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamCascaderPanelMultipleExample' });
import { ref } from 'vue';
import { AsamCascaderPanel } from '@asam-ui/ui';
import type { AsamCascaderPanelProps } from '@asam-ui/ui';
const value = ref<AsamCascaderPanelProps['modelValue']>([]);
const options = [
{
value: 'team',
label: '团队',
children: [
{ value: 'design', label: '设计' },
{ value: 'dev', label: '开发' }
]
}
];
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<AsamCascaderPanel
v-model="value"
:options="options"
:props="{ multiple: true, checkStrictly: true, emitPath: false }"
/>
<output>节点值:{{ value }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamCascaderPanelMultipleExample' });
import { ref } from 'vue';
import { AsamCascaderPanel } from '@asam-ui/ui';
const value = ref([]);
const options = [
{
value: 'team',
label: '团队',
children: [
{ value: 'design', label: '设计' },
{ value: 'dev', label: '开发' }
]
}
];
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
ASAM 扩展与迁移 ​
面板没有公开 size 属性,不声称支持输入控件的四档密度;外围选择输入与四档弹层密度见 Cascader。lazy/lazyLoad 由原始 props 控制,resolve 结果必须符合当前节点字段映射。
面板始终使用原生级联模型,TS 父模型使用 ref<AsamCascaderPanelProps['modelValue']>,初始路径数组与多选配置不缩窄原生模型的声明范围。
API 阅读方式 ​
下方 Props、Events、Slots、Exposes 按当前实际公开类型与运行默认值生成。组合属性按分支生效,不能任意混搭值模式。标为“未知 / 未声明”的默认值不代表 false 或空值。源码区域提供对应语言的独立 Demo.vue,可直接复制或下载;本地辅助组件、数据和素材已内联到当前文件。
级联面板 ​
本示例使用 AsamCascaderPanel 的公开原生协议;操作、数据结构与回调完整保存在 TS/JS SFC 中。
级联面板
<template>
<AsamCascaderPanel :options="options" />
</template>
<script lang="ts" setup>
import { AsamCascaderPanel } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: cascader/panel.vue
const options = [
{
value: 'guide',
label: '指南',
children: [
{
value: 'disciplines',
label: 'Disciplines',
children: [
{
value: 'consistency',
label: '一致性'
},
{
value: 'feedback',
label: '反馈'
},
{
value: 'efficiency',
label: '效率'
},
{
value: 'controllability',
label: '可控性'
}
]
},
{
value: 'navigation',
label: 'Navigation',
children: [
{
value: 'side nav',
label: 'Side Navigation'
},
{
value: 'top nav',
label: 'Top Navigation'
}
]
}
]
},
{
value: 'component',
label: '组件',
children: [
{
value: 'basic',
label: 'Basic',
children: [
{
value: 'layout',
label: 'Layout'
},
{
value: 'color',
label: '颜色'
},
{
value: 'typography',
label: 'Typography'
},
{
value: 'icon',
label: 'Icon'
},
{
value: 'button',
label: '按钮'
}
]
},
{
value: 'form',
label: 'Form',
children: [
{
value: 'radio',
label: 'Radio'
},
{
value: 'checkbox',
label: 'Checkbox'
},
{
value: 'input',
label: 'Input'
},
{
value: 'input-number',
label: 'InputNumber'
},
{
value: 'select',
label: '选择'
},
{
value: 'cascader',
label: 'Cascader'
},
{
value: 'switch',
label: 'Switch'
},
{
value: 'slider',
label: 'Slider'
},
{
value: 'time-picker',
label: 'TimePicker'
},
{
value: 'date-picker',
label: 'DatePicker'
},
{
value: 'datetime-picker',
label: 'DateTimePicker'
},
{
value: 'upload',
label: '上传'
},
{
value: 'rate',
label: '评分'
},
{
value: 'form',
label: 'Form'
}
]
},
{
value: 'data',
label: 'Data',
children: [
{
value: 'table',
label: 'Table'
},
{
value: 'tag',
label: '标签'
},
{
value: 'progress',
label: 'Progress'
},
{
value: 'tree',
label: 'Tree'
},
{
value: 'pagination',
label: 'Pagination'
},
{
value: 'badge',
label: 'Badge'
}
]
},
{
value: 'notice',
label: '注意',
children: [
{
value: 'alert',
label: 'Alert'
},
{
value: 'loading',
label: '加载中'
},
{
value: 'message',
label: 'Message'
},
{
value: 'message-box',
label: 'MessageBox'
},
{
value: 'notification',
label: 'Notification'
}
]
},
{
value: 'navigation',
label: 'Navigation',
children: [
{
value: 'menu',
label: 'Menu'
},
{
value: 'tabs',
label: 'Tabs'
},
{
value: 'breadcrumb',
label: 'Breadcrumb'
},
{
value: 'dropdown',
label: 'Dropdown'
},
{
value: 'steps',
label: 'Steps'
}
]
},
{
value: 'others',
label: 'Others',
children: [
{
value: 'dialog',
label: 'Dialog'
},
{
value: 'tooltip',
label: 'Tooltip'
},
{
value: 'popover',
label: 'Popover'
},
{
value: 'card',
label: 'Card'
},
{
value: 'carousel',
label: 'Carousel'
},
{
value: 'collapse',
label: 'Collapse'
}
]
}
]
},
{
value: 'resource',
label: '资源',
children: [
{
value: 'axure',
label: 'Axure Components'
},
{
value: 'sketch',
label: 'Sketch Templates'
},
{
value: 'docs',
label: 'Design Documentation'
}
]
}
];
</script>
<template>
<AsamCascaderPanel :options="options" />
</template>
<script setup>
import { AsamCascaderPanel } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: cascader/panel.vue
const options = [
{
value: 'guide',
label: '指南',
children: [
{
value: 'disciplines',
label: 'Disciplines',
children: [
{
value: 'consistency',
label: '一致性'
},
{
value: 'feedback',
label: '反馈'
},
{
value: 'efficiency',
label: '效率'
},
{
value: 'controllability',
label: '可控性'
}
]
},
{
value: 'navigation',
label: 'Navigation',
children: [
{
value: 'side nav',
label: 'Side Navigation'
},
{
value: 'top nav',
label: 'Top Navigation'
}
]
}
]
},
{
value: 'component',
label: '组件',
children: [
{
value: 'basic',
label: 'Basic',
children: [
{
value: 'layout',
label: 'Layout'
},
{
value: 'color',
label: '颜色'
},
{
value: 'typography',
label: 'Typography'
},
{
value: 'icon',
label: 'Icon'
},
{
value: 'button',
label: '按钮'
}
]
},
{
value: 'form',
label: 'Form',
children: [
{
value: 'radio',
label: 'Radio'
},
{
value: 'checkbox',
label: 'Checkbox'
},
{
value: 'input',
label: 'Input'
},
{
value: 'input-number',
label: 'InputNumber'
},
{
value: 'select',
label: '选择'
},
{
value: 'cascader',
label: 'Cascader'
},
{
value: 'switch',
label: 'Switch'
},
{
value: 'slider',
label: 'Slider'
},
{
value: 'time-picker',
label: 'TimePicker'
},
{
value: 'date-picker',
label: 'DatePicker'
},
{
value: 'datetime-picker',
label: 'DateTimePicker'
},
{
value: 'upload',
label: '上传'
},
{
value: 'rate',
label: '评分'
},
{
value: 'form',
label: 'Form'
}
]
},
{
value: 'data',
label: 'Data',
children: [
{
value: 'table',
label: 'Table'
},
{
value: 'tag',
label: '标签'
},
{
value: 'progress',
label: 'Progress'
},
{
value: 'tree',
label: 'Tree'
},
{
value: 'pagination',
label: 'Pagination'
},
{
value: 'badge',
label: 'Badge'
}
]
},
{
value: 'notice',
label: '注意',
children: [
{
value: 'alert',
label: 'Alert'
},
{
value: 'loading',
label: '加载中'
},
{
value: 'message',
label: 'Message'
},
{
value: 'message-box',
label: 'MessageBox'
},
{
value: 'notification',
label: 'Notification'
}
]
},
{
value: 'navigation',
label: 'Navigation',
children: [
{
value: 'menu',
label: 'Menu'
},
{
value: 'tabs',
label: 'Tabs'
},
{
value: 'breadcrumb',
label: 'Breadcrumb'
},
{
value: 'dropdown',
label: 'Dropdown'
},
{
value: 'steps',
label: 'Steps'
}
]
},
{
value: 'others',
label: 'Others',
children: [
{
value: 'dialog',
label: 'Dialog'
},
{
value: 'tooltip',
label: 'Tooltip'
},
{
value: 'popover',
label: 'Popover'
},
{
value: 'card',
label: 'Card'
},
{
value: 'carousel',
label: 'Carousel'
},
{
value: 'collapse',
label: 'Collapse'
}
]
}
]
},
{
value: 'resource',
label: '资源',
children: [
{
value: 'axure',
label: 'Axure Components'
},
{
value: 'sketch',
label: 'Sketch Templates'
},
{
value: 'docs',
label: 'Design Documentation'
}
]
}
];
</script>
原生协议完整 API ​
面板直接使用原生 options、props、modelValue;不提供标准化 value/object 转换,也不提供 Select 输入壳。 完整说明。
属性 ​
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| model-value / v-model | 选中项绑定值 | string/number/arraystring[] | number[] | any |
— |
| options | 选项的数据源, value 和 label 可以通过 CascaderProps 自定义. | arrayAsamCascaderOption[] |
— |
| props | 配置选项, 请参阅下面 CascaderProps 表。 | objectCascaderProps |
— |
| virtual-scroll | 是否为大数据启用虚拟滚动 | boolean | false |
| item-size | 虚拟滚动的节点高度 (px) | number | 34 |
| height | 虚拟滚动的菜单高度 (px) | number | 204 |
事件 ​
| 名称 | 说明 | 类型 |
|---|---|---|
| change | 当绑定值变化时触发的事件 | Function(value: AsamCascaderNativeProps['modelValue'] | undefined) => void |
| update:modelValue | 当绑定值变化时触发的事件 | Function(value: AsamCascaderNativeProps['modelValue'] | undefined) => void |
| expand-change | 当展开节点发生变化时触发 | Function(value: AsamCascaderNode['pathValues']) => void |
| close | 面板的关闭事件,提供给 Cascader 以便做更好的判断。 | Function() => void |
插槽 ​
| 名称 | 说明 | 类型 |
|---|---|---|
| default | 下级节点的自定义内容,它们分别是当前节点对象和节点数据。 | object{ node: any, data: any } |
| empty | 没有数据时面板的内容。 | — |
实例方法与状态 ​
| 名称 | 说明 | 类型 |
|---|---|---|
| getCheckedNodes | 获取一个当前选中节点的数组。(仅仅是传单) 是否只返回叶选中的节点,默认是 false | Function(leafOnly: boolean) => AsamCascaderNode[] | undefined |
| clearCheckedNodes | 清空选中的节点 | Function() => void |
级联配置类型(CascaderProps) ​
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| expandTrigger | 次级菜单的展开方式 | enum'click' | 'hover' |
click |
| multiple | 是否多选 | boolean | false |
| checkStrictly | 是否严格的遵守父子节点不互相关联 | boolean | false |
| emitPath | 在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值 | boolean | true |
| lazy | 是否动态加载子节点,需与 lazyLoad 方法结合使用 | boolean | false |
| lazyLoad | 加载子节点数据的方法,仅在 lazy 为 true 时生效;支持通过 reject 回调拒绝加载。 |
Function(node: Node, resolve: Resolve, reject: () => void) => void |
— |
| value | 指定选项的值为选项对象的某个属性值 | string | value |
| label | 指定节点标签为节点对象的某个属性值 | string | label |
| children | 指定选项的子选项为选项对象的某个属性值 | string | children |
| disabled | 指定选项的禁用为选项对象的某个属性值 | string | disabled |
| leaf | 指定选项的叶子节点的标志位为选项对象的某个属性值 | string | leaf |
| hoverThreshold | hover 时展开菜单的灵敏度阈值 | number | 500 |
| checkOnClickNode | 点击节点时是否选中或取消选中该节点 | boolean | false |
| checkOnClickLeaf | 点击叶节点(最后一个子节点)时是否检查或取消节点 | boolean | true |
| showPrefix | 是否显示单选框或复选框的前缀(图标) | boolean | true |
API
属性 AsamCascaderPanelProps
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
height | 虚拟滚动的菜单高度 (px) | number | undefined | 204 |
border | — | (AsamCascaderPanelProps)["border"] | true |
props | 配置选项, 请参阅下面 CascaderProps 表。 | AsamCascaderNativeConfig | undefined | 工厂函数(每个实例创建) |
itemSize | 虚拟滚动的节点高度 (px) | number | undefined | 34 |
modelValue | 选中项绑定值 | (AsamCascaderPanelProps)["modelValue"] | — |
options | 选项的数据源, value 和 label 可以通过 CascaderProps 自定义. | AsamCascaderOption[] | undefined | 工厂函数(每个实例创建) |
renderLabel | — | (AsamCascaderPanelProps)["renderLabel"] | — |
virtualScroll | 是否为大数据启用虚拟滚动 | boolean | undefined | false |
事件 AsamCascaderPanelEmits
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
update:modelValue | — | (AsamCascaderPanelEmits)["update:modelValue"] | — |
change | — | (AsamCascaderPanelEmits)["change"] | — |
close | — | (AsamCascaderPanelEmits)["close"] | — |
expand-change | — | (AsamCascaderPanelEmits)["expand-change"] | — |
插槽 AsamCascaderPanelSlots
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
default | — | ((scope: { node: AsamCascaderNode; data: AsamCascaderOption; }) => unknown) | undefined | — |
empty | — | (() => unknown) | undefined | — |
实例方法与状态 AsamCascaderPanelExpose
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
getCheckedNodes | 获取一个当前选中节点的数组。(仅仅是传单) 是否只返回叶选中的节点,默认是 false | (leafOnly: boolean) => AsamCascaderNode[] | — |
menuList | — | (AsamCascaderPanelExpose)["menuList"] | — |
menus | — | (AsamCascaderPanelExpose)["menus"] | — |
checkedNodes | — | (AsamCascaderPanelExpose)["checkedNodes"] | — |
handleKeyDown | — | (e: KeyboardEvent) => void | — |
handleCheckChange | — | (node: AsamCascaderNode, checked: boolean, emitClose?: boolean) => void | — |
getFlattedNodes | — | (leafOnly: boolean) => AsamCascaderNode[] | — |
clearCheckedNodes | 清空选中的节点 | () => void | — |
calculateCheckedValue | — | () => void | — |
scrollToExpandingNode | — | () => void | — |
loadLazyRootNodes | — | () => void | — |
用法与契约补充说明 ​
原生协议完整 API ​
面板直接使用原生 options、props、modelValue;不提供标准化 value/object 转换,也不提供 Select 输入壳。默认 emitPath=true,multiple/checkStrictly/lazy 的语义与 Cascader native 一致。virtualScroll=true 时 height 限定窗口高度,itemSize 必须与实际行高一致;筛选、折叠标签与输入宽度由带输入壳的 Cascader 承接。
关联组件
参数与事件补充说明
完整透传 2.14.7 的基础参数,并在适用时使用 ASAM 尺寸密度。
参数与事件说明
height
必填:否;声明来源:上游声明。
默认值与来源
204(已安装运行时;已安装组件)固定上游文档默认:204(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
固定上游源码默认表达式:CASCADER_PANEL_HEIGHT(2.14.7;源码事实,未作为 ASAM 运行实测)
border
必填:否;声明来源:上游声明。
border 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)
props
必填:否;声明来源:上游声明。
props 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
props.expandTrigger:PublicMember<NonNullable<AsamCascaderNativeConfig | undefined>, "expandTrigger">— 上游声明次级菜单的展开方式
固定上游文档默认:
click(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
"hover"/"click"props.multiple:boolean | undefined— 上游声明是否多选
固定上游文档默认:
false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.checkStrictly:boolean | undefined— 上游声明是否严格的遵守父子节点不互相关联
固定上游文档默认:
false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.emitPath:boolean | undefined— 上游声明在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值
固定上游文档默认:
true(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.lazy:boolean | undefined— 上游声明是否动态加载子节点,需与 lazyLoad 方法结合使用
固定上游文档默认:
false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.lazyLoad:PublicMember<NonNullable<AsamCascaderNativeConfig | undefined>, "lazyLoad">— 上游声明加载动态数据的方法,仅在 lazy 为 true 时有效 reject 参数在 2.11.5 版本及以上支持。
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(node: AsamCascaderNode, resolve: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamCascaderNativeConfig | undefined>, "lazyLoad">>, (...args: never[]) => unknown>>[1], reject: () => void): voidprops.value:string | undefined— 上游声明指定选项的值为选项对象的某个属性值
固定上游文档默认:
value(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)props.label:string | undefined— 上游声明指定节点标签为节点对象的某个属性值
固定上游文档默认:
label(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)props.children:string | undefined— 上游声明指定选项的子选项为选项对象的某个属性值
固定上游文档默认:
children(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)props.disabled:PublicMember<NonNullable<AsamCascaderNativeConfig | undefined>, "disabled">— 上游声明指定选项的禁用为选项对象的某个属性值
固定上游文档默认:
disabled(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamCascaderOption, node: AsamCascaderNode): booleanprops.leaf:PublicMember<NonNullable<AsamCascaderNativeConfig | undefined>, "leaf">— 上游声明指定选项的叶子节点的标志位为选项对象的某个属性值
固定上游文档默认:
leaf(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamCascaderOption, node: AsamCascaderNode): booleanprops.hoverThreshold:number | undefined— 上游声明hover 时展开菜单的灵敏度阈值
固定上游文档默认:
500(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)props.checkOnClickNode:boolean | undefined— 上游声明点击节点时是否选中或取消选中该节点
固定上游文档默认:
false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.checkOnClickLeaf:boolean | undefined— 上游声明点击叶节点(最后一个子节点)时是否检查或取消节点
固定上游文档默认:
true(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/trueprops.showPrefix:boolean | undefined— 上游声明是否显示单选框或复选框的前缀(图标)
固定上游文档默认:
true(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/true
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
固定上游源码工厂(未执行):() => ({}) as CascaderProps(2.14.7;源码事实,未作为 ASAM 运行实测)
itemSize
必填:否;声明来源:上游声明。
默认值与来源
34(已安装运行时;已安装组件)固定上游文档默认:34(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
固定上游源码默认表达式:CASCADER_PANEL_ITEM_SIZE(2.14.7;源码事实,未作为 ASAM 运行实测)
modelValue
必填:否;声明来源:上游声明。
默认值与来源
未知 / 未声明固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
options
必填:否;声明来源:上游声明。
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
固定上游源码工厂(未执行):() => [] as CascaderOption[](2.14.7;源码事实,未作为 ASAM 运行实测)
renderLabel
必填:否;声明来源:上游声明。
renderLabel 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: Parameters<Extract<NonNullable<(AsamCascaderPanelProps)["renderLabel"]>, (...args: never[]) => unknown>>[0]): VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }> | VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>[]
默认值与来源
未知 / 未声明固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
virtualScroll
必填:否;声明来源:上游声明。
virtualScroll 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)固定上游文档默认:false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
AsamCascaderPanelProps 公开类型视图
import type { VNode } from 'vue';
import type { AsamCascaderPanelProps, AsamCascaderNativeConfig, AsamCascaderNode, AsamCascaderOption } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamCascaderPanelProps
type PublicContract = {
"height"?: number | undefined;
"border"?: (AsamCascaderPanelProps)["border"];
"props"?: AsamCascaderNativeConfig | undefined;
"itemSize"?: number | undefined;
"modelValue"?: (AsamCascaderPanelProps)["modelValue"];
"options"?: AsamCascaderOption[] | undefined;
"renderLabel"?: (AsamCascaderPanelProps)["renderLabel"];
"virtualScroll"?: boolean | undefined;
};
参数与事件说明
update:modelValue
必填:是;声明来源:上游声明。
change
必填:是;声明来源:上游声明。
close
必填:是;声明来源:上游声明。
expand-change
必填:是;声明来源:上游声明。
AsamCascaderPanelEmits 公开类型视图
import type { AsamCascaderPanelEmits } from '@asam-ui/ui';
// AsamCascaderPanelEmits
type PublicContract = {
"update:modelValue": (AsamCascaderPanelEmits)["update:modelValue"];
"change": (AsamCascaderPanelEmits)["change"];
"close": (AsamCascaderPanelEmits)["close"];
"expand-change": (AsamCascaderPanelEmits)["expand-change"];
};
参数与事件说明
default
必填:否;声明来源:ASAM 声明。
default 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(scope: { node: AsamCascaderNode; data: AsamCascaderOption; }): unknown
empty
必填:否;声明来源:ASAM 声明。
empty 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
AsamCascaderPanelSlots 公开类型视图
import type { AsamCascaderPanelSlots, AsamCascaderNode, AsamCascaderOption } from '@asam-ui/ui';
// AsamCascaderPanelSlots
type PublicContract = {
"default"?: ((scope: { node: AsamCascaderNode; data: AsamCascaderOption; }) => unknown) | undefined;
"empty"?: (() => unknown) | undefined;
};
参数与事件说明
getCheckedNodes
必填:是;声明来源:上游声明。
getCheckedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(leafOnly: boolean): AsamCascaderNode[]
menuList
必填:是;声明来源:上游声明。
menuList 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
menus
必填:是;声明来源:上游声明。
menus 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
checkedNodes
必填:是;声明来源:上游声明。
checkedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
handleKeyDown
必填:是;声明来源:上游声明。
handleKeyDown 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(e: KeyboardEvent): void
handleCheckChange
必填:是;声明来源:上游声明。
handleCheckChange 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(node: AsamCascaderNode, checked: boolean, emitClose?: boolean | undefined): void
getFlattedNodes
必填:是;声明来源:上游声明。
getFlattedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(leafOnly: boolean): AsamCascaderNode[]
clearCheckedNodes
必填:是;声明来源:上游声明。
clearCheckedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
calculateCheckedValue
必填:是;声明来源:上游声明。
calculateCheckedValue 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
scrollToExpandingNode
必填:是;声明来源:上游声明。
scrollToExpandingNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
loadLazyRootNodes
必填:是;声明来源:上游声明。
loadLazyRootNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
AsamCascaderPanelExpose 公开类型视图
import type { AsamCascaderPanelExpose, AsamCascaderNode, AsamCascaderOption, AsamCascaderPanelProps } from '@asam-ui/ui';
// AsamCascaderPanelExpose
type PublicContract = {
"getCheckedNodes": (leafOnly: boolean) => AsamCascaderNode[];
"menuList": (AsamCascaderPanelExpose)["menuList"];
"menus": (AsamCascaderPanelExpose)["menus"];
"checkedNodes": (AsamCascaderPanelExpose)["checkedNodes"];
"handleKeyDown": (e: KeyboardEvent) => void;
"handleCheckChange": (node: AsamCascaderNode, checked: boolean, emitClose?: boolean) => void;
"getFlattedNodes": (leafOnly: boolean) => AsamCascaderNode[];
"clearCheckedNodes": () => void;
"calculateCheckedValue": () => void;
"scrollToExpandingNode": () => void;
"loadLazyRootNodes": () => void;
};