SelectFileInputWidget 文件选择
文件选择输入框,提供拖放区、仅按钮等形态。
基本用法
文件集是数组,走 value / defaultValue / onChange 三条通道;非多选时只保留首个文件。信息框中的清除指示器是唯一的清除入口(点击或按 Enter 清空)。
未选择文件
多选与类型过滤
multiple 开启多选;accept 用 MIME 或 image/* 形态限定类型——同时写入 accept 属性、过滤系统选择器结果与拖入的文件(系统选择器已限类型,被过滤的多是拖放路径;文件没有 type 信息时放行)。
拖放区形态
showDropTarget 把整个组件变成拖放区:空态时整块可点击开选择器,拖入文件时按能否接收给出反馈,落放即选中。单选且选中图片文件时展示缩略图——thumbnailSizeLimit(MB,缺省 20)以内才加载,超限或解码失败时回退为附件图标。
拖放能力依赖浏览器的 DataTransfer 构造器(Safari 14.1+),不支持时拖放自动关闭、选择按钮照常可用;droppable={false} 可显式关闭拖放。
仅按钮形态
buttonOnly 只渲染选择按钮,不含信息框;需要自己展示文件名时用它。
未选择文件
受控与程序化设置
传 value 即进入受控模式,文件集完全由调用方驱动——下方演示外置「清空」按钮把文件集置回 []。
与原版的差异
原版构造期传入的 value 会被静默丢弃(构造时序缺陷),只能构造后再命令式 setValue。本工程按受控惯例让 value / defaultValue 直接生效,并把文件集写回内部 <input type="file">,随表单原生提交不受影响。
焦 点与键盘
Tab停靠点是选择按钮,信息框不进 Tab 序;清除指示器键盘可达(聚焦后按 Enter 清空)。- 信息框是只读的
type="search"输入框,手改文件名不会改变文件集——清空一律走清除指示器。 required、name落在内部文件<input>上,随 FormLayout 原生提交。
API
title 落在文件 <input> 上,tabIndex 落在选择按钮上;组件 ref 指向根元素(buttonOnly 形态下根元素即按钮)。
另见
- 值通道约定:受控与非受控
- 内建文案的语言包替换:全局配置
- 表单提交容器:FormLayout