snappymail/dev/Styles/User/FolderList.less
S-A-L13 876ed221c3
Update Fork (#2)
* Cleanup OpenPgpImportPopupView code

* update polish translation

* small fix

* Added Import S/MIME certificate popup
And much better handling of the sign and encrypt options

* bugfix: store in Passphrases

* Resolve #1448

* pre-verify S/MIME opaque signed messages so we have a body to view

* Fix timestampToString() for future dates

* Move php8.php to /app/libraries/polyfill/

* Improved Settings handling to prevent bugs in outer code

* Changed AbstractProvider::IsActive() to be abstract

* Example for #1449

* bugfix: previous IsActive() commit

* OpenSSL required due to S/MIME

* Use get_debug_type() instead of gettype()

* update polish translation

* Make all Enumerations classes abstract

* Added search functionality in Admin -> Config
And removed the unused ['capa']['quota']

* Cleanup Quota handling

* OPEN_PGP should be OPENPGP as it is one word

* Improve Capa handling

* Resolve #1451

* Bugfix TypeError: b64Encode(...).match(...) is null

* Small StorageType change

* Bugfix: mailvelope editor failed

* Bugfix: undefined getMailvelopePrivateKeyFor()

* Bugfix: MIME parser RegExp didn't escape `boundary` which caused issues

* Return detailed info on PgpImportKey

* Show GnuPG verify error

* Sort PGP keys by email and id

* Sort S/MIME certificates on emailAddress else validTo

* S/MIME import from signature use `BEGIN PKCS7`

* Optionally use existing private key to generate S/MIME certificate

* Chaned some error_log() to MailSo Logger()

* Force reload of S/MIME certificates list on import

* Make better use of SnappyMail\SensitiveString

* Fix view PGP key button

* Mask all POST data that has a key which contains `pass`

* v2.35.1

* Resolve #1455

* Improved GnuPG error handling

* Update pt/pt-PT translation

* update Polish translation

* Drop support for gnupg pecl extension as it fails with "no passphrase" issues

* Resolve #1456

* Resolve #1458

* v2.35.2

* fix changelog

* Resolve #1461

* Update pt/pt-PT translation

* compact-composer plugin v1.0.0

* Resolve #1462

* Fix decrypt error message

* `new Error()` to `Error()`

* Resolve #1463

* Show url for #1466

* Simplify SignMe/Remember me code

* Simplify language Notifications

* Bugfix: SetPassword expects \SnappyMail\SensitiveString

* https://github.com/the-djmaze/snappymail/issues/1450#issuecomment-1972147950

* improve: fire the 'squire2-toolbar' event after more props are added

* improve: add dark theme support and use 'button' element as menu trigger for consistent styling

* fix: use compact template in non-destructive way (do not replace the PopupsCompose template if a different wysiwyg is used)

* Update admin.json

* Update user.json

* CSS rainloopErrorTip location

* Improved error handling on PGP and S/MIME decrypt

* KnockoutJS remove unused `beforeRemove`

* KnockoutJS drop unused `as`

* KnockoutJS simplify renderMode because only 1 option is used

* KnoutJS cleanup templating.js a bit

* KnockoutJS drop unused `bindingRewriteValidators`

* KnockoutJS drop the twoWayBindings code

* KnockoutJS simplify virtualElements binding check

* KnockoutJS simplify applyBindingsToNodeInternal

* KnockoutJS use Array.isArray

* KnockoutJS drop alias `textinput` for `textInput`

* KnockoutJS scramble `createChildContext`

* KnockoutJS scramble `controlsDescendantBindings`

* KnockoutJS scramble `exportDependencies`

* KnockoutJS drop unused `throttleEvaluation`

* KnockoutJS drop unused `valueAllowUnset`

* KnockoutJS drop unused `templateNodes`

* KnockoutJS drop unused `optionsCaption`

* KnockoutJS drop unused `dontLimitMoves`

* KnockoutJS drop unused `uniqueName`

* KnockoutJS drop IE leftovers

* KnockoutJS drop unused `preprocess`

* KnockoutJS drop unused "disposeWhenNodeIsRemoved" and "disposeWhen"

* KnockoutJS don't scramble exportDependencies. controlsDescendantBindings, createChildContext

* KnockoutJS drop unused `$parentContext` and `$parents`

* KnockoutJS drop unused `$rawData`

* Knockoutjs built latest

* KnockoutJS drop unused template options `nodes`, `if`, `ifnot`

* KnockoutJS use more Array.isArray

* KnockoutJS cleanup code a bit

* KnockoutJS primitiveTypes can just be checked with Object()

* KnockoutJS rebuilt

* Verify S/MIME signed automatically and log Exception

* Automatically verify PGP and S/MIME signed messages

* `new Error` to `Error`

* By default throw AccountNotAllowed as confused in #1478

* GPG use pinentries for decrypt, sign and export

* Better GPG error handling

* GPG show error on view/export

* OpenPGP fix handling of importing keys

* Make "verify signatures automatically" optional, as it requires more IMAP fetching

* S/MIME don't post identity key and certificate, just fetch from server

* Show error to old browsers, instead of crashing

* Automatically verify S/MIME decrypted signed message

---------

Co-authored-by: the-djmaze <>
Co-authored-by: tinola <tinola@poczta.onet.pl>
Co-authored-by: Maarten <3752035+the-djmaze@users.noreply.github.com>
Co-authored-by: lmperfis <joint.striker@gmail.com>
Co-authored-by: Sergey Mosin <sergey@srgdev.com>
Co-authored-by: hguilbert <51283484+hguilbert@users.noreply.github.com>
2024-03-04 17:00:27 +01:00

213 lines
3.6 KiB
Text

@folderItemPadding: 7px;
@subPadding: 15px;
#V-MailFolderList,
#V-MailFolderList .b-content {
height: 100%;
}
.focused .b-folders a.focused {
background-color: var(--folders-focused-bg-color, #333);
border-color: #fff;
color: var(--folders-focused-color, #eee);
}
#folderSearchInput {
width: 100%;
}
/* https://github.com/the-djmaze/snappymail/issues/1427 */
#V-MailFolderList .e-checkbox {
margin: 0 4px;
width: calc(100% - 8px);
}
#V-MailFolderList .unreadOnly li a:not(.unread-sub):not([data-unread]) {
display:none;
}
.b-folders {
display: flex;
flex-direction: column;
height: 100%;
padding-right: 2px;
ul {
margin: 0;
}
.move-action-content-wrapper {
z-index: -1;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
opacity: 0.05;
background-color: #fff;
background-size: 60px 60px;
background-image: linear-gradient(135deg, #000 25%, transparent 25%,
transparent 50%, #000 50%, #000 75%,
transparent 75%, transparent);
}
.b-toolbar {
color: #fff;
}
.b-footer {
padding: 10px @rlLowMargin;
overflow: hidden;
white-space: nowrap;
}
.b-content {
overflow: hidden;
overflow-y: auto;
min-width: 100px;
color: var(--folders-color, #333);
}
hr {
margin: 10px;
}
li {
display: block;
overflow: hidden;
white-space: nowrap;
a {
background-color: transparent;
border-left: 3px solid transparent;
color: var(--folders-color, #333);
display: block;
line-height: 34px;
padding: 0 2em 0 @folderItemPadding;
position: relative;
text-decoration: none;
vertical-align: middle;
z-index: 1;
&.selectable {
cursor: pointer;
&:hover {
background-color: var(--folders-hover-bg-color, #333);
color: var(--folders-hover-color, #eee);
}
&.droppableHover {
background-color: var(--folders-drop-bg-color, #333);
color: var(--folders-drop-color, #eee);
}
&.droppableHover * {
pointer-events: none;
}
&.selected {
background-color: var(--folders-selected-bg-color, #333);
color: var(--folders-selected-color, #eee);
}
}
&:not(.selectable) {
color: var(--folders-disabled-color, #666);
cursor: default;
font-style: italic;
}
&.unread-sub {
font-weight: bold;
}
.e-collapsed-sign {
cursor: pointer;
font-size: 150%;
text-indent: 0;
vertical-align: inherit;
}
}
a[data-unread] {
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
}
ul.collapsed {
max-height: 0;
height: 0;
display: none;
}
}
.b-folders-system a[data-unread]::after,
.b-folders-user a[data-unread]:not(.system)::after
{
content: attr(data-unread);
background-color: var(--unread-count-bg-color, #999);
border-radius: 1em;
color: var(--unread-count-color, #fff);
font-size: 80%;
line-height: 1.5em;
margin-top: 7px;
min-width: 1.7em;
padding: 1px 4px;
text-align: center;
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
position: absolute;
right: 3px;
text-indent: 0;
}
.flag-icon {
margin-left: 7px;
}
.flag-icon::after {
content:'☆';
opacity: .5;
}
.is-flagged {
.flag-icon::after {
color: orange;
content:'★';
opacity: 1;
}
}
.b-folders-system {
font-weight: bold;
}
li li a {
text-indent: 1em;
}
li li li a {
text-indent: 2em;
}
li li li li a {
text-indent: 3em;
}
li li li li li a {
text-indent: 4em;
}
}
#rl-left .buttonCompose {
max-height: 2em;
max-width: fit-content;
overflow: hidden;
text-overflow: ellipsis;
width: calc(100% - 48px);
}
html.rl-left-panel-disabled {
.buttonComposeText,
.buttonContacts {
display: none;
}
#rl-left .buttonCompose {
width: auto;
}
}