Skip to content

Commit cfe01f0

Browse files
committed
fixup! Introduce custom design of FileInputField (#244)
1 parent 601179f commit cfe01f0

File tree

3 files changed

+35
-13
lines changed

3 files changed

+35
-13
lines changed

src/components/FileInputField/FileInputField.jsx

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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 && (

src/components/FileInputField/FileInputField.module.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
@include box-field-elements.base();
3535

36+
display: flex;
37+
align-items: center;
3638
font-weight: settings.$drop-zone-font-weight;
3739
font-size: var(--rui-local-font-size);
3840
line-height: settings.$drop-zone-line-height;

src/translations/en.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export default {
55
FileInputField: {
66
browse: 'browse',
77
drop: 'Drop file or',
8+
filesSelected: 'files selected',
89
},
910
ModalCloseButton: {
1011
close: 'Close',

0 commit comments

Comments
 (0)