mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
add automatic autosize columns when auto-fit is disabled
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
import { ItemTableListColumnConfig } from '/@/renderer/components/item-list/types';
|
||||||
|
|
||||||
|
// Automatically set autoSize for all unpinned columns when auto-fit is off
|
||||||
|
// This is a view-only helper and does not persist to settings
|
||||||
|
export const autoSizeUnpinnedColumns = (
|
||||||
|
columns: ItemTableListColumnConfig[],
|
||||||
|
autoFitColumns: boolean,
|
||||||
|
): ItemTableListColumnConfig[] => {
|
||||||
|
if (autoFitColumns || columns.length === 0) {
|
||||||
|
return columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
const unpinnedEnabled = columns.filter((c) => c.pinned === null && c.isEnabled !== false);
|
||||||
|
if (unpinnedEnabled.length === 0) {
|
||||||
|
return columns;
|
||||||
|
}
|
||||||
|
if (unpinnedEnabled.some((c) => c.autoSize === true)) {
|
||||||
|
return columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
const idSet = new Set(unpinnedEnabled.map((c) => c.id));
|
||||||
|
return columns.map((c) => (idSet.has(c.id) ? { ...c, autoSize: true } : c));
|
||||||
|
};
|
||||||
@@ -21,6 +21,7 @@ import { type CellComponentProps, Grid } from 'react-window-v2';
|
|||||||
|
|
||||||
import styles from './item-table-list.module.css';
|
import styles from './item-table-list.module.css';
|
||||||
|
|
||||||
|
import { autoSizeUnpinnedColumns } from '/@/renderer/components/item-list/helpers/autosize-unpinned-columns';
|
||||||
import { createExtractRowId } from '/@/renderer/components/item-list/helpers/extract-row-id';
|
import { createExtractRowId } from '/@/renderer/components/item-list/helpers/extract-row-id';
|
||||||
import { useDefaultItemListControls } from '/@/renderer/components/item-list/helpers/item-list-controls';
|
import { useDefaultItemListControls } from '/@/renderer/components/item-list/helpers/item-list-controls';
|
||||||
import {
|
import {
|
||||||
@@ -1278,6 +1279,11 @@ const BaseItemTableList = ({
|
|||||||
const [centerContainerWidth, setCenterContainerWidth] = useState(0);
|
const [centerContainerWidth, setCenterContainerWidth] = useState(0);
|
||||||
const [totalContainerWidth, setTotalContainerWidth] = useState(0);
|
const [totalContainerWidth, setTotalContainerWidth] = useState(0);
|
||||||
|
|
||||||
|
const columnsForLayout = useMemo(
|
||||||
|
() => autoSizeUnpinnedColumns(columns, autoFitColumns),
|
||||||
|
[autoFitColumns, columns],
|
||||||
|
);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
calculatedColumnWidths,
|
calculatedColumnWidths,
|
||||||
parsedColumns,
|
parsedColumns,
|
||||||
@@ -1287,7 +1293,7 @@ const BaseItemTableList = ({
|
|||||||
} = useTableColumnModel({
|
} = useTableColumnModel({
|
||||||
autoFitColumns,
|
autoFitColumns,
|
||||||
centerContainerWidth,
|
centerContainerWidth,
|
||||||
columns,
|
columns: columnsForLayout,
|
||||||
totalContainerWidth,
|
totalContainerWidth,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user