From 2378e562689052d3058776a25fdda580119ee645 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sun, 5 Apr 2026 12:35:32 -0400 Subject: [PATCH] Fix bulk assign user search: replace broken combobox with typeahead MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The combobox modal used lt-combobox-list but lt.combobox looks for lt-combobox-dropdown — it returned immediately, wiring nothing. Replaced with lt.typeahead which is correct for single-select search: - Filters users client-side as you type (minChars:1, debounced 150ms) - Shows display_name (username) with highlight on match - onSelect stores user ID and shows "✓ Name" confirmation below input - Input auto-focuses when modal opens - Enter key now selects first result even without arrow-key navigation (same fix applied to lt.combobox Enter handler) Co-Authored-By: Claude Sonnet 4.6 --- assets/js/base.js | 2 +- assets/js/dashboard.js | 50 +++++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/assets/js/base.js b/assets/js/base.js index 4d0e7e1..7bdbdf1 100644 --- a/assets/js/base.js +++ b/assets/js/base.js @@ -2065,7 +2065,7 @@ if (!dropdown.classList.contains('is-open')) return; if (e.key === 'ArrowDown') { e.preventDefault(); _moveFocus(1); } if (e.key === 'ArrowUp') { e.preventDefault(); _moveFocus(-1); } - if (e.key === 'Enter') { e.preventDefault(); if (_focusedIdx >= 0 && _items[_focusedIdx]) _select(_items[_focusedIdx]); } + if (e.key === 'Enter') { e.preventDefault(); const idx = _focusedIdx >= 0 ? _focusedIdx : 0; if (_items[idx]) _select(_items[idx]); } if (e.key === 'Escape') { dropdown.classList.remove('is-open'); } if (e.key === 'Tab') { dropdown.classList.remove('is-open'); } }); diff --git a/assets/js/dashboard.js b/assets/js/dashboard.js index 1574365..5a11ff8 100644 --- a/assets/js/dashboard.js +++ b/assets/js/dashboard.js @@ -552,7 +552,7 @@ function performBulkCloseAction(ticketIds) { }); } -var _bulkAssignUserId = null; // set by combobox onSelect +var _bulkAssignUserId = null; function showBulkAssignModal() { const ticketIds = getSelectedTicketIds(); @@ -566,21 +566,20 @@ function showBulkAssignModal() { const modalHtml = `