diff --git a/src/components/settings/DHCPInfo.js b/src/components/settings/DHCPInfo.js index b178b36..c5a345c 100644 --- a/src/components/settings/DHCPInfo.js +++ b/src/components/settings/DHCPInfo.js @@ -29,7 +29,7 @@ class DHCPInfo extends Component { ip_start: "", ip_end: "", router_ip: "", - lease_time: 24, + lease_time: "", domain: "", ipv6_support: false }; @@ -93,14 +93,36 @@ class DHCPInfo extends Component { // TODO: send settings to API }; + /** + * Settings are valid if the value is valid or if DHCP is disabled and the value is empty. + * + * @param value the value to check + * @param validator the validation function + */ + isSettingValid = (value, validator) => { + return (!this.state.active && value.length === 0) || validator(value); + }; + render() { const { t } = this.props; - const isIpStartValid = isValidIpv4(this.state.ip_start); - const isIpEndValid = isValidIpv4(this.state.ip_end); - const isRouterIpValid = isValidIpv4(this.state.router_ip); - const isLeaseTimeValid = isPositiveNumber(this.state.lease_time); - const isDomainValid = isValidHostname(this.state.domain); + const isIpStartValid = this.isSettingValid( + this.state.ip_start, + isValidIpv4 + ); + const isIpEndValid = this.isSettingValid(this.state.ip_end, isValidIpv4); + const isRouterIpValid = this.isSettingValid( + this.state.router_ip, + isValidIpv4 + ); + const isLeaseTimeValid = this.isSettingValid( + this.state.lease_time, + isPositiveNumber + ); + const isDomainValid = this.isSettingValid( + this.state.domain, + isValidHostname + ); return (
@@ -124,7 +146,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.ip_start} onChange={this.onChange("ip_start", "value")} - invalid={this.state.active && !isIpStartValid} + invalid={!isIpStartValid} /> @@ -138,7 +160,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.ip_end} onChange={this.onChange("ip_end", "value")} - invalid={this.state.active && !isIpEndValid} + invalid={!isIpEndValid} /> @@ -152,7 +174,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.router_ip} onChange={this.onChange("router_ip", "value")} - invalid={this.state.active && !isRouterIpValid} + invalid={!isRouterIpValid} /> @@ -167,7 +189,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.lease_time} onChange={this.onChange("lease_time", "value")} - invalid={this.state.active && !isLeaseTimeValid} + invalid={!isLeaseTimeValid} /> Hours @@ -183,7 +205,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.domain} onChange={this.onChange("domain", "value")} - invalid={this.state.active && !isDomainValid} + invalid={!isDomainValid} /> @@ -201,12 +223,11 @@ class DHCPInfo extends Component {