Files
aurora-admin/site/end-content/cascader.html.json

93 lines
4.3 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": "cascader",
"end": "html",
"curated": true,
"summary": "原生 H5 级联选择器:data-cascader 挂载,data-lv 与 data-val 定位某列某节点,路径以 JSON 字符串落库。",
"usage": [
"同一个页面可以放多个实例,用 data-multiple=true / false 在标记上决定多选还是单选,脚本读 root.dataset.multiple 分派。",
"列里的每个节点由脚本生成带 data-lv 与 data-val 的 .kole-cascader-opt,点击时把两个值合成一条路径去查节点。",
"搜索结果行另用 data-path 存整条路径的 JSON 字符串,点击时 JSON.parse 还原,所以路径元素里不能有非 JSON 值。",
"搜索容器是脚本动态插入的 .kole-cascader-search,展开时 display 切 block 并主动 focus 输入框,收起时置 none。",
"选中态用 is-active 表示当前列高亮、is-checked 表示叶子已勾选,两个类名可同时出现在同一节点上。",
"点击外部收起在 document 上监听,用 root.contains 判断,同时清空搜索词并把路径结果与搜索框一起复位。"
],
"bestPractices": [
"节点值只从 dataset 取,而 dataset 全部是字符串,做成数字 id 的选项要在脚本里自行转回 Number 再比较。",
"trigger 的 aria-expanded 静态写死 false,脚本只改样式类,键盘与读屏用户拿不到真实展开态。",
"搜索框由脚本 append 到 root,重复初始化同一容器会累积多个 .kole-cascader-search 节点。"
],
"apiCarrier": {
"kind": "attrs",
"note": "HTML 端无 props,载体为:data-cascader 与 data-multiple 描述实例、data-lv 与 data-val 描述列内节点、data-path 描述搜索结果、kole-* 与 is-* 类名描述结构与状态。",
"table": [
{
"name": "data-cascader",
"type": "存在即挂载",
"desc": "初始化钩子,脚本遍历页面所有该属性的容器建级联实例"
},
{
"name": "data-multiple",
"type": "true / false 字符串",
"desc": "决定单选或多次模式,脚本比较 dataset.multiple 后分派渲染"
},
{
"name": "data-lv",
"type": "层级序号",
"desc": "落在 .kole-cascader-opt 上,标明该节点属于第几列"
},
{
"name": "data-val",
"type": "节点 value 字符串",
"desc": "落在 .kole-cascader-opt 上,与 data-lv 一起定位被点击的节点"
},
{
"name": "data-path",
"type": "路径的 JSON 字符串",
"desc": "落在 .kole-cascader-result 上,点击时解析还原完整路径"
},
{
"name": "kole-cascader-col",
"type": "类名",
"desc": "级联的一列,列内承载该层全部节点"
},
{
"name": "is-active",
"type": "状态类",
"desc": "当前被展开到的那一级节点高亮"
},
{
"name": "is-checked",
"type": "状态类",
"desc": "多选模式下已选中的叶子节点"
}
]
},
"a11y": [
"标记容器是空 div,语义来自脚本写入 trigger 的 role=button 与 aria-haspopup=listbox。",
"trigger 虽有 tabindex=0,但未绑定键盘事件,回车不能展开,方向键无法在列间移动。",
"列内节点是 div 加 click,缺 role=treeitem 与 aria-expanded,读屏器无法感知层级与展开关系。",
"搜索结果列表只是 div 堆叠,没有 listbox / option 语义,匹配条数也不播报。"
],
"resources": [
{
"file": "frameworks/Cascader.html",
"kind": "HTML 实现",
"desc": "Cascader.html —— 本端实现全文,含结构与交互逻辑"
},
{
"file": "frameworks/Cascader.css",
"kind": "样式文件",
"desc": "frameworks/Cascader.css —— 组件全部 kole-* 类名与 is-* 状态类的样式定义"
}
],
"exampleIds": [
"cascader-ex-1",
"cascader-ex-2"
],
"notes": [
"两个实例的挂载与 data-multiple 见 frameworks/Cascader.html:24 与第 29 行,批量初始化见第 193 行。",
"data-lv 与 data-val 生成见 frameworks/Cascader.html:136,data-path 生成见第 105 行。",
"搜索框插入与 focus 见 frameworks/Cascader.html:175-185,点击外部收起见第 187-189 行。"
]
}