UNPKG

@hhgtech/hhg-components

Version:
119 lines (107 loc) 4.22 kB
import { _ as __rest } from './tslib.es6-ea4dfe68.js'; import React__default, { useState, useCallback, useMemo, useEffect } from 'react'; import { clsx } from '@mantine/core'; import { Drawer } from 'vaul'; import styled from '@emotion/styled'; import { Z as ZINDEX_SSO } from './index-5e947517.js'; const StyledDrawerComponentContent = styled(Drawer.Content) ` position: fixed; z-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(Drawer.Overlay) ` position: fixed; inset: 0; z-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 = ZINDEX_SSO - 9e6 } = props, restProps = __rest(props, ["open", "onOpenChange", "snapPoints", "activeSnapPoint", "setActiveSnapPoint", "children", "overlayClassName", "className", "fadeFromIndex"]); const [open, setOpen] = useState(openProps); const [snap, setSnap] = useState(snapPoints ? snapPoints === null || snapPoints === void 0 ? void 0 : snapPoints[0] : null); const onOpenChange = useCallback((_open) => { setOpen(_open); onOpenChangeProps === null || onOpenChangeProps === void 0 ? void 0 : onOpenChangeProps(_open); }, [onOpenChangeProps]); const isFullSnapPoint = useMemo(() => { if (snapPoints && snapPoints.length) { return Boolean(snap === snapPoints[snapPoints.length - 1]); } return open; }, [snap, snapPoints]); const mergedProps = 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, ]); useEffect(() => { setOpen(openProps); }, [openProps]); useEffect(() => { setSnap(activeSnapPoint); }, [activeSnapPoint]); return (React__default.createElement(Drawer.Root, Object.assign({}, restProps, mergedProps), React__default.createElement(Drawer.Portal, null, React__default.createElement(StyledDrawerComponentOverlay, { className: clsx(overlayClassName, 'drawer__overlay', { drawer__overlay_full: isFullSnapPoint, }) }), React__default.createElement(StyledDrawerComponentContent, { className: clsx(className, 'drawer__content', { drawer__content_full: isFullSnapPoint, }) }, React__default.createElement(Drawer.Handle, { className: "drawer__handle" }), React__default.createElement(Drawer.Title, { style: { display: 'none' } }), children)))); }; export { DrawerComponent as D };