// Common .diff-file { margin-bottom: $gl-padding; .file-title, .file-title-flex-parent { cursor: pointer; a:hover { text-decoration: none; } &:hover { background-color: $gray-normal; } .diff-toggle-caret { padding-right: 6px; } } .diff-content { background: $white-light; color: $gl-text-color; border-radius: 0 0 3px 3px; .unfold { cursor: pointer; } .file-mode-changed { padding: 10px; color: $file-mode-changed; } .suppressed-container { padding: ($padding-base-vertical + 5px) $padding-base-horizontal; text-align: center; // "Changes suppressed. Click to show." link .show-suppressed-diff { font-size: 110%; font-weight: bold; } } table { width: 100%; font-family: $monospace_font; border: none; border-collapse: separate; margin: 0; padding: 0; table-layout: fixed; .diff-line-num { width: 50px; a { transition: none; } } .line_holder td { line-height: $code_line_height; font-size: $code_font_size; &.noteable_line { position: relative; } span { white-space: pre-wrap; } .line { word-wrap: break-word; } } } tr.line_holder.parallel { td.line_content.parallel { width: 46%; } .add-diff-note { margin-left: -55px; } } .old_line, .new_line { @include user-select(none); margin: 0; border: none; padding: 0 5px; border-right: 1px solid; text-align: right; min-width: 35px; max-width: 50px; width: 35px; a { float: left; width: 35px; font-weight: normal; &[disabled] { cursor: default; &:hover, &:active { text-decoration: none; } } } } .line_content { display: block; margin: 0; padding: 0 1.5em; border: none; position: relative; &.parallel { display: table-cell; span { word-break: break-all; } } &.old { &::before { content: '-'; position: absolute; left: 0.5em; } } &.new { &::before { content: '+'; position: absolute; left: 0.5em; } } } } .image { background: $file-image-bg; text-align: center; padding: 30px; .wrap { display: inline-block; } .frame { display: inline-block; background-color: $white-light; line-height: 0; img { border: 1px solid $white-light; background-image: linear-gradient(45deg, $border-color 25%, transparent 25%, transparent 75%, $border-color 75%, $border-color 100%), linear-gradient(45deg, $border-color 25%, transparent 25%, transparent 75%, $border-color 75%, $border-color 100%); background-size: 10px 10px; background-position: 0 0, 5px 5px; max-width: 100%; } &.deleted { border: 1px solid $deleted; } &.added { border: 1px solid $added; } } .image-info { font-size: 12px; margin: 5px 0 0; color: $diff-image-info-color; } .view.swipe { position: relative; .swipe-frame { display: block; margin: auto; position: relative; } .swipe-wrap { overflow: hidden; border-left: 1px solid $diff-swipe-border; position: absolute; display: block; top: 13px; right: 7px; } .frame { top: 0; right: 0; position: absolute; &.deleted { margin: 0; display: block; top: 13px; right: 7px; } } .swipe-bar { display: block; height: 100%; width: 15px; z-index: 100; position: absolute; cursor: pointer; &:hover { .top-handle { background-position: -15px 3px; } .bottom-handle { background-position: -15px -11px; } } .top-handle { display: block; height: 14px; width: 15px; position: absolute; top: 0; background: image-url('swipemode_sprites.gif') 0 3px no-repeat; } .bottom-handle { display: block; height: 14px; width: 15px; position: absolute; bottom: 0; background: image-url('swipemode_sprites.gif') 0 -11px no-repeat; } } } //.view.swipe .view.onion-skin { .onion-skin-frame { display: block; margin: auto; position: relative; } .frame.added, .frame.deleted { position: absolute; display: block; top: 0; left: 0; } .controls { display: block; height: 14px; width: 300px; z-index: 100; position: absolute; bottom: 0; left: 50%; margin-left: -150px; .drag-track { display: block; position: absolute; left: 12px; height: 10px; width: 276px; background: image-url('onion_skin_sprites.gif') -4px -20px repeat-x; } .dragger { display: block; position: absolute; left: 0; top: 0; height: 14px; width: 14px; background: image-url('onion_skin_sprites.gif') 0 -34px repeat-x; cursor: pointer; } .transparent { display: block; position: absolute; top: 2px; right: 0; height: 10px; width: 10px; background: image-url('onion_skin_sprites.gif') -2px 0 no-repeat; } .opaque { display: block; position: absolute; top: 2px; left: 0; height: 10px; width: 10px; background: image-url('onion_skin_sprites.gif') -2px -10px no-repeat; } } } //.view.onion-skin } .view-modes { padding: 10px; text-align: center; background: $gray-darker; ul, li { list-style: none; margin: 0; padding: 0; display: inline-block; } li { color: $diff-view-modes-color; border-left: 1px solid $diff-view-modes-border; padding: 0 12px 0 16px; cursor: pointer; &:first-child { border-left: none; } &:hover { text-decoration: underline; } &.active { cursor: default; color: $gl-text-color; &:hover { text-decoration: none; } } &.disabled { display: none; } } } } .file-content .diff-file { margin: 0; border: none; } .diff-file .line_content { white-space: pre-wrap; } .diff-wrap-lines .line_content { white-space: pre-wrap; } .inline-parallel-buttons { float: right; } .files-changed { border-bottom: none; } .diff-stats-summary-toggler { padding: 0; background-color: transparent; border: 0; color: $gl-link-color; font-weight: 600; &:hover, &:focus { outline: none; color: $gl-link-hover-color; } } // Mobile @media (max-width: 480px) { .diff-title { margin: 0; .file-mode { display: none; } } .diff-controls { position: static; text-align: center; } } // Bigger screens @media (min-width: 481px) { .diff-title { margin-right: 200px; .file-mode { margin-left: 10px; } } .diff-controls { float: right; position: absolute; top: 5px; right: 15px; } } @mixin diff_background($background, $idiff, $border) { background: $background; &.line_content span.idiff { background: $idiff; } &.diff-line-num { border-color: $border; } } .files { margin-top: -1px; .diff-file:last-child { margin-bottom: 0; } } .file-holder { .diff-line-num:not(.js-unfold-bottom) { a { &::before { content: attr(data-linenumber); } } } } .diff-comment-avatar-holders { position: absolute; height: 19px; width: 19px; margin-left: -15px; z-index: 100; &:hover { .diff-comment-avatar, .diff-comments-more-count { @for $i from 1 through 4 { $x-pos: 14px; &:nth-child(#{$i}) { @if $i == 4 { $x-pos: 14.5px; } transform: translateX((($i * $x-pos) - $x-pos)); &:hover { transform: translateX((($i * $x-pos) - $x-pos)); } } } } .diff-comments-more-count { padding-left: 2px; padding-right: 2px; width: auto; } } } .diff-comment-avatar, .diff-comments-more-count { position: absolute; left: 0; width: 19px; height: 19px; margin-right: 0; border-color: $white-light; cursor: pointer; transition: all .1s ease-out; @for $i from 1 through 4 { &:nth-child(#{$i}) { z-index: (4 - $i); } } } .diff-comments-more-count { width: 19px; min-width: 19px; padding-left: 0; padding-right: 0; overflow: hidden; } .diff-comments-more-count, .diff-notes-collapse { @extend .avatar-counter; } .diff-notes-collapse { position: relative; width: 19px; height: 19px; padding: 0; transition: transform .1s ease-out; z-index: 100; svg { position: absolute; left: 50%; top: 50%; margin-left: -5.5px; margin-top: -5.5px; } path { fill: $white-light; } &:focus { outline: 0; } } .diff-files-changed { .inline-parallel-buttons { position: relative; z-index: 1; } .commit-stat-summary { @include new-style-dropdown; @media (min-width: $screen-sm-min) { margin-left: -$gl-padding; padding-left: $gl-padding; background-color: $white-light; } } @media (min-width: $screen-sm-min) { position: -webkit-sticky; position: sticky; top: 34px; background-color: $white-light; z-index: 190; &.diff-files-changed-merge-request { top: 84px; } + .files, + .alert { margin-top: 1px; } &:not(.is-stuck) .diff-stats-additions-deletions-collapsed { display: none; } &.is-stuck { padding-top: 0; padding-bottom: 0; border-bottom: 1px solid $white-dark; transform: translateY(16px); .diff-stats-additions-deletions-expanded, .inline-parallel-buttons { display: none; } + .files, + .alert { margin-top: 30px; } } } } .diff-file-changes { width: 450px; z-index: 150; @media (min-width: $screen-sm-min) { left: $gl-padding; } a { padding-top: 8px; padding-bottom: 8px; } } .diff-file-changes-path { @include str-truncated(78%); }