From 12896bd23eeba79884245c1c29fdc568cf21a7fa Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 14 Mar 2016 08:50:46 -0400 Subject: Converting to Webpack. Stage 1. --- webapp/components/setting_upload.jsx | 127 +++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 webapp/components/setting_upload.jsx (limited to 'webapp/components/setting_upload.jsx') diff --git a/webapp/components/setting_upload.jsx b/webapp/components/setting_upload.jsx new file mode 100644 index 000000000..04e2de301 --- /dev/null +++ b/webapp/components/setting_upload.jsx @@ -0,0 +1,127 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import $ from 'jquery'; +import ReactDOM from 'react-dom'; +import {FormattedMessage} from 'react-intl'; + +import React from 'react'; + +export default class SettingsUpload extends React.Component { + constructor(props) { + super(props); + + this.doFileSelect = this.doFileSelect.bind(this); + this.doSubmit = this.doSubmit.bind(this); + + this.state = { + clientError: this.props.clientError, + serverError: this.props.serverError, + filename: '' + }; + } + + componentWillReceiveProps() { + this.setState({ + clientError: this.props.clientError, + serverError: this.props.serverError + }); + } + + doFileSelect(e) { + e.preventDefault(); + var filename = $(e.target).val(); + if (filename.substring(3, 11) === 'fakepath') { + filename = filename.substring(12); + } + this.setState({ + clientError: '', + serverError: '', + filename + }); + } + + doSubmit(e) { + e.preventDefault(); + var inputnode = ReactDOM.findDOMNode(this.refs.uploadinput); + if (inputnode.files && inputnode.files[0]) { + this.props.submit(inputnode.files[0]); + } else { + this.setState({clientError: true}); + } + } + + render() { + let clientError = null; + if (this.state.clientError) { + clientError = ( +
+ +
+ ); + } + let serverError = null; + if (this.state.serverError) { + serverError = ( +
{this.state.serverError}
+ ); + } + let fileNameText = null; + let submitButtonClass = 'btn btn-sm btn-primary disabled'; + if (this.state.filename) { + fileNameText = ( +
{this.state.filename}
+ ); + submitButtonClass = 'btn btn-sm btn-primary'; + } + + return ( + + ); + } +} + +SettingsUpload.propTypes = { + title: React.PropTypes.string.isRequired, + submit: React.PropTypes.func.isRequired, + fileTypesAccepted: React.PropTypes.string.isRequired, + clientError: React.PropTypes.string, + serverError: React.PropTypes.string, + helpText: React.PropTypes.object +}; \ No newline at end of file -- cgit v1.2.3-1-g7c22