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> | 						<div class="divider"></div> | ||||||
| 					{{end}} | 					{{end}} | ||||||
| 					{{$previousExclusiveScope = $exclusiveScope}} | 					{{$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 SliceUtils.Contains $.SelLabelIDs .ID}}{{if $exclusiveScope}}{{svg "octicon-dot-fill"}}{{else}}{{svg "octicon-check"}}{{end}}{{end}} {{RenderLabel $.Context .}} | ||||||
| 						{{if .IsArchived}} | 						{{template "repo/issue/labels/label_archived" .}} | ||||||
| 							<i data-tooltip-content={{ctx.Locale.Tr "archived"}}>{{svg "octicon-info"}}</i> |  | ||||||
| 						{{end}} |  | ||||||
| 					</div> | 					</div> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 			</div> | 			</div> | ||||||
|   | |||||||
| @@ -21,8 +21,10 @@ | |||||||
| 					<div class="divider"></div> | 					<div class="divider"></div> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				{{$previousExclusiveScope = $exclusiveScope}} | 				{{$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 .}} | 				<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}}</a> | 					{{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}} | 			{{end}} | ||||||
| 			<div class="divider"></div> | 			<div class="divider"></div> | ||||||
| 			{{$previousExclusiveScope = "_no_scope"}} | 			{{$previousExclusiveScope = "_no_scope"}} | ||||||
| @@ -32,8 +34,10 @@ | |||||||
| 					<div class="divider"></div> | 					<div class="divider"></div> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				{{$previousExclusiveScope = $exclusiveScope}} | 				{{$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 .}} | 				<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}}</a> | 					{{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}} | 			{{end}} | ||||||
| 		{{else}} | 		{{else}} | ||||||
| 			<div class="disabled item">{{ctx.Locale.Tr "repo.issues.new.no_items"}}</div> | 			<div class="disabled item">{{ctx.Locale.Tr "repo.issues.new.no_items"}}</div> | ||||||
|   | |||||||
| @@ -45,3 +45,8 @@ | |||||||
| .label-operation .label { | .label-operation .label { | ||||||
|   height: fit-content; |   height: fit-content; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .archived-label-hint { | ||||||
|  |   float: right; | ||||||
|  |   margin: -12px; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import $ from 'jquery'; | import $ from 'jquery'; | ||||||
| import {updateIssuesMeta} from './repo-issue.js'; | 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 {htmlEscape} from 'escape-goat'; | ||||||
| import {confirmModal} from './comp/ConfirmModal.js'; | import {confirmModal} from './comp/ConfirmModal.js'; | ||||||
| import {showErrorToast} from '../modules/toast.js'; | import {showErrorToast} from '../modules/toast.js'; | ||||||
| @@ -194,6 +194,10 @@ function initArchivedLabelFilter() { | |||||||
|   const url = new URL(window.location.href); |   const url = new URL(window.location.href); | ||||||
|   const archivedLabels = document.querySelectorAll('[data-is-archived]'); |   const archivedLabels = document.querySelectorAll('[data-is-archived]'); | ||||||
|  |  | ||||||
|  |   if (!archivedLabels.length) { | ||||||
|  |     hideElem('.archived-label-filter'); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|   const selectedLabels = (url.searchParams.get('labels') || '') |   const selectedLabels = (url.searchParams.get('labels') || '') | ||||||
|     .split(',') |     .split(',') | ||||||
|     .map((id) => id < 0 ? `${~id + 1}` : id); // selectedLabels contains -ve ids, which are excluded so convert any -ve value id to +ve |     .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)); |     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, |   initRepoIssueWipTitle, | ||||||
|   initRepoPullRequestMergeInstruction, |   initRepoPullRequestMergeInstruction, | ||||||
|   initRepoPullRequestAllowMaintainerEdit, |   initRepoPullRequestAllowMaintainerEdit, | ||||||
|   initRepoPullRequestReview, initRepoIssueSidebarList |   initRepoPullRequestReview, initRepoIssueSidebarList, initArchivedLabelHandler, | ||||||
| } from './features/repo-issue.js'; | } from './features/repo-issue.js'; | ||||||
| import { | import { | ||||||
|   initRepoEllipsisButton, |   initRepoEllipsisButton, | ||||||
| @@ -152,6 +152,7 @@ onDomReady(() => { | |||||||
|   initRepoIssueDue(); |   initRepoIssueDue(); | ||||||
|   initRepoIssueList(); |   initRepoIssueList(); | ||||||
|   initRepoIssueSidebarList(); |   initRepoIssueSidebarList(); | ||||||
|  |   initArchivedLabelHandler(); | ||||||
|   initRepoIssueReferenceRepositorySearch(); |   initRepoIssueReferenceRepositorySearch(); | ||||||
|   initRepoIssueTimeTracking(); |   initRepoIssueTimeTracking(); | ||||||
|   initRepoIssueWipTitle(); |   initRepoIssueWipTitle(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user