UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

180 lines (155 loc) 6.28 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ import { _ as _defineProperty, a as _objectWithoutProperties } from '../_chunks/dep-9f1126c1.js'; import { _ as _slicedToArray } from '../_chunks/dep-dc9b74a1.js'; import classNames from 'classnames'; import React, { useState, isValidElement, createElement } from 'react'; import { createPortal } from 'react-dom'; import { usePopper } from 'react-popper'; import { Transition } from '../transition/index.js'; import '../transition/Transition.js'; import 'lodash'; import './style/css.js'; import '../transition/type.js'; var _excluded = ["as", "trigger", "on", "duration", "animation", "delay", "position", "className", "style", "content", "children"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var Popup = function Popup(_ref) { var _ref$as = _ref.as, as = _ref$as === void 0 ? "div" : _ref$as, trigger = _ref.trigger, _ref$on = _ref.on, on = _ref$on === void 0 ? "hover" : _ref$on, _ref$duration = _ref.duration, duration = _ref$duration === void 0 ? 200 : _ref$duration, _ref$animation = _ref.animation, animation = _ref$animation === void 0 ? "scale" : _ref$animation, _ref$delay = _ref.delay, delay = _ref$delay === void 0 ? { show: 50, hide: 70 } : _ref$delay, _ref$position = _ref.position, position = _ref$position === void 0 ? "top" : _ref$position, className = _ref.className, style = _ref.style, content = _ref.content, children = _ref.children, props = _objectWithoutProperties(_ref, _excluded); if (!as) { as = "div"; } var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), toggle = _useState2[0], setToggle = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), visible = _useState4[0], setVisible = _useState4[1]; var _useState5 = useState(null), _useState6 = _slicedToArray(_useState5, 2), triggerRef = _useState6[0], setTriggerRef = _useState6[1]; var _useState7 = useState(null), _useState8 = _slicedToArray(_useState7, 2), popperElement = _useState8[0], setPopperElement = _useState8[1]; var _useState9 = useState(null), _useState10 = _slicedToArray(_useState9, 2), arrowElement = _useState10[0], setArrowElement = _useState10[1]; var _usePopper = usePopper(triggerRef, popperElement, { modifiers: [{ name: "arrow", options: { element: arrowElement } }, { name: "offset", options: { offset: [0, 10] } }], placement: position }), styles = _usePopper.styles, attributes = _usePopper.attributes; var triggerElement; if ( /*#__PURE__*/isValidElement(trigger)) { var triggerProps = {}; if (on === "click") { triggerProps.onClick = function (e) { if (toggle) { setTimeout(function () { setVisible(false); }, typeof delay === "number" ? delay : delay.hide); } else { setToggle(true); setTimeout(function () { setVisible(true); }, typeof delay === "number" ? delay : delay.show); } trigger.props.onClick && trigger.props.onClick(e); }; } if (on === "hover") { triggerProps.onMouseEnter = function (e) { setToggle(true); setTimeout(function () { setVisible(true); }, typeof delay === "number" ? delay : delay.show); trigger.props.onMouseEnter && trigger.props.onMouseEnter(e); }; triggerProps.onMouseLeave = function (e) { setTimeout(function () { setVisible(false); }, typeof delay === "number" ? delay : delay.hide); trigger.props.onMouseLeave && trigger.props.onMouseLeave(e); }; } if (on === "focus") { triggerProps.onFocus = function (e) { setToggle(true); setTimeout(function () { setVisible(true); }, typeof delay === "number" ? delay : delay.show); trigger.props.onFocus && trigger.props.onFocus(e); }; triggerProps.onBlur = function (e) { setTimeout(function () { setVisible(false); }, typeof delay === "number" ? delay : delay.hide); trigger.props.onBlur && trigger.props.onBlur(e); }; } triggerElement = /*#__PURE__*/createElement(trigger.type, _objectSpread(_objectSpread({ ref: setTriggerRef }, trigger.props), triggerProps)); } return /* @__PURE__ */React.createElement(React.Fragment, null, triggerElement, toggle && /*#__PURE__*/createPortal( /*#__PURE__*/createElement(as, _objectSpread({ ref: setPopperElement, style: _objectSpread(_objectSpread({}, styles.popper), style) }, props), /* @__PURE__ */React.createElement(Transition, _objectSpread({ className: classNames("ui", "popper", className), animation: animation, duration: duration, visible: visible, onHide: function onHide() { return setToggle(false); }, style: { display: "block" } }, attributes.popper), children || content, /* @__PURE__ */React.createElement("div", { className: "arrow", ref: setArrowElement, style: styles.arrow }))), document.body)); }; Popup.displayName = "Popup"; export { Popup as default }; //# sourceMappingURL=Popup.js.map