@composy/file-manager-vue
@composy/file-manager-vue
文件管理器 Vue 3 适配层。
安装
pnpm add @composy/file-manager-vue
功能特性
- Vue 3 组件(
<LDesignFileManager>) - 组合式函数
useFileManager() - 完整的
v-model双向绑定 provider异步目录、游标分页与加载状态- 快照恢复和上传任务取消
- Vue 插件注册
- Injection key 注入
快速开始
<script setup lang="ts">
import type { BreadcrumbItem, FileItem, SortConfig, ViewMode } from '@composy/file-manager-vue'
import { LDesignFileManager } from '@composy/file-manager-vue'
import { ref } from 'vue'
const files = ref<FileItem[]>([])
const selectedIds = ref<string[]>([])
const viewMode = ref<ViewMode>('grid')
const sort = ref<SortConfig>({ field: 'name', order: 'asc' })
function onSelection(selected: FileItem[]) {
console.info('选中:', selected)
}
function onFileClick(file: FileItem) {
console.info('点击:', file.name)
}
function onFolderEnter(folder: FileItem, breadcrumb: BreadcrumbItem[]) {
console.info('进入:', folder.name, breadcrumb)
}
</script>
<template>
<LDesignFileManager
v-model:files="files"
v-model:selection="selectedIds"
v-model:view-mode="viewMode"
v-model:sort="sort"
theme="light"
selection-mode="multiple"
@selection-change="onSelection"
@file-click="onFileClick"
@folder-enter="onFolderEnter"
/>
</template>
Props
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
files |
FileItem[] |
[] |
文件列表 (v-model) |
provider |
FileManagerProvider |
- | 异步目录数据源,通过 expose/composable 加载 |
modelValue |
string[] |
[] |
选中 ID 列表 (v-model) |
viewMode |
ViewMode |
'grid' |
视图模式 (v-model) |
sort |
SortConfig |
- | 排序配置 (v-model) |
theme |
ThemeMode |
'light' |
主题模式 |
selectionMode |
SelectionMode |
'multiple' |
选择模式 |
showToolbar |
boolean |
true |
显示工具栏 |
showBreadcrumb |
boolean |
true |
显示面包屑 |
showSearch |
boolean |
true |
显示搜索 |
enableContextMenu |
boolean |
true |
右键菜单 |
enableDragUpload |
boolean |
true |
拖拽上传 |
enablePreview |
boolean |
true |
文件预览 |
upload |
UploadConfig |
- | 文件类型、大小、并发数与自定义上传 |
classPrefix |
string |
'ldesign-file-manager' |
组件 class 和主题变量前缀;创建后不响应变更 |
emptyText |
string |
'暂无文件' |
空状态文案 |
className |
string |
'' |
自定义 class |
style |
CSSProperties |
{} |
自定义 style |
Events
| 事件 | 参数 | 说明 |
|---|---|---|
selection-change |
FileItem[] |
选择变化 |
file-click |
FileItem |
文件点击 |
file-dblclick |
FileItem |
文件双击 |
folder-enter |
FileItem, BreadcrumbItem[] |
进入文件夹 |
view-mode-change |
ViewMode |
视图切换 |
sort-change |
SortConfig |
排序变化 |
search |
string |
搜索 |
delete |
FileItem[] |
删除 |
download |
FileItem[] |
下载 |
rename |
FileItem, string |
重命名 |
upload |
File[] |
上传 |
upload-progress |
UploadFileItem |
上传进度 |
Expose 方法
| 方法 | 说明 |
|---|---|
setFiles(files) |
设置文件 |
getSelection() |
获取选中 |
clearSelection() |
清除选中 |
selectAll() |
全选 |
setViewMode(mode) |
设置视图 |
setSort(sort) |
设置排序 |
enterFolder(folder) |
进入文件夹 |
search(keyword) |
搜索 |
preview(file) |
预览 |
setTheme(theme) |
设置主题 |
refresh() |
刷新 |
reload() |
重新读取 provider 当前目录 |
loadMore() |
读取 provider 下一页 |
getSnapshot() |
获取交互快照 |
restoreSnapshot(s) |
恢复交互快照 |
cancelUploads(ids?) |
取消指定或全部上传 |
插件注册
import { FileManagerPlugin } from '@composy/file-manager-vue'
import { createApp } from 'vue'
const app = createApp(App)
app.use(FileManagerPlugin)
app.mount('#app')
插件只负责全局注册组件。若需要通过 LDesignFileManagerKey 注入一个共享 Core 实例,可传入
instance;通常每个 <FileManager> 组件会管理自己的实例。
Composable
import { useFileManager } from '@composy/file-manager-vue'
const { setFiles } = useFileManager()
setFiles([])
配置 provider 时,composable 还会返回 reload、loadMore、loading、error、
getSnapshot、restoreSnapshot 和 cancelUploads。reload/loadMore
返回 Promise,应在业务层处理网络错误;组件卸载时 Core 会自动取消未完成请求和上传。
构建产物
| 目录 | 格式 |
|---|---|
dist/ |
UMD |
es/ |
ESM (preserveModules) |
esm/ |
ESM |
lib/ |
CJS |
依赖
@composy/file-manager-core— 核心引擎vue^3.5.32 (peerDependency)
验证
pnpm run type-check
pnpm run lint:check
pnpm run build
在 packages/vue 目录执行这些命令。构建基于 packages/core;Builder、ESLint 与 ESM/CJS
TypeScript 配置位于 .ldesign/。从工作区根目录运行 pnpm run build 可按依赖顺序构建并验证全部包。
License
MIT
Related Packages
@brftech/filex-core
filex core - Vue 3 source of truth for the filex file manager (FileExplorer + Co...
26,400
66
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.0.2 | 3.5.32 | MIT | |
| 0.0.1 | ^3.5.32 | MIT |