UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

46 lines (37 loc) 1.34 kB
import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; import React, { Component } from 'react'; import PropTypes from 'prop-types'; function withForm(WrappedComponent, OriginComponent) { class FormComponent extends Component { constructor(...args) { super(...args); this.isForm = () => !!this.context.formsy; } render() { const _this$props = this.props, { forwardedRef } = _this$props, rest = _objectWithoutPropertiesLoose(_this$props, ["forwardedRef"]); const isForm = this.isForm(); if (isForm) { return React.createElement(WrappedComponent, _extends({}, rest, { ref: forwardedRef })); } return React.createElement(OriginComponent, _extends({}, rest, { ref: forwardedRef })); } } const name = OriginComponent.displayName || OriginComponent.name || (typeof OriginComponent === 'string' ? OriginComponent : 'Component'); FormComponent.displayName = `formHOC-${name}`; FormComponent.contextTypes = { formsy: PropTypes.object }; return React.forwardRef((props, ref) => React.createElement(FormComponent, _extends({}, props, { forwardedRef: ref }))); } export default withForm;