(e: KeyboardEvent)
| 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"; |
no test coverage detected