Skip to content

Commit a3bcc28

Browse files
committed
fix
1 parent 5675efb commit a3bcc28

File tree

14 files changed

+195
-252
lines changed

14 files changed

+195
-252
lines changed

modules/templates/helper.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func NewFuncMap() template.FuncMap {
4242
"HTMLFormat": htmlutil.HTMLFormat,
4343
"HTMLEscape": htmlEscape,
4444
"QueryEscape": queryEscape,
45-
"QueryBuild": queryBuild,
45+
"QueryBuild": QueryBuild,
4646
"JSEscape": jsEscapeSafe,
4747
"SanitizeHTML": SanitizeHTML,
4848
"URLJoin": util.URLJoin,
@@ -294,24 +294,24 @@ func timeEstimateString(timeSec any) string {
294294
return util.TimeEstimateString(v)
295295
}
296296

297-
func queryBuild(a ...any) template.URL {
297+
func QueryBuild(a ...any) template.URL {
298298
var s string
299299
if len(a)%2 == 1 {
300300
if v, ok := a[0].(string); ok {
301301
if v == "" || (v[0] != '?' && v[0] != '&') {
302-
panic("queryBuild: invalid argument")
302+
panic("QueryBuild: invalid argument")
303303
}
304304
s = v
305305
} else if v, ok := a[0].(template.URL); ok {
306306
s = string(v)
307307
} else {
308-
panic("queryBuild: invalid argument")
308+
panic("QueryBuild: invalid argument")
309309
}
310310
}
311311
for i := len(a) % 2; i < len(a); i += 2 {
312312
k, ok := a[i].(string)
313313
if !ok {
314-
panic("queryBuild: invalid argument")
314+
panic("QueryBuild: invalid argument")
315315
}
316316
var v string
317317
if va, ok := a[i+1].(string); ok {

routers/web/org/projects.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,7 @@ func ViewProject(ctx *context.Context) {
339339
// 0 means issues with no label
340340
// blank means labels will not be filtered for issues
341341
selectLabels := ctx.FormString("labels")
342-
if selectLabels == "" {
343-
ctx.Data["AllLabels"] = true
344-
} else if selectLabels == "0" {
345-
ctx.Data["NoLabel"] = true
346-
}
347-
if len(selectLabels) > 0 {
342+
if selectLabels != "" {
348343
labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
349344
if err != nil {
350345
ctx.Flash.Error(ctx.Tr("invalid_data", selectLabels), true)

routers/web/repo/issue_list.go

+22-22
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"bytes"
88
"fmt"
99
"net/http"
10-
"net/url"
1110
"strconv"
1211
"strings"
1312

@@ -23,6 +22,7 @@ import (
2322
"code.gitea.io/gitea/modules/log"
2423
"code.gitea.io/gitea/modules/optional"
2524
"code.gitea.io/gitea/modules/setting"
25+
"code.gitea.io/gitea/modules/templates"
2626
"code.gitea.io/gitea/modules/util"
2727
shared_user "code.gitea.io/gitea/routers/web/shared/user"
2828
"code.gitea.io/gitea/services/context"
@@ -531,12 +531,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
531531
// 0 means issues with no label
532532
// blank means labels will not be filtered for issues
533533
selectLabels := ctx.FormString("labels")
534-
if selectLabels == "" {
535-
ctx.Data["AllLabels"] = true
536-
} else if selectLabels == "0" {
537-
ctx.Data["NoLabel"] = true
538-
}
539-
if len(selectLabels) > 0 {
534+
if selectLabels != "" {
540535
labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
541536
if err != nil {
542537
ctx.Flash.Error(ctx.Tr("invalid_data", selectLabels), true)
@@ -616,8 +611,6 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
616611
ctx.Data["TotalTrackedTime"] = totalTrackedTime
617612
}
618613

619-
archived := ctx.FormBool("archived")
620-
621614
page := ctx.FormInt("page")
622615
if page <= 1 {
623616
page = 1
@@ -792,21 +785,28 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
792785
return
793786
}
794787

788+
showArchivedLabels := ctx.FormBool("archived_labels")
789+
ctx.Data["ShowArchivedLabels"] = showArchivedLabels
795790
ctx.Data["PinnedIssues"] = pinned
796791
ctx.Data["IsRepoAdmin"] = ctx.IsSigned && (ctx.Repo.IsAdmin() || ctx.Doer.IsAdmin)
797792
ctx.Data["IssueStats"] = issueStats
798793
ctx.Data["OpenCount"] = issueStats.OpenCount
799794
ctx.Data["ClosedCount"] = issueStats.ClosedCount
800-
linkStr := "%s?q=%s&type=%s&sort=%s&state=%s&labels=%s&milestone=%d&project=%d&assignee=%d&poster=%v&archived=%t"
801-
ctx.Data["AllStatesLink"] = fmt.Sprintf(linkStr, ctx.Link,
802-
url.QueryEscape(keyword), url.QueryEscape(viewType), url.QueryEscape(sortType), "all", url.QueryEscape(selectLabels),
803-
milestoneID, projectID, assigneeID, url.QueryEscape(posterUsername), archived)
804-
ctx.Data["OpenLink"] = fmt.Sprintf(linkStr, ctx.Link,
805-
url.QueryEscape(keyword), url.QueryEscape(viewType), url.QueryEscape(sortType), "open", url.QueryEscape(selectLabels),
806-
milestoneID, projectID, assigneeID, url.QueryEscape(posterUsername), archived)
807-
ctx.Data["ClosedLink"] = fmt.Sprintf(linkStr, ctx.Link,
808-
url.QueryEscape(keyword), url.QueryEscape(viewType), url.QueryEscape(sortType), "closed", url.QueryEscape(selectLabels),
809-
milestoneID, projectID, assigneeID, url.QueryEscape(posterUsername), archived)
795+
linkStrQuery := templates.QueryBuild("?",
796+
"q", keyword,
797+
"type", viewType,
798+
"sort", sortType,
799+
"state", ctx.FormString("state"),
800+
"labels", selectLabels,
801+
"milestone", milestoneID,
802+
"project", projectID,
803+
"assignee", assigneeID,
804+
"poster", posterUsername,
805+
"archived_labels", util.Iif(showArchivedLabels, "true", ""),
806+
)
807+
ctx.Data["AllStatesLink"] = ctx.Link + string(templates.QueryBuild(linkStrQuery, "state", "all"))
808+
ctx.Data["OpenLink"] = ctx.Link + string(templates.QueryBuild(linkStrQuery, "state", "open"))
809+
ctx.Data["ClosedLink"] = ctx.Link + string(templates.QueryBuild(linkStrQuery, "state", "closed"))
810810
ctx.Data["SelLabelIDs"] = labelIDs
811811
ctx.Data["SelectLabels"] = selectLabels
812812
ctx.Data["ViewType"] = viewType
@@ -825,7 +825,6 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
825825
default:
826826
ctx.Data["State"] = "open"
827827
}
828-
ctx.Data["ShowArchivedLabels"] = archived
829828

830829
pager.AddParamString("q", keyword)
831830
pager.AddParamString("type", viewType)
@@ -836,8 +835,9 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
836835
pager.AddParamString("project", fmt.Sprint(projectID))
837836
pager.AddParamString("assignee", fmt.Sprint(assigneeID))
838837
pager.AddParamString("poster", posterUsername)
839-
pager.AddParamString("archived", fmt.Sprint(archived))
840-
838+
if showArchivedLabels {
839+
pager.AddParamString("archived_labels", "true")
840+
}
841841
ctx.Data["Page"] = pager
842842
}
843843

routers/web/repo/projects.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,7 @@ func ViewProject(ctx *context.Context) {
312312
// 0 means issues with no label
313313
// blank means labels will not be filtered for issues
314314
selectLabels := ctx.FormString("labels")
315-
if selectLabels == "" {
316-
ctx.Data["AllLabels"] = true
317-
} else if selectLabels == "0" {
318-
ctx.Data["NoLabel"] = true
319-
}
320-
if len(selectLabels) > 0 {
315+
if selectLabels != "" {
321316
labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
322317
if err != nil {
323318
ctx.Flash.Error(ctx.Tr("invalid_data", selectLabels), true)

templates/projects/view.tmpl

+5-54
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,8 @@
55
<h2 class="tw-mb-0 tw-flex-1 tw-break-anywhere">{{.Project.Title}}</h2>
66
<div class="project-toolbar-right">
77
<div class="ui secondary filter menu labels">
8-
<!-- Label -->
9-
<div class="ui {{if not .Labels}}disabled{{end}} dropdown jump item label-filter">
10-
<span class="text">
11-
{{ctx.Locale.Tr "repo.issues.filter_label"}}
12-
</span>
13-
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
14-
<div class="menu">
15-
<div class="ui icon search input">
16-
<i class="icon">{{svg "octicon-search" 16}}</i>
17-
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_label"}}">
18-
</div>
19-
<div class="ui checkbox compact archived-label-filter">
20-
<input name="archived" type="checkbox"
21-
id="archived-filter-checkbox"
22-
{{if .ShowArchivedLabels}}checked{{end}}
23-
>
24-
<label for="archived-filter-checkbox">
25-
{{ctx.Locale.Tr "repo.issues.label_archived_filter"}}
26-
<i class="tw-ml-1" data-tooltip-content={{ctx.Locale.Tr "repo.issues.label_archive_tooltip"}}>
27-
{{svg "octicon-info"}}
28-
</i>
29-
</label>
30-
</div>
31-
<span class="info">{{ctx.Locale.Tr "repo.issues.filter_label_exclude"}}</span>
32-
<div class="divider"></div>
33-
<a class="{{if .AllLabels}}active selected {{end}}item" href="?assignee={{$.AssigneeID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_label_no_select"}}</a>
34-
<a class="{{if .NoLabel}}active selected {{end}}item" href="?assignee={{$.AssigneeID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_label_select_no_label"}}</a>
35-
{{$previousExclusiveScope := "_no_scope"}}
36-
{{range .Labels}}
37-
{{$exclusiveScope := .ExclusiveScope}}
38-
{{if and (ne $previousExclusiveScope $exclusiveScope)}}
39-
<div class="divider" data-scope="{{.ExclusiveScope}}"></div>
40-
{{end}}
41-
{{$previousExclusiveScope = $exclusiveScope}}
42-
<a class="item label-filter-item tw-flex tw-items-center" data-label-id="{{.ID}}" data-scope="{{.ExclusiveScope}}" {{if .IsArchived}}data-is-archived{{end}}
43-
href="?labels={{.QueryString}}&assignee={{$.AssigneeID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
44-
{{if .IsExcluded}}
45-
{{svg "octicon-circle-slash"}}
46-
{{else if .IsSelected}}
47-
{{if $exclusiveScope}}
48-
{{svg "octicon-dot-fill"}}
49-
{{else}}
50-
{{svg "octicon-check"}}
51-
{{end}}
52-
{{end}}
53-
{{ctx.RenderUtils.RenderLabel .}}
54-
<p class="tw-ml-auto">{{template "repo/issue/labels/label_archived" .}}</p>
55-
</a>
56-
{{end}}
57-
</div>
58-
</div>
8+
{{$queryLink := QueryBuild "?" "labels" .SelectLabels "assignee" (IfZero $.AssigneeID NIL) "archived_labels" (Iif $.ShowArchivedLabels NIL)}}
9+
{{template "repo/issue/filter_item_label" dict "Labels" .Labels "QueryLink" $queryLink "SupportArchivedLabel" true}}
5910

6011
<!-- Assignee -->
6112
<div class="ui {{if not .Assignees}}disabled{{end}} dropdown jump item">
@@ -68,11 +19,11 @@
6819
<i class="icon">{{svg "octicon-search" 16}}</i>
6920
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_assignee"}}">
7021
</div>
71-
<a class="{{if not .AssigneeID}}active selected {{end}}item" href="?labels={{.SelectLabels}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
72-
<a class="{{if eq .AssigneeID -1}}active selected {{end}}item" href="?labels={{.SelectLabels}}&assignee=-1{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_assignee"}}</a>
22+
<a class="{{if not .AssigneeID}}selected {{end}}item" href="{{QueryBuild $queryLink "assignee" NIL}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
23+
<a class="{{if eq .AssigneeID -1}}selected {{end}}item" href="{{QueryBuild $queryLink "assignee" -1}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_assignee"}}</a>
7324
<div class="divider"></div>
7425
{{range .Assignees}}
75-
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item tw-flex" href="?labels={{$.SelectLabels}}&assignee={{.ID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
26+
<a class="{{if eq $.AssigneeID .ID}}selected{{end}} item tw-flex" href="{{QueryBuild $queryLink "assignee" .ID}}">
7627
{{ctx.AvatarUtils.Avatar . 20}}{{template "repo/search_name" .}}
7728
</a>
7829
{{end}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{{/*
2+
* "labels" from query string
3+
* QueryLink
4+
* SupportArchivedLabel, if true, then it needs "archived_labes" from query string
5+
*/}}
6+
{{$queryLink := .QueryLink}}
7+
<div class="item ui {{if not .Labels}}disabled{{end}} dropdown jump label-filter">
8+
<span class="text">{{ctx.Locale.Tr "repo.issues.filter_label"}}</span>
9+
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
10+
<div class="menu flex-items-menu">
11+
<div class="ui icon search input">
12+
<i class="icon">{{svg "octicon-search" 16}}</i>
13+
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_label"}}">
14+
</div>
15+
{{if .SupportArchivedLabel}}{{/* this checkbox has a hard dependency with the "labels" and "archived_label" query parameter */}}
16+
<label class="label-filter-archived-toggle flex-text-block">
17+
<input type="checkbox"> {{ctx.Locale.Tr "repo.issues.label_archived_filter"}}
18+
<span data-tooltip-content={{ctx.Locale.Tr "repo.issues.label_archive_tooltip"}}>{{svg "octicon-info"}}</span>
19+
</label>
20+
{{end}}
21+
<span class="info">{{ctx.Locale.Tr "repo.issues.filter_label_exclude"}}</span>
22+
<div class="divider"></div>
23+
<a class="item label-filter-query-default" href="{{QueryBuild $queryLink "labels" NIL}}">{{ctx.Locale.Tr "repo.issues.filter_label_no_select"}}</a>
24+
<a class="item label-filter-query-not-set" href="{{QueryBuild $queryLink "labels" 0}}">{{ctx.Locale.Tr "repo.issues.filter_label_select_no_label"}}</a>
25+
{{$previousExclusiveScope := "_no_scope"}}
26+
{{range .Labels}}
27+
{{$exclusiveScope := .ExclusiveScope}}
28+
{{if and (ne $previousExclusiveScope $exclusiveScope)}}
29+
<div class="divider" data-scope="{{.ExclusiveScope}}"></div>
30+
{{end}}
31+
{{$previousExclusiveScope = $exclusiveScope}}
32+
<a class="item label-filter-query-item" data-label-id="{{.ID}}" data-scope="{{.ExclusiveScope}}" {{if .IsArchived}}data-is-archived{{end}}
33+
href="{{QueryBuild $queryLink "labels" .QueryString}}">
34+
{{if .IsExcluded}}
35+
{{svg "octicon-circle-slash"}}
36+
{{else if .IsSelected}}
37+
{{Iif $exclusiveScope (svg "octicon-dot-fill") (svg "octicon-check")}}
38+
{{end}}
39+
{{ctx.RenderUtils.RenderLabel .}}
40+
<p class="tw-ml-auto">{{template "repo/issue/labels/label_archived" .}}</p>
41+
</a>
42+
{{end}}
43+
</div>
44+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{$queryLink := .QueryLink}}
2+
<div class="item ui dropdown jump user-remote-search" data-tooltip-content="{{ctx.Locale.Tr "repo.author_search_tooltip"}}"
3+
data-search-url="{{if .Milestone}}{{$.RepoLink}}/issues/posters{{else}}{{$.Link}}/posters{{end}}"
4+
data-selected-user-id="{{$.PosterID}}"
5+
data-action-jump-url="{{QueryBuild $queryLink "poster" NIL}}&poster={username}"
6+
>
7+
<span class="text">{{ctx.Locale.Tr "repo.issues.filter_poster"}}</span>
8+
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
9+
<div class="menu">
10+
<div class="ui icon search input">
11+
<i class="icon">{{svg "octicon-search" 16}}</i>
12+
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_poster"}}">
13+
</div>
14+
<a class="item" data-value="">{{ctx.Locale.Tr "repo.issues.filter_poster_no_select"}}</a>
15+
</div>
16+
</div>

templates/repo/issue/filter_list.tmpl

+4-70
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,6 @@
1-
{{$queryLink := QueryBuild "?" "q" $.Keyword "type" $.ViewType "sort" $.SortType "state" $.State "labels" $.SelectLabels "milestone" $.MilestoneID "project" $.ProjectID "assignee" $.AssigneeID "poster" $.PosterUsername "archived" (Iif $.ShowArchivedLabels NIL)}}
2-
<!-- Label -->
3-
<div class="ui {{if not .Labels}}disabled{{end}} dropdown jump item label-filter">
4-
<span class="text">
5-
{{ctx.Locale.Tr "repo.issues.filter_label"}}
6-
</span>
7-
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
8-
<div class="menu">
9-
<div class="ui icon search input">
10-
<i class="icon">{{svg "octicon-search" 16}}</i>
11-
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_label"}}">
12-
</div>
13-
<div class="ui checkbox compact archived-label-filter">
14-
<input name="archived" type="checkbox"
15-
id="archived-filter-checkbox"
16-
{{if .ShowArchivedLabels}}checked{{end}}
17-
>
18-
<label for="archived-filter-checkbox">
19-
{{ctx.Locale.Tr "repo.issues.label_archived_filter"}}
20-
<i class="tw-ml-1" data-tooltip-content={{ctx.Locale.Tr "repo.issues.label_archive_tooltip"}}>
21-
{{svg "octicon-info"}}
22-
</i>
23-
</label>
24-
</div>
25-
<span class="info">{{ctx.Locale.Tr "repo.issues.filter_label_exclude"}}</span>
26-
<div class="divider"></div>
27-
<a class="{{if .AllLabels}}active selected {{end}}item" href="{{QueryBuild $queryLink "labels" NIL}}">{{ctx.Locale.Tr "repo.issues.filter_label_no_select"}}</a>
28-
<a class="{{if .NoLabel}}active selected {{end}}item" href="{{QueryBuild $queryLink "labels" 0}}">{{ctx.Locale.Tr "repo.issues.filter_label_select_no_label"}}</a>
29-
{{$previousExclusiveScope := "_no_scope"}}
30-
{{range .Labels}}
31-
{{$exclusiveScope := .ExclusiveScope}}
32-
{{if and (ne $previousExclusiveScope $exclusiveScope)}}
33-
<div class="divider" data-scope="{{.ExclusiveScope}}"></div>
34-
{{end}}
35-
{{$previousExclusiveScope = $exclusiveScope}}
36-
<a class="item label-filter-item tw-flex tw-items-center" data-label-id="{{.ID}}" data-scope="{{.ExclusiveScope}}" {{if .IsArchived}}data-is-archived{{end}}
37-
href="{{QueryBuild $queryLink "labels" .QueryString}}">
38-
{{if .IsExcluded}}
39-
{{svg "octicon-circle-slash"}}
40-
{{else if .IsSelected}}
41-
{{if $exclusiveScope}}
42-
{{svg "octicon-dot-fill"}}
43-
{{else}}
44-
{{svg "octicon-check"}}
45-
{{end}}
46-
{{end}}
47-
{{ctx.RenderUtils.RenderLabel .}}
48-
<p class="tw-ml-auto">{{template "repo/issue/labels/label_archived" .}}</p>
49-
</a>
50-
{{end}}
51-
</div>
52-
</div>
1+
{{$queryLink := QueryBuild "?" "q" $.Keyword "type" $.ViewType "sort" $.SortType "state" $.State "labels" $.SelectLabels "milestone" $.MilestoneID "project" $.ProjectID "assignee" (IfZero $.AssigneeID NIL) "poster" $.PosterUsername "archived_label" (Iif $.ShowArchivedLabels NIL)}}
2+
3+
{{template "repo/issue/filter_item_label" dict "Labels" .Labels "QueryLink" $queryLink "SupportArchivedLabel" true}}
534

545
{{if not .Milestone}}
556
<!-- Milestone -->
@@ -128,24 +79,7 @@
12879
</div>
12980
</div>
13081

131-
<!-- Author -->
132-
<div class="ui dropdown jump item user-remote-search" data-tooltip-content="{{ctx.Locale.Tr "repo.author_search_tooltip"}}"
133-
data-search-url="{{if .Milestone}}{{$.RepoLink}}/issues/posters{{else}}{{$.Link}}/posters{{end}}"
134-
data-selected-user-id="{{$.PosterID}}"
135-
data-action-jump-url="{{QueryBuild $queryLink "poster" NIL}}&poster={username}"
136-
>
137-
<span class="text">
138-
{{ctx.Locale.Tr "repo.issues.filter_poster"}}
139-
</span>
140-
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
141-
<div class="menu">
142-
<div class="ui icon search input">
143-
<i class="icon">{{svg "octicon-search" 16}}</i>
144-
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_poster"}}">
145-
</div>
146-
<a class="item" data-value="0">{{ctx.Locale.Tr "repo.issues.filter_poster_no_select"}}</a>
147-
</div>
148-
</div>
82+
{{template "repo/issue/filter_item_poster" dict "." . "QueryLink" $queryLink}}
14983

15084
<!-- Assignee -->
15185
<div class="ui {{if not .Assignees}}disabled{{end}} dropdown jump item">

web_src/css/base.css

+3-2
Original file line numberDiff line numberDiff line change
@@ -1390,8 +1390,9 @@ table th[data-sortt-desc] .svg {
13901390
min-width: 0;
13911391
}
13921392

1393-
/* to override Fomantic's default display: block for ".menu .item", and use a slightly larger gap for menu item content */
1394-
.ui.dropdown .menu.flex-items-menu > .item {
1393+
/* to override Fomantic's default display: block for ".menu .item", and use a slightly larger gap for menu item content
1394+
the "!important" is necessary to override Fomantic UI menu item styles, meanwhile we should keep the "hidden" items still hidden */
1395+
.ui.dropdown .menu.flex-items-menu > .item:not(.hidden, .filtered, .tw-hidden) {
13951396
display: flex !important;
13961397
align-items: center;
13971398
gap: .5rem;

0 commit comments

Comments
 (0)