summaryrefslogtreecommitdiff
path: root/app/assets/stylesheets/framework/sidebar.scss
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/stylesheets/framework/sidebar.scss')
-rw-r--r--app/assets/stylesheets/framework/sidebar.scss644
1 files changed, 640 insertions, 4 deletions
diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss
index 7878e08e549..eb34d91476b 100644
--- a/app/assets/stylesheets/framework/sidebar.scss
+++ b/app/assets/stylesheets/framework/sidebar.scss
@@ -198,17 +198,17 @@
}
}
+ $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: map-get($spacers, 4) + px-to-rem(2px);
+ height: $line-height;
z-index: 1;
position: relative;
- top: -3px;
padding: $gl-padding-4 0;
- background-color: $body-bg;
&.opened {
color: $green-500;
@@ -220,7 +220,7 @@
}
&-content {
- line-height: initial;
+ line-height: $line-height;
margin-left: $gl-padding-8;
}
}
@@ -280,3 +280,639 @@
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});
+}
+
+.sidebar-move-issue-confirmation-button {
+ width: 100%;
+
+ &.is-loading {
+ .sidebar-move-issue-confirmation-loading-icon {
+ display: inline-block;
+ }
+ }
+}
+
+.sidebar-move-issue-confirmation-loading-icon {
+ display: none;
+}
+
+.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);
+ }
+ }
+}