diff options
Diffstat (limited to 'apps/settings/css/settings.scss')
-rw-r--r-- | apps/settings/css/settings.scss | 1250 |
1 files changed, 182 insertions, 1068 deletions
diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss index e2b9099f5d3..782733a76a8 100644 --- a/apps/settings/css/settings.scss +++ b/apps/settings/css/settings.scss @@ -1,6 +1,11 @@ -/* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net - This file is licensed under the Affero General Public License version 3 or later. - See the COPYING-README file. */ +/*! + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2011 Jan-Christoph Borchardt, http://jancborchardt.net + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +@use 'variables'; +@use 'sass:math'; +@use 'functions'; input { &#openid, &#webdav { @@ -15,93 +20,23 @@ input { /* icons for sidebar */ .nav-icon-personal-settings { - @include icon-color('personal', 'settings', $color-black); + @include functions.icon-color('personal', 'settings', variables.$color-black); } .nav-icon-security { - @include icon-color('toggle-filelist', 'settings', $color-black); + @include functions.icon-color('toggle-filelist', 'settings', variables.$color-black); } .nav-icon-clientsbox { - @include icon-color('change', 'settings', $color-black); + @include functions.icon-color('change', 'settings', variables.$color-black); } .nav-icon-federated-cloud { - @include icon-color('share', 'settings', $color-black); + @include functions.icon-color('share', 'settings', variables.$color-black); } .nav-icon-second-factor-backup-codes, .nav-icon-ssl-root-certificate { - @include icon-color('password', 'settings', $color-black); -} - -#avatarform { - .avatardiv { - margin: 10px auto; - } - - .warning { - width: 100%; - } - - .jcrop-keymgr { - display: none !important; - } -} - -#displayavatar { - text-align: center; -} - -#uploadavatarbutton, #selectavatar, #removeavatar { - padding: 21px; -} -#selectavatar, #removeavatar { - vertical-align: top; -} - -.jcrop-holder { - z-index: 500; -} - -#cropper { - float: left; - z-index: 500; - /* float cropper above settings page to prevent unexpected flowing from dynamically sized element */ - position: fixed; - background-color: rgba(0, 0, 0, 0.2); - box-sizing: border-box; - top: 45px; - left: 0; - width: 100%; - height: calc(100% - 45px); - - .inner-container { - z-index: 2001; - /* above the top bar if needed */ - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background: #fff; - color: #333; - border-radius: var(--border-radius-large); - box-shadow: 0 0 10px var(--color-box-shadow); - padding: 15px; - - .jcrop-holder, - .jcrop-holder img, - img.jcrop-preview { - border-radius: var(--border-radius); - } - - .button { - margin-top: 15px; - } - - .primary { - float: right; - } - } + @include functions.icon-color('password', 'settings', variables.$color-black); } #personal-settings-avatar-container { @@ -113,14 +48,7 @@ input { .profile-settings-container { display: inline-grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr 1fr 2fr; - - #locale { - h3 { - height: 32px; - } - } + grid-template-columns: 1fr 1fr 1fr; } .personal-show-container { @@ -130,8 +58,7 @@ input { .personal-settings-setting-box { .section { padding: 10px 30px; - - h3 { + .headerbar-label { margin-bottom: 0; } @@ -141,12 +68,21 @@ input { } } } + + &-profile { + grid-row: 3/5; + } + + &-detail { + grid-row: 5; + } + &-detail--without-profile { + grid-row: 3; + } } select { - &#timezone, - &#languageinput, - &#localeinput { + &#timezone { width: 100%; } } @@ -154,8 +90,9 @@ select { #personal-settings { display: grid; padding: 20px; - max-width: 1500px; - grid-template-columns: 1fr 2fr 1fr; + max-width: 1700px; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); + grid-column-gap: 10px; .section { padding: 10px 10px; @@ -164,17 +101,23 @@ select { h2 { margin-bottom: 12px; } + + h3 { + > label { + font-weight: bold; + } + } } .personal-info { - margin-right: 10%; + margin-inline-end: 10%; margin-bottom: 12px; margin-top: 12px; } .personal-info[class^='icon-'], .personal-info[class*=' icon-'] { background-position: 0px 2px; - padding-left: 30px; + padding-inline-start: 30px; opacity: 0.7; } } @@ -183,103 +126,44 @@ select { // Button for 'Reasons to use Nextcloud in your organization' .development-notice { text-align: center; + a:not(.link-button) { + text-decoration: underline; + } } .link-button { - display: inline-block; - margin: 16px; - padding: 14px 20px; - background-color: var(--color-primary); - color: #fff; - border-radius: var(--border-radius-pill); - border: 1px solid var(--color-primary); + display: inline-flex; + margin: calc(2 * var(--default-grid-baseline)); + padding: calc(2 * var(--default-grid-baseline)) calc(4 * var(--default-grid-baseline)); + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); + border-radius: var(--border-radius-element); + border: 1px solid var(--color-primary-element); box-shadow: 0 2px 9px var(--color-box-shadow); + align-items: center; + gap: calc(var(--default-grid-baseline) * 2); - &:active, &:hover, &:focus { - color: var(--color-primary); - background-color: var(--color-primary-text); - border-color: var(--color-primary) !important; + background-color: var(--color-primary-element-hover); } - &.icon-file { - padding-left: 48px; - background-position: 24px; - } -} - - - -@media (min-width: 1200px) and (max-width: 1400px) { - #personal-settings { - display: grid; - grid-template-columns: 1fr 2fr; - - #personal-settings-avatar-container { - grid-template-columns: 1fr; - grid-template-rows: 1fr; - } - - .personal-settings-container { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr 1fr 1fr; - } - - .profile-settings-container { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr; - grid-column: 2; - } - } -} - -@media (max-width: 1200px) { - #personal-settings { - display: grid; - grid-template-columns: 1fr; - - #personal-settings-avatar-container { - grid-template-rows: 1fr; - } - - .personal-settings-container { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr 1fr 1fr; - } - - .profile-settings-container { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr; - } + &:active, + &:focus-visible { + box-shadow: 0 0 0 4px var(--color-main-background) !important; + outline: 2px solid var(--color-main-text) !important; } -} - -@media (max-width: 560px) { - #personal-settings { - display: grid; - grid-template-columns: 1fr; - - #personal-settings-avatar-container { - grid-template-rows: 1fr; - } - - .personal-settings-container { - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr; - } - .profile-settings-container { - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr; - } + .icon-file-text { + filter: var(--primary-invert-if-dark); + width: 20px; + height: 20px; } } .personal-settings-container { display: inline-grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr 1fr 1fr 1fr; + grid-template-columns: 1fr 1fr 1fr; &:after { clear: both; @@ -292,6 +176,8 @@ select { flex-wrap: nowrap; justify-content: flex-start; width: 100%; + align-items: center; + gap: 8px; > label { white-space: nowrap; @@ -303,7 +189,7 @@ select { > form span { &[class^='icon-checkmark'], &[class^='icon-error'] { position: relative; - right: 8px; + inset-inline-end: 8px; top: -28px; pointer-events: none; float: right; @@ -313,7 +199,7 @@ select { .verify { position: relative; - left: 100%; + inset-inline-start: 100%; top: 0; height: 0; @@ -334,35 +220,11 @@ select { } } - -#body-settings #quota { - cursor: default; - position: relative; - - progress { - height: 6px; - - &::-moz-progress-bar { - border-radius: 3px 0 0 3px; - } - - &::-webkit-progress-value { - border-radius: 3px 0 0 3px; - } - } - - div { - font-weight: normal; - white-space: nowrap; - } -} - - /* verify accounts */ /* only show pointer cursor when popup will be there */ .verification-dialog { display: none; - right: -9px; + inset-inline-end: -9px; top: 40px; width: 275px; @@ -380,17 +242,17 @@ select { .federation-menu { position: relative; cursor: pointer; - width: 44px; - height: 44px; - padding: 10px; - margin: -12px 0 0 8px; + width: var(--default-clickable-area); + height: var(--default-clickable-area); + padding: calc(2 * var(--default-grid-baseline)); + margin: 0; background: none; border: none; &:hover, &:focus { background-color: var(--color-background-hover); - border-radius: var(--border-radius-pill); + border-radius: var(--border-radius-element); .icon-federation-menu { opacity: 0.8; @@ -398,7 +260,7 @@ select { } .icon-federation-menu { - padding-left: 16px; + padding-inline-start: 16px; background-size: 16px; background-position: left center; opacity: .3; @@ -412,7 +274,7 @@ select { } .federationScopeMenu { - top: 44px; + top: var(--default-clickable-area); &.popovermenu { .menuitem { @@ -425,7 +287,7 @@ select { } &.active { - box-shadow: inset 2px 0 var(--color-primary); + box-shadow: inset 2px 0 var(--color-primary-element); .menuitem-text { font-weight: bold; @@ -446,10 +308,6 @@ select { } } -#groups-groups { - padding-top: 5px; -} - .clientsbox img { height: 60px; } @@ -494,7 +352,7 @@ input#identity { table.nostyle { label { - margin-right: 2em; + margin-inline-end: 2em; } td { @@ -506,13 +364,37 @@ table.nostyle { #passwordform { display: flex; flex-wrap: wrap; + flex-direction: column; + gap: 1rem; + .input-control { + display: flex; + flex-wrap: wrap; + flex-direction: column; + label { + margin-bottom: 0.5rem; + } + } - #pass1, .personal-show-container, #passwordbutton { + #pass1, .personal-show-container { flex-shrink: 1; - width: 200px; + width: 300px; min-width: 150px; } + // Extremely fragile code, to be replaced by PasswordField component soon + .personal-show-container { + #pass2 { + position: relative; + top: 0.5rem; + } + .personal-show-label { + top: 34px !important; + margin-inline-end: 0; + margin-top: 0 !important; + inset-inline-end: 3px; + } + } + #pass2 { width: 100%; } @@ -523,10 +405,10 @@ table.nostyle { .strengthify-wrapper { position: absolute; - left: 0; + inset-inline-start: 0; width: 100%; border-radius: 0 0 2px 2px; - margin-top: -6px; + margin-top: 5px; overflow: hidden; height: 3px; } @@ -541,22 +423,13 @@ table.nostyle { } li > div { - margin-left: 20px; + margin-inline-start: 20px; } .two-factor-provider-settings-icon { width: 16px; height: 16px; - vertical-align: sub; - } -} - -.social-button { - padding-left: 0 !important; - margin-left: -10px; - - img { - padding: 10px; + filter: var(--background-invert-if-dark); } } @@ -592,7 +465,7 @@ li.active { #usersearchform { position: absolute; top: 2px; - right: 0; + inset-inline-end: 0; input { width: 150px; @@ -609,26 +482,25 @@ table.grid { th { height: 2em; - color: #999; + padding: 0; + padding-inline-end: 1em; border-bottom: 1px solid var(--color-border); - padding: 0 .5em; - padding-left: .8em; - text-align: left; + text-align: start; font-weight: normal; } td { border-bottom: 1px solid var(--color-border); - padding: 0 .5em; - padding-left: .8em; - text-align: left; + padding: 0; + padding-inline-end: 1em; + text-align: start; font-weight: normal; } } td, th { &.name { - padding-left: .8em; + padding-inline-start: .8em; min-width: 5em; max-width: 12em; text-overflow: ellipsis; @@ -636,7 +508,7 @@ td, th { } &.password { - padding-left: .8em; + padding-inline-start: .8em; > img { visibility: hidden; @@ -666,7 +538,7 @@ td, th { } &.password > span { - margin-right: 1.2em; + margin-inline-end: 1.2em; color: #C7C7C7; } } @@ -675,31 +547,17 @@ span.usersLastLoginTooltip { white-space: nowrap; } -/* APPS */ -#app-content > svg.app-filter { - float: left; - height: 0; - width: 0; -} - -#app-category-app-bundles { - margin-bottom: 20px; -} - -.appinfo { - margin: 1em 40px; -} - +/* SETTINGS NAVIGATION */ #app-navigation { /* Navigation icons */ img { margin-bottom: -3px; - margin-right: 6px; + margin-inline-end: 6px; width: 16px; } li span.no-icon { - padding-left: 32px; + padding-inline-start: 32px; } ul li.active > span.utils { @@ -707,246 +565,10 @@ span.usersLastLoginTooltip { display: block; } } - - .appwarning { - background: #fcc; - } - - &.appwarning:hover { - background: #fbb; - } - - .app-external { - color: var(--color-text-maxcontrast); - } -} - -span.version { - margin-left: 1em; - margin-right: 1em; - color: var(--color-text-maxcontrast); -} - -.app-version { - color: var(--color-text-maxcontrast); -} - -.app-level { - span { - color: var(--color-text-maxcontrast); - background-color: transparent; - border: 1px solid var(--color-text-maxcontrast); - border-radius: var(--border-radius); - padding: 3px 6px; - } - - a { - padding: 10px; - margin: -6px; - white-space: nowrap; - } - - .official { - background-position: left center; - background-position: 5px center; - padding-left: 25px; - } - - .supported { - border-color: var(--color-success); - background-position: left center; - background-position: 5px center; - padding-left: 25px; - color: var(--color-success); - } -} - -.app-score { - position: relative; - top: 4px; - opacity: .5; -} - -.app-settings-content { - #searchresults { - display: none; - } - -} - -#apps-list.store { - .section { - border: 0; - } - - .app-name { - display: block; - margin: 5px 0; - } - - .app-name, .app-image * { - cursor: pointer; - } - - .app-summary { - opacity: .7; - } - - .app-image-icon .icon-settings-dark { - width: 100%; - height: 150px; - background-size: 45px; - opacity: 0.5; - } - - .app-score-image { - height: 14px; - } - - .actions { - margin-top: 10px; - } -} - -#app-sidebar #app-details-view { - h2 { - .icon-settings-dark, - svg { - display: inline-block; - width: 16px; - height: 16px; - margin-right: 10px; - opacity: .7; - } - } - - .app-level { - clear: right; - width: 100%; - - .supported, - .official { - vertical-align: top; - } - - .app-score-image { - float: right; - } - } - - .app-author, .app-licence { - color: var(--color-text-maxcontrast); - } - - .app-dependencies { - margin: 10px 0; - } - - .app-description p { - margin: 10px 0; - } - - .close { - position: absolute; - top: 0; - right: 0; - padding: 14px; - opacity: 0.5; - z-index: 1; - width: 44px; - height: 44px; - } - - .actions { - display: flex; - align-items: center; - - .app-groups { - padding: 5px; - } - } - - .appslink { - text-decoration: underline; - margin-right: 5px; - } - - .app-level, - .actions, - .documentation, - .app-dependencies, - .app-description { - margin: 20px 0; - } -} - -@media only screen and (min-width: 1601px) { - .store .section { - width: 25%; - } - .with-app-sidebar .store .section { - width: 33%; - } -} - -@media only screen and (max-width: 1600px) { - .store .section { - width: 25%; - } - .with-app-sidebar .store .section { - width: 33%; - } -} - -@media only screen and (max-width: 1400px) { - .store .section { - width: 33%; - } - .with-app-sidebar .store .section { - width: 50%; - } -} - -@media only screen and (max-width: 900px) { - .store .section { - width: 50%; - } - .with-app-sidebar .store .section { - width: 100%; - } -} - -@media only screen and (max-width: $breakpoint-mobile) { - .store .section { - width: 50%; - } -} - -@media only screen and (max-width: 480px) { - .store .section { - width: 100%; - } -} - -/* hide app version and level on narrower screens */ -@media only screen and (max-width: 900px) { - .apps-list.installed { - .app-version, .app-level { - display: none !important; - } - } -} - -@media only screen and (max-width: 500px) { - .apps-list.installed .app-groups { - display: none !important; - } -} - -#version.section { - border-bottom: none; } +/* SETTINGS SECTIONS */ +// to match with NcSettingsSection component .section { margin-bottom: 0; /* section divider lines, none needed for last one */ @@ -956,260 +578,32 @@ span.version { /* correctly display help icons next to headings */ h2 { - margin-bottom: 22px; - - .icon-info { - padding: 6px 20px; - vertical-align: text-bottom; - display: inline-block; - } - } -} - -.followupsection { - display: block; - padding: 0 30px 30px 30px; - color: #555; -} - -.app-image { - position: relative; - height: 150px; - opacity: 1; - overflow: hidden; -} - -.app-name, .app-version, .app-score, .app-level { - display: inline-block; -} - -.app-description-toggle-show, .app-description-toggle-hide { - clear: both; - padding: 7px 0; - cursor: pointer; - opacity: .5; -} - -.app-description-container { - clear: both; - position: relative; - top: 7px; -} - -.app-description { - clear: both; -} - -#app-category-1 { - margin-bottom: 18px; -} - -/* capitalize 'Other' category */ - -#app-category-925 { - text-transform: capitalize; -} - -.app-dependencies { - color: #ce3702; -} - -.missing-dependencies { - list-style: initial; - list-style-type: initial; - list-style-position: inside; -} - -.apps-list { - $toolbar-padding: 8px; - $toolbar-height: 44px + $toolbar-padding * 2; - - .section { - cursor: pointer; - } - - .app-list-move { - transition: transform 1s; - } - - #app-list-update-all { - margin-left: 10px; - } - - .toolbar { - height: $toolbar-height; - padding: $toolbar-padding; - // Leave room for app-navigation-toggle - padding-left: $toolbar-height; - width: 100%; - background-color: var(--color-main-background); - position: fixed; - z-index: 1; - display: flex; + display: inline-flex; align-items: center; - } - - &.installed { - .apps-list-container { - display: table; - width: 100%; - height: auto; - margin-top: $toolbar-height; - } - - margin-bottom: 100px; - - .section { - display: table-row; - padding: 0; - margin: 0; - - > * { - display: table-cell; - height: initial; - vertical-align: middle; - float: none; - border-bottom: 1px solid var(--color-border); - padding: 6px; - box-sizing: border-box; - } - - &.selected { - background-color: var(--color-background-dark); - } - - } - - .groups-enable { - margin-top: 0; - - label { - margin-right: 3px; - } - } - - .app-image { - width: 44px; - height: auto; - text-align: right; - } - - .app-image-icon svg, - .app-image-icon .icon-settings-dark { - margin-top: 5px; - width: 20px; - height: 20px; - opacity: .5; - background-size: cover; - display: inline-block; - } - - .actions { - text-align: right; - - .icon-loading-small { - display: inline-block; - top: 4px; - margin-right: 10px; - } - } - } - - &:not(.installed) .app-image-icon svg { - position: absolute; - bottom: 43px; - /* position halfway vertically */ - width: 64px; - height: 64px; - opacity: .1; - } - - display: flex; - flex-wrap: wrap; - align-content: flex-start; - - &.hidden { - display: none; - } - - .section { - position: relative; - flex: 0 0 auto; - - h2.app-name { - display: block; - margin: 8px 0; - } - - &:hover { - background-color: var(--color-background-dark); - } - } - - .app-description { - p { - margin: 10px 0; - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - - ol, ul { - padding-left: 15px; - } - } - - > { - ul, ol { - margin-left: 19px; - } - } - - ul { - ol, ul { - padding-left: 15px; - } - } - } - - /* Bundle header */ - .apps-header { - display: table-row; - position: relative; + justify-content: center; + font-size: 20px; + font-weight: bold; + max-width: 900px; + margin-top: 0; - div { - display: table-cell; - height: 70px; + .icon-info { + display: flex; + align-items: center; + justify-content: center; + width: var(--default-clickable-area); + height: var(--default-clickable-area); + margin: calc((var(--default-clickable-area) - 16px) / 2 * -1); + margin-inline-start: 0; + color: var(--color-text-maxcontrast); } - h2 { - display: table-cell; - position: absolute; - padding-left: 6px; - padding-top: 15px; - - .enable { - position: relative; - top: -1px; - margin-left: 12px; - } - - + .section { - margin-top: 50px; - } - } } -} -#apps-list-search { - .section { - h2 { - margin-bottom: 0; - } + p { + margin-top: -0.2em; + margin-bottom: 1em; + color: var(--color-text-maxcontrast); + max-width: 900px; } } @@ -1265,29 +659,33 @@ table.grid td.date { } #shareAPI { - p { - padding-bottom: 0.8em; + &.loading > div { + display: none; } - input#shareapiExpireAfterNDays { - width: 40px; + p { + padding-bottom: 0.8em; } .indent { - padding-left: 28px; + padding-inline-start: 28px; } .double-indent { - padding-left: 56px; + padding-inline-start: 56px; } .nocheckbox { - padding-left: 20px; + padding-inline-start: 20px; + } + + #s2id_linksExcludedGroups { + width: 200px !important; } } #shareApiDefaultPermissionsSection label { - margin-right: 20px; + margin-inline-end: 20px; } #fileSharingSettings h3 { @@ -1299,7 +697,7 @@ table.grid td.date { /* 20 px left margin, 3 px right margin */ max-width: 600px; height: 150px; - margin-left: 20px; + margin-inline-start: 20px; box-sizing: border-box; } @@ -1313,22 +711,15 @@ table.grid td.date { #two-factor-auth h2, #shareAPI h2, -#encryptionAPI h2, #mail_general_settings h2 { display: inline-block; } -#encryptionAPI li { - list-style-type: initial; - margin-left: 20px; - padding: 5px 0; -} - .mail_settings p { label:first-child { display: inline-block; width: 300px; - text-align: right; + text-align: end; } select:nth-child(2), @@ -1337,12 +728,21 @@ table.grid td.date { } } +@media (max-width: calc(variables.$breakpoint-mobile * 0.75)) { + .mail_settings p label:first-child { + width: unset; + text-align: start; + display: block; + margin-top: calc(var(--default-grid-baseline) * 2); + } +} + #mail_smtpport { - width: 40px; + width: 60px; } .cronlog { - margin-left: 10px; + margin-inline-start: 10px; } .status { @@ -1387,7 +787,7 @@ span { /* OPERA hack for strengthify*/ doesnotexist:-o-prefocus, .strengthify-wrapper { - left: 185px; + inset-inline-start: 185px; width: 129px; } @@ -1401,7 +801,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { #postsetupchecks { ul { - margin-left: 44px; + margin-inline-start: 44px; list-style: disc; li { @@ -1441,6 +841,22 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } } +.security-warning__heading { + display: flex; + flex-wrap: wrap; + margin-bottom: calc(var(--default-grid-baseline) * 8); + + > h2 { + margin: 0; + font-size: 20px; + font-weight: bold; + } + + > a { + width: 44px; + } +} + #admin-tips li { list-style: initial; @@ -1450,15 +866,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } } -#selectEncryptionModules { - margin-left: 30px; - padding: 10px; -} - -#encryptionModules { - padding: 10px; -} - #warning { color: red; } @@ -1469,299 +876,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { opacity: .7; } - -/* USERS LIST -------------------------------------------------------------- */ -#body-settings { - $grid-row-height: 60px; - $grid-col-min-width: 160px; - overflow-x: scroll; - min-height: 100%; - height: auto; - - #app-content.user-list-grid { - display: grid; - grid-column-gap: 20px; - grid-auto-rows: minmax(60px, max-content); - - .row { - // TODO replace with css4 subgrid when available - // fallback for ie11 no grid - display: flex; - display: grid; - min-height: $grid-row-height; - grid-row-start: span 1; - grid-gap: 3px; - align-items: center; - /* let's define the column until storage path, - what follows will be manually defined */ - grid-template-columns: - 44px - minmax($grid-col-min-width + 30px, 1fr) // username, displayname - minmax($grid-col-min-width, 1fr) // password - minmax($grid-col-min-width, 1fr) // email - minmax(1.5*$grid-col-min-width, 1fr) // groups - minmax(1.5*$grid-col-min-width, 1fr) // group admins - repeat(auto-fit, minmax($grid-col-min-width, 1fr)); - border-bottom: var(--color-border) 1px solid; - - &.disabled { - opacity: .5; - } - - /* grid col width */ - .name, - .password, - .mailAddress, - .languages, - .storageLocation, - .userBackend, - .lastLogin { - min-width: $grid-col-min-width; - - doesnotexist:-o-prefocus, .strengthify-wrapper { - color: var(--color-text-dark); - vertical-align: baseline; - text-overflow: ellipsis; - } - } - &:not(.row--editable) { - &.name, - &.password, - &.displayName, - &.mailAddress, - &.userBackend, - &.languages { - overflow: hidden; - } - } - - .groups, - .subadmins, - .quota { - min-width: $grid-col-min-width; - - .multiselect { - width: 100%; - color: var(--color-text-dark); - vertical-align: baseline; - } - } - - .obfuscated { - width: 400px; - opacity: .7; - } - - .userActions { - display: flex; - justify-content: flex-end; - position: sticky; - right: 0px; - min-width: 88px; - background-color: var(--color-main-background); - } - - .subtitle { - color: var(--color-text-maxcontrast); - vertical-align: baseline; - } - - /* various */ - &#grid-header { - position: sticky; - align-self: normal; - background-color: var(--color-main-background); - z-index: 100; /* above multiselect */ - top: $header-height; - - &.sticky { - box-shadow: 0 -2px 10px 1px var(--color-box-shadow); - } - } - - &#grid-header { - color: var(--color-text-maxcontrast); - border-bottom-width: thin; - - #headerDisplayName, - #headerPassword, - #headerAddress, - #headerGroups, - #headerSubAdmins, - #theHeaderUserBackend, - #theHeaderLastLogin, - #headerQuota, - #theHeaderStorageLocation, - #headerLanguages { - /* Line up header text with column content for when there’s inputs */ - padding-left: 7px; - text-transform: none; - color: var(--color-text-maxcontrast); - vertical-align: baseline; - } - } - - &:hover { - input:not([type='submit']):not(:focus):not(:active) { - border-color: var(--color-border) !important; - } - - &:not(#grid-header) { - box-shadow: 5px 0 0 var(--color-primary-element) inset; - } - } - - > form { - width: 100%; - } - - > div, - > .displayName > form, - > form { - grid-row: 1; - display: inline-flex; - color: var(--color-text-lighter); - flex-grow: 1; - - > input:not(:focus):not(:active) { - border-color: transparent; - cursor: pointer; - } - - > input:focus, > input:active { - + .icon-confirm { - display: block !important; - } - } - - /* inputs like mail, username, password */ - &:not(.userActions) > input:not([type='submit']) { - width: 100%; - min-width: 0; - } - - &.name { - word-break: break-all; - } - - &.displayName, - &.mailAddress { - > input { - text-overflow: ellipsis; - flex-grow: 1; - } - } - - &.name, - &.userBackend { - /* better multi-line visual */ - line-height: 1.3em; - max-height: 100%; - overflow: hidden; - /* not supported by all browsers - so we keep the overflow hidden - as a fallback */ - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - } - - &.quota { - display: flex;; - justify-content: left; - white-space: nowrap; - position: relative; - - progress { - width: 150px; - margin-top: 35px; - height: 3px; - } - } - - .icon-confirm { - flex: 0 0 auto; - cursor: pointer; - - &:not(:active) { - display: none; - } - } - - &.avatar { - height: 32px; - width: 32px; - margin: 6px; - - img { - display: block; - } - } - - &.userActions { - display: flex; - justify-content: flex-end; - - #newsubmit { - width: 100%; - } - - .toggleUserActions { - position: relative; - display: flex; - align-items: center; - background-color: var(--color-main-background); - - .icon-more { - width: 44px; - height: 44px; - opacity: .5; - cursor: pointer; - - &:focus, - &:hover, - &:active { - opacity: .7; - background-color: var(--color-background-dark) - } - } - } - - .feedback { - display: flex; - align-items: center; - white-space: nowrap; - transition: opacity 200ms ease-in-out; - - .icon-checkmark { - opacity: .5; - margin-right: 5px; - } - } - } - - /* Fill the grid cell */ - .multiselect.multiselect-vue { - width: 100%; - } - } - } - - .infinite-loading-container { - display: flex; - align-items: center; - justify-content: center; - grid-row-start: span 4; - } - - .users-list-end { - opacity: .5; - user-select: none; - } - } -} - .animated { animation: blink-animation 1s steps(5, start) 4; } |