Choose local files through the native picker. FileInput owns selection and guidance; the host keeps accepted and rejected entries and starts any upload.
Choose PDF or images to see per-file acceptance. Choosing again retains existing entries; the chooser resets for reselection.
The disabled picker keeps its guidance and cannot open a chooser.
Visible feedback explains the rejected selection. The invalid picker stays available for correction.
| Verdict | Rule |
|---|---|
| Do | Associate a visible label and acceptance guidance with the native file input. State accepted types, maximum bytes and file count before selection. |
| Do | Validate picker and dropped files with the same host policy; accept is a chooser hint, not security validation. Validate again on the server. |
| Do | Keep accepted and rejected entries distinct; explain each rejection without discarding valid siblings. Reset the chooser after handling selection so the same file can be selected again. |
| Do | Preserve native keyboard activation and chooser cancellation; cancelling the chooser changes no entries. |
| Do | Disable the native picker and suppress selection callbacks while unavailable; required validates accepted entries in the host form controller. |
| Don’t | Do not start a network upload from L1. Selection callbacks hand Files to the L2/host controller. |