Skip to content
This repository was archived by the owner on Oct 8, 2018. It is now read-only.

Commit 312eefa

Browse files
author
Travis Mathis
committed
Merge branch 'master' of github.com:GrillWork/react-file-reader
2 parents cf424a6 + e174df6 commit 312eefa

File tree

4 files changed

+63
-4
lines changed

4 files changed

+63
-4
lines changed

ReactFileReader.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export default class ReactFileReader extends React.Component {
6767
<div className='react-file-reader'>
6868
<input type='file'
6969
onChange={this.handleFiles}
70-
accept={this.props.fileTypes}
70+
accept={Array.isArray(this.props.fileTypes) ? this.props.fileTypes.join(',') : this.props.fileTypes}
7171
className='react-file-reader-input'
7272
id={this.state.elementId}
7373
multiple={this.props.multipleFiles}
@@ -91,7 +91,10 @@ ReactFileReader.defaultProps = {
9191
ReactFileReader.propTypes = {
9292
multipleFiles: PropTypes.bool,
9393
handleFiles: PropTypes.func.isRequired,
94-
fileTypes: PropTypes.string,
94+
fileTypes: PropTypes.oneOfType([
95+
PropTypes.string,
96+
PropTypes.array,
97+
]),
9598
base64: PropTypes.bool,
9699
children: PropTypes.element.isRequired
97100
};

__tests__/ReactFileReader.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,16 @@ test('accepted file type should be csv', () => {
5151
expect(component.props().base64).toEqual(false);
5252
expect(component.props().fileTypes).toEqual('.csv');
5353
})
54+
55+
test('accepted file type should be csv or image/*', () => {
56+
const component = mount(
57+
<ReactFileReader fileTypes={['.csv', 'image/*']} elementId='test-render' handleFiles={() => ''}>
58+
<p>Upload</p>
59+
</ReactFileReader>
60+
);
61+
62+
expect(component).toMatchSnapshot();
63+
expect(component.props().multipleFiles).toEqual(false);
64+
expect(component.props().base64).toEqual(false);
65+
expect(component.props().fileTypes).toEqual([".csv", "image/*"]);
66+
})

__tests__/__snapshots__/ReactFileReader.test.js.snap

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,49 @@ exports[`accepted file type should be csv 1`] = `
3838
</ReactFileReader>
3939
`;
4040

41+
exports[`accepted file type should be csv or image/* 1`] = `
42+
<ReactFileReader
43+
base64={false}
44+
elementId="test-render"
45+
fileTypes={
46+
Array [
47+
".csv",
48+
"image/*",
49+
]
50+
}
51+
handleFiles={[Function]}
52+
multipleFiles={false}
53+
>
54+
<div
55+
className="react-file-reader"
56+
>
57+
<input
58+
accept=".csv,image/*"
59+
className="react-file-reader-input"
60+
id="test-render"
61+
multiple={false}
62+
onChange={[Function]}
63+
style={
64+
Object {
65+
"opacity": "0",
66+
"position": "fixed",
67+
"width": "0px",
68+
}
69+
}
70+
type="file"
71+
/>
72+
<div
73+
className="react-file-reader-button"
74+
onClick={[Function]}
75+
>
76+
<p>
77+
Upload
78+
</p>
79+
</div>
80+
</div>
81+
</ReactFileReader>
82+
`;
83+
4184
exports[`accepts multiple files 1`] = `
4285
<ReactFileReader
4386
base64={false}

index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ var ReactFileReader = function (_React$Component) {
109109
{ className: 'react-file-reader' },
110110
_react2.default.createElement('input', { type: 'file',
111111
onChange: this.handleFiles,
112-
accept: this.props.fileTypes,
112+
accept: Array.isArray(this.props.fileTypes) ? this.props.fileTypes.join(',') : this.props.fileTypes,
113113
className: 'react-file-reader-input',
114114
id: this.state.elementId,
115115
multiple: this.props.multipleFiles,
@@ -139,7 +139,7 @@ ReactFileReader.defaultProps = {
139139
ReactFileReader.propTypes = {
140140
multipleFiles: _propTypes2.default.bool,
141141
handleFiles: _propTypes2.default.func.isRequired,
142-
fileTypes: _propTypes2.default.string,
142+
fileTypes: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array]),
143143
base64: _propTypes2.default.bool,
144144
children: _propTypes2.default.element.isRequired
145145
};

0 commit comments

Comments
 (0)