From 14be462646af7f8c4fd60b1212d27cc165c966dd Mon Sep 17 00:00:00 2001
From: Kerwin Bryant <kerwin612@qq.com>
Date: Tue, 4 Mar 2025 04:58:19 +0800
Subject: [PATCH] Refactor initRepoBranchTagSelector to use new init framework
 (#33776)

Make "initRepoBranchTagSelector" to use new init framework and fix the
abused "js-branch-tag-selector" styles

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
---
 templates/repo/branch_dropdown.tmpl | 3 ++-
 templates/repo/release/list.tmpl    | 1 +
 web_src/css/repo/release-tag.css    | 2 +-
 web_src/js/features/repo-legacy.ts  | 9 +++++----
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/templates/repo/branch_dropdown.tmpl b/templates/repo/branch_dropdown.tmpl
index 6efed3427f..f679b8744b 100644
--- a/templates/repo/branch_dropdown.tmpl
+++ b/templates/repo/branch_dropdown.tmpl
@@ -14,7 +14,8 @@
 
 Search "repo/branch_dropdown" in the template directory to find all occurrences.
 */}}
-<div class="js-branch-tag-selector {{if .ContainerClasses}}{{.ContainerClasses}}{{end}}"
+<div class="{{if .ContainerClasses}}{{.ContainerClasses}}{{end}}"
+	data-global-init="initRepoBranchTagSelector"
 	data-text-release-compare="{{ctx.Locale.Tr "repo.release.compare"}}"
 	data-text-branches="{{ctx.Locale.Tr "repo.branches"}}"
 	data-text-tags="{{ctx.Locale.Tr "repo.tags"}}"
diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl
index 88bd85ef4d..432c3309ce 100644
--- a/templates/repo/release/list.tmpl
+++ b/templates/repo/release/list.tmpl
@@ -21,6 +21,7 @@
 								{{$compareTarget = $release.Sha1}}
 							{{end}}
 							{{template "repo/branch_dropdown" dict
+								"ContainerClasses" "release-branch-tag-selector"
 								"Repository" $.Repository
 								"ShowTabTags" true
 								"DropdownFixedText" (ctx.Locale.Tr "repo.release.compare")
diff --git a/web_src/css/repo/release-tag.css b/web_src/css/repo/release-tag.css
index 32027dd886..bf8c1312f1 100644
--- a/web_src/css/repo/release-tag.css
+++ b/web_src/css/repo/release-tag.css
@@ -45,7 +45,7 @@
     display: flex;
     align-items: center;
   }
-  #release-list .js-branch-tag-selector {
+  #release-list .release-branch-tag-selector {
     margin-left: auto;
   }
   #release-list .branch-selector-dropdown .menu { /* open menu to left */
diff --git a/web_src/js/features/repo-legacy.ts b/web_src/js/features/repo-legacy.ts
index a1b53c1f41..f5a0af175a 100644
--- a/web_src/js/features/repo-legacy.ts
+++ b/web_src/js/features/repo-legacy.ts
@@ -1,3 +1,4 @@
+import {registerGlobalInitFunc} from '../modules/observer.ts';
 import {
   initRepoCommentFormAndSidebar,
   initRepoIssueBranchSelect, initRepoIssueCodeCommentCancel, initRepoIssueCommentDelete,
@@ -20,10 +21,10 @@ import {initRepoNew} from './repo-new.ts';
 import {createApp} from 'vue';
 import RepoBranchTagSelector from '../components/RepoBranchTagSelector.vue';
 
-function initRepoBranchTagSelector(selector: string) {
-  for (const elRoot of document.querySelectorAll(selector)) {
+function initRepoBranchTagSelector() {
+  registerGlobalInitFunc('initRepoBranchTagSelector', async (elRoot: HTMLInputElement) => {
     createApp(RepoBranchTagSelector, {elRoot}).mount(elRoot);
-  }
+  });
 }
 
 export function initBranchSelectorTabs() {
@@ -42,7 +43,7 @@ export function initRepository() {
   const pageContent = document.querySelector('.page-content.repository');
   if (!pageContent) return;
 
-  initRepoBranchTagSelector('.js-branch-tag-selector');
+  initRepoBranchTagSelector();
   initRepoCommentFormAndSidebar();
 
   // Labels