feat(grid): incremental column freeze and single-column unfreeze
This commit is contained in:
14 files changed
+108
-26
No files matched your search
@@ -1981,7 +1981,8 @@ const {
|
||||
onTableDataGridColumnOrderChanged,
|
||||
frozenColumnCount,
|
||||
freezeToColumn,
|
||||
freezeSelectedColumns: freezeSelectedColumnsInLayout,
|
||||
freezeSelectedColumnsIncrementally,
|
||||
unfreezeSelectedColumns,
|
||||
unfreezeAllColumns: unfreezeAllColumnsInLayout,
|
||||
} = useDataGridColumnLayoutState({
|
||||
columns: computed(() => props.result.columns),
|
||||
@@ -2329,7 +2330,15 @@ function resetColumnOrder() {
|
||||
}
|
||||
|
||||
function freezeSelectedColumns(selectedVisibleColumnIndexes: number[]) {
|
||||
applyColumnOrderChange(() => freezeSelectedColumnsInLayout(selectedVisibleColumnIndexes));
|
||||
applyColumnOrderChange(() => freezeSelectedColumnsIncrementally(selectedVisibleColumnIndexes));
|
||||
}
|
||||
|
||||
function freezeCurrentOrSelectedColumns(selectedVisibleColumnIndexes: number[]) {
|
||||
applyColumnOrderChange(() => freezeSelectedColumnsIncrementally(selectedVisibleColumnIndexes));
|
||||
}
|
||||
|
||||
function unfreezeCurrentOrSelectedColumns(selectedVisibleColumnIndexes: number[]) {
|
||||
applyColumnOrderChange(() => unfreezeSelectedColumns(selectedVisibleColumnIndexes));
|
||||
}
|
||||
|
||||
function unfreezeAllColumns() {
|
||||
@@ -11614,8 +11623,10 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
||||
localDescending: t("grid.sortCurrentPageDescending"),
|
||||
clearSort: t("grid.clearSort"),
|
||||
freezeToColumn: t("grid.freezeToColumn"),
|
||||
freezeSelectedColumns: t("grid.freezeSelectedColumns"),
|
||||
unfreezeColumns: t("grid.unfreezeColumns"),
|
||||
freezeSelectedColumns: t("grid.freezeSelectedColumns", { count: selectedColumnCount }),
|
||||
freezeCurrentColumn: t("grid.freezeCurrentColumn"),
|
||||
unfreezeCurrentColumn: t("grid.unfreezeCurrentColumn"),
|
||||
unfreezeColumns: t("grid.unfreezeColumns", { count: frozenColumnCount.value }),
|
||||
hideColumn: t("grid.hideColumn"),
|
||||
hideSelectedColumns: t("grid.hideSelectedColumns", { count: selectedColumnCount }),
|
||||
showAllColumnsMenu: t("grid.showAllColumnsMenu"),
|
||||
@@ -11645,6 +11656,18 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
||||
freezeSelectedColumns(selectedVisibleColumnIndexes());
|
||||
clearCellSelection();
|
||||
},
|
||||
freezeCurrentColumn: () => {
|
||||
const indexes = selectedVisibleColumnIndexes();
|
||||
const idx = contextHeaderVisibleColIdx.value;
|
||||
freezeCurrentOrSelectedColumns(indexes.length > 1 ? indexes : idx === null ? [] : [idx]);
|
||||
clearCellSelection();
|
||||
},
|
||||
unfreezeCurrentColumn: () => {
|
||||
const indexes = selectedVisibleColumnIndexes();
|
||||
const idx = contextHeaderVisibleColIdx.value;
|
||||
unfreezeCurrentOrSelectedColumns(indexes.length > 1 ? indexes : idx === null ? [] : [idx]);
|
||||
clearCellSelection();
|
||||
},
|
||||
unfreezeColumns: () => {
|
||||
unfreezeAllColumns();
|
||||
clearCellSelection();
|
||||
|
||||
+1
-1
@@ -299,7 +299,7 @@ describe("DataGrid context menu target lifecycle", () => {
|
||||
await settle();
|
||||
|
||||
expect(contextMenuLabels()).toContain("Copy Selected Column Names (2)");
|
||||
expect(contextMenuLabels()).toContain("Freeze Selected Columns");
|
||||
expect(contextMenuLabels()).toContain("Freeze Selected Columns (2)");
|
||||
});
|
||||
|
||||
it("offers snapshots for full-column selections from the column header", async () => {
|
||||
|
||||
Reference in new issue
Block a user