summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2018-06-07 15:00:55 +0000
committerFilipa Lacerda <filipa@gitlab.com>2018-06-07 15:00:55 +0000
commitb8dbbfd2c664d95bf459609eb6c006a0f8cfb118 (patch)
tree8ceff434f0662b627c61810f441fbc863f3e37b9
parent75ee50f85f3e93bbd2583d00656029513beef90a (diff)
downloadgitlab-ce-revert-dd6aade3.tar.gz
Revert "Merge branch '46833-sticky-polyfill' into 'master'"revert-dd6aade3
This reverts merge request !19324
-rw-r--r--app/assets/javascripts/init_changes_dropdown.js2
-rw-r--r--app/assets/javascripts/job.js11
-rw-r--r--app/assets/javascripts/lib/utils/sticky.js23
3 files changed, 11 insertions, 25 deletions
diff --git a/app/assets/javascripts/init_changes_dropdown.js b/app/assets/javascripts/init_changes_dropdown.js
index 5c5a6e01848..09cca1dc7d9 100644
--- a/app/assets/javascripts/init_changes_dropdown.js
+++ b/app/assets/javascripts/init_changes_dropdown.js
@@ -1,5 +1,5 @@
import $ from 'jquery';
-import { stickyMonitor } from './lib/utils/sticky';
+import stickyMonitor from './lib/utils/sticky';
export default (stickyTop) => {
stickyMonitor(document.querySelector('.js-diff-files-changed'), stickyTop);
diff --git a/app/assets/javascripts/job.js b/app/assets/javascripts/job.js
index fc13f467675..e76bae08699 100644
--- a/app/assets/javascripts/job.js
+++ b/app/assets/javascripts/job.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
import _ from 'underscore';
-import { polyfillSticky } from './lib/utils/sticky';
+import StickyFill from 'stickyfilljs';
import axios from './lib/utils/axios_utils';
import { visitUrl } from './lib/utils/url_utility';
import bp from './breakpoints';
@@ -70,7 +70,14 @@ export default class Job extends LogOutputBehaviours {
}
initAffixTopArea() {
- polyfillSticky(this.$topBar);
+ /**
+ If the browser does not support position sticky, it returns the position as static.
+ If the browser does support sticky, then we allow the browser to handle it, if not
+ then we use a polyfill
+ */
+ if (this.$topBar.css('position') !== 'static') return;
+
+ StickyFill.add(this.$topBar);
}
scrollToBottom() {
diff --git a/app/assets/javascripts/lib/utils/sticky.js b/app/assets/javascripts/lib/utils/sticky.js
index 15a4dd62012..098afcfa1b4 100644
--- a/app/assets/javascripts/lib/utils/sticky.js
+++ b/app/assets/javascripts/lib/utils/sticky.js
@@ -1,5 +1,3 @@
-import StickyFill from 'stickyfilljs';
-
export const createPlaceholder = () => {
const placeholder = document.createElement('div');
placeholder.classList.add('sticky-placeholder');
@@ -30,16 +28,7 @@ export const isSticky = (el, scrollY, stickyTop, insertPlaceholder) => {
}
};
-/**
- * Create a listener that will toggle a 'is-stuck' class, based on the current scroll position.
- *
- * - If the current environment does not support `position: sticky`, do nothing.
- *
- * @param {HTMLElement} el The `position: sticky` element.
- * @param {Number} stickyTop Used to determine when an element is stuck.
- * @param {Boolean} insertPlaceholder Should a placeholder element be created when element is stuck?
- */
-export const stickyMonitor = (el, stickyTop, insertPlaceholder = true) => {
+export default (el, stickyTop, insertPlaceholder = true) => {
if (!el) return;
if (typeof CSS === 'undefined' || !(CSS.supports('(position: -webkit-sticky) or (position: sticky)'))) return;
@@ -48,13 +37,3 @@ export const stickyMonitor = (el, stickyTop, insertPlaceholder = true) => {
passive: true,
});
};
-
-/**
- * Polyfill the `position: sticky` behavior.
- *
- * - If the current environment supports `position: sticky`, do nothing.
- * - Can receive an iterable element list (NodeList, jQuery collection, etc.) or single HTMLElement.
- */
-export const polyfillSticky = (el) => {
- StickyFill.add(el);
-};