railsstrap 3.3.1 → 3.3.2
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 +4 -4
- data/README.md +13 -27
- data/app/helpers/railsstrap/aside_helper.rb +59 -0
- data/app/helpers/railsstrap/badge_label_helper.rb +0 -4
- data/app/helpers/railsstrap/bootstrap_flash_helper.rb +1 -1
- data/app/helpers/railsstrap/date_picker_helper.rb +16 -8
- data/app/helpers/railsstrap/modal_helper.rb +18 -24
- data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.less +42 -26
- data/lib/railsstrap/constants.rb +1 -1
- data/lib/railsstrap/engine.rb +9 -5
- data/spec/lib/railsstrap/aside_helper_spec.rb +140 -0
- data/spec/lib/railsstrap/badge_label_helper_spec.rb +42 -0
- data/spec/lib/railsstrap/bootstrap_flash_helper_spec.rb +130 -0
- data/spec/lib/railsstrap/breadcrumbs_spec.rb +75 -0
- data/spec/lib/railsstrap/datepicker_helper_spec.rb +59 -0
- data/spec/lib/railsstrap/form_errors_helper_spec.rb +147 -0
- data/spec/lib/railsstrap/glyph_helper_spec.rb +24 -0
- data/spec/lib/railsstrap/icon_helper_spec.rb +24 -0
- data/spec/lib/railsstrap/modal_helper_spec.rb +140 -0
- data/spec/lib/railsstrap/navbar_helper_spec.rb +373 -0
- data/spec/lib/railsstrap/uri_state_spec.rb +49 -0
- data/spec/spec_helper.rb +20 -0
- data/vendor/assets/bower_components/bootstrap/Gruntfile.js +45 -8
- data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
- data/vendor/assets/bower_components/bootstrap/README.md +12 -9
- data/vendor/assets/bower_components/bootstrap/bower.json +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +8 -2
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +3 -3
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +257 -23
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +3 -3
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +273 -214
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +55 -69
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +4 -4
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +273 -214
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +41 -0
- data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +1 -0
- data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +4 -4
- data/vendor/assets/bower_components/bootstrap/js/affix.js +4 -4
- data/vendor/assets/bower_components/bootstrap/js/alert.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/button.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/carousel.js +7 -10
- data/vendor/assets/bower_components/bootstrap/js/collapse.js +4 -4
- data/vendor/assets/bower_components/bootstrap/js/dropdown.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/modal.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/popover.js +7 -13
- data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/tab.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/tooltip.js +10 -16
- data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
- data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
- data/vendor/assets/bower_components/bootstrap/less/badges.less +4 -0
- data/vendor/assets/bower_components/bootstrap/less/button-groups.less +2 -2
- data/vendor/assets/bower_components/bootstrap/less/buttons.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/carousel.less +8 -6
- data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/forms.less +41 -21
- data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +67 -0
- data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/media.less +14 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/navbar.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/panels.less +5 -1
- data/vendor/assets/bower_components/bootstrap/less/popovers.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/tables.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/theme.less +3 -2
- data/vendor/assets/bower_components/bootstrap/less/tooltip.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/variables.less +3 -2
- data/vendor/assets/bower_components/bootstrap/package.json +14 -13
- data/vendor/assets/bower_components/jquery/bower.json +2 -2
- data/vendor/assets/bower_components/jquery/dist/jquery.js +277 -262
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -4
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -1
- data/vendor/assets/bower_components/jquery/src/ajax.js +11 -31
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +3 -2
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -2
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +4 -4
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +1 -3
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +8 -8
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +3 -5
- data/vendor/assets/bower_components/jquery/src/core.js +6 -7
- data/vendor/assets/bower_components/jquery/src/core/init.js +3 -3
- data/vendor/assets/bower_components/jquery/src/core/ready.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css.js +28 -29
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +2 -4
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css/support.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +8 -1
- data/vendor/assets/bower_components/jquery/src/data.js +10 -11
- data/vendor/assets/bower_components/jquery/src/data/Data.js +3 -3
- data/vendor/assets/bower_components/jquery/src/deferred.js +2 -2
- data/vendor/assets/bower_components/jquery/src/dimensions.js +1 -1
- data/vendor/assets/bower_components/jquery/src/effects.js +29 -30
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +7 -7
- data/vendor/assets/bower_components/jquery/src/event.js +5 -5
- data/vendor/assets/bower_components/jquery/src/event/ajax.js +13 -0
- data/vendor/assets/bower_components/jquery/src/exports/global.js +2 -2
- data/vendor/assets/bower_components/jquery/src/intro.js +8 -8
- data/vendor/assets/bower_components/jquery/src/jquery.js +1 -0
- data/vendor/assets/bower_components/jquery/src/manipulation.js +9 -11
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +6 -5
- data/vendor/assets/bower_components/jquery/src/offset.js +9 -6
- data/vendor/assets/bower_components/jquery/src/queue.js +3 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +83 -60
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -1
- data/vendor/assets/bower_components/jquery/src/traversing.js +3 -4
- data/vendor/assets/bower_components/jquery/src/wrap.js +1 -0
- data/vendor/assets/stylesheets/aside/aside.less +18 -2
- data/vendor/assets/stylesheets/bootstrap.less +2 -0
- data/vendor/assets/stylesheets/dist/railsstrap.css +28 -6
- data/vendor/assets/stylesheets/fontawesome-local.less +15 -0
- data/vendor/assets/stylesheets/glyphicons.less +12 -0
- metadata +278 -7
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
(function( global, factory ) {
|
|
16
16
|
|
|
17
17
|
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
|
18
|
-
// For CommonJS and CommonJS-like environments where a proper window
|
|
19
|
-
// execute the factory and get jQuery
|
|
20
|
-
// For environments that do not
|
|
21
|
-
// (such as Node.js), expose a
|
|
22
|
-
// This accentuates the need for the creation of a real window
|
|
18
|
+
// For CommonJS and CommonJS-like environments where a proper `window`
|
|
19
|
+
// is present, execute the factory and get jQuery.
|
|
20
|
+
// For environments that do not have a `window` with a `document`
|
|
21
|
+
// (such as Node.js), expose a factory as module.exports.
|
|
22
|
+
// This accentuates the need for the creation of a real `window`.
|
|
23
23
|
// e.g. var jQuery = require("jquery")(window);
|
|
24
|
-
// See ticket #14549 for more info
|
|
24
|
+
// See ticket #14549 for more info.
|
|
25
25
|
module.exports = global.document ?
|
|
26
26
|
factory( global, true ) :
|
|
27
27
|
function( w ) {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
// Pass this if window is not defined yet
|
|
38
38
|
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
|
|
39
39
|
|
|
40
|
-
//
|
|
40
|
+
// Support: Firefox 18+
|
|
41
|
+
// Can't be in strict mode, several libs including ASP.NET trace
|
|
41
42
|
// the stack via arguments.caller.callee and Firefox dies if
|
|
42
43
|
// you try to trace through "use strict" call chains. (#13335)
|
|
43
|
-
// Support: Firefox 18+
|
|
44
44
|
//"use strict";
|
|
@@ -29,7 +29,7 @@ var
|
|
|
29
29
|
// We have to close these tags to support XHTML (#13200)
|
|
30
30
|
wrapMap = {
|
|
31
31
|
|
|
32
|
-
// Support:
|
|
32
|
+
// Support: IE9
|
|
33
33
|
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
|
34
34
|
|
|
35
35
|
thead: [ 1, "<table>", "</table>" ],
|
|
@@ -40,7 +40,7 @@ var
|
|
|
40
40
|
_default: [ 0, "", "" ]
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
// Support:
|
|
43
|
+
// Support: IE9
|
|
44
44
|
wrapMap.optgroup = wrapMap.option;
|
|
45
45
|
|
|
46
46
|
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
|
@@ -130,7 +130,7 @@ function getAll( context, tag ) {
|
|
|
130
130
|
ret;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
//
|
|
133
|
+
// Fix IE bugs, see support tests
|
|
134
134
|
function fixInput( src, dest ) {
|
|
135
135
|
var nodeName = dest.nodeName.toLowerCase();
|
|
136
136
|
|
|
@@ -150,8 +150,7 @@ jQuery.extend({
|
|
|
150
150
|
clone = elem.cloneNode( true ),
|
|
151
151
|
inPage = jQuery.contains( elem.ownerDocument, elem );
|
|
152
152
|
|
|
153
|
-
//
|
|
154
|
-
// Fix Cloning issues
|
|
153
|
+
// Fix IE cloning issues
|
|
155
154
|
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
|
156
155
|
!jQuery.isXMLDoc( elem ) ) {
|
|
157
156
|
|
|
@@ -202,8 +201,8 @@ jQuery.extend({
|
|
|
202
201
|
|
|
203
202
|
// Add nodes directly
|
|
204
203
|
if ( jQuery.type( elem ) === "object" ) {
|
|
205
|
-
// Support: QtWebKit
|
|
206
|
-
//
|
|
204
|
+
// Support: QtWebKit, PhantomJS
|
|
205
|
+
// push.apply(_, arraylike) throws on ancient WebKit
|
|
207
206
|
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
|
208
207
|
|
|
209
208
|
// Convert non-html into a text node
|
|
@@ -225,15 +224,14 @@ jQuery.extend({
|
|
|
225
224
|
tmp = tmp.lastChild;
|
|
226
225
|
}
|
|
227
226
|
|
|
228
|
-
// Support: QtWebKit
|
|
229
|
-
//
|
|
227
|
+
// Support: QtWebKit, PhantomJS
|
|
228
|
+
// push.apply(_, arraylike) throws on ancient WebKit
|
|
230
229
|
jQuery.merge( nodes, tmp.childNodes );
|
|
231
230
|
|
|
232
231
|
// Remember the top-level container
|
|
233
232
|
tmp = fragment.firstChild;
|
|
234
233
|
|
|
235
|
-
//
|
|
236
|
-
// Support: Webkit, IE
|
|
234
|
+
// Ensure the created nodes are orphaned (#12392)
|
|
237
235
|
tmp.textContent = "";
|
|
238
236
|
}
|
|
239
237
|
}
|
|
@@ -7,21 +7,22 @@ define([
|
|
|
7
7
|
div = fragment.appendChild( document.createElement( "div" ) ),
|
|
8
8
|
input = document.createElement( "input" );
|
|
9
9
|
|
|
10
|
-
//
|
|
10
|
+
// Support: Safari<=5.1
|
|
11
|
+
// Check state lost if the name is set (#11217)
|
|
11
12
|
// Support: Windows Web Apps (WWA)
|
|
12
|
-
// `name` and `type`
|
|
13
|
+
// `name` and `type` must use .setAttribute for WWA (#14901)
|
|
13
14
|
input.setAttribute( "type", "radio" );
|
|
14
15
|
input.setAttribute( "checked", "checked" );
|
|
15
16
|
input.setAttribute( "name", "t" );
|
|
16
17
|
|
|
17
18
|
div.appendChild( input );
|
|
18
19
|
|
|
19
|
-
// Support: Safari
|
|
20
|
-
//
|
|
20
|
+
// Support: Safari<=5.1, Android<4.2
|
|
21
|
+
// Older WebKit doesn't clone checked state correctly in fragments
|
|
21
22
|
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
|
22
23
|
|
|
24
|
+
// Support: IE<=11+
|
|
23
25
|
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
|
24
|
-
// Support: IE9-IE11+
|
|
25
26
|
div.innerHTML = "<textarea>x</textarea>";
|
|
26
27
|
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
|
27
28
|
})();
|
|
@@ -39,7 +39,8 @@ jQuery.offset = {
|
|
|
39
39
|
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
|
|
40
40
|
( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
|
|
41
41
|
|
|
42
|
-
// Need to be able to calculate position if either
|
|
42
|
+
// Need to be able to calculate position if either
|
|
43
|
+
// top or left is auto and position is either absolute or fixed
|
|
43
44
|
if ( calculatePosition ) {
|
|
44
45
|
curPosition = curElem.position();
|
|
45
46
|
curTop = curPosition.top;
|
|
@@ -96,8 +97,8 @@ jQuery.fn.extend({
|
|
|
96
97
|
return box;
|
|
97
98
|
}
|
|
98
99
|
|
|
100
|
+
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
|
99
101
|
// If we don't have gBCR, just use 0,0 rather than error
|
|
100
|
-
// BlackBerry 5, iOS 3 (original iPhone)
|
|
101
102
|
if ( typeof elem.getBoundingClientRect !== strundefined ) {
|
|
102
103
|
box = elem.getBoundingClientRect();
|
|
103
104
|
}
|
|
@@ -119,7 +120,7 @@ jQuery.fn.extend({
|
|
|
119
120
|
|
|
120
121
|
// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
|
|
121
122
|
if ( jQuery.css( elem, "position" ) === "fixed" ) {
|
|
122
|
-
//
|
|
123
|
+
// Assume getBoundingClientRect is there when computed position is fixed
|
|
123
124
|
offset = elem.getBoundingClientRect();
|
|
124
125
|
|
|
125
126
|
} else {
|
|
@@ -182,16 +183,18 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
|
|
|
182
183
|
};
|
|
183
184
|
});
|
|
184
185
|
|
|
186
|
+
// Support: Safari<7+, Chrome<37+
|
|
185
187
|
// Add the top/left cssHooks using jQuery.fn.position
|
|
186
188
|
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
+
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
|
|
190
|
+
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
|
191
|
+
// rather than make the css module depend on the offset module, just check for it here
|
|
189
192
|
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
|
190
193
|
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
|
|
191
194
|
function( elem, computed ) {
|
|
192
195
|
if ( computed ) {
|
|
193
196
|
computed = curCSS( elem, prop );
|
|
194
|
-
//
|
|
197
|
+
// If curCSS returns percentage, fallback to offset
|
|
195
198
|
return rnumnonpx.test( computed ) ?
|
|
196
199
|
jQuery( elem ).position()[ prop ] + "px" :
|
|
197
200
|
computed;
|
|
@@ -50,7 +50,7 @@ jQuery.extend({
|
|
|
50
50
|
queue.unshift( "inprogress" );
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
//
|
|
53
|
+
// Clear up the last queue stop function
|
|
54
54
|
delete hooks.stop;
|
|
55
55
|
fn.call( elem, next, hooks );
|
|
56
56
|
}
|
|
@@ -60,7 +60,7 @@ jQuery.extend({
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
|
|
63
|
-
//
|
|
63
|
+
// Not public - generate a queueHooks object, or return the current one
|
|
64
64
|
_queueHooks: function( elem, type ) {
|
|
65
65
|
var key = type + "queueHooks";
|
|
66
66
|
return data_priv.get( elem, key ) || data_priv.access( elem, key, {
|
|
@@ -90,7 +90,7 @@ jQuery.fn.extend({
|
|
|
90
90
|
this.each(function() {
|
|
91
91
|
var queue = jQuery.queue( this, type, data );
|
|
92
92
|
|
|
93
|
-
//
|
|
93
|
+
// Ensure a hooks for this queue
|
|
94
94
|
jQuery._queueHooks( this, type );
|
|
95
95
|
|
|
96
96
|
if ( type === "fx" && queue[0] !== "inprogress" ) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Sizzle CSS Selector Engine
|
|
2
|
+
* Sizzle CSS Selector Engine v2.2.0-pre
|
|
3
3
|
* http://sizzlejs.com/
|
|
4
4
|
*
|
|
5
|
-
* Copyright
|
|
5
|
+
* Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* http://jquery.org/license
|
|
8
8
|
*
|
|
9
|
-
* Date: 2014-
|
|
9
|
+
* Date: 2014-12-16
|
|
10
10
|
*/
|
|
11
11
|
(function( window ) {
|
|
12
12
|
|
|
@@ -33,7 +33,7 @@ var i,
|
|
|
33
33
|
contains,
|
|
34
34
|
|
|
35
35
|
// Instance-specific data
|
|
36
|
-
expando = "sizzle" +
|
|
36
|
+
expando = "sizzle" + 1 * new Date(),
|
|
37
37
|
preferredDoc = window.document,
|
|
38
38
|
dirruns = 0,
|
|
39
39
|
done = 0,
|
|
@@ -48,7 +48,6 @@ var i,
|
|
|
48
48
|
},
|
|
49
49
|
|
|
50
50
|
// General-purpose constants
|
|
51
|
-
strundefined = typeof undefined,
|
|
52
51
|
MAX_NEGATIVE = 1 << 31,
|
|
53
52
|
|
|
54
53
|
// Instance methods
|
|
@@ -58,12 +57,13 @@ var i,
|
|
|
58
57
|
push_native = arr.push,
|
|
59
58
|
push = arr.push,
|
|
60
59
|
slice = arr.slice,
|
|
61
|
-
// Use a stripped-down indexOf
|
|
62
|
-
|
|
60
|
+
// Use a stripped-down indexOf as it's faster than native
|
|
61
|
+
// http://jsperf.com/thor-indexof-vs-for/5
|
|
62
|
+
indexOf = function( list, elem ) {
|
|
63
63
|
var i = 0,
|
|
64
|
-
len =
|
|
64
|
+
len = list.length;
|
|
65
65
|
for ( ; i < len; i++ ) {
|
|
66
|
-
if (
|
|
66
|
+
if ( list[i] === elem ) {
|
|
67
67
|
return i;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -103,6 +103,7 @@ var i,
|
|
|
103
103
|
")\\)|)",
|
|
104
104
|
|
|
105
105
|
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
|
106
|
+
rwhitespace = new RegExp( whitespace + "+", "g" ),
|
|
106
107
|
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
|
|
107
108
|
|
|
108
109
|
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
|
@@ -154,6 +155,14 @@ var i,
|
|
|
154
155
|
String.fromCharCode( high + 0x10000 ) :
|
|
155
156
|
// Supplemental Plane codepoint (surrogate pair)
|
|
156
157
|
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
// Used for iframes
|
|
161
|
+
// See setDocument()
|
|
162
|
+
// Removing the function wrapper causes a "Permission Denied"
|
|
163
|
+
// error in IE
|
|
164
|
+
unloadHandler = function() {
|
|
165
|
+
setDocument();
|
|
157
166
|
};
|
|
158
167
|
|
|
159
168
|
// Optimize for push.apply( _, NodeList )
|
|
@@ -196,19 +205,18 @@ function Sizzle( selector, context, results, seed ) {
|
|
|
196
205
|
|
|
197
206
|
context = context || document;
|
|
198
207
|
results = results || [];
|
|
208
|
+
nodeType = context.nodeType;
|
|
199
209
|
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
}
|
|
210
|
+
if ( typeof selector !== "string" || !selector ||
|
|
211
|
+
nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
|
|
203
212
|
|
|
204
|
-
|
|
205
|
-
return [];
|
|
213
|
+
return results;
|
|
206
214
|
}
|
|
207
215
|
|
|
208
|
-
if (
|
|
216
|
+
if ( !seed && documentIsHTML ) {
|
|
209
217
|
|
|
210
|
-
//
|
|
211
|
-
if ( (match = rquickExpr.exec( selector )) ) {
|
|
218
|
+
// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
|
|
219
|
+
if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
|
|
212
220
|
// Speed-up: Sizzle("#ID")
|
|
213
221
|
if ( (m = match[1]) ) {
|
|
214
222
|
if ( nodeType === 9 ) {
|
|
@@ -240,7 +248,7 @@ function Sizzle( selector, context, results, seed ) {
|
|
|
240
248
|
return results;
|
|
241
249
|
|
|
242
250
|
// Speed-up: Sizzle(".CLASS")
|
|
243
|
-
} else if ( (m = match[3]) && support.getElementsByClassName
|
|
251
|
+
} else if ( (m = match[3]) && support.getElementsByClassName ) {
|
|
244
252
|
push.apply( results, context.getElementsByClassName( m ) );
|
|
245
253
|
return results;
|
|
246
254
|
}
|
|
@@ -250,7 +258,7 @@ function Sizzle( selector, context, results, seed ) {
|
|
|
250
258
|
if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
|
|
251
259
|
nid = old = expando;
|
|
252
260
|
newContext = context;
|
|
253
|
-
newSelector = nodeType
|
|
261
|
+
newSelector = nodeType !== 1 && selector;
|
|
254
262
|
|
|
255
263
|
// qSA works strangely on Element-rooted queries
|
|
256
264
|
// We can work around this by specifying an extra ID on the root
|
|
@@ -437,7 +445,7 @@ function createPositionalPseudo( fn ) {
|
|
|
437
445
|
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
|
438
446
|
*/
|
|
439
447
|
function testContext( context ) {
|
|
440
|
-
return context && typeof context.getElementsByTagName !==
|
|
448
|
+
return context && typeof context.getElementsByTagName !== "undefined" && context;
|
|
441
449
|
}
|
|
442
450
|
|
|
443
451
|
// Expose support vars for convenience
|
|
@@ -461,9 +469,8 @@ isXML = Sizzle.isXML = function( elem ) {
|
|
|
461
469
|
* @returns {Object} Returns the current document
|
|
462
470
|
*/
|
|
463
471
|
setDocument = Sizzle.setDocument = function( node ) {
|
|
464
|
-
var hasCompare,
|
|
465
|
-
doc = node ? node.ownerDocument || node : preferredDoc
|
|
466
|
-
parent = doc.defaultView;
|
|
472
|
+
var hasCompare, parent,
|
|
473
|
+
doc = node ? node.ownerDocument || node : preferredDoc;
|
|
467
474
|
|
|
468
475
|
// If no document and documentElement is available, return
|
|
469
476
|
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
|
|
@@ -473,9 +480,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
473
480
|
// Set our document
|
|
474
481
|
document = doc;
|
|
475
482
|
docElem = doc.documentElement;
|
|
476
|
-
|
|
477
|
-
// Support tests
|
|
478
|
-
documentIsHTML = !isXML( doc );
|
|
483
|
+
parent = doc.defaultView;
|
|
479
484
|
|
|
480
485
|
// Support: IE>8
|
|
481
486
|
// If iframe document is assigned to "document" variable and if iframe has been reloaded,
|
|
@@ -484,21 +489,22 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
484
489
|
if ( parent && parent !== parent.top ) {
|
|
485
490
|
// IE11 does not have attachEvent, so all must suffer
|
|
486
491
|
if ( parent.addEventListener ) {
|
|
487
|
-
parent.addEventListener( "unload",
|
|
488
|
-
setDocument();
|
|
489
|
-
}, false );
|
|
492
|
+
parent.addEventListener( "unload", unloadHandler, false );
|
|
490
493
|
} else if ( parent.attachEvent ) {
|
|
491
|
-
parent.attachEvent( "onunload",
|
|
492
|
-
setDocument();
|
|
493
|
-
});
|
|
494
|
+
parent.attachEvent( "onunload", unloadHandler );
|
|
494
495
|
}
|
|
495
496
|
}
|
|
496
497
|
|
|
498
|
+
/* Support tests
|
|
499
|
+
---------------------------------------------------------------------- */
|
|
500
|
+
documentIsHTML = !isXML( doc );
|
|
501
|
+
|
|
497
502
|
/* Attributes
|
|
498
503
|
---------------------------------------------------------------------- */
|
|
499
504
|
|
|
500
505
|
// Support: IE<8
|
|
501
|
-
// Verify that getAttribute really returns attributes and not properties
|
|
506
|
+
// Verify that getAttribute really returns attributes and not properties
|
|
507
|
+
// (excepting IE8 booleans)
|
|
502
508
|
support.attributes = assert(function( div ) {
|
|
503
509
|
div.className = "i";
|
|
504
510
|
return !div.getAttribute("className");
|
|
@@ -513,17 +519,8 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
513
519
|
return !div.getElementsByTagName("*").length;
|
|
514
520
|
});
|
|
515
521
|
|
|
516
|
-
//
|
|
517
|
-
support.getElementsByClassName = rnative.test( doc.getElementsByClassName )
|
|
518
|
-
div.innerHTML = "<div class='a'></div><div class='a i'></div>";
|
|
519
|
-
|
|
520
|
-
// Support: Safari<4
|
|
521
|
-
// Catch class over-caching
|
|
522
|
-
div.firstChild.className = "i";
|
|
523
|
-
// Support: Opera<10
|
|
524
|
-
// Catch gEBCN failure to find non-leading classes
|
|
525
|
-
return div.getElementsByClassName("i").length === 2;
|
|
526
|
-
});
|
|
522
|
+
// Support: IE<9
|
|
523
|
+
support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
|
|
527
524
|
|
|
528
525
|
// Support: IE<10
|
|
529
526
|
// Check if getElementById returns elements by name
|
|
@@ -537,7 +534,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
537
534
|
// ID find and filter
|
|
538
535
|
if ( support.getById ) {
|
|
539
536
|
Expr.find["ID"] = function( id, context ) {
|
|
540
|
-
if ( typeof context.getElementById !==
|
|
537
|
+
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
|
541
538
|
var m = context.getElementById( id );
|
|
542
539
|
// Check parentNode to catch when Blackberry 4.6 returns
|
|
543
540
|
// nodes that are no longer in the document #6963
|
|
@@ -558,7 +555,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
558
555
|
Expr.filter["ID"] = function( id ) {
|
|
559
556
|
var attrId = id.replace( runescape, funescape );
|
|
560
557
|
return function( elem ) {
|
|
561
|
-
var node = typeof elem.getAttributeNode !==
|
|
558
|
+
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
|
562
559
|
return node && node.value === attrId;
|
|
563
560
|
};
|
|
564
561
|
};
|
|
@@ -567,14 +564,20 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
567
564
|
// Tag
|
|
568
565
|
Expr.find["TAG"] = support.getElementsByTagName ?
|
|
569
566
|
function( tag, context ) {
|
|
570
|
-
if ( typeof context.getElementsByTagName !==
|
|
567
|
+
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
|
571
568
|
return context.getElementsByTagName( tag );
|
|
569
|
+
|
|
570
|
+
// DocumentFragment nodes don't have gEBTN
|
|
571
|
+
} else if ( support.qsa ) {
|
|
572
|
+
return context.querySelectorAll( tag );
|
|
572
573
|
}
|
|
573
574
|
} :
|
|
575
|
+
|
|
574
576
|
function( tag, context ) {
|
|
575
577
|
var elem,
|
|
576
578
|
tmp = [],
|
|
577
579
|
i = 0,
|
|
580
|
+
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
|
578
581
|
results = context.getElementsByTagName( tag );
|
|
579
582
|
|
|
580
583
|
// Filter out possible comments
|
|
@@ -592,7 +595,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
592
595
|
|
|
593
596
|
// Class
|
|
594
597
|
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
|
|
595
|
-
if (
|
|
598
|
+
if ( documentIsHTML ) {
|
|
596
599
|
return context.getElementsByClassName( className );
|
|
597
600
|
}
|
|
598
601
|
};
|
|
@@ -621,13 +624,15 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
621
624
|
// setting a boolean content attribute,
|
|
622
625
|
// since its presence should be enough
|
|
623
626
|
// http://bugs.jquery.com/ticket/12359
|
|
624
|
-
div.innerHTML = "<
|
|
627
|
+
docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
|
|
628
|
+
"<select id='" + expando + "-\f]' msallowcapture=''>" +
|
|
629
|
+
"<option selected=''></option></select>";
|
|
625
630
|
|
|
626
631
|
// Support: IE8, Opera 11-12.16
|
|
627
632
|
// Nothing should be selected when empty strings follow ^= or $= or *=
|
|
628
633
|
// The test attribute must be unknown in Opera but "safe" for WinRT
|
|
629
634
|
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
|
630
|
-
if ( div.querySelectorAll("[
|
|
635
|
+
if ( div.querySelectorAll("[msallowcapture^='']").length ) {
|
|
631
636
|
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
|
632
637
|
}
|
|
633
638
|
|
|
@@ -637,12 +642,24 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
637
642
|
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
|
638
643
|
}
|
|
639
644
|
|
|
645
|
+
// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
|
|
646
|
+
if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
|
647
|
+
rbuggyQSA.push("~=");
|
|
648
|
+
}
|
|
649
|
+
|
|
640
650
|
// Webkit/Opera - :checked should return selected option elements
|
|
641
651
|
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
|
642
652
|
// IE8 throws error here and will not see later tests
|
|
643
653
|
if ( !div.querySelectorAll(":checked").length ) {
|
|
644
654
|
rbuggyQSA.push(":checked");
|
|
645
655
|
}
|
|
656
|
+
|
|
657
|
+
// Support: Safari 8+, iOS 8+
|
|
658
|
+
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
|
659
|
+
// In-page `selector#id sibing-combinator selector` fails
|
|
660
|
+
if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
|
661
|
+
rbuggyQSA.push(".#.+[+~]");
|
|
662
|
+
}
|
|
646
663
|
});
|
|
647
664
|
|
|
648
665
|
assert(function( div ) {
|
|
@@ -759,7 +776,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
759
776
|
|
|
760
777
|
// Maintain original order
|
|
761
778
|
return sortInput ?
|
|
762
|
-
( indexOf
|
|
779
|
+
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
|
763
780
|
0;
|
|
764
781
|
}
|
|
765
782
|
|
|
@@ -786,7 +803,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
|
786
803
|
aup ? -1 :
|
|
787
804
|
bup ? 1 :
|
|
788
805
|
sortInput ?
|
|
789
|
-
( indexOf
|
|
806
|
+
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
|
790
807
|
0;
|
|
791
808
|
|
|
792
809
|
// If the nodes are siblings, we can do a quick check
|
|
@@ -849,7 +866,7 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
|
849
866
|
elem.document && elem.document.nodeType !== 11 ) {
|
|
850
867
|
return ret;
|
|
851
868
|
}
|
|
852
|
-
} catch(e) {}
|
|
869
|
+
} catch (e) {}
|
|
853
870
|
}
|
|
854
871
|
|
|
855
872
|
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
|
@@ -1068,7 +1085,7 @@ Expr = Sizzle.selectors = {
|
|
|
1068
1085
|
return pattern ||
|
|
1069
1086
|
(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
|
|
1070
1087
|
classCache( className, function( elem ) {
|
|
1071
|
-
return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !==
|
|
1088
|
+
return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
|
|
1072
1089
|
});
|
|
1073
1090
|
},
|
|
1074
1091
|
|
|
@@ -1090,7 +1107,7 @@ Expr = Sizzle.selectors = {
|
|
|
1090
1107
|
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
|
1091
1108
|
operator === "*=" ? check && result.indexOf( check ) > -1 :
|
|
1092
1109
|
operator === "$=" ? check && result.slice( -check.length ) === check :
|
|
1093
|
-
operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
|
|
1110
|
+
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
|
|
1094
1111
|
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
|
1095
1112
|
false;
|
|
1096
1113
|
};
|
|
@@ -1210,7 +1227,7 @@ Expr = Sizzle.selectors = {
|
|
|
1210
1227
|
matched = fn( seed, argument ),
|
|
1211
1228
|
i = matched.length;
|
|
1212
1229
|
while ( i-- ) {
|
|
1213
|
-
idx = indexOf
|
|
1230
|
+
idx = indexOf( seed, matched[i] );
|
|
1214
1231
|
seed[ idx ] = !( matches[ idx ] = matched[i] );
|
|
1215
1232
|
}
|
|
1216
1233
|
}) :
|
|
@@ -1249,6 +1266,8 @@ Expr = Sizzle.selectors = {
|
|
|
1249
1266
|
function( elem, context, xml ) {
|
|
1250
1267
|
input[0] = elem;
|
|
1251
1268
|
matcher( input, null, xml, results );
|
|
1269
|
+
// Don't keep the element (issue #299)
|
|
1270
|
+
input[0] = null;
|
|
1252
1271
|
return !results.pop();
|
|
1253
1272
|
};
|
|
1254
1273
|
}),
|
|
@@ -1260,6 +1279,7 @@ Expr = Sizzle.selectors = {
|
|
|
1260
1279
|
}),
|
|
1261
1280
|
|
|
1262
1281
|
"contains": markFunction(function( text ) {
|
|
1282
|
+
text = text.replace( runescape, funescape );
|
|
1263
1283
|
return function( elem ) {
|
|
1264
1284
|
return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
|
|
1265
1285
|
};
|
|
@@ -1681,7 +1701,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
|
1681
1701
|
i = matcherOut.length;
|
|
1682
1702
|
while ( i-- ) {
|
|
1683
1703
|
if ( (elem = matcherOut[i]) &&
|
|
1684
|
-
(temp = postFinder ? indexOf
|
|
1704
|
+
(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
|
|
1685
1705
|
|
|
1686
1706
|
seed[temp] = !(results[temp] = elem);
|
|
1687
1707
|
}
|
|
@@ -1716,13 +1736,16 @@ function matcherFromTokens( tokens ) {
|
|
|
1716
1736
|
return elem === checkContext;
|
|
1717
1737
|
}, implicitRelative, true ),
|
|
1718
1738
|
matchAnyContext = addCombinator( function( elem ) {
|
|
1719
|
-
return indexOf
|
|
1739
|
+
return indexOf( checkContext, elem ) > -1;
|
|
1720
1740
|
}, implicitRelative, true ),
|
|
1721
1741
|
matchers = [ function( elem, context, xml ) {
|
|
1722
|
-
|
|
1742
|
+
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
|
1723
1743
|
(checkContext = context).nodeType ?
|
|
1724
1744
|
matchContext( elem, context, xml ) :
|
|
1725
1745
|
matchAnyContext( elem, context, xml ) );
|
|
1746
|
+
// Avoid hanging onto element (issue #299)
|
|
1747
|
+
checkContext = null;
|
|
1748
|
+
return ret;
|
|
1726
1749
|
} ];
|
|
1727
1750
|
|
|
1728
1751
|
for ( ; i < len; i++ ) {
|
|
@@ -1972,7 +1995,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
|
1972
1995
|
// Sort stability
|
|
1973
1996
|
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
|
|
1974
1997
|
|
|
1975
|
-
// Support: Chrome
|
|
1998
|
+
// Support: Chrome 14-35+
|
|
1976
1999
|
// Always assume duplicates if they aren't passed to the comparison function
|
|
1977
2000
|
support.detectDuplicates = !!hasDuplicate;
|
|
1978
2001
|
|