summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2016-05-31 10:40:23 -0400
committerChristopher Speller <crspeller@gmail.com>2016-05-31 10:40:23 -0400
commitca5e8d38e94388b53ed9f847ea6fedb4ffec3412 (patch)
treee0fb11f352b5e731fadf0a7e2abc4a03bef66002 /webapp
parent4a326dd6ce29c7ff62e0f620e8cdca920e1f3016 (diff)
downloadchat-ca5e8d38e94388b53ed9f847ea6fedb4ffec3412.tar.gz
chat-ca5e8d38e94388b53ed9f847ea6fedb4ffec3412.tar.bz2
chat-ca5e8d38e94388b53ed9f847ea6fedb4ffec3412.zip
Allow users to manually enter colors into theme pickers (#3164)
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/navbar_dropdown.jsx5
-rw-r--r--webapp/components/user_settings/custom_theme_chooser.jsx26
2 files changed, 15 insertions, 16 deletions
diff --git a/webapp/components/navbar_dropdown.jsx b/webapp/components/navbar_dropdown.jsx
index 87df3848d..ec002bc44 100644
--- a/webapp/components/navbar_dropdown.jsx
+++ b/webapp/components/navbar_dropdown.jsx
@@ -292,7 +292,10 @@ export default class NavbarDropdown extends React.Component {
<li>
<a
href='#'
- onClick={() => this.setState({showUserSettingsModal: true})}
+ onClick={(e) => {
+ e.preventDefault();
+ this.setState({showUserSettingsModal: true});
+ }}
>
<FormattedMessage
id='navbar_dropdown.accountSettings'
diff --git a/webapp/components/user_settings/custom_theme_chooser.jsx b/webapp/components/user_settings/custom_theme_chooser.jsx
index 958f30c7b..8f95a990d 100644
--- a/webapp/components/user_settings/custom_theme_chooser.jsx
+++ b/webapp/components/user_settings/custom_theme_chooser.jsx
@@ -99,12 +99,13 @@ const messages = defineMessages({
import React from 'react';
+const HEX_CODE_LENGTH = 7;
+
class CustomThemeChooser extends React.Component {
constructor(props) {
super(props);
this.onPickerChange = this.onPickerChange.bind(this);
- this.onInputChange = this.onInputChange.bind(this);
this.pasteBoxChange = this.pasteBoxChange.bind(this);
this.toggleContent = this.toggleContent.bind(this);
@@ -126,17 +127,16 @@ class CustomThemeChooser extends React.Component {
});
}
onPickerChange(e) {
+ const inputBox = e.target.childNodes[0];
+ if (document.activeElement === inputBox && inputBox.value.length !== HEX_CODE_LENGTH) {
+ return;
+ }
+
const theme = this.props.theme;
theme[e.target.id] = e.color.toHex();
theme.type = 'custom';
this.props.updateTheme(theme);
}
- onInputChange(e) {
- const theme = this.props.theme;
- theme[e.target.parentNode.id] = e.target.value;
- theme.type = 'custom';
- this.props.updateTheme(theme);
- }
pasteBoxChange(e) {
const text = e.target.value;
@@ -225,8 +225,7 @@ class CustomThemeChooser extends React.Component {
<select
className='form-control'
type='text'
- value={theme[element.id]}
- onChange={this.onInputChange}
+ defaultValue={theme[element.id]}
>
{codeThemeOptions}
</select>
@@ -258,8 +257,7 @@ class CustomThemeChooser extends React.Component {
<input
className='form-control'
type='text'
- value={theme[element.id]}
- onChange={this.onInputChange}
+ defaultValue={theme[element.id]}
/>
<span className='input-group-addon'><i></i></span>
</div>
@@ -281,8 +279,7 @@ class CustomThemeChooser extends React.Component {
<input
className='form-control'
type='text'
- value={theme[element.id]}
- onChange={this.onInputChange}
+ defaultValue={theme[element.id]}
/>
<span className='input-group-addon'><i></i></span>
</div>
@@ -304,8 +301,7 @@ class CustomThemeChooser extends React.Component {
<input
className='form-control'
type='text'
- value={theme[element.id]}
- onChange={this.onInputChange}
+ defaultValue={theme[element.id]}
/>
<span className='input-group-addon'><i></i></span>
</div>