summaryrefslogtreecommitdiffstats
path: root/web_src
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2024-05-02 19:12:43 +0800
committerGitHub <noreply@github.com>2024-05-02 11:12:43 +0000
commitd793f256c81358d3dd5b0b3dc31a45ba988f4a2c (patch)
treefe2862e2a6de6df56c51ef0424ad617f10927c30 /web_src
parente1a79ae0bf329bd68d66a74b218effc28a16440a (diff)
downloadgitea-d793f256c81358d3dd5b0b3dc31a45ba988f4a2c.tar.gz
gitea-d793f256c81358d3dd5b0b3dc31a45ba988f4a2c.zip
Fix branch selector UI (#30803) (#30819)
Backport #30803 by wxiaoguang Fix #30802 Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'web_src')
-rw-r--r--web_src/css/base.css1
-rw-r--r--web_src/css/repo.css85
-rw-r--r--web_src/js/components/RepoBranchTagSelector.vue48
-rw-r--r--web_src/js/features/repo-legacy.js25
4 files changed, 72 insertions, 87 deletions
diff --git a/web_src/css/base.css b/web_src/css/base.css
index bca581eae6..bf88adb453 100644
--- a/web_src/css/base.css
+++ b/web_src/css/base.css
@@ -875,6 +875,7 @@ input:-webkit-autofill:active,
.ui.dropdown .scrolling.menu {
border-color: var(--color-secondary);
+ border-radius: 0 0 var(--border-radius) var(--border-radius) !important;
}
.color-preview {
diff --git a/web_src/css/repo.css b/web_src/css/repo.css
index 0b46f6b69f..cc09ec94e2 100644
--- a/web_src/css/repo.css
+++ b/web_src/css/repo.css
@@ -2748,23 +2748,6 @@ tbody.commit-list {
}
}
-.branch-dropdown-button {
- max-width: 340px;
- vertical-align: bottom !important;
-}
-
-@media (min-width: 768px) and (max-width: 991.98px) {
- .branch-dropdown-button {
- max-width: 185px;
- }
-}
-
-@media (max-width: 767.98px) {
- .branch-dropdown-button {
- max-width: 165px;
- }
-}
-
.commit-status-header {
/* reset the default ".ui.attached.header" styles, to use the outer border */
border: none !important;
@@ -2841,32 +2824,70 @@ tbody.commit-list {
max-height: 200px;
}
-/* Branch tag selector - TODO: Merge this into the same selector on repo page */
-.repository .issue-content .issue-content-right .ui.grid .column.row {
- padding: 10px;
- padding-bottom: 0;
+.branch-selector-dropdown {
+ max-width: 100%;
}
-.repository .issue-content .issue-content-right .ui.grid .column.muted {
- padding: 0;
+
+.ui.dropdown.branch-selector-dropdown > .menu {
+ margin-top: 4px;
+}
+
+.branch-selector-dropdown .branch-dropdown-button {
+ margin: 0;
+ max-width: 340px;
+ line-height: var(--line-height-default);
+}
+
+/* FIXME: These media selectors are not ideal (just keep them from old code).
+ There are many different pages, some need the max-width while some others don't,
+ they should be tested and improved in the future. */
+@media (min-width: 768px) and (max-width: 991.98px) {
+ .branch-selector-dropdown .branch-dropdown-button {
+ max-width: 185px;
+ }
+}
+
+@media (max-width: 767.98px) {
+ .branch-selector-dropdown .branch-dropdown-button {
+ max-width: 165px;
+ }
}
-.repository .issue-content .issue-content-right .ui.grid .column.muted .text {
+
+.branch-selector-dropdown .branch-tag-tab {
+ padding: 0 10px;
+}
+
+.branch-selector-dropdown .branch-tag-item {
display: inline-block;
padding: 10px;
- width: 100%;
- text-align: center;
border: 1px solid transparent;
border-bottom: none;
}
-.repository .issue-content .issue-content-right .ui.grid .column.muted .text.black {
+
+.branch-selector-dropdown .branch-tag-item.active {
border-color: var(--color-secondary);
background: var(--color-menu);
border-top-left-radius: var(--border-radius);
border-top-right-radius: var(--border-radius);
}
-.repository .issue-content .issue-content-right .ui.dropdown .scrolling.menu {
- border-top: none;
-}
-.repository .issue-content .issue-content-right .branch-tag-divider {
- margin-top: -1px;
+
+.branch-selector-dropdown .branch-tag-divider {
+ margin-top: -1px !important;
border-top: 1px solid var(--color-secondary);
}
+
+.branch-selector-dropdown .scrolling.menu {
+ border-top: none !important;
+}
+
+.branch-selector-dropdown .menu .item .rss-icon {
+ visibility: hidden; /* only show RSS icon on hover */
+}
+
+.branch-selector-dropdown .menu .item:hover .rss-icon {
+ visibility: visible;
+}
+
+.branch-selector-dropdown .scrolling.menu .loading-indicator {
+ height: 4em;
+}
diff --git a/web_src/js/components/RepoBranchTagSelector.vue b/web_src/js/components/RepoBranchTagSelector.vue
index c13af14dea..8a741b68da 100644
--- a/web_src/js/components/RepoBranchTagSelector.vue
+++ b/web_src/js/components/RepoBranchTagSelector.vue
@@ -246,9 +246,9 @@ export function initRepoBranchTagSelector(selector) {
export default sfc; // activate IDE's Vue plugin
</script>
<template>
- <div class="ui dropdown custom">
- <button class="branch-dropdown-button gt-ellipsis ui basic small compact button tw-flex tw-m-0" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible">
- <span class="text tw-flex tw-items-center tw-mr-1 gt-ellipsis">
+ <div class="ui dropdown custom branch-selector-dropdown">
+ <div class="ui button branch-dropdown-button" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible">
+ <span class="flex-text-block gt-ellipsis">
<template v-if="release">{{ textReleaseCompare }}</template>
<template v-else>
<svg-icon v-if="isViewTag" name="octicon-tag"/>
@@ -257,7 +257,7 @@ export default sfc; // activate IDE's Vue plugin
</template>
</span>
<svg-icon name="octicon-triangle-down" :size="14" class-name="dropdown icon"/>
- </button>
+ </div>
<div class="menu transition" :class="{visible: menuVisible}" v-show="menuVisible" v-cloak>
<div class="ui icon search input">
<i class="icon"><svg-icon name="octicon-filter" :size="16"/></i>
@@ -317,43 +317,3 @@ export default sfc; // activate IDE's Vue plugin
</div>
</div>
</template>
-<style scoped>
-.branch-tag-tab {
- padding: 0 10px;
-}
-
-.branch-tag-item {
- display: inline-block;
- padding: 10px;
- border: 1px solid transparent;
- border-bottom: none;
-}
-
-.branch-tag-item.active {
- border-color: var(--color-secondary);
- background: var(--color-menu);
- border-top-left-radius: var(--border-radius);
- border-top-right-radius: var(--border-radius);
-}
-
-.branch-tag-divider {
- margin-top: -1px !important;
- border-top: 1px solid var(--color-secondary);
-}
-
-.scrolling.menu {
- border-top: none !important;
-}
-
-.menu .item .rss-icon {
- display: none; /* only show RSS icon on hover */
-}
-
-.menu .item:hover .rss-icon {
- display: inline-block;
-}
-
-.scrolling.menu .loading-indicator {
- height: 4em;
-}
-</style>
diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js
index 18d98c891d..670e60def0 100644
--- a/web_src/js/features/repo-legacy.js
+++ b/web_src/js/features/repo-legacy.js
@@ -19,7 +19,7 @@ import {initCompReactionSelector} from './comp/ReactionSelector.js';
import {initRepoSettingBranches} from './repo-settings.js';
import {initRepoPullRequestMergeForm} from './repo-issue-pr-form.js';
import {initRepoPullRequestCommitStatus} from './repo-issue-pr-status.js';
-import {hideElem, showElem} from '../utils/dom.js';
+import {hideElem, queryElemChildren, showElem} from '../utils/dom.js';
import {POST} from '../modules/fetch.js';
import {initRepoIssueCommentEdit} from './repo-issue-edit.js';
@@ -56,16 +56,19 @@ export function initRepoCommentForm() {
}
function initBranchSelector() {
- const $selectBranch = $('.ui.select-branch');
+ const elSelectBranch = document.querySelector('.ui.dropdown.select-branch');
+ const isForNewIssue = elSelectBranch.getAttribute('data-for-new-issue') === 'true';
+
+ const $selectBranch = $(elSelectBranch);
const $branchMenu = $selectBranch.find('.reference-list-menu');
- const $isNewIssue = $branchMenu.hasClass('new-issue');
- $branchMenu.find('.item:not(.no-select)').on('click', async function () {
- const selectedValue = $(this).data('id');
+ $branchMenu.find('.item:not(.no-select)').on('click', async function (e) {
+ e.preventDefault();
+ const selectedValue = $(this).data('id'); // eg: "refs/heads/my-branch"
const editMode = $('#editing_mode').val();
$($(this).data('id-selector')).val(selectedValue);
- if ($isNewIssue) {
- $selectBranch.find('.ui .branch-name').text($(this).data('name'));
- return;
+ if (isForNewIssue) {
+ elSelectBranch.querySelector('.text-branch-name').textContent = this.getAttribute('data-name');
+ return; // only update UI&form, do not send request/reload
}
if (editMode === 'true') {
@@ -84,9 +87,9 @@ export function initRepoCommentForm() {
});
$selectBranch.find('.reference.column').on('click', function () {
hideElem($selectBranch.find('.scrolling.reference-list-menu'));
- $selectBranch.find('.reference .text').removeClass('black');
- showElem($($(this).data('target')));
- $(this).find('.text').addClass('black');
+ showElem(this.getAttribute('data-target'));
+ queryElemChildren(this.parentNode, '.branch-tag-item', (el) => el.classList.remove('active'));
+ this.classList.add('active');
return false;
});
}