fix(trading): make grids more responsive - suppress sizeColumnsToFit on small screens (#3906)
This commit is contained in:
parent
d155909fe4
commit
babd99088d
@ -315,6 +315,7 @@ const ClosedMarketsDataGrid = ({ rowData }: { rowData: Row[] }) => {
|
|||||||
getRowId={({ data }) => data.id}
|
getRowId={({ data }) => data.id}
|
||||||
defaultColDef={{
|
defaultColDef={{
|
||||||
resizable: true,
|
resizable: true,
|
||||||
|
minWidth: 100,
|
||||||
}}
|
}}
|
||||||
overlayNoRowsTemplate="No data"
|
overlayNoRowsTemplate="No data"
|
||||||
storeKey="closedMarkets"
|
storeKey="closedMarkets"
|
||||||
|
@ -6,6 +6,7 @@ import type {
|
|||||||
} from 'ag-grid-community';
|
} from 'ag-grid-community';
|
||||||
import { renderHook, act, waitFor } from '@testing-library/react';
|
import { renderHook, act, waitFor } from '@testing-library/react';
|
||||||
import { useColumnSizes } from './use-column-sizes';
|
import { useColumnSizes } from './use-column-sizes';
|
||||||
|
import * as reactHelpers from '@vegaprotocol/react-helpers';
|
||||||
|
|
||||||
const mockApis = {
|
const mockApis = {
|
||||||
api: {
|
api: {
|
||||||
@ -49,6 +50,9 @@ describe('UseColumnSizes hook', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('onGridSizeChanged should call setSize', async () => {
|
it('onGridSizeChanged should call setSize', async () => {
|
||||||
|
jest
|
||||||
|
.spyOn(reactHelpers, 'useScreenDimensions')
|
||||||
|
.mockReturnValue({ screenSize: 'xxl' });
|
||||||
const { result } = renderHook(() =>
|
const { result } = renderHook(() =>
|
||||||
useColumnSizes({ storeKey, props: {} })
|
useColumnSizes({ storeKey, props: {} })
|
||||||
);
|
);
|
||||||
@ -95,6 +99,7 @@ describe('UseColumnSizes hook', () => {
|
|||||||
|
|
||||||
it('onGridReady should call setSizes', async () => {
|
it('onGridReady should call setSizes', async () => {
|
||||||
const props = { onGridReady: jest.fn() };
|
const props = { onGridReady: jest.fn() };
|
||||||
|
|
||||||
const { result } = renderHook(() => useColumnSizes({ storeKey, props }));
|
const { result } = renderHook(() => useColumnSizes({ storeKey, props }));
|
||||||
const obTest = { cool: 1, ...mockApis };
|
const obTest = { cool: 1, ...mockApis };
|
||||||
await act(() => {
|
await act(() => {
|
||||||
|
@ -8,6 +8,7 @@ import type { AgGridReactProps, AgReactUiProps } from 'ag-grid-react';
|
|||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { persist } from 'zustand/middleware';
|
import { persist } from 'zustand/middleware';
|
||||||
import { immer } from 'zustand/middleware/immer';
|
import { immer } from 'zustand/middleware/immer';
|
||||||
|
import { useScreenDimensions } from '@vegaprotocol/react-helpers';
|
||||||
|
|
||||||
const STORAGE_KEY = 'vega_columns_sizes_store';
|
const STORAGE_KEY = 'vega_columns_sizes_store';
|
||||||
|
|
||||||
@ -93,11 +94,12 @@ export const useColumnSizes = ({
|
|||||||
},
|
},
|
||||||
[valueSetter, storeKey, parentOnColumnResized]
|
[valueSetter, storeKey, parentOnColumnResized]
|
||||||
);
|
);
|
||||||
|
const { screenSize } = useScreenDimensions();
|
||||||
|
const largeScreen = ['xl', 'xxl', 'xxxl'].includes(screenSize);
|
||||||
const setSizes = useCallback(
|
const setSizes = useCallback(
|
||||||
(apiEvent: GridReadyEvent | GridSizeChangedEvent) => {
|
(apiEvent: GridReadyEvent | GridSizeChangedEvent) => {
|
||||||
if (!storeKey || !Object.keys(sizes).length || !widthRef.current) {
|
if (!storeKey || !Object.keys(sizes).length || !widthRef.current) {
|
||||||
apiEvent?.api.sizeColumnsToFit();
|
largeScreen && apiEvent?.api.sizeColumnsToFit();
|
||||||
} else {
|
} else {
|
||||||
const recalculatedSizes = recalculateSizes(sizes);
|
const recalculatedSizes = recalculateSizes(sizes);
|
||||||
const newSizes = Object.entries(recalculatedSizes).map(
|
const newSizes = Object.entries(recalculatedSizes).map(
|
||||||
@ -109,7 +111,7 @@ export const useColumnSizes = ({
|
|||||||
apiEvent.columnApi.setColumnWidths(newSizes);
|
apiEvent.columnApi.setColumnWidths(newSizes);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[storeKey, recalculateSizes, sizes]
|
[storeKey, recalculateSizes, sizes, largeScreen]
|
||||||
);
|
);
|
||||||
|
|
||||||
const onGridReady = useCallback(
|
const onGridReady = useCallback(
|
||||||
|
@ -68,6 +68,7 @@ export const MarketListTable = forwardRef<
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
filter: true,
|
filter: true,
|
||||||
filterParams: { buttons: ['reset'] },
|
filterParams: { buttons: ['reset'] },
|
||||||
|
minWidth: 100,
|
||||||
}}
|
}}
|
||||||
suppressCellFocus
|
suppressCellFocus
|
||||||
components={{ PriceFlashCell, MarketName }}
|
components={{ PriceFlashCell, MarketName }}
|
||||||
|
@ -156,6 +156,7 @@ export const useColumnDefs = () => {
|
|||||||
resizable: true,
|
resizable: true,
|
||||||
filter: true,
|
filter: true,
|
||||||
filterParams: { buttons: ['reset'] },
|
filterParams: { buttons: ['reset'] },
|
||||||
|
minWidth: 100,
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user