From bf76216de15acaa3dcffc7670faee0afa0c402bd Mon Sep 17 00:00:00 2001 From: Giteabot Date: Tue, 17 Oct 2023 22:46:35 +0800 Subject: [PATCH] Hide archived labels by default from the suggestions when assigning labels for an issue (#27451) (#27661) Backport #27451 by @puni9869 Followup of #27115 Finally closes #25237 ## Screenshots ### Issue Sidebar image ### PR sidebar image ### PR sidebar with archived labels shown image Signed-off-by: puni9869 Co-authored-by: puni9869 <80308335+puni9869@users.noreply.github.com> Co-authored-by: silverwind --- templates/repo/issue/filter_actions.tmpl | 6 ++---- .../repo/issue/labels/labels_selector_field.tmpl | 12 ++++++++---- web_src/css/repo/issue-label.css | 5 +++++ web_src/js/features/repo-issue-list.js | 6 +++++- web_src/js/features/repo-issue.js | 13 +++++++++++++ web_src/js/index.js | 3 ++- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/templates/repo/issue/filter_actions.tmpl b/templates/repo/issue/filter_actions.tmpl index f84a99ff7f..a2296f6597 100644 --- a/templates/repo/issue/filter_actions.tmpl +++ b/templates/repo/issue/filter_actions.tmpl @@ -29,11 +29,9 @@
{{end}} {{$previousExclusiveScope = $exclusiveScope}} -
+
{{if SliceUtils.Contains $.SelLabelIDs .ID}}{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}{{end}} {{RenderLabel $.Context .}} - {{if .IsArchived}} - {{svg "octicon-info"}} - {{end}} + {{template "repo/issue/labels/label_archived" .}}
{{end}}
diff --git a/templates/repo/issue/labels/labels_selector_field.tmpl b/templates/repo/issue/labels/labels_selector_field.tmpl index 1599f2deb6..d24dac46eb 100644 --- a/templates/repo/issue/labels/labels_selector_field.tmpl +++ b/templates/repo/issue/labels/labels_selector_field.tmpl @@ -21,8 +21,10 @@
{{end}} {{$previousExclusiveScope = $exclusiveScope}} - {{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}  {{RenderLabel $.Context .}} - {{if .Description}}
{{.Description | RenderEmoji $.Context}}{{end}}
+ {{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}  {{RenderLabel $.Context .}} + {{if .Description}}
{{.Description | RenderEmoji $.Context}}{{end}} +

{{template "repo/issue/labels/label_archived" .}}

+
{{end}}
{{$previousExclusiveScope = "_no_scope"}} @@ -32,8 +34,10 @@
{{end}} {{$previousExclusiveScope = $exclusiveScope}} - {{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}  {{RenderLabel $.Context .}} - {{if .Description}}
{{.Description | RenderEmoji $.Context}}{{end}}
+ {{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}  {{RenderLabel $.Context .}} + {{if .Description}}
{{.Description | RenderEmoji $.Context}}{{end}} +

{{template "repo/issue/labels/label_archived" .}}

+
{{end}} {{else}}
{{ctx.Locale.Tr "repo.issues.new.no_items"}}
diff --git a/web_src/css/repo/issue-label.css b/web_src/css/repo/issue-label.css index 1f83e81d96..9b4b144a00 100644 --- a/web_src/css/repo/issue-label.css +++ b/web_src/css/repo/issue-label.css @@ -45,3 +45,8 @@ .label-operation .label { height: fit-content; } + +.archived-label-hint { + float: right; + margin: -12px; +} diff --git a/web_src/js/features/repo-issue-list.js b/web_src/js/features/repo-issue-list.js index a9a8628ba7..ca20cfbe38 100644 --- a/web_src/js/features/repo-issue-list.js +++ b/web_src/js/features/repo-issue-list.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import {updateIssuesMeta} from './repo-issue.js'; -import {toggleElem} from '../utils/dom.js'; +import {toggleElem, hideElem} from '../utils/dom.js'; import {htmlEscape} from 'escape-goat'; import {confirmModal} from './comp/ConfirmModal.js'; import {showErrorToast} from '../modules/toast.js'; @@ -194,6 +194,10 @@ function initArchivedLabelFilter() { const url = new URL(window.location.href); const archivedLabels = document.querySelectorAll('[data-is-archived]'); + if (!archivedLabels.length) { + hideElem('.archived-label-filter'); + return; + } const selectedLabels = (url.searchParams.get('labels') || '') .split(',') .map((id) => id < 0 ? `${~id + 1}` : id); // selectedLabels contains -ve ids, which are excluded so convert any -ve value id to +ve diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 4f4103bb21..2cc0730af6 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -680,3 +680,16 @@ export function initIssueTemplateCommentEditors($commentForm) { initCombo($(el)); } } + +// This function used to show and hide archived label on issue/pr +// page in the sidebar where we select the labels +// If we have any archived label tagged to issue and pr. We will show that +// archived label with checked classed otherwise we will hide it +// with the help of this function. +// This function runs globally. +export function initArchivedLabelHandler() { + if (!document.querySelector('.archived-label-hint')) return; + for (const label of document.querySelectorAll('[data-is-archived]')) { + toggleElem(label, label.classList.contains('checked')); + } +} diff --git a/web_src/js/index.js b/web_src/js/index.js index 7ae4b0c0c7..4713618506 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -31,7 +31,7 @@ import { initRepoIssueWipTitle, initRepoPullRequestMergeInstruction, initRepoPullRequestAllowMaintainerEdit, - initRepoPullRequestReview, initRepoIssueSidebarList + initRepoPullRequestReview, initRepoIssueSidebarList, initArchivedLabelHandler, } from './features/repo-issue.js'; import { initRepoEllipsisButton, @@ -152,6 +152,7 @@ onDomReady(() => { initRepoIssueDue(); initRepoIssueList(); initRepoIssueSidebarList(); + initArchivedLabelHandler(); initRepoIssueReferenceRepositorySearch(); initRepoIssueTimeTracking(); initRepoIssueWipTitle();