Merge branch 'master' into users/languy/save-documentstab-prefs
This commit is contained in:
commit
26b6de4c53
|
@ -18,7 +18,7 @@ export enum SubComponentName {
|
||||||
|
|
||||||
export type ColumnSizesMap = { [columnId: string]: WidthDefinition };
|
export type ColumnSizesMap = { [columnId: string]: WidthDefinition };
|
||||||
export type FilterHistory = string[];
|
export type FilterHistory = string[];
|
||||||
export type WidthDefinition = { idealWidth?: number; minWidth?: number };
|
export type WidthDefinition = { widthPx: number };
|
||||||
export type TabDivider = { leftPaneWidthPercent: number };
|
export type TabDivider = { leftPaneWidthPercent: number };
|
||||||
export type ColumnsSelection = { selectedColumnIds: string[]; columnDefinitions: ColumnDefinition[] };
|
export type ColumnsSelection = { selectedColumnIds: string[]; columnDefinitions: ColumnDefinition[] };
|
||||||
export type ColumnSort = { columnId: string; direction: "ascending" | "descending" };
|
export type ColumnSort = { columnId: string; direction: "ascending" | "descending" };
|
||||||
|
|
|
@ -45,7 +45,6 @@ import {
|
||||||
readSubComponentState,
|
readSubComponentState,
|
||||||
saveSubComponentState,
|
saveSubComponentState,
|
||||||
SubComponentName,
|
SubComponentName,
|
||||||
WidthDefinition,
|
|
||||||
} from "Explorer/Tabs/DocumentsTabV2/DocumentsTabStateUtil";
|
} from "Explorer/Tabs/DocumentsTabV2/DocumentsTabStateUtil";
|
||||||
import { INITIAL_SELECTED_ROW_INDEX, useDocumentsTabStyles } from "Explorer/Tabs/DocumentsTabV2/DocumentsTabV2";
|
import { INITIAL_SELECTED_ROW_INDEX, useDocumentsTabStyles } from "Explorer/Tabs/DocumentsTabV2/DocumentsTabV2";
|
||||||
import { selectionHelper } from "Explorer/Tabs/DocumentsTabV2/SelectionHelper";
|
import { selectionHelper } from "Explorer/Tabs/DocumentsTabV2/SelectionHelper";
|
||||||
|
@ -93,6 +92,10 @@ interface ReactWindowRenderFnProps extends ListChildComponentProps {
|
||||||
|
|
||||||
const COLUMNS_MENU_NAME = "columnsMenu";
|
const COLUMNS_MENU_NAME = "columnsMenu";
|
||||||
|
|
||||||
|
const defaultSize = {
|
||||||
|
idealWidth: 200,
|
||||||
|
minWidth: 50,
|
||||||
|
};
|
||||||
export const DocumentsTableComponent: React.FC<IDocumentsTableComponentProps> = ({
|
export const DocumentsTableComponent: React.FC<IDocumentsTableComponentProps> = ({
|
||||||
onRefreshTable,
|
onRefreshTable,
|
||||||
items,
|
items,
|
||||||
|
@ -109,20 +112,23 @@ export const DocumentsTableComponent: React.FC<IDocumentsTableComponentProps> =
|
||||||
}: IDocumentsTableComponentProps) => {
|
}: IDocumentsTableComponentProps) => {
|
||||||
const styles = useDocumentsTabStyles();
|
const styles = useDocumentsTabStyles();
|
||||||
|
|
||||||
const defaultSize: WidthDefinition = {
|
const [columnSizingOptions, setColumnSizingOptions] = React.useState<TableColumnSizingOptions>(() => {
|
||||||
idealWidth: 200,
|
const columnSizesMap: ColumnSizesMap = readSubComponentState(SubComponentName.ColumnSizes, collection, {});
|
||||||
|
const columnSizesPx: TableColumnSizingOptions = {};
|
||||||
|
selectedColumnIds.forEach((columnId) => {
|
||||||
|
if (
|
||||||
|
!columnSizesMap ||
|
||||||
|
!columnSizesMap[columnId] ||
|
||||||
|
columnSizesMap[columnId].widthPx === undefined ||
|
||||||
|
isNaN(columnSizesMap[columnId].widthPx)
|
||||||
|
) {
|
||||||
|
columnSizesPx[columnId] = defaultSize;
|
||||||
|
} else {
|
||||||
|
columnSizesPx[columnId] = {
|
||||||
|
idealWidth: columnSizesMap[columnId].widthPx,
|
||||||
minWidth: 50,
|
minWidth: 50,
|
||||||
};
|
};
|
||||||
|
}
|
||||||
const [columnSizingOptions, setColumnSizingOptions] = React.useState<TableColumnSizingOptions>(() => {
|
|
||||||
const columnSizesMap: ColumnSizesMap = readSubComponentState<ColumnSizesMap>(
|
|
||||||
SubComponentName.ColumnSizes,
|
|
||||||
collection,
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
const columnSizesPx: ColumnSizesMap = {};
|
|
||||||
selectedColumnIds.forEach((columnId) => {
|
|
||||||
columnSizesPx[columnId] = (columnSizesMap && columnSizesMap[columnId]) || defaultSize;
|
|
||||||
});
|
});
|
||||||
return columnSizesPx;
|
return columnSizesPx;
|
||||||
});
|
});
|
||||||
|
@ -146,7 +152,7 @@ export const DocumentsTableComponent: React.FC<IDocumentsTableComponentProps> =
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const onColumnResize = React.useCallback((_, { columnId, width }) => {
|
const onColumnResize = React.useCallback((_, { columnId, width }: { columnId: string; width: number }) => {
|
||||||
setColumnSizingOptions((state) => {
|
setColumnSizingOptions((state) => {
|
||||||
const newSizingOptions = {
|
const newSizingOptions = {
|
||||||
...state,
|
...state,
|
||||||
|
@ -156,7 +162,14 @@ export const DocumentsTableComponent: React.FC<IDocumentsTableComponentProps> =
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
saveSubComponentState<ColumnSizesMap>(SubComponentName.ColumnSizes, collection, newSizingOptions, true);
|
const persistentSizes = Object.keys(newSizingOptions).reduce((acc, key) => {
|
||||||
|
acc[key] = {
|
||||||
|
widthPx: newSizingOptions[key].idealWidth,
|
||||||
|
};
|
||||||
|
return acc;
|
||||||
|
}, {} as ColumnSizesMap);
|
||||||
|
|
||||||
|
saveSubComponentState<ColumnSizesMap>(SubComponentName.ColumnSizes, collection, persistentSizes, true);
|
||||||
|
|
||||||
return newSizingOptions;
|
return newSizingOptions;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue