diff options
Diffstat (limited to 'web_src/js/features/repo-issue.ts')
-rw-r--r-- | web_src/js/features/repo-issue.ts | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/web_src/js/features/repo-issue.ts b/web_src/js/features/repo-issue.ts index 7457531ece..9cc478712b 100644 --- a/web_src/js/features/repo-issue.ts +++ b/web_src/js/features/repo-issue.ts @@ -1,7 +1,7 @@ import $ from 'jquery'; import {htmlEscape} from 'escape-goat'; import {createTippy, showTemporaryTooltip} from '../modules/tippy.ts'; -import {hideElem, showElem, toggleElem} from '../utils/dom.ts'; +import {addDelegatedEventListener, createElementFromHTML, hideElem, showElem, toggleElem} from '../utils/dom.ts'; import {setFileFolding} from './file-fold.ts'; import {ComboMarkdownEditor, getComboMarkdownEditor, initComboMarkdownEditor} from './comp/ComboMarkdownEditor.ts'; import {parseIssuePageInfo, toAbsoluteUrl} from '../utils.ts'; @@ -443,21 +443,19 @@ export function initRepoPullRequestReview() { }); } - $(document).on('click', '.add-code-comment', async function (e) { - if (e.target.classList.contains('btn-add-single')) return; // https://github.com/go-gitea/gitea/issues/4745 + addDelegatedEventListener(document, 'click', '.add-code-comment', async (el, e) => { e.preventDefault(); - const isSplit = this.closest('.code-diff')?.classList.contains('code-diff-split'); - const side = this.getAttribute('data-side'); - const idx = this.getAttribute('data-idx'); - const path = this.closest('[data-path]')?.getAttribute('data-path'); - const tr = this.closest('tr'); + const isSplit = el.closest('.code-diff')?.classList.contains('code-diff-split'); + const side = el.getAttribute('data-side'); + const idx = el.getAttribute('data-idx'); + const path = el.closest('[data-path]')?.getAttribute('data-path'); + const tr = el.closest('tr'); const lineType = tr.getAttribute('data-line-type'); - const ntr = tr.nextElementSibling; - let $ntr = $(ntr); + let ntr = tr.nextElementSibling; if (!ntr?.classList.contains('add-comment')) { - $ntr = $(` + ntr = createElementFromHTML(` <tr class="add-comment" data-line-type="${lineType}"> ${isSplit ? ` <td class="add-comment-left" colspan="4"></td> @@ -466,24 +464,18 @@ export function initRepoPullRequestReview() { <td class="add-comment-left add-comment-right" colspan="5"></td> `} </tr>`); - $(tr).after($ntr); + tr.after(ntr); } - - const $td = $ntr.find(`.add-comment-${side}`); - const $commentCloud = $td.find('.comment-code-cloud'); - if (!$commentCloud.length && !$ntr.find('button[name="pending_review"]').length) { - try { - const response = await GET(this.closest('[data-new-comment-url]')?.getAttribute('data-new-comment-url')); - const html = await response.text(); - $td.html(html); - $td.find("input[name='line']").val(idx); - $td.find("input[name='side']").val(side === 'left' ? 'previous' : 'proposed'); - $td.find("input[name='path']").val(path); - const editor = await initComboMarkdownEditor($td[0].querySelector('.combo-markdown-editor')); - editor.focus(); - } catch (error) { - console.error(error); - } + const td = ntr.querySelector(`.add-comment-${side}`); + const commentCloud = td.querySelector('.comment-code-cloud'); + if (!commentCloud && !ntr.querySelector('button[name="pending_review"]')) { + const response = await GET(el.closest('[data-new-comment-url]')?.getAttribute('data-new-comment-url')); + td.innerHTML = await response.text(); + td.querySelector<HTMLInputElement>("input[name='line']").value = idx; + td.querySelector<HTMLInputElement>("input[name='side']").value = (side === 'left' ? 'previous' : 'proposed'); + td.querySelector<HTMLInputElement>("input[name='path']").value = path; + const editor = await initComboMarkdownEditor(td.querySelector<HTMLElement>('.combo-markdown-editor')); + editor.focus(); } }); } |