ratchet_design 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/ratchet/favicon.ico +0 -0
- data/app/assets/javascripts/ratchet/base/form.js +117 -8
- data/app/assets/javascripts/ratchet/base/mobilemenu.js +50 -12
- data/app/assets/javascripts/ratchet/base/validation.js +263 -0
- data/app/assets/javascripts/ratchet/core.js +78 -57
- data/app/assets/javascripts/ratchet/enhancement/_collapse.js +6 -3
- data/app/assets/javascripts/ratchet/enhancement/_lightbox.js +93 -0
- data/app/assets/javascripts/ratchet/enhancement/_swap.js +7 -3
- data/app/assets/javascripts/ratchet/{utility → enhancement}/loader.js +8 -15
- data/app/assets/javascripts/ratchet/enhancement/notice.js +3 -8
- data/app/assets/javascripts/ratchet/enhancement/sticky.js +35 -18
- data/app/assets/javascripts/ratchet/enhancement/waypoints.js +162 -125
- data/app/assets/javascripts/ratchet/shim/classlist.js +234 -0
- data/app/assets/javascripts/ratchet/shim/object.assign.js +30 -0
- data/app/assets/javascripts/ratchet/utility/ajax.js +122 -0
- data/app/assets/javascripts/ratchet/utility/compile_data.js +40 -0
- data/app/assets/javascripts/ratchet/utility/from_top.js +14 -0
- data/app/assets/javascripts/ratchet/utility/full_stop.js +55 -0
- data/app/assets/javascripts/ratchet/utility/get_closest.js +20 -0
- data/app/assets/javascripts/ratchet/utility/get_next.js +17 -0
- data/app/assets/javascripts/ratchet/utility/matches.js +15 -0
- data/app/assets/javascripts/ratchet/utility/scroll_to.js +74 -0
- data/app/assets/javascripts/ratchet/utility/throttle.js +25 -0
- data/app/assets/javascripts/ratchet/utility/timeout.js +45 -0
- data/app/assets/javascripts/ratchet/utility/unhover.js +56 -0
- data/app/assets/javascripts/ratchet/utility/word_count.js +15 -0
- data/app/assets/stylesheets/ratchet/_core.scss +2 -4
- data/app/assets/stylesheets/ratchet/base/_button.scss +1 -1
- data/app/assets/stylesheets/ratchet/base/_form.scss +50 -61
- data/app/assets/stylesheets/ratchet/base/_text.scss +8 -8
- data/app/assets/stylesheets/ratchet/{utility → enhancement}/_loader.scss +1 -1
- data/app/assets/stylesheets/ratchet/enhancement/_tooltip.scss +1 -6
- data/app/assets/stylesheets/ratchet/utility/_global.scss +12 -2
- data/app/helpers/ratchet/application_helper.rb +2 -28
- data/app/views/layouts/ratchet/default.html.slim +4 -5
- data/app/views/shared/ratchet/_footer.html.slim +2 -3
- data/app/views/shared/ratchet/_header.html.slim +1 -1
- data/lib/ratchet_design/version.rb +1 -1
- data/lib/ratchet_design.rb +0 -1
- data/public/assets/ratchet/core-0.1.6.js +105 -0
- data/public/assets/ratchet/core-0.1.6.js.gz +0 -0
- data/public/assets/ratchet/core-0.1.6.map.json +1 -0
- data/public/assets/ratchet/{fonts-woff-0.1.5.css → fonts-woff-0.1.6.css} +0 -0
- data/public/assets/ratchet/{fonts-woff-0.1.5.css.gz → fonts-woff-0.1.6.css.gz} +0 -0
- data/public/assets/ratchet/{fonts-woff2-0.1.5.css → fonts-woff2-0.1.6.css} +0 -0
- data/public/assets/ratchet/{fonts-woff2-0.1.5.css.gz → fonts-woff2-0.1.6.css.gz} +0 -0
- metadata +28 -47
- data/app/assets/images/ratchet/safari-pinned-tab.svg +0 -1
- data/app/assets/javascripts/ratchet/base/sync-input-value.js +0 -30
- data/app/assets/javascripts/ratchet/enhancement/lightbox.js +0 -165
- data/app/assets/javascripts/ratchet/shim/scope.js +0 -94
- data/app/assets/stylesheets/ratchet/base/_multistep-form.scss +0 -64
- data/app/assets/stylesheets/ratchet/enhancement/_lightbox.scss +0 -98
- data/app/helpers/ratchet/form_helper.rb +0 -140
- data/public/assets/ratchet/core-0.1.5.js +0 -133
- data/public/assets/ratchet/core-0.1.5.js.gz +0 -0
- data/public/assets/ratchet/core-0.1.5.map.json +0 -1
@@ -1,76 +1,97 @@
|
|
1
|
+
// Shim modules
|
2
|
+
require( './shim/classlist' );
|
3
|
+
require( './shim/object.assign' );
|
4
|
+
|
1
5
|
// Utility modules
|
2
|
-
var loadFont = require( './utility/load_font' )
|
3
|
-
var
|
6
|
+
var loadFont = require( './utility/load_font' );
|
7
|
+
var fullStop = require( './utility/full_stop' );
|
8
|
+
var unhover = require( './utility/unhover' );
|
9
|
+
var throttle = require( './utility/throttle' );
|
10
|
+
var loadScript = require( './utility/load_script' );
|
11
|
+
var fromTop = require( './utility/from_top' );
|
12
|
+
var scrollTo = require( './utility/scroll_to' );
|
13
|
+
var matches = require( './utility/matches' );
|
14
|
+
var getClosest = require( './utility/get_closest' );
|
15
|
+
var getNext = require( './utility/get_next' );
|
16
|
+
var wordCount = require( './utility/word_count' );
|
17
|
+
var compileData = require( './utility/compile_data' );
|
18
|
+
var timeout = require( './utility/timeout' );
|
19
|
+
var ajax = require( './utility/ajax' );
|
4
20
|
|
5
21
|
// Base modules
|
6
|
-
var mobileMenu = require( './base/mobilemenu' )
|
7
|
-
var form = require( './base/form' )
|
8
|
-
var
|
9
|
-
form.validate = formUp.validate
|
10
|
-
form.next = formUp.next
|
11
|
-
require( './base/sync-input-value' )
|
22
|
+
var mobileMenu = require( './base/mobilemenu' );
|
23
|
+
var form = require( './base/form' );
|
24
|
+
var validation = require( './base/validation' );
|
12
25
|
|
13
26
|
// Enhancement modules
|
14
|
-
var
|
15
|
-
var
|
16
|
-
var
|
17
|
-
var
|
18
|
-
var esvg = require( './_svg' )
|
27
|
+
var loader = require( './enhancement/loader' );
|
28
|
+
var waypoints = require( './enhancement/waypoints' );
|
29
|
+
var notice = require( './enhancement/notice' );
|
30
|
+
var sticky = require( './enhancement/sticky' );
|
31
|
+
var esvg = require( './_svg' );
|
19
32
|
// var swap = require( './enhancement/swap' );
|
20
33
|
|
21
34
|
// Vendor modules
|
22
|
-
var
|
23
|
-
var
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
require( 'codemirror/mode/
|
30
|
-
require( 'codemirror/mode/
|
31
|
-
require( 'codemirror/mode/
|
32
|
-
require( 'codemirror/mode/
|
33
|
-
require( 'codemirror/mode/
|
34
|
-
require( 'codemirror/mode/
|
35
|
-
require( 'codemirror/mode/
|
36
|
-
require( 'codemirror/
|
37
|
-
require( 'codemirror/
|
38
|
-
require( 'codemirror/mode/python/python' )
|
39
|
-
require( 'codemirror/mode/yaml/yaml' )
|
40
|
-
require( 'codemirror/mode/clike/clike' )
|
41
|
-
require( 'codemirror/addon/runmode/runmode' )
|
42
|
-
require( 'codemirror/addon/edit/matchbrackets' )
|
43
|
-
|
44
|
-
// Initialize component features
|
45
|
-
rangeTouch.set("thumbWidth", 20); // Annoying hack to make input ranges work smoothly on touch devices
|
46
|
-
|
47
|
-
event.scroll.disablePointer() // disable pointer events on scroll for performance (to avoid extra repaints)
|
48
|
-
event.resize.disableAnimation() // disable animation on resize for performance (to avoid extra repaints)
|
49
|
-
|
50
|
-
// Trigger these events each time the page loads
|
51
|
-
event.change( function() {
|
52
|
-
|
53
|
-
// Form module
|
54
|
-
form()
|
55
|
-
|
56
|
-
// Syntax highlighting
|
57
|
-
highlighter.highlight()
|
58
|
-
});
|
35
|
+
var event = require( 'compose-event' );
|
36
|
+
var highlighter = require( 'compose-code-highlighter' );
|
37
|
+
require( 'codemirror/mode/htmlmixed/htmlmixed' );
|
38
|
+
require( 'codemirror/mode/slim/slim' );
|
39
|
+
require( 'codemirror/mode/javascript/javascript' );
|
40
|
+
require( 'codemirror/mode/css/css' );
|
41
|
+
require( 'codemirror/mode/sql/sql' );
|
42
|
+
require( 'codemirror/mode/php/php' );
|
43
|
+
require( 'codemirror/mode/ruby/ruby' );
|
44
|
+
require( 'codemirror/mode/shell/shell' );
|
45
|
+
require( 'codemirror/mode/go/go' );
|
46
|
+
require( 'codemirror/mode/python/python' );
|
47
|
+
require( 'codemirror/mode/yaml/yaml' );
|
48
|
+
require( 'codemirror/mode/clike/clike' );
|
49
|
+
require( 'codemirror/addon/runmode/runmode' );
|
50
|
+
require( 'codemirror/addon/edit/matchbrackets' );
|
59
51
|
|
60
52
|
// Public API object
|
61
|
-
|
53
|
+
window.ratchet = module.exports = {
|
62
54
|
loadFont : loadFont,
|
55
|
+
fullStop : fullStop,
|
56
|
+
unhover : unhover,
|
57
|
+
throttle : throttle,
|
63
58
|
loadScript : loadScript,
|
59
|
+
fromTop : fromTop,
|
60
|
+
scrollTo : scrollTo,
|
61
|
+
matches : matches,
|
62
|
+
getClosest : getClosest,
|
63
|
+
getNext : getNext,
|
64
|
+
wordCount : wordCount,
|
65
|
+
compileData : compileData,
|
66
|
+
timeout : timeout,
|
64
67
|
ajax : ajax,
|
65
|
-
loader : loader,
|
66
68
|
mobileMenu : mobileMenu,
|
67
69
|
form : form,
|
68
|
-
validation :
|
70
|
+
validation : validation,
|
71
|
+
loader : loader,
|
69
72
|
waypoints : waypoints,
|
70
73
|
notice : notice,
|
71
74
|
sticky : sticky,
|
72
|
-
|
73
|
-
|
74
|
-
}
|
75
|
+
esvg : esvg,
|
76
|
+
event : event
|
77
|
+
}
|
78
|
+
|
79
|
+
// Default events instantiation
|
80
|
+
event.change( function() {
|
81
|
+
|
82
|
+
// Unhover module
|
83
|
+
unhover();
|
84
|
+
|
85
|
+
// FullStop module
|
86
|
+
fullStop();
|
87
|
+
|
88
|
+
// Form module
|
89
|
+
form();
|
90
|
+
|
91
|
+
// Validation module
|
92
|
+
validation();
|
93
|
+
|
94
|
+
// Syntax highlighting
|
95
|
+
highlighter.highlight();
|
75
96
|
|
76
|
-
|
97
|
+
}, false );
|
@@ -5,6 +5,9 @@
|
|
5
5
|
* @license MIT
|
6
6
|
**/
|
7
7
|
|
8
|
+
// Dependencies
|
9
|
+
var getClosest = require('../utility/get_closest')
|
10
|
+
|
8
11
|
;( function( root, factory ) {
|
9
12
|
if ( typeof define === 'function' && define.amd ) {
|
10
13
|
define( factory );
|
@@ -26,7 +29,7 @@
|
|
26
29
|
defaults = {
|
27
30
|
expandText : 'Show more ∨',
|
28
31
|
collapseText : 'Show less ∧',
|
29
|
-
triggerText : '
|
32
|
+
triggerText : ' '
|
30
33
|
};
|
31
34
|
|
32
35
|
// Only run if selector exists
|
@@ -74,7 +77,7 @@
|
|
74
77
|
event.preventDefault();
|
75
78
|
|
76
79
|
// Scoped variables
|
77
|
-
var expandable =
|
80
|
+
var expandable = getClosest( event.target, element ),
|
78
81
|
stateObject = state[ expandable.dataset.idx ];
|
79
82
|
|
80
83
|
// Toggle between excerpt and full text
|
@@ -90,4 +93,4 @@
|
|
90
93
|
// Public API
|
91
94
|
return exports;
|
92
95
|
|
93
|
-
});
|
96
|
+
});
|
@@ -0,0 +1,93 @@
|
|
1
|
+
Event = require('compose-event')
|
2
|
+
/**
|
3
|
+
* Lightbox.js 0.0.2
|
4
|
+
* A lightbox plugin that makes sense
|
5
|
+
* @author Kyle Foster (@hkfoster)
|
6
|
+
* @license MIT
|
7
|
+
**/
|
8
|
+
|
9
|
+
// Transport
|
10
|
+
( function( root, factory ) {
|
11
|
+
if ( typeof define === 'function' && define.amd ) {
|
12
|
+
define( factory );
|
13
|
+
} else if ( typeof exports === 'object' ) {
|
14
|
+
module.exports = factory;
|
15
|
+
} else {
|
16
|
+
root.lightbox = factory( root );
|
17
|
+
}
|
18
|
+
})( this, function( root ) {
|
19
|
+
|
20
|
+
'use strict';
|
21
|
+
|
22
|
+
// Define global variable(s)
|
23
|
+
var lightboxTrigger = document.querySelectorAll( '[rel="lightbox"]' );
|
24
|
+
|
25
|
+
// Only run if lightbox trigger is present
|
26
|
+
if ( lightboxTrigger ) {
|
27
|
+
init();
|
28
|
+
}
|
29
|
+
|
30
|
+
// Where the magic happens
|
31
|
+
function init() {
|
32
|
+
|
33
|
+
// Preload lightbox images
|
34
|
+
for ( var imgIndex = 0; imgIndex < lightboxTrigger.length; imgIndex ++ ) {
|
35
|
+
|
36
|
+
// Create a temporary image element
|
37
|
+
var tempImg = new Image();
|
38
|
+
|
39
|
+
// And use it to load up image(s)
|
40
|
+
tempImg.src = lightboxTrigger[ imgIndex ].href;
|
41
|
+
|
42
|
+
}
|
43
|
+
|
44
|
+
// Attach our click listener
|
45
|
+
Event.on(document, 'click', '[rel="lightbox"]', openLightbox)
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
// Open lightbox function
|
50
|
+
function openLightbox( event ) {
|
51
|
+
|
52
|
+
// Prevent default behavior/bubbling
|
53
|
+
event.stopPropagation();
|
54
|
+
event.preventDefault();
|
55
|
+
|
56
|
+
// Define scoped variable(s)
|
57
|
+
var lightboxUrl = event.target.href,
|
58
|
+
lightboxCont = '<aside class="lightbox-overlay"><figure class="lightbox-content"><img src="' + lightboxUrl + '" alt=""><a class="close-btn" href="#?"></a></figure></aside>';
|
59
|
+
|
60
|
+
// Open the lightbox
|
61
|
+
document.body.insertAdjacentHTML('beforeend' lightboxCont );
|
62
|
+
|
63
|
+
// Prevent scrolling while lightbox is shown
|
64
|
+
document.body.style.overflow = 'hidden';
|
65
|
+
|
66
|
+
Event.one('.close-btn', 'click', closeLightbox)
|
67
|
+
|
68
|
+
}
|
69
|
+
|
70
|
+
// Close lightbox function
|
71
|
+
function closeLightbox( event ) {
|
72
|
+
|
73
|
+
// Prevent default behavior/bubbling
|
74
|
+
event.stopPropagation();
|
75
|
+
event.preventDefault();
|
76
|
+
|
77
|
+
// Define scoped variable(s)
|
78
|
+
var lightboxOverlay = document.querySelector( '.lightbox-overlay' ),
|
79
|
+
lightboxContent = lightboxOverlay.querySelector( '.lightbox-content' ),
|
80
|
+
|
81
|
+
// Kick off closing animation
|
82
|
+
lightboxContent.className += ' closing';
|
83
|
+
|
84
|
+
Event.one(lightboxContent, 'animationend', function() {
|
85
|
+
// Remove the lightbox from the DOM
|
86
|
+
document.body.removeChild( lightboxOverlay );
|
87
|
+
|
88
|
+
// And turn scrolling back on
|
89
|
+
document.body.style.overflow = '';
|
90
|
+
})
|
91
|
+
}
|
92
|
+
|
93
|
+
});
|
@@ -1,9 +1,13 @@
|
|
1
1
|
/**
|
2
|
-
* Swap
|
2
|
+
* Swap 0.0.2
|
3
|
+
* Compose swappable element module
|
3
4
|
* @author Kyle Foster (@hkfoster)
|
4
5
|
* @license MIT
|
5
6
|
**/
|
6
7
|
|
8
|
+
// Dependencies
|
9
|
+
var ScrollTo = require('../utility/scroll_to')
|
10
|
+
|
7
11
|
// Transport
|
8
12
|
;( function( root, factory ) {
|
9
13
|
if ( typeof define === 'function' && define.amd ) {
|
@@ -67,7 +71,7 @@
|
|
67
71
|
} else {
|
68
72
|
|
69
73
|
// Stop default anchor tag jump
|
70
|
-
|
74
|
+
ScrollTo(0, 0);
|
71
75
|
|
72
76
|
// Assign appropriate element(s) variables
|
73
77
|
var loadedTarget = document.querySelector( '#' + getHash() ),
|
@@ -113,4 +117,4 @@
|
|
113
117
|
|
114
118
|
}
|
115
119
|
|
116
|
-
});
|
120
|
+
});
|
@@ -5,8 +5,6 @@
|
|
5
5
|
* @license MIT
|
6
6
|
**/
|
7
7
|
|
8
|
-
var toolbox = require( 'compose-toolbox' )
|
9
|
-
|
10
8
|
// Public API function
|
11
9
|
var loader = function( settings ) {
|
12
10
|
|
@@ -23,40 +21,35 @@ var loader = function( settings ) {
|
|
23
21
|
};
|
24
22
|
|
25
23
|
// Extend defaults
|
26
|
-
var options =
|
27
|
-
|
28
|
-
// If it doesn’t already exist
|
29
|
-
if ( !document.querySelector( 'div.' + options.loaderClass ) ) {
|
30
|
-
|
31
|
-
// Create and prepend loader element
|
32
|
-
options.selector.insertAdjacentHTML( 'afterbegin', '<div class="' + options.loaderClass + '"></div>' );
|
24
|
+
var options = Object.assign( {}, defaults, settings );
|
33
25
|
|
34
|
-
|
26
|
+
// Create and prepend loader element
|
27
|
+
options.selector.insertAdjacentHTML( 'afterbegin', '<div class="' + options.loaderClass + '"></div>' );
|
35
28
|
|
36
29
|
// Cache loader element
|
37
30
|
var element = document.querySelector( 'div.' + options.loaderClass );
|
38
31
|
|
39
32
|
// Show loader icon function
|
40
|
-
var show = function( state
|
33
|
+
var show = function( state ) {
|
41
34
|
|
42
35
|
// Loader pending state
|
43
36
|
if ( state === 'pending' ) {
|
44
37
|
|
45
|
-
element.textContent =
|
38
|
+
element.textContent = options.loadingMessage;
|
46
39
|
element.classList.remove( options.successClass, options.failureClass );
|
47
40
|
element.classList.add( options.loadingClass );
|
48
41
|
|
49
42
|
// Loader failure state
|
50
43
|
} else if ( state === 'failure' ) {
|
51
44
|
|
52
|
-
element.textContent =
|
45
|
+
element.textContent = options.failureMessage;
|
53
46
|
element.classList.remove( options.loadingClass );
|
54
47
|
element.classList.add( options.failureClass );
|
55
48
|
|
56
49
|
// Loader success state
|
57
50
|
} else if ( state === 'success' ) {
|
58
51
|
|
59
|
-
element.textContent =
|
52
|
+
element.textContent = options.successMessage;
|
60
53
|
element.classList.remove( options.loadingClass );
|
61
54
|
element.classList.add( options.successClass );
|
62
55
|
|
@@ -81,4 +74,4 @@ var loader = function( settings ) {
|
|
81
74
|
};
|
82
75
|
|
83
76
|
// Public API
|
84
|
-
module.exports = loader;
|
77
|
+
module.exports = loader;
|
@@ -5,8 +5,6 @@
|
|
5
5
|
* @license MIT
|
6
6
|
**/
|
7
7
|
|
8
|
-
var toolbox = require( 'compose-toolbox' )
|
9
|
-
|
10
8
|
// Public API function
|
11
9
|
var notice = function( element, settings ) {
|
12
10
|
|
@@ -18,10 +16,9 @@ var notice = function( element, settings ) {
|
|
18
16
|
};
|
19
17
|
|
20
18
|
// Scoped variables
|
21
|
-
var options =
|
19
|
+
var options = Object.assign( {}, defaults, settings ),
|
22
20
|
selector = document.querySelector( element ),
|
23
|
-
cookieName = 'dismiss-' + options.noticeName
|
24
|
-
button = selector.querySelector( '.' + options.noticeClass + ' .close-btn' );
|
21
|
+
cookieName = 'dismiss-' + options.noticeName;
|
25
22
|
|
26
23
|
// Only run if selector exists & no dismiss cookie is found
|
27
24
|
if ( !selector || getCookie( cookieName ) ) return false;
|
@@ -34,7 +31,7 @@ var notice = function( element, settings ) {
|
|
34
31
|
document.querySelector( 'main' ).insertAdjacentHTML( 'afterbegin', html );
|
35
32
|
|
36
33
|
// Listen for close button click
|
37
|
-
|
34
|
+
selector.querySelector( '.' + options.noticeClass + ' > .close-btn' ).addEventListener( 'click', dismissNotice, false );
|
38
35
|
|
39
36
|
// Dismiss notice on close
|
40
37
|
function dismissNotice( event ) {
|
@@ -50,8 +47,6 @@ var notice = function( element, settings ) {
|
|
50
47
|
|
51
48
|
// Set cookie to prevent it from returning
|
52
49
|
document.cookie = cookieName + '=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/';
|
53
|
-
|
54
|
-
toolbox.event.off( button )
|
55
50
|
|
56
51
|
}
|
57
52
|
|
@@ -6,8 +6,8 @@
|
|
6
6
|
**/
|
7
7
|
|
8
8
|
// Dependencies
|
9
|
-
var
|
10
|
-
fromTop =
|
9
|
+
var throttle = require( '../utility/throttle' ),
|
10
|
+
fromTop = require( '../utility/from_top' );
|
11
11
|
|
12
12
|
// Public API function
|
13
13
|
var sticky = function( element, settings ) {
|
@@ -21,7 +21,7 @@ var sticky = function( element, settings ) {
|
|
21
21
|
};
|
22
22
|
|
23
23
|
// Scoped variables
|
24
|
-
var options =
|
24
|
+
var options = Object.assign( {}, defaults, settings ),
|
25
25
|
selector = document.querySelector( element );
|
26
26
|
|
27
27
|
// If selector is not present
|
@@ -40,11 +40,15 @@ var sticky = function( element, settings ) {
|
|
40
40
|
elemHeight = selector.offsetHeight,
|
41
41
|
anchorInit = options.anchorPoint,
|
42
42
|
docBody = document.body,
|
43
|
-
resizeHandler = toolbox.event.resize( resized ),
|
44
|
-
scrollHandler = toolbox.event.scroll( scrolled ),
|
45
43
|
docHeight,
|
46
44
|
winHeight;
|
47
45
|
|
46
|
+
// Resize throttle function init
|
47
|
+
throttle( 'resize', 'optimizedResize' );
|
48
|
+
|
49
|
+
// Scroll throttle function init
|
50
|
+
throttle( 'scroll', 'optimizedScroll' );
|
51
|
+
|
48
52
|
// Call listener function explicitly at run time
|
49
53
|
queryHandler( widthQuery );
|
50
54
|
|
@@ -56,25 +60,38 @@ var sticky = function( element, settings ) {
|
|
56
60
|
// Media query handler function
|
57
61
|
function queryHandler( condition ) {
|
58
62
|
|
59
|
-
//
|
60
|
-
|
63
|
+
// If media query matches
|
64
|
+
if ( condition.matches ) {
|
65
|
+
|
66
|
+
// Call resize listener function explicitly at run time
|
67
|
+
resizeHandler();
|
61
68
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
// Reset styles
|
66
|
-
if ( !condition.matches ) docBody.classList.remove( 'sticky' )
|
69
|
+
// Resize function listener
|
70
|
+
window.addEventListener( 'optimizedResize', resizeHandler, false );
|
67
71
|
|
68
|
-
|
69
|
-
|
72
|
+
// Call scroll listener function explicitly at run time
|
73
|
+
scrollHandler();
|
74
|
+
|
75
|
+
// Scroll function listener
|
76
|
+
window.addEventListener( 'optimizedScroll', scrollHandler, false );
|
77
|
+
|
78
|
+
} else {
|
70
79
|
|
71
|
-
|
72
|
-
|
80
|
+
// Reset styles
|
81
|
+
docBody.classList.remove( 'sticky' );
|
82
|
+
|
83
|
+
// Remove resize listener
|
84
|
+
window.removeEventListener( 'optimizedResize', resizeHandler, false );
|
85
|
+
|
86
|
+
// Remove scroll listener
|
87
|
+
window.removeEventListener( 'optimizedScroll', scrollHandler, false );
|
88
|
+
|
89
|
+
}
|
73
90
|
|
74
91
|
}
|
75
92
|
|
76
93
|
// Resize handler function
|
77
|
-
function
|
94
|
+
function resizeHandler() {
|
78
95
|
|
79
96
|
// Update document height variable
|
80
97
|
docHeight = document.body.scrollHeight;
|
@@ -85,7 +102,7 @@ var sticky = function( element, settings ) {
|
|
85
102
|
}
|
86
103
|
|
87
104
|
// Scroll handler function
|
88
|
-
function
|
105
|
+
function scrollHandler() {
|
89
106
|
|
90
107
|
// Scoped variables
|
91
108
|
var newScrollY = window.pageYOffset,
|