1
0
mirror of https://github.com/oceanprotocol/commons.git synced 2023-03-15 18:03:00 +01:00

fix form input props flow

This commit is contained in:
Matthias Kretschmann 2019-02-11 12:28:03 +01:00
parent dd177475bd
commit 93212342da
Signed by: m
GPG Key ID: 606EEEF3C479A91F

View File

@ -47,47 +47,46 @@ export default class Input extends PureComponent<InputProps, InputState> {
this.setState({ isFocused: !this.state.isFocused }) this.setState({ isFocused: !this.state.isFocused })
} }
public InputComponent = ({ ...props }) => { public InputComponent = () => {
if (props.type === 'select') { const { type, options, group, name } = this.props
if (type === 'select') {
return ( return (
<div className={this.inputWrapClasses()}> <div className={this.inputWrapClasses()}>
<select className={styles.select} {...props}> <select className={styles.select} {...this.props}>
<option value="none">---</option> <option value="none">---</option>
{props.options && {options &&
props.options.map( options.map((option: string, index: number) => (
(option: string, index: number) => ( <option
<option key={index}
key={index} value={slugify(option, {
value={slugify(option, { lower: true
lower: true })}
})} >
> {option}
{option} </option>
</option> ))}
)
)}
</select> </select>
</div> </div>
) )
} else if (props.type === 'textarea') { } else if (type === 'textarea') {
return ( return (
<div className={this.inputWrapClasses()}> <div className={this.inputWrapClasses()}>
<textarea className={styles.input} {...props} /> <textarea className={styles.input} {...this.props} />
</div> </div>
) )
} else if (props.type === 'radio' || props.type === 'checkbox') { } else if (type === 'radio' || type === 'checkbox') {
return ( return (
<div className={styles.radioGroup}> <div className={styles.radioGroup}>
{props.options && {options &&
props.options.map((option: string, index: number) => ( options.map((option: string, index: number) => (
<div className={styles.radioWrap} key={index}> <div className={styles.radioWrap} key={index}>
<input <input
className={styles.radio} className={styles.radio}
type={this.props.type}
id={slugify(option, { id={slugify(option, {
lower: true lower: true
})} })}
name={this.props.name} name={name}
value={slugify(option, { value={slugify(option, {
lower: true lower: true
})} })}
@ -108,31 +107,22 @@ export default class Input extends PureComponent<InputProps, InputState> {
return ( return (
<div className={this.inputWrapClasses()}> <div className={this.inputWrapClasses()}>
{props.group ? ( {group ? (
<InputGroup> <InputGroup>
<input className={styles.input} {...props} /> <input className={styles.input} {...this.props} />
{props.group} {group}
</InputGroup> </InputGroup>
) : ( ) : (
<input className={styles.input} {...props} /> <input className={styles.input} {...this.props} />
)} )}
{props.type === 'search' && <SearchIcon />} {type === 'search' && <SearchIcon />}
</div> </div>
) )
} }
public render() { public render() {
const { const { name, label, required, help, additionalComponent } = this.props
name,
label,
required,
type,
help,
additionalComponent,
options,
...props
} = this.props
return ( return (
<Row> <Row>
@ -140,17 +130,7 @@ export default class Input extends PureComponent<InputProps, InputState> {
{label} {label}
</Label> </Label>
<this.InputComponent <this.InputComponent />
id={name}
label={label}
name={name}
required={required}
type={type}
options={options}
{...props}
onFocus={this.toggleFocus}
onBlur={this.toggleFocus}
/>
{help && <Help>{help}</Help>} {help && <Help>{help}</Help>}