E3.16.4select parent without children设计
用户需能只选中父节点本身而不含任何子项
别名: 只选父节点 · folder without files · 关闭向下联动
概念解释
当父节点在数据里是独立对象——文件夹、部门、类目本身也要能被授权、移动、打标签——用户必须能勾上这个节点、同时让所有子节点保持未选。这是对「勾父即勾子」默认规则的显式出口。只选父级(parent without children)不是取消联动时的意外空集,而是一个合法的目标态:集合里有父,没有子。没有这条出口,树只能表达「整支」或「若干叶子」,表达不了「只要这个容器」。
机制
向下联动把父级方框占用成整支的把手,父级自己的布尔没有独立入口。若产品其实有两个命题——容器在不在集合里、成员在不在集合里——一个方框装不下。人会去展开后把子节点全部点掉,期望父级还留着;默认冒泡却会在子全空时把父级也清掉,于是「只要容器」永远做不到。出口通常是改手势或改控件:修饰键勾父、父级上的菜单「仅此项」、或把容器勾选和成员勾选分成两列。无论哪一种,都要把两个命题拆开。
拆开之后,显示也要能表达「父已选、子全空」:这不是中间态(中间态是部分子已选),而是父自身位为真、子集合为空。若仍画成空框,用户以为没选上。
边界
父级只是分组标签、不是对象时,不要提供这条出口,否则会写出没有业务意义的 ID。批量操作的对象若只能是叶子(只能给文件加标签,不能给文件夹加),只选父级应被禁止并说明。已用向下联动勾了整支后,再「改为仅父级」是一次缩小集合,要可发现,不要藏在只有专家知道的修饰键里。辅助技术需要能听到「已选中文件夹,未包含其内项目」,而不是只听到勾选。
怎么落地
- 先问父节点是否为独立对象。是,就提供「仅此项」;否,保持勾父即整支。
- 让「仅此项」在菜单或次要点击里可发现,并在父级显示上区别于中间态与整支已选。
- 「仅此项」之后子节点必须全空且不再被误联动;用户再点子节点则进入部分选中。
- 验证:执行「只把这个文件夹加入集合」。导出 ID 应只有父、没有子。若子跟着来,或父级显示成空,出口就没建好。