@@ -4,7 +4,7 @@ const Loader = require('./loader.js')
4
4
5
5
function throttle ( fn , threshold , scope ) {
6
6
threshold || ( threshold = 600 )
7
- var last
7
+ let last
8
8
let deferTimer
9
9
return function ( ) {
10
10
const context = scope || this
@@ -25,20 +25,20 @@ function throttle (fn, threshold, scope) {
25
25
}
26
26
27
27
function Bar ( wrapperEl , config ) {
28
- var barEl = wrapperEl . querySelector ( '.mctb-bar' )
29
- var iconEl = document . createElement ( 'span' )
30
- var responseEl = wrapperEl . querySelector ( '.mctb-response ' )
31
- var formEl = barEl . querySelector ( 'form ' )
32
- var visible = false
33
- var originalBodyPadding = 0
34
- var bodyPadding = 0
35
- var isBottomBar = ( config . position === 'bottom' )
36
- var state = config . state
28
+ const barEl = wrapperEl . querySelector ( '.mctb-bar' )
29
+ const iconEl = document . createElement ( 'span' )
30
+ const formEl = barEl . querySelector ( 'form ' )
31
+ let responseEl = wrapperEl . querySelector ( '.mctb-response ' )
32
+ let visible = false
33
+ let originalBodyPadding = 0
34
+ let bodyPadding = 0
35
+ const isBottomBar = ( config . position === 'bottom' )
36
+ const state = config . state
37
37
38
38
// Functions
39
39
function init ( ) {
40
40
// remove "no_js" field
41
- var noJsField = barEl . querySelector ( 'input[name="_mctb_no_js"]' )
41
+ const noJsField = barEl . querySelector ( 'input[name="_mctb_no_js"]' )
42
42
noJsField . parentElement . removeChild ( noJsField )
43
43
44
44
formEl . addEventListener ( 'submit' , submitForm )
@@ -78,15 +78,15 @@ function Bar (wrapperEl, config) {
78
78
window . setTimeout ( fadeResponse , 4000 )
79
79
}
80
80
81
- window . addEventListener ( 'resize' , throttle ( calculateDimensions , 40 ) )
81
+ window . addEventListener ( 'resize' , throttle ( calculateDimensions ) )
82
82
}
83
83
84
84
function submitForm ( evt ) {
85
- var loader = new Loader ( formEl )
86
- var data = new FormData ( formEl )
87
- var request = new XMLHttpRequest ( )
85
+ const loader = new Loader ( formEl )
86
+ const data = new FormData ( formEl )
87
+ let request = new XMLHttpRequest ( )
88
88
request . onreadystatechange = function ( ) {
89
- var response
89
+ let response
90
90
91
91
// are we done?
92
92
if ( this . readyState !== 4 ) {
@@ -139,7 +139,7 @@ function Bar (wrapperEl, config) {
139
139
responseEl = document . createElement ( 'div' )
140
140
responseEl . className = 'mctb-response'
141
141
142
- var labelEl = document . createElement ( 'label' )
142
+ const labelEl = document . createElement ( 'label' )
143
143
labelEl . className = 'mctb-response-label'
144
144
labelEl . innerText = msg
145
145
responseEl . appendChild ( labelEl )
@@ -151,8 +151,7 @@ function Bar (wrapperEl, config) {
151
151
152
152
function calculateDimensions ( ) {
153
153
// make sure bar is visible
154
- var origBarDisplay = barEl . style . display
155
-
154
+ const origBarDisplay = barEl . style . display
156
155
if ( origBarDisplay !== 'block' ) {
157
156
barEl . style . visibility = 'hidden'
158
157
}
@@ -165,8 +164,8 @@ function Bar (wrapperEl, config) {
165
164
}
166
165
167
166
// would the close icon fit inside the bar?
168
- var elementsWidth = 0
169
- for ( var i = 0 ; i < barEl . firstElementChild . children . length ; i ++ ) {
167
+ let elementsWidth = 0
168
+ for ( let i = 0 ; i < barEl . firstElementChild . children . length ; i ++ ) {
170
169
elementsWidth += barEl . firstElementChild . children [ i ] . clientWidth
171
170
}
172
171
@@ -206,7 +205,7 @@ function Bar (wrapperEl, config) {
206
205
animator . toggle ( barEl , 'slide' )
207
206
208
207
// animate body padding
209
- var styles = { }
208
+ const styles = { }
210
209
styles [ isBottomBar ? 'paddingBottom' : 'paddingTop' ] = bodyPadding
211
210
animator . animate ( document . body , styles )
212
211
} else {
@@ -236,7 +235,7 @@ function Bar (wrapperEl, config) {
236
235
animator . toggle ( barEl , 'slide' )
237
236
238
237
// animate body padding
239
- var styles = { }
238
+ const styles = { }
240
239
styles [ isBottomBar ? 'paddingBottom' : 'paddingTop' ] = originalBodyPadding
241
240
animator . animate ( document . body , styles )
242
241
} else {
@@ -258,12 +257,16 @@ function Bar (wrapperEl, config) {
258
257
return
259
258
}
260
259
261
- animator . toggle ( responseEl , 'fade' )
260
+ responseEl . style . opacity = '0'
261
+ window . setTimeout ( ( ) => {
262
+ // remove response element so form is usable again
263
+ responseEl . parentElement . removeChild ( responseEl )
262
264
263
- // auto-dismiss bar if we're good!
264
- if ( state . submitted && state . success ) {
265
- window . setTimeout ( function ( ) { hide ( true ) } , 1000 )
266
- }
265
+ // hide bar if sign-up was successful
266
+ if ( state . submitted && state . success ) {
267
+ hide ( true )
268
+ }
269
+ } , 1000 )
267
270
}
268
271
269
272
/**
0 commit comments