mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 17:10:28 +00:00
中文: 将范围设置统一为插件运行范围,并把文件夹选择区调整为对齐稳定的 Finder 式树形 UI。 English: Renames the scope settings to plugin run scope and refines the folder selector into a stable Finder-style tree UI.
2.2 KiB
2.2 KiB
Plugin Run Scope UI Decisions
1. 最终文案决策
范围卡最终统一为:
- 中文卡片标题:
插件运行范围 - 英文卡片标题:
Plugin run scope - 中文范围下拉名称:
插件运行范围 - 英文范围下拉名称:
Plugin run scope
范围卡顶部旧说明不再渲染。
2. 文件夹树行布局决策
每个树行固定为三列:
- 展开槽
- checkbox
- 文件夹名
布局固定为:
display: gridgrid-template-columns: 24px 24px minmax(0, 1fr)align-items: center- 固定最小高度
缩进只由 depth * 18px 控制,使用行容器的左边距实现。
3. 展开槽与文件夹名决策
展开槽规则固定为:
- 有子节点时用轻量按钮
- 无子节点时仍渲染占位元素
- 两种情况下都保留
folderToggledataset - 展开符号继续使用
▸ / ▾
文件夹名规则固定为:
- 单行显示
overflow: hiddentext-overflow: ellipsiswhite-space: nowrap
4. 已选祖先自动展开策略
补充展开已选祖先的时机固定为:
- 文件夹树首次成功加载后
- 作用范围切换到
include/exclude后 - 手动刷新文件夹树后
- 设置页关闭后再次进入时
不在以下场景强制重置:
- 用户手动点击展开/折叠后的普通重渲染
- 勾选/取消勾选文件夹后的普通重渲染
实现方式是一次性“待补充展开”标志位,而不是每次 render 都强行根据已选项重算展开状态。
5. refresh 行为决策
refreshFolderTree() 保持现有语义:
- 清空旧展开状态
- 重新加载树
- 加载完成后再次补充展开已选祖先
6. 保持不变的内容
本次明确保持不变:
all / include / exclude的业务含义- 设置字段名和枚举值
FolderScopeTree的选择压缩算法- 作用范围对同步逻辑的影响
- 设置页局部刷新机制
- 不新增 CSS 构建链路
7. 与计划的显式偏差
没有行为偏差。
仅有一个实现级说明:
- 当前仓库已经有安全的 built-plugin sync 脚本
- 因此最终同步继续复用
build:obsidian和现有脚本,而不是再引入新的同步实现