Allow users to manually enter colors into theme pickers (#3164)

Этот коммит содержится в:
Joram Wilander
2016-05-31 10:40:23 -04:00
коммит произвёл Christopher Speller
родитель 4a326dd6ce
Коммит ca5e8d38e9
2 изменённых файлов: 15 добавлений и 16 удалений

Просмотреть файл

@@ -292,7 +292,10 @@ export default class NavbarDropdown extends React.Component {
<li> <li>
<a <a
href='#' href='#'
onClick={() => this.setState({showUserSettingsModal: true})} onClick={(e) => {
e.preventDefault();
this.setState({showUserSettingsModal: true});
}}
> >
<FormattedMessage <FormattedMessage
id='navbar_dropdown.accountSettings' id='navbar_dropdown.accountSettings'

Просмотреть файл

@@ -99,12 +99,13 @@ const messages = defineMessages({
import React from 'react'; import React from 'react';
const HEX_CODE_LENGTH = 7;
class CustomThemeChooser extends React.Component { class CustomThemeChooser extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.onPickerChange = this.onPickerChange.bind(this); this.onPickerChange = this.onPickerChange.bind(this);
this.onInputChange = this.onInputChange.bind(this);
this.pasteBoxChange = this.pasteBoxChange.bind(this); this.pasteBoxChange = this.pasteBoxChange.bind(this);
this.toggleContent = this.toggleContent.bind(this); this.toggleContent = this.toggleContent.bind(this);
@@ -126,17 +127,16 @@ class CustomThemeChooser extends React.Component {
}); });
} }
onPickerChange(e) { onPickerChange(e) {
const inputBox = e.target.childNodes[0];
if (document.activeElement === inputBox && inputBox.value.length !== HEX_CODE_LENGTH) {
return;
}
const theme = this.props.theme; const theme = this.props.theme;
theme[e.target.id] = e.color.toHex(); theme[e.target.id] = e.color.toHex();
theme.type = 'custom'; theme.type = 'custom';
this.props.updateTheme(theme); 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) { pasteBoxChange(e) {
const text = e.target.value; const text = e.target.value;
@@ -225,8 +225,7 @@ class CustomThemeChooser extends React.Component {
<select <select
className='form-control' className='form-control'
type='text' type='text'
value={theme[element.id]} defaultValue={theme[element.id]}
onChange={this.onInputChange}
> >
{codeThemeOptions} {codeThemeOptions}
</select> </select>
@@ -258,8 +257,7 @@ class CustomThemeChooser extends React.Component {
<input <input
className='form-control' className='form-control'
type='text' type='text'
value={theme[element.id]} defaultValue={theme[element.id]}
onChange={this.onInputChange}
/> />
<span className='input-group-addon'><i></i></span> <span className='input-group-addon'><i></i></span>
</div> </div>
@@ -281,8 +279,7 @@ class CustomThemeChooser extends React.Component {
<input <input
className='form-control' className='form-control'
type='text' type='text'
value={theme[element.id]} defaultValue={theme[element.id]}
onChange={this.onInputChange}
/> />
<span className='input-group-addon'><i></i></span> <span className='input-group-addon'><i></i></span>
</div> </div>
@@ -304,8 +301,7 @@ class CustomThemeChooser extends React.Component {
<input <input
className='form-control' className='form-control'
type='text' type='text'
value={theme[element.id]} defaultValue={theme[element.id]}
onChange={this.onInputChange}
/> />
<span className='input-group-addon'><i></i></span> <span className='input-group-addon'><i></i></span>
</div> </div>