@@ -35,11 +35,23 @@ export const FileInputField = React.forwardRef((props, ref) => {
3535 const inputGroupContext = useContext ( InputGroupContext ) ;
3636 const translations = useContext ( TranslationsContext ) ;
3737
38- const [ selectedFileName , setSelectedFileName ] = useState ( '' ) ;
38+ const [ selectedFileNames , setSelectedFileNames ] = useState ( [ ] ) ;
3939
4040 const handleFileChange = ( event ) => {
41- const file = event . target . files [ 0 ] ;
42- setSelectedFileName ( file . name ) ;
41+ const { files } = event . target ;
42+
43+ if ( files . length === 0 ) {
44+ setSelectedFileNames ( [ ] ) ;
45+ return ;
46+ }
47+
48+ const fileNames = [ ] ;
49+
50+ [ ...files ] . forEach ( ( file ) => {
51+ fileNames . push ( file . name ) ;
52+ } ) ;
53+
54+ setSelectedFileNames ( fileNames ) ;
4355 } ;
4456
4557 return (
@@ -85,16 +97,23 @@ export const FileInputField = React.forwardRef((props, ref) => {
8597 type = "file"
8698 />
8799 < div className = { styles . dropZone } >
88- { selectedFileName && (
89- < Text lines = { 1 } > { selectedFileName } </ Text >
90- ) }
91- { ! selectedFileName && (
92- < >
93- { translations . FileInputField . drop }
94- { ' ' }
95- < span className = { styles . dropZoneLink } > { translations . FileInputField . browse } </ span >
96- </ >
97- ) }
100+ < Text lines = { 1 } >
101+ { ! selectedFileNames . length && (
102+ < >
103+ { translations . FileInputField . drop }
104+ { ' ' }
105+ < span className = { styles . dropZoneLink } > { translations . FileInputField . browse } </ span >
106+ </ >
107+ ) }
108+ { selectedFileNames . length === 1 && selectedFileNames [ 0 ] }
109+ { selectedFileNames . length > 1 && (
110+ < >
111+ { selectedFileNames . length }
112+ { ' ' }
113+ { translations . FileInputField . filesSelected }
114+ </ >
115+ ) }
116+ </ Text >
98117 </ div >
99118 </ div >
100119 { helpText && (
0 commit comments