Skip to content

Commit 5853609

Browse files
HesterGsilverwind
andauthored
Add details summary for vertical menus in settings to allow toggling (#25098)
Close #25051 [referenced answer](https://stackoverflow.com/questions/10813581/can-i-replace-the-expand-icon-of-the-details-element/69722686#69722686) for marker overwrite. One limitation is that fomantic does not have hover and active effects for the vertical submenu ([reference](https://fomantic-ui.com/collections/menu.html#sub-menu)). And we might need to overwrite some styles if hover and active effects are needed. Update: Used `data:image/svg` instead of `marker` content. And adjusted styles for hover effect. Take admin settings as an example: https://github.com/go-gitea/gitea/assets/17645053/63f69823-ef43-47d5-a518-544b5ea35ba6 --------- Co-authored-by: silverwind <[email protected]>
1 parent 379ec13 commit 5853609

File tree

7 files changed

+56
-16
lines changed

7 files changed

+56
-16
lines changed

templates/admin/navbar.tmpl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,23 @@
3535
</a>
3636
{{end}}
3737
{{if .EnableActions}}
38-
<div class="item">
39-
{{.locale.Tr "actions.actions"}}
38+
<details class="item toggleable-item" {{if .PageIsSharedSettingsRunners}}open{{end}}>
39+
<summary>{{.locale.Tr "actions.actions"}}</summary>
4040
<div class="menu">
4141
<a class="{{if .PageIsSharedSettingsRunners}}active {{end}}item" href="{{AppSubUrl}}/admin/actions/runners">
4242
{{.locale.Tr "actions.runners"}}
4343
</a>
4444
</div>
45-
</div>
45+
</details>
4646
{{end}}
4747
<a class="{{if .PageIsAdminConfig}}active {{end}}item" href="{{AppSubUrl}}/admin/config">
4848
{{.locale.Tr "admin.config"}}
4949
</a>
5050
<a class="{{if .PageIsAdminNotices}}active {{end}}item" href="{{AppSubUrl}}/admin/notices">
5151
{{.locale.Tr "admin.notices"}}
5252
</a>
53-
<div class="item">
54-
{{.locale.Tr "admin.monitor"}}
53+
<details class="item toggleable-item" {{if or .PageIsAdminMonitorStats .PageIsAdminMonitorCron .PageIsAdminMonitorQueue .PageIsAdminMonitorStacktrace}}open{{end}}>
54+
<summary>{{.locale.Tr "admin.monitor"}}</summary>
5555
<div class="menu">
5656
<a class="{{if .PageIsAdminMonitorStats}}active {{end}}item" href="{{AppSubUrl}}/admin/monitor/stats">
5757
{{.locale.Tr "admin.monitor.stats"}}
@@ -66,6 +66,6 @@
6666
{{.locale.Tr "admin.monitor.stacktrace"}}
6767
</a>
6868
</div>
69-
</div>
69+
</details>
7070
</div>
7171
</div>

templates/org/settings/navbar.tmpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
</a>
2424
{{end}}
2525
{{if .EnableActions}}
26-
<div class="item">
27-
{{.locale.Tr "actions.actions"}}
26+
<details class="item toggleable-item" {{if or .PageIsSharedSettingsRunners .PageIsSharedSettingsSecrets}}open{{end}}>
27+
<summary>{{.locale.Tr "actions.actions"}}</summary>
2828
<div class="menu">
2929
<a class="{{if .PageIsSharedSettingsRunners}}active {{end}}item" href="{{.OrgLink}}/settings/actions/runners">
3030
{{.locale.Tr "actions.runners"}}
@@ -33,7 +33,7 @@
3333
{{.locale.Tr "secrets.secrets"}}
3434
</a>
3535
</div>
36-
</div>
36+
</details>
3737
{{end}}
3838
<a class="{{if .PageIsSettingsDelete}}active {{end}}item" href="{{.OrgLink}}/settings/delete">
3939
{{.locale.Tr "org.settings.delete"}}

templates/repo/settings/navbar.tmpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
</a>
3535
{{end}}
3636
{{if and .EnableActions (not .UnitActionsGlobalDisabled) (.Permission.CanRead $.UnitTypeActions)}}
37-
<div class="item">
38-
{{.locale.Tr "actions.actions"}}
37+
<details class="item toggleable-item" {{if or .PageIsSharedSettingsRunners .PageIsSharedSettingsSecrets}}open{{end}}>
38+
<summary>{{.locale.Tr "actions.actions"}}</summary>
3939
<div class="menu">
4040
<a class="{{if .PageIsSharedSettingsRunners}}active {{end}}item" href="{{.RepoLink}}/settings/actions/runners">
4141
{{.locale.Tr "actions.runners"}}
@@ -44,7 +44,7 @@
4444
{{.locale.Tr "secrets.secrets"}}
4545
</a>
4646
</div>
47-
</div>
47+
</details>
4848
{{end}}
4949
</div>
5050
</div>

templates/user/settings/navbar.tmpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
{{.locale.Tr "settings.ssh_gpg_keys"}}
2121
</a>
2222
{{if .EnableActions}}
23-
<div class="item">
24-
{{.locale.Tr "actions.actions"}}
23+
<details class="item toggleable-item" {{if or .PageIsSharedSettingsRunners .PageIsSharedSettingsSecrets}}open{{end}}>
24+
<summary>{{.locale.Tr "actions.actions"}}</summary>
2525
<div class="menu">
2626
<a class="{{if .PageIsSharedSettingsRunners}}active {{end}}item" href="{{AppSubUrl}}/user/settings/actions/runners">
2727
{{.locale.Tr "actions.runners"}}
@@ -30,7 +30,7 @@
3030
{{.locale.Tr "secrets.secrets"}}
3131
</a>
3232
</div>
33-
</div>
33+
</details>
3434
{{end}}
3535
{{if .EnablePackages}}
3636
<a class="{{if .PageIsSettingsPackages}}active {{end}}item" href="{{AppSubUrl}}/user/settings/packages">

web_src/css/base.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/* backgrounds */
1313
--checkbox-mask-checked: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1 -1 18 18" width="16" height="16"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>');
1414
--checkbox-mask-indeterminate: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M2 7.75A.75.75 0 012.75 7h10a.75.75 0 010 1.5h-10A.75.75 0 012 7.75z"></path></svg>');
15+
--octicon-chevron-right: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg>');
1516
/* non-color variables */
1617
--border-radius: 0.28571429rem;
1718
--opacity-disabled: 0.55;
@@ -534,7 +535,8 @@ a.label,
534535
}
535536

536537
.ui.menu .dropdown.item:hover,
537-
.ui.menu a.item:hover {
538+
.ui.menu a.item:hover,
539+
.ui.menu details.item summary:hover {
538540
color: var(--color-text);
539541
background: var(--color-hover);
540542
}

web_src/css/index.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
@import "./shared/issuelist.css";
1111
@import "./shared/repoorg.css";
12+
@import "./shared/settings.css";
1213

1314
@import "./features/dropzone.css";
1415
@import "./features/gitgraph.css";

web_src/css/shared/settings.css

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
details.toggleable-item {
2+
user-select: none !important;
3+
padding: 0 !important;
4+
}
5+
6+
details.toggleable-item .menu {
7+
margin: 4px 0 10px !important;
8+
}
9+
10+
details.toggleable-item summary {
11+
display: flex;
12+
justify-content: space-between;
13+
align-items: center;
14+
padding: 0.92857143em 1.14285714em;
15+
}
16+
17+
details.toggleable-item summary::marker, /* Chrome, Edge, Firefox */
18+
details.toggleable-item summary::-webkit-details-marker /* Safari */ {
19+
display: none;
20+
}
21+
22+
details.toggleable-item summary::after {
23+
transition: transform 0.25s ease;
24+
content: '';
25+
width: 14px;
26+
height: 14px;
27+
mask-size: cover;
28+
-webkit-mask-size: cover;
29+
mask-image: var(--octicon-chevron-right);
30+
-webkit-mask-image: var(--octicon-chevron-right);
31+
background: currentcolor;
32+
border: 1px solid var(--color-body); /* workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1671784 */
33+
}
34+
35+
details.toggleable-item[open] summary::after {
36+
transform: rotate(90deg);
37+
}

0 commit comments

Comments
 (0)