import './style.scss'; import { Netmask } from 'netmask'; import React, { Component } from 'react'; import ReactDOM from 'react-dom'; class IPAddress extends Component { constructor(props) { super(props); this.state = { octets: [10, 88, 135, 144], cidr: 28 }; this.handleChange = this.handleChange.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); } handleChange(event) { var octets = this.state.octets; var val = +event.target.value.replace(/[^0-9]/g, ''); var octet = event.target.attributes['data-octet'].value; if (octet == 'cidr') { if (val <= 32) { this.setState({ cidr: val }); } } else { if (val <= 255) { octets[+octet] = val; this.setState({ octets: octets }); } } } handleKeyDown(event) { var lowerOctetValue = 0; var higherOctetValue = event.target.dataset.octet === 'cidr' ? 32 : 255; if (event.key === 'ArrowDown' && event.target.value > lowerOctetValue) { event.target.value = +event.target.value - 1; this.handleChange(event); } if (event.key === 'ArrowUp' && event.target.value < higherOctetValue) { event.target.value = +event.target.value + 1; this.handleChange(event); } } getPretty() { return this.state.octets.join('.') + '/' + this.state.cidr; } render() { var details = new Netmask(this.getPretty()); return (