Sha256: c6ffbfa15e6a60494e108dfdd1eebf251c70c1209a9e51825c80f9294275e5c7
Contents?: true
Size: 1.46 KB
Versions: 2
Compression:
Stored size: 1.46 KB
Contents
import React from 'react'; import PropTypes from 'prop-types'; import { PropTypes as MobxPropTypes, Provider, observer } from 'mobx-react'; import { observePubSub } from '../../models/pub_sub'; import { FormState } from './model'; @observer export default class FormWrapper extends React.PureComponent { static propTypes = { tag: PropTypes.string, className: PropTypes.string, children: PropTypes.node.isRequired, state: PropTypes.instanceOf(FormState), model: MobxPropTypes.observableObject, } static get defaultProps() { return { state: new FormState(), }; } componentDidMount() { if (this.props.model) { this.props.state.setFromModel(this.props.model); } } renderTagless() { return ( <Provider formState={this.props.state}> {this.props.children} </Provider> ); } persistTo(model) { this.props.state.persistTo(model); } renderTagged() { const { tag: Tag, state, children, model: _, ...otherProps } = this.props; return ( <Provider formState={state}> <Tag {...otherProps}> {children} </Tag> </Provider> ); } render() { if (this.props.model) { observePubSub(this.props.model); } return this.props.tag ? this.renderTagged() : this.renderTagless(); } }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hippo-fw-0.9.5 | client/hippo/components/form/wrapper.jsx |
hippo-fw-0.9.4 | client/hippo/components/form/wrapper.jsx |