UNPKG

@grafana/ui

Version:
1 lines 3.11 kB
{"version":3,"file":"ScrollContainer.mjs","sources":["../../../../src/components/ScrollContainer/ScrollContainer.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { forwardRef, PropsWithChildren, UIEventHandler } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Box, BoxProps } from '../Layout/Box/Box';\n\nimport { ScrollIndicators } from './ScrollIndicators';\n\ninterface Props extends Omit<BoxProps, 'display' | 'direction' | 'element' | 'flex' | 'position'> {\n showScrollIndicators?: boolean;\n onScroll?: UIEventHandler<HTMLDivElement>;\n overflowX?: Property.OverflowX;\n overflowY?: Property.OverflowY;\n scrollbarWidth?: Property.ScrollbarWidth;\n}\n\nexport const ScrollContainer = forwardRef<HTMLDivElement, PropsWithChildren<Props>>(\n (\n {\n children,\n showScrollIndicators = false,\n onScroll,\n overflowX = 'auto',\n overflowY = 'auto',\n scrollbarWidth = 'thin',\n ...rest\n },\n ref\n ) => {\n const styles = useStyles2(getStyles, scrollbarWidth, overflowY, overflowX);\n const defaults: Partial<BoxProps> = {\n maxHeight: '100%',\n minHeight: 0,\n minWidth: 0,\n };\n const boxProps = { ...defaults, ...rest };\n\n return (\n <Box {...boxProps} display=\"flex\" direction=\"column\" flex={1} position=\"relative\">\n <div onScroll={onScroll} className={styles.scroller} ref={ref}>\n {showScrollIndicators ? <ScrollIndicators>{children}</ScrollIndicators> : children}\n </div>\n </Box>\n );\n }\n);\nScrollContainer.displayName = 'ScrollContainer';\n\nconst getStyles = (\n theme: GrafanaTheme2,\n scrollbarWidth: Props['scrollbarWidth'],\n overflowY: Props['overflowY'],\n overflowX: Props['overflowX']\n) => ({\n scroller: css({\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n overflowX,\n overflowY,\n scrollbarWidth,\n }),\n});\n"],"names":[],"mappings":";;;;;;;AAmBO,MAAM,eAAkB,GAAA,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,QAAA;AAAA,IACA,oBAAuB,GAAA,KAAA;AAAA,IACvB,QAAA;AAAA,IACA,SAAY,GAAA,MAAA;AAAA,IACZ,SAAY,GAAA,MAAA;AAAA,IACZ,cAAiB,GAAA,MAAA;AAAA,IACjB,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,MAAS,GAAA,UAAA,CAAW,SAAW,EAAA,cAAA,EAAgB,WAAW,SAAS,CAAA;AACzE,IAAA,MAAM,QAA8B,GAAA;AAAA,MAClC,SAAW,EAAA,MAAA;AAAA,MACX,SAAW,EAAA,CAAA;AAAA,MACX,QAAU,EAAA;AAAA,KACZ;AACA,IAAA,MAAM,QAAW,GAAA,EAAE,GAAG,QAAA,EAAU,GAAG,IAAK,EAAA;AAExC,IACE,uBAAA,GAAA,CAAC,GAAK,EAAA,EAAA,GAAG,QAAU,EAAA,OAAA,EAAQ,QAAO,SAAU,EAAA,QAAA,EAAS,IAAM,EAAA,CAAA,EAAG,QAAS,EAAA,UAAA,EACrE,8BAAC,KAAI,EAAA,EAAA,QAAA,EAAoB,SAAW,EAAA,MAAA,CAAO,QAAU,EAAA,GAAA,EAClD,QAAuB,EAAA,oBAAA,mBAAA,GAAA,CAAC,gBAAkB,EAAA,EAAA,QAAA,EAAS,CAAsB,GAAA,QAAA,EAC5E,CACF,EAAA,CAAA;AAAA;AAGN;AACA,eAAA,CAAgB,WAAc,GAAA,iBAAA;AAE9B,MAAM,SAAY,GAAA,CAChB,KACA,EAAA,cAAA,EACA,WACA,SACI,MAAA;AAAA,EACJ,UAAU,GAAI,CAAA;AAAA,IACZ,OAAS,EAAA,MAAA;AAAA,IACT,IAAM,EAAA,CAAA;AAAA,IACN,aAAe,EAAA,QAAA;AAAA,IACf,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD;AACH,CAAA,CAAA;;;;"}