Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
		
							parent
							
								
									544eaa9081
								
							
						
					
					
						commit
						f145ef4be7
					
				| 
						 | 
					@ -132,16 +132,16 @@ export default class BlobViewer {
 | 
				
			||||||
    const newViewer = this.$fileHolder[0].querySelector(`.blob-viewer[data-type='${name}']`);
 | 
					    const newViewer = this.$fileHolder[0].querySelector(`.blob-viewer[data-type='${name}']`);
 | 
				
			||||||
    if (this.activeViewer === newViewer) return;
 | 
					    if (this.activeViewer === newViewer) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const oldButton = document.querySelector('.js-blob-viewer-switch-btn.active');
 | 
					    const oldButton = document.querySelector('.js-blob-viewer-switch-btn.selected');
 | 
				
			||||||
    const newButton = document.querySelector(`.js-blob-viewer-switch-btn[data-viewer='${name}']`);
 | 
					    const newButton = document.querySelector(`.js-blob-viewer-switch-btn[data-viewer='${name}']`);
 | 
				
			||||||
    const oldViewer = this.$fileHolder[0].querySelector(`.blob-viewer:not([data-type='${name}'])`);
 | 
					    const oldViewer = this.$fileHolder[0].querySelector(`.blob-viewer:not([data-type='${name}'])`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (oldButton) {
 | 
					    if (oldButton) {
 | 
				
			||||||
      oldButton.classList.remove('active');
 | 
					      oldButton.classList.remove('selected');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (newButton) {
 | 
					    if (newButton) {
 | 
				
			||||||
      newButton.classList.add('active');
 | 
					      newButton.classList.add('selected');
 | 
				
			||||||
      newButton.blur();
 | 
					      newButton.blur();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ export default class CommitsList {
 | 
				
			||||||
    const search = this.searchField.val();
 | 
					    const search = this.searchField.val();
 | 
				
			||||||
    if (search === this.lastSearch) return Promise.resolve();
 | 
					    if (search === this.lastSearch) return Promise.resolve();
 | 
				
			||||||
    const commitsUrl = `${form.attr('action')}?${form.serialize()}`;
 | 
					    const commitsUrl = `${form.attr('action')}?${form.serialize()}`;
 | 
				
			||||||
    this.content.fadeTo('fast', 0.5);
 | 
					    this.content.addClass('gl-opacity-5');
 | 
				
			||||||
    const params = form.serializeArray().reduce(
 | 
					    const params = form.serializeArray().reduce(
 | 
				
			||||||
      (acc, obj) =>
 | 
					      (acc, obj) =>
 | 
				
			||||||
        Object.assign(acc, {
 | 
					        Object.assign(acc, {
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ export default class CommitsList {
 | 
				
			||||||
      .then(({ data }) => {
 | 
					      .then(({ data }) => {
 | 
				
			||||||
        this.lastSearch = search;
 | 
					        this.lastSearch = search;
 | 
				
			||||||
        this.content.html(data.html);
 | 
					        this.content.html(data.html);
 | 
				
			||||||
        this.content.fadeTo('fast', 1.0);
 | 
					        this.content.removeClass('gl-opacity-5');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Change url so if user reload a page - search results are saved
 | 
					        // Change url so if user reload a page - search results are saved
 | 
				
			||||||
        window.history.replaceState(
 | 
					        window.history.replaceState(
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ export default class CommitsList {
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      .catch(() => {
 | 
					      .catch(() => {
 | 
				
			||||||
        this.content.fadeTo('fast', 1.0);
 | 
					        this.content.removeClass('gl-opacity-5');
 | 
				
			||||||
        this.lastSearch = null;
 | 
					        this.lastSearch = null;
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,6 @@
 | 
				
			||||||
  content: '\f0eb';
 | 
					  content: '\f0eb';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.fa-circle::before {
 | 
					 | 
				
			||||||
  content: '\f111';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.fa-thumb-tack::before {
 | 
					.fa-thumb-tack::before {
 | 
				
			||||||
  content: '\f08d';
 | 
					  content: '\f08d';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -62,24 +58,3 @@
 | 
				
			||||||
.fa-check-square-o::before {
 | 
					.fa-check-square-o::before {
 | 
				
			||||||
  content: '\f046';
 | 
					  content: '\f046';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
.sr-only {
 | 
					 | 
				
			||||||
  position: absolute;
 | 
					 | 
				
			||||||
  width: 1px;
 | 
					 | 
				
			||||||
  height: 1px;
 | 
					 | 
				
			||||||
  padding: 0;
 | 
					 | 
				
			||||||
  margin: -1px;
 | 
					 | 
				
			||||||
  overflow: hidden;
 | 
					 | 
				
			||||||
  clip: rect(0, 0, 0, 0);
 | 
					 | 
				
			||||||
  border: 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.sr-only-focusable:active,
 | 
					 | 
				
			||||||
.sr-only-focusable:focus {
 | 
					 | 
				
			||||||
  position: static;
 | 
					 | 
				
			||||||
  width: auto;
 | 
					 | 
				
			||||||
  height: auto;
 | 
					 | 
				
			||||||
  margin: 0;
 | 
					 | 
				
			||||||
  overflow: visible;
 | 
					 | 
				
			||||||
  clip: auto;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,7 +73,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.content-component-block {
 | 
					  &.content-component-block {
 | 
				
			||||||
    padding: 11px 0;
 | 
					    padding: 11px 0;
 | 
				
			||||||
    background-color: $white;
 | 
					    background-color: $body-bg;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .title {
 | 
					  .title {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,7 +56,7 @@
 | 
				
			||||||
        left: -11px;
 | 
					        left: -11px;
 | 
				
			||||||
        width: 10px;
 | 
					        width: 10px;
 | 
				
			||||||
        height: calc(100% + 1px);
 | 
					        height: calc(100% + 1px);
 | 
				
			||||||
        background: $white;
 | 
					        background: $body-bg;
 | 
				
			||||||
        pointer-events: none;
 | 
					        pointer-events: none;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@mixin mini-pipeline-item() {
 | 
					@mixin mini-pipeline-item() {
 | 
				
			||||||
  border-radius: 100px;
 | 
					  border-radius: 100px;
 | 
				
			||||||
  background-color: $white;
 | 
					  background-color: var(--white, $white);
 | 
				
			||||||
  border-width: 1px;
 | 
					  border-width: 1px;
 | 
				
			||||||
  border-style: solid;
 | 
					  border-style: solid;
 | 
				
			||||||
  width: $ci-action-icon-size;
 | 
					  width: $ci-action-icon-size;
 | 
				
			||||||
| 
						 | 
					@ -85,22 +85,22 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Dropdown button animation in mini pipeline graph
 | 
					  // Dropdown button animation in mini pipeline graph
 | 
				
			||||||
  &.ci-status-icon-success {
 | 
					  &.ci-status-icon-success {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $green-100, $green-200, $green-500, $green-600, $green-700);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $green-100, $green-200, $green-500, $green-600, $green-700);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.ci-status-icon-failed {
 | 
					  &.ci-status-icon-failed {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $red-100, $red-200, $red-500, $red-600, $red-700);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $red-100, $red-200, $red-500, $red-600, $red-700);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.ci-status-icon-pending,
 | 
					  &.ci-status-icon-pending,
 | 
				
			||||||
  &.ci-status-icon-waiting-for-resource,
 | 
					  &.ci-status-icon-waiting-for-resource,
 | 
				
			||||||
  &.ci-status-icon-success-with-warnings {
 | 
					  &.ci-status-icon-success-with-warnings {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $orange-50, $orange-100, $orange-500, $orange-600, $orange-700);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $orange-50, $orange-100, $orange-500, $orange-600, $orange-700);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.ci-status-icon-preparing,
 | 
					  &.ci-status-icon-preparing,
 | 
				
			||||||
  &.ci-status-icon-running {
 | 
					  &.ci-status-icon-running {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $blue-100, $blue-200, $blue-500, $blue-600, $blue-700);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $blue-100, $blue-200, $blue-500, $blue-600, $blue-700);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.ci-status-icon-canceled,
 | 
					  &.ci-status-icon-canceled,
 | 
				
			||||||
| 
						 | 
					@ -108,12 +108,12 @@
 | 
				
			||||||
  &.ci-status-icon-disabled,
 | 
					  &.ci-status-icon-disabled,
 | 
				
			||||||
  &.ci-status-icon-not-found,
 | 
					  &.ci-status-icon-not-found,
 | 
				
			||||||
  &.ci-status-icon-manual {
 | 
					  &.ci-status-icon-manual {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $gray-500, $gray-700, $gray-900, $gray-950, $black);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $gray-500, $gray-700, $gray-900, $gray-950, $black);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.ci-status-icon-created,
 | 
					  &.ci-status-icon-created,
 | 
				
			||||||
  &.ci-status-icon-skipped {
 | 
					  &.ci-status-icon-skipped {
 | 
				
			||||||
    @include mini-pipeline-graph-color($white, $gray-100, $gray-200, $gray-300, $gray-400, $gray-500);
 | 
					    @include mini-pipeline-graph-color(var(--white, $white), $gray-100, $gray-200, $gray-300, $gray-400, $gray-500);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -226,7 +226,7 @@
 | 
				
			||||||
      &:focus {
 | 
					      &:focus {
 | 
				
			||||||
        outline: none;
 | 
					        outline: none;
 | 
				
			||||||
        text-decoration: none;
 | 
					        text-decoration: none;
 | 
				
			||||||
        background-color: $gray-darker;
 | 
					        background-color: var(--gray-100, $gray-50);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,7 @@ $mr-widget-min-height: 69px;
 | 
				
			||||||
  position: relative;
 | 
					  position: relative;
 | 
				
			||||||
  border: 1px solid $border-color;
 | 
					  border: 1px solid $border-color;
 | 
				
			||||||
  border-radius: $border-radius-default;
 | 
					  border-radius: $border-radius-default;
 | 
				
			||||||
 | 
					  background: var(--white, $white);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .gl-skeleton-loader {
 | 
					  .gl-skeleton-loader {
 | 
				
			||||||
    display: block;
 | 
					    display: block;
 | 
				
			||||||
| 
						 | 
					@ -61,7 +62,7 @@ $mr-widget-min-height: 69px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mr-widget-extension {
 | 
					.mr-widget-extension {
 | 
				
			||||||
  border-top: 1px solid $border-color;
 | 
					  border-top: 1px solid $border-color;
 | 
				
			||||||
  background-color: $gray-light;
 | 
					  background-color: $gray-50;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.clickable:hover {
 | 
					  &.clickable:hover {
 | 
				
			||||||
    background-color: $gray-100;
 | 
					    background-color: $gray-100;
 | 
				
			||||||
| 
						 | 
					@ -87,6 +88,7 @@ $mr-widget-min-height: 69px;
 | 
				
			||||||
  border: 1px solid $border-color;
 | 
					  border: 1px solid $border-color;
 | 
				
			||||||
  border-radius: $border-radius-default;
 | 
					  border-radius: $border-radius-default;
 | 
				
			||||||
  border-top: 0;
 | 
					  border-top: 0;
 | 
				
			||||||
 | 
					  background: var(--white, $white);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mr-widget-body,
 | 
					.mr-widget-body,
 | 
				
			||||||
| 
						 | 
					@ -543,6 +545,7 @@ $mr-widget-min-height: 69px;
 | 
				
			||||||
  border-radius: $border-radius-default;
 | 
					  border-radius: $border-radius-default;
 | 
				
			||||||
  padding: $gl-padding;
 | 
					  padding: $gl-padding;
 | 
				
			||||||
  border: 1px solid $border-color;
 | 
					  border: 1px solid $border-color;
 | 
				
			||||||
 | 
					  background: var(--white, $white);
 | 
				
			||||||
  min-height: $mr-widget-min-height;
 | 
					  min-height: $mr-widget-min-height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @include media-breakpoint-up(md) {
 | 
					  @include media-breakpoint-up(md) {
 | 
				
			||||||
| 
						 | 
					@ -761,7 +764,7 @@ $mr-widget-min-height: 69px;
 | 
				
			||||||
.epic-tabs-holder {
 | 
					.epic-tabs-holder {
 | 
				
			||||||
  top: $header-height;
 | 
					  top: $header-height;
 | 
				
			||||||
  z-index: 250;
 | 
					  z-index: 250;
 | 
				
			||||||
  background-color: $white;
 | 
					  background-color: $body-bg;
 | 
				
			||||||
  border-bottom: 1px solid $border-color;
 | 
					  border-bottom: 1px solid $border-color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .with-system-header & {
 | 
					  .with-system-header & {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -350,7 +350,7 @@ $note-form-margin-left: 72px;
 | 
				
			||||||
            left: $gl-padding-24;
 | 
					            left: $gl-padding-24;
 | 
				
			||||||
            right: 0;
 | 
					            right: 0;
 | 
				
			||||||
            bottom: 0;
 | 
					            bottom: 0;
 | 
				
			||||||
            background: linear-gradient(rgba($white, 0.1) -100px, $white 100%);
 | 
					            background: linear-gradient(rgba($white, 0.1) -100px, $body-bg 100%);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,63 +1,63 @@
 | 
				
			||||||
$gray-10: #1f1f1f;
 | 
					$gray-10: #1f1f1f;
 | 
				
			||||||
$gray-50: #2e2e2e;
 | 
					$gray-50: #303030;
 | 
				
			||||||
$gray-100: #4f4f4f;
 | 
					$gray-100: #404040;
 | 
				
			||||||
$gray-200: #707070;
 | 
					$gray-200: #525252;
 | 
				
			||||||
$gray-300: #919191;
 | 
					$gray-300: #5e5e5e;
 | 
				
			||||||
$gray-400: #a7a7a7;
 | 
					$gray-400: #868686;
 | 
				
			||||||
$gray-500: #bababa;
 | 
					$gray-500: #999;
 | 
				
			||||||
$gray-600: #ccc;
 | 
					$gray-600: #bfbfbf;
 | 
				
			||||||
$gray-700: #dfdfdf;
 | 
					$gray-700: #dbdbdb;
 | 
				
			||||||
$gray-800: #f2f2f2;
 | 
					$gray-800: #f0f0f0;
 | 
				
			||||||
$gray-900: #fafafa;
 | 
					$gray-900: #fafafa;
 | 
				
			||||||
$gray-950: #fff;
 | 
					$gray-950: #fff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$green-50: #072b15;
 | 
					$green-50: #0a4020;
 | 
				
			||||||
$green-100: #0a4020;
 | 
					$green-100: #0d532a;
 | 
				
			||||||
$green-200: #0e5a2d;
 | 
					$green-200: #24663b;
 | 
				
			||||||
$green-300: #12753a;
 | 
					$green-300: #217645;
 | 
				
			||||||
$green-400: #168f48;
 | 
					$green-400: #108548;
 | 
				
			||||||
$green-500: #1aaa55;
 | 
					$green-500: #2da160;
 | 
				
			||||||
$green-600: #37b96d;
 | 
					$green-600: #52b87a;
 | 
				
			||||||
$green-700: #75d09b;
 | 
					$green-700: #91d4a8;
 | 
				
			||||||
$green-800: #b3e6c8;
 | 
					$green-800: #c3e6cd;
 | 
				
			||||||
$green-900: #dcf5e7;
 | 
					$green-900: #ecf4ee;
 | 
				
			||||||
$green-950: #f1fdf6;
 | 
					$green-950: #f1fdf6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$blue-50: #0a2744;
 | 
					$blue-50: #033464;
 | 
				
			||||||
$blue-100: #0f3b66;
 | 
					$blue-100: #064787;
 | 
				
			||||||
$blue-200: #134a81;
 | 
					$blue-200: #0b5cad;
 | 
				
			||||||
$blue-300: #17599c;
 | 
					$blue-300: #1068bf;
 | 
				
			||||||
$blue-400: #1b69b6;
 | 
					$blue-400: #1f75cb;
 | 
				
			||||||
$blue-500: #1f78d1;
 | 
					$blue-500: #428fdc;
 | 
				
			||||||
$blue-600: #418cd8;
 | 
					$blue-600: #63a6e9;
 | 
				
			||||||
$blue-700: #73afea;
 | 
					$blue-700: #9dc7f1;
 | 
				
			||||||
$blue-800: #b8d6f4;
 | 
					$blue-800: #cbe2f9;
 | 
				
			||||||
$blue-900: #e4f0fb;
 | 
					$blue-900: #e9f3fc;
 | 
				
			||||||
$blue-950: #f6fafe;
 | 
					$blue-950: #f2f9ff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$orange-50: #592800;
 | 
					$orange-50: #5c2900;
 | 
				
			||||||
$orange-100: #853c00;
 | 
					$orange-100: #703800;
 | 
				
			||||||
$orange-200: #a35200;
 | 
					$orange-200: #8f4700;
 | 
				
			||||||
$orange-300: #c26700;
 | 
					$orange-300: #9e5400;
 | 
				
			||||||
$orange-400: #de7e00;
 | 
					$orange-400: #ab6100;
 | 
				
			||||||
$orange-500: #fc9403;
 | 
					$orange-500: #c17d10;
 | 
				
			||||||
$orange-600: #fca429;
 | 
					$orange-600: #d99530;
 | 
				
			||||||
$orange-700: #fdbc60;
 | 
					$orange-700: #e9be74;
 | 
				
			||||||
$orange-800: #fed69f;
 | 
					$orange-800: #f5d9a8;
 | 
				
			||||||
$orange-900: #fff1de;
 | 
					$orange-900: #fdf1dd;
 | 
				
			||||||
$orange-950: #fffaf4;
 | 
					$orange-950: #fff4e1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$red-50: #4b140b;
 | 
					$red-50: #660e00;
 | 
				
			||||||
$red-100: #711e11;
 | 
					$red-100: #8d1300;
 | 
				
			||||||
$red-200: #8b2615;
 | 
					$red-200: #ae1800;
 | 
				
			||||||
$red-300: #a62d19;
 | 
					$red-300: #c91c00;
 | 
				
			||||||
$red-400: #c0341d;
 | 
					$red-400: #dd2b0e;
 | 
				
			||||||
$red-500: #db3b21;
 | 
					$red-500: #ec5941;
 | 
				
			||||||
$red-600: #e05842;
 | 
					$red-600: #f57f6c;
 | 
				
			||||||
$red-700: #ea8271;
 | 
					$red-700: #fcb5aa;
 | 
				
			||||||
$red-800: #f2b4a9;
 | 
					$red-800: #fdd4cd;
 | 
				
			||||||
$red-900: #fbe5e1;
 | 
					$red-900: #fcf1ef;
 | 
				
			||||||
$red-950: #fef6f5;
 | 
					$red-950: #fff4f3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$indigo-50: #1a1a40;
 | 
					$indigo-50: #1a1a40;
 | 
				
			||||||
$indigo-100: #292961;
 | 
					$indigo-100: #292961;
 | 
				
			||||||
| 
						 | 
					@ -166,14 +166,16 @@ body.gl-dark {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  --white: #{$white};
 | 
					  --white: #{$white};
 | 
				
			||||||
  --black: #{$black};
 | 
					  --black: #{$black};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  --svg-status-bg: #{$white};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$border-white-light: $gray-900;
 | 
					$border-white-light: $gray-900;
 | 
				
			||||||
$border-white-normal: $gray-900;
 | 
					$border-white-normal: $gray-900;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$body-bg: $gray-50;
 | 
					$body-bg: $gray-10;
 | 
				
			||||||
$input-bg: $gray-100;
 | 
					$input-bg: $white;
 | 
				
			||||||
$input-focus-bg: $gray-100;
 | 
					$input-focus-bg: $white;
 | 
				
			||||||
$input-color: $gray-900;
 | 
					$input-color: $gray-900;
 | 
				
			||||||
$input-group-addon-bg: $gray-900;
 | 
					$input-group-addon-bg: $gray-900;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
# frozen_string_literal: true
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# The usage of the ReactiveCaching module is documented here:
 | 
					# The usage of the ReactiveCaching module is documented here:
 | 
				
			||||||
# https://docs.gitlab.com/ee/development/reactive_caching.md
 | 
					# https://docs.gitlab.com/ee/development/reactive_caching.html
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
module ReactiveCaching
 | 
					module ReactiveCaching
 | 
				
			||||||
  extend ActiveSupport::Concern
 | 
					  extend ActiveSupport::Concern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,5 +8,5 @@
 | 
				
			||||||
      = sprite_icon(simple_viewer.switcher_icon)
 | 
					      = sprite_icon(simple_viewer.switcher_icon)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - rich_label = "Display #{rich_viewer.switcher_title}"
 | 
					    - rich_label = "Display #{rich_viewer.switcher_title}"
 | 
				
			||||||
    %button.btn.gl-button.btn-default.btn-sm.js-blob-viewer-switch-btn.has-tooltip{ 'aria-label' => rich_label, title: rich_label, data: { viewer: 'rich', container: 'body' } }>
 | 
					    %button.btn.gl-button.btn-default.btn-sm.js-blob-viewer-switch-btn.gl-mr-3.has-tooltip{ 'aria-label' => rich_label, title: rich_label, data: { viewer: 'rich', container: 'body' } }>
 | 
				
			||||||
      = sprite_icon(rich_viewer.switcher_icon)
 | 
					      = sprite_icon(rich_viewer.switcher_icon)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					title: Fix margin and selected state in file header
 | 
				
			||||||
 | 
					merge_request: 49059
 | 
				
			||||||
 | 
					author:
 | 
				
			||||||
 | 
					type: fixed
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					title: Darker background for dark mode, plus small fixes to MR page
 | 
				
			||||||
 | 
					merge_request: 47359
 | 
				
			||||||
 | 
					author:
 | 
				
			||||||
 | 
					type: changed
 | 
				
			||||||
| 
						 | 
					@ -1015,3 +1015,39 @@ This will also refresh the cached usage ping displayed in the admin area
 | 
				
			||||||
```ruby
 | 
					```ruby
 | 
				
			||||||
Gitlab::UsageData.to_json(force_refresh: true)
 | 
					Gitlab::UsageData.to_json(force_refresh: true)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Elasticsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Configuration attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Open the rails console (`gitlab rails c`) and run the following command to see all the available attributes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```ruby
 | 
				
			||||||
 | 
					ApplicationSetting.last.attributes
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Among other attributes, in the output you will notice that all the settings available in the [Elasticsearch Integration page](../../integration/elasticsearch.md), like: `elasticsearch_indexing`, `elasticsearch_url`, `elasticsearch_replicas`, `elasticsearch_pause_indexing`, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Setting attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can then set anyone of Elasticsearch integration settings by issuing a command similar to:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```ruby
 | 
				
			||||||
 | 
					ApplicationSetting.last.update_attributes(elasticsearch_url: '<your ES URL and port>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#or
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ApplicationSetting.last.update_attributes(elasticsearch_indexing: false)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Getting attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can then check if the settings have been set in the [Elasticsearch Integration page](../../integration/elasticsearch.md) or in the rails console by issuing:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```ruby
 | 
				
			||||||
 | 
					Gitlab::CurrentSettings.elasticsearch_url
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#or
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Gitlab::CurrentSettings.elasticsearch_indexing
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ use this job:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
shfmt:
 | 
					shfmt:
 | 
				
			||||||
  image: mvdan/shfmt:v3.1.0-alpine
 | 
					  image: mvdan/shfmt:v3.2.0-alpine
 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
  before_script:
 | 
					  before_script:
 | 
				
			||||||
    - shfmt -version
 | 
					    - shfmt -version
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -472,7 +472,7 @@ A job cannot be both high urgency and have external dependencies.
 | 
				
			||||||
Workers that are constrained by CPU or memory resource limitations should be
 | 
					Workers that are constrained by CPU or memory resource limitations should be
 | 
				
			||||||
annotated with the `worker_resource_boundary` method.
 | 
					annotated with the `worker_resource_boundary` method.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Most workers tend to spend most of their time blocked, wait on network responses
 | 
					Most workers tend to spend most of their time blocked, waiting on network responses
 | 
				
			||||||
from other services such as Redis, PostgreSQL, and Gitaly. Since Sidekiq is a
 | 
					from other services such as Redis, PostgreSQL, and Gitaly. Since Sidekiq is a
 | 
				
			||||||
multi-threaded environment, these jobs can be scheduled with high concurrency.
 | 
					multi-threaded environment, these jobs can be scheduled with high concurrency.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,26 +32,29 @@ module API
 | 
				
			||||||
            requires :host, type: String, desc: 'The host to query for'
 | 
					            requires :host, type: String, desc: 'The host to query for'
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
          get "/" do
 | 
					          get "/" do
 | 
				
			||||||
            serverless_domain_finder = ServerlessDomainFinder.new(params[:host])
 | 
					            ##
 | 
				
			||||||
            if serverless_domain_finder.serverless?
 | 
					            # Serverless domain proxy has been deprecated and disabled as per
 | 
				
			||||||
              # Handle Serverless domains
 | 
					            #   https://gitlab.com/gitlab-org/gitlab-pages/-/issues/467
 | 
				
			||||||
              serverless_domain = serverless_domain_finder.execute
 | 
					            #
 | 
				
			||||||
              no_content! unless serverless_domain
 | 
					            # serverless_domain_finder = ServerlessDomainFinder.new(params[:host])
 | 
				
			||||||
 | 
					            # if serverless_domain_finder.serverless?
 | 
				
			||||||
 | 
					            #   # Handle Serverless domains
 | 
				
			||||||
 | 
					            #   serverless_domain = serverless_domain_finder.execute
 | 
				
			||||||
 | 
					            #   no_content! unless serverless_domain
 | 
				
			||||||
 | 
					            #
 | 
				
			||||||
 | 
					            #   virtual_domain = Serverless::VirtualDomain.new(serverless_domain)
 | 
				
			||||||
 | 
					            #   no_content! unless virtual_domain
 | 
				
			||||||
 | 
					            #
 | 
				
			||||||
 | 
					            #   present virtual_domain, with: Entities::Internal::Serverless::VirtualDomain
 | 
				
			||||||
 | 
					            # end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              virtual_domain = Serverless::VirtualDomain.new(serverless_domain)
 | 
					            host = Namespace.find_by_pages_host(params[:host]) || PagesDomain.find_by_domain_case_insensitive(params[:host])
 | 
				
			||||||
              no_content! unless virtual_domain
 | 
					            no_content! unless host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              present virtual_domain, with: Entities::Internal::Serverless::VirtualDomain
 | 
					            virtual_domain = host.pages_virtual_domain
 | 
				
			||||||
            else
 | 
					            no_content! unless virtual_domain
 | 
				
			||||||
              # Handle Pages domains
 | 
					 | 
				
			||||||
              host = Namespace.find_by_pages_host(params[:host]) || PagesDomain.find_by_domain_case_insensitive(params[:host])
 | 
					 | 
				
			||||||
              no_content! unless host
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
              virtual_domain = host.pages_virtual_domain
 | 
					            present virtual_domain, with: Entities::Internal::Pages::VirtualDomain
 | 
				
			||||||
              no_content! unless virtual_domain
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              present virtual_domain, with: Entities::Internal::Pages::VirtualDomain
 | 
					 | 
				
			||||||
            end
 | 
					 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1824
									
								
								locale/bg/gitlab.po
								
								
								
								
							
							
						
						
									
										1824
									
								
								locale/bg/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1848
									
								
								locale/de/gitlab.po
								
								
								
								
							
							
						
						
									
										1848
									
								
								locale/de/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1824
									
								
								locale/eo/gitlab.po
								
								
								
								
							
							
						
						
									
										1824
									
								
								locale/eo/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1882
									
								
								locale/es/gitlab.po
								
								
								
								
							
							
						
						
									
										1882
									
								
								locale/es/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1840
									
								
								locale/fr/gitlab.po
								
								
								
								
							
							
						
						
									
										1840
									
								
								locale/fr/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1824
									
								
								locale/it/gitlab.po
								
								
								
								
							
							
						
						
									
										1824
									
								
								locale/it/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1984
									
								
								locale/ja/gitlab.po
								
								
								
								
							
							
						
						
									
										1984
									
								
								locale/ja/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1824
									
								
								locale/kab/gitlab.po
								
								
								
								
							
							
						
						
									
										1824
									
								
								locale/kab/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1824
									
								
								locale/ko/gitlab.po
								
								
								
								
							
							
						
						
									
										1824
									
								
								locale/ko/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1880
									
								
								locale/ru/gitlab.po
								
								
								
								
							
							
						
						
									
										1880
									
								
								locale/ru/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1920
									
								
								locale/uk/gitlab.po
								
								
								
								
							
							
						
						
									
										1920
									
								
								locale/uk/gitlab.po
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -154,7 +154,7 @@ describe('Blob viewer', () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      blob.switchToViewer('simple');
 | 
					      blob.switchToViewer('simple');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      expect(simpleBtn.classList.contains('active')).toBeTruthy();
 | 
					      expect(simpleBtn.classList.contains('selected')).toBeTruthy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      expect(simpleBtn.blur).toHaveBeenCalled();
 | 
					      expect(simpleBtn.blur).toHaveBeenCalled();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -128,32 +128,38 @@ RSpec.describe API::Internal::Pages do
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          it 'responds with proxy configuration' do
 | 
					          it 'responds with 204 because of feature deprecation' do
 | 
				
			||||||
            query_host(serverless_domain.uri.host)
 | 
					            query_host(serverless_domain.uri.host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            expect(response).to have_gitlab_http_status(:ok)
 | 
					            expect(response).to have_gitlab_http_status(:no_content)
 | 
				
			||||||
            expect(response).to match_response_schema('internal/serverless/virtual_domain')
 | 
					            expect(response.body).to be_empty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            expect(json_response['certificate']).to eq(pages_domain.certificate)
 | 
					            ##
 | 
				
			||||||
            expect(json_response['key']).to eq(pages_domain.key)
 | 
					            # Serverless serving and reverse proxy to Kubernetes / Knative has
 | 
				
			||||||
 | 
					            #   been deprecated and disabled, as per
 | 
				
			||||||
            expect(json_response['lookup_paths']).to eq(
 | 
					            #   https://gitlab.com/gitlab-org/gitlab-pages/-/issues/467
 | 
				
			||||||
              [
 | 
					            #
 | 
				
			||||||
                {
 | 
					            # expect(response).to match_response_schema('internal/serverless/virtual_domain')
 | 
				
			||||||
                  'source' => {
 | 
					            # expect(json_response['certificate']).to eq(pages_domain.certificate)
 | 
				
			||||||
                    'type' => 'serverless',
 | 
					            # expect(json_response['key']).to eq(pages_domain.key)
 | 
				
			||||||
                    'service' => "test-function.#{project.name}-#{project.id}-#{environment.slug}.#{serverless_domain_cluster.knative.hostname}",
 | 
					            #
 | 
				
			||||||
                    'cluster' => {
 | 
					            # expect(json_response['lookup_paths']).to eq(
 | 
				
			||||||
                      'hostname' => serverless_domain_cluster.knative.hostname,
 | 
					            #   [
 | 
				
			||||||
                      'address' => serverless_domain_cluster.knative.external_ip,
 | 
					            #     {
 | 
				
			||||||
                      'port' => 443,
 | 
					            #       'source' => {
 | 
				
			||||||
                      'cert' => serverless_domain_cluster.certificate,
 | 
					            #         'type' => 'serverless',
 | 
				
			||||||
                      'key' => serverless_domain_cluster.key
 | 
					            #         'service' => "test-function.#{project.name}-#{project.id}-#{environment.slug}.#{serverless_domain_cluster.knative.hostname}",
 | 
				
			||||||
                    }
 | 
					            #         'cluster' => {
 | 
				
			||||||
                  }
 | 
					            #           'hostname' => serverless_domain_cluster.knative.hostname,
 | 
				
			||||||
                }
 | 
					            #           'address' => serverless_domain_cluster.knative.external_ip,
 | 
				
			||||||
              ]
 | 
					            #           'port' => 443,
 | 
				
			||||||
            )
 | 
					            #           'cert' => serverless_domain_cluster.certificate,
 | 
				
			||||||
 | 
					            #           'key' => serverless_domain_cluster.key
 | 
				
			||||||
 | 
					            #         }
 | 
				
			||||||
 | 
					            #       }
 | 
				
			||||||
 | 
					            #     }
 | 
				
			||||||
 | 
					            #   ]
 | 
				
			||||||
 | 
					            # )
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue