UNPKG

@hhgtech/hhg-components

Version:
126 lines (111 loc) 4.59 kB
'use strict'; var tslib_es6 = require('./tslib.es6-92cccef3.js'); var React = require('react'); var core = require('@mantine/core'); var vaul = require('vaul'); var styled = require('@emotion/styled'); var index = require('./index-1ee4ebb8.js'); function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefault(React); var styled__default = /*#__PURE__*/_interopDefault(styled); const StyledDrawerComponentContent = styled__default["default"](vaul.Drawer.Content) ` position: fixed; z-index: ${index.ZINDEX_SSO - 9e6 + 1}; inset: 0; background-color: #fff; outline: none !important; &::-webkit-scrollbar { width: 6px; height: 6px; } &::-webkit-scrollbar-track { background-color: transparent; } &::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 0, 0.4); border-radius: 6px; } &[data-vaul-drawer-direction='bottom'] { border-top-left-radius: 8px; border-top-right-radius: 8px; } &[data-vaul-drawer-direction='top'] { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } &[data-vaul-drawer-direction='left'] { border-top-right-radius: 8px; border-bottom-right-radius: 8px; } &[data-vaul-drawer-direction='right'] { border-top-left-radius: 8px; border-bottom-left-radius: 8px; } `; const StyledDrawerComponentOverlay = styled__default["default"](vaul.Drawer.Overlay) ` position: fixed; inset: 0; z-index: ${index.ZINDEX_SSO - 9e6}; width: 100%; max-height: 100%; &[data-state='open'] { opacity: 0.6 !important; } `; const DrawerComponent = (props) => { const { open: openProps, onOpenChange: onOpenChangeProps, snapPoints, activeSnapPoint, setActiveSnapPoint, children, overlayClassName, className, fadeFromIndex = index.ZINDEX_SSO - 9e6 } = props, restProps = tslib_es6.__rest(props, ["open", "onOpenChange", "snapPoints", "activeSnapPoint", "setActiveSnapPoint", "children", "overlayClassName", "className", "fadeFromIndex"]); const [open, setOpen] = React.useState(openProps); const [snap, setSnap] = React.useState(snapPoints ? snapPoints === null || snapPoints === void 0 ? void 0 : snapPoints[0] : null); const onOpenChange = React.useCallback((_open) => { setOpen(_open); onOpenChangeProps === null || onOpenChangeProps === void 0 ? void 0 : onOpenChangeProps(_open); }, [onOpenChangeProps]); const isFullSnapPoint = React.useMemo(() => { if (snapPoints && snapPoints.length) { return Boolean(snap === snapPoints[snapPoints.length - 1]); } return open; }, [snap, snapPoints]); const mergedProps = React.useMemo(() => { const _mergedProps = { open, onOpenChange, fadeFromIndex, }; if (snapPoints && (snapPoints === null || snapPoints === void 0 ? void 0 : snapPoints.length)) { _mergedProps.snapPoints = snapPoints; _mergedProps.activeSnapPoint = snap; _mergedProps.setActiveSnapPoint = (snP) => { setSnap(snP); setActiveSnapPoint === null || setActiveSnapPoint === void 0 ? void 0 : setActiveSnapPoint(snP); }; } return _mergedProps; }, [ open, onOpenChange, snap, setSnap, setActiveSnapPoint, snapPoints, fadeFromIndex, ]); React.useEffect(() => { setOpen(openProps); }, [openProps]); React.useEffect(() => { setSnap(activeSnapPoint); }, [activeSnapPoint]); return (React__default["default"].createElement(vaul.Drawer.Root, Object.assign({}, restProps, mergedProps), React__default["default"].createElement(vaul.Drawer.Portal, null, React__default["default"].createElement(StyledDrawerComponentOverlay, { className: core.clsx(overlayClassName, 'drawer__overlay', { drawer__overlay_full: isFullSnapPoint, }) }), React__default["default"].createElement(StyledDrawerComponentContent, { className: core.clsx(className, 'drawer__content', { drawer__content_full: isFullSnapPoint, }) }, React__default["default"].createElement(vaul.Drawer.Handle, { className: "drawer__handle" }), React__default["default"].createElement(vaul.Drawer.Title, { style: { display: 'none' } }), children)))); }; exports.DrawerComponent = DrawerComponent;