summaryrefslogtreecommitdiffstats
path: root/webapp/components/admin_console/save_button.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/admin_console/save_button.jsx')
-rw-r--r--webapp/components/admin_console/save_button.jsx61
1 files changed, 61 insertions, 0 deletions
diff --git a/webapp/components/admin_console/save_button.jsx b/webapp/components/admin_console/save_button.jsx
new file mode 100644
index 000000000..18bb6e96d
--- /dev/null
+++ b/webapp/components/admin_console/save_button.jsx
@@ -0,0 +1,61 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import React from 'react';
+
+import {FormattedMessage} from 'react-intl';
+
+export default class SaveButton extends React.Component {
+ static get propTypes() {
+ return {
+ saving: React.PropTypes.bool.isRequired,
+ disabled: React.PropTypes.bool
+ };
+ }
+
+ static get defaultProps() {
+ return {
+ disabled: false
+ };
+ }
+
+ render() {
+ const {saving, disabled, ...props} = this.props; // eslint-disable-line no-use-before-define
+
+ let contents;
+ if (saving) {
+ contents = (
+ <span>
+ <span className='glyphicon glyphicon-refresh glyphicon-refresh-animate'/>
+ <FormattedMessage
+ id='admin.saving'
+ defaultMessage='Saving Config...'
+ />
+ </span>
+ );
+ } else {
+ contents = (
+ <FormattedMessage
+ id='admin.save'
+ defaultMessage='Save'
+ />
+ );
+ }
+
+ let className = 'save-button btn';
+ if (!disabled) {
+ className += ' btn-primary';
+ }
+
+ return (
+ <button
+ type='submit'
+ className={className}
+ disabled={disabled}
+ {...props}
+ >
+ {contents}
+ </button>
+ );
+ }
+}