ratchet_design 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ratchet/base/form.js +8 -117
  3. data/app/assets/javascripts/ratchet/base/mobilemenu.js +12 -50
  4. data/app/assets/javascripts/ratchet/base/sync-input-value.js +30 -0
  5. data/app/assets/javascripts/ratchet/core.js +55 -78
  6. data/app/assets/javascripts/ratchet/enhancement/lightbox.js +9 -8
  7. data/app/assets/javascripts/ratchet/enhancement/notice.js +8 -3
  8. data/app/assets/javascripts/ratchet/enhancement/sticky.js +18 -35
  9. data/app/assets/javascripts/ratchet/enhancement/waypoints.js +125 -162
  10. data/app/assets/javascripts/ratchet/utility/loader.js +4 -2
  11. data/app/assets/stylesheets/ratchet/_core.scss +2 -1
  12. data/app/assets/stylesheets/ratchet/base/_form.scss +4 -13
  13. data/app/assets/stylesheets/ratchet/base/_multistep-form.scss +62 -0
  14. data/app/assets/stylesheets/ratchet/utility/_global.scss +1 -10
  15. data/app/helpers/ratchet/application_helper.rb +23 -2
  16. data/app/views/layouts/ratchet/default.html.slim +2 -2
  17. data/app/views/shared/ratchet/_footer.html.slim +3 -2
  18. data/app/views/shared/ratchet/_header.html.slim +1 -1
  19. data/lib/ratchet_design/version.rb +1 -1
  20. data/public/assets/ratchet/core-0.1.11.js +133 -0
  21. data/public/assets/ratchet/core-0.1.11.js.gz +0 -0
  22. data/public/assets/ratchet/core-0.1.11.map.json +1 -0
  23. data/public/assets/ratchet/{fonts-woff-0.1.10.css → fonts-woff-0.1.11.css} +0 -0
  24. data/public/assets/ratchet/{fonts-woff-0.1.10.css.gz → fonts-woff-0.1.11.css.gz} +0 -0
  25. data/public/assets/ratchet/{fonts-woff2-0.1.10.css → fonts-woff2-0.1.11.css} +0 -0
  26. data/public/assets/ratchet/{fonts-woff2-0.1.10.css.gz → fonts-woff2-0.1.11.css.gz} +0 -0
  27. metadata +11 -23
  28. data/app/assets/javascripts/ratchet/base/validation.js +0 -263
  29. data/app/assets/javascripts/ratchet/shim/classlist.js +0 -234
  30. data/app/assets/javascripts/ratchet/shim/object.assign.js +0 -30
  31. data/app/assets/javascripts/ratchet/utility/compile_data.js +0 -40
  32. data/app/assets/javascripts/ratchet/utility/from_top.js +0 -14
  33. data/app/assets/javascripts/ratchet/utility/full_stop.js +0 -55
  34. data/app/assets/javascripts/ratchet/utility/get_closest.js +0 -20
  35. data/app/assets/javascripts/ratchet/utility/get_next.js +0 -17
  36. data/app/assets/javascripts/ratchet/utility/matches.js +0 -15
  37. data/app/assets/javascripts/ratchet/utility/scroll_to.js +0 -74
  38. data/app/assets/javascripts/ratchet/utility/throttle.js +0 -25
  39. data/app/assets/javascripts/ratchet/utility/timeout.js +0 -45
  40. data/app/assets/javascripts/ratchet/utility/unhover.js +0 -56
  41. data/app/assets/javascripts/ratchet/utility/word_count.js +0 -15
  42. data/public/assets/ratchet/core-0.1.10.js +0 -115
  43. data/public/assets/ratchet/core-0.1.10.js.gz +0 -0
  44. data/public/assets/ratchet/core-0.1.10.map.json +0 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratchet_design
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-27 00:00:00.000000000 Z
12
+ date: 2017-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cyborg
@@ -111,7 +111,7 @@ files:
111
111
  - app/assets/javascripts/ratchet/_svg.js
112
112
  - app/assets/javascripts/ratchet/base/form.js
113
113
  - app/assets/javascripts/ratchet/base/mobilemenu.js
114
- - app/assets/javascripts/ratchet/base/validation.js
114
+ - app/assets/javascripts/ratchet/base/sync-input-value.js
115
115
  - app/assets/javascripts/ratchet/core.js
116
116
  - app/assets/javascripts/ratchet/enhancement/_collapse.js
117
117
  - app/assets/javascripts/ratchet/enhancement/_swap.js
@@ -121,29 +121,17 @@ files:
121
121
  - app/assets/javascripts/ratchet/enhancement/notice.js
122
122
  - app/assets/javascripts/ratchet/enhancement/sticky.js
123
123
  - app/assets/javascripts/ratchet/enhancement/waypoints.js
124
- - app/assets/javascripts/ratchet/shim/classlist.js
125
- - app/assets/javascripts/ratchet/shim/object.assign.js
126
124
  - app/assets/javascripts/ratchet/shim/scope.js
127
- - app/assets/javascripts/ratchet/utility/compile_data.js
128
- - app/assets/javascripts/ratchet/utility/from_top.js
129
- - app/assets/javascripts/ratchet/utility/full_stop.js
130
- - app/assets/javascripts/ratchet/utility/get_closest.js
131
- - app/assets/javascripts/ratchet/utility/get_next.js
132
125
  - app/assets/javascripts/ratchet/utility/load_font.js
133
126
  - app/assets/javascripts/ratchet/utility/load_script.js
134
127
  - app/assets/javascripts/ratchet/utility/loader.js
135
- - app/assets/javascripts/ratchet/utility/matches.js
136
- - app/assets/javascripts/ratchet/utility/scroll_to.js
137
- - app/assets/javascripts/ratchet/utility/throttle.js
138
- - app/assets/javascripts/ratchet/utility/timeout.js
139
- - app/assets/javascripts/ratchet/utility/unhover.js
140
- - app/assets/javascripts/ratchet/utility/word_count.js
141
128
  - app/assets/stylesheets/ratchet/_core.scss
142
129
  - app/assets/stylesheets/ratchet/base/_button.scss
143
130
  - app/assets/stylesheets/ratchet/base/_document.scss
144
131
  - app/assets/stylesheets/ratchet/base/_form.scss
145
132
  - app/assets/stylesheets/ratchet/base/_list.scss
146
133
  - app/assets/stylesheets/ratchet/base/_media.scss
134
+ - app/assets/stylesheets/ratchet/base/_multistep-form.scss
147
135
  - app/assets/stylesheets/ratchet/base/_table.scss
148
136
  - app/assets/stylesheets/ratchet/base/_text.scss
149
137
  - app/assets/stylesheets/ratchet/enhancement/_contrast-section.scss
@@ -177,13 +165,13 @@ files:
177
165
  - app/views/shared/ratchet/_icons.html.slim
178
166
  - lib/ratchet_design.rb
179
167
  - lib/ratchet_design/version.rb
180
- - public/assets/ratchet/core-0.1.10.js
181
- - public/assets/ratchet/core-0.1.10.js.gz
182
- - public/assets/ratchet/core-0.1.10.map.json
183
- - public/assets/ratchet/fonts-woff-0.1.10.css
184
- - public/assets/ratchet/fonts-woff-0.1.10.css.gz
185
- - public/assets/ratchet/fonts-woff2-0.1.10.css
186
- - public/assets/ratchet/fonts-woff2-0.1.10.css.gz
168
+ - public/assets/ratchet/core-0.1.11.js
169
+ - public/assets/ratchet/core-0.1.11.js.gz
170
+ - public/assets/ratchet/core-0.1.11.map.json
171
+ - public/assets/ratchet/fonts-woff-0.1.11.css
172
+ - public/assets/ratchet/fonts-woff-0.1.11.css.gz
173
+ - public/assets/ratchet/fonts-woff2-0.1.11.css
174
+ - public/assets/ratchet/fonts-woff2-0.1.11.css.gz
187
175
  homepage:
188
176
  licenses:
189
177
  - MIT
@@ -1,263 +0,0 @@
1
- /**
2
- * Validation 0.0.6
3
- * Compose form validation module
4
- * @author Kyle Foster (@hkfoster)
5
- * @license MIT
6
- **/
7
-
8
- // Dependencies
9
- var matches = require( '../utility/matches' ),
10
- getClosest = require( '../utility/get_closest' ),
11
- wordCount = require( '../utility/word_count' );
12
-
13
- // Public API function
14
- var validation = function( element, settings ) {
15
-
16
- // Overridable defaults
17
- var defaults = {};
18
-
19
- // Parameter variables
20
- var selector = document.querySelector( element ) || document.querySelector( '[required]' );
21
-
22
- // Only run if selector exists & validation is supported
23
- if ( !selector || typeof document.createElement( 'input' ).checkValidity !== 'function' ) return false;
24
-
25
- // Scoped variables
26
- var options = Object.assign( {}, defaults, settings ),
27
- docBody = document.body;
28
-
29
- // Suppress default message bubbles
30
- docBody.addEventListener( 'invalid', function( event ) {
31
- event.preventDefault();
32
- }, true );
33
-
34
- // Run delegated `on blur` validation checks
35
- docBody.addEventListener( 'blur', blurHandler, true );
36
-
37
- // Run delegated `on submit` validation checks
38
- docBody.addEventListener( 'click', submissionHandler, false );
39
-
40
- // Blur validation handler
41
- function blurHandler( event ) {
42
-
43
- // Only run on non-submit inputs
44
- if ( !matches( event.target, 'input:not([type=submit]), textarea' ) ) return false;
45
-
46
- // Scoped variables
47
- var element = event.target,
48
- minWords = element.dataset.minWords,
49
- maxWords = element.dataset.maxWords,
50
- indicator = getClosest( element, 'label' ) || element,
51
- validity;
52
-
53
- // If element only contains whitespace, strip value
54
- if ( element.value && !element.value.replace( /\s/g, '' ).length ) {
55
- element.value = '';
56
- }
57
-
58
- // Remove pre-existing validation message
59
- messageHandler( 'hide', element );
60
-
61
- // If element has `data-min-words` attribute
62
- if ( minWords ) {
63
-
64
- // Run respective validation function
65
- validateWords( 'min', element, minWords );
66
-
67
- }
68
-
69
- // If element has `data-min-words` attribute
70
- if ( maxWords ) {
71
-
72
- // Run respective validation function
73
- validateWords( 'max', element, maxWords );
74
-
75
- }
76
-
77
- // Check validity
78
- validity = element.checkValidity();
79
-
80
- // If the element has a value but is invalid
81
- if ( element.value && !validity ) {
82
-
83
- // Set invalid state
84
- indicator.classList.remove( 'valid' );
85
- indicator.classList.add( 'invalid' );
86
-
87
- // If the element has a value and is valid
88
- } else if ( element.value && validity ) {
89
-
90
- // Set valid state
91
- indicator.classList.remove( 'invalid' );
92
- indicator.classList.add( 'valid' );
93
-
94
- // If the element has no value
95
- } else if ( !element.value ) {
96
-
97
- // Set neutral state
98
- indicator.classList.remove( 'valid' );
99
- indicator.classList.remove( 'invalid' );
100
-
101
- }
102
-
103
- }
104
-
105
- // Submission validation handler function
106
- function submissionHandler( event ) {
107
-
108
- // Only run on submission
109
- if ( !matches( event.target, 'input[type=submit], button[type=submit]' ) ) return;
110
-
111
- // Scoped variables
112
- var invalidForm = getClosest( event.target, 'form' ),
113
- invalidElem = invalidForm.querySelector( 'input:invalid, textarea:invalid' ),
114
- indicator;
115
-
116
- // If invalid element found
117
- if ( invalidElem ) {
118
-
119
- // Set indicator to parent label if it exists
120
- indicator = getClosest( invalidElem, 'label' ) || invalidElem;
121
-
122
- // If credit card field is invalid
123
- if ( matches( invalidElem, '[data-stripe=number]' ) ) {
124
-
125
- // Strip it of non-number characters
126
- invalidElem.value = invalidElem.value.replace( /[^0-9 -]/g, '' );
127
-
128
- // Evaluate form validity again
129
- invalidElem = invalidForm.querySelector( 'input:invalid, textarea:invalid' );
130
-
131
- // And return if valid
132
- if ( !invalidElem ) return;
133
-
134
- }
135
-
136
- // Prevent default behavior
137
- event.preventDefault();
138
-
139
- // If invalid is not hidden
140
- if ( invalidElem.style.display !== 'none' ) {
141
-
142
- // Focus it
143
- invalidElem.focus();
144
-
145
- // Otherwise
146
- } else {
147
-
148
- // Focus its immediate sibling (mostly used for upload buttons)
149
- invalidElem.nextSibling.focus();
150
-
151
- }
152
-
153
- // Toggle classes
154
- indicator.classList.remove( 'valid' );
155
- indicator.classList.add( 'invalid' );
156
-
157
- // Show validation message
158
- messageHandler( 'show', invalidElem );
159
-
160
- // Prevent Safari submission
161
- return false;
162
-
163
- }
164
-
165
- }
166
-
167
- // Validation message handler function
168
- function messageHandler( action, element ) {
169
-
170
- // Scoped variables
171
- var parentForm = getClosest( element, 'form' ),
172
- oldMessage = parentForm.querySelector( '.validation-message' ),
173
- newMessage = element.validationMessage,
174
-
175
- // Hide old message
176
- hideMessage = function() {
177
- oldMessage.parentNode.removeChild( oldMessage );
178
- },
179
-
180
- // Show new message
181
- showMessage = function() {
182
-
183
- // Find the element's parent label
184
- var labelParent = getClosest( element, 'label' );
185
-
186
- // If it doesn't exist, abort
187
- if ( !labelParent ) return false;
188
-
189
- // Otherwise, create and append the validation message
190
- labelParent.insertAdjacentHTML( 'beforeend', '<aside class="validation-message"><p>' + newMessage + '</p></aside>' );
191
-
192
- };
193
-
194
- // If a `data-message` attribute exists, use it in message
195
- if ( element.dataset.message ) newMessage = element.dataset.message;
196
-
197
- // If hide action is passed hide old message
198
- if ( oldMessage && action === 'hide' ) hideMessage();
199
-
200
- // If show action is passed and no old message exists
201
- if ( action === 'show' && !oldMessage ) {
202
-
203
- // Show new message
204
- showMessage();
205
-
206
- // If show action is passed and old message exists
207
- } else if ( action === 'show' && oldMessage ) {
208
-
209
- // Make sure old message is not on currently invalid element
210
- if ( oldMessage.parentNode !== element.parentNode ) {
211
-
212
- // Hide old message
213
- hideMessage();
214
-
215
- // And show new message
216
- showMessage();
217
-
218
- // Otherwise
219
- } else {
220
-
221
- // Update message text on currently invalid element
222
- oldMessage.childNodes[ 0 ].textContent = newMessage;
223
-
224
- }
225
-
226
- }
227
-
228
- }
229
-
230
- // Min- or max-words validation function
231
- function validateWords( type, element, goal ) {
232
-
233
- // Defaults settings to min-words
234
- var value = element.value,
235
- condition = wordCount( value ) < goal,
236
- verbiage = 'at least ';
237
-
238
- // Overwrite defaults in case of max-words
239
- if ( type === 'max' ) {
240
- condition = wordCount( value ) > goal;
241
- verbiage = 'no more than ';
242
- }
243
-
244
- // If value exists and it meets invalid condition
245
- if ( value && condition ) {
246
-
247
- // Set a custom error message
248
- element.setCustomValidity( 'Please write ' + verbiage + goal + ' words.' );
249
-
250
- // Otherwise
251
- } else {
252
-
253
- // Default to normal error messaging
254
- element.setCustomValidity( '' );
255
-
256
- }
257
-
258
- }
259
-
260
- };
261
-
262
- // Public API
263
- module.exports = validation;
@@ -1,234 +0,0 @@
1
- /**
2
- * ClassList polyfill
3
- * Cross-browser full element.classList implementation
4
- * @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js
5
- * @author Eli Grey - http://eligrey.com
6
- * @license MIT
7
- **/
8
-
9
- if ( 'document' in self ) {
10
-
11
- // Full polyfill for browsers with no classList support
12
- if ( !( 'classList' in document.createElement( '_' ) ) ) {
13
-
14
- ( function( view ) {
15
-
16
- 'use strict';
17
-
18
- if ( !( 'Element' in view ) ) return;
19
-
20
- var
21
- classListProp = 'classList',
22
- protoProp = 'prototype',
23
- elemCtrProto = view.Element[ protoProp ],
24
- objCtr = Object,
25
-
26
- strTrim = String[ protoProp ].trim || function() {
27
- return this.replace( /^\s+|\s+$/g, '' );
28
- },
29
-
30
- arrIndexOf = Array[ protoProp ].indexOf || function( item ) {
31
- for ( var i = 0; i < this.length; i++ ) {
32
- if ( i in this && this[ i ] === item ) {
33
- return i;
34
- }
35
- }
36
- return -1;
37
- },
38
-
39
- DOMEx = function( type, message ) {
40
- this.name = type;
41
- this.code = DOMException[ type ];
42
- this.message = message;
43
- },
44
-
45
- checkTokenAndGetIndex = function( classList, token ) {
46
- if ( token === '' ) {
47
- throw new DOMEx(
48
- 'SYNTAX_ERR',
49
- 'An invalid or illegal string was specified'
50
- );
51
- }
52
- if ( /\s/.test( token ) ) {
53
- throw new DOMEx(
54
- 'INVALID_CHARACTER_ERR',
55
- 'String contains an invalid character'
56
- );
57
- }
58
- return arrIndexOf.call( classList, token );
59
- },
60
-
61
- ClassList = function( elem ) {
62
- var trimmedClasses = strTrim.call( elem.getAttribute( 'class' ) || '' ),
63
- classes = trimmedClasses ? trimmedClasses.split( /\s+/ ) : [];
64
-
65
- for ( var i = 0; i < classes.length; i++ ) {
66
- this.push( classes[ i ] );
67
- }
68
-
69
- this._updateClassName = function() {
70
- elem.setAttribute( 'class', this.toString() );
71
- };
72
- },
73
-
74
- classListProto = ClassList[ protoProp ] = [],
75
-
76
- classListGetter = function() {
77
- return new ClassList( this );
78
- };
79
-
80
- DOMEx[ protoProp ] = Error[ protoProp ];
81
-
82
- classListProto.item = function( i ) {
83
- return this[ i ] || null;
84
- };
85
-
86
- classListProto.contains = function( token ) {
87
- token += '';
88
- return checkTokenAndGetIndex( this, token ) !== -1;
89
- };
90
-
91
- classListProto.add = function() {
92
- var
93
- tokens = arguments,
94
- iter = 0,
95
- len = tokens.length,
96
- updated = false,
97
- token;
98
-
99
- do {
100
- token = tokens[ iter ] + '';
101
- if ( checkTokenAndGetIndex( this, token ) === -1 ) {
102
- this.push( token );
103
- updated = true;
104
- }
105
- }
106
-
107
- while ( ++iter < len );
108
-
109
- if ( updated ) {
110
- this._updateClassName();
111
- }
112
- };
113
-
114
- classListProto.remove = function() {
115
- var
116
- tokens = arguments,
117
- iter = 0,
118
- len = tokens.length,
119
- updated = false,
120
- token,
121
- index;
122
-
123
- do {
124
- token = tokens[ iter ] + '';
125
- index = checkTokenAndGetIndex( this, token );
126
-
127
- while ( index !== -1 ) {
128
- this.splice( index, 1 );
129
- updated = true;
130
- index = checkTokenAndGetIndex( this, token );
131
- }
132
- }
133
-
134
- while ( ++iter < len );
135
-
136
- if ( updated ) {
137
- this._updateClassName();
138
- }
139
- };
140
-
141
- classListProto.toggle = function( token, force ) {
142
- token += '';
143
-
144
- var
145
- result = this.contains( token ),
146
- method = result ? force !== true && 'remove' : force !== false && 'add';
147
-
148
- if ( method ) {
149
- this[ method ]( token );
150
- }
151
-
152
- if ( force === true || force === false ) {
153
- return force;
154
- } else {
155
- return !result;
156
- }
157
- };
158
-
159
- classListProto.toString = function() {
160
- return this.join( ' ' );
161
- };
162
-
163
- if ( objCtr.defineProperty ) {
164
- var classListPropDesc = {
165
- get : classListGetter,
166
- enumerable : true,
167
- configurable : true
168
- };
169
-
170
- try {
171
- objCtr.defineProperty( elemCtrProto, classListProp, classListPropDesc );
172
- }
173
-
174
- catch ( ex ) {
175
- if ( ex.number === -0x7FF5EC54 ) {
176
- classListPropDesc.enumerable = false;
177
- objCtr.defineProperty( elemCtrProto, classListProp, classListPropDesc );
178
- }
179
- }
180
-
181
- } else if ( objCtr[ protoProp ].__defineGetter__ ) {
182
- elemCtrProto.__defineGetter__( classListProp, classListGetter );
183
- }
184
-
185
- }( self ));
186
-
187
- } else {
188
-
189
- ( function() {
190
-
191
- 'use strict';
192
-
193
- var testElement = document.createElement( '_' );
194
-
195
- testElement.classList.add( 'c1', 'c2' );
196
-
197
- if ( !testElement.classList.contains( 'c2' ) ) {
198
- var createMethod = function( method ) {
199
- var original = DOMTokenList.prototype[ method ];
200
-
201
- DOMTokenList.prototype[ method ] = function( token ) {
202
- var i, len = arguments.length;
203
-
204
- for ( i = 0; i < len; i++ ) {
205
- token = arguments[ i ];
206
- original.call( this, token );
207
- }
208
- };
209
- };
210
- createMethod( 'add' );
211
- createMethod( 'remove' );
212
- }
213
-
214
- testElement.classList.toggle( 'c3', false );
215
-
216
- if ( testElement.classList.contains( 'c3' ) ) {
217
- var _toggle = DOMTokenList.prototype.toggle;
218
-
219
- DOMTokenList.prototype.toggle = function( token, force ) {
220
- if ( 1 in arguments && !this.contains( token ) === !force ) {
221
- return force;
222
- } else {
223
- return _toggle.call( this, token );
224
- }
225
- };
226
-
227
- }
228
-
229
- testElement = null;
230
-
231
- }());
232
-
233
- }
234
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Object.assign polyfill
3
- * Cross-browser full Object.assign implementation
4
- * @source https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
5
- * @license MIT
6
- **/
7
-
8
- if ( typeof Object.assign != 'function' ) {
9
- ( function() {
10
- Object.assign = function( target ) {
11
- 'use strict';
12
- if ( target === undefined || target === null ) {
13
- throw new TypeError( 'Cannot convert undefined or null to object' );
14
- }
15
-
16
- var output = Object( target );
17
- for ( var index = 1; index < arguments.length; index++ ) {
18
- var source = arguments[ index ];
19
- if ( source !== undefined && source !== null ) {
20
- for ( var nextKey in source ) {
21
- if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {
22
- output[ nextKey ] = source[ nextKey ];
23
- }
24
- }
25
- }
26
- }
27
- return output;
28
- };
29
- })();
30
- }
@@ -1,40 +0,0 @@
1
- /**
2
- * CompileData 0.0.1
3
- * Compile input data from a given parent element
4
- * @author Kyle Foster (@hkfoster)
5
- * @license MIT
6
- **/
7
-
8
- // Public API function
9
- var compileData = function( parent, debug ) {
10
-
11
- // Scoped variables
12
- var formData = new FormData(),
13
- allFields = parent.querySelectorAll( 'input:not([type=submit])' );
14
-
15
- // Loop over fields
16
- for ( var i = 0; i < allFields.length; i++ ) {
17
-
18
- // Cache current field
19
- var field = allFields[ i ];
20
-
21
- // If a name attribute is present
22
- if ( field.name ) {
23
-
24
- // Debug mode logging
25
- if ( debug ) console.log( 'Name: ' + field.name + '\n' + 'Value: ' + field.value );
26
-
27
- // Append current field’s name/value to new formData object
28
- formData.append( field.name, field.value );
29
-
30
- }
31
-
32
- }
33
-
34
- // Then return said formData object
35
- return formData;
36
-
37
- };
38
-
39
- // Public API
40
- module.exports = compileData;
@@ -1,14 +0,0 @@
1
- /**
2
- * FromTop 0.0.1
3
- * Find element’s distance from top of document
4
- * @author Kyle Foster (@hkfoster)
5
- * @license MIT
6
- **/
7
-
8
- // Public API function
9
- var fromTop = function( elem ) {
10
- return Math.round( elem.getBoundingClientRect().top + window.pageYOffset );
11
- };
12
-
13
- // Public API
14
- module.exports = fromTop;