[ACS-10304] KN: personal files: Column resizing available via mouse but not accessible via keyboard (#11616)

This commit is contained in:
Dominik Iwanek
2026-02-05 09:15:36 +01:00
committed by GitHub
parent 6ff7ce4add
commit e859923541
2 changed files with 22 additions and 13 deletions
@@ -161,5 +161,17 @@ describe('ResizeHandleDirective', () => {
expect(resizableContainer.resizeByKeyboard).not.toHaveBeenCalled();
expect(event.preventDefault).not.toHaveBeenCalled();
});
it('should not prevent default on Shift+Tab to allow reverse focus navigation', () => {
const event = new KeyboardEvent('keydown', { key: 'Tab', shiftKey: true });
spyOn(event, 'preventDefault');
spyOn(event, 'stopPropagation');
directive.onKeydown(event);
expect(resizableContainer.resizeByKeyboard).not.toHaveBeenCalled();
expect(event.preventDefault).not.toHaveBeenCalled();
expect(event.stopPropagation).not.toHaveBeenCalled();
});
});
});
@@ -34,31 +34,28 @@ export class ResizeHandleDirective implements OnInit, OnDestroy {
@HostListener('keydown', ['$event'])
onKeydown(event: KeyboardEvent): void {
let delta: number | null = null;
const shiftDelta = 40;
if (event.shiftKey) {
delta += shiftDelta;
}
const rightStepBaseValue = 20;
const shiftModifier = event.shiftKey ? shiftDelta : 0;
let delta: number | null = null;
switch (event.key) {
case 'ArrowRight':
case 'ArrowUp':
delta += rightStepBaseValue;
delta = shiftModifier + rightStepBaseValue;
break;
case 'ArrowLeft':
case 'ArrowDown':
delta = -delta;
delta = -shiftModifier;
break;
default:
break;
return;
}
if (delta !== null) {
event.preventDefault();
event.stopPropagation();
this.resizableContainer.resizeByKeyboard(delta);
}
event.preventDefault();
event.stopPropagation();
this.resizableContainer.resizeByKeyboard(delta);
}
ngOnInit(): void {