UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

77 lines (76 loc) 2.59 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = ModalHeaderBar; var _react = 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 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