Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 12x 12x | /* eslint react/prop-types: 0 */ import React from 'react'; import Done from '@material-ui/icons/Done'; import * as R from 'ramda'; export const withInput = Component => class extends React.Component { state = { value: R.isNil(this.props.defaultValue) ? this.props.value : this.props.defaultValue, }; onChange = value => { this.setState({ value: value }); }; onSubmit = () => { this.bubbleUp(this.state.value); }; bubbleUp = item => { if (R.is(Function, this.props.onSubmit)) this.props.onSubmit(item); }; render = () => { const { onChange, isControlled } = this.props; const { value } = this.state; return ( <Component {...this.props} onChange={isControlled ? onChange : this.onChange} onSubmit={isControlled ? null : this.onSubmit} rightIcon={isControlled || R.isNil(value) || R.isEmpty(value) ? null : Done} value={isControlled ? this.props.value : value} /> ); }; }; |