3 Commits
5.0.3 ... 5.0.4

Author SHA1 Message Date
Laurent Dinclaux
8f45736b1b fix(skins): keep menu links visible and align native select look
The wrapper had width:100% which pushed the right-side menu links
(mail/contacts/settings/logout) out of #taskbar in Classic, and the
global custom select styling defeated Roundcube's native select
rendering — even when reset — because any background-image on a
<select> disables the native gradient/rounded corners.

- Scope the custom appearance/SVG-chevron CSS to Elastic and Larry
- Add a Classic-specific rule (width:auto, max-width, -2px nudge) that
  preserves Roundcube's native select look in #taskbar
- Drop the inline padding:0 imposed by the PHP renderer; let CSS own it
- Cap the Larry wrapper width to keep .button-logout in flow, and move
  the Larry-only styling out of the JS into the scoped CSS rule

Fixes #1
2026-05-12 17:02:32 +11:00
Laurent Dinclaux
8385197f11 chore: refresh composer.lock 2026-05-06 20:26:54 +11:00
Laurent Dinclaux
ca16e3ca39 ci: bump actions/checkout to v5 (Node 24) 2026-05-06 20:21:04 +11:00
6 changed files with 42 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ jobs:
matrix: matrix:
php-version: ['8.2', '8.3', '8.4'] php-version: ['8.2', '8.3', '8.4']
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Setup PHP ${{ matrix.php-version }} - name: Setup PHP ${{ matrix.php-version }}
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2

View File

@@ -10,7 +10,7 @@ jobs:
phpcs: phpcs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2

4
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "46b2d3558cb304fde0539d1b85971382", "content-hash": "c1389b5e002c6014eeddc8105bf77db1",
"packages": [ "packages": [
{ {
"name": "roundcube/plugin-installer", "name": "roundcube/plugin-installer",
@@ -154,5 +154,5 @@
"ext-ctype": "*" "ext-ctype": "*"
}, },
"platform-dev": {}, "platform-dev": {},
"plugin-api-version": "2.6.0" "plugin-api-version": "2.9.0"
} }

View File

@@ -57,7 +57,7 @@ $(function() {
}); });
/** /**
* Place switcher in Larry skin: replace username in top-right corner. * Place switcher in Larry skin: replace username in top-right corner of #topline.
*/ */
function plugin_switchIdent_addCbLarry($wrapper, $sw) { function plugin_switchIdent_addCbLarry($wrapper, $sw) {
var $topRight = $('#topline .topright'); var $topRight = $('#topline .topright');
@@ -65,11 +65,6 @@ function plugin_switchIdent_addCbLarry($wrapper, $sw) {
return false; return false;
} }
$sw.css({
'font-weight': 'bold',
'text-overflow': 'ellipsis'
});
$topRight.find('.username').hide(); $topRight.find('.username').hide();
$topRight.prepend($wrapper); $topRight.prepend($wrapper);
return true; return true;

View File

@@ -15,8 +15,12 @@
width: 100%; width: 100%;
} }
/* Account switcher <select>: hide native arrow, show SVG chevron */ /* Account switcher <select>: hide native arrow, show SVG chevron.
.ident-switch-wrapper select { Scoped to Elastic (.header-title.username) and Larry (#topline .topright) where
the switcher replaces a styled header label; Classic uses Roundcube's native
select rendering instead (see #taskbar rule below). */
.header-title.username .ident-switch-wrapper select,
#topline .topright .ident-switch-wrapper select {
cursor: pointer; cursor: pointer;
-webkit-appearance: none; -webkit-appearance: none;
-moz-appearance: none; -moz-appearance: none;
@@ -53,6 +57,36 @@
display: none; display: none;
} }
/* Larry skin: blend the <select> into the dark #topline header (Larry styles a
<span> here, not a <select>, so without these the native white control sticks
out on the dark background). */
#topline .topright .ident-switch-wrapper {
width: auto;
}
#topline .topright .ident-switch-wrapper select {
background-color: transparent;
border: none;
box-shadow: none;
color: inherit;
font-weight: bold;
padding: 0 1.2em 0 0.25em;
text-overflow: ellipsis;
}
/* Classic skin: switcher is prepended inside #taskbar (right-aligned, nowrap, 24px tall).
Drop width:100% so it sits inline before the menu links instead of pushing them
off-screen. The select keeps Roundcube's default native rendering. */
#taskbar > .ident-switch-wrapper {
width: auto;
vertical-align: middle;
margin-right: 8px;
}
#taskbar > .ident-switch-wrapper select {
max-width: 180px;
position: relative;
top: -2px;
}
/* Unread badge */ /* Unread badge */
.ident-switch-badge { .ident-switch-badge {
flex-shrink: 0; flex-shrink: 0;

View File

@@ -222,7 +222,7 @@ class ident_switch extends rcube_plugin
$select = new html_select([ $select = new html_select([
'id' => 'plugin-ident_switch-account', 'id' => 'plugin-ident_switch-account',
'style' => 'display: none; padding: 0;', 'style' => 'display: none;',
'onchange' => 'plugin_switchIdent_switch(this.value);', 'onchange' => 'plugin_switchIdent_switch(this.value);',
]); ]);
$select->add($accNames, $accValues); $select->add($accNames, $accValues);