.content-wrapper { width: 100%; .container-fluid { padding: 0 $gl-padding; &.container-blank { background: none; padding: 0; border: 0; } } } .page-initialised .content-wrapper { transition: padding $gl-transition-duration-medium; } .right-sidebar-collapsed { padding-right: 0; &:not(.is-merge-request) { @include media-breakpoint-up(sm) { &:not(.wiki-sidebar):not(.build-sidebar):not(.issuable-bulk-update-sidebar) .content-wrapper { padding-right: $gutter-collapsed-width; } } } &.is-merge-request { @include media-breakpoint-up(lg) { .content-wrapper { padding-right: $gutter-collapsed-width; } } } .sidebar-collapsed-icon { .btn { background-color: $gray-light; } &:not(.disabled) { cursor: pointer; } svg { width: $gl-padding; height: $gl-padding; } } } .right-sidebar-expanded { padding-right: 0; z-index: $zindex-dropdown-menu; &.right-sidebar-merge-requests { width: 300px; @include media-breakpoint-up(md) { z-index: auto; } .shortcut-sidebar-dropdown-toggle { margin-right: 0 !important; } } @include media-breakpoint-only(sm) { &:not(.wiki-sidebar):not(.build-sidebar):not(.issuable-bulk-update-sidebar) .content-wrapper { padding-right: $gutter-collapsed-width; } } &:not(.is-merge-request) { @include media-breakpoint-up(md) { .content-wrapper { padding-right: $gutter-width; } } } } .right-sidebar { border-left: 1px solid $gray-100; &.right-sidebar-merge-requests { @include media-breakpoint-up(lg) { border-left: 0; } } &:not(.right-sidebar-merge-requests) { .sidebar-container, .issuable-sidebar { // Add 100px so that potentially visible vertical scroll bar is hidden width: calc(100% + 100px); } } } @mixin maintain-sidebar-dimensions { display: block; width: $gutter-width; } .issues-bulk-update.right-sidebar { @include maintain-sidebar-dimensions; width: 0; padding: 0; transition: width $gl-transition-duration-medium; &.right-sidebar-expanded { @include maintain-sidebar-dimensions; width: $gutter-width; .issuable-sidebar-header { // matches `.top-area .nav-controls` for issuable index pages padding: 11px 0; } .block:last-of-type { border: 0; } } &.right-sidebar-collapsed { @include maintain-sidebar-dimensions; width: 0; padding: 0; .block { padding: 16px 0; width: 250px; border-bottom: 1px solid $border-color; } } .issuable-sidebar { padding: 0 3px; } } .issuable-sidebar .labels { .value.dont-hide ~ .selectbox { padding-top: $gl-padding-8; } // This is for sidebar components using gl-button for the Edit button to be consistent with the // rest of the sidebar, and could be removed once the sidebar has been fully converted to use // gitlab-ui components. .title .gl-button { font-weight: $gl-font-weight-bold; .gl-button { color: $gl-text-color; } } } .pikaday-container { .pika-single { margin-top: 2px; width: 250px; } .dropdown-menu-toggle { line-height: 20px; } } .sidebar-collapsed-icon .sidebar-collapsed-value { font-size: 12px; } .ancestor-tree { .vertical-timeline { position: relative; list-style: none; margin: 0; padding: 0; &::before { content: ''; border-left: 1px solid $gray-300; position: absolute; top: $gl-padding; bottom: $gl-padding; left: map-get($spacers, 2) - px-to-rem(1px); } &-row { margin-top: map-get($spacers, 3); &:nth-child(1) { margin-top: 0; } } $line-height: map-get($spacers, 4) + px-to-rem(2px); &-icon { /** * 2px extra is to give a little more height than needed * to hide timeline line before/after the element starts/ends */ height: $line-height; z-index: 1; position: relative; padding: $gl-padding-4 0; &.opened { color: $green-500; } &.closed { color: $blue-500; } } &-content { line-height: $line-height; margin-left: $gl-padding-8; } } } .health-status { .dropdown-body { .health-divider { border-top-color: $gray-100; } .dropdown-item:not(.health-dropdown-item) { padding: 0; } } } .toggle-right-sidebar-button { @include side-panel-toggle; border-bottom: 1px solid $border-color; } .edit-link { margin-right: -$gl-spacing-scale-2; } .issuable-sidebar.is-merge-request .edit-link { margin-right: 0; } .assignee-grid { grid-template-areas: ' attention user'; grid-template-columns: min-content 1fr; } .reviewer-grid { grid-template-areas: ' user approval rerequest'; grid-template-columns: 1fr min-content min-content; &.attention-requests { grid-template-areas: ' attention user approval'; grid-template-columns: min-content 1fr min-content; } } .assignee-grid, .reviewer-grid { [data-css-area='attention'] { grid-area: attention; button.selected svg { fill: $orange-500; } } [data-css-area='user'] { grid-area: user; } } @mixin right-sidebar { position: fixed; top: $header-height; // Default value for CSS var must contain a unit // stylelint-disable-next-line length-zero-no-unit bottom: var(--review-bar-height, 0px); right: 0; transition: width $gl-transition-duration-medium; background-color: $white; z-index: 200; overflow: hidden; } .right-sidebar { &:not(.right-sidebar-merge-requests) { @include right-sidebar; } &.right-sidebar-merge-requests { @include media-breakpoint-down(md) { @include right-sidebar; z-index: 251; } } @include media-breakpoint-down(sm) { z-index: 251; } a:not(.btn) { color: inherit; &:hover { color: $blue-800; } } .gl-label .gl-label-link:hover { color: inherit; } .btn-link { color: inherit; } .issuable-header-text { margin-top: 7px; } .gutter-toggle { display: flex; align-items: center; margin-left: 20px; padding: 4px; border-radius: 4px; height: 24px; &:hover { color: $gl-text-color; background: $gray-50; } &:hover, &:focus { text-decoration: none; } } &.right-sidebar-merge-requests { .block, .sidebar-contained-width, .issuable-sidebar-header { width: 100%; } .block { @include media-breakpoint-up(lg) { padding: $gl-spacing-scale-4 0 $gl-spacing-scale-5; } &.participants { border-bottom: 0; } } } .block, .sidebar-contained-width, .issuable-sidebar-header { @include clearfix; padding: $gl-spacing-scale-4 0 $gl-spacing-scale-5; border-bottom: 1px solid $border-gray-normal; // This prevents the mess when resizing the sidebar // of elements repositioning themselves.. width: $gutter-inner-width; // -- &:last-child { border: 0; } &.assignee { .author-link { display: block; position: relative; &:hover { .author { text-decoration: underline; } } } } &.time-tracking, &.participants, &.subscriptions, &.with-sub-blocks { padding-top: $gl-spacing-scale-5; } } .block-first { padding-top: 0; } .title { color: $gl-text-color; line-height: $gl-line-height-20; .avatar { margin-left: 0; } } .selectbox { display: none; &.show { display: block; } } .btn-clipboard:hover { color: $gl-text-color; } .issuable-sidebar { height: 100%; &:not(.is-merge-request) { overflow-y: scroll; overflow-x: hidden; -webkit-overflow-scrolling: touch; } &.is-merge-request { @include media-breakpoint-down(sm) { overflow-y: scroll; overflow-x: hidden; -webkit-overflow-scrolling: touch; } } } &.right-sidebar-expanded { &:not(.right-sidebar-merge-requests) { width: $gutter-width; } .value { line-height: 1; } .issuable-sidebar { padding: 0 20px; &.is-merge-request { @include media-breakpoint-up(lg) { padding: 0; .issuable-context-form { --initial-top: calc(#{$header-height} + 76px); --top: var(--initial-top); @include gl-sticky; @include gl-overflow-auto; top: var(--top); height: calc(100vh - var(--top)); padding: 0 15px; margin-bottom: calc(var(--top) * -1); .with-performance-bar & { --top: calc(var(--initial-top) + #{$performance-bar-height}); } .with-system-header & { --top: calc(var(--initial-top) + #{$system-header-height}); } .with-performance-bar.with-system-header & { --top: calc(var(--initial-top) + #{$system-header-height} + #{$performance-bar-height}); } } } } } &:not(.boards-sidebar):not([data-signed-in]):not([data-always-show-toggle]) { .issuable-sidebar-header { display: none; } } .light { font-weight: $gl-font-weight-normal; } .no-value { color: $gl-text-color-secondary; } .sidebar-collapsed-icon { display: none; } .gutter-toggle { text-align: center; } .title .gutter-toggle { margin-top: 0; } .assignee .user-list .avatar { margin: 0; } .hide-expanded { display: none; } } &.right-sidebar-collapsed { /* Extra small devices (phones, less than 768px) */ display: none; /* Small devices (tablets, 768px and up) */ &:not(.right-sidebar-merge-requests) { @include media-breakpoint-up(sm) { display: block; } } &.right-sidebar-merge-requests { @include media-breakpoint-up(lg) { display: block; } } width: $gutter-collapsed-width; padding: 0; .block, .sidebar-contained-width, .issuable-sidebar-header { width: $gutter-collapsed-width - 2px; padding: 0; border-bottom: 0; overflow: hidden; } .block, .gutter-toggle, .sidebar-collapsed-container { &.with-sub-blocks .sub-block:hover, &:not(.with-sub-blocks):hover { background-color: $gray-100; } } .participants { border-bottom: 1px solid $border-gray-normal; } .hide-collapsed { display: none; } .gutter-toggle { width: 100%; height: $sidebar-toggle-height; margin-left: 0; border-bottom: 1px solid $border-white-normal; border-radius: 0; } a.gutter-toggle { display: flex; justify-content: center; flex-direction: column; text-align: center; } .merge-icon { height: 12px; width: 12px; bottom: -5px; right: 4px; } .sidebar-collapsed-icon { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: $sidebar-toggle-height; text-align: center; color: $gl-text-color-secondary; > svg { fill: $gl-text-color-secondary; } &:hover:not(.disabled), &:hover .todo-undone { color: $gl-text-color; > svg { fill: $gl-text-color; } } .todo-undone { color: $blue-600; fill: $blue-600; } .author { display: none; } .btn-clipboard { /* This change should be temporary, because the DOM currently gets generated from a ruby definition in `app/helpers/button_helper.rb`. As soon as the `copy to clipboard` button will be transferred to Vue this should be adjusted as well. */ flex: 1; align-self: stretch; padding: 0; border: 0; background: transparent; color: $gl-text-color-secondary; &:hover { color: $gl-text-color; } } &.multiple-users { display: flex; justify-content: center; } } .sidebar-avatar-counter { width: 24px; height: 24px; border-radius: 12px; ~.merge-icon { bottom: 0; } } .sidebar-collapsed-user { padding-bottom: 0; .author-link { padding-left: 0; .avatar { position: static; margin: 0; } } } .issuable-header-btn { display: none; } .multiple-users { .btn-link { padding: 0; border: 0; .avatar { margin: 0; } } .btn-link:first-child { position: absolute; left: 10px; z-index: 1; } .btn-link:last-child { position: absolute; right: 10px; &:hover { text-decoration: none; } } } .milestone-title span, .collapse-truncated-title { @include str-truncated(100%); display: block; margin: 0 4px; } } .dropdown-menu-toggle { width: 100%; padding-top: 6px; } .dropdown-menu { width: 100%; /* * Overwrite hover style for dropdown items, so that they are not blue * This should be removed during dev of https://gitlab.com/gitlab-org/gitlab-foss/issues/44040 */ li a { &:hover, &:active, &:focus, &.is-focused { @include dropdown-item-hover; } } } } .with-performance-bar .right-sidebar { top: calc(#{$header-height} + #{$performance-bar-height}); } .issuable-show-labels { .gl-label { margin-bottom: 5px; margin-right: 5px; } a { display: inline-block; .color-label { padding: 4px $grid-size; border-radius: $label-border-radius; margin-right: 4px; margin-bottom: 4px; } &:hover .color-label { text-decoration: underline; } } &.has-labels { // this font size is a fix to // prevent unintended spacing between labels // which shows up when rendering markup has white-space // characters present. // see: https://css-tricks.com/fighting-the-space-between-inline-block-elements/#article-header-id-3 font-size: 0; margin-bottom: -5px; } } .assignee, .reviewer { .merge-icon { color: $orange-400; position: absolute; bottom: -3px; right: -3px; filter: drop-shadow(0 0 0.5px $white) drop-shadow(0 0 1px $white) drop-shadow(0 0 2px $white); } } .participants-author { &:nth-of-type(8n) { padding-right: 0; } .avatar.avatar-inline { margin: 0; } } .participants-more, .user-list-more { margin-left: 5px; a, .btn-link { color: $gl-text-color-secondary; } .btn-link { padding: 0; } .btn-link:hover { color: $blue-800; text-decoration: none; } .btn-link:focus { text-decoration: none; } } .sidebar-help-wrap { .sidebar-help-state { margin: 16px -20px -20px; padding: 16px 20px; } .help-state-toggle-enter-active { transition: all 0.8s ease; } .help-state-toggle-leave-active { transition: all 0.5s ease; } .help-state-toggle-enter, .help-state-toggle-leave-active { opacity: 0; } } .time-tracker { .sidebar-collapsed-icon { > .stopwatch-svg { display: inline-block; } svg { width: 16px; height: 16px; fill: $gl-text-color-secondary; } &:hover svg { fill: $gl-text-color; } } .compare-meter { &.over_estimate { .time-remaining, .compare-value.spent { color: $red-500; } } } .compare-display-container { font-size: 13px; } } /* * Following overrides are done to prevent * legacy dropdown styles from influencing * GitLab UI components used within GlDropdown */ .right-sidebar-collapsed { .sidebar-grouped-item { .sidebar-collapsed-icon { margin-bottom: 0; } .sidebar-collapsed-divider { line-height: 5px; font-size: 12px; color: $gray-500; + .sidebar-collapsed-icon { padding-top: 0; } } } } @include media-breakpoint-down(sm) { // Overriding the following rule with the negative margin // https://gitlab.com/gitlab-org/gitlab/-/blob/146c43c931c3743a140529307aea616e4aa9ff21/app/assets/stylesheets/framework/sidebar.scss#L1-5 .container-fluid { .issuable-list, .issues-filters, .epics-filters { margin: 0 (-$gl-padding); } } }