mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Hide archived labels by default from the suggestions when assigning labels for an issue (#27451)
Followup of #27115 Finally closes #25237 ## Screenshots ### Issue Sidebar <img width="513" alt="image" src="https://github.com/go-gitea/gitea/assets/80308335/9f7fda2f-5a03-4684-8619-fd3498a95b41"> ### PR sidebar <img width="367" alt="image" src="https://github.com/go-gitea/gitea/assets/80308335/53db9b64-faec-4a67-91d6-76945596a469"> ### PR sidebar with archived labels shown <img width="352" alt="image" src="https://github.com/go-gitea/gitea/assets/80308335/9dc5050f-4e69-4f76-bb83-582480a2281e"> --------- Signed-off-by: puni9869 <punitinani1@hotmail.com> Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
		| @@ -29,11 +29,9 @@ | ||||
| 						<div class="divider"></div> | ||||
| 					{{end}} | ||||
| 					{{$previousExclusiveScope = $exclusiveScope}} | ||||
| 					<div class="item issue-action gt-df gt-items-start" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels"> | ||||
| 					<div class="item issue-action gt-df gt-sb" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels"> | ||||
| 						{{if SliceUtils.Contains $.SelLabelIDs .ID}}{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}{{end}} {{RenderLabel $.Context .}} | ||||
| 						{{if .IsArchived}} | ||||
| 							<i data-tooltip-content={{ctx.Locale.Tr "archived"}}>{{svg "octicon-info"}}</i> | ||||
| 						{{end}} | ||||
| 						{{template "repo/issue/labels/label_archived" .}} | ||||
| 					</div> | ||||
| 				{{end}} | ||||
| 			</div> | ||||
|   | ||||
| @@ -21,8 +21,10 @@ | ||||
| 					<div class="divider"></div> | ||||
| 				{{end}} | ||||
| 				{{$previousExclusiveScope = $exclusiveScope}} | ||||
| 				<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}" data-scope="{{$exclusiveScope}}"><span class="octicon-check {{if not .IsChecked}}gt-invisible{{end}}">{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}</span>  {{RenderLabel $.Context .}} | ||||
| 				{{if .Description}}<br><small class="desc">{{.Description | RenderEmoji $.Context}}</small>{{end}}</a> | ||||
| 				<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" {{if .IsArchived}}data-is-archived{{end}} data-id-selector="#label_{{.ID}}" data-scope="{{$exclusiveScope}}"><span class="octicon-check {{if not .IsChecked}}gt-invisible{{end}}">{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}</span>  {{RenderLabel $.Context .}} | ||||
| 					{{if .Description}}<br><small class="desc">{{.Description | RenderEmoji $.Context}}</small>{{end}} | ||||
| 					<p class="archived-label-hint">{{template "repo/issue/labels/label_archived" .}}</p> | ||||
| 				</a> | ||||
| 			{{end}} | ||||
| 			<div class="divider"></div> | ||||
| 			{{$previousExclusiveScope = "_no_scope"}} | ||||
| @@ -32,8 +34,10 @@ | ||||
| 					<div class="divider"></div> | ||||
| 				{{end}} | ||||
| 				{{$previousExclusiveScope = $exclusiveScope}} | ||||
| 				<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}" data-scope="{{$exclusiveScope}}"><span class="octicon-check {{if not .IsChecked}}gt-invisible{{end}}">{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}</span>  {{RenderLabel $.Context .}} | ||||
| 				{{if .Description}}<br><small class="desc">{{.Description | RenderEmoji $.Context}}</small>{{end}}</a> | ||||
| 				<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" {{if .IsArchived}}data-is-archived{{end}} data-id-selector="#label_{{.ID}}" data-scope="{{$exclusiveScope}}"><span class="octicon-check {{if not .IsChecked}}gt-invisible{{end}}">{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}</span>  {{RenderLabel $.Context .}} | ||||
| 					{{if .Description}}<br><small class="desc">{{.Description | RenderEmoji $.Context}}</small>{{end}} | ||||
| 					<p class="archived-label-hint">{{template "repo/issue/labels/label_archived" .}}</p> | ||||
| 				</a> | ||||
| 			{{end}} | ||||
| 		{{else}} | ||||
| 			<div class="disabled item">{{ctx.Locale.Tr "repo.issues.new.no_items"}}</div> | ||||
|   | ||||
| @@ -45,3 +45,8 @@ | ||||
| .label-operation .label { | ||||
|   height: fit-content; | ||||
| } | ||||
|  | ||||
| .archived-label-hint { | ||||
|   float: right; | ||||
|   margin: -12px; | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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')); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user