UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 2.58 kB
{"version":3,"file":"ScrollAreaViewport.cjs","names":["useScrollAreaContext","Box"],"sources":["../../../../src/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.tsx"],"sourcesContent":["import { useMergedRef } from '@mantine/hooks';\nimport { Box, BoxProps, ElementProps } from '../../../core';\nimport { useScrollAreaContext } from '../ScrollArea.context';\n\nexport interface ScrollAreaViewportProps extends BoxProps, ElementProps<'div'> {}\n\nexport function ScrollAreaViewport({\n children,\n style,\n ref,\n onWheel,\n ...others\n}: ScrollAreaViewportProps) {\n const ctx = useScrollAreaContext();\n const rootRef = useMergedRef(ref, ctx.onViewportChange);\n\n const handleWheel = (event: React.WheelEvent<HTMLDivElement>) => {\n onWheel?.(event);\n\n // Fix for Windows: Allow horizontal scrolling even when vertical scroll is at boundaries\n // When at vertical boundaries, Windows tries to scroll the parent/page instead of allowing horizontal scroll\n if (ctx.scrollbarXEnabled && ctx.viewport && event.shiftKey) {\n const { scrollTop, scrollHeight, clientHeight, scrollWidth, clientWidth } = ctx.viewport;\n const isAtTop = scrollTop < 1;\n const isAtBottom = scrollTop >= scrollHeight - clientHeight - 1;\n const canScrollHorizontally = scrollWidth > clientWidth;\n\n if (canScrollHorizontally && (isAtTop || isAtBottom)) {\n event.stopPropagation();\n }\n }\n };\n\n return (\n <Box\n {...others}\n ref={rootRef}\n onWheel={handleWheel}\n style={{\n overflowX: ctx.scrollbarXEnabled ? 'scroll' : 'hidden',\n overflowY: ctx.scrollbarYEnabled ? 'scroll' : 'hidden',\n ...style,\n }}\n >\n <div {...ctx.getStyles('content')} ref={ctx.onContentChange}>\n {children}\n </div>\n </Box>\n );\n}\n\nScrollAreaViewport.displayName = '@mantine/core/ScrollAreaViewport';\n"],"mappings":";;;;;;;AAMA,SAAgB,mBAAmB,EACjC,UACA,OACA,KACA,SACA,GAAG,UACuB;CAC1B,MAAM,MAAMA,2BAAAA,sBAAsB;CAClC,MAAM,WAAA,GAAA,eAAA,cAAuB,KAAK,IAAI,iBAAiB;CAEvD,MAAM,eAAe,UAA4C;AAC/D,YAAU,MAAM;AAIhB,MAAI,IAAI,qBAAqB,IAAI,YAAY,MAAM,UAAU;GAC3D,MAAM,EAAE,WAAW,cAAc,cAAc,aAAa,gBAAgB,IAAI;GAChF,MAAM,UAAU,YAAY;GAC5B,MAAM,aAAa,aAAa,eAAe,eAAe;AAG9D,OAF8B,cAAc,gBAEd,WAAW,YACvC,OAAM,iBAAiB;;;AAK7B,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EACE,GAAI;EACJ,KAAK;EACL,SAAS;EACT,OAAO;GACL,WAAW,IAAI,oBAAoB,WAAW;GAC9C,WAAW,IAAI,oBAAoB,WAAW;GAC9C,GAAG;GACJ;YAED,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,GAAI,IAAI,UAAU,UAAU;GAAE,KAAK,IAAI;GACzC;GACG,CAAA;EACF,CAAA;;AAIV,mBAAmB,cAAc"}