diff options
Diffstat (limited to 'webapp/components')
-rw-r--r-- | webapp/components/user_settings/custom_theme_chooser.jsx | 39 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_theme.jsx | 5 |
2 files changed, 31 insertions, 13 deletions
diff --git a/webapp/components/user_settings/custom_theme_chooser.jsx b/webapp/components/user_settings/custom_theme_chooser.jsx index a4e5f8937..7a90cc7df 100644 --- a/webapp/components/user_settings/custom_theme_chooser.jsx +++ b/webapp/components/user_settings/custom_theme_chooser.jsx @@ -106,6 +106,19 @@ const messages = defineMessages({ const HEX_CODE_LENGTH = 7; class CustomThemeChooser extends React.Component { + constructor(props) { + super(props); + this.selectTheme = this.selectTheme.bind(this); + + const copyTheme = Object.assign({}, this.props.theme); + delete copyTheme.type; + delete copyTheme.image; + + this.state = { + copyTheme: JSON.stringify(copyTheme) + }; + } + componentDidMount() { $('.color-picker').colorpicker({ format: 'hex' @@ -144,9 +157,11 @@ class CustomThemeChooser extends React.Component { } const theme = this.props.theme; - theme[e.target.id] = e.color.toHex(); - theme.type = 'custom'; - this.props.updateTheme(theme); + if (theme[e.target.id] !== e.color.toHex()) { + theme[e.target.id] = e.color.toHex(); + theme.type = 'custom'; + this.props.updateTheme(theme); + } } pasteBoxChange = (e) => { @@ -169,6 +184,10 @@ class CustomThemeChooser extends React.Component { return; } + this.setState({ + copyTheme: JSON.stringify(theme) + }); + theme.type = 'custom'; this.props.updateTheme(theme); } @@ -177,6 +196,12 @@ class CustomThemeChooser extends React.Component { e.stopPropagation(); } + selectTheme() { + const textarea = this.refs.textarea; + textarea.focus(); + textarea.setSelectionRange(0, this.state.copyTheme.length); + } + toggleSidebarStyles = (e) => { e.preventDefault(); @@ -346,10 +371,6 @@ class CustomThemeChooser extends React.Component { } }); - const copyTheme = Object.assign({}, theme); - delete copyTheme.type; - delete copyTheme.image; - const pasteBox = ( <div className='col-sm-12'> <label className='custom-label'> @@ -359,10 +380,12 @@ class CustomThemeChooser extends React.Component { /> </label> <textarea + ref='textarea' className='form-control' - value={JSON.stringify(copyTheme)} + value={this.state.copyTheme} onPaste={this.pasteBoxChange} onChange={this.onChangeHandle} + onClick={this.selectTheme} /> </div> ); diff --git a/webapp/components/user_settings/user_settings_theme.jsx b/webapp/components/user_settings/user_settings_theme.jsx index 5730fe171..4f39cffa9 100644 --- a/webapp/components/user_settings/user_settings_theme.jsx +++ b/webapp/components/user_settings/user_settings_theme.jsx @@ -125,11 +125,6 @@ export default class ThemeSetting extends React.Component { this.originalTheme = Object.assign({}, this.state.theme); this.scrollToTop(); this.props.updateSection(''); - }, - (err) => { - var state = this.getStateFromStores(); - state.serverError = err; - this.setState(state); } ); } |