2.9 KiB
2.9 KiB
@g3soft/ui
| @g3soft/ui |
|---|
| minor |
新增 G3Attachment 附件管理器(分类 / 列表 / 预览三栏)。
与业务解耦:组件不发任何请求,只消费 files + categories 两份数据,用户意图全部以事件抛出;需要组件代跑请求时传 uploadRequest / removeRequest。
- 布局走
G3Splitter:默认「分类 200 + 列表自适应」两栏;showPreview(默认false)打开后追加 360 的预览栏。showCategory/showPreview为假时对应面板不渲染;预览栏关掉时preview事件照常抛出,业务可自行开弹窗。 - 分类用
G3Tree,在传入的categories之上合成「全部」根节点(对外用categoryKey === ''表示),categoryChange会把原始分类对象一并带出。 - 上传三条入口:底栏选择、拖拽、
pasteUpload(opt-in,默认关,避免多实例抢document)。入队前按accept/maxSize/maxCount校验,被拒文件走invalid事件(info.message已按语言包生成)。 - 待上传队列在列表最前面渲染(带「待上传」标记);未传
uploadRequest时点上传即抛upload并清空队列(所有权移交业务),传了则托管请求、失败保留队列可重试。blob 预览地址由组件统一释放。 - 多选批量下载 / 删除;删除内建确认
Modal(confirmRemove可关,不使用命令式Modal.confirm,避免依赖全局挂载容器);下载默认按item.url内建触发(builtinDownload可关)。 - 分页:未传
total视为客户端分页(组件切片),传了则为服务端分页(files即当前页);page/pageSize非受控,不传时组件内部维护。 - 字段名中性(
id/name/size/ext/url/categoryId),业务字段走item.raw原样回传;文件族配色映射到--g3-color-danger/success/warning/primary,并留--g3-attachment-type-*供主题覆盖。 - 视觉与交互按当前设计语言落地:尺寸 / 间距 / 圆角 / 过渡全部走令牌;工具栏整行统一 12px 字 / 24px 控件、高度写死并用 1px 竖线分组,窄面板(容器查询)下文字收成图标,勾选前后高度恒定;操作默认藏在 hover /
:focus-within里(@media (hover: none)常显);空态就是虚线投放区并顺带写明accept/maxSize/maxCount限制;待上传队列非空时底栏整块染主色淡底(脏状态);上传与分页合成一块,不再出现两条并排分隔线;卡片封面用aspect-ratio+object-fit: cover,封面底边是 2px 上传进度条;面板之间的分割线常显且收成 1px。 - 语言包新增
attachment分组(zh-CN / en-US):自定义Locale对象的项目需要补上这一组,否则类型不完整。 - 附单测(
src/attachment/Attachment.test.ts组件契约 +file.test.ts纯函数)与文档 / 4 个示例,文档见docs/content/ui/data/attachment.md。