railsstrap 3.3.1 → 3.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|