From 81d6b1f5478c1bdbed69c49c80b50ac77d177355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20St=C3=BCckler?= Date: Thu, 22 Oct 2026 12:24:04 +0200 Subject: [PATCH 1/4] [Web] Clearer captions for domain table columns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Caption the "RL" column "Rate limit" using the existing translated edit.ratelimit string, and shorten "Max. size of a mailbox" to "Max. mailbox size" (en-gb only; the key is only used for this column). Signed-off-by: Moritz Stückler --- data/web/js/site/mailbox.js | 2 +- data/web/lang/lang.en-gb.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js index 5ad5cceab..a89563ed3 100644 --- a/data/web/js/site/mailbox.js +++ b/data/web/js/site/mailbox.js @@ -610,7 +610,7 @@ jQuery(function($){ defaultContent: '' }, { - title: 'RL', + title: lang_edit.ratelimit, data: 'rl', searchable: false, orderable: false, diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index 1f1c1f273..824c66ca8 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -959,7 +959,7 @@ "mailbox_defaults_info": "Define default settings for new mailboxes.", "mailbox_defquota": "Default mailbox size", "mailbox_templates": "Mailbox Templates", - "mailbox_quota": "Max. size of a mailbox", + "mailbox_quota": "Max. mailbox size", "mailboxes": "Mailboxes", "max_aliases": "Max. aliases", "max_mailboxes": "Max. possible mailboxes", From 8d4895a54d9025a769427e167602ec768d85d101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20St=C3=BCckler?= Date: Thu, 22 Oct 2026 12:36:51 +0200 Subject: [PATCH 2/4] [Web] Align the table expand control and row checkbox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Center the +/- glyph in the expand control: its line-height (1.25em) was larger than the 1em box, pushing the glyph down. Derive the box's margin-top from its size so it is centered in the row (desktop and the larger mobile variant). - Hide sort arrows on non-orderable headers. The default initial order targets column 0, the expand column, which got a sorting_asc arrow and arrow padding although it cannot be sorted. - Center row checkboxes level with the expand control by using Bootstrap's 0.25em margin-top instead of a fixed 7px. Signed-off-by: Moritz Stückler --- data/web/css/build/013-datatables.css | 17 +++++++++++++++-- data/web/css/build/015-responsive.css | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/data/web/css/build/013-datatables.css b/data/web/css/build/013-datatables.css index 1bc18119e..a0fa34cce 100644 --- a/data/web/css/build/013-datatables.css +++ b/data/web/css/build/013-datatables.css @@ -28,7 +28,8 @@ table.dataTable td.dt-control:before { color: var(--mc-dtr-color); height: 1em; width: 1em; - line-height: 1.25em; + line-height: 1em; + margin-top: calc(-0.5em - 1.5px); border-radius: 0px; box-shadow: none; font-size: 14px; @@ -39,11 +40,23 @@ table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th.dtr-control:before, table.dataTable td.dt-control:before { background-color: var(--mc-dtr-active-bg) !important; } +/* The default initial order targets column 0, which is usually the non-orderable expand column */ +table.dataTable thead > tr > th.sorting_disabled.sorting_asc, +table.dataTable thead > tr > th.sorting_disabled.sorting_desc { + padding-right: 0.5rem; +} +table.dataTable thead > tr > th.sorting_disabled.sorting_asc:before, +table.dataTable thead > tr > th.sorting_disabled.sorting_asc:after, +table.dataTable thead > tr > th.sorting_disabled.sorting_desc:before, +table.dataTable thead > tr > th.sorting_disabled.sorting_desc:after { + display: none; +} table.dataTable.table-striped>tbody>tr>td { vertical-align: middle; } table.dataTable.table-striped>tbody>tr>td>input[type="checkbox"] { - margin-top: 7px; + /* centers the 1em checkbox in the 1.5em line, level with the expand control */ + margin-top: 0.25em; } td.dtr-col-lg { min-width: 350px; diff --git a/data/web/css/build/015-responsive.css b/data/web/css/build/015-responsive.css index 82be71069..d3e0263cd 100644 --- a/data/web/css/build/015-responsive.css +++ b/data/web/css/build/015-responsive.css @@ -191,7 +191,7 @@ height: 2rem; width: 2rem; line-height: 2rem; - margin-top: -15px; + margin-top: calc(-1rem - 1.5px); } li .dtr-data { From f662af4c5002fd3c8bb87b74b474d2bcbd44a215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20St=C3=BCckler?= Date: Thu, 22 Oct 2026 13:06:00 +0200 Subject: [PATCH 3/4] [Web] Even out badge and tag sizes in tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use the normal cursor on non-orderable headers. The expand column header kept a pointer cursor from sorting_asc although clicking it does nothing. - Let icons in badges inherit the badge font size, like .btn .bi, and keep their glyph from adding line height. The global 12pt icon size made e.g. the "SSO @" badge in Last mail login taller than the IMAP and SMTP badges next to it. Tag badges keep their 12px icon. - Drop the vertical margin of tag badges inside tables. It is meant for the tag editor in edit forms and made the Tags entry of the expanded row taller than the others. - Center tag badge captions: the 12px tag icon stretched the 10.5px badge line and pushed the caption below center. Signed-off-by: Moritz Stückler --- data/web/css/build/013-datatables.css | 6 ++++++ data/web/css/build/014-mailcow.css | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/data/web/css/build/013-datatables.css b/data/web/css/build/013-datatables.css index a0fa34cce..ded00bc7b 100644 --- a/data/web/css/build/013-datatables.css +++ b/data/web/css/build/013-datatables.css @@ -44,6 +44,7 @@ table.dataTable td.dt-control:before { table.dataTable thead > tr > th.sorting_disabled.sorting_asc, table.dataTable thead > tr > th.sorting_disabled.sorting_desc { padding-right: 0.5rem; + cursor: auto; } table.dataTable thead > tr > th.sorting_disabled.sorting_asc:before, table.dataTable thead > tr > th.sorting_disabled.sorting_asc:after, @@ -58,6 +59,11 @@ table.dataTable.table-striped>tbody>tr>td>input[type="checkbox"] { /* centers the 1em checkbox in the 1.5em line, level with the expand control */ margin-top: 0.25em; } +/* the vertical margin is meant for the tag editor in edit forms, in tables it only adds height */ +table.dataTable .tag-badge { + margin-top: 0; + margin-bottom: 0; +} td.dtr-col-lg { min-width: 350px; word-break: break-word; diff --git a/data/web/css/build/014-mailcow.css b/data/web/css/build/014-mailcow.css index 52a34f8b5..99925ca28 100644 --- a/data/web/css/build/014-mailcow.css +++ b/data/web/css/build/014-mailcow.css @@ -139,6 +139,13 @@ body { display: inline-block; font-size: inherit; } +.badge .bi { + font-size: inherit; +} +/* keeps icons from making a badge taller than one with text only */ +.badge .bi::before { + line-height: 0; +} .btn-group-xs > .btn, .btn-xs { padding: .25rem .4rem; font-size: .875rem; @@ -343,6 +350,7 @@ code { } .tag-badge .bi { font-size: 12px; + line-height: 0; } .tag-badge.btn-badge:hover { filter: brightness(0.9); From 498434ee3dd3f9581da8b712e1f9539b6c1953b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20St=C3=BCckler?= Date: Thu, 22 Oct 2026 13:10:49 +0200 Subject: [PATCH 4/4] [Web] Even out spacing of the expanded table row MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DataTables removes the top padding of the first entry in the expanded row, but mailcow's 0.5em padding left 7px under the last entry, so the list had 7px of space above and 15px below and the last entry (often Tags) looked taller than the others. Drop the last entry's bottom padding as well. Signed-off-by: Moritz Stückler --- data/web/css/build/013-datatables.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/web/css/build/013-datatables.css b/data/web/css/build/013-datatables.css index ded00bc7b..21d5c9a54 100644 --- a/data/web/css/build/013-datatables.css +++ b/data/web/css/build/013-datatables.css @@ -15,6 +15,10 @@ table.dataTable>tbody>tr.child ul.dtr-details>li { border-bottom: 1px solid rgba(0, 0, 0, 0.129); padding: 0.5em 0; } +/* like the first entry has no top padding, the last one needs no bottom padding */ +table.dataTable>tbody>tr.child ul.dtr-details>li:last-child { + padding-bottom: 0; +} table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before:hover, table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before:hover { background-color: var(--mc-dtr-hover-bg);