@hh.ru/magritte-ui-table 3.2.2 → 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"FullPageContainer.js","sources":["../src/FullPageContainer.tsx"],"sourcesContent":["import { FC, ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport { useResize } from '@hh.ru/magritte-common-resize';\n\ninterface PaddingState {\n paddingLeft: number;\n paddingRight: number;\n}\n\ninterface FullPageContainer {\n children: (padding: PaddingState) => ReactNode;\n}\n\nexport const FullPageContainer: FC<FullPageContainer> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [padding, setPadding] = useState<PaddingState | undefined>(undefined);\n\n const calcPadding = useCallback(() => {\n if (ref.current) {\n const pageWidth = document.body.clientWidth;\n const parentElement = ref.current.parentElement as HTMLElement;\n const contentRect = parentElement.getBoundingClientRect();\n setPadding({ paddingLeft: contentRect.left, paddingRight: pageWidth - contentRect.right });\n }\n }, []);\n\n useLayoutEffect(() => {\n if (ref.current) {\n const observer = new ResizeObserver(() => calcPadding());\n observer.observe(document.body);\n return () => observer.disconnect();\n }\n return void 0;\n }, [calcPadding]);\n\n useResize(calcPadding);\n\n return (\n <div\n ref={ref}\n style={\n padding\n ? { marginLeft: `-${padding.paddingLeft}px`, marginRight: `-${padding.paddingRight}px` }\n : undefined\n }\n >\n {padding ? children(padding) : null}\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;MAaa,iBAAiB,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;AACrE,IAAA,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA2B,SAAS,CAAC,CAAC;AAE5E,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAK;AACjC,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,aAA4B,CAAC;AAC/D,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC1D,YAAA,UAAU,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;SAC9F;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,eAAe,CAAC,MAAK;AACjB,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;AACzD,YAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;SACtC;QACD,OAAO,KAAK,CAAC,CAAC;AAClB,KAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,QACIA,aACI,GAAG,EAAE,GAAG,EACR,KAAK,EACD,OAAO;AACH,cAAE,EAAE,UAAU,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAI,EAAA,CAAA,EAAE,WAAW,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,YAAY,IAAI,EAAE;AACxF,cAAE,SAAS,EAAA,QAAA,EAGlB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAA,CACjC,EACR;AACN;;;;"}
1
+ {"version":3,"file":"FullPageContainer.js","sources":["src/FullPageContainer.tsx"],"sourcesContent":["import { FC, ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport { useResize } from '@hh.ru/magritte-common-resize';\n\ninterface PaddingState {\n paddingLeft: number;\n paddingRight: number;\n}\n\ninterface FullPageContainer {\n children: (padding: PaddingState) => ReactNode;\n}\n\nexport const FullPageContainer: FC<FullPageContainer> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [padding, setPadding] = useState<PaddingState | undefined>(undefined);\n\n const calcPadding = useCallback(() => {\n if (ref.current) {\n const pageWidth = document.body.clientWidth;\n const parentElement = ref.current.parentElement as HTMLElement;\n const contentRect = parentElement.getBoundingClientRect();\n setPadding({ paddingLeft: contentRect.left, paddingRight: pageWidth - contentRect.right });\n }\n }, []);\n\n useLayoutEffect(() => {\n if (ref.current) {\n const observer = new ResizeObserver(() => calcPadding());\n observer.observe(document.body);\n return () => observer.disconnect();\n }\n return void 0;\n }, [calcPadding]);\n\n useResize(calcPadding);\n\n return (\n <div\n ref={ref}\n style={\n padding\n ? { marginLeft: `-${padding.paddingLeft}px`, marginRight: `-${padding.paddingRight}px` }\n : undefined\n }\n >\n {padding ? children(padding) : null}\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;MAaa,iBAAiB,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;AACrE,IAAA,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA2B,SAAS,CAAC,CAAC;AAE5E,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAK;AACjC,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,aAA4B,CAAC;AAC/D,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC1D,YAAA,UAAU,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;SAC9F;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,eAAe,CAAC,MAAK;AACjB,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;AACzD,YAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;SACtC;QACD,OAAO,KAAK,CAAC,CAAC;AAClB,KAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,QACIA,aACI,GAAG,EAAE,GAAG,EACR,KAAK,EACD,OAAO;AACH,cAAE,EAAE,UAAU,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAI,EAAA,CAAA,EAAE,WAAW,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,YAAY,IAAI,EAAE;AACxF,cAAE,SAAS,EAAA,QAAA,EAGlB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAA,CACjC,EACR;AACN;;;;"}
@@ -4,8 +4,8 @@ import { useRef, useContext, useCallback, useLayoutEffect } from 'react';
4
4
  import { createPortal } from 'react-dom';
5
5
  import classnames from 'classnames';
6
6
  import { TableContext } from './context.js';
7
- import { c as cellStyles } from './cell-BbdUyeIu.js';
8
- import { s as styles } from './table-CN1ksfwX.js';
7
+ import { c as cellStyles } from './cell-B7QCFHlk.js';
8
+ import { s as styles } from './table-CIZi3N0M.js';
9
9
 
10
10
  const DENSITY_TO_CSS = {
11
11
  'extra-small': styles.densityExtraSmall,
@@ -1 +1 @@
1
- {"version":3,"file":"StickyTableHeader.js","sources":["../src/StickyTableHeader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, RefObject, useCallback, useContext, useLayoutEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classnames from 'classnames';\n\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { Density } from '@hh.ru/magritte-ui-table/types';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\ninterface StickyTableHeaderProps extends PropsWithChildren {\n root: HTMLDivElement;\n headerRef: RefObject<HTMLTableSectionElement>;\n divider?: boolean;\n density: Density;\n}\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const StickyTableHeader: FC<StickyTableHeaderProps> = ({ root, divider, density, headerRef, children }) => {\n const ref = useRef<HTMLTableElement>(null);\n const { fontLoaded: renderPortal, subscribeResizeHandler, unsubscribeResizeHandler } = useContext(TableContext);\n\n const calcWidth = useCallback(() => {\n if (ref.current && root && headerRef.current) {\n const columnsHeader =\n headerRef.current.querySelectorAll<HTMLTableCellElement>('[data-magritte-table-cell]');\n const widths: number[] = [];\n [...columnsHeader].forEach((column, index) => {\n widths[index] = column.getBoundingClientRect().width;\n });\n const columns = ref.current.querySelectorAll<HTMLElement>('[data-magritte-table-cell]');\n [...columns].forEach((column, index) => {\n column.style.setProperty('width', `${widths[index]}px`);\n column.style.setProperty('max-width', `${widths[index]}px`);\n });\n root.style.setProperty('margin-bottom', `-${headerRef.current.getBoundingClientRect().height}px`);\n }\n }, [headerRef, root]);\n\n useLayoutEffect(() => {\n if (root && renderPortal) {\n calcWidth();\n subscribeResizeHandler?.(calcWidth, 1);\n\n return () => unsubscribeResizeHandler?.(calcWidth);\n }\n\n return void 0;\n }, [root, renderPortal, calcWidth, subscribeResizeHandler, unsubscribeResizeHandler]);\n\n return (\n <>\n {renderPortal &&\n createPortal(\n <table ref={ref} className={classnames(styles.table, cellStyles.duplicateTable)}>\n <thead\n className={classnames(styles.header, DENSITY_TO_CSS[density], {\n [styles.withDivider]: !!divider,\n })}\n data-qa=\"table-sticky-header\"\n >\n {children}\n </thead>\n </table>,\n root\n )}\n </>\n );\n};\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"StickyTableHeader.js","sources":["src/StickyTableHeader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, RefObject, useCallback, useContext, useLayoutEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classnames from 'classnames';\n\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { Density } from '@hh.ru/magritte-ui-table/types';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\ninterface StickyTableHeaderProps extends PropsWithChildren {\n root: HTMLDivElement;\n headerRef: RefObject<HTMLTableSectionElement>;\n divider?: boolean;\n density: Density;\n}\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const StickyTableHeader: FC<StickyTableHeaderProps> = ({ root, divider, density, headerRef, children }) => {\n const ref = useRef<HTMLTableElement>(null);\n const { fontLoaded: renderPortal, subscribeResizeHandler, unsubscribeResizeHandler } = useContext(TableContext);\n\n const calcWidth = useCallback(() => {\n if (ref.current && root && headerRef.current) {\n const columnsHeader =\n headerRef.current.querySelectorAll<HTMLTableCellElement>('[data-magritte-table-cell]');\n const widths: number[] = [];\n [...columnsHeader].forEach((column, index) => {\n widths[index] = column.getBoundingClientRect().width;\n });\n const columns = ref.current.querySelectorAll<HTMLElement>('[data-magritte-table-cell]');\n [...columns].forEach((column, index) => {\n column.style.setProperty('width', `${widths[index]}px`);\n column.style.setProperty('max-width', `${widths[index]}px`);\n });\n root.style.setProperty('margin-bottom', `-${headerRef.current.getBoundingClientRect().height}px`);\n }\n }, [headerRef, root]);\n\n useLayoutEffect(() => {\n if (root && renderPortal) {\n calcWidth();\n subscribeResizeHandler?.(calcWidth, 1);\n\n return () => unsubscribeResizeHandler?.(calcWidth);\n }\n\n return void 0;\n }, [root, renderPortal, calcWidth, subscribeResizeHandler, unsubscribeResizeHandler]);\n\n return (\n <>\n {renderPortal &&\n createPortal(\n <table ref={ref} className={classnames(styles.table, cellStyles.duplicateTable)}>\n <thead\n className={classnames(styles.header, DENSITY_TO_CSS[density], {\n [styles.withDivider]: !!divider,\n })}\n data-qa=\"table-sticky-header\"\n >\n {children}\n </thead>\n </table>,\n root\n )}\n </>\n );\n};\n"],"names":["_jsx"],"mappings":"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"}
package/Table.js CHANGED
@@ -8,8 +8,8 @@ import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
8
8
  import { useScrollbar, Scrollbar } from '@hh.ru/magritte-ui-scrollbar';
9
9
  import { TableContext } from './context.js';
10
10
  import { useTableResize } from './useTableResize.js';
11
- import { c as cellStyles } from './cell-BbdUyeIu.js';
12
- import { s as styles } from './table-CN1ksfwX.js';
11
+ import { c as cellStyles } from './cell-B7QCFHlk.js';
12
+ import { s as styles } from './table-CIZi3N0M.js';
13
13
 
14
14
  const DENSITY_TO_CSS = {
15
15
  'extra-small': styles.densityExtraSmall,
package/Table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../src/Table.tsx"],"sourcesContent":["import { FC, RefCallback, useCallback, useLayoutEffect, useMemo, useRef, useState, CSSProperties } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useWhenFontLoaded } from '@hh.ru/magritte-common-use-when-font-loaded';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableProps } from '@hh.ru/magritte-ui-table/types';\nimport { useTableResize } from '@hh.ru/magritte-ui-table/useTableResize';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const Table: FC<TableProps> = ({\n density = 'small',\n topPanel,\n bottomPanel,\n fixedSize,\n stickyBottom,\n stickyHeader,\n divider,\n dividerTop,\n dividerBottom,\n tinted,\n style = 'primary',\n styleHighlighted,\n tintedStyle = 'secondary',\n tintedStyleHighlighted,\n topStyle,\n bottomStyle,\n padding,\n paddingLeft: _paddingLeft,\n paddingRight: _paddingRight,\n cellsGap,\n onScrollHorizontal,\n virtualized = true,\n 'data-qa': dataQa = 'table-wrapper',\n children,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const headerRef = useRef<HTMLDivElement | null>(null);\n const scrollbarContainerRef = useRef<HTMLDivElement | null>(null);\n const scrollbarRef = useRef<HTMLDivElement | null>(null);\n const [headerNode, setHeaderNode] = useState<HTMLDivElement | null>(null);\n const topWithDivider = dividerTop ?? !!divider;\n const bottomWithDivider = dividerBottom ?? !!divider;\n const paddingLeft = _paddingLeft ?? padding;\n const paddingRight = _paddingRight ?? padding;\n const highlightedColor = styleHighlighted || style;\n const tintedHighlightedColor = tintedStyleHighlighted || tintedStyle;\n const topColor = topStyle || style;\n const bottomColor = bottomStyle || style;\n const [fontLoaded, setFontLoaded] = useState(false);\n const { isMobile } = useBreakpoint();\n useWhenFontLoaded(() => setFontLoaded(true));\n const { subscribeResizeHandler, unsubscribeResizeHandler } = useTableResize({\n tableRef,\n wrapperRef,\n fontLoaded,\n });\n\n const value = useMemo(\n () => ({\n headerNode,\n stickyHeader,\n paddingLeft,\n paddingRight,\n fixedSize,\n fontLoaded,\n virtualized,\n divider: !!divider,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n }),\n [\n headerNode,\n stickyHeader,\n paddingLeft,\n paddingRight,\n fixedSize,\n fontLoaded,\n divider,\n virtualized,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n ]\n );\n\n const setScrollStyles = useCallback(() => {\n if (wrapperRef.current && contentRef.current) {\n wrapperRef.current.classList.toggle(cellStyles.hasScrollLeft, contentRef.current.scrollLeft > 0);\n wrapperRef.current.classList.toggle(\n cellStyles.hasScrollRight,\n Math.round(contentRef.current.scrollLeft) + contentRef.current.offsetWidth + (paddingRight ?? 0) <\n contentRef.current.scrollWidth\n );\n }\n }, [paddingRight]);\n\n const setFakeScrollbar = useCallback(() => {\n if (scrollbarRef.current && tableRef.current && contentRef.current && scrollbarContainerRef.current) {\n if (contentRef.current.scrollWidth > contentRef.current.offsetWidth) {\n scrollbarRef.current.style.setProperty('width', `${tableRef.current.getBoundingClientRect().width}px`);\n scrollbarContainerRef.current.style.setProperty('display', 'block');\n } else {\n scrollbarRef.current.style.setProperty('width', 'auto');\n scrollbarContainerRef.current.style.setProperty('display', 'none');\n }\n }\n }, []);\n\n const calcDividersAndScrollbar = useCallback(() => {\n setScrollStyles();\n setFakeScrollbar();\n }, [setScrollStyles, setFakeScrollbar]);\n\n const handleScrollContent = useCallback(() => {\n if (headerRef.current) {\n headerRef.current.scrollLeft = contentRef.current?.scrollLeft || 0;\n }\n if (scrollbarContainerRef.current) {\n scrollbarContainerRef.current.scrollLeft = contentRef.current?.scrollLeft || 0;\n }\n setScrollStyles();\n onScrollHorizontal?.();\n }, [setScrollStyles, onScrollHorizontal]);\n\n const handleHeaderScroll = useCallback(() => {\n if (contentRef.current) {\n contentRef.current.scrollLeft = headerRef.current?.scrollLeft || 0;\n }\n if (scrollbarContainerRef.current) {\n scrollbarContainerRef.current.scrollLeft = headerRef.current?.scrollLeft || 0;\n }\n }, []);\n\n const handleScrollContainerScroll = useCallback(() => {\n if (contentRef.current) {\n contentRef.current.scrollLeft = scrollbarContainerRef.current?.scrollLeft || 0;\n }\n\n if (headerRef.current) {\n headerRef.current.scrollLeft = scrollbarContainerRef.current?.scrollLeft || 0;\n }\n }, []);\n\n const headerRefCallback: RefCallback<HTMLDivElement> = useCallback((node) => {\n if (node) {\n setHeaderNode(node);\n headerRef.current = node;\n } else {\n headerRef.current = null;\n }\n }, []);\n\n useLayoutEffect(() => {\n if (!isMobile) {\n calcDividersAndScrollbar();\n subscribeResizeHandler?.(calcDividersAndScrollbar);\n\n return () => unsubscribeResizeHandler?.(calcDividersAndScrollbar);\n }\n return void 0;\n }, [calcDividersAndScrollbar, isMobile, subscribeResizeHandler, unsubscribeResizeHandler]);\n\n const { hasVerticalScroll, verticalScrollbarProps, ...vScrollbar } = useScrollbar({\n axis: fixedSize ? 'vertical' : 'none',\n });\n const wrapperRefCallback = useMultipleRefs(wrapperRef, vScrollbar.scrollContainerRef);\n const contentRefCallback = useMultipleRefs(contentRef, vScrollbar.contentWrapperRef);\n\n const { hasHorizontalScroll, horizontalScrollbarProps, ...hScrollbar } = useScrollbar({\n axis: 'horizontal',\n offsetRight: fixedSize ? 8 : undefined,\n });\n const scrollContainerRefCallback = useMultipleRefs(scrollbarContainerRef, hScrollbar.scrollContainerRef);\n const scrollContentRefCallback = useMultipleRefs(scrollbarRef, hScrollbar.contentWrapperRef);\n\n if (isMobile) {\n return null;\n }\n\n return (\n <div\n className={classnames(styles.wrapper, DENSITY_TO_CSS[density], vScrollbar.hoverContainerCssClass, {\n [styles[`style-${style}`]]: style,\n [styles[`style-highlighted-${highlightedColor}`]]: highlightedColor,\n [styles[`tinted-style-${tintedStyle}`]]: tinted && tintedStyle,\n [styles[`tinted-style-highlighted-${tintedHighlightedColor}`]]: tinted && tintedHighlightedColor,\n [styles[`top-style-${topColor}`]]: topColor,\n [styles[`bottom-style-${bottomColor}`]]: bottomColor,\n })}\n data-qa={dataQa}\n style={\n {\n '--magritte-table-padding-left': `${paddingLeft ?? 0}px`,\n '--magritte-table-padding-right': `${paddingRight ?? 0}px`,\n ...(cellsGap ? { '--magritte-table-cell-padding': `${cellsGap / 2}px` } : {}),\n } as CSSProperties\n }\n >\n <div\n className={classnames({ [styles.scrollWrapper]: fixedSize })}\n data-magritte-table-wrapper\n ref={wrapperRefCallback}\n >\n {(topPanel || stickyHeader) && (\n <div\n className={classnames(styles.topContainer, {\n [styles.sticky]: stickyHeader,\n })}\n >\n {topPanel && (\n <div\n className={classnames(styles.topPanel, {\n [styles.withDivider]: topWithDivider,\n })}\n data-qa=\"table-top-panel\"\n style={{ paddingLeft, paddingRight }}\n >\n {topPanel}\n </div>\n )}\n {stickyHeader && (\n <div\n ref={headerRefCallback}\n onScroll={handleHeaderScroll}\n data-qa=\"table-sticky-header-root\"\n className={classnames(styles.headerContainer)}\n />\n )}\n </div>\n )}\n <TableContext.Provider value={value}>\n <div\n className={classnames(styles.container)}\n ref={contentRefCallback}\n onScroll={handleScrollContent}\n data-qa={'table-container'}\n >\n <table\n className={classnames(styles.table, {\n [styles.divider]: !!divider,\n })}\n data-qa=\"table\"\n ref={tableRef}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n {(!bottomPanel || !stickyBottom) && (\n <div className={classnames(styles.bottomContainer, styles.sticky)}>\n <div\n className={styles.scrollContainer}\n onScroll={handleScrollContainerScroll}\n ref={scrollContainerRefCallback}\n >\n <div className={styles.scrollContent} ref={scrollContentRefCallback}></div>\n </div>\n {hasHorizontalScroll && (\n <Scrollbar className={styles.horizontalScrollbar} {...horizontalScrollbarProps} />\n )}\n </div>\n )}\n {bottomPanel && (\n <div\n className={classnames(styles.bottomContainer, {\n [styles.sticky]: stickyBottom,\n })}\n >\n {stickyBottom && (\n <>\n <div\n className={styles.scrollContainer}\n onScroll={handleScrollContainerScroll}\n ref={scrollContainerRefCallback}\n >\n <div className={styles.scrollContent} ref={scrollContentRefCallback}></div>\n </div>\n {hasHorizontalScroll && (\n <Scrollbar className={styles.horizontalScrollbar} {...horizontalScrollbarProps} />\n )}\n </>\n )}\n {bottomPanel && (\n <div\n className={classnames(styles.bottomPanel, {\n [styles.withDivider]: bottomWithDivider,\n })}\n data-qa=\"table-bottom-panel\"\n style={{ paddingLeft, paddingRight }}\n >\n {bottomPanel}\n </div>\n )}\n </div>\n )}\n </div>\n {hasVerticalScroll && <Scrollbar className={styles.verticalScrollbar} {...verticalScrollbarProps} />}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["src/Table.tsx"],"sourcesContent":["import { FC, RefCallback, useCallback, useLayoutEffect, useMemo, useRef, useState, CSSProperties } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useWhenFontLoaded } from '@hh.ru/magritte-common-use-when-font-loaded';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableProps } from '@hh.ru/magritte-ui-table/types';\nimport { useTableResize } from '@hh.ru/magritte-ui-table/useTableResize';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const Table: FC<TableProps> = ({\n density = 'small',\n topPanel,\n bottomPanel,\n fixedSize,\n stickyBottom,\n stickyHeader,\n divider,\n dividerTop,\n dividerBottom,\n tinted,\n style = 'primary',\n styleHighlighted,\n tintedStyle = 'secondary',\n tintedStyleHighlighted,\n topStyle,\n bottomStyle,\n padding,\n paddingLeft: _paddingLeft,\n paddingRight: _paddingRight,\n cellsGap,\n onScrollHorizontal,\n virtualized = true,\n 'data-qa': dataQa = 'table-wrapper',\n children,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const headerRef = useRef<HTMLDivElement | null>(null);\n const scrollbarContainerRef = useRef<HTMLDivElement | null>(null);\n const scrollbarRef = useRef<HTMLDivElement | null>(null);\n const [headerNode, setHeaderNode] = useState<HTMLDivElement | null>(null);\n const topWithDivider = dividerTop ?? !!divider;\n const bottomWithDivider = dividerBottom ?? !!divider;\n const paddingLeft = _paddingLeft ?? padding;\n const paddingRight = _paddingRight ?? padding;\n const highlightedColor = styleHighlighted || style;\n const tintedHighlightedColor = tintedStyleHighlighted || tintedStyle;\n const topColor = topStyle || style;\n const bottomColor = bottomStyle || style;\n const [fontLoaded, setFontLoaded] = useState(false);\n const { isMobile } = useBreakpoint();\n useWhenFontLoaded(() => setFontLoaded(true));\n const { subscribeResizeHandler, unsubscribeResizeHandler } = useTableResize({\n tableRef,\n wrapperRef,\n fontLoaded,\n });\n\n const value = useMemo(\n () => ({\n headerNode,\n stickyHeader,\n paddingLeft,\n paddingRight,\n fixedSize,\n fontLoaded,\n virtualized,\n divider: !!divider,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n }),\n [\n headerNode,\n stickyHeader,\n paddingLeft,\n paddingRight,\n fixedSize,\n fontLoaded,\n divider,\n virtualized,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n ]\n );\n\n const setScrollStyles = useCallback(() => {\n if (wrapperRef.current && contentRef.current) {\n wrapperRef.current.classList.toggle(cellStyles.hasScrollLeft, contentRef.current.scrollLeft > 0);\n wrapperRef.current.classList.toggle(\n cellStyles.hasScrollRight,\n Math.round(contentRef.current.scrollLeft) + contentRef.current.offsetWidth + (paddingRight ?? 0) <\n contentRef.current.scrollWidth\n );\n }\n }, [paddingRight]);\n\n const setFakeScrollbar = useCallback(() => {\n if (scrollbarRef.current && tableRef.current && contentRef.current && scrollbarContainerRef.current) {\n if (contentRef.current.scrollWidth > contentRef.current.offsetWidth) {\n scrollbarRef.current.style.setProperty('width', `${tableRef.current.getBoundingClientRect().width}px`);\n scrollbarContainerRef.current.style.setProperty('display', 'block');\n } else {\n scrollbarRef.current.style.setProperty('width', 'auto');\n scrollbarContainerRef.current.style.setProperty('display', 'none');\n }\n }\n }, []);\n\n const calcDividersAndScrollbar = useCallback(() => {\n setScrollStyles();\n setFakeScrollbar();\n }, [setScrollStyles, setFakeScrollbar]);\n\n const handleScrollContent = useCallback(() => {\n if (headerRef.current) {\n headerRef.current.scrollLeft = contentRef.current?.scrollLeft || 0;\n }\n if (scrollbarContainerRef.current) {\n scrollbarContainerRef.current.scrollLeft = contentRef.current?.scrollLeft || 0;\n }\n setScrollStyles();\n onScrollHorizontal?.();\n }, [setScrollStyles, onScrollHorizontal]);\n\n const handleHeaderScroll = useCallback(() => {\n if (contentRef.current) {\n contentRef.current.scrollLeft = headerRef.current?.scrollLeft || 0;\n }\n if (scrollbarContainerRef.current) {\n scrollbarContainerRef.current.scrollLeft = headerRef.current?.scrollLeft || 0;\n }\n }, []);\n\n const handleScrollContainerScroll = useCallback(() => {\n if (contentRef.current) {\n contentRef.current.scrollLeft = scrollbarContainerRef.current?.scrollLeft || 0;\n }\n\n if (headerRef.current) {\n headerRef.current.scrollLeft = scrollbarContainerRef.current?.scrollLeft || 0;\n }\n }, []);\n\n const headerRefCallback: RefCallback<HTMLDivElement> = useCallback((node) => {\n if (node) {\n setHeaderNode(node);\n headerRef.current = node;\n } else {\n headerRef.current = null;\n }\n }, []);\n\n useLayoutEffect(() => {\n if (!isMobile) {\n calcDividersAndScrollbar();\n subscribeResizeHandler?.(calcDividersAndScrollbar);\n\n return () => unsubscribeResizeHandler?.(calcDividersAndScrollbar);\n }\n return void 0;\n }, [calcDividersAndScrollbar, isMobile, subscribeResizeHandler, unsubscribeResizeHandler]);\n\n const { hasVerticalScroll, verticalScrollbarProps, ...vScrollbar } = useScrollbar({\n axis: fixedSize ? 'vertical' : 'none',\n });\n const wrapperRefCallback = useMultipleRefs(wrapperRef, vScrollbar.scrollContainerRef);\n const contentRefCallback = useMultipleRefs(contentRef, vScrollbar.contentWrapperRef);\n\n const { hasHorizontalScroll, horizontalScrollbarProps, ...hScrollbar } = useScrollbar({\n axis: 'horizontal',\n offsetRight: fixedSize ? 8 : undefined,\n });\n const scrollContainerRefCallback = useMultipleRefs(scrollbarContainerRef, hScrollbar.scrollContainerRef);\n const scrollContentRefCallback = useMultipleRefs(scrollbarRef, hScrollbar.contentWrapperRef);\n\n if (isMobile) {\n return null;\n }\n\n return (\n <div\n className={classnames(styles.wrapper, DENSITY_TO_CSS[density], vScrollbar.hoverContainerCssClass, {\n [styles[`style-${style}`]]: style,\n [styles[`style-highlighted-${highlightedColor}`]]: highlightedColor,\n [styles[`tinted-style-${tintedStyle}`]]: tinted && tintedStyle,\n [styles[`tinted-style-highlighted-${tintedHighlightedColor}`]]: tinted && tintedHighlightedColor,\n [styles[`top-style-${topColor}`]]: topColor,\n [styles[`bottom-style-${bottomColor}`]]: bottomColor,\n })}\n data-qa={dataQa}\n style={\n {\n '--magritte-table-padding-left': `${paddingLeft ?? 0}px`,\n '--magritte-table-padding-right': `${paddingRight ?? 0}px`,\n ...(cellsGap ? { '--magritte-table-cell-padding': `${cellsGap / 2}px` } : {}),\n } as CSSProperties\n }\n >\n <div\n className={classnames({ [styles.scrollWrapper]: fixedSize })}\n data-magritte-table-wrapper\n ref={wrapperRefCallback}\n >\n {(topPanel || stickyHeader) && (\n <div\n className={classnames(styles.topContainer, {\n [styles.sticky]: stickyHeader,\n })}\n >\n {topPanel && (\n <div\n className={classnames(styles.topPanel, {\n [styles.withDivider]: topWithDivider,\n })}\n data-qa=\"table-top-panel\"\n style={{ paddingLeft, paddingRight }}\n >\n {topPanel}\n </div>\n )}\n {stickyHeader && (\n <div\n ref={headerRefCallback}\n onScroll={handleHeaderScroll}\n data-qa=\"table-sticky-header-root\"\n className={classnames(styles.headerContainer)}\n />\n )}\n </div>\n )}\n <TableContext.Provider value={value}>\n <div\n className={classnames(styles.container)}\n ref={contentRefCallback}\n onScroll={handleScrollContent}\n data-qa={'table-container'}\n >\n <table\n className={classnames(styles.table, {\n [styles.divider]: !!divider,\n })}\n data-qa=\"table\"\n ref={tableRef}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n {(!bottomPanel || !stickyBottom) && (\n <div className={classnames(styles.bottomContainer, styles.sticky)}>\n <div\n className={styles.scrollContainer}\n onScroll={handleScrollContainerScroll}\n ref={scrollContainerRefCallback}\n >\n <div className={styles.scrollContent} ref={scrollContentRefCallback}></div>\n </div>\n {hasHorizontalScroll && (\n <Scrollbar className={styles.horizontalScrollbar} {...horizontalScrollbarProps} />\n )}\n </div>\n )}\n {bottomPanel && (\n <div\n className={classnames(styles.bottomContainer, {\n [styles.sticky]: stickyBottom,\n })}\n >\n {stickyBottom && (\n <>\n <div\n className={styles.scrollContainer}\n onScroll={handleScrollContainerScroll}\n ref={scrollContainerRefCallback}\n >\n <div className={styles.scrollContent} ref={scrollContentRefCallback}></div>\n </div>\n {hasHorizontalScroll && (\n <Scrollbar className={styles.horizontalScrollbar} {...horizontalScrollbarProps} />\n )}\n </>\n )}\n {bottomPanel && (\n <div\n className={classnames(styles.bottomPanel, {\n [styles.withDivider]: bottomWithDivider,\n })}\n data-qa=\"table-bottom-panel\"\n style={{ paddingLeft, paddingRight }}\n >\n {bottomPanel}\n </div>\n )}\n </div>\n )}\n </div>\n {hasVerticalScroll && <Scrollbar className={styles.verticalScrollbar} {...verticalScrollbarProps} />}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
package/TableBody.js CHANGED
@@ -3,7 +3,7 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { useRef, useContext } from 'react';
4
4
  import { VirtualizedTableBody } from './VirtualizedTableBody.js';
5
5
  import { TableContext } from './context.js';
6
- import { s as styles } from './table-CN1ksfwX.js';
6
+ import { s as styles } from './table-CIZi3N0M.js';
7
7
  import './useTableVirtualizer.js';
8
8
  import '@tanstack/react-virtual';
9
9
 
package/TableBody.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"TableBody.js","sources":["../src/TableBody.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useRef, useContext } from 'react';\n\nimport { VirtualizedTableBody } from '@hh.ru/magritte-ui-table/VirtualizedTableBody';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\n\nimport styles from './table.less';\n\nexport const TableBody: FC<PropsWithChildren<{ 'data-qa'?: string }>> = ({\n 'data-qa': dataQa = 'table-body',\n children,\n}) => {\n const ref = useRef(null);\n const { virtualized } = useContext(TableContext);\n\n return (\n <tbody ref={ref} className={styles.body} data-qa={dataQa}>\n {virtualized ? <VirtualizedTableBody tableRef={ref}>{children}</VirtualizedTableBody> : children}\n </tbody>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;AAOO,MAAM,SAAS,GAAkD,CAAC,EACrE,SAAS,EAAE,MAAM,GAAG,YAAY,EAChC,QAAQ,GACX,KAAI;AACD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjD,IAAA,QACIA,GAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAW,SAAA,EAAA,MAAM,YACnD,WAAW,GAAGA,GAAC,CAAA,oBAAoB,EAAC,EAAA,QAAQ,EAAE,GAAG,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAwB,GAAG,QAAQ,EAAA,CAC5F,EACV;AACN;;;;"}
1
+ {"version":3,"file":"TableBody.js","sources":["src/TableBody.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useRef, useContext } from 'react';\n\nimport { VirtualizedTableBody } from '@hh.ru/magritte-ui-table/VirtualizedTableBody';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\n\nimport styles from './table.less';\n\nexport const TableBody: FC<PropsWithChildren<{ 'data-qa'?: string }>> = ({\n 'data-qa': dataQa = 'table-body',\n children,\n}) => {\n const ref = useRef(null);\n const { virtualized } = useContext(TableContext);\n\n return (\n <tbody ref={ref} className={styles.body} data-qa={dataQa}>\n {virtualized ? <VirtualizedTableBody tableRef={ref}>{children}</VirtualizedTableBody> : children}\n </tbody>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;AAOO,MAAM,SAAS,GAAkD,CAAC,EACrE,SAAS,EAAE,MAAM,GAAG,YAAY,EAChC,QAAQ,GACX,KAAI;AACD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjD,IAAA,QACIA,GAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAW,SAAA,EAAA,MAAM,YACnD,WAAW,GAAGA,GAAC,CAAA,oBAAoB,EAAC,EAAA,QAAQ,EAAE,GAAG,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAwB,GAAG,QAAQ,EAAA,CAC5F,EACV;AACN;;;;"}
package/TableCell.js CHANGED
@@ -5,8 +5,8 @@ import classnames from 'classnames';
5
5
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
6
6
  import { useLayoutContext } from '@hh.ru/magritte-ui-grid/layoutContext';
7
7
  import { TableContext } from './context.js';
8
- import { c as cellStyles } from './cell-BbdUyeIu.js';
9
- import { s as styles } from './table-CN1ksfwX.js';
8
+ import { c as cellStyles } from './cell-B7QCFHlk.js';
9
+ import { s as styles } from './table-CIZi3N0M.js';
10
10
 
11
11
  const TableCellComponent = ({ Element = 'td', m, l, xl, xxl, width, children, stickyLeft, stickyRight, align, verticalAlign, 'data-qa': dataQa = 'table-cell', ...rest }, ref) => {
12
12
  const cellRef = useRef(null);
@@ -15,7 +15,7 @@ const TableCellComponent = ({ Element = 'td', m, l, xl, xxl, width, children, st
15
15
  const extendsXL = xl ?? extendsL;
16
16
  const extendsXXL = xxl ?? extendsXL;
17
17
  const { paddingRight, fontLoaded, subscribeResizeHandler, unsubscribeResizeHandler } = useContext(TableContext);
18
- const { leftSidebarEnabled, rightSidebarEnabled } = useLayoutContext();
18
+ const { sidebarEnabled, showSidebarFrom } = useLayoutContext();
19
19
  const calcCoordinates = useCallback(() => {
20
20
  if (cellRef.current && cellRef.current.parentElement) {
21
21
  cellRef.current.style.removeProperty('left');
@@ -51,8 +51,7 @@ const TableCellComponent = ({ Element = 'td', m, l, xl, xxl, width, children, st
51
51
  [cellStyles[`cell_l-${extendsL}`]]: extendsL,
52
52
  [cellStyles[`cell_xl-${extendsXL}`]]: extendsXL,
53
53
  [cellStyles[`cell_xxl-${extendsXXL}`]]: extendsXXL,
54
- [cellStyles.withLeftSidebar]: leftSidebarEnabled,
55
- [cellStyles.withRightSidebar]: rightSidebarEnabled,
54
+ [cellStyles[`with-sidebar-from-${showSidebarFrom}`]]: sidebarEnabled,
56
55
  [cellStyles.sticky]: stickyLeft || stickyRight,
57
56
  [cellStyles.stickyLeft]: stickyLeft,
58
57
  [cellStyles.stickyRight]: stickyRight,
package/TableCell.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"TableCell.js","sources":["../src/TableCell.tsx"],"sourcesContent":["import { PropsWithChildren, useCallback, useContext, useLayoutEffect, useRef, forwardRef, ForwardedRef } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useLayoutContext } from '@hh.ru/magritte-ui-grid/layoutContext';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableCellProps } from '@hh.ru/magritte-ui-table/types';\n\nimport styles from './cell.less';\nimport tableStyles from './table.less';\n\nconst TableCellComponent = (\n {\n Element = 'td',\n m,\n l,\n xl,\n xxl,\n width,\n children,\n stickyLeft,\n stickyRight,\n align,\n verticalAlign,\n 'data-qa': dataQa = 'table-cell',\n ...rest\n }: PropsWithChildren<TableCellProps>,\n ref: ForwardedRef<HTMLTableCellElement>\n) => {\n const cellRef = useRef<HTMLTableCellElement>(null);\n const multiRef = useMultipleRefs(ref, cellRef);\n const extendsL = l ?? m;\n const extendsXL = xl ?? extendsL;\n const extendsXXL = xxl ?? extendsXL;\n const { paddingRight, fontLoaded, subscribeResizeHandler, unsubscribeResizeHandler } = useContext(TableContext);\n const { leftSidebarEnabled, rightSidebarEnabled } = useLayoutContext();\n\n const calcCoordinates = useCallback(() => {\n if (cellRef.current && cellRef.current.parentElement) {\n cellRef.current.style.removeProperty('left');\n cellRef.current.style.removeProperty('right');\n const { left: parentLeft, right: parentRight } = cellRef.current.parentElement.getBoundingClientRect();\n const { right, left } = cellRef.current.getBoundingClientRect();\n if (stickyLeft) {\n cellRef.current.style.setProperty('left', `${left - parentLeft}px`);\n }\n\n if (stickyRight && cellRef.current.parentElement) {\n cellRef.current.style.setProperty('right', `${parentRight - right - (paddingRight ?? 0)}px`);\n }\n }\n }, [paddingRight, stickyRight, stickyLeft]);\n\n useLayoutEffect(() => {\n if (fontLoaded && (stickyLeft || stickyRight)) {\n calcCoordinates();\n subscribeResizeHandler?.(calcCoordinates);\n\n return () => unsubscribeResizeHandler?.(calcCoordinates);\n }\n\n return void 0;\n }, [\n stickyRight,\n stickyLeft,\n fontLoaded,\n paddingRight,\n calcCoordinates,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n ]);\n\n return (\n <Element\n {...rest}\n data-qa={dataQa}\n data-magritte-table-cell\n className={classnames(styles.cell, tableStyles.td, {\n [styles[`cell_m-${m}`]]: m,\n [styles[`cell_l-${extendsL}`]]: extendsL,\n [styles[`cell_xl-${extendsXL}`]]: extendsXL,\n [styles[`cell_xxl-${extendsXXL}`]]: extendsXXL,\n [styles.withLeftSidebar]: leftSidebarEnabled,\n [styles.withRightSidebar]: rightSidebarEnabled,\n [styles.sticky]: stickyLeft || stickyRight,\n [styles.stickyLeft]: stickyLeft,\n [styles.stickyRight]: stickyRight,\n })}\n ref={multiRef}\n style={{\n textAlign: align,\n verticalAlign,\n width,\n maxWidth: width,\n }}\n >\n {children}\n </Element>\n );\n};\nexport const TableCell = forwardRef(TableCellComponent);\n"],"names":["_jsx","styles","tableStyles"],"mappings":"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"}
1
+ {"version":3,"file":"TableCell.js","sources":["src/TableCell.tsx"],"sourcesContent":["import { PropsWithChildren, useCallback, useContext, useLayoutEffect, useRef, forwardRef, ForwardedRef } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useLayoutContext } from '@hh.ru/magritte-ui-grid/layoutContext';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableCellProps } from '@hh.ru/magritte-ui-table/types';\n\nimport styles from './cell.less';\nimport tableStyles from './table.less';\n\nconst TableCellComponent = (\n {\n Element = 'td',\n m,\n l,\n xl,\n xxl,\n width,\n children,\n stickyLeft,\n stickyRight,\n align,\n verticalAlign,\n 'data-qa': dataQa = 'table-cell',\n ...rest\n }: PropsWithChildren<TableCellProps>,\n ref: ForwardedRef<HTMLTableCellElement>\n) => {\n const cellRef = useRef<HTMLTableCellElement>(null);\n const multiRef = useMultipleRefs(ref, cellRef);\n const extendsL = l ?? m;\n const extendsXL = xl ?? extendsL;\n const extendsXXL = xxl ?? extendsXL;\n const { paddingRight, fontLoaded, subscribeResizeHandler, unsubscribeResizeHandler } = useContext(TableContext);\n const { sidebarEnabled, showSidebarFrom } = useLayoutContext();\n\n const calcCoordinates = useCallback(() => {\n if (cellRef.current && cellRef.current.parentElement) {\n cellRef.current.style.removeProperty('left');\n cellRef.current.style.removeProperty('right');\n const { left: parentLeft, right: parentRight } = cellRef.current.parentElement.getBoundingClientRect();\n const { right, left } = cellRef.current.getBoundingClientRect();\n if (stickyLeft) {\n cellRef.current.style.setProperty('left', `${left - parentLeft}px`);\n }\n\n if (stickyRight && cellRef.current.parentElement) {\n cellRef.current.style.setProperty('right', `${parentRight - right - (paddingRight ?? 0)}px`);\n }\n }\n }, [paddingRight, stickyRight, stickyLeft]);\n\n useLayoutEffect(() => {\n if (fontLoaded && (stickyLeft || stickyRight)) {\n calcCoordinates();\n subscribeResizeHandler?.(calcCoordinates);\n\n return () => unsubscribeResizeHandler?.(calcCoordinates);\n }\n\n return void 0;\n }, [\n stickyRight,\n stickyLeft,\n fontLoaded,\n paddingRight,\n calcCoordinates,\n subscribeResizeHandler,\n unsubscribeResizeHandler,\n ]);\n\n return (\n <Element\n {...rest}\n data-qa={dataQa}\n data-magritte-table-cell\n className={classnames(styles.cell, tableStyles.td, {\n [styles[`cell_m-${m}`]]: m,\n [styles[`cell_l-${extendsL}`]]: extendsL,\n [styles[`cell_xl-${extendsXL}`]]: extendsXL,\n [styles[`cell_xxl-${extendsXXL}`]]: extendsXXL,\n [styles[`with-sidebar-from-${showSidebarFrom}`]]: sidebarEnabled,\n [styles.sticky]: stickyLeft || stickyRight,\n [styles.stickyLeft]: stickyLeft,\n [styles.stickyRight]: stickyRight,\n })}\n ref={multiRef}\n style={{\n textAlign: align,\n verticalAlign,\n width,\n maxWidth: width,\n }}\n >\n {children}\n </Element>\n );\n};\nexport const TableCell = forwardRef(TableCellComponent);\n"],"names":["_jsx","styles","tableStyles"],"mappings":"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"}
package/TableHeader.js CHANGED
@@ -4,9 +4,9 @@ import { useRef, useContext } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { StickyTableHeader } from './StickyTableHeader.js';
6
6
  import { TableContext } from './context.js';
7
- import { s as styles } from './table-CN1ksfwX.js';
7
+ import { s as styles } from './table-CIZi3N0M.js';
8
8
  import 'react-dom';
9
- import './cell-BbdUyeIu.js';
9
+ import './cell-B7QCFHlk.js';
10
10
 
11
11
  const DENSITY_TO_CSS = {
12
12
  'extra-small': styles.densityExtraSmall,
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sources":["../src/TableHeader.tsx"],"sourcesContent":["import { FC, useContext, useRef } from 'react';\nimport classnames from 'classnames';\n\nimport { StickyTableHeader } from '@hh.ru/magritte-ui-table/StickyTableHeader';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableHeaderProps } from '@hh.ru/magritte-ui-table/types';\n\nimport styles from './table.less';\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const TableHeader: FC<TableHeaderProps> = ({\n divider,\n density = 'small',\n 'data-qa': dataQa = 'table-header',\n children,\n}) => {\n const theadRef = useRef<HTMLTableSectionElement>(null);\n const tableContext = useContext(TableContext);\n const withDivider = divider ?? tableContext.divider;\n\n return (\n <>\n <thead\n ref={theadRef}\n className={classnames(styles.header, DENSITY_TO_CSS[density], {\n [styles.withDivider]: !!withDivider,\n })}\n data-qa={dataQa}\n >\n {children}\n </thead>\n {tableContext.stickyHeader && tableContext.headerNode && (\n <StickyTableHeader\n root={tableContext.headerNode}\n headerRef={theadRef}\n divider={withDivider}\n density={density}\n >\n {children}\n </StickyTableHeader>\n )}\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;AASA,MAAM,cAAc,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC,iBAAiB;IACvC,KAAK,EAAE,MAAM,CAAC,YAAY;IAC1B,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,YAAY;CAC7B,CAAC;MAEW,WAAW,GAAyB,CAAC,EAC9C,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,SAAS,EAAE,MAAM,GAAG,cAAc,EAClC,QAAQ,GACX,KAAI;AACD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;AACvD,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAA,MAAM,WAAW,GAAG,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC;AAEpD,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAA,OAAA,EAAA,EACI,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;AAC1D,oBAAA,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;AACtC,iBAAA,CAAC,aACO,MAAM,EAAA,QAAA,EAEd,QAAQ,EACL,CAAA,EACP,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,KACjDA,GAAC,CAAA,iBAAiB,IACd,IAAI,EAAE,YAAY,CAAC,UAAU,EAC7B,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAEf,QAAA,EAAA,QAAQ,GACO,CACvB,CAAA,EAAA,CACF,EACL;AACN;;;;"}
1
+ {"version":3,"file":"TableHeader.js","sources":["src/TableHeader.tsx"],"sourcesContent":["import { FC, useContext, useRef } from 'react';\nimport classnames from 'classnames';\n\nimport { StickyTableHeader } from '@hh.ru/magritte-ui-table/StickyTableHeader';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableHeaderProps } from '@hh.ru/magritte-ui-table/types';\n\nimport styles from './table.less';\n\nconst DENSITY_TO_CSS = {\n 'extra-small': styles.densityExtraSmall,\n small: styles.densitySmall,\n medium: styles.densityMedium,\n large: styles.densityLarge,\n};\n\nexport const TableHeader: FC<TableHeaderProps> = ({\n divider,\n density = 'small',\n 'data-qa': dataQa = 'table-header',\n children,\n}) => {\n const theadRef = useRef<HTMLTableSectionElement>(null);\n const tableContext = useContext(TableContext);\n const withDivider = divider ?? tableContext.divider;\n\n return (\n <>\n <thead\n ref={theadRef}\n className={classnames(styles.header, DENSITY_TO_CSS[density], {\n [styles.withDivider]: !!withDivider,\n })}\n data-qa={dataQa}\n >\n {children}\n </thead>\n {tableContext.stickyHeader && tableContext.headerNode && (\n <StickyTableHeader\n root={tableContext.headerNode}\n headerRef={theadRef}\n divider={withDivider}\n density={density}\n >\n {children}\n </StickyTableHeader>\n )}\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;AASA,MAAM,cAAc,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC,iBAAiB;IACvC,KAAK,EAAE,MAAM,CAAC,YAAY;IAC1B,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,YAAY;CAC7B,CAAC;MAEW,WAAW,GAAyB,CAAC,EAC9C,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,SAAS,EAAE,MAAM,GAAG,cAAc,EAClC,QAAQ,GACX,KAAI;AACD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;AACvD,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAA,MAAM,WAAW,GAAG,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC;AAEpD,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAA,OAAA,EAAA,EACI,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;AAC1D,oBAAA,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;AACtC,iBAAA,CAAC,aACO,MAAM,EAAA,QAAA,EAEd,QAAQ,EACL,CAAA,EACP,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,KACjDA,GAAC,CAAA,iBAAiB,IACd,IAAI,EAAE,YAAY,CAAC,UAAU,EAC7B,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAEf,QAAA,EAAA,QAAQ,GACO,CACvB,CAAA,EAAA,CACF,EACL;AACN;;;;"}
package/TableRow.js CHANGED
@@ -4,8 +4,8 @@ import { forwardRef, useContext, useRef, useEffect } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
6
6
  import { TableContext } from './context.js';
7
- import { c as cellStyles } from './cell-BbdUyeIu.js';
8
- import { s as styles } from './table-CN1ksfwX.js';
7
+ import { c as cellStyles } from './cell-B7QCFHlk.js';
8
+ import { s as styles } from './table-CIZi3N0M.js';
9
9
 
10
10
  const TableRowComponent = ({ style, styleHighlighted, action, showAction, animated, onClick, panel, showPanel, children, measure, align, verticalAlign = 'top', 'data-qa': dataQa = 'table-row', ...rest }, ref) => {
11
11
  const { paddingLeft, paddingRight } = useContext(TableContext);
package/TableRow.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sources":["../src/TableRow.tsx"],"sourcesContent":["import React, { type ForwardedRef, forwardRef, useContext, useEffect, useRef } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableRowProps } from '@hh.ru/magritte-ui-table/types';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\nconst TableRowComponent = (\n {\n style,\n styleHighlighted,\n action,\n showAction,\n animated,\n onClick,\n panel,\n showPanel,\n children,\n measure,\n align,\n verticalAlign = 'top',\n 'data-qa': dataQa = 'table-row',\n ...rest\n }: TableRowProps,\n ref: ForwardedRef<HTMLTableRowElement>\n) => {\n const { paddingLeft, paddingRight } = useContext(TableContext);\n const highlightedColor = styleHighlighted || style;\n const wasPanelShown = useRef<boolean | null>(null);\n const rowRef = useRef(null);\n const multiRef = useMultipleRefs(ref, rowRef);\n\n useEffect(() => {\n if (wasPanelShown.current === null) {\n wasPanelShown.current = !!(panel && showPanel);\n return;\n }\n\n if (wasPanelShown.current !== !!(panel && showPanel)) {\n wasPanelShown.current = !!(panel && showPanel);\n rowRef.current && measure?.(rowRef.current);\n }\n }, [panel, showPanel, measure]);\n\n return (\n <>\n <tr\n {...rest}\n className={classnames(styles.row, {\n [styles.active]: !!onClick,\n [styles.animated]: animated,\n [styles.withPanel]: showPanel && panel,\n [styles[`style-${style}`]]: style,\n [styles[`style-highlighted-${highlightedColor}`]]: highlightedColor,\n })}\n onClick={onClick}\n ref={multiRef}\n data-qa={dataQa}\n style={{\n textAlign: align,\n verticalAlign,\n }}\n >\n {!!paddingLeft && (\n <td\n className={classnames(cellStyles.spaceCell, cellStyles.pinned, styles.td)}\n data-qa=\"table-row-left-space\"\n style={{ width: paddingLeft }}\n >\n {showAction && action && <div className={cellStyles.control}>{action}</div>}\n </td>\n )}\n {children}\n {!!paddingRight && (\n <td\n className={classnames(cellStyles.spaceCell, styles.td)}\n data-qa=\"table-row-right-space\"\n style={{ width: paddingRight }}\n ></td>\n )}\n </tr>\n {panel && showPanel && (\n <tr\n data-qa={`${dataQa}-panel`}\n data-magritte-table-row-panel\n className={classnames(styles.row, styles.rowPanel, styles.animated)}\n style={{\n textAlign: align,\n }}\n >\n {!!paddingLeft && (\n <td\n className={classnames(cellStyles.spaceCell, cellStyles.pinned, styles.td)}\n data-qa=\"table-row-left-space\"\n style={{ width: paddingLeft }}\n ></td>\n )}\n {panel}\n {!!paddingRight && (\n <td\n className={classnames(cellStyles.spaceCell, styles.td)}\n data-qa=\"table-row-right-space\"\n style={{ width: paddingRight }}\n ></td>\n )}\n </tr>\n )}\n </>\n );\n};\n\nexport const TableRow = forwardRef(TableRowComponent);\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"TableRow.js","sources":["src/TableRow.tsx"],"sourcesContent":["import React, { type ForwardedRef, forwardRef, useContext, useEffect, useRef } from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { TableRowProps } from '@hh.ru/magritte-ui-table/types';\n\nimport cellStyles from './cell.less';\nimport styles from './table.less';\n\nconst TableRowComponent = (\n {\n style,\n styleHighlighted,\n action,\n showAction,\n animated,\n onClick,\n panel,\n showPanel,\n children,\n measure,\n align,\n verticalAlign = 'top',\n 'data-qa': dataQa = 'table-row',\n ...rest\n }: TableRowProps,\n ref: ForwardedRef<HTMLTableRowElement>\n) => {\n const { paddingLeft, paddingRight } = useContext(TableContext);\n const highlightedColor = styleHighlighted || style;\n const wasPanelShown = useRef<boolean | null>(null);\n const rowRef = useRef(null);\n const multiRef = useMultipleRefs(ref, rowRef);\n\n useEffect(() => {\n if (wasPanelShown.current === null) {\n wasPanelShown.current = !!(panel && showPanel);\n return;\n }\n\n if (wasPanelShown.current !== !!(panel && showPanel)) {\n wasPanelShown.current = !!(panel && showPanel);\n rowRef.current && measure?.(rowRef.current);\n }\n }, [panel, showPanel, measure]);\n\n return (\n <>\n <tr\n {...rest}\n className={classnames(styles.row, {\n [styles.active]: !!onClick,\n [styles.animated]: animated,\n [styles.withPanel]: showPanel && panel,\n [styles[`style-${style}`]]: style,\n [styles[`style-highlighted-${highlightedColor}`]]: highlightedColor,\n })}\n onClick={onClick}\n ref={multiRef}\n data-qa={dataQa}\n style={{\n textAlign: align,\n verticalAlign,\n }}\n >\n {!!paddingLeft && (\n <td\n className={classnames(cellStyles.spaceCell, cellStyles.pinned, styles.td)}\n data-qa=\"table-row-left-space\"\n style={{ width: paddingLeft }}\n >\n {showAction && action && <div className={cellStyles.control}>{action}</div>}\n </td>\n )}\n {children}\n {!!paddingRight && (\n <td\n className={classnames(cellStyles.spaceCell, styles.td)}\n data-qa=\"table-row-right-space\"\n style={{ width: paddingRight }}\n ></td>\n )}\n </tr>\n {panel && showPanel && (\n <tr\n data-qa={`${dataQa}-panel`}\n data-magritte-table-row-panel\n className={classnames(styles.row, styles.rowPanel, styles.animated)}\n style={{\n textAlign: align,\n }}\n >\n {!!paddingLeft && (\n <td\n className={classnames(cellStyles.spaceCell, cellStyles.pinned, styles.td)}\n data-qa=\"table-row-left-space\"\n style={{ width: paddingLeft }}\n ></td>\n )}\n {panel}\n {!!paddingRight && (\n <td\n className={classnames(cellStyles.spaceCell, styles.td)}\n data-qa=\"table-row-right-space\"\n style={{ width: paddingRight }}\n ></td>\n )}\n </tr>\n )}\n </>\n );\n};\n\nexport const TableRow = forwardRef(TableRowComponent);\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedTableBody.js","sources":["../src/VirtualizedTableBody.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n FC,\n isValidElement,\n PropsWithChildren,\n ReactElement,\n RefObject,\n useContext,\n} from 'react';\n\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { useTableVirtualizer } from '@hh.ru/magritte-ui-table/useTableVirtualizer';\n\nexport const VirtualizedTableBody: FC<PropsWithChildren<{ tableRef: RefObject<HTMLElement> }>> = ({\n tableRef,\n children,\n}) => {\n const childArray = Children.toArray(children).filter<ReactElement>((e): e is ReactElement => isValidElement(e));\n const { fixedSize } = useContext(TableContext);\n const virtualizer = useTableVirtualizer({\n count: childArray.length,\n isScrollContainer: !!fixedSize,\n tableBodyRef: tableRef,\n });\n const items = virtualizer.getVirtualItems();\n const [paddingTop, paddingBottom] =\n items.length > 0 && virtualizer\n ? [\n Math.max(0, items[0].start - virtualizer.options.scrollMargin),\n Math.max(\n 0,\n virtualizer.getTotalSize() - (items[items.length - 1].end - virtualizer.options.scrollMargin)\n ),\n ]\n : [0, 0];\n\n return (\n <>\n {paddingTop > 0 && <tr style={{ height: paddingTop }}></tr>}\n {virtualizer.getVirtualItems().map((virtualItem) => {\n return cloneElement(childArray[virtualItem.index], {\n key: virtualItem.key,\n 'data-index': virtualItem.index,\n ref: virtualItem.measureElement,\n measure: virtualItem.measureElement,\n });\n })}\n {paddingBottom > 0 && <tr style={{ height: paddingBottom }}></tr>}\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;AAca,MAAA,oBAAoB,GAAgE,CAAC,EAC9F,QAAQ,EACR,QAAQ,GACX,KAAI;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAe,CAAC,CAAC,KAAwB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,mBAAmB,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,iBAAiB,EAAE,CAAC,CAAC,SAAS;AAC9B,QAAA,YAAY,EAAE,QAAQ;AACzB,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;AAC5C,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAC7B,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW;AAC3B,UAAE;AACI,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9D,YAAA,IAAI,CAAC,GAAG,CACJ,CAAC,EACD,WAAW,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAChG;AACJ,SAAA;AACH,UAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjB,QACIA,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAU,GAAG,CAAC,IAAIC,GAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAO,CAAA,EAC1D,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;gBAC/C,OAAO,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBAC/C,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,YAAY,EAAE,WAAW,CAAC,KAAK;oBAC/B,GAAG,EAAE,WAAW,CAAC,cAAc;oBAC/B,OAAO,EAAE,WAAW,CAAC,cAAc;AACtC,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,EACD,aAAa,GAAG,CAAC,IAAIA,GAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAO,CAAA,CAAA,EAAA,CAClE,EACL;AACN;;;;"}
1
+ {"version":3,"file":"VirtualizedTableBody.js","sources":["src/VirtualizedTableBody.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n FC,\n isValidElement,\n PropsWithChildren,\n ReactElement,\n RefObject,\n useContext,\n} from 'react';\n\nimport { TableContext } from '@hh.ru/magritte-ui-table/context';\nimport { useTableVirtualizer } from '@hh.ru/magritte-ui-table/useTableVirtualizer';\n\nexport const VirtualizedTableBody: FC<PropsWithChildren<{ tableRef: RefObject<HTMLElement> }>> = ({\n tableRef,\n children,\n}) => {\n const childArray = Children.toArray(children).filter<ReactElement>((e): e is ReactElement => isValidElement(e));\n const { fixedSize } = useContext(TableContext);\n const virtualizer = useTableVirtualizer({\n count: childArray.length,\n isScrollContainer: !!fixedSize,\n tableBodyRef: tableRef,\n });\n const items = virtualizer.getVirtualItems();\n const [paddingTop, paddingBottom] =\n items.length > 0 && virtualizer\n ? [\n Math.max(0, items[0].start - virtualizer.options.scrollMargin),\n Math.max(\n 0,\n virtualizer.getTotalSize() - (items[items.length - 1].end - virtualizer.options.scrollMargin)\n ),\n ]\n : [0, 0];\n\n return (\n <>\n {paddingTop > 0 && <tr style={{ height: paddingTop }}></tr>}\n {virtualizer.getVirtualItems().map((virtualItem) => {\n return cloneElement(childArray[virtualItem.index], {\n key: virtualItem.key,\n 'data-index': virtualItem.index,\n ref: virtualItem.measureElement,\n measure: virtualItem.measureElement,\n });\n })}\n {paddingBottom > 0 && <tr style={{ height: paddingBottom }}></tr>}\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;AAca,MAAA,oBAAoB,GAAgE,CAAC,EAC9F,QAAQ,EACR,QAAQ,GACX,KAAI;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAe,CAAC,CAAC,KAAwB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,mBAAmB,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,iBAAiB,EAAE,CAAC,CAAC,SAAS;AAC9B,QAAA,YAAY,EAAE,QAAQ;AACzB,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;AAC5C,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAC7B,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW;AAC3B,UAAE;AACI,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9D,YAAA,IAAI,CAAC,GAAG,CACJ,CAAC,EACD,WAAW,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAChG;AACJ,SAAA;AACH,UAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjB,QACIA,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAU,GAAG,CAAC,IAAIC,GAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAO,CAAA,EAC1D,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;gBAC/C,OAAO,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBAC/C,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,YAAY,EAAE,WAAW,CAAC,KAAK;oBAC/B,GAAG,EAAE,WAAW,CAAC,cAAc;oBAC/B,OAAO,EAAE,WAAW,CAAC,cAAc;AACtC,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,EACD,aAAa,GAAG,CAAC,IAAIA,GAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAO,CAAA,CAAA,EAAA,CAClE,EACL;AACN;;;;"}
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var cellStyles = {"cell":"magritte-cell___9SN-h_3-2-4","space-cell":"magritte-space-cell___FEzuM_3-2-4","spaceCell":"magritte-space-cell___FEzuM_3-2-4","pinned":"magritte-pinned___45ssa_3-2-4","control":"magritte-control___zooF6_3-2-4","sticky":"magritte-sticky___-VZrW_3-2-4","duplicate-table":"magritte-duplicate-table___5UfjM_3-2-4","duplicateTable":"magritte-duplicate-table___5UfjM_3-2-4","cell_m-1":"magritte-cell_m-1___hXvsr_3-2-4","cellM1":"magritte-cell_m-1___hXvsr_3-2-4","cell_m-2":"magritte-cell_m-2___ACrWd_3-2-4","cellM2":"magritte-cell_m-2___ACrWd_3-2-4","cell_m-3":"magritte-cell_m-3___gYLFS_3-2-4","cellM3":"magritte-cell_m-3___gYLFS_3-2-4","cell_m-4":"magritte-cell_m-4___abIIK_3-2-4","cellM4":"magritte-cell_m-4___abIIK_3-2-4","cell_m-5":"magritte-cell_m-5___KnqH6_3-2-4","cellM5":"magritte-cell_m-5___KnqH6_3-2-4","cell_m-6":"magritte-cell_m-6___o95mb_3-2-4","cellM6":"magritte-cell_m-6___o95mb_3-2-4","cell_m-7":"magritte-cell_m-7___DEaIG_3-2-4","cellM7":"magritte-cell_m-7___DEaIG_3-2-4","cell_m-8":"magritte-cell_m-8___TGFI7_3-2-4","cellM8":"magritte-cell_m-8___TGFI7_3-2-4","cell_m-9":"magritte-cell_m-9___yiGBE_3-2-4","cellM9":"magritte-cell_m-9___yiGBE_3-2-4","cell_m-10":"magritte-cell_m-10___tU-P9_3-2-4","cellM10":"magritte-cell_m-10___tU-P9_3-2-4","cell_m-11":"magritte-cell_m-11___Wls8v_3-2-4","cellM11":"magritte-cell_m-11___Wls8v_3-2-4","cell_m-12":"magritte-cell_m-12___QtJUR_3-2-4","cellM12":"magritte-cell_m-12___QtJUR_3-2-4","with-sidebar-from-m":"magritte-with-sidebar-from-m___-CXQh_3-2-4","withSidebarFromM":"magritte-with-sidebar-from-m___-CXQh_3-2-4","cell_l-1":"magritte-cell_l-1___08WTv_3-2-4","cellL1":"magritte-cell_l-1___08WTv_3-2-4","cell_l-2":"magritte-cell_l-2___3Egzi_3-2-4","cellL2":"magritte-cell_l-2___3Egzi_3-2-4","cell_l-3":"magritte-cell_l-3___8CURS_3-2-4","cellL3":"magritte-cell_l-3___8CURS_3-2-4","cell_l-4":"magritte-cell_l-4___4bGq1_3-2-4","cellL4":"magritte-cell_l-4___4bGq1_3-2-4","cell_l-5":"magritte-cell_l-5___2LvKm_3-2-4","cellL5":"magritte-cell_l-5___2LvKm_3-2-4","cell_l-6":"magritte-cell_l-6___ICN-G_3-2-4","cellL6":"magritte-cell_l-6___ICN-G_3-2-4","cell_l-7":"magritte-cell_l-7___1IyZf_3-2-4","cellL7":"magritte-cell_l-7___1IyZf_3-2-4","cell_l-8":"magritte-cell_l-8___KYB-a_3-2-4","cellL8":"magritte-cell_l-8___KYB-a_3-2-4","cell_l-9":"magritte-cell_l-9___CeTym_3-2-4","cellL9":"magritte-cell_l-9___CeTym_3-2-4","cell_l-10":"magritte-cell_l-10___acKEl_3-2-4","cellL10":"magritte-cell_l-10___acKEl_3-2-4","cell_l-11":"magritte-cell_l-11___VKWNT_3-2-4","cellL11":"magritte-cell_l-11___VKWNT_3-2-4","cell_l-12":"magritte-cell_l-12___SHHVR_3-2-4","cellL12":"magritte-cell_l-12___SHHVR_3-2-4","with-sidebar-from-l":"magritte-with-sidebar-from-l___9PLNP_3-2-4","withSidebarFromL":"magritte-with-sidebar-from-l___9PLNP_3-2-4","cell_xl-1":"magritte-cell_xl-1___d-7Mu_3-2-4","cellXl1":"magritte-cell_xl-1___d-7Mu_3-2-4","cell_xl-2":"magritte-cell_xl-2___0v1mr_3-2-4","cellXl2":"magritte-cell_xl-2___0v1mr_3-2-4","cell_xl-3":"magritte-cell_xl-3___dGaO8_3-2-4","cellXl3":"magritte-cell_xl-3___dGaO8_3-2-4","cell_xl-4":"magritte-cell_xl-4___XyiBZ_3-2-4","cellXl4":"magritte-cell_xl-4___XyiBZ_3-2-4","cell_xl-5":"magritte-cell_xl-5___Wzntx_3-2-4","cellXl5":"magritte-cell_xl-5___Wzntx_3-2-4","cell_xl-6":"magritte-cell_xl-6___cppOO_3-2-4","cellXl6":"magritte-cell_xl-6___cppOO_3-2-4","cell_xl-7":"magritte-cell_xl-7___z-rPX_3-2-4","cellXl7":"magritte-cell_xl-7___z-rPX_3-2-4","cell_xl-8":"magritte-cell_xl-8___uYKvC_3-2-4","cellXl8":"magritte-cell_xl-8___uYKvC_3-2-4","cell_xl-9":"magritte-cell_xl-9___Re651_3-2-4","cellXl9":"magritte-cell_xl-9___Re651_3-2-4","cell_xl-10":"magritte-cell_xl-10___-RKb4_3-2-4","cellXl10":"magritte-cell_xl-10___-RKb4_3-2-4","cell_xl-11":"magritte-cell_xl-11___Lmnus_3-2-4","cellXl11":"magritte-cell_xl-11___Lmnus_3-2-4","cell_xl-12":"magritte-cell_xl-12___14HGy_3-2-4","cellXl12":"magritte-cell_xl-12___14HGy_3-2-4","with-sidebar-from-xl":"magritte-with-sidebar-from-xl___mHiwg_3-2-4","withSidebarFromXl":"magritte-with-sidebar-from-xl___mHiwg_3-2-4","cell_xxl-1":"magritte-cell_xxl-1___Jhugp_3-2-4","cellXxl1":"magritte-cell_xxl-1___Jhugp_3-2-4","cell_xxl-2":"magritte-cell_xxl-2___TEKj-_3-2-4","cellXxl2":"magritte-cell_xxl-2___TEKj-_3-2-4","cell_xxl-3":"magritte-cell_xxl-3___V-OWy_3-2-4","cellXxl3":"magritte-cell_xxl-3___V-OWy_3-2-4","cell_xxl-4":"magritte-cell_xxl-4___NDlag_3-2-4","cellXxl4":"magritte-cell_xxl-4___NDlag_3-2-4","cell_xxl-5":"magritte-cell_xxl-5___4caIu_3-2-4","cellXxl5":"magritte-cell_xxl-5___4caIu_3-2-4","cell_xxl-6":"magritte-cell_xxl-6___al5Oz_3-2-4","cellXxl6":"magritte-cell_xxl-6___al5Oz_3-2-4","cell_xxl-7":"magritte-cell_xxl-7___40epc_3-2-4","cellXxl7":"magritte-cell_xxl-7___40epc_3-2-4","cell_xxl-8":"magritte-cell_xxl-8___7jbSF_3-2-4","cellXxl8":"magritte-cell_xxl-8___7jbSF_3-2-4","cell_xxl-9":"magritte-cell_xxl-9___cANRv_3-2-4","cellXxl9":"magritte-cell_xxl-9___cANRv_3-2-4","cell_xxl-10":"magritte-cell_xxl-10___Wxan9_3-2-4","cellXxl10":"magritte-cell_xxl-10___Wxan9_3-2-4","cell_xxl-11":"magritte-cell_xxl-11___tPewy_3-2-4","cellXxl11":"magritte-cell_xxl-11___tPewy_3-2-4","cell_xxl-12":"magritte-cell_xxl-12___AviUH_3-2-4","cellXxl12":"magritte-cell_xxl-12___AviUH_3-2-4","with-sidebar-from-xxl":"magritte-with-sidebar-from-xxl___EMLcq_3-2-4","withSidebarFromXxl":"magritte-with-sidebar-from-xxl___EMLcq_3-2-4","has-scroll-left":"magritte-has-scroll-left___dEeNV_3-2-4","hasScrollLeft":"magritte-has-scroll-left___dEeNV_3-2-4","sticky-left":"magritte-sticky-left___r-bgc_3-2-4","stickyLeft":"magritte-sticky-left___r-bgc_3-2-4","has-scroll-right":"magritte-has-scroll-right___-eu5N_3-2-4","hasScrollRight":"magritte-has-scroll-right___-eu5N_3-2-4","sticky-right":"magritte-sticky-right___-ocur_3-2-4","stickyRight":"magritte-sticky-right___-ocur_3-2-4"};
3
+
4
+ export { cellStyles as c };
5
+ //# sourceMappingURL=cell-B7QCFHlk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-B7QCFHlk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
package/context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../src/context.tsx"],"sourcesContent":["import { createContext } from 'react';\n\ntype Subscription = () => void;\n\nexport interface TableContextProps {\n headerNode: HTMLDivElement | null;\n stickyHeader?: boolean;\n divider?: boolean;\n paddingLeft?: number;\n paddingRight?: number;\n fixedSize?: boolean;\n fontLoaded: boolean;\n virtualized?: boolean;\n subscribeResizeHandler?: (e: Subscription, index?: number) => void;\n unsubscribeResizeHandler?: (e: Subscription) => void;\n}\n\nexport const TableContext = createContext<TableContextProps>({\n headerNode: null,\n fontLoaded: false,\n});\n"],"names":[],"mappings":";;AAiBO,MAAM,YAAY,GAAG,aAAa,CAAoB;AACzD,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,UAAU,EAAE,KAAK;AACpB,CAAA;;;;"}
1
+ {"version":3,"file":"context.js","sources":["src/context.tsx"],"sourcesContent":["import { createContext } from 'react';\n\ntype Subscription = () => void;\n\nexport interface TableContextProps {\n headerNode: HTMLDivElement | null;\n stickyHeader?: boolean;\n divider?: boolean;\n paddingLeft?: number;\n paddingRight?: number;\n fixedSize?: boolean;\n fontLoaded: boolean;\n virtualized?: boolean;\n subscribeResizeHandler?: (e: Subscription, index?: number) => void;\n unsubscribeResizeHandler?: (e: Subscription) => void;\n}\n\nexport const TableContext = createContext<TableContextProps>({\n headerNode: null,\n fontLoaded: false,\n});\n"],"names":[],"mappings":";;AAiBO,MAAM,YAAY,GAAG,aAAa,CAAoB;AACzD,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,UAAU,EAAE,KAAK;AACpB,CAAA;;;;"}