aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2020-01-22 16:44:34 +0100
committerGitHub <noreply@github.com>2020-01-22 16:44:34 +0100
commit0c860b0d92f9959f6747f8c02e9671eb2fc561aa (patch)
treeeec1af4f3a9eead707e2674593bda620b5f7c9cb /ui
parent3481f50bfcf02865857d390a1caa511003a40c13 (diff)
downloadjquery-ui-0c860b0d92f9959f6747f8c02e9671eb2fc561aa.tar.gz
jquery-ui-0c860b0d92f9959f6747f8c02e9671eb2fc561aa.zip
All: Remove usage of jQuery positional selectors
jQuery positional selectors () have been deprecated in [jQuery 3.4.0](https://blog.jquery.com/2019/04/10/jquery-3-4-0-released/) and they'll be removed in jQuery 4.0.0. This PR removes their usage. Most of the changes were possible without changing public API. However, dropping `:even` usage required a change to the [`header` option](https://api.jqueryui.com/accordion/#option-header) of the accordion widget. I made it an optional function; this will need to be documented. The polyfill for `.even()` & `.odd()` is added for jQuery <3.5.0. There was no usage of the :odd selector in the code but the `.odd()` method is also polyfilled for completeness. Closes gh-1904
Diffstat (limited to 'ui')
-rw-r--r--ui/jquery-1-7.js17
-rw-r--r--ui/widgets/accordion.js10
-rw-r--r--ui/widgets/datepicker.js2
-rw-r--r--ui/widgets/dialog.js4
4 files changed, 28 insertions, 5 deletions
diff --git a/ui/jquery-1-7.js b/ui/jquery-1-7.js
index 5e7907a15..3d0870f7c 100644
--- a/ui/jquery-1-7.js
+++ b/ui/jquery-1-7.js
@@ -98,4 +98,21 @@ if ( !$.uniqueSort ) {
$.uniqueSort = $.unique;
}
+// Support: jQuery 3.4.x or older
+// These methods have been defined in jQuery 3.5.0.
+if ( !$.fn.even || !$.fn.odd ) {
+ $.fn.extend( {
+ even: function() {
+ return this.filter( function( i ) {
+ return i % 2 === 0;
+ } );
+ },
+ odd: function() {
+ return this.filter( function( i ) {
+ return i % 2 === 1;
+ } );
+ }
+ } );
+}
+
} ) );
diff --git a/ui/widgets/accordion.js b/ui/widgets/accordion.js
index 530d73543..59a6a7315 100644
--- a/ui/widgets/accordion.js
+++ b/ui/widgets/accordion.js
@@ -48,7 +48,9 @@ return $.widget( "ui.accordion", {
},
collapsible: false,
event: "click",
- header: "> li > :first-child, > :not(li):even",
+ header: function( elem ) {
+ return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
+ },
heightStyle: "auto",
icons: {
activeHeader: "ui-icon-triangle-1-s",
@@ -279,7 +281,11 @@ return $.widget( "ui.accordion", {
var prevHeaders = this.headers,
prevPanels = this.panels;
- this.headers = this.element.find( this.options.header );
+ if ( typeof this.options.header === "function" ) {
+ this.headers = this.options.header( this.element );
+ } else {
+ this.headers = this.element.find( this.options.header );
+ }
this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
"ui-state-default" );
diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js
index c777a4b0e..5e6321e1d 100644
--- a/ui/widgets/datepicker.js
+++ b/ui/widgets/datepicker.js
@@ -858,7 +858,7 @@ $.extend( Datepicker.prototype, {
//assure that inst.yearshtml didn't change.
if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
- inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
+ inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
}
origyearshtml = inst.yearshtml = null;
}, 0 );
diff --git a/ui/widgets/dialog.js b/ui/widgets/dialog.js
index e4798e0d7..c9feee48a 100644
--- a/ui/widgets/dialog.js
+++ b/ui/widgets/dialog.js
@@ -369,8 +369,8 @@ $.widget( "ui.dialog", {
return;
}
var tabbables = this.uiDialog.find( ":tabbable" ),
- first = tabbables.filter( ":first" ),
- last = tabbables.filter( ":last" );
+ first = tabbables.first(),
+ last = tabbables.last();
if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
!event.shiftKey ) {