Commit c2a8daf9 authored by Phil Hughes's avatar Phil Hughes

Merge branch '15664-remove-jquery-nicescroll' into 'master'

Resolve "Remove jQuery Nicescroll"

Closes #15664, #30860, and #35885

See merge request !13262
parents 60bc0fc1 1e39b51a
...@@ -164,7 +164,6 @@ window.Build = (function () { ...@@ -164,7 +164,6 @@ window.Build = (function () {
Build.prototype.initSidebar = function () { Build.prototype.initSidebar = function () {
this.$sidebar = $('.js-build-sidebar'); this.$sidebar = $('.js-build-sidebar');
this.$sidebar.niceScroll();
}; };
Build.prototype.getBuildTrace = function () { Build.prototype.getBuildTrace = function () {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
$(function() { $(function() {
$('.reveal-variables').off('click').on('click', function() { $('.reveal-variables').off('click').on('click', function() {
$('.js-build').toggle().niceScroll(); $('.js-build-variables').toggle();
$(this).hide(); $(this).hide();
}); });
}); });
...@@ -6,6 +6,5 @@ import 'vendor/jquery.endless-scroll'; ...@@ -6,6 +6,5 @@ import 'vendor/jquery.endless-scroll';
import 'vendor/jquery.caret'; import 'vendor/jquery.caret';
import 'vendor/jquery.atwho'; import 'vendor/jquery.atwho';
import 'vendor/jquery.scrollTo'; import 'vendor/jquery.scrollTo';
import 'vendor/jquery.nicescroll';
import 'vendor/jquery.waitforimages'; import 'vendor/jquery.waitforimages';
import 'select2/select2'; import 'select2/select2';
...@@ -577,7 +577,6 @@ import GpgBadges from './gpg_badges'; ...@@ -577,7 +577,6 @@ import GpgBadges from './gpg_badges';
shortcut_handler = new ShortcutsWiki(); shortcut_handler = new ShortcutsWiki();
new ZenMode(); new ZenMode();
new gl.GLForm($('.wiki-form'), true); new gl.GLForm($('.wiki-form'), true);
new Sidebar();
break; break;
case 'snippets': case 'snippets':
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
......
/* global Breakpoints */ /* global Breakpoints */
import 'vendor/jquery.nicescroll';
import './breakpoints'; import './breakpoints';
export default class Wikis { export default class Wikis {
...@@ -8,7 +7,6 @@ export default class Wikis { ...@@ -8,7 +7,6 @@ export default class Wikis {
this.bp = Breakpoints.get(); this.bp = Breakpoints.get();
this.sidebarEl = document.querySelector('.js-wiki-sidebar'); this.sidebarEl = document.querySelector('.js-wiki-sidebar');
this.sidebarExpanded = false; this.sidebarExpanded = false;
$(this.sidebarEl).niceScroll();
const sidebarToggles = document.querySelectorAll('.js-sidebar-wiki-toggle'); const sidebarToggles = document.querySelectorAll('.js-sidebar-wiki-toggle');
for (let i = 0; i < sidebarToggles.length; i += 1) { for (let i = 0; i < sidebarToggles.length; i += 1) {
......
...@@ -109,16 +109,8 @@ body { ...@@ -109,16 +109,8 @@ body {
} }
} }
.page-with-sidebar > .content-wrapper {
/* The following prevents side effects related to iOS Safari's implementation of -webkit-overflow-scrolling: touch, min-height: calc(100vh - #{$header-height});
which is applied to the body by jquery.nicescroling plugin to force hardware acceleration for momentum scrolling. Side
effects are commonly related to inconsisent z-index behavior (e.g. tooltips). By applying the following to direct children
of the body element here, we negate cascading side effects but allow momentum scrolling to be applied to the body */
.navbar,
.page-gutter,
.page-with-sidebar {
-webkit-overflow-scrolling: auto;
} }
.with-performance-bar .page-with-sidebar { .with-performance-bar .page-with-sidebar {
......
...@@ -78,15 +78,12 @@ ...@@ -78,15 +78,12 @@
.right-sidebar { .right-sidebar {
border-left: 1px solid $border-color; border-left: 1px solid $border-color;
height: calc(100% - #{$header-height});
&.affix { &.affix {
position: fixed; position: fixed;
top: $header-height; top: $header-height;
} }
&:not(.affix-top) {
min-height: 100%;
}
} }
.with-performance-bar .right-sidebar.affix { .with-performance-bar .right-sidebar.affix {
......
...@@ -24,7 +24,7 @@ $new-sidebar-collapsed-width: 50px; ...@@ -24,7 +24,7 @@ $new-sidebar-collapsed-width: 50px;
// Override position: absolute // Override position: absolute
.right-sidebar { .right-sidebar {
position: fixed; position: fixed;
height: 100%; height: calc(100% - #{$header-height});
} }
.issues-bulk-update.right-sidebar.right-sidebar-expanded .issuable-sidebar-header { .issues-bulk-update.right-sidebar.right-sidebar-expanded .issuable-sidebar-header {
......
...@@ -235,8 +235,18 @@ ...@@ -235,8 +235,18 @@
display: none; display: none;
} }
.sidebar-container {
width: calc(100% + 100px);
padding-right: 100px;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
.blocks-container { .blocks-container {
padding: 0 $gl-padding; padding: 0 $gl-padding;
width: 289px;
} }
.block { .block {
...@@ -259,7 +269,15 @@ ...@@ -259,7 +269,15 @@
padding: 16px 0; padding: 16px 0;
} }
.trigger-build-variables {
margin: 0;
overflow-x: auto;
-ms-overflow-style: scrollbar;
-webkit-overflow-scrolling: touch;
}
.trigger-build-variable { .trigger-build-variable {
font-weight: normal;
color: $code-color; color: $code-color;
} }
...@@ -326,6 +344,7 @@ ...@@ -326,6 +344,7 @@
border-top: 1px solid $border-color; border-top: 1px solid $border-color;
border-bottom: 1px solid $border-color; border-bottom: 1px solid $border-color;
max-height: 300px; max-height: 300px;
width: 289px;
overflow: auto; overflow: auto;
svg { svg {
......
...@@ -95,12 +95,22 @@ ...@@ -95,12 +95,22 @@
} }
.right-sidebar.wiki-sidebar { .right-sidebar.wiki-sidebar {
padding: $gl-padding 0; padding: 0;
&.right-sidebar-collapsed { &.right-sidebar-collapsed {
display: none; display: none;
} }
.sidebar-container {
padding: $gl-padding 0;
width: calc(100% + 100px);
padding-right: 100px;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
.blocks-container { .blocks-container {
padding: 0 $gl-padding; padding: 0 $gl-padding;
} }
......
- builds = @build.pipeline.builds.to_a - builds = @build.pipeline.builds.to_a
%aside.right-sidebar.right-sidebar-expanded.build-sidebar.js-build-sidebar.js-right-sidebar{ data: { "offset-top" => "101", "spy" => "affix" } } %aside.right-sidebar.right-sidebar-expanded.build-sidebar.js-build-sidebar.js-right-sidebar{ data: { "offset-top" => "101", "spy" => "affix" } }
.blocks-container .sidebar-container
.block .blocks-container
%strong
= @build.name
%a.gutter-toggle.pull-right.visible-xs-block.visible-sm-block.js-sidebar-build-toggle{ href: "#", 'aria-label': 'Toggle Sidebar', role: 'button' }
= icon('angle-double-right')
#js-details-block-vue
- if can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?)
.block .block
.title %strong
Job artifacts = @build.name
- if @build.artifacts_expired? %a.gutter-toggle.pull-right.visible-xs-block.visible-sm-block.js-sidebar-build-toggle{ href: "#", 'aria-label': 'Toggle Sidebar', role: 'button' }
%p.build-detail-row = icon('angle-double-right')
The artifacts were removed
#{time_ago_with_tooltip(@build.artifacts_expire_at)}
- elsif @build.has_expiring_artifacts?
%p.build-detail-row
The artifacts will be removed in
%span.js-artifacts-remove= @build.artifacts_expire_at
- if @build.artifacts? #js-details-block-vue
.btn-group.btn-group-justified{ role: :group }
- if @build.has_expiring_artifacts? && can?(current_user, :update_build, @build)
= link_to keep_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default', method: :post do
Keep
= link_to download_project_job_artifacts_path(@project, @build), rel: 'nofollow', download: '', class: 'btn btn-sm btn-default' do - if can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?)
Download .block
.title
Job artifacts
- if @build.artifacts_expired?
%p.build-detail-row
The artifacts were removed
#{time_ago_with_tooltip(@build.artifacts_expire_at)}
- elsif @build.has_expiring_artifacts?
%p.build-detail-row
The artifacts will be removed in
%span.js-artifacts-remove= @build.artifacts_expire_at
- if @build.artifacts_metadata? - if @build.artifacts?
= link_to browse_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default' do .btn-group.btn-group-justified{ role: :group }
Browse - if @build.has_expiring_artifacts? && can?(current_user, :update_build, @build)
= link_to keep_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default', method: :post do
Keep
- if @build.trigger_request = link_to download_project_job_artifacts_path(@project, @build), rel: 'nofollow', download: '', class: 'btn btn-sm btn-default' do
.build-widget.block Download
%h4.title
Trigger
%p - if @build.artifacts_metadata?
%span.build-light-text Token: = link_to browse_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default' do
#{@build.trigger_request.trigger.short_token} Browse
- if @build.trigger_request
.build-widget.block
%h4.title
Trigger
- if @build.trigger_request.variables
%p %p
%button.btn.group.btn-group-justified.reveal-variables Reveal Variables %span.build-light-text Token:
#{@build.trigger_request.trigger.short_token}
- if @build.trigger_request.variables
%p
%button.btn.group.btn-group-justified.reveal-variables Reveal Variables
- @build.trigger_request.variables.each do |key, value| %dl.js-build-variables.trigger-build-variables.hide
.hide.js-build - @build.trigger_request.variables.each do |key, value|
.js-build-variable.trigger-build-variable= key %dt.js-build-variable.trigger-build-variable= key
.js-build-value.trigger-build-value= value %dd.js-build-value.trigger-build-value= value
%div{ class: (@build.pipeline.stages_count > 1 ? "block" : "block-last") } %div{ class: (@build.pipeline.stages_count > 1 ? "block" : "block-last") }
%p %p
Commit Commit
= link_to @build.pipeline.short_sha, project_commit_path(@project, @build.pipeline.sha), class: 'commit-sha link-commit' = link_to @build.pipeline.short_sha, project_commit_path(@project, @build.pipeline.sha), class: 'commit-sha link-commit'
= clipboard_button(text: @build.pipeline.short_sha, title: "Copy commit SHA to clipboard") = clipboard_button(text: @build.pipeline.short_sha, title: "Copy commit SHA to clipboard")
- if @build.merge_request - if @build.merge_request
in in
= link_to "#{@build.merge_request.to_reference}", merge_request_path(@build.merge_request), class: 'link-commit' = link_to "#{@build.merge_request.to_reference}", merge_request_path(@build.merge_request), class: 'link-commit'
%p.build-light-text.append-bottom-0 %p.build-light-text.append-bottom-0
#{@build.pipeline.git_commit_title} #{@build.pipeline.git_commit_title}
- if @build.pipeline.stages_count > 1 - if @build.pipeline.stages_count > 1
.dropdown.build-dropdown .block-last.dropdown.build-dropdown
%div %div
%span{ class: "ci-status-icon-#{@build.pipeline.status}" } %span{ class: "ci-status-icon-#{@build.pipeline.status}" }
= ci_icon_for_status(@build.pipeline.status) = ci_icon_for_status(@build.pipeline.status)
Pipeline Pipeline
= link_to "##{@build.pipeline.id}", project_pipeline_path(@project, @build.pipeline), class: 'link-commit' = link_to "##{@build.pipeline.id}", project_pipeline_path(@project, @build.pipeline), class: 'link-commit'
from from
= link_to "#{@build.pipeline.ref}", project_branch_path(@project, @build.pipeline.ref), class: 'link-commit' = link_to "#{@build.pipeline.ref}", project_branch_path(@project, @build.pipeline.ref), class: 'link-commit'
%button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' } %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.stage-selection More %span.stage-selection More
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu %ul.dropdown-menu
- @build.pipeline.legacy_stages.each do |stage| - @build.pipeline.legacy_stages.each do |stage|
%li %li
%a.stage-item= stage.name %a.stage-item= stage.name
.builds-container .builds-container
- HasStatus::ORDERED_STATUSES.each do |build_status| - HasStatus::ORDERED_STATUSES.each do |build_status|
- builds.select{|build| build.status == build_status}.each do |build| - builds.select{|build| build.status == build_status}.each do |build|
.build-job{ class: sidebar_build_class(build, @build), data: { stage: build.stage } } .build-job{ class: sidebar_build_class(build, @build), data: { stage: build.stage } }
= link_to project_job_path(@project, build) do = link_to project_job_path(@project, build) do
= icon('arrow-right') = icon('arrow-right')
%span{ class: "ci-status-icon-#{build.status}" } %span{ class: "ci-status-icon-#{build.status}" }
= ci_icon_for_status(build.status) = ci_icon_for_status(build.status)
%span %span
- if build.name - if build.name
= build.name = build.name
- else - else
= build.id = build.id
- if build.retried? - if build.retried?
%i.fa.fa-refresh.has-tooltip{ data: { container: 'body', placement: 'bottom' }, title: 'Job was retried' } %i.fa.fa-refresh.has-tooltip{ data: { container: 'body', placement: 'bottom' }, title: 'Job was retried' }
%aside.right-sidebar.right-sidebar-expanded.wiki-sidebar.js-wiki-sidebar.js-right-sidebar{ data: { "offset-top" => "50", "spy" => "affix" } } %aside.right-sidebar.right-sidebar-expanded.wiki-sidebar.js-wiki-sidebar.js-right-sidebar{ data: { "offset-top" => "50", "spy" => "affix" } }
.block.wiki-sidebar-header.append-bottom-default .sidebar-container
%a.gutter-toggle.pull-right.visible-xs-block.visible-sm-block.js-sidebar-wiki-toggle{ href: "#" } .block.wiki-sidebar-header.append-bottom-default
= icon('angle-double-right') %a.gutter-toggle.pull-right.visible-xs-block.visible-sm-block.js-sidebar-wiki-toggle{ href: "#" }
= icon('angle-double-right')
- git_access_url = project_wikis_git_access_path(@project) - git_access_url = project_wikis_git_access_path(@project)
= link_to git_access_url, class: active_nav_link?(path: 'wikis#git_access') ? 'active' : '' do = link_to git_access_url, class: active_nav_link?(path: 'wikis#git_access') ? 'active' : '' do
= succeed '&nbsp;' do = succeed '&nbsp;' do
= icon('cloud-download') = icon('cloud-download')
Clone repository Clone repository
.blocks-container .blocks-container
.block.block-first .block.block-first
%ul.wiki-pages %ul.wiki-pages
= render @sidebar_wiki_entries, context: 'sidebar' = render @sidebar_wiki_entries, context: 'sidebar'
.block .block
= link_to project_wikis_pages_path(@project), class: 'btn btn-block' do = link_to project_wikis_pages_path(@project), class: 'btn btn-block' do
More Pages More Pages
= render 'projects/wikis/new' = render 'projects/wikis/new'
...@@ -130,8 +130,8 @@ feature 'Issue Sidebar' do ...@@ -130,8 +130,8 @@ feature 'Issue Sidebar' do
it 'adds new label' do it 'adds new label' do
page.within('.block.labels') do page.within('.block.labels') do
fill_in 'new_label_name', with: 'wontfix' fill_in 'new_label_name', with: 'wontfix'
page.find(".suggest-colors a", match: :first).click page.find('.suggest-colors a', match: :first).trigger('click')
click_button 'Create' page.find('button', text: 'Create').trigger('click')
page.within('.dropdown-page-one') do page.within('.dropdown-page-one') do
expect(page).to have_content 'wontfix' expect(page).to have_content 'wontfix'
...@@ -142,8 +142,8 @@ feature 'Issue Sidebar' do ...@@ -142,8 +142,8 @@ feature 'Issue Sidebar' do
it 'shows error message if label title is taken' do it 'shows error message if label title is taken' do
page.within('.block.labels') do page.within('.block.labels') do
fill_in 'new_label_name', with: label.title fill_in 'new_label_name', with: label.title
page.find('.suggest-colors a', match: :first).click page.find('.suggest-colors a', match: :first).trigger('click')
click_button 'Create' page.find('button', text: 'Create').trigger('click')
page.within('.dropdown-page-two') do page.within('.dropdown-page-two') do
expect(page).to have_content 'Title has already been taken' expect(page).to have_content 'Title has already been taken'
......
...@@ -5,7 +5,6 @@ import '~/lib/utils/datetime_utility'; ...@@ -5,7 +5,6 @@ import '~/lib/utils/datetime_utility';
import '~/lib/utils/url_utility'; import '~/lib/utils/url_utility';
import '~/build'; import '~/build';
import '~/breakpoints'; import '~/breakpoints';
import 'vendor/jquery.nicescroll';
describe('Build', () => { describe('Build', () => {
const BUILD_URL = `${gl.TEST_HOST}/frontend-fixtures/builds-project/-/jobs/1`; const BUILD_URL = `${gl.TEST_HOST}/frontend-fixtures/builds-project/-/jobs/1`;
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
import '~/gl_dropdown'; import '~/gl_dropdown';
import 'select2'; import 'select2';
import 'vendor/jquery.nicescroll';
import '~/api'; import '~/api';
import '~/create_label'; import '~/create_label';
import '~/issuable_context'; import '~/issuable_context';
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment