import React from 'react'; import PropTypes from 'prop-types'; import './input.scss'; export class Input extends React.Component { constructor(props){ super(props); } render() { return ( { this.ref = comp; }} /> ); } } Input.propTypes = { type: PropTypes.string, placeholder: PropTypes.string }; export const Select = (props) => { const choices = props.choices || []; const id = props.id ? {id: props.id} : {}; return ( ); }; export class Enabler extends React.Component { constructor(props){ super(props); } componentWillMount(){ requestAnimationFrame(() => { this.toggle(this.props.defaultValue || false); }); } onChange(e){ this.toggle(e.target.checked); this.props.onChange(e); } toggle(value){ const target = this.props.target || []; target.map((t) => { let $el = document.getElementById(t); if(!$el) return; if(value === true){ $el.parentElement.parentElement.parentElement.style.display = "block"; $el.parentElement.parentElement.parentElement.style.opacity = "1"; } else { $el.parentElement.parentElement.parentElement.style.display = "none"; $el.parentElement.parentElement.parentElement.style.opacity = "0"; // reset value if($el.value){ $el.value = null; let event = new Event('input', { bubbles: true}); event.simulated = true; $el.dispatchEvent(event); } } }); } render(){ return ( ); } };