UNPKG

@geist-ui/react

Version:

Modern and minimalist React UI library.

68 lines (63 loc) 4.26 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; var _excluded = ["children", "onClick", "visible", "width", "onContentClick"]; import _JSXStyle from "../styled-jsx.es.js"; import React from 'react'; import useTheme from '../use-theme'; import CssTransition from './css-transition'; import useCurrentState from '../utils/use-current-state'; import { withPureProps } from '../use-scaleable'; var defaultProps = { onClick: function onClick() {}, visible: false, onContentClick: function onContentClick() {} }; var Backdrop = /*#__PURE__*/React.memo(function (_ref) { var children = _ref.children, onClick = _ref.onClick, visible = _ref.visible, width = _ref.width, onContentClick = _ref.onContentClick, props = _objectWithoutProperties(_ref, _excluded); var theme = useTheme(); var _useCurrentState = useCurrentState(false), _useCurrentState2 = _slicedToArray(_useCurrentState, 3), setIsContentMouseDown = _useCurrentState2[1], IsContentMouseDownRef = _useCurrentState2[2]; var clickHandler = function clickHandler(event) { if (IsContentMouseDownRef.current) return; onClick && onClick(event); }; var mouseUpHandler = function mouseUpHandler() { if (!IsContentMouseDownRef.current) return; var timer = setTimeout(function () { setIsContentMouseDown(false); clearTimeout(timer); }, 0); }; return /*#__PURE__*/React.createElement(CssTransition, { name: "backdrop-wrapper", visible: visible, clearTime: 300 }, /*#__PURE__*/React.createElement("div", _extends({ onClick: clickHandler, onMouseUp: mouseUpHandler }, withPureProps(props), { className: _JSXStyle.dynamic([["2429486860", [width, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity]]]) + " " + "backdrop" }), /*#__PURE__*/React.createElement("div", { className: _JSXStyle.dynamic([["2429486860", [width, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity]]]) + " " + "layer" }), /*#__PURE__*/React.createElement("div", { onClick: onContentClick, onMouseDown: function onMouseDown() { return setIsContentMouseDown(true); }, className: _JSXStyle.dynamic([["2429486860", [width, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity]]]) + " " + "content" }, children), /*#__PURE__*/React.createElement(_JSXStyle, { id: "2429486860", dynamic: [width, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity, theme.expressiveness.portalOpacity] }, ".backdrop.__jsx-style-dynamic-selector{position:fixed;top:0;left:0;right:0;bottom:0;overflow:auto;z-index:1000;-webkit-overflow-scrolling:touch;box-sizing:border-box;text-align:center;}.content.__jsx-style-dynamic-selector{position:relative;z-index:1001;outline:none;max-width:90%;width:".concat(width, ";margin:20px auto;vertical-align:middle;display:inline-block;}.backdrop.__jsx-style-dynamic-selector:before{display:inline-block;width:0;height:100%;vertical-align:middle;content:'';}.layer.__jsx-style-dynamic-selector{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;opacity:").concat(theme.expressiveness.portalOpacity, ";background-color:black;-webkit-transition:opacity 0.35s cubic-bezier(0.4,0,0.2,1);transition:opacity 0.35s cubic-bezier(0.4,0,0.2,1);pointer-events:none;z-index:1000;}.backdrop-wrapper-enter.__jsx-style-dynamic-selector .layer.__jsx-style-dynamic-selector{opacity:0;}.backdrop-wrapper-enter-active.__jsx-style-dynamic-selector .layer.__jsx-style-dynamic-selector{opacity:").concat(theme.expressiveness.portalOpacity, ";}.backdrop-wrapper-leave.__jsx-style-dynamic-selector .layer.__jsx-style-dynamic-selector{opacity:").concat(theme.expressiveness.portalOpacity, ";}.backdrop-wrapper-leave-active.__jsx-style-dynamic-selector .layer.__jsx-style-dynamic-selector{opacity:0;}")))); }); Backdrop.defaultProps = defaultProps; Backdrop.displayName = 'GeistBackdrop'; export default Backdrop;