@composy/file-manager-vue

Vue 3 adapter for @composy/file-manager-core - components, composables, plugins
Install
npm install @composy/file-manager-vue
Latest Version:0.0.2
Vue:3
License:MIT
Last Updated:Oct 12, 2026
Links: npm
Maintainer: swimly

@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

@ldesign/desktop

基于vue2和@vue/composition-api桌面端组件库

1,858
@ldesign/site-component

LDesign 文档公共组件,基于hybrids的webcomponent组件,可用于vue,react等前端框架!

1,705
@brftech/filex-core

filex core - Vue 3 source of truth for the filex file manager (FileExplorer + Co...

26,400 66
@composy/emoji-picker-vue

Vue 3 components for @composy/emoji-picker-core

0
@composy/queue-vue

Vue 3 composables, runtime plugin, and engine plugin for @composy/queue-core

0

Version History

Version Released Vue License
0.0.2 3.5.32 MIT
0.0.1 ^3.5.32 MIT