| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // 路径导航模块(复制自 client/js/disk/path.js)
- class ResourceManagerPathNavigator {
- constructor(options = {}) {
- this.container = options.container;
- this.rootName = options.rootName || '全部文件';
- this.onNavigate = options.onNavigate || (() => {});
-
- this.currentPath = '';
- this.pathParts = [];
-
- this.init();
- }
- init() {
- this.render();
- this.bindEvents();
- }
- bindEvents() {
- this.container.addEventListener('click', (e) => {
- const item = e.target.closest('.breadcrumb-item');
- if (!item) return;
-
- const path = item.dataset.path || '';
- this.navigateTo(path);
- });
- }
- navigateTo(path) {
- this.currentPath = path;
- this.pathParts = path ? path.split('/').filter(p => p) : [];
- this.render();
- this.onNavigate(path);
- }
- getPath() {
- return this.currentPath;
- }
- render() {
- let html = `<span class="breadcrumb-item ${this.pathParts.length === 0 ? 'active' : ''}" data-path="">${this.rootName}</span>`;
-
- let currentPath = '';
- this.pathParts.forEach((part, index) => {
- currentPath += (index === 0 ? '' : '/') + part;
- const isLast = index === this.pathParts.length - 1;
- html += `<span class="breadcrumb-item ${isLast ? 'active' : ''}" data-path="${currentPath}">${part}</span>`;
- });
-
- this.container.innerHTML = html;
- }
- }
|