mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-24 08:57:03 -05:00
[v7.0/forgejo] ui: fix issue labels
* Fixes https://codeberg.org/forgejo/forgejo/issues/4522 * Fixes https://codeberg.org/forgejo/forgejo/issues/4522#issuecomment-2095542 * Fixes https://codeberg.org/forgejo/forgejo/issues/4544 * Fixes regression of https://codeberg.org/forgejo/forgejo/pulls/4486 * Fixes regression of some cherry-pick * Fixes an overflow that wasn't even reported * Revert changes done in https://codeberg.org/forgejo/forgejo/pulls/4486. * Apply changes proposed in https://codeberg.org/forgejo/forgejo/issues/3875#issuecomment-1840611. * Introduce new label `ugc-labels` to mark ui labels that are named by users and therefore need special care. Currently the generic label classes are used for too many things to work with them directly without affecting other UI.
This commit is contained in:
parent
8d8cd3aad8
commit
2dc87d389d
4 changed files with 22 additions and 26 deletions
|
@ -5,7 +5,7 @@
|
||||||
{{svg "octicon-gear" 16 "tw-ml-1"}}
|
{{svg "octicon-gear" 16 "tw-ml-1"}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</span>
|
</span>
|
||||||
<div class="filter menu" {{if .Issue}}data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/labels"{{else}}data-id="#label_ids"{{end}}>
|
<div class="filter menu ugc-labels" {{if .Issue}}data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/labels"{{else}}data-id="#label_ids"{{end}}>
|
||||||
{{if or .Labels .OrgLabels}}
|
{{if or .Labels .OrgLabels}}
|
||||||
<div class="ui icon search input">
|
<div class="ui icon search input">
|
||||||
<i class="icon">{{svg "octicon-search" 16}}</i>
|
<i class="icon">{{svg "octicon-search" 16}}</i>
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
<div class="ui labels list">
|
<div class="ui labels list">
|
||||||
<span class="no-select item {{if .root.HasSelectedLabel}}tw-hidden{{end}}">{{ctx.Locale.Tr "repo.issues.new.no_label"}}</span>
|
<span class="no-select {{if .root.HasSelectedLabel}}tw-hidden{{end}}">{{ctx.Locale.Tr "repo.issues.new.no_label"}}</span>
|
||||||
{{if .root.HasSelectedLabel}}
|
<span class="labels-list ugc-labels">
|
||||||
<span class="labels-list">
|
{{range .root.Labels}}
|
||||||
{{range .root.Labels}}
|
{{template "repo/issue/labels/label" dict "root" $.root "label" .}}
|
||||||
{{template "repo/issue/labels/label" dict "root" $.root "label" .}}
|
{{end}}
|
||||||
{{end}}
|
{{range .root.OrgLabels}}
|
||||||
{{range .root.OrgLabels}}
|
{{template "repo/issue/labels/label" dict "root" $.root "label" .}}
|
||||||
{{template "repo/issue/labels/label" dict "root" $.root "label" .}}
|
{{end}}
|
||||||
{{end}}
|
</span>
|
||||||
</span>
|
|
||||||
{{end}}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -942,10 +942,11 @@ func TestIssueUnsubscription(t *testing.T) {
|
||||||
|
|
||||||
func TestIssueLabelList(t *testing.T) {
|
func TestIssueLabelList(t *testing.T) {
|
||||||
defer tests.PrepareTestEnv(t)()
|
defer tests.PrepareTestEnv(t)()
|
||||||
|
// The label list should always be present. When no labels are selected, .no-select is visible, otherwise hidden.
|
||||||
labelListSelector := ".labels.list .labels-list"
|
labelListSelector := ".labels.list .labels-list"
|
||||||
hiddenClass := "tw-hidden"
|
hiddenClass := "tw-hidden"
|
||||||
|
|
||||||
t.Run("Show label list", func(t *testing.T) {
|
t.Run("Test label list", func(t *testing.T) {
|
||||||
defer tests.PrintCurrentTest(t)()
|
defer tests.PrintCurrentTest(t)()
|
||||||
|
|
||||||
req := NewRequest(t, "GET", "/user2/repo1/issues/1")
|
req := NewRequest(t, "GET", "/user2/repo1/issues/1")
|
||||||
|
@ -953,18 +954,6 @@ func TestIssueLabelList(t *testing.T) {
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
|
|
||||||
htmlDoc.AssertElement(t, labelListSelector, true)
|
htmlDoc.AssertElement(t, labelListSelector, true)
|
||||||
htmlDoc.AssertElement(t, ".labels.list .no-select.item."+hiddenClass, true)
|
htmlDoc.AssertElement(t, ".labels.list .no-select."+hiddenClass, true)
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Show no label list", func(t *testing.T) {
|
|
||||||
defer tests.PrintCurrentTest(t)()
|
|
||||||
session := loginUser(t, "user2")
|
|
||||||
|
|
||||||
req := NewRequest(t, "GET", "/user2/repo2/issues/1")
|
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
|
||||||
|
|
||||||
htmlDoc.AssertElement(t, labelListSelector, false)
|
|
||||||
htmlDoc.AssertElement(t, ".labels.list .no-select.item:not([class*='"+hiddenClass+"'])", true)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,15 @@ a.ui.label:hover {
|
||||||
display: inline-block !important;
|
display: inline-block !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ugc-labels .item {
|
||||||
|
text-overflow: unset !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ugc-labels .item .ui.label {
|
||||||
|
text-wrap: auto;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
.ui.basic.label {
|
.ui.basic.label {
|
||||||
background: var(--color-button);
|
background: var(--color-button);
|
||||||
border: 1px solid var(--color-light-border);
|
border: 1px solid var(--color-light-border);
|
||||||
|
|
Loading…
Reference in a new issue