UNPKG

zent

Version:

一套前端设计语言和基于React的实现

50 lines (49 loc) 1.89 kB
import { __assign, __spreadArray } from "tslib"; import { jsx as _jsx } from "react/jsx-runtime"; import { cloneElement, useContext } from 'react'; import { isElement, isFragment } from 'react-is'; import Context from '../Context'; import Anchor from '../Anchor'; export function PopoverFocusTrigger(_a) { var children = _a.children, getElement = _a.getElement; var ctx = useContext(Context); if (!ctx) { throw new Error('PopoverFocusTrigger must be child of Popover'); } var childProps = { onFocus: function () { var _a, _b; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (isElement(children)) { (_b = (_a = children.props).onFocus) === null || _b === void 0 ? void 0 : _b.call.apply(_b, __spreadArray([_a], args)); } ctx.popover.setVisible(true); }, onBlur: function () { var _a, _b; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (isElement(children)) { (_b = (_a = children.props).onBlur) === null || _b === void 0 ? void 0 : _b.call.apply(_b, __spreadArray([_a], args)); } ctx.popover.setVisible(false); }, }; var child; if (typeof children === 'function') { child = children(childProps); } else if (isElement(children) && !isFragment(children)) { child = cloneElement(children, childProps); } else { child = _jsx("span", __assign({}, childProps, { "data-zv": '10.0.17' }, { children: children }), void 0); } return _jsx(Anchor, __assign({ getElement: getElement }, { children: child }), void 0); } export default PopoverFocusTrigger;