@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
78 lines (77 loc) • 3.23 kB
JavaScript
;
"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