diff --git a/.eslintrc.yaml b/.eslintrc.yaml index d9cbefd124..9fc9ceee60 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -322,7 +322,7 @@ rules: jquery/no-sizzle: [2] jquery/no-slide: [2] jquery/no-submit: [2] - jquery/no-text: [0] + jquery/no-text: [2] jquery/no-toggle: [2] jquery/no-trigger: [0] jquery/no-trim: [2] @@ -475,7 +475,7 @@ rules: no-jquery/no-slide: [2] no-jquery/no-sub: [2] no-jquery/no-support: [2] - no-jquery/no-text: [0] + no-jquery/no-text: [2] no-jquery/no-trigger: [0] no-jquery/no-trim: [2] no-jquery/no-type: [2] diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index a821e1b921..9c379c959e 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -304,10 +304,10 @@ export function initGlobalLinkActions() { } const $dialog = $(`.delete.modal${filter}`); - $dialog.find('.name').text($this.data('name')); + $dialog.find('.name')[0].textContent = $this.data('name'); for (const [key, value] of Object.entries(dataArray)) { if (key && key.startsWith('data')) { - $dialog.find(`.${key}`).text(value); + $dialog.find(`.${key}`)[0].textContent = value; } } @@ -374,7 +374,7 @@ function initGlobalShowModal() { } else if ($attrTarget[0].matches('input, textarea')) { $attrTarget.val(attrib.value); // FIXME: add more supports like checkbox } else { - $attrTarget.text(attrib.value); // FIXME: it should be more strict here, only handle div/span/p + $attrTarget[0].textContent = attrib.value; // FIXME: it should be more strict here, only handle div/span/p } } diff --git a/web_src/js/features/imagediff.js b/web_src/js/features/imagediff.js index d1b139ffde..2addb91d27 100644 --- a/web_src/js/features/imagediff.js +++ b/web_src/js/features/imagediff.js @@ -92,7 +92,7 @@ export function initImageDiff() { return loadElem(img, info.path); })); // only the first images is associated with $boundsInfo - if (!success) info.$boundsInfo.text('(image error)'); + if (!success) info.$boundsInfo[0].textContent = '(image error)'; if (info.mime === 'image/svg+xml') { const resp = await GET(info.path); const text = await resp.text(); diff --git a/web_src/js/features/notification.js b/web_src/js/features/notification.js index 8e5a1f83db..87582dbd91 100644 --- a/web_src/js/features/notification.js +++ b/web_src/js/features/notification.js @@ -48,16 +48,13 @@ async function receiveUpdateCount(event) { export function initNotificationCount() { const $notificationCount = $('.notification_count'); - - if (!$notificationCount.length) { - return; - } + if (!$notificationCount.length) return; let usingPeriodicPoller = false; const startPeriodicPoller = (timeout, lastCount) => { if (timeout <= 0 || !Number.isFinite(timeout)) return; usingPeriodicPoller = true; - lastCount = lastCount ?? $notificationCount.text(); + lastCount = lastCount ?? getCurrentCount(); setTimeout(async () => { await updateNotificationCountWithCallback(startPeriodicPoller, timeout, lastCount); }, timeout); @@ -121,8 +118,12 @@ export function initNotificationCount() { startPeriodicPoller(notificationSettings.MinTimeout); } +function getCurrentCount() { + return document.querySelector('.notification_count').textContent; +} + async function updateNotificationCountWithCallback(callback, timeout, lastCount) { - const currentCount = $('.notification_count').text(); + const currentCount = getCurrentCount(); if (lastCount !== currentCount) { callback(notificationSettings.MinTimeout, currentCount); return; diff --git a/web_src/js/features/repo-editor.js b/web_src/js/features/repo-editor.js index a5232cb4b6..75d98583cd 100644 --- a/web_src/js/features/repo-editor.js +++ b/web_src/js/features/repo-editor.js @@ -72,7 +72,7 @@ export function initRepoEditor() { hideElem('.quick-pull-branch-name'); document.querySelector('.quick-pull-branch-name input').required = false; } - $('#commit-button').text(this.getAttribute('button_text')); + $('#commit-button')[0].textContent = this.getAttribute('button_text'); }); const joinTreePath = ($fileNameEl) => { @@ -80,9 +80,9 @@ export function initRepoEditor() { $('.breadcrumb span.section').each(function () { const $element = $(this); if ($element.find('a').length) { - parts.push($element.find('a').text()); + parts.push($element.find('a')[0].textContent); } else { - parts.push($element.text()); + parts.push($element[0].textContent); } }); if ($fileNameEl.val()) parts.push($fileNameEl.val()); @@ -118,7 +118,7 @@ export function initRepoEditor() { if (e.code === 'Backspace' && getCursorPosition($(this)) === 0 && $section.length > 0) { e.preventDefault(); const $divider = $('.breadcrumb .breadcrumb-divider'); - const value = $section.last().find('a').text(); + const value = $section.last().find('a')[0].textContent; $(this).val(value + $(this).val()); this.setSelectionRange(value.length, value.length); $section.last().remove(); diff --git a/web_src/js/features/repo-issue-edit.js b/web_src/js/features/repo-issue-edit.js index abf2d31221..56900c769a 100644 --- a/web_src/js/features/repo-issue-edit.js +++ b/web_src/js/features/repo-issue-edit.js @@ -183,7 +183,7 @@ export function initRepoIssueCommentEdit() { $(document).on('click', '.quote-reply', async function (event) { event.preventDefault(); const target = $(this).data('target'); - const quote = $(`#${target}`).text().replace(/\n/g, '\n> '); + const quote = $(`#${target}`)[0].textContent.replace(/\n/g, '\n> '); const content = `> ${quote}\n\n`; let editor; if ($(this).hasClass('quote-reply-diff')) { diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index c4e14c62c4..677ec2ca7d 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -281,7 +281,7 @@ export function initRepoPullRequestUpdate() { if (url) { const buttonText = pullUpdateButton.querySelector('.button-text'); if (buttonText) { - buttonText.textContent = $choice.text(); + buttonText.textContent = $choice[0].textContent; } pullUpdateButton.setAttribute('data-do', url); } @@ -567,7 +567,7 @@ export function initRepoIssueReferenceIssue() { // Reference issue $(document).on('click', '.reference-issue', function (event) { const $this = $(this); - const content = $(`#${$this.data('target')}`).text(); + const content = $(`#${$this.data('target')}`)[0].textContent; const poster = $this.data('poster-username'); const reference = toAbsoluteUrl($this.data('reference')); const $modal = $($this.data('modal')); @@ -604,8 +604,7 @@ export function initRepoIssueWipToggle() { async function pullrequest_targetbranch_change(update_url) { const targetBranch = $('#pull-target-branch').data('branch'); - const $branchTarget = $('#branch_target'); - if (targetBranch === $branchTarget.text()) { + if (targetBranch === $('#branch_target')[0].textContent) { window.location.reload(); return false; } @@ -641,8 +640,9 @@ export function initRepoIssueTitleEdit() { $('#cancel-edit-title').on('click', editTitleToggle); $('#save-edit-title').on('click', editTitleToggle).on('click', async function () { const pullrequest_target_update_url = this.getAttribute('data-target-update-url'); - if (!$editInput.val().length || $editInput.val() === $issueTitle.text()) { - $editInput.val($issueTitle.text()); + const titleText = $issueTitle[0].textContent; + if (!$editInput.val().length || $editInput.val() === titleText) { + $editInput.val(titleText); await pullrequest_targetbranch_change(pullrequest_target_update_url); } else { try { @@ -651,7 +651,7 @@ export function initRepoIssueTitleEdit() { const response = await POST(this.getAttribute('data-update-url'), {data: params}); const data = await response.json(); $editInput.val(data.title); - $issueTitle.text(data.title); + $issueTitle[0].textContent = data.title; if (pullrequest_target_update_url) { await pullrequest_targetbranch_change(pullrequest_target_update_url); // it will reload the window } else { diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 18d98c891d..e855901f7a 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -64,7 +64,7 @@ export function initRepoCommentForm() { const editMode = $('#editing_mode').val(); $($(this).data('id-selector')).val(selectedValue); if ($isNewIssue) { - $selectBranch.find('.ui .branch-name').text($(this).data('name')); + $selectBranch.find('.ui .branch-name')[0].textContent = $(this).data('name'); return; } @@ -79,7 +79,7 @@ export function initRepoCommentForm() { console.error(error); } } else if (editMode === '') { - $selectBranch.find('.ui .branch-name').text(selectedValue); + $selectBranch.find('.ui .branch-name')[0].textContent = selectedValue; } }); $selectBranch.find('.reference.column').on('click', function () { @@ -275,7 +275,7 @@ export function initRepoCommentForm() { $list.find('.selected').html(` ${icon} - ${htmlEscape($(this).text())} + ${htmlEscape(this.textContent)} `); diff --git a/web_src/js/features/repo-settings.js b/web_src/js/features/repo-settings.js index 52c5de2bfa..f4fd94670b 100644 --- a/web_src/js/features/repo-settings.js +++ b/web_src/js/features/repo-settings.js @@ -22,12 +22,12 @@ export function initRepoSettingsCollaboration() { data.append('mode', value); await POST(el.getAttribute('data-url'), {data}); } catch { - $text.text('(error)'); // prevent from misleading users when error occurs + $text[0].textContent = '(error)'; // prevent from misleading users when error occurs el.setAttribute('data-last-value', lastValue); } }, onChange(_value, text, _$choice) { - $text.text(text); // update the text when using keyboard navigating + $text[0].textContent = text; // update the text when using keyboard navigating }, onHide() { // set to the really selected value, defer to next tick to make sure `action` has finished its work because the calling order might be onHide -> action @@ -36,7 +36,7 @@ export function initRepoSettingsCollaboration() { if ($item) { $dropdown.dropdown('set selected', el.getAttribute('data-last-value')); } else { - $text.text('(none)'); // prevent from misleading users when the access mode is undefined + $text[0].textContent = '(none)'; // prevent from misleading users when the access mode is undefined } }, 0); },