應用殼層與面板

檔案管理網格

檔案/資料夾網格,框選多選、右鍵選單與檢視切換。

模擬桌面檔案管理器的網格面板:檔案卡依副檔名上色,支援單擊選取、cmd/ctrl 多選、在空白處拖曳框選矩形、右鍵開啟自訂操作選單,並可在網格與列表檢視間切換(項目以 layout 動畫平滑重排)。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add file-manager-grid

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

編輯中的呼叫預設屬性
<FileManagerGrid/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add https://webberui.com/r/file-manager-grid.json

或在 components.json 設定 registries 後,改用 @webberui/file-manager-grid 安裝。

使用

import { FileManagerGrid, type FileItem } from "@/components/ui/file-manager-grid";

const files: FileItem[] = [
  { id: "1", name: "設計稿", kind: "folder" },
  { id: "2", name: "提案簡報.pdf", kind: "pdf", size: "4.2 MB", modified: "今天 11:03" },
];

<FileManagerGrid
  files={files}
  onOpen={(file) => console.log("開啟", file.name)}
  onSelectionChange={(ids) => console.log("已選取", ids)}
/>

Props

Prop型別預設值說明
filesFileItem[]—要顯示的檔案與資料夾清單
defaultView"grid" | "list""grid"初始檢視模式
onSelectionChange(ids: string[]) => void—選取集合變更時回呼
onOpen(file: FileItem) => void—雙擊項目或右鍵「開啟」時回呼
onDelete(file: FileItem) => void—右鍵「移至垃圾桶」時回呼
classNamestring—透傳到最外層容器

FileItem 欄位:

欄位型別預設值說明
idstring—唯一識別碼,作為選取狀態的 key
namestring—檔案或資料夾名稱
kind"folder" | "doc" | "pdf" | "img" | "sheet" | "video" | "zip"—檔案種類,決定圖示色系與副檔名籤
sizestring—檔案大小的顯示字串(例如 "2.4 MB")
modifiedstring—最後修改時間,列表檢視右側顯示

可及性

  • 檔案區使用 role="listbox" 並標記 aria-multiselectable,每個項目為 role="option" 且即時回報 aria-selected
  • 項目可鍵盤聚焦(tabIndex={0} + focus ring),Enter / Space 切換選取,Escape 清除選取並關閉右鍵選單
  • 工具列的項目與選取數量以 aria-live="polite" 播報,檢視切換按鈕帶 aria-pressed 與中文 aria-label
  • 使用者系統開啟「減少動態效果」時,檢視切換重排、選取徽章與選單動畫皆改為即時完成