aboutsummaryrefslogtreecommitdiff
path: root/js/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/util')
-rw-r--r--js/src/util/index.js13
-rw-r--r--js/src/util/index.spec.js33
2 files changed, 44 insertions, 2 deletions
diff --git a/js/src/util/index.js b/js/src/util/index.js
index 537b391dc..746ee608b 100644
--- a/js/src/util/index.js
+++ b/js/src/util/index.js
@@ -8,7 +8,6 @@
const MAX_UID = 1000000
const MILLISECONDS_MULTIPLIER = 1000
const TRANSITION_END = 'transitionend'
-const { jQuery } = window
// Shoutout AngusCroll (https://goo.gl/pxwQGp)
const toType = obj => ({}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase())
@@ -176,8 +175,18 @@ const noop = () => function () {}
const reflow = element => element.offsetHeight
+const getjQuery = () => {
+ const { jQuery } = window
+
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
+ return jQuery
+ }
+
+ return null
+}
+
export {
- jQuery,
+ getjQuery,
TRANSITION_END,
getUID,
getSelectorFromElement,
diff --git a/js/src/util/index.spec.js b/js/src/util/index.spec.js
index b667c270e..9512c2fe0 100644
--- a/js/src/util/index.spec.js
+++ b/js/src/util/index.spec.js
@@ -346,4 +346,37 @@ describe('Util', () => {
expect(Util.reflow(div)).toEqual(0)
})
})
+
+ describe('getjQuery', () => {
+ const fakejQuery = { trigger() {} }
+
+ beforeEach(() => {
+ Object.defineProperty(window, 'jQuery', {
+ value: fakejQuery,
+ writable: true
+ })
+ })
+
+ afterEach(() => {
+ window.jQuery = undefined
+ })
+
+ it('should return jQuery object when present', () => {
+ expect(Util.getjQuery()).toEqual(fakejQuery)
+ })
+
+ it('should not return jQuery object when present if data-no-jquery', () => {
+ document.body.setAttribute('data-no-jquery', '')
+
+ expect(window.jQuery).toEqual(fakejQuery)
+ expect(Util.getjQuery()).toEqual(null)
+
+ document.body.removeAttribute('data-no-jquery')
+ })
+
+ it('should not return jQuery if not present', () => {
+ window.jQuery = undefined
+ expect(Util.getjQuery()).toEqual(null)
+ })
+ })
})