import { h, Component } from 'preact'; // modules > lodas import set from 'set-value'; import { forEach, bindAll } from 'lowline'; // import Input from '../components/Input.jsx' export default class Form extends Component { constructor(props) { super(props); bindAll(this, ['register', 'validate']); this.inputs = {}; } toJSON() { const attrs = {}; // eslint-disable-next-line for (let name in this.inputs) { const input = this.inputs[name]; const value = input.getValue(); if (value) set(attrs, name, value); } return attrs; } validate() { let errorCount = 0; // eslint-disable-next-line for (let name in this.inputs) { const input = this.inputs[name]; if (!input.isValid()) { if (errorCount === 0) { input.focus(); } errorCount += 1; } } return !errorCount; } register(name) { return (input) => { if (input) { input.validation = this.validation[input.props.name]; this.inputs[name] = input; } else { delete this.inputs[name]; } }; } reset() { forEach(this.inputs, (input) => input.reset()); } }