UNPKG

@trap_stevo/legendarybuilderproreact-ui

Version:

The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton

188 lines 9.47 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; var _excluded = ["sideContainerConfigurationSettings", "closeButtonConfigurationSettings", "backDropConfigurationSettings", "contentConfigurationSettings", "headerConfigurationSettings", "footerConfigurationSettings", "closeButtonHoverColor", "closeButtonColor", "displayCloseButton", "displayBackDrop", "controlledOpen", "open", "onClose", "onOpen", "position", "headerContent", "footerContent", "children"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } import React, { useState, useEffect } from "react"; import { motion, AnimatePresence } from "framer-motion"; import HUDIcon from "./HUDIcon.js"; var defaultStyles = { backdrop: { position: "fixed", display: "flex", justifyContent: "center", alignItems: "center", transition: "all 0.369s ease", backgroundColor: "rgba(0, 0, 0, 0.569)", backdropFilter: "blur(2px)", zIndex: 1269, bottom: 0, right: 0, left: 0, top: 0 }, header: { display: "flex", justifyContent: "flex-end", marginTop: "0.569rem" }, closeButton: { cursor: "pointer", background: "none", border: "none", fontSize: "1.2rem" }, content: { position: "relative", display: "flex", overflowY: "auto", flexDirection: "column", marginTop: "20px" }, footer: { position: "relative", display: "flex", marginTop: "20px" } }; function HUDSideContainerPanel(hudSideContainerPanelConfigurationSettings) { var _hudSideContainerPane = hudSideContainerPanelConfigurationSettings.sideContainerConfigurationSettings, sideContainerConfigurationSettings = _hudSideContainerPane === void 0 ? {} : _hudSideContainerPane, _hudSideContainerPane2 = hudSideContainerPanelConfigurationSettings.closeButtonConfigurationSettings, closeButtonConfigurationSettings = _hudSideContainerPane2 === void 0 ? {} : _hudSideContainerPane2, _hudSideContainerPane3 = hudSideContainerPanelConfigurationSettings.backDropConfigurationSettings, backDropConfigurationSettings = _hudSideContainerPane3 === void 0 ? {} : _hudSideContainerPane3, _hudSideContainerPane4 = hudSideContainerPanelConfigurationSettings.contentConfigurationSettings, contentConfigurationSettings = _hudSideContainerPane4 === void 0 ? {} : _hudSideContainerPane4, _hudSideContainerPane5 = hudSideContainerPanelConfigurationSettings.headerConfigurationSettings, headerConfigurationSettings = _hudSideContainerPane5 === void 0 ? {} : _hudSideContainerPane5, _hudSideContainerPane6 = hudSideContainerPanelConfigurationSettings.footerConfigurationSettings, footerConfigurationSettings = _hudSideContainerPane6 === void 0 ? {} : _hudSideContainerPane6, _hudSideContainerPane7 = hudSideContainerPanelConfigurationSettings.closeButtonHoverColor, closeButtonHoverColor = _hudSideContainerPane7 === void 0 ? "rgba(127, 127, 127, 1)" : _hudSideContainerPane7, _hudSideContainerPane8 = hudSideContainerPanelConfigurationSettings.closeButtonColor, closeButtonColor = _hudSideContainerPane8 === void 0 ? "rgba(0, 0, 0, 1)" : _hudSideContainerPane8, _hudSideContainerPane9 = hudSideContainerPanelConfigurationSettings.displayCloseButton, displayCloseButton = _hudSideContainerPane9 === void 0 ? true : _hudSideContainerPane9, _hudSideContainerPane10 = hudSideContainerPanelConfigurationSettings.displayBackDrop, displayBackDrop = _hudSideContainerPane10 === void 0 ? true : _hudSideContainerPane10, controlledOpen = hudSideContainerPanelConfigurationSettings.controlledOpen, _hudSideContainerPane11 = hudSideContainerPanelConfigurationSettings.open, open = _hudSideContainerPane11 === void 0 ? false : _hudSideContainerPane11, onClose = hudSideContainerPanelConfigurationSettings.onClose, onOpen = hudSideContainerPanelConfigurationSettings.onOpen, _hudSideContainerPane12 = hudSideContainerPanelConfigurationSettings.position, position = _hudSideContainerPane12 === void 0 ? "left" : _hudSideContainerPane12, _hudSideContainerPane13 = hudSideContainerPanelConfigurationSettings.headerContent, headerContent = _hudSideContainerPane13 === void 0 ? null : _hudSideContainerPane13, _hudSideContainerPane14 = hudSideContainerPanelConfigurationSettings.footerContent, footerContent = _hudSideContainerPane14 === void 0 ? null : _hudSideContainerPane14, children = hudSideContainerPanelConfigurationSettings.children, rest = _objectWithoutProperties(hudSideContainerPanelConfigurationSettings, _excluded); var _useState = useState(open), _useState2 = _slicedToArray(_useState, 2), sideContainerOpen = _useState2[0], setSideContainerOpen = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), closeButtonHover = _useState4[0], setCloseButtonHover = _useState4[1]; var sideContainerPanelVariants = { hidden: { opacity: 0, x: position === "left" ? "-100%" : "100%" }, visible: { transition: { type: "spring", stiffness: 300, damping: 30 }, opacity: 1, x: 0 } }; var mergedConfigurationSettings = { backdrop: _objectSpread(_objectSpread({}, defaultStyles.backdrop), backDropConfigurationSettings), header: _objectSpread(_objectSpread({}, defaultStyles.header), headerConfigurationSettings), closeButton: _objectSpread(_objectSpread({}, defaultStyles.closeButton), closeButtonConfigurationSettings), content: _objectSpread(_objectSpread({}, defaultStyles.content), contentConfigurationSettings), footer: _objectSpread(_objectSpread({}, defaultStyles.footer), footerConfigurationSettings) }; var toggleOpen = function toggleOpen() { var updatedState = !open; setSideContainerOpen(updatedState); if (onOpen) { onOpen(updatedState); } if (updatedState === false && onClose) { onClose(updatedState); } return; }; useEffect(function () { if (controlledOpen !== undefined) { setSideContainerOpen(controlledOpen); } }, [controlledOpen]); return /*#__PURE__*/React.createElement(AnimatePresence, null, sideContainerOpen && /*#__PURE__*/React.createElement(React.Fragment, null, displayBackDrop ? /*#__PURE__*/React.createElement("div", { style: _objectSpread(_objectSpread({}, mergedConfigurationSettings.backdrop), {}, { backgroundColor: open ? "rgba(0, 0, 0, 0.569)" : "rgba(0, 0, 0, 0)", backdropFilter: open ? "blur(2px)" : "blur(0px)" }) }) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement(motion.div, { style: _objectSpread(_defineProperty(_defineProperty({ position: "fixed", overflow: "auto", boxShadow: "-5px 1px 10px -1.69px rgba(0, 0, 0, 0.469)", background: "white", height: "100vh", width: "300px", zIndex: 2699 }, position, 0), "top", 0), sideContainerConfigurationSettings), initial: "hidden", animate: "visible", exit: "hidden", variants: sideContainerPanelVariants }, /*#__PURE__*/React.createElement("div", { className: "invisa-scroller", style: mergedConfigurationSettings.header }, displayCloseButton ? /*#__PURE__*/React.createElement(HUDIcon, { iconConfigurationSettings: _objectSpread({ transition: "scale 0.369s ease, color 0.369s ease", scale: closeButtonHover ? "1.069" : "1" }, mergedConfigurationSettings.closeButton), color: closeButtonHover ? closeButtonHoverColor : closeButtonColor, name: "fa-close", onMouseLeave: function onMouseLeave() { setCloseButtonHover(false); return; }, onMouseEnter: function onMouseEnter() { setCloseButtonHover(true); return; }, onClick: toggleOpen }) : /*#__PURE__*/React.createElement(React.Fragment, null), headerContent ? headerContent : /*#__PURE__*/React.createElement(React.Fragment, null)), /*#__PURE__*/React.createElement("div", { className: "invisa-scroller", style: _objectSpread({ position: "relative", display: "flex", flexDirection: "column", overflowY: "auto" }, mergedConfigurationSettings.content) }, children), footerContent ? /*#__PURE__*/React.createElement("div", { className: "invisa-scroller", style: _objectSpread({ position: "relative", display: "flex", flexDirection: "row", overflowX: "auto", borderTop: "1px solid #ccc", padding: "20px" }, mergedConfigurationSettings.footer) }, footerContent) : /*#__PURE__*/React.createElement(React.Fragment, null)))); } ; export default HUDSideContainerPanel;