Allow users to manually enter colors into theme pickers (#3164)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
4a326dd6ce
Коммит
ca5e8d38e9
@@ -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>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user