Fix duplicate users in bulk/quick assign modals; add combobox search
Root cause: DashboardView.php and dashboard.js both had a global
document.addEventListener('click') handler handling the same bulk-assign
and quick-assign actions. Every click fired both handlers, creating two
modals and two API fetches that both appended to the same select element.
Fix: Remove duplicate cases (bulk-*, navigate, view-ticket, quick-*,
set-view-mode, toggle-*, clear-selection) from DashboardView.php's inline
handler. dashboard.js already handles all of these correctly.
Also replace <select> with lt.combobox in both bulk-assign and
quick-assign modals so large user lists are searchable instead of a
long scrolling dropdown.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+3
-12
@@ -857,7 +857,9 @@ document.querySelectorAll('.lt-stat-card').forEach(function (card) {
|
||||
});
|
||||
});
|
||||
|
||||
// Event delegation for click actions
|
||||
// Event delegation for click actions — only handles cases NOT covered by dashboard.js
|
||||
// bulk-*, navigate, view-ticket, quick-*, set-view-mode, clear-selection, toggle-*
|
||||
// are all handled by dashboard.js to avoid double-firing (duplicate handlers = duplicate users in selects).
|
||||
document.addEventListener('click', function (e) {
|
||||
var target = e.target.closest('[data-action]');
|
||||
if (!target) return;
|
||||
@@ -870,19 +872,8 @@ document.addEventListener('click', function (e) {
|
||||
case 'open-advanced-search': openAdvancedSearch(); break;
|
||||
case 'close-advanced-search': closeAdvancedSearch(); break;
|
||||
case 'reset-advanced-search': resetAdvancedSearch(); break;
|
||||
case 'set-view-mode': setViewMode(target.getAttribute('data-mode')); break;
|
||||
case 'navigate': window.location.href = target.getAttribute('data-url'); break;
|
||||
case 'toggle-export-menu': e.stopPropagation(); toggleExportMenu(e); break;
|
||||
case 'export-tickets': e.preventDefault(); exportSelectedTickets(target.getAttribute('data-format')); break;
|
||||
case 'bulk-status': showBulkStatusModal(); break;
|
||||
case 'bulk-assign': showBulkAssignModal(); break;
|
||||
case 'bulk-priority': showBulkPriorityModal(); break;
|
||||
case 'clear-selection': clearSelection(); break;
|
||||
case 'toggle-select-all': toggleSelectAll(); break;
|
||||
case 'toggle-row-checkbox': toggleRowCheckbox(e, target); break;
|
||||
case 'view-ticket': e.stopPropagation(); window.location.href = '/ticket/' + target.getAttribute('data-ticket-id'); break;
|
||||
case 'quick-status': e.stopPropagation(); quickStatusChange(target.getAttribute('data-ticket-id'), target.getAttribute('data-status')); break;
|
||||
case 'quick-assign': e.stopPropagation(); quickAssign(target.getAttribute('data-ticket-id')); break;
|
||||
case 'save-filter': saveCurrentFilter(); break;
|
||||
case 'delete-filter': deleteSavedFilter(); break;
|
||||
case 'remove-filter': removeFilter(target.getAttribute('data-filter-type'), target.getAttribute('data-filter-value')); break;
|
||||
|
||||
Reference in New Issue
Block a user