Remove jQuery from the user search form in admin page (#29151)

- Switched to plain JavaScript
- Tested the form and it works as before

---------

Signed-off-by: Yarden Shoham <git@yardenshoham.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit a8748eedae3518550bd43fd592d206df2bea6bef)

Conflicts:
	web_src/js/features/admin/users.js
	prefer Gitea version and discard jQuery specific fixes from
	Forbid jQuery `.prop` and fix related issues (#29832)
This commit is contained in:
Yarden Shoham 2024-02-13 16:13:06 +02:00 committed by Earl Warren
parent 459b1b20fe
commit d8fa9b1580
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00

View file

@ -1,34 +1,39 @@
import $ from 'jquery';
export function initAdminUserListSearchForm() { export function initAdminUserListSearchForm() {
const searchForm = window.config.pageData.adminUserListSearchForm; const searchForm = window.config.pageData.adminUserListSearchForm;
if (!searchForm) return; if (!searchForm) return;
const $form = $('#user-list-search-form'); const form = document.querySelector('#user-list-search-form');
if (!$form.length) return; if (!form) return;
$form.find(`button[name=sort][value=${searchForm.SortType}]`).addClass('active'); for (const button of form.querySelectorAll(`button[name=sort][value="${searchForm.SortType}"]`)) {
button.classList.add('active');
}
if (searchForm.StatusFilterMap) { if (searchForm.StatusFilterMap) {
for (const [k, v] of Object.entries(searchForm.StatusFilterMap)) { for (const [k, v] of Object.entries(searchForm.StatusFilterMap)) {
if (!v) continue; if (!v) continue;
$form.find(`input[name="status_filter[${k}]"][value=${v}]`).checked = true; for (const input of form.querySelectorAll(`input[name="status_filter[${k}]"][value="${v}"]`)) {
input.checked = true;
}
} }
} }
$form.find(`input[type=radio]`).on('click', () => { for (const radio of form.querySelectorAll('input[type=radio]')) {
$form.trigger('submit'); radio.addEventListener('click', () => {
return false; form.submit();
}); });
}
$form.find('.j-reset-status-filter').on('click', () => { const resetButtons = form.querySelectorAll('.j-reset-status-filter');
$form.find(`input[type=radio]`).each((_, e) => { for (const button of resetButtons) {
const $e = $(e); button.addEventListener('click', (e) => {
if ($e.attr('name').startsWith('status_filter[')) { e.preventDefault();
$e.checked = false; for (const input of form.querySelectorAll('input[type=radio]')) {
if (input.name.startsWith('status_filter[')) {
input.checked = false;
} }
}); }
$form.trigger('submit'); form.submit();
return false;
}); });
} }
}