根据 paths 展开文件夹

根据paths展开文件夹

// 根据paths展开文件夹
function expandFolderByPaths(paths, box) {
    // 遍历 paths 并展开对应的文件夹
    paths.forEach(async path => {
        // 将路径按 / 分割,获取每个层级的 node-id
        const parts = path.split('/');
        const folderIds = parts.slice(1, -1); // 最后一个是文件,不需要展开

        // 逐层查找并展开文件夹
        for(const nodeId of folderIds){
            // 查找对应的 DOM 节点
            const selector = `[data-node-id="${nodeId}"]`;
            let listItem = (box || document).querySelector(selector);
            if(!listItem) return;

            // 找到展开按钮
            const toggle = listItem.querySelector('.b3-list-item__toggle');

            // 如果元素有子元素且未展开,则点击展开
            if (toggle && !toggle.classList.contains('fn__hidden')) {
                // 模拟点击展开
                const arrow = toggle.querySelector('.b3-list-item__arrow');
                if (arrow && !arrow.classList.contains('b3-list-item__arrow--open')) {
                    toggle.click();
                    //等待列表展开
                    try {
                        await whenElementExist(()=>listItem?.nextElementSibling && listItem?.nextElementSibling?.matches('ul'), box);
                    } catch(e) {
                        return;
                    }
                }
            }
        }
    });
}
image.png

留下你的脚步
推荐阅读