UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

188 lines (159 loc) 6.84 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../_chunks/dep-6ab59a61.js'); var slicedToArray = require('../_chunks/dep-640599ea.js'); var objectWithoutProperties = require('../_chunks/dep-03754121.js'); var classNames = require('classnames'); var React = require('react'); var reactDom = require('react-dom'); var reactPopper = require('react-popper'); var transition_index = require('../transition/index.js'); require('../transition/Transition.js'); require('lodash'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); 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._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._objectWithoutProperties(_ref, _excluded); if (!as) { as = "div"; } var _useState = React.useState(false), _useState2 = slicedToArray._slicedToArray(_useState, 2), toggle = _useState2[0], setToggle = _useState2[1]; var _useState3 = React.useState(false), _useState4 = slicedToArray._slicedToArray(_useState3, 2), visible = _useState4[0], setVisible = _useState4[1]; var _useState5 = React.useState(null), _useState6 = slicedToArray._slicedToArray(_useState5, 2), triggerRef = _useState6[0], setTriggerRef = _useState6[1]; var _useState7 = React.useState(null), _useState8 = slicedToArray._slicedToArray(_useState7, 2), popperElement = _useState8[0], setPopperElement = _useState8[1]; var _useState9 = React.useState(null), _useState10 = slicedToArray._slicedToArray(_useState9, 2), arrowElement = _useState10[0], setArrowElement = _useState10[1]; var _usePopper = reactPopper.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__*/React.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__*/React.createElement(trigger.type, _objectSpread(_objectSpread({ ref: setTriggerRef }, trigger.props), triggerProps)); } return /* @__PURE__ */React__default["default"].createElement(React__default["default"].Fragment, null, triggerElement, toggle && /*#__PURE__*/reactDom.createPortal( /*#__PURE__*/React.createElement(as, _objectSpread({ ref: setPopperElement, style: _objectSpread(_objectSpread({}, styles.popper), style) }, props), /* @__PURE__ */React__default["default"].createElement(transition_index.Transition, _objectSpread({ className: classNames__default["default"]("ui", "popper", className), animation: animation, duration: duration, visible: visible, onHide: function onHide() { return setToggle(false); }, style: { display: "block" } }, attributes.popper), children || content, /* @__PURE__ */React__default["default"].createElement("div", { className: "arrow", ref: setArrowElement, style: styles.arrow }))), document.body)); }; Popup.displayName = "Popup"; exports["default"] = Popup; //# sourceMappingURL=Popup.js.map