1+ import React from 'react' ;
2+
13import type { Settings } from '@gravity-ui/react-data-table' ;
24import { Flex , Tab , TabList , TabProvider , Text } from '@gravity-ui/uikit' ;
35
46import { QueryResultTable } from '../../../../../../components/QueryResultTable' ;
57import type { ParsedResultSet } from '../../../../../../types/store/query' ;
68import { cn } from '../../../../../../utils/cn' ;
9+ import { useTypedSelector } from '../../../../../../utils/hooks' ;
710import { QueryResultError } from '../QueryResultError/QueryResultError' ;
811
912import './ResultSetsViewer.scss' ;
@@ -20,9 +23,20 @@ interface ResultSetsViewerProps {
2023
2124export function ResultSetsViewer ( props : ResultSetsViewerProps ) {
2225 const { selectedResultSet, setSelectedResultSet, resultSets, error} = props ;
26+ const isFullscreen = useTypedSelector ( ( state ) => state . fullscreen ) ;
27+
28+ const scrollRef = React . useRef < HTMLDivElement > ( null ) ;
2329
2430 const currentResult = resultSets ?. [ selectedResultSet ] ;
2531
32+ React . useEffect ( ( ) => {
33+ //this is needed to trigger data-table recount visible rows
34+ if ( isFullscreen ) {
35+ const resizeEvent = new Event ( 'resize' ) ;
36+ scrollRef . current ?. dispatchEvent ( resizeEvent ) ;
37+ }
38+ } , [ isFullscreen ] ) ;
39+
2640 const renderTabs = ( ) => {
2741 return (
2842 < TabProvider value = { String ( selectedResultSet ) } >
@@ -76,7 +90,7 @@ export function ResultSetsViewer(props: ResultSetsViewerProps) {
7690 { props . error ? < QueryResultError error = { error } /> : null }
7791 { renderResults ( ) }
7892 { currentResult ? (
79- < div className = { b ( 'result' ) } >
93+ < div className = { b ( 'result' ) } ref = { scrollRef } >
8094 < QueryResultTable
8195 settings = { props . tableSettings }
8296 data = { currentResult . result }
0 commit comments