gitlab-org--gitlab-foss/app/assets/stylesheets/pages/issuable.scss

995 lines
17 KiB
SCSS

.issuable-warning-icon {
background-color: $orange-50;
border-radius: $border-radius-default;
color: $orange-600;
width: $issuable-warning-size;
height: $issuable-warning-size;
text-align: center;
margin-right: $issuable-warning-icon-margin;
line-height: $gl-line-height-24;
}
.limit-container-width {
.flash-container,
.detail-page-header,
.page-content-header,
.commit-box,
.info-well,
.commit-ci-menu,
.files-changed-inner,
.limited-header-width,
.limited-width-notes {
@include fixed-width-container;
}
.issuable-details {
.detail-page-description,
.mr-source-target,
.mr-state-widget,
.merge-manually {
@include fixed-width-container;
}
}
.merge-request-details {
.emoji-list-container {
@include fixed-width-container;
}
}
}
.issuable-details {
section {
.issuable-discussion {
margin-right: 1px;
}
}
.title-container {
display: flex;
align-items: flex-start;
}
.title {
padding: 0;
margin-bottom: $gl-padding;
border-bottom: 0;
word-wrap: break-word;
overflow-wrap: break-word;
min-width: 0;
width: 100%;
text-align: initial;
}
.btn-edit {
margin-left: auto;
}
.emoji-block {
padding: $gl-padding-4 0;
@include media-breakpoint-down(md) {
padding: $gl-padding-8 0;
}
}
}
.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: 0;
right: 0;
filter: drop-shadow(0 0 0.5px $white) drop-shadow(0 0 1px $white) drop-shadow(0 0 2px $white);
}
}
.reviewer .merge-icon {
bottom: -3px;
right: -3px;
}
.right-sidebar {
position: fixed;
top: $header-height;
bottom: 0;
right: 0;
transition: width $sidebar-transition-duration;
background: $gray-light;
z-index: 200;
overflow: hidden;
@include media-breakpoint-down(sm) {
z-index: 251;
}
a:not(.btn) {
color: inherit;
&:hover {
color: $blue-800;
.avatar {
border-color: rgba($gray-normal, 0.2);
}
}
}
.gl-label .gl-label-link:hover {
text-decoration: none;
color: inherit;
.gl-label-text:last-of-type {
text-decoration: underline;
}
}
.btn-link {
color: inherit;
}
.issuable-header-text {
margin-top: 7px;
}
.gutter-toggle {
margin-left: 20px;
padding-left: 10px;
&:hover {
color: $gl-text-color;
}
&:hover,
&:focus {
text-decoration: none;
}
}
.block {
@include clearfix;
padding: $gl-padding 0;
border-bottom: 1px solid $border-gray-normal;
// This prevents the mess when resizing the sidebar
// of elements repositioning themselves..
width: $gutter-inner-width;
// --
&.issuable-sidebar-header {
padding-top: 0;
padding-bottom: 10px;
}
&:last-child {
border: 0;
}
&.assignee {
.author-link {
display: block;
position: relative;
&:hover {
.author {
text-decoration: underline;
}
}
}
}
}
.block-first {
padding-top: 0;
}
.title {
color: $gl-text-color;
line-height: $gl-line-height-20;
.avatar {
margin-left: 0;
}
}
.cross-project-reference {
color: inherit;
span {
white-space: nowrap;
width: 85%;
overflow: hidden;
position: relative;
display: inline-block;
text-overflow: ellipsis;
}
button {
float: right;
padding: 1px 5px;
background-color: $gray-light;
}
}
.selectbox {
display: none;
&.show {
display: block;
}
}
.btn-clipboard:hover {
color: $gl-text-color;
}
.issuable-sidebar {
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
&.affix-top .issuable-sidebar {
height: 100%;
}
&.right-sidebar-expanded {
width: $gutter-width;
.value {
line-height: 1;
.assign-yourself {
margin-top: 10px;
display: block;
}
}
.issuable-sidebar {
padding: 0 20px;
}
.issuable-sidebar-header {
padding-top: 10px;
}
&:not(.boards-sidebar):not([data-signed-in]):not([data-always-show-toggle]) {
.issuable-sidebar-header {
display: none;
}
}
.assign-yourself .btn-link {
padding-left: 0;
}
.light {
font-weight: $gl-font-weight-normal;
}
.no-value,
.btn-default-hover-link,
.btn-secondary-hover-link {
color: $gl-text-color-secondary;
}
.btn-secondary-hover-link:hover {
color: $blue-600;
}
.sidebar-collapsed-icon {
display: none;
}
.gutter-toggle {
margin-top: 7px;
border-left: 1px solid $border-gray-normal;
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) */
@include media-breakpoint-up(sm) {
display: block;
}
width: $gutter-collapsed-width;
padding: 0;
.block {
width: $gutter-collapsed-width - 2px;
padding: 0;
border-bottom: 0;
overflow: hidden;
&.with-sub-blocks .sub-block:hover,
&:not(.with-sub-blocks):hover {
background-color: $gray-100;
}
&.issuable-sidebar-header {
padding-top: 0;
}
}
.participants {
border-bottom: 1px solid $border-gray-normal;
}
.hide-collapsed {
display: none;
}
.gutter-toggle {
width: 100%;
height: $sidebar-toggle-height;
margin-left: 0;
padding-left: 0;
border-bottom: 1px solid $border-white-normal;
}
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;
}
}
.sidebar-avatar-counter {
padding-top: 2px;
}
.todo-undone {
color: $blue-600;
fill: $blue-600;
}
.author {
display: none;
}
.avatar-counter:hover {
color: $gl-text-color-secondary;
border-color: $gl-text-color-secondary;
}
.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 transfered 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;
}
.sidebar-collapsed-user {
padding-bottom: 0;
.author-link {
padding-left: 0;
.avatar {
position: static;
margin: 0;
}
}
}
.issuable-header-btn {
display: none;
}
.multiple-users {
position: relative;
height: 24px;
margin-bottom: 17px;
margin-top: 4px;
padding-bottom: 4px;
.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: $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;
}
.detail-page-description {
padding: 16px 0;
small {
color: $gray-500;
}
}
.edited-text {
color: $gray-500;
display: block;
margin: 16px 0 0;
font-size: 85%;
.author-link {
color: $gray-500;
}
}
.participants-list {
display: flex;
flex-wrap: wrap;
}
.user-list {
display: flex;
flex-wrap: wrap;
}
.participants-author {
display: inline-block;
padding: 0 $gl-padding-8 $gl-padding-8 0;
&:nth-of-type(7n) {
padding-right: 0;
}
.author-link {
display: block;
}
.avatar.avatar-inline {
margin: 0;
}
}
.user-item {
display: inline-block;
padding: 5px;
flex-basis: 20%;
.user-link {
display: inline-block;
}
}
.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;
}
}
.issuable-status-box {
align-self: stretch;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0;
padding: 0 $gl-padding-8;
@include media-breakpoint-up(sm) {
display: inline-block;
height: auto;
align-self: center;
}
}
.issuable-gutter-toggle {
@include media-breakpoint-down(sm) {
margin-left: $btn-side-margin;
}
}
.issuable-meta {
flex: 1;
display: inline-block;
font-size: 14px;
align-self: center;
overflow: hidden;
text-overflow: ellipsis;
.user-status-emoji {
margin-left: $gl-padding-4;
margin-right: 0;
}
}
.js-issuable-selector-wrap {
.js-issuable-selector {
width: 100%;
}
@include media-breakpoint-down(sm) {
margin-bottom: $gl-padding;
}
}
.issuable-list {
li {
.issuable-info-container {
flex: 1;
display: flex;
.issuable-main-info {
flex: 1 auto;
margin-right: 10px;
min-width: 0;
.issue-weight-icon,
.issue-estimate-icon {
vertical-align: sub;
}
}
.issuable-meta {
display: flex;
flex-direction: column;
align-items: flex-end;
flex: 1 0 auto;
.controls {
margin-bottom: 2px;
line-height: 20px;
padding: 0;
}
.issue-updated-at {
line-height: 20px;
}
}
@include media-breakpoint-down(xs) {
.issuable-meta {
.controls li {
margin-right: 0;
}
}
}
}
.issue-check {
padding-right: $gl-padding;
margin-bottom: 10px;
min-width: 15px;
.selected-issuable {
vertical-align: text-top;
}
}
.issuable-milestone,
.issuable-info,
.task-status,
.issuable-updated-at {
font-weight: $gl-font-weight-normal;
color: $gl-text-color-secondary;
a {
color: $gl-text-color;
}
.gl-label-link {
color: inherit;
&:hover {
text-decoration: none;
.gl-label-text:last-of-type {
text-decoration: underline;
}
}
}
.milestone {
color: $gray-700;
}
}
@media(max-width: map-get($grid-breakpoints, lg)-1) {
.task-status,
.issuable-due-date,
.issuable-weight,
.project-ref-path {
display: none;
}
}
}
}
.issuable-list li,
.issuable-info-container .controls {
.avatar-counter {
display: inline-block;
vertical-align: middle;
min-width: 16px;
line-height: 14px;
height: 16px;
padding-left: 2px;
padding-right: 2px;
}
}
.add-issuable-form-input-token-list {
display: flex;
flex-wrap: wrap;
align-items: baseline;
list-style: none;
margin-bottom: 0;
padding-left: 0;
}
.add-issuable-form-token-list-item {
max-width: 100%;
margin-bottom: $gl-vert-padding;
margin-right: 5px;
}
.add-issuable-form-input-list-item {
flex: 1;
min-width: 200px;
margin-bottom: $gl-vert-padding;
}
.add-issuable-form-input {
width: 100%;
border: 0;
&:focus {
outline: none;
}
}
.add-issuable-form-actions {
margin-top: $gl-padding;
}
.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;
}
}
.help-button,
.close-help-button {
cursor: pointer;
}
.compare-meter {
&.over_estimate {
.time-remaining,
.compare-value.spent {
color: $red-500;
}
}
}
.compare-display-container {
display: flex;
justify-content: space-between;
margin-top: 5px;
.compare-display {
font-size: 13px;
color: $compare-display-color;
.compare-value {
color: $gl-text-color;
}
}
}
.time-tracking-help-state {
background: $white;
margin: 16px -20px -20px;
padding: 16px 20px;
border-top: 1px solid $border-gray-light;
border-bottom: 1px solid $border-gray-light;
a:hover {
color: $btn-white-active;
}
}
.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;
}
}
.issuable-todo-btn {
.gl-spinner {
display: none;
}
&.is-loading {
.gl-spinner {
display: inline-block;
}
&.sidebar-collapsed-icon {
.issuable-todo-inner {
display: none;
}
}
}
}
/*
* Following overrides are done to prevent
* legacy dropdown styles from influencing
* GitLab UI components used within GlDropdown
*/
.issuable-move-dropdown {
.b-dropdown-form {
@include gl-p-0;
}
.gl-search-box-by-type button.gl-clear-icon-button:hover {
@include gl-bg-transparent;
}
.issuable-move-button:not(.disabled):hover {
@include gl-text-white;
}
}
.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;
}
}
}
}
.issuable-suggestions svg {
vertical-align: sub;
}
.suggestion-confidential {
color: $orange-500;
}
.suggestion-state-open {
color: $green-500;
}
.suggestion-state-closed {
color: $blue-500;
}
.suggestion-help-hover {
cursor: help;
}
.suggestion-footer {
font-size: 12px;
line-height: 15px;
.avatar {
margin-top: -3px;
border: 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);
}
}
}