MCPcopy Index your code
hub / github.com/UI5/webcomponents / _handleArrowNav

Method _handleArrowNav

packages/compat/src/Table.ts:623–663  ·  view source on GitHub ↗
(e: KeyboardEvent)

Source from the content-addressed store, hash-verified

621 }
622
623 _handleArrowNav(e: KeyboardEvent) {
624 const isRowFocused = this.currentElement!.localName === "tr";
625
626 if (!isRowFocused) {
627 return;
628 }
629
630 const previouslySelectedRows: Array<ITableRow> = this.selectedRows;
631 const currentItem: ITableRow = this.currentItem;
632 const currentItemIdx: number = this.currentItemIdx;
633
634 const prevItemIdx = currentItemIdx - 1;
635 const nextItemIdx = currentItemIdx + 1;
636
637 const prevItem: ITableRow = this.rows[prevItemIdx];
638 const nextItem: ITableRow = this.rows[nextItemIdx];
639 const wasSelected = !!currentItem.selected;
640
641 if ((isUpShift(e) && !prevItem) || (isDownShift(e) && !nextItem)) {
642 return;
643 }
644
645 if (isUpShift(e)) {
646 currentItem.selected = currentItem.selected && !prevItem.selected;
647 prevItem.selected = currentItem.selected || (wasSelected && !currentItem.selected);
648 prevItem.focus();
649 }
650
651 if (isDownShift(e)) {
652 currentItem.selected = currentItem.selected && !nextItem.selected;
653 nextItem.selected = currentItem.selected || (wasSelected && !currentItem.selected);
654 nextItem.focus();
655 }
656
657 const selectedRows = this.selectedRows;
658
659 this.fireDecoratorEvent("selection-change", {
660 selectedRows,
661 previouslySelectedRows,
662 });
663 }
664
665 _handleHomeEndSelection(e: KeyboardEvent) {
666 const isRowFocused = this.currentElement!.localName === "tr";

Callers 1

_onkeydownMethod · 0.95

Calls 3

isUpShiftFunction · 0.85
isDownShiftFunction · 0.85
focusMethod · 0.45

Tested by

no test coverage detected