(ev: KeyboardEvent)
| 662 | |
| 663 | @Listen('keydown') |
| 664 | onKeyDown(ev: KeyboardEvent) { |
| 665 | const rtl = isRTL(this.el); |
| 666 | let keyDownSelectsButton = this.selectOnFocus; |
| 667 | let current; |
| 668 | switch (ev.key) { |
| 669 | case 'ArrowRight': |
| 670 | ev.preventDefault(); |
| 671 | current = rtl ? this.getSegmentButton('previous') : this.getSegmentButton('next'); |
| 672 | break; |
| 673 | case 'ArrowLeft': |
| 674 | ev.preventDefault(); |
| 675 | current = rtl ? this.getSegmentButton('next') : this.getSegmentButton('previous'); |
| 676 | break; |
| 677 | case 'Home': |
| 678 | ev.preventDefault(); |
| 679 | current = this.getSegmentButton('first'); |
| 680 | break; |
| 681 | case 'End': |
| 682 | ev.preventDefault(); |
| 683 | current = this.getSegmentButton('last'); |
| 684 | break; |
| 685 | case ' ': |
| 686 | case 'Enter': |
| 687 | ev.preventDefault(); |
| 688 | current = document.activeElement as HTMLIonSegmentButtonElement; |
| 689 | keyDownSelectsButton = true; |
| 690 | default: |
| 691 | break; |
| 692 | } |
| 693 | |
| 694 | if (!current) { |
| 695 | return; |
| 696 | } |
| 697 | |
| 698 | if (keyDownSelectsButton) { |
| 699 | const previous = this.checked; |
| 700 | this.checkButton(previous || current, current); |
| 701 | if (current !== previous) { |
| 702 | this.emitValueChange(); |
| 703 | } |
| 704 | } |
| 705 | current.setFocus(); |
| 706 | } |
| 707 | |
| 708 | render() { |
| 709 | const mode = getIonMode(this); |
no test coverage detected