liqueur 0.0.5 → 0.1.0
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.
- checksums.yaml +7 -0
- data/Gemfile.lock +2 -2
- data/app/assets/javascripts/liqueur.coffee +3 -0
- data/app/assets/javascripts/liqueur/datamask-applier.coffee +8 -0
- data/app/assets/javascripts/liqueur/footer-float-height.coffee +6 -0
- data/app/assets/javascripts/liqueur/lib/jquery.maskedinput.js +338 -0
- data/app/assets/javascripts/liqueur/lib/nprogress.js +279 -0
- data/app/assets/javascripts/liqueur/onload.coffee +6 -0
- data/app/assets/javascripts/liqueur/spinner.coffee +10 -0
- data/app/assets/stylesheets/_liqueur.scss +6 -1
- data/app/assets/stylesheets/liqueur/_form.scss +5 -0
- data/app/assets/stylesheets/liqueur/_grid.scss +37 -0
- data/app/assets/stylesheets/liqueur/_helpers.scss +9 -0
- data/app/assets/stylesheets/liqueur/_medias.scss +2 -0
- data/app/assets/stylesheets/liqueur/_snippets.scss +5 -0
- data/app/assets/stylesheets/liqueur/_spinner.scss +79 -0
- data/app/assets/stylesheets/liqueur/_tiles.scss +104 -0
- data/app/assets/stylesheets/liqueur/form/_input.scss +0 -0
- data/app/assets/stylesheets/liqueur/helpers/_block.scss +8 -0
- data/app/assets/stylesheets/liqueur/helpers/_border.scss +24 -0
- data/app/assets/stylesheets/liqueur/helpers/_description.scss +5 -0
- data/app/assets/stylesheets/liqueur/helpers/_float.scss +29 -0
- data/app/assets/stylesheets/liqueur/helpers/_li.scss +12 -0
- data/app/assets/stylesheets/liqueur/helpers/_padding.scss +6 -0
- data/app/assets/stylesheets/liqueur/helpers/_size.scss +29 -0
- data/app/assets/stylesheets/liqueur/helpers/_text_align.scss +15 -0
- data/app/assets/stylesheets/liqueur/helpers/_text_size.scss +15 -0
- data/app/assets/stylesheets/liqueur/medias/_display.scss +7 -0
- data/app/assets/stylesheets/liqueur/medias/_print.scss +17 -0
- data/app/assets/stylesheets/liqueur/reset/{_body_margin.css.scss → _body_margin.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_disabling_user_zoom.css.scss → _disabling_user_zoom.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_font_family.css.scss → _font_family.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_fontsize_body_ie.css.scss → _fontsize_body_ie.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_form.css.scss → _form.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_html5.css.scss → _html5.scss} +2 -0
- data/app/assets/stylesheets/liqueur/reset/{_images.css.scss → _images.scss} +1 -0
- data/app/assets/stylesheets/liqueur/reset/{_links.css.scss → _links.scss} +5 -1
- data/app/assets/stylesheets/liqueur/reset/{_lists.css.scss → _lists.scss} +8 -0
- data/app/assets/stylesheets/liqueur/reset/{_print.css.scss → _print.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_selection.css.scss → _selection.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_table.css.scss → _table.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_tap_color.css.scss → _tap_color.scss} +0 -0
- data/app/assets/stylesheets/liqueur/reset/{_typografy.css.scss → _typografy.scss} +0 -0
- data/app/assets/stylesheets/liqueur/snippets/_container.scss +28 -0
- data/app/assets/stylesheets/liqueur/snippets/_footer.scss +25 -0
- data/app/assets/stylesheets/liqueur/snippets/_link_overflow.scss +11 -0
- data/app/assets/stylesheets/liqueur/snippets/_menu.scss +30 -0
- data/app/assets/stylesheets/liqueur/snippets/_toggler.scss +3 -0
- data/lib/liqueur/version.rb +1 -1
- data/liqueur.gemspec +2 -2
- metadata +94 -85
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: c442c9276f17d8b2e17f0bad7883ce4ca4248b0f
|
|
4
|
+
data.tar.gz: ecf0d7e0754622d01d36c9362d449483b83106cf
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d4d5bdf62a9abe601671462dfdff2b56d6e6f9fd1173f4e2a32f929f074e676e992b5498c7f851d48d8358c467a7fa85ebb9e41442643e779e59cc9ed418b50e
|
|
7
|
+
data.tar.gz: 20abfddea42149c1304952e5460f45f1ede3558f3eda0e54d750fecb36553e4bfbf927e6223179d7edf5ad8a3668c229dd1078a7c7ff644a865bdf1be085377c
|
data/Gemfile.lock
CHANGED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Masked Input plugin for jQuery
|
|
3
|
+
Copyright (c) 2007-2013 Josh Bush (digitalbush.com)
|
|
4
|
+
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
|
|
5
|
+
Version: 1.3.1
|
|
6
|
+
*/
|
|
7
|
+
(function($) {
|
|
8
|
+
function getPasteEvent() {
|
|
9
|
+
var el = document.createElement('input'),
|
|
10
|
+
name = 'onpaste';
|
|
11
|
+
el.setAttribute(name, '');
|
|
12
|
+
return (typeof el[name] === 'function')?'paste':'input';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
var pasteEventName = getPasteEvent() + ".mask",
|
|
16
|
+
ua = navigator.userAgent,
|
|
17
|
+
iPhone = /iphone/i.test(ua),
|
|
18
|
+
android=/android/i.test(ua),
|
|
19
|
+
caretTimeoutId;
|
|
20
|
+
|
|
21
|
+
$.mask = {
|
|
22
|
+
//Predefined character definitions
|
|
23
|
+
definitions: {
|
|
24
|
+
'9': "[0-9]",
|
|
25
|
+
'a': "[A-Za-z]",
|
|
26
|
+
'*': "[A-Za-z0-9]"
|
|
27
|
+
},
|
|
28
|
+
dataName: "rawMaskFn",
|
|
29
|
+
placeholder: '_',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
$.fn.extend({
|
|
33
|
+
//Helper Function for Caret positioning
|
|
34
|
+
caret: function(begin, end) {
|
|
35
|
+
var range;
|
|
36
|
+
|
|
37
|
+
if (this.length === 0 || this.is(":hidden")) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (typeof begin == 'number') {
|
|
42
|
+
end = (typeof end === 'number') ? end : begin;
|
|
43
|
+
return this.each(function() {
|
|
44
|
+
if (this.setSelectionRange) {
|
|
45
|
+
this.setSelectionRange(begin, end);
|
|
46
|
+
} else if (this.createTextRange) {
|
|
47
|
+
range = this.createTextRange();
|
|
48
|
+
range.collapse(true);
|
|
49
|
+
range.moveEnd('character', end);
|
|
50
|
+
range.moveStart('character', begin);
|
|
51
|
+
range.select();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
if (this[0].setSelectionRange) {
|
|
56
|
+
begin = this[0].selectionStart;
|
|
57
|
+
end = this[0].selectionEnd;
|
|
58
|
+
} else if (document.selection && document.selection.createRange) {
|
|
59
|
+
range = document.selection.createRange();
|
|
60
|
+
begin = 0 - range.duplicate().moveStart('character', -100000);
|
|
61
|
+
end = begin + range.text.length;
|
|
62
|
+
}
|
|
63
|
+
return { begin: begin, end: end };
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
unmask: function() {
|
|
67
|
+
return this.trigger("unmask");
|
|
68
|
+
},
|
|
69
|
+
mask: function(mask, settings) {
|
|
70
|
+
var input,
|
|
71
|
+
defs,
|
|
72
|
+
tests,
|
|
73
|
+
partialPosition,
|
|
74
|
+
firstNonMaskPos,
|
|
75
|
+
len;
|
|
76
|
+
|
|
77
|
+
if (!mask && this.length > 0) {
|
|
78
|
+
input = $(this[0]);
|
|
79
|
+
return input.data($.mask.dataName)();
|
|
80
|
+
}
|
|
81
|
+
settings = $.extend({
|
|
82
|
+
placeholder: $.mask.placeholder, // Load default placeholder
|
|
83
|
+
completed: null
|
|
84
|
+
}, settings);
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
defs = $.mask.definitions;
|
|
88
|
+
tests = [];
|
|
89
|
+
partialPosition = len = mask.length;
|
|
90
|
+
firstNonMaskPos = null;
|
|
91
|
+
|
|
92
|
+
$.each(mask.split(""), function(i, c) {
|
|
93
|
+
if (c == '?') {
|
|
94
|
+
len--;
|
|
95
|
+
partialPosition = i;
|
|
96
|
+
} else if (defs[c]) {
|
|
97
|
+
tests.push(new RegExp(defs[c]));
|
|
98
|
+
if (firstNonMaskPos === null) {
|
|
99
|
+
firstNonMaskPos = tests.length - 1;
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
tests.push(null);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
return this.trigger("unmask").each(function() {
|
|
107
|
+
var input = $(this),
|
|
108
|
+
buffer = $.map(
|
|
109
|
+
mask.split(""),
|
|
110
|
+
function(c, i) {
|
|
111
|
+
if (c != '?') {
|
|
112
|
+
return defs[c] ? settings.placeholder : c;
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
focusText = input.val();
|
|
116
|
+
|
|
117
|
+
function seekNext(pos) {
|
|
118
|
+
while (++pos < len && !tests[pos]);
|
|
119
|
+
return pos;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function seekPrev(pos) {
|
|
123
|
+
while (--pos >= 0 && !tests[pos]);
|
|
124
|
+
return pos;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function shiftL(begin,end) {
|
|
128
|
+
var i,
|
|
129
|
+
j;
|
|
130
|
+
|
|
131
|
+
if (begin<0) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
for (i = begin, j = seekNext(end); i < len; i++) {
|
|
136
|
+
if (tests[i]) {
|
|
137
|
+
if (j < len && tests[i].test(buffer[j])) {
|
|
138
|
+
buffer[i] = buffer[j];
|
|
139
|
+
buffer[j] = settings.placeholder;
|
|
140
|
+
} else {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
j = seekNext(j);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
writeBuffer();
|
|
148
|
+
input.caret(Math.max(firstNonMaskPos, begin));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function shiftR(pos) {
|
|
152
|
+
var i,
|
|
153
|
+
c,
|
|
154
|
+
j,
|
|
155
|
+
t;
|
|
156
|
+
|
|
157
|
+
for (i = pos, c = settings.placeholder; i < len; i++) {
|
|
158
|
+
if (tests[i]) {
|
|
159
|
+
j = seekNext(i);
|
|
160
|
+
t = buffer[i];
|
|
161
|
+
buffer[i] = c;
|
|
162
|
+
if (j < len && tests[j].test(t)) {
|
|
163
|
+
c = t;
|
|
164
|
+
} else {
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function keydownEvent(e) {
|
|
172
|
+
var k = e.which,
|
|
173
|
+
pos,
|
|
174
|
+
begin,
|
|
175
|
+
end;
|
|
176
|
+
|
|
177
|
+
//backspace, delete, and escape get special treatment
|
|
178
|
+
if (k === 8 || k === 46 || (iPhone && k === 127)) {
|
|
179
|
+
pos = input.caret();
|
|
180
|
+
begin = pos.begin;
|
|
181
|
+
end = pos.end;
|
|
182
|
+
|
|
183
|
+
if (end - begin === 0) {
|
|
184
|
+
begin=k!==46?seekPrev(begin):(end=seekNext(begin-1));
|
|
185
|
+
end=k===46?seekNext(end):end;
|
|
186
|
+
}
|
|
187
|
+
clearBuffer(begin, end);
|
|
188
|
+
shiftL(begin, end - 1);
|
|
189
|
+
|
|
190
|
+
e.preventDefault();
|
|
191
|
+
} else if (k == 27) {//escape
|
|
192
|
+
input.val(focusText);
|
|
193
|
+
input.caret(0, checkVal());
|
|
194
|
+
e.preventDefault();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function keypressEvent(e) {
|
|
199
|
+
var k = e.which,
|
|
200
|
+
pos = input.caret(),
|
|
201
|
+
p,
|
|
202
|
+
c,
|
|
203
|
+
next;
|
|
204
|
+
|
|
205
|
+
if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore
|
|
206
|
+
return;
|
|
207
|
+
} else if (k) {
|
|
208
|
+
if (pos.end - pos.begin !== 0){
|
|
209
|
+
clearBuffer(pos.begin, pos.end);
|
|
210
|
+
shiftL(pos.begin, pos.end-1);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
p = seekNext(pos.begin - 1);
|
|
214
|
+
if (p < len) {
|
|
215
|
+
c = String.fromCharCode(k);
|
|
216
|
+
if (tests[p].test(c)) {
|
|
217
|
+
shiftR(p);
|
|
218
|
+
|
|
219
|
+
buffer[p] = c;
|
|
220
|
+
writeBuffer();
|
|
221
|
+
next = seekNext(p);
|
|
222
|
+
|
|
223
|
+
if(android){
|
|
224
|
+
setTimeout($.proxy($.fn.caret,input,next),0);
|
|
225
|
+
}else{
|
|
226
|
+
input.caret(next);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (settings.completed && next >= len) {
|
|
230
|
+
settings.completed.call(input);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
e.preventDefault();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function clearBuffer(start, end) {
|
|
239
|
+
var i;
|
|
240
|
+
for (i = start; i < end && i < len; i++) {
|
|
241
|
+
if (tests[i]) {
|
|
242
|
+
buffer[i] = settings.placeholder;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function writeBuffer() { input.val(buffer.join('')); }
|
|
248
|
+
|
|
249
|
+
function checkVal(allow) {
|
|
250
|
+
//try to place characters where they belong
|
|
251
|
+
var test = input.val(),
|
|
252
|
+
lastMatch = -1,
|
|
253
|
+
i,
|
|
254
|
+
c;
|
|
255
|
+
|
|
256
|
+
for (i = 0, pos = 0; i < len; i++) {
|
|
257
|
+
if (tests[i]) {
|
|
258
|
+
buffer[i] = settings.placeholder;
|
|
259
|
+
while (pos++ < test.length) {
|
|
260
|
+
c = test.charAt(pos - 1);
|
|
261
|
+
if (tests[i].test(c)) {
|
|
262
|
+
buffer[i] = c;
|
|
263
|
+
lastMatch = i;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (pos > test.length) {
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
} else if (buffer[i] === test.charAt(pos) && i !== partialPosition) {
|
|
271
|
+
pos++;
|
|
272
|
+
lastMatch = i;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (allow) {
|
|
276
|
+
writeBuffer();
|
|
277
|
+
} else if (lastMatch + 1 < partialPosition) {
|
|
278
|
+
input.val("");
|
|
279
|
+
clearBuffer(0, len);
|
|
280
|
+
} else {
|
|
281
|
+
writeBuffer();
|
|
282
|
+
input.val(input.val().substring(0, lastMatch + 1));
|
|
283
|
+
}
|
|
284
|
+
return (partialPosition ? i : firstNonMaskPos);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
input.data($.mask.dataName,function(){
|
|
288
|
+
return $.map(buffer, function(c, i) {
|
|
289
|
+
return tests[i]&&c!=settings.placeholder ? c : null;
|
|
290
|
+
}).join('');
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
if (!input.attr("readonly"))
|
|
294
|
+
input
|
|
295
|
+
.one("unmask", function() {
|
|
296
|
+
input
|
|
297
|
+
.unbind(".mask")
|
|
298
|
+
.removeData($.mask.dataName);
|
|
299
|
+
})
|
|
300
|
+
.bind("focus.mask", function() {
|
|
301
|
+
clearTimeout(caretTimeoutId);
|
|
302
|
+
var pos,
|
|
303
|
+
moveCaret;
|
|
304
|
+
|
|
305
|
+
focusText = input.val();
|
|
306
|
+
pos = checkVal();
|
|
307
|
+
|
|
308
|
+
caretTimeoutId = setTimeout(function(){
|
|
309
|
+
writeBuffer();
|
|
310
|
+
if (pos == mask.length) {
|
|
311
|
+
input.caret(0, pos);
|
|
312
|
+
} else {
|
|
313
|
+
input.caret(pos);
|
|
314
|
+
}
|
|
315
|
+
}, 10);
|
|
316
|
+
})
|
|
317
|
+
.bind("blur.mask", function() {
|
|
318
|
+
checkVal();
|
|
319
|
+
if (input.val() != focusText)
|
|
320
|
+
input.change();
|
|
321
|
+
})
|
|
322
|
+
.bind("keydown.mask", keydownEvent)
|
|
323
|
+
.bind("keypress.mask", keypressEvent)
|
|
324
|
+
.bind(pasteEventName, function() {
|
|
325
|
+
setTimeout(function() {
|
|
326
|
+
var pos=checkVal(true);
|
|
327
|
+
input.caret(pos);
|
|
328
|
+
if (settings.completed && pos == input.val().length)
|
|
329
|
+
settings.completed.call(input);
|
|
330
|
+
}, 0);
|
|
331
|
+
});
|
|
332
|
+
checkVal(); //Perform initial check for existing values
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
})(jQuery);
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/*! NProgress (c) 2013, Rico Sta. Cruz
|
|
2
|
+
* http://ricostacruz.com/nprogress */
|
|
3
|
+
|
|
4
|
+
;(function(factory) {
|
|
5
|
+
|
|
6
|
+
if (typeof module === 'function') {
|
|
7
|
+
module.exports = factory(this.jQuery || require('jquery'));
|
|
8
|
+
} else if (typeof define === 'function' && define.amd) {
|
|
9
|
+
define(['jquery'], function($) {
|
|
10
|
+
return factory($);
|
|
11
|
+
});
|
|
12
|
+
} else {
|
|
13
|
+
this.NProgress = factory(this.jQuery);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
})(function($) {
|
|
17
|
+
var NProgress = {};
|
|
18
|
+
|
|
19
|
+
NProgress.version = '0.1.2';
|
|
20
|
+
|
|
21
|
+
var Settings = NProgress.settings = {
|
|
22
|
+
minimum: 0.08,
|
|
23
|
+
easing: 'ease',
|
|
24
|
+
positionUsing: '',
|
|
25
|
+
speed: 200,
|
|
26
|
+
trickle: true,
|
|
27
|
+
trickleRate: 0.02,
|
|
28
|
+
trickleSpeed: 800,
|
|
29
|
+
showSpinner: true,
|
|
30
|
+
template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Updates configuration.
|
|
35
|
+
*
|
|
36
|
+
* NProgress.configure({
|
|
37
|
+
* minimum: 0.1
|
|
38
|
+
* });
|
|
39
|
+
*/
|
|
40
|
+
NProgress.configure = function(options) {
|
|
41
|
+
$.extend(Settings, options);
|
|
42
|
+
return this;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Last number.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
NProgress.status = null;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
|
|
53
|
+
*
|
|
54
|
+
* NProgress.set(0.4);
|
|
55
|
+
* NProgress.set(1.0);
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
NProgress.set = function(n) {
|
|
59
|
+
var started = NProgress.isStarted();
|
|
60
|
+
|
|
61
|
+
n = clamp(n, Settings.minimum, 1);
|
|
62
|
+
NProgress.status = (n === 1 ? null : n);
|
|
63
|
+
|
|
64
|
+
var $progress = NProgress.render(!started),
|
|
65
|
+
$bar = $progress.find('[role="bar"]'),
|
|
66
|
+
speed = Settings.speed,
|
|
67
|
+
ease = Settings.easing;
|
|
68
|
+
|
|
69
|
+
$progress[0].offsetWidth; /* Repaint */
|
|
70
|
+
|
|
71
|
+
$progress.queue(function(next) {
|
|
72
|
+
// Set positionUsing if it hasn't already been set
|
|
73
|
+
if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
|
|
74
|
+
|
|
75
|
+
// Add transition
|
|
76
|
+
$bar.css(barPositionCSS(n, speed, ease));
|
|
77
|
+
|
|
78
|
+
if (n === 1) {
|
|
79
|
+
// Fade out
|
|
80
|
+
$progress.css({ transition: 'none', opacity: 1 });
|
|
81
|
+
$progress[0].offsetWidth; /* Repaint */
|
|
82
|
+
|
|
83
|
+
setTimeout(function() {
|
|
84
|
+
$progress.css({ transition: 'all '+speed+'ms linear', opacity: 0 });
|
|
85
|
+
setTimeout(function() {
|
|
86
|
+
NProgress.remove();
|
|
87
|
+
next();
|
|
88
|
+
}, speed);
|
|
89
|
+
}, speed);
|
|
90
|
+
} else {
|
|
91
|
+
setTimeout(next, speed);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
return this;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
NProgress.isStarted = function() {
|
|
99
|
+
return typeof NProgress.status === 'number';
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Shows the progress bar.
|
|
104
|
+
* This is the same as setting the status to 0%, except that it doesn't go backwards.
|
|
105
|
+
*
|
|
106
|
+
* NProgress.start();
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
NProgress.start = function() {
|
|
110
|
+
if (!NProgress.status) NProgress.set(0);
|
|
111
|
+
|
|
112
|
+
var work = function() {
|
|
113
|
+
setTimeout(function() {
|
|
114
|
+
if (!NProgress.status) return;
|
|
115
|
+
NProgress.trickle();
|
|
116
|
+
work();
|
|
117
|
+
}, Settings.trickleSpeed);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
if (Settings.trickle) work();
|
|
121
|
+
|
|
122
|
+
return this;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Hides the progress bar.
|
|
127
|
+
* This is the *sort of* the same as setting the status to 100%, with the
|
|
128
|
+
* difference being `done()` makes some placebo effect of some realistic motion.
|
|
129
|
+
*
|
|
130
|
+
* NProgress.done();
|
|
131
|
+
*
|
|
132
|
+
* If `true` is passed, it will show the progress bar even if its hidden.
|
|
133
|
+
*
|
|
134
|
+
* NProgress.done(true);
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
NProgress.done = function(force) {
|
|
138
|
+
if (!force && !NProgress.status) return this;
|
|
139
|
+
|
|
140
|
+
return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Increments by a random amount.
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
NProgress.inc = function(amount) {
|
|
148
|
+
var n = NProgress.status;
|
|
149
|
+
|
|
150
|
+
if (!n) {
|
|
151
|
+
return NProgress.start();
|
|
152
|
+
} else {
|
|
153
|
+
if (typeof amount !== 'number') {
|
|
154
|
+
amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
n = clamp(n + amount, 0, 0.994);
|
|
158
|
+
return NProgress.set(n);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
NProgress.trickle = function() {
|
|
163
|
+
return NProgress.inc(Math.random() * Settings.trickleRate);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* (Internal) renders the progress bar markup based on the `template`
|
|
168
|
+
* setting.
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
NProgress.render = function(fromStart) {
|
|
172
|
+
if (NProgress.isRendered()) return $("#nprogress");
|
|
173
|
+
$('html').addClass('nprogress-busy');
|
|
174
|
+
|
|
175
|
+
var $el = $("<div id='nprogress'>")
|
|
176
|
+
.html(Settings.template);
|
|
177
|
+
|
|
178
|
+
var perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0);
|
|
179
|
+
|
|
180
|
+
$el.find('[role="bar"]').css({
|
|
181
|
+
transition: 'all 0 linear',
|
|
182
|
+
transform: 'translate3d('+perc+'%,0,0)'
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
if (!Settings.showSpinner)
|
|
186
|
+
$el.find('[role="spinner"]').remove();
|
|
187
|
+
|
|
188
|
+
$el.appendTo(document.body);
|
|
189
|
+
|
|
190
|
+
return $el;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Removes the element. Opposite of render().
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
NProgress.remove = function() {
|
|
198
|
+
$('html').removeClass('nprogress-busy');
|
|
199
|
+
$('#nprogress').remove();
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Checks if the progress bar is rendered.
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
NProgress.isRendered = function() {
|
|
207
|
+
return ($("#nprogress").length > 0);
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Determine which positioning CSS rule to use.
|
|
212
|
+
*/
|
|
213
|
+
|
|
214
|
+
NProgress.getPositioningCSS = function() {
|
|
215
|
+
// Sniff on document.body.style
|
|
216
|
+
var bodyStyle = document.body.style;
|
|
217
|
+
|
|
218
|
+
// Sniff prefixes
|
|
219
|
+
var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
|
|
220
|
+
('MozTransform' in bodyStyle) ? 'Moz' :
|
|
221
|
+
('msTransform' in bodyStyle) ? 'ms' :
|
|
222
|
+
('OTransform' in bodyStyle) ? 'O' : '';
|
|
223
|
+
|
|
224
|
+
if (vendorPrefix + 'Perspective' in bodyStyle) {
|
|
225
|
+
// Modern browsers with 3D support, e.g. Webkit, IE10
|
|
226
|
+
return 'translate3d';
|
|
227
|
+
} else if (vendorPrefix + 'Transform' in bodyStyle) {
|
|
228
|
+
// Browsers without 3D support, e.g. IE9
|
|
229
|
+
return 'translate';
|
|
230
|
+
} else {
|
|
231
|
+
// Browsers without translate() support, e.g. IE7-8
|
|
232
|
+
return 'margin';
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Helpers
|
|
238
|
+
*/
|
|
239
|
+
|
|
240
|
+
function clamp(n, min, max) {
|
|
241
|
+
if (n < min) return min;
|
|
242
|
+
if (n > max) return max;
|
|
243
|
+
return n;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* (Internal) converts a percentage (`0..1`) to a bar translateX
|
|
248
|
+
* percentage (`-100%..0%`).
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
function toBarPerc(n) {
|
|
252
|
+
return (-1 + n) * 100;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* (Internal) returns the correct CSS for changing the bar's
|
|
258
|
+
* position given an n percentage, and speed and ease from Settings
|
|
259
|
+
*/
|
|
260
|
+
|
|
261
|
+
function barPositionCSS(n, speed, ease) {
|
|
262
|
+
var barCSS;
|
|
263
|
+
|
|
264
|
+
if (Settings.positionUsing === 'translate3d') {
|
|
265
|
+
barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };
|
|
266
|
+
} else if (Settings.positionUsing === 'translate') {
|
|
267
|
+
barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };
|
|
268
|
+
} else {
|
|
269
|
+
barCSS = { 'margin-left': toBarPerc(n)+'%' };
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
barCSS.transition = 'all '+speed+'ms '+ease;
|
|
273
|
+
|
|
274
|
+
return barCSS;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return NProgress;
|
|
278
|
+
});
|
|
279
|
+
|