diff --git a/Cargo.lock b/Cargo.lock index 3768234..02bb6ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2581,7 +2581,7 @@ dependencies = [ [[package]] name = "rustpad" -version = "0.2.27" +version = "0.2.28" dependencies = [ "argon2", "aws-config", diff --git a/Cargo.toml b/Cargo.toml index 7f874b6..1ad7db3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustpad" -version = "0.2.27" +version = "0.2.28" edition = "2024" rust-version = "1.94" description = "Collaborative Markdown notepad built with Axum, WebSockets and SQLite, PostgreSQL and MySQL" diff --git a/static/css/styles.css b/static/css/styles.css index 8e6d5bf..7825c31 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -6572,3 +6572,137 @@ dialog::backdrop { .form-message.warning { color: var(--warning); } + +/* Keep editor mode/view controls inside the viewport at browser zoom. */ +.control-label-short { + display: none; +} + +.pad-page .editor-toolbar, +.pad-page .toolbar-group, +.pad-page .view-switch { + min-width: 0; + max-width: 100%; +} + +.pad-page #mode-toggle, +.pad-page .view-switch { + flex: 0 0 auto; +} + +@media (max-width: 1699px) { + .pad-page :is(#mode-toggle, .view-switch) .control-label-full { + display: none; + } + + .pad-page :is(#mode-toggle, .view-switch) .control-label-short { + display: inline; + } + + .pad-page #mode-toggle { + width: 36px; + min-width: 36px; + padding-inline: 6px; + } + + .pad-page .view-switch button { + width: 36px; + min-width: 36px; + padding-inline: 6px; + } +} + +@media (max-width: 760px) { + .pad-page .editor-toolbar { + grid-template-columns: minmax(0, 1fr) auto auto; + width: 100%; + max-width: 100vw; + } + + .pad-page #mode-toggle { + display: inline-flex; + } + + .pad-page .view-switch button, + .pad-page .view-switch button[data-view="split"] { + display: inline-flex; + width: 34px; + min-width: 34px; + align-items: center; + justify-content: center; + padding-inline: 5px; + } + + .pad-page .workspace.view-split { + grid-template-columns: minmax(0, 1fr); + grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); + } + + .pad-page .workspace.view-split .preview-column { + display: grid; + opacity: 1; + transform: translateX(0); + border-top: 1px solid var(--border); + } +} + +/* History content wraps vertically and never creates a horizontal scrollbar. */ +.history-panel { + max-width: 100vw; + min-width: 0; +} + +.history-list { + min-width: 0; + overflow-x: hidden; + overflow-y: auto; +} + +.revision { + min-width: 0; + grid-template-columns: 12px minmax(0, 1fr); +} + +.revision > div, +.revision__meta, +.revision__meta strong, +.revision time, +.revision__snippet, +.revision__preview { + min-width: 0; + max-width: 100%; +} + +.revision__meta { + flex-wrap: wrap; +} + +.revision__meta strong, +.revision time, +.revision__snippet, +.revision__preview { + overflow-wrap: anywhere; + word-break: break-word; +} + +.revision__snippet { + white-space: normal; +} + +.revision__preview { + overflow-x: hidden; + overflow-y: auto; + white-space: pre-wrap; +} + +.history-header > div, +.history-header h2, +.history-header p, +.history-help, +.history-list .empty, +.history-list .error { + min-width: 0; + max-width: 100%; + overflow-wrap: anywhere; + word-break: break-word; +} diff --git a/static/editor.html b/static/editor.html index 3f68c7f..f543ae7 100644 --- a/static/editor.html +++ b/static/editor.html @@ -123,9 +123,15 @@ Compact
-
+ aria-pressed="true" aria-label="Markdown" title="Markdown">Markdown +