UNPKG

@orca-fe/pocket

Version:

UI components by orca-team

114 lines 5.25 kB
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import React, { cloneElement, createContext, isValidElement, useContext, useEffect, useMemo, useState } from 'react'; import { useMemoizedFn } from 'ahooks'; import { get, pick, set } from 'lodash-es'; import produce from 'immer'; import CommonStore from "../common-store"; import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; var ef = () => {}; class FormStore extends CommonStore { constructor() { super({}); } setFieldsValue(value) { this.setState(value); } setFieldValue(key, value) { this.setState(produce(this.getState(), state => { set(state, key, value); })); return pick(this.getState(), [key]); } getFieldsValue() { return this.getState(); } getFieldValue(key) { return get(this.getState(), key); } } export var SimpleFormContext = /*#__PURE__*/createContext({ form: new FormStore(), changeValue: () => {} }); var useForm = _form => { var _useState = useState(() => _form || new FormStore()), _useState2 = _slicedToArray(_useState, 1), form = _useState2[0]; return [form]; }; var SimpleForm = props => { var initialValues = props.initialValues, formFromProps = props.form, _props$onValuesChange = props.onValuesChange, onValuesChange = _props$onValuesChange === void 0 ? ef : _props$onValuesChange, children = props.children; var _useForm = useForm(formFromProps), _useForm2 = _slicedToArray(_useForm, 1), form = _useForm2[0]; useEffect(() => { if (initialValues) { form.setFieldsValue(initialValues); } }, []); var changeValue = useMemoizedFn((fieldName, value) => { var changedValue = form.setFieldValue(fieldName, value); // trigger events onValuesChange(changedValue, form.getFieldsValue()); }); return /*#__PURE__*/_jsx(SimpleFormContext.Provider, { value: useMemo(() => ({ form, changeValue }), []), children: children }); }; export default SimpleForm; function defaultGetValueFromEvent(valuePropName, event) { if (event !== null && event !== void 0 && event.target && typeof event.target === 'object' && valuePropName in event.target) { return event.target[valuePropName]; } return event; } var eArr = []; var SimpleFormItem = props => { var children = props.children, _props$valuePropName = props.valuePropName, valuePropName = _props$valuePropName === void 0 ? 'value' : _props$valuePropName, _props$trigger = props.trigger, trigger = _props$trigger === void 0 ? 'onChange' : _props$trigger, _props$name = props.name, name = _props$name === void 0 ? eArr : _props$name; var childProps = children === null || children === void 0 ? void 0 : children.props; var originTriggerFunc = childProps === null || childProps === void 0 ? void 0 : childProps[trigger]; var _useContext = useContext(SimpleFormContext), form = _useContext.form, changeValue = _useContext.changeValue; var value = form.useState(state => get(state, name)); var triggerFn = useMemoizedFn((...args) => { var newValue = defaultGetValueFromEvent(valuePropName, args[0]); if (name) { changeValue(name, newValue); } originTriggerFunc === null || originTriggerFunc === void 0 || originTriggerFunc(...args); }); if (name && /*#__PURE__*/isValidElement(children)) { return /*#__PURE__*/cloneElement(children, { [valuePropName]: value, [trigger]: triggerFn }); } return /*#__PURE__*/_jsx(_Fragment, { children: children }); }; SimpleForm.useForm = useForm; SimpleForm.Item = SimpleFormItem; SimpleForm.Context = SimpleFormContext; SimpleForm.useFormInstance = () => useContext(SimpleFormContext).form;