Use icon for pane toggle
This commit is contained in:
parent
eeb9dd15bf
commit
07d8ab257f
3 changed files with 21 additions and 6 deletions
|
|
@ -43,9 +43,9 @@ func renderShell(w http.ResponseWriter, active, readingPane string) {
|
||||||
fmt.Fprintf(w, `<!doctype html><html lang="de"><head><meta charset="utf-8">
|
fmt.Fprintf(w, `<!doctype html><html lang="de"><head><meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
<title>Mail-Graveyard</title>
|
<title>Mail-Graveyard</title>
|
||||||
<link rel="stylesheet" href="/static/style.css?v=20260706-5">
|
<link rel="stylesheet" href="/static/style.css?v=20260706-6">
|
||||||
<script src="/static/htmx.min.js"></script>
|
<script src="/static/htmx.min.js"></script>
|
||||||
<script src="/static/app.js?v=20260706-5" defer></script></head>
|
<script src="/static/app.js?v=20260706-6" defer></script></head>
|
||||||
<body class="ol2013">
|
<body class="ol2013">
|
||||||
<header class="ribbon">
|
<header class="ribbon">
|
||||||
<nav class="ribbon-tabs">
|
<nav class="ribbon-tabs">
|
||||||
|
|
|
||||||
|
|
@ -286,7 +286,7 @@ func renderInitialSourceSelectPane(body string) string {
|
||||||
for _, opt := range sourceAccountOptions() {
|
for _, opt := range sourceAccountOptions() {
|
||||||
fmt.Fprintf(&b, `<option value="%s">%s</option>`, html.EscapeString(opt.Value), html.EscapeString(opt.Label))
|
fmt.Fprintf(&b, `<option value="%s">%s</option>`, html.EscapeString(opt.Value), html.EscapeString(opt.Label))
|
||||||
}
|
}
|
||||||
b.WriteString(`</select></form><button class="btn secondary compact" type="button" hx-get="/view/target/select" hx-target="#read" hx-swap="innerHTML">Ziel</button></div><div class="read-body">`)
|
b.WriteString(`</select></form><button class="btn secondary compact mode-toggle" type="button" title="Zur Zielansicht wechseln" aria-label="Zur Zielansicht wechseln" hx-get="/view/target/select" hx-target="#read" hx-swap="innerHTML"><span class="swap-icon">⇄</span></button></div><div class="read-body">`)
|
||||||
b.WriteString(body)
|
b.WriteString(body)
|
||||||
b.WriteString(`</div>`)
|
b.WriteString(`</div>`)
|
||||||
return b.String()
|
return b.String()
|
||||||
|
|
@ -302,7 +302,7 @@ func renderInitialTargetSelectPane(selected string) string {
|
||||||
}
|
}
|
||||||
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
||||||
}
|
}
|
||||||
b.WriteString(`</select></form><button class="btn secondary compact" type="button" hx-get="/view/source/select" hx-target="#read" hx-swap="innerHTML">Quelle</button></div><div class="read-body"><div class="ef-empty">Nachricht waehlen.</div></div>`)
|
b.WriteString(`</select></form><button class="btn secondary compact mode-toggle" type="button" title="Zur Quellenansicht wechseln" aria-label="Zur Quellenansicht wechseln" hx-get="/view/source/select" hx-target="#read" hx-swap="innerHTML"><span class="swap-icon">⇄</span></button></div><div class="read-body"><div class="ef-empty">Nachricht waehlen.</div></div>`)
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -496,7 +496,7 @@ func renderTargetAccountSelect(account, folder, selected string, index int) stri
|
||||||
}
|
}
|
||||||
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(&b, `</select></form><button class="btn secondary compact" type="button" hx-get="/view/message?source=%s&folder=%s&index=%d&target_account=%s" hx-target="#read" hx-swap="innerHTML">Quelle</button></div>`,
|
fmt.Fprintf(&b, `</select></form><button class="btn secondary compact mode-toggle" type="button" title="Zur Quellenansicht wechseln" aria-label="Zur Quellenansicht wechseln" hx-get="/view/message?source=%s&folder=%s&index=%d&target_account=%s" hx-target="#read" hx-swap="innerHTML"><span class="swap-icon">⇄</span></button></div>`,
|
||||||
urlEsc(sourceDisplayLabel(account)), urlEsc(folder), index, urlEsc(selected))
|
urlEsc(sourceDisplayLabel(account)), urlEsc(folder), index, urlEsc(selected))
|
||||||
if account != "" && folder != "" && index >= 0 {
|
if account != "" && folder != "" && index >= 0 {
|
||||||
fmt.Fprintf(&b, `<div class="drop-zone" data-drop-target="manual-copy" data-source="%s" data-folder="%s" data-index="%d">Mail hier ablegen fuer manuellen Umzug</div>`,
|
fmt.Fprintf(&b, `<div class="drop-zone" data-drop-target="manual-copy" data-source="%s" data-folder="%s" data-index="%d">Mail hier ablegen fuer manuellen Umzug</div>`,
|
||||||
|
|
@ -520,7 +520,7 @@ func renderSourcePaneHead(account, folder, targetAccount string, index int) stri
|
||||||
}
|
}
|
||||||
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
fmt.Fprintf(&b, `<option value="%s"%s>%s</option>`, html.EscapeString(opt.Value), attr, html.EscapeString(opt.Label))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(&b, `</select></form><button class="btn secondary compact" type="button" hx-get="/view/target?source=%s&folder=%s&index=%d&target_account=%s" hx-target="#read" hx-swap="innerHTML">Ziel</button></div>`,
|
fmt.Fprintf(&b, `</select></form><button class="btn secondary compact mode-toggle" type="button" title="Zur Zielansicht wechseln" aria-label="Zur Zielansicht wechseln" hx-get="/view/target?source=%s&folder=%s&index=%d&target_account=%s" hx-target="#read" hx-swap="innerHTML"><span class="swap-icon">⇄</span></button></div>`,
|
||||||
urlEsc(sourceDisplayLabel(account)), urlEsc(folder), index, urlEsc(targetAccount))
|
urlEsc(sourceDisplayLabel(account)), urlEsc(folder), index, urlEsc(targetAccount))
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
frontend-js/dist/style.css
vendored
15
frontend-js/dist/style.css
vendored
|
|
@ -186,6 +186,21 @@ a.tree-node { display: block; color: inherit; text-decoration: none; }
|
||||||
.btn.secondary { background: #e1e1e1; color: var(--ol-text); border: 1px solid var(--ol-border); }
|
.btn.secondary { background: #e1e1e1; color: var(--ol-text); border: 1px solid var(--ol-border); }
|
||||||
.btn.secondary:hover { background: #d5d5d5; }
|
.btn.secondary:hover { background: #d5d5d5; }
|
||||||
.btn.compact { padding: 3px 9px; }
|
.btn.compact { padding: 3px 9px; }
|
||||||
|
.btn.mode-toggle {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.swap-icon {
|
||||||
|
display: block;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
.input, select, textarea {
|
.input, select, textarea {
|
||||||
border: 1px solid #abadb3; padding: 5px 7px; font: inherit; width: 100%;
|
border: 1px solid #abadb3; padding: 5px 7px; font: inherit; width: 100%;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue