From 6e68b40927ffe1cca7ce999eaf31f6a1fe640111 Mon Sep 17 00:00:00 2001 From: Fareed Ahmad Date: Tue, 22 Oct 2024 12:19:28 -0400 Subject: [PATCH] feat(HTL-109459): multiroom drawer) --- ...459-multiroom-drawer_2024-10-22-16-20.json | 10 ++++++++++ packages/core/src/Drawer/Drawer.stories.tsx | 2 +- packages/core/src/Drawer/Drawer.styled.tsx | 12 +++++++----- packages/core/src/Drawer/Drawer.tsx | 19 ++++++++++++------- 4 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 common/changes/pcln-design-system/feat-HTL-109459-multiroom-drawer_2024-10-22-16-20.json diff --git a/common/changes/pcln-design-system/feat-HTL-109459-multiroom-drawer_2024-10-22-16-20.json b/common/changes/pcln-design-system/feat-HTL-109459-multiroom-drawer_2024-10-22-16-20.json new file mode 100644 index 000000000..302f6aada --- /dev/null +++ b/common/changes/pcln-design-system/feat-HTL-109459-multiroom-drawer_2024-10-22-16-20.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "pcln-design-system", + "comment": "update drawer props", + "type": "minor" + } + ], + "packageName": "pcln-design-system" +} \ No newline at end of file diff --git a/packages/core/src/Drawer/Drawer.stories.tsx b/packages/core/src/Drawer/Drawer.stories.tsx index 13abb6f31..c7d790e4e 100644 --- a/packages/core/src/Drawer/Drawer.stories.tsx +++ b/packages/core/src/Drawer/Drawer.stories.tsx @@ -142,7 +142,7 @@ export const Anchored = (args) => ( ) export const Mobile = (args) => ( - + Drawer Content ) diff --git a/packages/core/src/Drawer/Drawer.styled.tsx b/packages/core/src/Drawer/Drawer.styled.tsx index f70c62f6b..4d5a84b50 100644 --- a/packages/core/src/Drawer/Drawer.styled.tsx +++ b/packages/core/src/Drawer/Drawer.styled.tsx @@ -3,7 +3,6 @@ import { Flex } from '../Flex/Flex' import { theme } from '../theme' import { motion } from 'framer-motion' import React from 'react' -import { Absolute } from '../Absolute/Absolute' import { getPaletteColor } from '../utils' import { Box } from '../Box/Box' import { IconButton } from '../IconButton/IconButton' @@ -13,7 +12,7 @@ const Component = React.forwardRef((props, ref: React.MutableRefObject )) -const AnimatedAbsolute = motion(Component) +const AnimatedComponent = motion(Component) const getBorderRadiusStyles = (placement, isFloating) => { const themeRadius = theme.borderRadii['2xl'] @@ -40,13 +39,16 @@ const positions: Record = { } const getPlacementStyles = (placement) => placement ? `margin-inline:auto; margin-block:auto; ${positions[placement]};` : `` -export const DrawerWrapper = styled(Absolute)` - ${({ placement }) => +export const DrawerWrapper = styled(Box)` + ${({ placement, zIndex, position }) => ` + position: ${position || 'absolute'}; ${getPlacementStyles(placement)} + ${getPlacementStyles(placement)} + z-index: ${zIndex || theme.zIndices.modal}; `} ` -export const DrawerRoot = styled(AnimatedAbsolute)` +export const DrawerRoot = styled(AnimatedComponent)` background-color: ${getPaletteColor('background.lightest')}; ${({ theme, placement, isFloating }) => `box-shadow: ${theme.shadows['overlay-md']}; diff --git a/packages/core/src/Drawer/Drawer.tsx b/packages/core/src/Drawer/Drawer.tsx index 583124e54..af3fd1267 100644 --- a/packages/core/src/Drawer/Drawer.tsx +++ b/packages/core/src/Drawer/Drawer.tsx @@ -8,19 +8,22 @@ import { AnimatePresence, motion } from 'framer-motion' import { SpaceProps, LayoutProps } from 'styled-system' import { useScrollWithShadow } from '../useScrollWithShadows/useScrollWithShadow' import { MotionVariants } from '../Animate/Animate' +import { theme } from '../theme' export type PlacementOptions = 'top' | 'bottom' | 'right' | 'left' export type DrawerProps = SpaceProps & LayoutProps & { + children?: string | React.ReactNode heading?: string | React.ReactNode isCollapsed?: boolean isFloating?: boolean - isOpen?: boolean isMobile?: boolean + isOpen?: boolean + isDraggable?: boolean onClose?: () => void onCollapse?: () => void placement?: PlacementOptions - children?: string | React.ReactNode + position?: string } const enterAnimation = { @@ -51,6 +54,7 @@ export const Drawer: React.FC = ({ isFloating = true, isMobile = false, isOpen = false, + isDraggable = true, onClose, onCollapse, placement = 'right', @@ -62,11 +66,12 @@ export const Drawer: React.FC = ({ {isOpen && ( = ({ key='drawer' placement={isMobile ? 'bottom' : placement} {...enterAnimation[isMobile ? 'bottom' : placement]} - {...dragToDismissAnimation(onCollapse)} + {...(isDraggable ? dragToDismissAnimation(onCollapse) : {})} height='100%' width='100%' overflow='hidden' @@ -92,7 +97,7 @@ export const Drawer: React.FC = ({ heading )} {onClose || onCollapse ? ( - + {onCollapse && ( = ({ boxShadow, }} > - + {children} ) : ( - + {children} )}