diff options
Diffstat (limited to 'webapp/components/admin_console/text_setting.jsx')
-rw-r--r-- | webapp/components/admin_console/text_setting.jsx | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/webapp/components/admin_console/text_setting.jsx b/webapp/components/admin_console/text_setting.jsx new file mode 100644 index 000000000..bb37f8e29 --- /dev/null +++ b/webapp/components/admin_console/text_setting.jsx @@ -0,0 +1,83 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import Setting from './setting.jsx'; + +export default class TextSetting extends React.Component { + static get propTypes() { + return { + id: React.PropTypes.string.isRequired, + label: React.PropTypes.node.isRequired, + placeholder: React.PropTypes.string, + helpText: React.PropTypes.node, + value: React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.number + ]).isRequired, + onChange: React.PropTypes.func.isRequired, + disabled: React.PropTypes.bool, + type: React.PropTypes.oneOf([ + 'input', + 'textarea' + ]) + }; + } + + static get defaultProps() { + return { + type: 'input' + }; + } + + constructor(props) { + super(props); + + this.handleChange = this.handleChange.bind(this); + } + + handleChange(e) { + this.props.onChange(this.props.id, e.target.value); + } + + render() { + let input = null; + if (this.props.type === 'input') { + input = ( + <input + id={this.props.id} + className='form-control' + type='text' + placeholder={this.props.placeholder} + value={this.props.value} + onChange={this.handleChange} + disabled={this.props.disabled} + /> + ); + } else if (this.props.type === 'textarea') { + input = ( + <textarea + id={this.props.id} + className='form-control' + rows='5' + maxLength='1024' + placeholder={this.props.placeholder} + value={this.props.value} + onChange={this.handleChange} + disabled={this.props.disabled} + /> + ); + } + + return ( + <Setting + label={this.props.label} + helpText={this.props.helpText} + inputId={this.props.id} + > + {input} + </Setting> + ); + } +} |