client/hippo/components/form/fields.jsx in hippo-fw-0.9.5 vs client/hippo/components/form/fields.jsx in hippo-fw-0.9.6
- old
+ new
@@ -1,36 +1,31 @@
import React from 'react';
import PropTypes from 'prop-types';
-
+import invariant from 'invariant';
+import { action } from 'mobx';
import { inject, observer } from 'mobx-react';
import classnames from 'classnames';
import { Col, getColumnProps } from 'react-flexbox-grid';
-
-import invariant from 'invariant';
import Field from 'grommet/components/FormField';
import NumberInput from 'grommet/components/NumberInput';
-
import { titleize } from '../../lib/util';
-
-import { FormField as FormFieldModel } from './model';
import DateWrapper from './fields/date-wrapper';
import SelectWrapper from './fields/select-wrapper';
import TextWrapper from './fields/text-wrapper';
import CheckBoxWrapper from './fields/checkbox-wrapper';
-
+import Label from './fields/label';
import './fields/form-field.scss';
const TypesMapping = {
text: TextWrapper,
date: DateWrapper,
+ label: Label,
select: SelectWrapper,
number: NumberInput,
checkbox: CheckBoxWrapper,
-
};
-
@inject('formState')
@observer
export default class FormField extends React.PureComponent {
static propTypes = Object.assign({
label: PropTypes.string,
@@ -53,19 +48,25 @@
this.field = this.props.formState.setField(this.props.name, this.props);
}
componentWillReceiveProps(nextProps) {
invariant(nextProps.name === this.props.name,
- `cannot update 'name' prop from ${this.props.name} to ${nextProps.name}`);
+ `cannot update 'name' prop from ${this.props.name} to ${nextProps.name}`);
this.field.update(this.props);
}
+ @action.bound
+ setRef(input) {
+ this.inputRef = input;
+ }
+
render() {
const {
name, className, autoFocus, type, children, label,
validate: _, formState: __, help: ___, ...otherProps
} = getColumnProps(this.props);
+
const InputTag = TypesMapping[type] || TypesMapping.text;
return (
<div className={classnames('form-field', className)}>
<Field
@@ -74,10 +75,10 @@
help={this.field.help}
>
<InputTag
name={name}
autoFocus={autoFocus}
- ref={f => (this.inputRef = f)}
+ ref={this.setRef}
value={this.field.value || ''}
type={InputTag === TypesMapping.text ? this.props.type : undefined}
{...this.field.events}
{...otherProps}
/>