ratchet_design 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/ratchet/favicon.ico +0 -0
  3. data/app/assets/images/ratchet/safari-pinned-tab.svg +1 -0
  4. data/app/assets/javascripts/ratchet/base/form.js +9 -118
  5. data/app/assets/javascripts/ratchet/base/mobilemenu.js +12 -50
  6. data/app/assets/javascripts/ratchet/base/sync-input-value.js +30 -0
  7. data/app/assets/javascripts/ratchet/core.js +58 -77
  8. data/app/assets/javascripts/ratchet/enhancement/_collapse.js +3 -6
  9. data/app/assets/javascripts/ratchet/enhancement/_swap.js +3 -7
  10. data/app/assets/javascripts/ratchet/enhancement/lightbox.js +165 -0
  11. data/app/assets/javascripts/ratchet/enhancement/notice.js +8 -3
  12. data/app/assets/javascripts/ratchet/enhancement/sticky.js +18 -35
  13. data/app/assets/javascripts/ratchet/enhancement/waypoints.js +125 -162
  14. data/app/assets/javascripts/ratchet/shim/scope.js +94 -0
  15. data/app/assets/javascripts/ratchet/{enhancement → utility}/loader.js +15 -8
  16. data/app/assets/stylesheets/ratchet/_core.scss +4 -1
  17. data/app/assets/stylesheets/ratchet/base/_button.scss +3 -3
  18. data/app/assets/stylesheets/ratchet/base/_form.scss +63 -47
  19. data/app/assets/stylesheets/ratchet/base/_multistep-form.scss +64 -0
  20. data/app/assets/stylesheets/ratchet/base/_text.scss +15 -15
  21. data/app/assets/stylesheets/ratchet/enhancement/_lightbox.scss +98 -0
  22. data/app/assets/stylesheets/ratchet/enhancement/_tooltip.scss +142 -0
  23. data/app/assets/stylesheets/ratchet/fonts-woff.css +4 -4
  24. data/app/assets/stylesheets/ratchet/fonts-woff2.css +4 -4
  25. data/app/assets/stylesheets/ratchet/utility/_global.scss +3 -13
  26. data/app/assets/stylesheets/ratchet/{enhancement → utility}/_loader.scss +1 -1
  27. data/app/helpers/ratchet/application_helper.rb +6 -12
  28. data/app/helpers/ratchet/form_helper.rb +140 -0
  29. data/app/views/layouts/ratchet/default.html.slim +3 -2
  30. data/app/views/shared/ratchet/_footer.html.slim +1 -1
  31. data/app/views/shared/ratchet/_header.html.slim +1 -1
  32. data/lib/ratchet_design/version.rb +1 -1
  33. data/lib/ratchet_design.rb +24 -4
  34. data/public/assets/ratchet/core-0.1.2.js +133 -0
  35. data/public/assets/ratchet/core-0.1.2.js.gz +0 -0
  36. data/public/assets/ratchet/core-0.1.2.map.json +1 -0
  37. data/public/assets/ratchet/core-0.1.20.js +20472 -0
  38. data/public/assets/ratchet/{fonts-woff-0.1.1.css → fonts-woff-0.1.2.css} +4 -4
  39. data/public/assets/ratchet/{fonts-woff-0.1.1.css.gz → fonts-woff-0.1.2.css.gz} +0 -0
  40. data/public/assets/ratchet/{fonts-woff2-0.1.1.css → fonts-woff2-0.1.2.css} +4 -4
  41. data/public/assets/ratchet/{fonts-woff2-0.1.1.css.gz → fonts-woff2-0.1.2.css.gz} +0 -0
  42. metadata +48 -27
  43. data/app/assets/javascripts/ratchet/base/validation.js +0 -263
  44. data/app/assets/javascripts/ratchet/enhancement/_lightbox.js +0 -93
  45. data/app/assets/javascripts/ratchet/shim/classlist.js +0 -234
  46. data/app/assets/javascripts/ratchet/shim/object.assign.js +0 -30
  47. data/app/assets/javascripts/ratchet/utility/compile_data.js +0 -32
  48. data/app/assets/javascripts/ratchet/utility/from_top.js +0 -14
  49. data/app/assets/javascripts/ratchet/utility/full_stop.js +0 -55
  50. data/app/assets/javascripts/ratchet/utility/get_closest.js +0 -20
  51. data/app/assets/javascripts/ratchet/utility/get_next.js +0 -17
  52. data/app/assets/javascripts/ratchet/utility/matches.js +0 -15
  53. data/app/assets/javascripts/ratchet/utility/scroll_to.js +0 -74
  54. data/app/assets/javascripts/ratchet/utility/throttle.js +0 -25
  55. data/app/assets/javascripts/ratchet/utility/timeout.js +0 -45
  56. data/app/assets/javascripts/ratchet/utility/unhover.js +0 -56
  57. data/app/assets/javascripts/ratchet/utility/word_count.js +0 -15
  58. data/app/assets/stylesheets/ratchet/enhancement/_signup.scss +0 -206
  59. data/public/assets/ratchet/core-0.1.1.js +0 -103
  60. data/public/assets/ratchet/core-0.1.1.js.gz +0 -0
  61. data/public/assets/ratchet/core-0.1.1.map.json +0 -1
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Lightbox 0.0.1
3
+ * A simple lightbox module
4
+ * @author Kyle Foster (@hkfoster)
5
+ * @license MIT
6
+ **/
7
+
8
+ // Dependencies
9
+ var toolbox = require( 'compose-toolbox' ),
10
+ Event = toolbox.event,
11
+ delay = toolbox.delay,
12
+ loader = require( '../utility/loader' );
13
+
14
+ // Public API function
15
+ var lightbox = function( element, settings ) {
16
+
17
+ // Apply default element selector
18
+ element = element || 'a[href$=jpg] ,a[href$=png], a[href$=gif], a[href$=svg]';
19
+
20
+ // Overridable defaults
21
+ var defaults = {
22
+ initWidth : '700px'
23
+ },
24
+
25
+ // Main variables
26
+ options = toolbox.merge( defaults, settings ),
27
+ selector = document.querySelector( element ),
28
+ widthQuery = window.matchMedia( '(max-width: ' + options.initWidth + ')' ),
29
+ spinner = loader({ loadingMessage: 'Loading image', failureMessage : 'No image found' }),
30
+ docBody = document.body,
31
+ tempImg;
32
+
33
+ // Only run when selectors exist
34
+ if ( !selector ) return false;
35
+
36
+ // Attach open lightbox click listener
37
+ Event.on( document, 'click', 'a[href$=jpg], a[href$=png], a[href$=gif], a[href$=svg]', clickHandler );
38
+
39
+ // Attach close lightbox click listener
40
+ Event.on( document, 'click', '.lightbox', hideLightbox );
41
+
42
+ // Initialize lightbox function
43
+ function init() {
44
+
45
+ // Insert lightbox container into body
46
+ docBody.insertAdjacentHTML( 'afterbegin', '<aside class="lightbox"><figure><img src="" alt=""><button></button></figure></aside>' );
47
+
48
+ // Cache temporary placeholder image
49
+ tempImg = document.querySelector( '.lightbox img' );
50
+
51
+ }
52
+
53
+ // Hide lightbox function
54
+ function hideLightbox( event ) {
55
+
56
+ // Don’t apply when image is clicked
57
+ if ( event && event.target.tagName === 'IMG' ) return false;
58
+
59
+ // Hide the spinner
60
+ spinner.hide();
61
+
62
+ // Remove active lightbox class from body
63
+ docBody.classList.remove( 'lightbox-active' );
64
+
65
+ // Remove loaded class from lightbox image
66
+ tempImg.classList.remove( 'loaded' );
67
+
68
+ // Reset lightbox image source
69
+ tempImg.src = '';
70
+
71
+ }
72
+
73
+ // Image load pending function
74
+ function loadPending( target ) {
75
+
76
+ // Show loading icon
77
+ spinner.show( 'pending' );
78
+
79
+ // Set temp image source appropriately
80
+ tempImg.src = target.parentNode.href;
81
+
82
+ // Add `lightbox-active` class to body
83
+ docBody.classList.add( 'lightbox-active' );
84
+
85
+ }
86
+
87
+ // Image load success function
88
+ function loadSuccess() {
89
+
90
+ // Hide the spinner
91
+ spinner.hide();
92
+
93
+ // Bada bing, bada boom
94
+ tempImg.classList.add( 'loaded' );
95
+
96
+ }
97
+
98
+ // Image load failure function
99
+ function loadFailure( event ) {
100
+
101
+ // Wait a second…
102
+ delay( function() {
103
+
104
+ // Show spinner failure state
105
+ spinner.show( 'failure' );
106
+
107
+ }, 1000 );
108
+
109
+ // Wait a couple more seconds…
110
+ delay( function() {
111
+
112
+ // Hide the lightbox
113
+ hideLightbox();
114
+
115
+ }, 2500 );
116
+
117
+ // Remove image load event listener
118
+ Event.off( tempImg, 'load', loadSuccess );
119
+
120
+ // Remove image error event listener
121
+ Event.off( tempImg, 'error', loadFailure );
122
+
123
+ }
124
+
125
+ // Click handler function
126
+ function clickHandler( event ) {
127
+
128
+ // Prevent default behavior
129
+ event.preventDefault();
130
+
131
+ // If viewport is smaller than <initWidth>, abort
132
+ if ( widthQuery.matches ) return false;
133
+
134
+ // If lightbox hasn’t already been instantiated, :doit:
135
+ if ( !document.querySelector( '.lightbox' ) ) init();
136
+
137
+ // Allow escape to close lightbox
138
+ Event.keyOne( 'esc', hideLightbox );
139
+
140
+ // Load lightbox image
141
+ loadPending( event.target );
142
+
143
+ // If it has loaded successfully
144
+ if ( tempImg.complete ) {
145
+
146
+ // Kick off image load success function
147
+ loadSuccess();
148
+
149
+ // Otherwise
150
+ } else {
151
+
152
+ // Listen for image load event
153
+ Event.on( tempImg, 'load', loadSuccess );
154
+
155
+ // Listen for image error event
156
+ Event.on( tempImg, 'error', loadFailure );
157
+
158
+ }
159
+
160
+ }
161
+
162
+ };
163
+
164
+ // Public API
165
+ module.exports = lightbox;
@@ -5,6 +5,8 @@
5
5
  * @license MIT
6
6
  **/
7
7
 
8
+ var toolbox = require( 'compose-toolbox' )
9
+
8
10
  // Public API function
9
11
  var notice = function( element, settings ) {
10
12
 
@@ -16,9 +18,10 @@ var notice = function( element, settings ) {
16
18
  };
17
19
 
18
20
  // Scoped variables
19
- var options = Object.assign( {}, defaults, settings ),
21
+ var options = toolbox.merge( defaults, settings ),
20
22
  selector = document.querySelector( element ),
21
- cookieName = 'dismiss-' + options.noticeName;
23
+ cookieName = 'dismiss-' + options.noticeName,
24
+ button = selector.querySelector( '.' + options.noticeClass + ' .close-btn' );
22
25
 
23
26
  // Only run if selector exists & no dismiss cookie is found
24
27
  if ( !selector || getCookie( cookieName ) ) return false;
@@ -31,7 +34,7 @@ var notice = function( element, settings ) {
31
34
  document.querySelector( 'main' ).insertAdjacentHTML( 'afterbegin', html );
32
35
 
33
36
  // Listen for close button click
34
- selector.querySelector( '.' + options.noticeClass + ' > .close-btn' ).addEventListener( 'click', dismissNotice, false );
37
+ toolbox.event.on( button , 'click', dismissNotice )
35
38
 
36
39
  // Dismiss notice on close
37
40
  function dismissNotice( event ) {
@@ -47,6 +50,8 @@ var notice = function( element, settings ) {
47
50
 
48
51
  // Set cookie to prevent it from returning
49
52
  document.cookie = cookieName + '=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/';
53
+
54
+ toolbox.event.off( button )
50
55
 
51
56
  }
52
57
 
@@ -6,8 +6,8 @@
6
6
  **/
7
7
 
8
8
  // Dependencies
9
- var throttle = require( '../utility/throttle' ),
10
- fromTop = require( '../utility/from_top' );
9
+ var toolbox = require( 'compose-toolbox' ),
10
+ fromTop = toolbox.fromTop
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 = Object.assign( {}, defaults, settings ),
24
+ var options = toolbox.merge( defaults, settings ),
25
25
  selector = document.querySelector( element );
26
26
 
27
27
  // If selector is not present
@@ -40,15 +40,11 @@ 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 ),
43
45
  docHeight,
44
46
  winHeight;
45
47
 
46
- // Resize throttle function init
47
- throttle( 'resize', 'optimizedResize' );
48
-
49
- // Scroll throttle function init
50
- throttle( 'scroll', 'optimizedScroll' );
51
-
52
48
  // Call listener function explicitly at run time
53
49
  queryHandler( widthQuery );
54
50
 
@@ -60,38 +56,25 @@ var sticky = function( element, settings ) {
60
56
  // Media query handler function
61
57
  function queryHandler( condition ) {
62
58
 
63
- // If media query matches
64
- if ( condition.matches ) {
65
-
66
- // Call resize listener function explicitly at run time
67
- resizeHandler();
59
+ // Call resize listener function explicitly at run time
60
+ resized()
68
61
 
69
- // Resize function listener
70
- window.addEventListener( 'optimizedResize', resizeHandler, false );
62
+ // Call scroll listener function explicitly at run time
63
+ scrolled();
64
+
65
+ // Reset styles
66
+ if ( !condition.matches ) docBody.classList.remove( 'sticky' )
71
67
 
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 {
68
+ // Remove resize listener
69
+ resizeHandler.toggle( condition.matches )
79
70
 
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
- }
71
+ // Remove scroll listener
72
+ scrollHandler.toggle( condition.matches )
90
73
 
91
74
  }
92
75
 
93
76
  // Resize handler function
94
- function resizeHandler() {
77
+ function resized() {
95
78
 
96
79
  // Update document height variable
97
80
  docHeight = document.body.scrollHeight;
@@ -102,7 +85,7 @@ var sticky = function( element, settings ) {
102
85
  }
103
86
 
104
87
  // Scroll handler function
105
- function scrollHandler() {
88
+ function scrolled() {
106
89
 
107
90
  // Scoped variables
108
91
  var newScrollY = window.pageYOffset,