Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/components/Fullscreen/Fullscreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ function Fullscreen({children, className}: FullscreenProps) {
} else {
ref.current?.appendChild(container);
}
// Trigger recalculation for components relying on window resize
// Dispatch after DOM re-parent to ensure correct measurements
requestAnimationFrame(() => {
requestAnimationFrame(() => {
window.dispatchEvent(new Event('resize'));
});
});
}
}, [container, isFullscreen]);

Expand Down
20 changes: 9 additions & 11 deletions src/components/QueryResultTable/QueryResultTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,14 @@ export const QueryResultTable = (props: QueryResultTableProps) => {
}

return (
<div style={{display: 'flex', flexGrow: 1}}>
<ResizeableDataTable
data={data}
columns={preparedColumns}
settings={settings}
// prevent accessing row.id in case it is present but is not the PK (i.e. may repeat)
rowKey={getRowIndex}
visibleRowIndex={getVisibleRowIndex}
wrapperClassName={b('table-wrapper')}
/>
</div>
<ResizeableDataTable
data={data}
columns={preparedColumns}
settings={settings}
// prevent accessing row.id in case it is present but is not the PK (i.e. may repeat)
rowKey={getRowIndex}
visibleRowIndex={getVisibleRowIndex}
wrapperClassName={b('table-wrapper')}
/>
);
};
2 changes: 0 additions & 2 deletions src/components/ResizeableDataTable/ResizeableDataTable.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
.ydb-resizeable-data-table {
display: flex;

width: max-content;

// padding for easier resize of the last column
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {Flex, Tab, TabList, TabProvider, Text} from '@gravity-ui/uikit';
import {QueryResultTable} from '../../../../../../components/QueryResultTable';
import type {ParsedResultSet} from '../../../../../../types/store/query';
import {cn} from '../../../../../../utils/cn';
import {useTypedSelector} from '../../../../../../utils/hooks';
import {QueryResultError} from '../QueryResultError/QueryResultError';

import './ResultSetsViewer.scss';
Expand All @@ -23,20 +22,11 @@ interface ResultSetsViewerProps {

export function ResultSetsViewer(props: ResultSetsViewerProps) {
const {selectedResultSet, setSelectedResultSet, resultSets, error} = props;
const isFullscreen = useTypedSelector((state) => state.fullscreen);

const scrollRef = React.useRef<HTMLDivElement>(null);

const currentResult = resultSets?.[selectedResultSet];

React.useEffect(() => {
//this is needed to trigger data-table recount visible rows
if (isFullscreen) {
const resizeEvent = new Event('resize');
scrollRef.current?.dispatchEvent(resizeEvent);
}
}, [isFullscreen]);

const renderTabs = () => {
return (
<TabProvider value={String(selectedResultSet)}>
Expand Down
Loading