diff options
Diffstat (limited to 'css/style.scss')
-rw-r--r-- | css/style.scss | 1312 |
1 files changed, 0 insertions, 1312 deletions
diff --git a/css/style.scss b/css/style.scss deleted file mode 100644 index 2a4061276..000000000 --- a/css/style.scss +++ /dev/null @@ -1,1312 +0,0 @@ -/* The standard layout defined in the server includes a fixed header with a - * sticky sidebar. This causes the scroll bar for the main area to appear to the - * right of the sidebar, which looks confusing for the chat. Thus that layout is - * overridden with a full set of flex containers to cascade parent element - * height to the main view to limit the vertical scroll bar only to it (same - * thing done for the sidebar and the chat view). */ -#body-user, -#body-public { - display: flex; - flex-direction: column; -} - -#body-user #header, -#body-public #header { - /* Override fixed position from server to include it in the flex layout */ - position: static; - flex-shrink: 0; -} - -#content { - display: flex; - flex-direction: row; - overflow: hidden; - - flex-grow: 1; - - /* Override "min-height: 100%" and "padding-top: 50px" set in server, as the - * header is part of the flex layout and thus the whole body is not - * available for the content. */ - min-height: 0; - padding-top: 0; - - /* Does not change anything in normal mode, but ensures that the element - * will stretch to the full width in full screen mode. */ - width: 100%; - - /* Override margin used in server, as the header is part of the flex layout - * and thus the content does not need to be pushed down. */ - margin-top: 0; -} - -#app-content-wrapper { - display: flex; - flex-direction: column; - overflow: hidden; - - flex-grow: 1; - - @media (max-width: $breakpoint-mobile) { - /* In narrow screens force the app content width to the full viewport - * width to prevent the app content from being compressed when the - * sidebar is shown. */ - width: 100vw; - } -} - -.contactsmenu-popover li > a > img { - /* The app uses border-box sizing, so the size of the icon is the - * width/height plus the padding set by default in the server - * (16px + 11px*2). */ - width: 38px; - height: 38px; -} - - - -/** - * Confirm icon inside input field. - * - * The input and the icon should be direct children of a wrapper with a relative - * position. The input is expected to be as wide as its wrapper. - * - * It is assumed that the icon will have the standard width for buttons in - * inputs of 34px. However, further adjustments may be needed for the input and - * the padding depending on the context where they are used. - * - * The confirm icon can have a sibling loading icon to switch to (by hiding one - * icon and showing the other) while the operation is in progress. - */ -input[type="text"], -input[type="password"] { - padding-right: 34px; - - /* When the input is focused it is expected that pressing enter will confirm - * the input just like clicking on the icon would do. To hint this behaviour - * the opacity of the confirm icon is slightly increased in this case. - */ - &:focus + .icon-confirm:not(:disabled) { - opacity: .6; - } - - & + .icon-confirm { - position: absolute; - top: 0; - /* Compensate for right margin of inputs set in the server. */ - right: 3px; - - /* Border and background color are removed to show only the icon inside - * the input. */ - border: none; - background-color: transparent; - - opacity: .3; - - &:hover:not(:disabled), - &:focus:not(:disabled), - &:active:not(:disabled) { - opacity: 1; - } - - + .icon-loading-small { - /* Mimic size set in server for confirm button. */ - width: 34px; - height: 34px; - padding: 7px 6px; - margin-top: 3px; - margin-bottom: 3px; - - position: absolute; - top: 0; - right: 3px; - } - } -} - -.menuitem input[type="text"], -.menuitem input[type="password"] { - & + .icon-confirm + .icon-loading-small { - /* Mimic size set in server for inputs in menu items. */ - min-width: 44px; - max-height: 40px; - margin: 2px 0; - - /* Override padding set in server for icons in menu items. */ - padding: 7px 6px; - } -} - - - -/** - * Sidebar styles - */ - -#select2-drop { - margin-top: -44px !important; -} -#oca-spreedme-add-room .select2-container { - border-bottom: 1px solid var(--color-border); - - &.select2-container-active { - border-bottom-color: var(--color-border-dark); - border-right: 1px solid var(--color-border-dark); - - .select2-choice, - .select2-default { - color: var(--color-text-light) !important; - } - } -} -.oca-spreedme-add-person .select2-container { - border: 1px solid var(--color-border); - border-radius: var(--border-radius); - - &.select2-container-active { - border-color: var(--color-border-dark); - - .select2-choice, - .select2-default { - color: var(--color-text-light) !important; - } - } -} -#oca-spreedme-add-room .select2-container, -.oca-spreedme-add-person .select2-container { - width: 100%; - margin: 0 !important; - padding: 9px; -} -#oca-spreedme-add-room .select2-container .select2-choice, -.oca-spreedme-add-person .select2-container .select2-choice { - border: none; - color: var(--color-text-maxcontrast) !important; -} -#oca-spreedme-add-room .select2-arrow, -.oca-spreedme-add-person .select2-arrow { - display: none !important; -} -#select2-drop .select2-search input { - padding: 13px 12px 13px 43px !important; - width: 100%; - box-sizing: border-box; - margin: 0; - border: none; - background-image: none !important; -} -#select2-drop .select2-results .select2-result { - padding: 0; -} - -#app-navigation .app-navigation-entry-link > .avatar { - position: absolute; - left: 6px; - top: 6px; -} - -#app-navigation li > a:first-child img { - width: 32px !important; - height: 32px !important; - margin: 0 !important; -} - -.participantWithList .contactsmenu-popover { - margin-left: 7px; -} - -.select2-result .avatar.icon, -.atwho-view-ul .avatar.icon, -#app-navigation .app-navigation-entry-link .avatar.icon { - border-radius: 50%; - width: 32px; - height: 32px; - background-color: var(--color-background-darker); -} - -.icon-file-white { - @include icon-color('text', 'filetypes', $color-white, 1, true); -} - -.icon-changelog { - background-image: url('../img/changelog.svg'); -} - -#app-navigation .favorite-mark { - position: absolute; - /* 44px is the padding of the main entry link, and 16px the size (size, not - * background size) of the icon, both defined in the server. */ - left: calc(44px - 16px); - line-height: 100%; - - .icon-favorite { - display: inline-block; - vertical-align: middle; - - /* Show favorite icon in yellow instead of default black. */ - @include icon-color('star-dark', 'actions', 'FC0', 1, true); - } -} - -#app-navigation .app-navigation-entry-utils-counter { - overflow: hidden; - text-align: right; - font-size: 9pt; - padding: 0 12px; /* Same padding as all li > a in the app-navigation */ - - span { - padding: 2px 5px; - border-radius: 10px; - font-weight: bold; - background-color: var(--color-background-dark); - } - - &.highlighted { - padding-right: 0; - text-align: center; - width: 22px !important; - - span { - background-color: var(--color-primary); - color: var(--color-primary-text); - } - } -} - -.hidden-important { - display: none !important; -} - -/** - * Main view chat styles - */ -#app-content-wrapper { - height: 100%; -} - -#app-content-wrapper #chatView { - width: 100%; - height: 100%; - - display: flex; - flex-direction: column; -} - -/* The lateral padding is set for each child instead of for the chat view as a - whole to prevent showing the scroll bar padded from the border of the chat - view (which could be fixed by using a negative margin and a positive padding - in the list of messages) and to ensure that the contacts menu is not clipped - due to overflowing the chat view on its left (much harder to fix). */ -#app-content-wrapper #chatView .newCommentRow { - padding-left: 44px; - padding-right: 44px; -} - -#app-content-wrapper #chatView .comments { - overflow-y: auto; - - /* Needed for proper calculation of comment positions in the scrolling - container (as otherwise the comment position is calculated with respect - to the closest ancestor with a relative position) */ - position: relative; - - padding-left: 44px; - padding-right: 44px; -} - - -#app-content-wrapper #chatView .comments .wrapper-background, -#app-content-wrapper #chatView .comments .wrapper { - /* Padding is not respected in the comment wrapper due to its absolute - * positioning, so it must be set through its position. */ - left: 44px; - right: 44px; -} - -/* Hide all siblings of the chat view when shown as the main view */ -#app-content-wrapper #chatView ~ *:not(#video-fullscreen):not([id^=tooltip]) { - display: none !important; -} - -#emptycontent { - position: absolute; - z-index: 40; -} - -#emptycontent-icon { - width: 128px; - margin: 0 auto; - padding-bottom: 20px; -} - - -#app-content ~ #app-sidebar-wrapper .icon-menu-people, -#app-content .icon-fullscreen { - opacity: .5; - - &:hover, - &:focus { - opacity: 1; - } -} - -#app-content.incall .force-icon-white-in-call, -#app-content.screensharing .force-icon-white-in-call, -#app-content.incall ~ #app-sidebar-wrapper .force-icon-white-in-call, -#app-content.screensharing ~ #app-sidebar-wrapper .force-icon-white-in-call { - /* - * Force the white icon, independent from white/dark mode selection, - * because those icons are presented on our black calling-screen. - */ - &.icon-menu-people { - background-image: url(icon-color-path('menu-people', 'spreed', 'fff', 1, false)); - } - &.icon-fullscreen { - background-image: url(icon-color-path('fullscreen', 'actions', 'fff', 1, true)); - } - - /* ".force-icon-white-in-call" can be combined with ".icon-shadow" just like - * ".icon-white". */ - &.icon-shadow { - filter: drop-shadow(1px 1px 4px var(--color-box-shadow)); - } -} - -/* Use white icon for the app navigation toggle when in a call; this can not be - * integrated above because the navigation toggle is created by the core and - * does not include the Talk-specific "force-icon-white-in-call" CSS class. */ -#app-content.incall .icon-menu, -#app-content.screensharing .icon-menu { - background-image: url(icon-color-path('menu', 'actions', 'fff', 1, true)); - filter: drop-shadow(1px 1px 4px var(--color-box-shadow)); -} - -#video-fullscreen { - position: absolute; - top: 44px; - right: 0; - z-index: 90; -} - -#video-fullscreen, -#app-sidebar-trigger { - background-color: transparent; - border: none; - margin: 0 10px 0 0; - width: 44px; - height: 44px; -} - - - -/* Fullscreen handling */ - -/* No switching between rooms in fullscreen, focus on the current call. */ -#content:-webkit-full-screen #app-navigation-toggle { - display: none !important; -} -#content:-moz-full-screen #app-navigation-toggle { - display: none !important; -} -#content:-ms-fullscreen #app-navigation-toggle { - display: none !important; -} -#content:fullscreen #app-navigation-toggle { - display: none !important; -} - -#content:-webkit-full-screen #app-navigation { - display: none; -} -#content:-moz-full-screen #app-navigation { - display: none; -} -#content:-ms-fullscreen #app-navigation { - display: none; -} -#content:fullscreen #app-navigation { - display: none; -} - -#content:-webkit-full-screen #app-content { - margin-left: 0; -} -#content:-moz-full-screen #app-content { - margin-left: 0; -} -#content:-ms-fullscreen #app-content { - margin-left: 0 !important; -} -#content:fullscreen #app-content { - margin-left: 0; -} - -#content:-ms-fullscreen #app-sidebar { - /* The sidebar height is unset in Talk to override the "100vh-50px" set in - * server and force it to get the full height in fullscreen mode. However, - * IE11 does not support "unset", so the height needs to be explicitly set - * to 100%. */ - height: 100%; - /* Remove the space added when IE is used to not overlap with the header. */ - top: 0; -} - -/* Set the background of the content to the same colour as the app content and - * the app sidebar to prevent a black background from appearing when the sidebar - * is shown or hidden. - * During a call the background of the app content is black, but as the - * background of the content has the same colour of the sidebar and is a - * placeholder on its position it looks acceptable. */ -#content:-webkit-full-screen { - background-color: var(--color-main-background); -} -#content:-moz-full-screen { - background-color: var(--color-main-background); -} -#content:-ms-fullscreen { - background-color: var(--color-main-background); -} -#content:fullscreen { - background-color: var(--color-main-background); -} - - -.localmediaerror h2 { - color: red; - font-weight: bold; -} - -.localmediaerror .emptycontent-additional { - display: none; -} - -#app-navigation .utils { - padding: 0; -} -#app-navigation .utils .action { - display: inline-block; - padding: 22px; - cursor: pointer; - opacity: .3; -} - -#app-navigation .app-navigation-entry-menu li { - width: auto !important; - float: inherit; -} - -#app-navigation .app-navigation-entry-menu li.active { - box-shadow: inset 4px 0 var(--color-primary); - margin-left: -1px; - padding-left: 1px; -} - -.room-moderation-button .menu li div.separator, -#app-navigation .app-navigation-entry-menu li div.separator { - border-bottom: 1px solid var(--color-border-dark); - margin: 0 10px; - width: 100%; -} - - -#app-navigation .app-navigation-entry-menu li button { - float: inherit !important; - margin: 0; - padding: 0; - width: 100% !important; - min-height: 44px; -} - -#app-navigation .app-navigation-entry-menu input { - margin-left: 5px !important; - margin-top: -5px; - min-width: 150px; - padding-right: 26px; - text-overflow: ellipsis; - overflow: hidden; -} - -#app-navigation .app-navigation-entry-menu-caption { - font-weight: bold; - line-height: 44px; - white-space: nowrap; - text-overflow: ellipsis; - padding: 0 36px 0 36px; - // !important to overwrite specific hover and focus - opacity: .7; - box-shadow: none !important; - user-select: none; - pointer-events: none; -} - -#app-navigation .app-navigation-entry-menu input.first-option { - margin-top: 5px; -} - -#app-navigation .app-navigation-entry-menu li span { - display: inline-block; - height: 36px; - line-height: 36px; - padding-right: 10px; - font-weight: 400; - float: left; -} - -#app-navigation .app-navigation-entry-menu li span[class^='icon-'], -#app-navigation .app-navigation-entry-menu li span[class*=' icon-'] { - padding: 16px; - box-sizing: border-box; - width: 36px; -} - -#app-navigation .app-navigation-entry-utils-menu-button { - display: inline-block; -} - -/* The sidebar wrapper contains the trigger for the sidebar and the sidebar - * itself placed in columns. To prevent the trigger from taking up space for the - * app content the trigger width is removed from the wrapper by pushing its left - * margin. */ -#app-sidebar-wrapper { - display: flex; - margin-left: -44px; -} - -#app-sidebar-trigger { - /* Higher than the z-index of the app-content */ - z-index: 1050; - cursor: pointer; -} - -/* Override server definitions to ensure that the sidebar is vertically - * stretched, as the header is part of the flex layout and its height does not - * need to be removed from the sidebar (specially in fullscreen mode where there - * is no header). */ -#app-sidebar { - position: static; - height: unset; - top: 0; -} - -/* The server sets the position of the sidebar as fixed when IE is used, so it - * needs to be pulled down to not overlap with the header. */ -.ie #app-sidebar { - top: $header-height; -} - -@include icon-black-white('menu-people', 'spreed', 1); -@include icon-black-white('no-password', 'spreed', 1); -@include icon-black-white('share-window', 'spreed', 1); -@include icon-black-white('lobby', 'spreed', 1); - -#app-sidebar .close { - position: absolute; - top: 0; - right: 0; - padding: 22px; - opacity: .3; - /* Higher index than the trigger to hide it when the sidebar is open */ - z-index: 20; -} - -#app-sidebar .close:hover, -#app-sidebar .close:focus { - opacity: 1; -} - -/* make blue header bar transparent in shared room */ -#body-public #app-content:not(.participants-1) #header.spreed-public { - background: transparent; -} - -/* As the header is hidden (except for the logo), move the fullscreen button and - * sidebar to the top during calls */ -#body-public #app-content:not(.participants-1) #app-sidebar, -#body-public #app-content:not(.participants-1) #app-sidebar-trigger, -#body-public #app-content:not(.participants-1) #video-fullscreen { - top: 0; - z-index: 3000; -} -#body-public #app-content:not(.participants-1) #video-fullscreen { - top: 44px; -} - -/** - * Right sidebar - */ - -#app-sidebar .detailCallInfoContainer { - padding: 15px; - clear: both; -} - -.tabHeaders { - display: inline-block; -} - -/* START: move padding fixes and icons-for-tabs capability into core */ -.tabHeaders { - display: flex; - margin-top: 0; - margin-bottom: 10px; - min-height: 44px; - - /* Prevent the chat view from vertically compressing the tab headers */ - flex-shrink: 0; -} - -.tabHeaders .tabHeader { - flex-basis: 50%; - flex-grow: 0; - padding: 12px; - text-align: center; - border-bottom: 1px solid var(--color-border); - margin-bottom: 0; - - .icon, a { - color: var(--color-main-text); - opacity: .5; - } -} - -.tabHeaders .tabHeader.selected, -.tabHeaders .tabHeader:hover, -.tabHeaders .tabHeader:focus { - .icon, a { - opacity: 1; - } -} -/* END: move padding fixes and icons-for-tabs capability into core */ - -/* In Talk clicking on the selected tab header has no effect, so the pointer - * cursor should not be used. */ -.tabHeaders .tabHeader.selected, -.tabHeaders .tabHeader.selected .icon, -.tabHeaders .tabHeader.selected a { - cursor: default; -} - -#app-sidebar.hidden { - display: none !important; -} - -.participantWithList .participant-moderator-indicator { - color: var(--color-text-maxcontrast); - font-weight: 300; - padding-left: 5px; -} - -.participantWithList .icon { - width: 16px; - display: inline-block; - opacity: .4; - margin-left: 5px; - margin-bottom: -4px; - - &.hidden { - display: none; - } -} - -.participantWithList .participant-offline { - & > span { - color: var(--color-text-maxcontrast); - } - .avatar { - opacity: .4; - } -} - -.participantWithList > li { - position: relative; - width: 100%; - box-sizing: border-box; -} - -.participantWithList > li > span { - display: block; - width: 100%; - line-height: 44px; - min-height: 44px; - overflow: hidden; - box-sizing: border-box; - white-space: nowrap; - text-overflow: ellipsis; - padding-left: 44px; - background-size: 16px 16px; - background: no-repeat 14px center; -} - -.participantWithList > li > span > .avatar-wrapper { - position: absolute; - top: 6px; - left: 6px; - - &:focus, - &:active { - border: 1px solid var(--color-border-dark); - border-radius: 50%; - - /* Separate the border slightly from the avatar to make it more - * noticeable. */ - padding: 3px; - - /* Compensate position for the border and the increased size. */ - top: 2px; - left: 2px; - } -} - -body:not(#body-public) .participantWithList > li > span:not(.currentUser):not(.guestUser) { - .avatar, - .avatar img { - cursor: pointer; - } -} - - - -/** - * App navigation utils, buttons and counters for drop down menu - */ -.participantWithList .participant-entry-utils { - position: absolute; - top: 0; - right: 0; - z-index: 105; -} - -.participantWithList .active > .participant-entry-utils li { - display: inline-block; -} - -.participantWithList .participant-entry-utils li { - width: 44px; - height: 44px; -} - -.participantWithList .participant-entry-utils button, -.participantWithList .participant-entry-utils button + .icon-loading-small { - height: 100%; - width: 100%; - margin: 0; - box-shadow: none; -} - -.participantWithList .participant-entry-utils-menu-button button { - border: 0; - opacity: .5; - background-color: transparent; -} - -.participantWithList .participant-entry-utils-menu-button button:hover, -.participantWithList .participant-entry-utils-menu-button button:focus { - opacity: 1; -} - -/** - * Sidebar details view - */ -.detailCallInfoContainer, -.authorRow { - .editable-text-label { - .label-wrapper { - display: flex; - align-items: center; - .edit-button .icon { - background-color: transparent; - border: none; - padding: 13px 22px; - margin: 0; - - opacity: .3; - - &:hover, - &:focus, - &:active { - opacity: 1; - } - } - } - .input-wrapper { - position: relative; - - .icon-confirm { - /* Needed to override an important rule set in the - * server. */ - background-color: transparent !important; - } - } - .label { - margin-left: 5px; - } - } - - .room-name-container { - display: flex; - - /* Prevent the room name from overlapping the button to close the - * sidebar. */ - margin-right: 29px; - - a { - opacity: .6; - - &:hover, - &:focus, - &:active { - opacity: 1; - } - - /* The container height is 42px (line height of 30px and bottom - * margin of 12px, both defined for h2 in the server), so clear the - * extra height of the link below the icon; this limits the - * clickable area to 44x44px, as otherwise it was too near the call - * button. */ - margin-bottom: 5px; - - .icon { - display: block; - - width: 44px; - height: 44px; - - background-size: 24px; - - /* Pull up the icon slightly to align it vertically with the - * label, which has a line height of 30px (defined in the - * server). */ - margin-top: -7px; - } - } - } - - .room-name { - display: block; - - flex-grow: 1; - - /* Limit the room name to the container width and prevent it from - * wrapping the full label when using a flex display; this is needed for - * the edit button and the ellipsis in the name to work as expected. */ - overflow: hidden; - - .label-wrapper { - .label { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - - .edit-button { - /* Use the same bottom margin as h2 (defined in the server) to - * align the button vertically with the label. */ - margin-bottom: 12px; - } - } - - .input-wrapper { - position: relative; - - .username { - width: 100%; - margin: 4px 0 4px 0 !important; - font-size: 15px; - font-weight: 300; - text-overflow: ellipsis; - } - - input[type="text"] { - padding-right: 44px; - } - - .icon-confirm, - .icon-loading-small { - top: 4px; - right: 0; - - padding: 12px 21px; - margin: 0; - } - } - } - - .guest-name p { - display: inline-block; - padding: 9px 0; - } - - .call-controls-container { - display: flex; - align-items: center; - - .call-button { - flex-grow: 0; - flex-basis: 50%; - - .join-call, - .leave-call { - width: 100%; - padding: 12px; - } - - .icon-loading-small { - /* Prevent the text from being moved when the icon is shown. */ - position: absolute; - - margin-left: 5px; - margin-top: 1px; - - /* Unset the background image set by the server for loading - * icons inside buttons, as in this case the pure CSS icon can - * be used instead of the image. */ - background-image: unset; - - &.hidden { - display: none; - } - } - } - } - - .room-moderation-button { - /* Needed for proper positioning of the menu. */ - position: relative; - - /* Position the button to the right end of its flex parent. */ - margin-left: auto; - } - - .clipboard-button button { - display: flex; - align-items: center; - - > span { - cursor: pointer; - - /* Override reduced opacity set for button icons in server, as the - * button is already dimmed. */ - opacity: 1; - } - - /* Override appearance set for button text in server, as this button has - * no background. */ - padding: 0; - - > span { - color: var(--color-main-text); - font-weight: normal; - } - } - - .clipboard-button button, - .room-moderation-button .button { - background-color: transparent; - border: none; - margin: 0; - opacity: .5; - - &:hover, - &:focus, - &:active { - opacity: 1; - } - } - - .clipboard-button .icon, - .room-moderation-button .button { - width: 44px; - height: 44px; - } - - .room-moderation-button .menu { - /* Values copied from apps.scss in server. */ - $popoveritem-height: 44px; - $popovericon-size: 16px; - $outter-margin: ($popoveritem-height - $popovericon-size) / 2; - - /* The server sets a top/bottom margin to forms and inputs of the - * first/last item in a menu, but that misaligns the left icon; this - * sets the top/bottom margin to the whole item instead of only to the - * forms or inputs. */ - li:first-of-type { - > .menuitem.password-option { - - margin-top: $outter-margin - 2px; // minus the input margin - - > form, > input { - margin-top: 0; - } - } - } - li:last-of-type { - > .menuitem.password-option { - - margin-bottom: $outter-margin - 2px; // minus the input margin - - > form, > input { - margin-bottom: 0; - } - } - } - - li { - > .separator { - - margin-top: $outter-margin - 2px; // minus the input margin - } - } - - li.item-has-details { - flex-direction: column; - - > .menuitem-details { - /* Show it closer to its menu item, but further away than the - * following menu item. */ - margin-top: -($outter-margin - 2px); // minus the input margin - margin-bottom: $outter-margin - 2px; // minus the input margin - - /* Lower size and opacity than regular menu items. */ - font-size: small; - opacity: 0.5; - - /* Padding based on the icon. */ - padding-left: $popoveritem-height; - } - } - - .menuitem.caption, - .menuitem.caption > span { - /* Override rule for menu items from server, as in this case the - * caption is not clickable. */ - cursor: default; - } - - .menuitem.caption { - font-weight: bold; - - &:hover, - &:focus, - &:active { - opacity: 0.7 !important; - } - } - - .menuitem.password-option, - .menuitem.lobby-timer-option { - /* Override rule for menu items from server, as in this case - * only the button in the password field is clickable, so the - * pointer cursor should not be used for the whole item. */ - cursor: default; - - form { - position: relative; - - .icon-confirm, - .icon-loading-small { - /* Inputs in menu items do not have a right margin, so - * it does not need to be compensated. */ - right: 0; - } - - .icon-confirm { - /* Needed to override an important rule set in the - * server. */ - background-color: transparent !important; - } - } - } - } - - /* The specific locator is needed to have higher priority than other - * important rules set in the server. */ - input.checkbox + label.checkbox-label, - input.radio + label { - /* If ".icon-loading-small" is set hide the checkbox and show a - * loading icon instead. */ - &.icon-loading-small:before { - background-image: none !important; - background-color: transparent !important; - border-color: transparent !important; - } - &.icon-loading-small:after { - top: 22px; - left: 21px; - } - } -} - -/** - * Cascade parent element height to the chat view in the sidebar to limit the - * vertical scroll bar only to the list of messages. Otherwise, the vertical - * scroll bar would be shown for the whole sidebar and everything would be - * moved when scrolling to see overflown messages. - * - * The list of messages should stretch to fill the available space at the bottom - * of the right sidebar, so the height is cascaded using flex boxes. - * - * It is horrible, I know (but better than using JavaScript ;-) ). Please - * improve it if you know how :-) - */ -#app-sidebar { - display: flex; - flex-direction: column; -} - -#app-sidebar .tabs { - display: flex; - flex-direction: column; - overflow: hidden; - - flex-grow: 1; -} - -#app-sidebar .tabsContainer { - display: flex; - flex-direction: column; - overflow: hidden; - - flex-grow: 1; -} - -#app-sidebar .tab { - display: flex; - flex-direction: column; - overflow: hidden; - - flex-grow: 1; -} - -#app-sidebar #chatView { - display: flex; - flex-direction: column; - overflow: hidden; - - flex-grow: 1; -} - -#app-sidebar .comments { - overflow-y: auto; - - /* Needed for proper calculation of comment positions in the scrolling - container (as otherwise the comment position is calculated with respect - to the closest ancestor with a relative position) */ - position: relative; -} - -/** - * Place the scroll bar of the message list on the right edge of the sidebar, - * but keeping the padding of the tab view. - * - * The padding must be set on the left too to ensure that the contacts menu - * shown when clicking on an author name does not overflow the tab (as it would - * be hidden). - * - * The bottom padding is removed to extend the chat view to the bottom edge of - * the sidebar. - */ -#app-sidebar .tab-chat { - padding-left: 0; - padding-right: 0; - padding-bottom: 0; -} - -#app-sidebar #chatView .newCommentRow, -#app-sidebar #chatView .comments { - padding-left: 15px; - padding-right: 15px; -} - -#app-sidebar #chatView .comments .wrapper-background, -#app-sidebar #chatView .comments .wrapper { - /* Padding is not respected in the comment wrapper due to its absolute - * positioning, so it must be set through its position. */ - left: 15px; - right: 15px; -} - -#app-sidebar #chatView .newCommentForm.with-add-button { - /* Make room to show the "Add" button if needed when chat is shown in the - * sidebar. */ - margin-right: 44px; -} - -/** - * Limiting the scroll bar in the sidebar to the list of chat messages causes - * the scroll bar to be removed from the whole sidebar in other tabs too. - * Therefore, the scroll bars must be explicitly enabled in the other tab - * contents that need them. - */ -#app-sidebar #participantsTabView { - display: flex; - flex-direction: column; - overflow: hidden; -} - -#app-sidebar .participantWithList { - overflow-y: auto; - padding-top: 8px; -} - -#app-sidebar .participantWithList .participant:last-child { - /* Add room for the popovermenu on last user */ - padding-bottom: 94px; -} - -/** - * Place the scroll bar of the participants list on the right edge of the - * sidebar, but keeping the padding of the tab view. - * - * The bottom padding is removed to extend the participant view to the bottom - * edge of the sidebar. - */ -#app-sidebar .tab-participants { - padding-right: 0; - padding-bottom: 0; -} - -/* Form needs margin, participant list needs padding - * So the form has margin from the right side, but the scroll bar of the - * participant list is directly on the right. - */ -#app-sidebar #participantsTabView form { - margin-right: 15px; -} -#app-sidebar #participantsTabView .participantWithList { - padding-right: 15px; -} - -/** - * Add a little margin to the last participant so the list is nicely framed with - * the sides when fully scrolled to the bottom. - */ -#app-sidebar #participantsTabView .participant:last-child { - margin-bottom: 15px; -} - -/** - * Dark-Theme fixes - */ -// We always want to use the white icons, this is why we don't use var(--color-white) here. -.avatar.icon { - &.icon-public { - background-image: url(icon-color-path('public', 'actions', 'fff', 1, true)); - } - &.icon-contacts { - background-image: url(icon-color-path('contacts', 'places', 'fff', 1, true)); - } - &.icon-password { - background-image: url(icon-color-path('password', 'actions', 'fff', 1, true)); - } - &.icon-file { - background-image: url(icon-color-path('text', 'filetypes', 'fff', 1, true)); - } - &.icon-mail { - background-image: url(icon-color-path('mail', 'actions', 'fff', 1, true)); - } -} - -#app-navigation > ul > li > a:first-child { - img { - filter: none !important; - } -} |