diff options
author | Giteabot <teabot@gitea.io> | 2024-05-02 19:12:43 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 11:12:43 +0000 |
commit | d793f256c81358d3dd5b0b3dc31a45ba988f4a2c (patch) | |
tree | fe2862e2a6de6df56c51ef0424ad617f10927c30 /web_src | |
parent | e1a79ae0bf329bd68d66a74b218effc28a16440a (diff) | |
download | gitea-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.css | 1 | ||||
-rw-r--r-- | web_src/css/repo.css | 85 | ||||
-rw-r--r-- | web_src/js/components/RepoBranchTagSelector.vue | 48 | ||||
-rw-r--r-- | web_src/js/features/repo-legacy.js | 25 |
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; }); } |