Skip to content

Commit 72a5d3f

Browse files
Remove jQuery class from the issue author dropdown (#30188)
- Switched from jQuery class functions to plain JavaScript `classList` - Tested the issue author dropdown functionality and it works as before Signed-off-by: Yarden Shoham <[email protected]> Co-authored-by: Giteabot <[email protected]>
1 parent 6aeff21 commit 72a5d3f

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

web_src/js/features/repo-issue-list.js

+13-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {confirmModal} from './comp/ConfirmModal.js';
66
import {showErrorToast} from '../modules/toast.js';
77
import {createSortable} from '../modules/sortable.js';
88
import {DELETE, POST} from '../modules/fetch.js';
9+
import {parseDom} from '../utils.js';
910

1011
function initRepoIssueListCheckboxes() {
1112
const issueSelectAll = document.querySelector('.issue-checkbox-all');
@@ -129,22 +130,27 @@ function initRepoIssueListAuthorDropdown() {
129130
const dropdownTemplates = $searchDropdown.dropdown('setting', 'templates');
130131
$searchDropdown.dropdown('internal', 'setup', dropdownSetup);
131132
dropdownSetup.menu = function (values) {
132-
const $menu = $searchDropdown.find('> .menu');
133-
$menu.find('> .dynamic-item').remove(); // remove old dynamic items
133+
const menu = $searchDropdown.find('> .menu')[0];
134+
// remove old dynamic items
135+
for (const el of menu.querySelectorAll(':scope > .dynamic-item')) {
136+
el.remove();
137+
}
134138

135139
const newMenuHtml = dropdownTemplates.menu(values, $searchDropdown.dropdown('setting', 'fields'), true /* html */, $searchDropdown.dropdown('setting', 'className'));
136140
if (newMenuHtml) {
137-
const $newMenuItems = $(newMenuHtml);
138-
$newMenuItems.addClass('dynamic-item');
141+
const newMenuItems = parseDom(newMenuHtml, 'text/html').querySelectorAll('body > div');
142+
for (const newMenuItem of newMenuItems) {
143+
newMenuItem.classList.add('dynamic-item');
144+
}
139145
const div = document.createElement('div');
140146
div.classList.add('divider', 'dynamic-item');
141-
$menu[0].append(div, ...$newMenuItems);
147+
menu.append(div, ...newMenuItems);
142148
}
143149
$searchDropdown.dropdown('refresh');
144150
// defer our selection to the next tick, because dropdown will set the selection item after this `menu` function
145151
setTimeout(() => {
146-
$menu.find('.item.active, .item.selected').removeClass('active selected');
147-
$menu.find(`.item[data-value="${selectedUserId}"]`).addClass('selected');
152+
menu.querySelector('.item.active, .item.selected')?.classList.remove('active', 'selected');
153+
menu.querySelector(`.item[data-value="${selectedUserId}"]`)?.classList.add('selected');
148154
}, 0);
149155
};
150156
}

0 commit comments

Comments
 (0)