activeadmin 3.2.0 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/lib/active_admin/version.rb +1 -1
  4. data/lib/active_admin/views/components/active_admin_form.rb +1 -1
  5. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +1 -1
  6. data/vendor/assets/javascripts/jquery-ui/data.js +12 -8
  7. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +10 -7
  8. data/vendor/assets/javascripts/jquery-ui/focusable.js +12 -9
  9. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +60 -57
  10. data/vendor/assets/javascripts/jquery-ui/form.js +15 -12
  11. data/vendor/assets/javascripts/jquery-ui/ie.js +5 -2
  12. data/vendor/assets/javascripts/jquery-ui/keycode.js +11 -7
  13. data/vendor/assets/javascripts/jquery-ui/labels.js +46 -40
  14. data/vendor/assets/javascripts/jquery-ui/plugin.js +5 -2
  15. data/vendor/assets/javascripts/jquery-ui/position.js +30 -17
  16. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +6 -2
  17. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +6 -2
  18. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +10 -7
  19. data/vendor/assets/javascripts/jquery-ui/tabbable.js +11 -8
  20. data/vendor/assets/javascripts/jquery-ui/unique-id.js +10 -7
  21. data/vendor/assets/javascripts/jquery-ui/version.js +6 -3
  22. data/vendor/assets/javascripts/jquery-ui/widget.js +53 -30
  23. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +87 -24
  24. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +276 -273
  25. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +15 -11
  26. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +182 -62
  27. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +53 -36
  28. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +28 -19
  29. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +22 -11
  30. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +47 -26
  31. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +186 -125
  32. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +20 -20
  33. metadata +17 -4
  34. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 500a0615ecf1635299471dcbc309082815a82d24f03528b7c5926c4a5449fb64
4
- data.tar.gz: 7ee23a9a3f4658eef536dec2032b40a9d60b054272a09b5e5a833ee51fae4430
3
+ metadata.gz: a0548655f225688960699146ba45dcacd0b22375225cd51a835e0226a9347c0a
4
+ data.tar.gz: accc8e86bd98b8c7d2f1dca258f528e6a36941e3c7cc8633605cfbb05fd652d6
5
5
  SHA512:
6
- metadata.gz: 62b6e4f0a45f0d1d102dd3753de0fdddd4b661e6f53af9caebf37fcdda1924e769ed932027f517147f0db2e0c9724bcff49ca5640130a524ae48701c3ae1551b
7
- data.tar.gz: eb0a26b263ed3cb17e8157581ac30a182467649b622807a4af9fccc2618ddb6b392307e4ec16abca591ed6f3b039c451868c7d9a6869ea89de68893672962455
6
+ metadata.gz: 9fdd7e6072424d783695be0cf5887800d894bd83a18511177d06bd16604b99b04ae491bcd281efb4acffd425b95fc747e2ede748574c07adc507a18380096184
7
+ data.tar.gz: 3756bf37298eab6a6227e56a76cf4ebfa4563f718a9f8c67feeb34446c56e1b2bce8243cbf5f267801e3aa42ff12f56acf01e37bef409a80a1f6180072c2aa38
data/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.2.2 [☰](https://github.com/activeadmin/activeadmin/compare/v3.2.1..v3.2.2)
6
+
7
+ ### Security Fixes
8
+
9
+ * Backport Fix potential XSS issue when rendering form legends [#8349] by
10
+ [@deivid-rodriguez]
11
+
12
+ ### Enhancements
13
+
14
+ * Update vendored jQuery UI to 1.13.3 [#8329] by [@tagliala]
15
+
16
+ ## 3.2.1 [☰](https://github.com/activeadmin/activeadmin/compare/v3.2.0..v3.2.1)
17
+
18
+ ### Enhancements
19
+
20
+ * Backport Suppress ruby 3.3 warning [#8310] by [@mgrunberg]
21
+ * Backport Recommend using target="_blank" instead of target="blank" [#8311] by [@mgrunberg]
22
+
5
23
  ## 3.2.0 [☰](https://github.com/activeadmin/activeadmin/compare/v3.1.0..v3.2.0)
6
24
 
7
25
  ### Security Fixes
@@ -898,6 +916,10 @@ Please check [0-6-stable] for previous changes.
898
916
  [#8165]: https://github.com/activeadmin/activeadmin/pull/8165
899
917
  [#8166]: https://github.com/activeadmin/activeadmin/pull/8166
900
918
  [#8167]: https://github.com/activeadmin/activeadmin/pull/8167
919
+ [#8310]: https://github.com/activeadmin/activeadmin/pull/8310
920
+ [#8311]: https://github.com/activeadmin/activeadmin/pull/8311
921
+ [#8329]: https://github.com/activeadmin/activeadmin/pull/8329
922
+ [#8349]: https://github.com/activeadmin/activeadmin/pull/8349
901
923
 
902
924
  [@1000ship]: https://github.com/1000ship
903
925
  [@5t111111]: https://github.com/5t111111
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ActiveAdmin
3
- VERSION = "3.2.0"
3
+ VERSION = "3.2.2"
4
4
  end
@@ -127,7 +127,7 @@ module ActiveAdmin
127
127
  html_options[:class] ||= "inputs"
128
128
  legend = args.shift if args.first.is_a?(::String)
129
129
  legend = html_options.delete(:name) if html_options.key?(:name)
130
- legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
130
+ legend_tag = legend ? "<legend><span>#{ERB::Util.html_escape(legend)}</span></legend>" : ""
131
131
  fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
132
132
  @opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
133
133
  @closing_tag = "</ol></fieldset>"
@@ -258,7 +258,7 @@ ActiveAdmin.setup do |config|
258
258
  #
259
259
  # config.namespace :admin do |admin|
260
260
  # admin.build_menu :default do |menu|
261
- # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
261
+ # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: "_blank" }
262
262
  # end
263
263
  # end
264
264
 
@@ -1,20 +1,22 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  /*!
4
- * jQuery UI :data 1.12.1
5
- * http://jqueryui.com
4
+ * jQuery UI :data 1.13.3
5
+ * https://jqueryui.com
6
6
  *
7
- * Copyright jQuery Foundation and other contributors
7
+ * Copyright OpenJS Foundation and other contributors
8
8
  * Released under the MIT license.
9
- * http://jquery.org/license
9
+ * https://jquery.org/license
10
10
  */
11
11
 
12
12
  //>>label: :data Selector
13
13
  //>>group: Core
14
14
  //>>description: Selects elements which have data stored under the specified key.
15
- //>>docs: http://api.jqueryui.com/data-selector/
15
+ //>>docs: https://api.jqueryui.com/data-selector/
16
16
 
17
17
  ( function( factory ) {
18
+ "use strict";
19
+
18
20
  if ( typeof define === "function" && define.amd ) {
19
21
 
20
22
  // AMD. Register as an anonymous module.
@@ -24,8 +26,10 @@
24
26
  // Browser globals
25
27
  factory( jQuery );
26
28
  }
27
- } ( function( $ ) {
28
- return $.extend( $.expr[ ":" ], {
29
+ } )( function( $ ) {
30
+ "use strict";
31
+
32
+ return $.extend( $.expr.pseudos, {
29
33
  data: $.expr.createPseudo ?
30
34
  $.expr.createPseudo( function( dataName ) {
31
35
  return function( elem ) {
@@ -38,4 +42,4 @@ return $.extend( $.expr[ ":" ], {
38
42
  return !!$.data( elem, match[ 3 ] );
39
43
  }
40
44
  } );
41
- } ) );
45
+ } );
@@ -1,21 +1,23 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  /*!
4
- * jQuery UI Disable Selection 1.12.1
5
- * http://jqueryui.com
4
+ * jQuery UI Disable Selection 1.13.3
5
+ * https://jqueryui.com
6
6
  *
7
- * Copyright jQuery Foundation and other contributors
7
+ * Copyright OpenJS Foundation and other contributors
8
8
  * Released under the MIT license.
9
- * http://jquery.org/license
9
+ * https://jquery.org/license
10
10
  */
11
11
 
12
12
  //>>label: disableSelection
13
13
  //>>group: Core
14
14
  //>>description: Disable selection of text content within the set of matched elements.
15
- //>>docs: http://api.jqueryui.com/disableSelection/
15
+ //>>docs: https://api.jqueryui.com/disableSelection/
16
16
 
17
17
  // This file is deprecated
18
18
  ( function( factory ) {
19
+ "use strict";
20
+
19
21
  if ( typeof define === "function" && define.amd ) {
20
22
 
21
23
  // AMD. Register as an anonymous module.
@@ -25,7 +27,8 @@
25
27
  // Browser globals
26
28
  factory( jQuery );
27
29
  }
28
- } ( function( $ ) {
30
+ } )( function( $ ) {
31
+ "use strict";
29
32
 
30
33
  return $.fn.extend( {
31
34
  disableSelection: ( function() {
@@ -45,4 +48,4 @@ return $.fn.extend( {
45
48
  }
46
49
  } );
47
50
 
48
- } ) );
51
+ } );
@@ -1,20 +1,22 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  /*!
4
- * jQuery UI Focusable 1.12.1
5
- * http://jqueryui.com
4
+ * jQuery UI Focusable 1.13.3
5
+ * https://jqueryui.com
6
6
  *
7
- * Copyright jQuery Foundation and other contributors
7
+ * Copyright OpenJS Foundation and other contributors
8
8
  * Released under the MIT license.
9
- * http://jquery.org/license
9
+ * https://jquery.org/license
10
10
  */
11
11
 
12
12
  //>>label: :focusable Selector
13
13
  //>>group: Core
14
14
  //>>description: Selects elements which can be focused.
15
- //>>docs: http://api.jqueryui.com/focusable-selector/
15
+ //>>docs: https://api.jqueryui.com/focusable-selector/
16
16
 
17
17
  ( function( factory ) {
18
+ "use strict";
19
+
18
20
  if ( typeof define === "function" && define.amd ) {
19
21
 
20
22
  // AMD. Register as an anonymous module.
@@ -24,7 +26,8 @@
24
26
  // Browser globals
25
27
  factory( jQuery );
26
28
  }
27
- } ( function( $ ) {
29
+ } )( function( $ ) {
30
+ "use strict";
28
31
 
29
32
  // Selectors
30
33
  $.ui.focusable = function( element, hasTabindex ) {
@@ -72,10 +75,10 @@ function visible( element ) {
72
75
  element = element.parent();
73
76
  visibility = element.css( "visibility" );
74
77
  }
75
- return visibility !== "hidden";
78
+ return visibility === "visible";
76
79
  }
77
80
 
78
- $.extend( $.expr[ ":" ], {
81
+ $.extend( $.expr.pseudos, {
79
82
  focusable: function( element ) {
80
83
  return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
81
84
  }
@@ -83,4 +86,4 @@ $.extend( $.expr[ ":" ], {
83
86
 
84
87
  return $.ui.focusable;
85
88
 
86
- } ) );
89
+ } );
@@ -2,79 +2,82 @@
2
2
  //= require jquery-ui/version
3
3
 
4
4
  /*!
5
- * jQuery UI Form Reset Mixin 1.12.1
6
- * http://jqueryui.com
5
+ * jQuery UI Form Reset Mixin 1.13.3
6
+ * https://jqueryui.com
7
7
  *
8
- * Copyright jQuery Foundation and other contributors
8
+ * Copyright OpenJS Foundation and other contributors
9
9
  * Released under the MIT license.
10
- * http://jquery.org/license
10
+ * https://jquery.org/license
11
11
  */
12
12
 
13
13
  //>>label: Form Reset Mixin
14
14
  //>>group: Core
15
15
  //>>description: Refresh input widgets when their form is reset
16
- //>>docs: http://api.jqueryui.com/form-reset-mixin/
16
+ //>>docs: https://api.jqueryui.com/form-reset-mixin/
17
17
 
18
18
  ( function( factory ) {
19
- if ( typeof define === "function" && define.amd ) {
19
+ "use strict";
20
20
 
21
- // AMD. Register as an anonymous module.
22
- define( [
23
- "jquery",
24
- "./form",
25
- "./version"
26
- ], factory );
27
- } else {
21
+ if ( typeof define === "function" && define.amd ) {
28
22
 
29
- // Browser globals
30
- factory( jQuery );
31
- }
32
- }( function( $ ) {
23
+ // AMD. Register as an anonymous module.
24
+ define( [
25
+ "jquery",
26
+ "./form",
27
+ "./version"
28
+ ], factory );
29
+ } else {
33
30
 
34
- return $.ui.formResetMixin = {
35
- _formResetHandler: function() {
36
- var form = $( this );
31
+ // Browser globals
32
+ factory( jQuery );
33
+ }
34
+ } )( function( $ ) {
35
+ "use strict";
37
36
 
38
- // Wait for the form reset to actually happen before refreshing
39
- setTimeout( function() {
40
- var instances = form.data( "ui-form-reset-instances" );
41
- $.each( instances, function() {
42
- this.refresh();
43
- } );
44
- } );
45
- },
37
+ return $.ui.formResetMixin = {
38
+ _formResetHandler: function() {
39
+ var form = $( this );
46
40
 
47
- _bindFormResetHandler: function() {
48
- this.form = this.element.form();
49
- if ( !this.form.length ) {
50
- return;
51
- }
41
+ // Wait for the form reset to actually happen before refreshing
42
+ setTimeout( function() {
43
+ var instances = form.data( "ui-form-reset-instances" );
44
+ $.each( instances, function() {
45
+ this.refresh();
46
+ } );
47
+ } );
48
+ },
52
49
 
53
- var instances = this.form.data( "ui-form-reset-instances" ) || [];
54
- if ( !instances.length ) {
50
+ _bindFormResetHandler: function() {
51
+ this.form = this.element._form();
52
+ if ( !this.form.length ) {
53
+ return;
54
+ }
55
55
 
56
- // We don't use _on() here because we use a single event handler per form
57
- this.form.on( "reset.ui-form-reset", this._formResetHandler );
58
- }
59
- instances.push( this );
60
- this.form.data( "ui-form-reset-instances", instances );
61
- },
56
+ var instances = this.form.data( "ui-form-reset-instances" ) || [];
57
+ if ( !instances.length ) {
62
58
 
63
- _unbindFormResetHandler: function() {
64
- if ( !this.form.length ) {
65
- return;
66
- }
59
+ // We don't use _on() here because we use a single event handler per form
60
+ this.form.on( "reset.ui-form-reset", this._formResetHandler );
61
+ }
62
+ instances.push( this );
63
+ this.form.data( "ui-form-reset-instances", instances );
64
+ },
67
65
 
68
- var instances = this.form.data( "ui-form-reset-instances" );
69
- instances.splice( $.inArray( this, instances ), 1 );
70
- if ( instances.length ) {
71
- this.form.data( "ui-form-reset-instances", instances );
72
- } else {
73
- this.form
74
- .removeData( "ui-form-reset-instances" )
75
- .off( "reset.ui-form-reset" );
76
- }
77
- }
78
- };
66
+ _unbindFormResetHandler: function() {
67
+ if ( !this.form.length ) {
68
+ return;
69
+ }
79
70
 
80
- } ) );
71
+ var instances = this.form.data( "ui-form-reset-instances" );
72
+ instances.splice( $.inArray( this, instances ), 1 );
73
+ if ( instances.length ) {
74
+ this.form.data( "ui-form-reset-instances", instances );
75
+ } else {
76
+ this.form
77
+ .removeData( "ui-form-reset-instances" )
78
+ .off( "reset.ui-form-reset" );
79
+ }
80
+ }
81
+ };
82
+
83
+ } );
@@ -1,22 +1,25 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  ( function( factory ) {
4
- if ( typeof define === "function" && define.amd ) {
4
+ "use strict";
5
5
 
6
- // AMD. Register as an anonymous module.
7
- define( [ "jquery", "./version" ], factory );
8
- } else {
6
+ if ( typeof define === "function" && define.amd ) {
9
7
 
10
- // Browser globals
11
- factory( jQuery );
12
- }
13
- } ( function( $ ) {
8
+ // AMD. Register as an anonymous module.
9
+ define( [ "jquery", "./version" ], factory );
10
+ } else {
11
+
12
+ // Browser globals
13
+ factory( jQuery );
14
+ }
15
+ } )( function( $ ) {
16
+ "use strict";
14
17
 
15
18
  // Support: IE8 Only
16
19
  // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
17
20
  // with a string, so we need to find the proper form.
18
- return $.fn.form = function() {
19
- return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
20
- };
21
+ return $.fn._form = function() {
22
+ return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
23
+ };
21
24
 
22
- } ) );
25
+ } );
@@ -1,6 +1,8 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  ( function( factory ) {
4
+ "use strict";
5
+
4
6
  if ( typeof define === "function" && define.amd ) {
5
7
 
6
8
  // AMD. Register as an anonymous module.
@@ -10,8 +12,9 @@
10
12
  // Browser globals
11
13
  factory( jQuery );
12
14
  }
13
- } ( function( $ ) {
15
+ } )( function( $ ) {
16
+ "use strict";
14
17
 
15
18
  // This file is deprecated
16
19
  return $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
17
- } ) );
20
+ } );
@@ -1,20 +1,22 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  /*!
4
- * jQuery UI Keycode 1.12.1
5
- * http://jqueryui.com
4
+ * jQuery UI Keycode 1.13.3
5
+ * https://jqueryui.com
6
6
  *
7
- * Copyright jQuery Foundation and other contributors
7
+ * Copyright OpenJS Foundation and other contributors
8
8
  * Released under the MIT license.
9
- * http://jquery.org/license
9
+ * https://jquery.org/license
10
10
  */
11
11
 
12
12
  //>>label: Keycode
13
13
  //>>group: Core
14
14
  //>>description: Provide keycodes as keynames
15
- //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
15
+ //>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/
16
16
 
17
17
  ( function( factory ) {
18
+ "use strict";
19
+
18
20
  if ( typeof define === "function" && define.amd ) {
19
21
 
20
22
  // AMD. Register as an anonymous module.
@@ -24,7 +26,9 @@
24
26
  // Browser globals
25
27
  factory( jQuery );
26
28
  }
27
- } ( function( $ ) {
29
+ } )( function( $ ) {
30
+ "use strict";
31
+
28
32
  return $.ui.keyCode = {
29
33
  BACKSPACE: 8,
30
34
  COMMA: 188,
@@ -44,4 +48,4 @@ return $.ui.keyCode = {
44
48
  UP: 38
45
49
  };
46
50
 
47
- } ) );
51
+ } );
@@ -1,65 +1,71 @@
1
1
  //= require jquery-ui/version
2
- //= require jquery-ui/escape-selector
3
2
 
4
3
  /*!
5
- * jQuery UI Labels 1.12.1
6
- * http://jqueryui.com
4
+ * jQuery UI Labels 1.13.3
5
+ * https://jqueryui.com
7
6
  *
8
- * Copyright jQuery Foundation and other contributors
7
+ * Copyright OpenJS Foundation and other contributors
9
8
  * Released under the MIT license.
10
- * http://jquery.org/license
9
+ * https://jquery.org/license
11
10
  */
12
11
 
13
12
  //>>label: labels
14
13
  //>>group: Core
15
14
  //>>description: Find all the labels associated with a given input
16
- //>>docs: http://api.jqueryui.com/labels/
15
+ //>>docs: https://api.jqueryui.com/labels/
17
16
 
18
17
  ( function( factory ) {
19
- if ( typeof define === "function" && define.amd ) {
18
+ "use strict";
20
19
 
21
- // AMD. Register as an anonymous module.
22
- define( [ "jquery", "./version", "./escape-selector" ], factory );
23
- } else {
20
+ if ( typeof define === "function" && define.amd ) {
24
21
 
25
- // Browser globals
26
- factory( jQuery );
27
- }
28
- } ( function( $ ) {
22
+ // AMD. Register as an anonymous module.
23
+ define( [ "jquery", "./version" ], factory );
24
+ } else {
29
25
 
30
- return $.fn.labels = function() {
31
- var ancestor, selector, id, labels, ancestors;
26
+ // Browser globals
27
+ factory( jQuery );
28
+ }
29
+ } )( function( $ ) {
30
+ "use strict";
32
31
 
33
- // Check control.labels first
34
- if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
35
- return this.pushStack( this[ 0 ].labels );
36
- }
32
+ return $.fn.labels = function() {
33
+ var ancestor, selector, id, labels, ancestors;
37
34
 
38
- // Support: IE <= 11, FF <= 37, Android <= 2.3 only
39
- // Above browsers do not support control.labels. Everything below is to support them
40
- // as well as document fragments. control.labels does not work on document fragments
41
- labels = this.eq( 0 ).parents( "label" );
35
+ if ( !this.length ) {
36
+ return this.pushStack( [] );
37
+ }
42
38
 
43
- // Look for the label based on the id
44
- id = this.attr( "id" );
45
- if ( id ) {
39
+ // Check control.labels first
40
+ if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
41
+ return this.pushStack( this[ 0 ].labels );
42
+ }
46
43
 
47
- // We don't search against the document in case the element
48
- // is disconnected from the DOM
49
- ancestor = this.eq( 0 ).parents().last();
44
+ // Support: IE <= 11, FF <= 37, Android <= 2.3 only
45
+ // Above browsers do not support control.labels. Everything below is to support them
46
+ // as well as document fragments. control.labels does not work on document fragments
47
+ labels = this.eq( 0 ).parents( "label" );
50
48
 
51
- // Get a full set of top level ancestors
52
- ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
49
+ // Look for the label based on the id
50
+ id = this.attr( "id" );
51
+ if ( id ) {
53
52
 
54
- // Create a selector for the label based on the id
55
- selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
53
+ // We don't search against the document in case the element
54
+ // is disconnected from the DOM
55
+ ancestor = this.eq( 0 ).parents().last();
56
56
 
57
- labels = labels.add( ancestors.find( selector ).addBack( selector ) );
57
+ // Get a full set of top level ancestors
58
+ ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
58
59
 
59
- }
60
+ // Create a selector for the label based on the id
61
+ selector = "label[for='" + $.escapeSelector( id ) + "']";
60
62
 
61
- // Return whatever we have found for labels
62
- return this.pushStack( labels );
63
- };
63
+ labels = labels.add( ancestors.find( selector ).addBack( selector ) );
64
64
 
65
- } ) );
65
+ }
66
+
67
+ // Return whatever we have found for labels
68
+ return this.pushStack( labels );
69
+ };
70
+
71
+ } );
@@ -1,6 +1,8 @@
1
1
  //= require jquery-ui/version
2
2
 
3
3
  ( function( factory ) {
4
+ "use strict";
5
+
4
6
  if ( typeof define === "function" && define.amd ) {
5
7
 
6
8
  // AMD. Register as an anonymous module.
@@ -10,7 +12,8 @@
10
12
  // Browser globals
11
13
  factory( jQuery );
12
14
  }
13
- } ( function( $ ) {
15
+ } )( function( $ ) {
16
+ "use strict";
14
17
 
15
18
  // $.ui.plugin is deprecated. Use $.widget() extensions instead.
16
19
  return $.ui.plugin = {
@@ -43,4 +46,4 @@ return $.ui.plugin = {
43
46
  }
44
47
  };
45
48
 
46
- } ) );
49
+ } );