fix(grid): focus cell before detail
This commit is contained in:
parent
a26a762b8c
commit
c2a13f3057
|
|
@ -2234,6 +2234,12 @@ function showCellDetails(rowIndex: number, colIndex: number) {
|
|||
showCellDetail.value = true;
|
||||
}
|
||||
|
||||
function showCellDetailsForVisibleCell(rowIndex: number, visibleColIdx: number, actualColIdx: number) {
|
||||
clearRowSelection();
|
||||
selectSingleCell(rowIndex, visibleColIdx);
|
||||
showCellDetails(rowIndex, actualColIdx);
|
||||
}
|
||||
|
||||
watch([selectedRange, showCellDetail, isEditingDetail], () => {
|
||||
const selectedCell = currentSelectedCellPosition();
|
||||
const target = linkedCellDetailTarget({
|
||||
|
|
@ -4105,7 +4111,7 @@ defineExpose({
|
|||
class="absolute right-0.5 top-0.5 flex h-5 w-5 items-center justify-center rounded bg-background/90 text-muted-foreground shadow-sm ring-1 ring-border hover:text-foreground"
|
||||
:title="t('grid.cellDetails')"
|
||||
@mousedown.stop
|
||||
@click.stop="showCellDetails(index, actualColIdx)"
|
||||
@click.stop="showCellDetailsForVisibleCell(index, visibleColIdx, actualColIdx)"
|
||||
>
|
||||
<Info class="h-3 w-3" />
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { readFileSync } from "node:fs";
|
||||
import { strict as assert } from "node:assert";
|
||||
import test from "node:test";
|
||||
import {
|
||||
|
|
@ -76,3 +77,15 @@ test("cell detail does not follow selection while closed or editing", () => {
|
|||
assert.equal(linkedCellDetailTarget({ isOpen: true, isEditing: true, selectedCell, actualColumnIndex }), null);
|
||||
assert.equal(linkedCellDetailTarget({ isOpen: true, isEditing: false, selectedCell: null, actualColumnIndex }), null);
|
||||
});
|
||||
|
||||
test("cell detail action focuses the hovered cell before opening details", () => {
|
||||
const source = readFileSync("apps/desktop/src/components/grid/DataGrid.vue", "utf8");
|
||||
|
||||
assert.match(
|
||||
source,
|
||||
/function showCellDetailsForVisibleCell\(rowIndex: number, visibleColIdx: number, actualColIdx: number\)/,
|
||||
);
|
||||
assert.match(source, /selectSingleCell\(rowIndex, visibleColIdx\)/);
|
||||
assert.match(source, /@click\.stop="showCellDetailsForVisibleCell\(index, visibleColIdx, actualColIdx\)"/);
|
||||
assert.doesNotMatch(source, /@click\.stop="showCellDetails\(index, actualColIdx\)"/);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue