diff --git a/api/js/etemplate/Et2Select/Et2Select.ts b/api/js/etemplate/Et2Select/Et2Select.ts index 66e117cc98..6f45f5048a 100644 --- a/api/js/etemplate/Et2Select/Et2Select.ts +++ b/api/js/etemplate/Et2Select/Et2Select.ts @@ -269,7 +269,7 @@ export class Et2Select extends Et2WithSearchMixin(Et2WidgetWithSelect) this.addEventListener("mousewheel", this._handleMouseWheel); this.addEventListener("mouseenter", this._handleMouseEnter); this.addEventListener("mouseup", this.handleOptionClick); - this.addEventListener("keyup", this.handleKeyDown); + this.addEventListener("keydown", this.handleKeyDown); this.updateComplete.then(() => { @@ -710,6 +710,7 @@ export class Et2Select extends Et2WithSearchMixin(Et2WidgetWithSelect) this.handleMenuHide(); } }); + event.stopPropagation(); } } diff --git a/api/js/etemplate/Et2Select/SearchMixin.ts b/api/js/etemplate/Et2Select/SearchMixin.ts index 9fba2ee50e..b41c8a5567 100644 --- a/api/js/etemplate/Et2Select/SearchMixin.ts +++ b/api/js/etemplate/Et2Select/SearchMixin.ts @@ -884,7 +884,10 @@ export const Et2WithSearchMixin = >(superclass // Pass off some keys to select if(['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) { - return this.handleKeyDown(event); + + // Strip out hidden non-matching selected & disabled items so key navigation works + this.menuItems = this.menuItems.filter(i => !i.disabled); + return super.handleKeyDown(event); } event.stopPropagation();