Merge pull request #8842 from Clem-Fern/fix#8839

This commit is contained in:
Eugene 2023-08-17 20:53:12 +02:00 committed by GitHub
commit 34786b1459
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,34 +29,36 @@ export class SelectorModalComponent<T> {
} }
@HostListener('keydown', ['$event']) onKeyUp (event: KeyboardEvent): void { @HostListener('keydown', ['$event']) onKeyUp (event: KeyboardEvent): void {
if (event.key === 'PageUp' || event.key === 'ArrowUp' && event.metaKey) { if (event.key === 'Escape') {
this.selectedIndex -= 10
event.preventDefault()
} else if (event.key === 'PageDown' || event.key === 'ArrowDown' && event.metaKey) {
this.selectedIndex += 10
event.preventDefault()
} else if (event.key === 'ArrowUp') {
this.selectedIndex--
event.preventDefault()
} else if (event.key === 'ArrowDown') {
this.selectedIndex++
event.preventDefault()
} else if (event.key === 'Enter') {
this.selectOption(this.filteredOptions[this.selectedIndex])
} else if (event.key === 'Escape') {
this.close() this.close()
} } else if (this.filteredOptions.length > 0) {
if (event.key === 'Backspace' && this.canEditSelected()) { if (event.key === 'PageUp' || event.key === 'ArrowUp' && event.metaKey) {
event.preventDefault() this.selectedIndex -= Math.min(10, Math.max(1, this.selectedIndex))
this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent! event.preventDefault()
this.onFilterChange() } else if (event.key === 'PageDown' || event.key === 'ArrowDown' && event.metaKey) {
} this.selectedIndex += Math.min(10, Math.max(1, this.filteredOptions.length - this.selectedIndex - 1))
event.preventDefault()
} else if (event.key === 'ArrowUp') {
this.selectedIndex--
event.preventDefault()
} else if (event.key === 'ArrowDown') {
this.selectedIndex++
event.preventDefault()
} else if (event.key === 'Enter') {
this.selectOption(this.filteredOptions[this.selectedIndex])
} else if (event.key === 'Backspace' && this.canEditSelected()) {
event.preventDefault()
this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent!
this.onFilterChange()
}
this.selectedIndex = (this.selectedIndex + this.filteredOptions.length) % this.filteredOptions.length this.selectedIndex = (this.selectedIndex + this.filteredOptions.length) % this.filteredOptions.length
Array.from(this.itemChildren)[this.selectedIndex]?.nativeElement.scrollIntoView({
behavior: 'smooth', Array.from(this.itemChildren)[this.selectedIndex]?.nativeElement.scrollIntoView({
block: 'nearest', behavior: 'smooth',
}) block: 'nearest',
})
}
} }
onFilterChange (): void { onFilterChange (): void {