UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

78 lines (77 loc) 3.23 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = ModalHeaderBar; var _react = _interopRequireWildcard(require("react")); var _clsx = _interopRequireDefault(require("clsx")); var _Section = _interopRequireDefault(require("../../section/Section.js")); var _ModalContext = _interopRequireDefault(require("../ModalContext.js")); var _CloseButton = _interopRequireDefault(require("./CloseButton.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } function ModalHeaderBar({ className = null, children = null, ref: _ref, shadowClass = null, ...props }) { const context = (0, _react.useContext)(_ModalContext.default); const sectionRef = (0, _react.useRef)(null); const [showShadow, setShowShadow] = (0, _react.useState)(false); (0, _react.useEffect)(() => { if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined' || !sectionRef.current) { return undefined; } const element = sectionRef.current; const marginTop = -element.clientHeight; let scrollRoot = null; let parent = element.parentElement; while (parent) { var _parent$classList; if ((_parent$classList = parent.classList) !== null && _parent$classList !== void 0 && _parent$classList.contains('dnb-scroll-view')) { scrollRoot = parent; break; } parent = parent.parentElement; } const observer = new IntersectionObserver(entries => { const [entry] = entries; setShowShadow(!entry.isIntersecting); }, { root: scrollRoot, rootMargin: `${marginTop}px 0px 0px 0px`, threshold: 0.001 }); observer.observe(element); return () => { observer.disconnect(); }; }, [children]); const { hideCloseButton = false, closeButtonAttributes, onCloseClickHandler, closeTitle } = context; return (0, _jsxRuntime.jsxs)(_Section.default, { className: (0, _clsx.default)('dnb-modal__header__bar', className, showShadow && shadowClass), ref: sectionRef, ...props, children: [(0, _jsxRuntime.jsx)("div", { className: "dnb-modal__header__bar__inner", children: children }), !hideCloseButton && (0, _jsxRuntime.jsx)("div", { className: "dnb-modal__header__bar__close", children: (0, _jsxRuntime.jsx)(_CloseButton.default, { onClick: onCloseClickHandler, closeTitle: closeTitle, ...closeButtonAttributes }) })] }); } //# sourceMappingURL=ModalHeaderBar.js.map