UNPKG

shineout

Version:

Shein 前端组件库

103 lines (88 loc) 3.24 kB
import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; import React, { PureComponent } from 'react'; import createReactContext from '../context'; import { deepGet } from '../utils/objects'; import { isObject, isArray } from '../utils/is'; import { curry3 } from '../utils/func'; // 去掉独有的属性 var context = createReactContext({}); // eslint-disable-next-line export var Provider = context.Provider; // eslint-disable-next-line export var Consumer = context.Consumer; export var formProvider = function formProvider(Origin) { var FormProvider = /*#__PURE__*/ function (_PureComponent) { _inheritsLoose(FormProvider, _PureComponent); function FormProvider(props) { var _this; _this = _PureComponent.call(this, props) || this; _this.combineRules = _this.combineRules.bind(_assertThisInitialized(_assertThisInitialized(_this))); // this.groupValidate = this.groupValidate.bind(this) return _this; } var _proto = FormProvider.prototype; _proto.combineRules = function combineRules(name, propRules) { var rules = this.props.rules; var newRules = []; if (isObject(rules) && name) { newRules = deepGet(rules, name) || []; } else if (isArray(rules)) { newRules = rules; } if (isArray(propRules)) { newRules = newRules.concat(propRules); } return newRules; } // groupValidate(name) { // not implement... // } ; _proto.render = function render() { var _this$props = this.props, datum = _this$props.datum, labelAlign = _this$props.labelAlign, labelVerticalAlign = _this$props.labelVerticalAlign, labelWidth = _this$props.labelWidth, disabled = _this$props.disabled, pending = _this$props.pending, mode = _this$props.mode, size = _this$props.size, keepErrorHeight = _this$props.keepErrorHeight; var value = { formDatum: datum, formMode: mode, disabled: !!(disabled || pending), labelAlign: labelAlign, labelVerticalAlign: labelVerticalAlign, labelWidth: labelWidth, size: size, combineRules: this.combineRules, // groupValidate: this.groupValidate, keepErrorHeight: keepErrorHeight }; return React.createElement(Provider, { value: value }, React.createElement(Origin, this.props)); }; return FormProvider; }(PureComponent); return FormProvider; }; export var formConsumer = curry3(function (keys, Origin, props) { var filterProps = function filterProps(value) { var cps = {}; if (!value) return cps; if (!keys) return value; keys.forEach(function (k) { var val = value[k]; if (val !== undefined) cps[k] = val; }); return cps; }; return React.createElement(Consumer, null, function (value) { var formProps = filterProps(value); return React.createElement(Origin, _extends({}, formProps, props, { disabled: formProps.disabled || props.disabled })); }); });