handleChange = value => {
clearTimeout(this.timeout);
this.props.changeValue(this.props.setting.definition.key, value);
- if (this.props.setting.definition.type === TYPE_PASSWORD) {
- this.handleSave();
- } else {
- this.handleCheck();
- }
+ this.handleCheck();
};
handleReset = () => {
const effectiveValue = hasValueChanged ? changedValue : getSettingValue(setting);
- const isDefault = isDefaultOrInherited(setting) && !hasValueChanged;
+ const isDefault = isDefaultOrInherited(setting);
return (
<div className={className} data-key={definition.key}>
</div>
<Input
+ hasValueChanged={hasValueChanged}
onCancel={this.handleCancel}
onChange={this.handleChange}
- onSave={this.handleSave}
setting={setting}
value={effectiveValue}
/>
<DefinitionActions
changedValue={changedValue}
hasError={hasError}
+ hasValueChanged={hasValueChanged}
isDefault={isDefault}
onCancel={this.handleCancel}
onReset={this.handleReset}
type Props = {
changedValue: string;
hasError: boolean;
+ hasValueChanged: boolean;
isDefault: boolean;
onCancel: () => void;
onReset: () => void;
}
render() {
- const { setting, isDefault, changedValue } = this.props;
- const hasValueChanged = changedValue != null;
- const canBeReset = !isDefault && isEmptyValue(setting.definition, changedValue);
- const isExplicitlySet =
- !isDefault && !isEmptyValue(setting.definition, getSettingValue(setting));
+ const { setting, isDefault, changedValue, hasValueChanged } = this.props;
+
+ const hasValueToResetTo = !isEmptyValue(setting.definition, getSettingValue(setting));
+ const hasBeenChangedToEmptyValue =
+ changedValue != null && isEmptyValue(setting.definition, changedValue);
+ const showReset =
+ hasValueToResetTo && (hasBeenChangedToEmptyValue || (!isDefault && !hasValueChanged));
return (
<>
- {isDefault && (
- <div className="spacer-top note" style={{ lineHeight: '24px' }}>
- {translate('settings._default')}
- </div>
- )}
+ {isDefault &&
+ !hasValueChanged && (
+ <div className="spacer-top note" style={{ lineHeight: '24px' }}>
+ {translate('settings._default')}
+ </div>
+ )}
<div className="settings-definition-changes nowrap">
{hasValueChanged && (
<Button
</Button>
)}
- {canBeReset && (
+ {showReset && (
<Button className="spacer-right" onClick={this.handleReset}>
{translate('reset_verb')}
</Button>
</Button>
)}
- {isExplicitlySet && (
+ {showReset && (
<span className="note">
{translate('default')}
{': '}