Files
aurora-admin/site/end-content/layoutswitcher.vue3.json

64 lines
3.0 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"slug": "layoutswitcher",
"end": "vue3",
"curated": true,
"summary": "Vue 3 布局切换器:带微缩示意图的侧边/顶部/混合三选一,选中态即时回写。",
"usage": [
"用 v-model 绑定布局字符串,点击某项直接 emit(\"update:modelValue\", o.value),没有额外的确认步骤(LayoutSwitcher.vue3.vue:8)。",
"options 传 [{ value, label }],默认内置 side / top / mixed 三项,value 同时参与微缩示意图的分支判断(LayoutSwitcher.vue3.vue:11)。",
"缩略图按 value 决定画哪几条边:side 不画顶部条、top 不画侧边条、mixed 两者都画(LayoutSwitcher.vue3.vue:11)。",
"选中项以 is-active 类表达,未选中项无该状态类,样式差异完全由类决定(LayoutSwitcher.vue3.vue:7)。",
"本端只有 update:modelValue 一个事件,没有 change;需要埋点请监听 v-model 变化(LayoutSwitcher.vue3.vue:34)。"
],
"bestPractices": [
"示意图是纯 CSS 的 div 组合(s-top / s-side / s-main),与真实布局无关,接入后不要把它当成布局预览渲染(LayoutSwitcher.vue3.vue:12)。",
"value 字符串同时也是示意图分支条件,传入未登记的自定义 value 时三条边都不会画,需要同步调整模板(LayoutSwitcher.vue3.vue:11)。",
"modelValue 默认值是 side,必须与实际布局取值一致,否则首屏会出现选中态与真实布局不符(LayoutSwitcher.vue3.vue:24)。"
],
"apiCarrier": {
"kind": "props",
"note": "本端是单一 modelValue 双向组件:布局取值同时是数据与示意图分支条件,两者耦合在同一 prop 上。",
"table": [
{
"name": "modelValue",
"type": "String",
"desc": "当前布局取值,默认 side;v-model 绑定"
},
{
"name": "options",
"type": "Array",
"desc": "选项 [{ value, label }],默认 side/top/mixed 三项"
},
{
"name": "update:modelValue",
"type": "emit(payload: String)",
"desc": "点击任一布局项时回写该 value"
}
]
},
"a11y": [
"选项是 div + @click,没有 role=\"radio\"、aria-checked 与 tabindex,键盘无法切换布局(LayoutSwitcher.vue3.vue:3)。",
"示意图内的 div 无文本,label 文本在兄弟节点上,读屏点击区域与可读名称没有关联(LayoutSwitcher.vue3.vue:17)。"
],
"resources": [
{
"file": "frameworks/LayoutSwitcher.vue3.vue",
"kind": "Vue 3 组件",
"desc": "layoutswitcher 的 Vue 3(<script setup>)实现源码"
},
{
"file": "frameworks/LayoutSwitcher.css",
"kind": "样式",
"desc": "该组件在 PC 端共用的样式表"
}
],
"exampleIds": [
"layoutswitcher-ex-1"
],
"notes": [
"frameworks/LayoutSwitcher.vue3.vue:24 — defineProps 只有 modelValue 与 options",
"frameworks/LayoutSwitcher.vue3.vue:8 — 点击即回写,无确认步骤",
"frameworks/LayoutSwitcher.vue3.vue:34 — 仅 update:modelValue,无 change"
]
}