From 1f251ca399ec01c75d24293e49ac767938a547e2 Mon Sep 17 00:00:00 2001
From: Timmy Willison
Date: Tue, 11 Jun 2024 12:05:06 -0400
Subject: [PATCH 01/53] Tests: remove testswarm grunt task
Closes gh-2263
---
build/tasks/testswarm.js | 115 ------------------------------------
tests/unit/position/core.js | 3 -
2 files changed, 118 deletions(-)
delete mode 100644 build/tasks/testswarm.js
diff --git a/build/tasks/testswarm.js b/build/tasks/testswarm.js
deleted file mode 100644
index 8ab2b7643c..0000000000
--- a/build/tasks/testswarm.js
+++ /dev/null
@@ -1,115 +0,0 @@
-"use strict";
-
-module.exports = function( grunt ) {
-
-var versions = {
- "git": "git",
- "3.x-git": "3.x-git",
- "3.7": "3.7.0",
- "3.6": "3.6.4",
- "3.5": "3.5.1",
- "3.4": "3.4.1",
- "3.3": "3.3.1",
- "3.2": "3.2.1",
- "3.1": "3.1.1",
- "3.0": "3.0.0",
- "2.2": "2.2.4",
- "2.1": "2.1.4",
- "2.0": "2.0.3",
- "1.12": "1.12.4",
- "1.11": "1.11.3",
- "1.10": "1.10.2",
- "1.9": "1.9.1",
- "1.8": "1.8.3"
- },
- tests = {
- "Accordion": "accordion/accordion.html",
- "Autocomplete": "autocomplete/autocomplete.html",
- "Button": "button/button.html",
- "Checkboxradio": "checkboxradio/checkboxradio.html",
- "Controlgroup": "controlgroup/controlgroup.html",
- "Core": "core/core.html",
- "Datepicker": "datepicker/datepicker.html",
- "Dialog": "dialog/dialog.html",
- "Draggable": "draggable/draggable.html",
- "Droppable": "droppable/droppable.html",
- "Effects": "effects/effects.html",
- "Form Reset Mixin": "form-reset-mixin/form-reset-mixin.html",
- "jQuery Patch": "jquery-patch/jquery-patch.html",
- "Menu": "menu/menu.html",
- "Position": "position/position.html",
- "Progressbar": "progressbar/progressbar.html",
- "Resizable": "resizable/resizable.html",
- "Selectable": "selectable/selectable.html",
- "Selectmenu": "selectmenu/selectmenu.html",
- "Slider": "slider/slider.html",
- "Sortable": "sortable/sortable.html",
- "Spinner": "spinner/spinner.html",
- "Tabs": "tabs/tabs.html",
- "Tooltip": "tooltip/tooltip.html",
- "Widget": "widget/widget.html"
- };
-
-function submit( commit, runs, configFile, browserSets, extra, done ) {
- var testName,
- testswarm = require( "testswarm" ),
- config = grunt.file.readJSON( configFile ).jqueryui,
- commitUrl = "https://github.com/jquery/jquery-ui/commit/" + commit;
-
- browserSets = browserSets || config.browserSets;
- if ( browserSets[ 0 ] === "[" ) {
-
- // We got an array, parse it
- browserSets = JSON.parse( browserSets );
- }
-
- if ( extra ) {
- extra = " (" + extra + ")";
- }
-
- for ( testName in runs ) {
- runs[ testName ] = config.testUrl + commit + "/tests/unit/" + runs[ testName ];
- }
-
- testswarm.createClient( {
- url: config.swarmUrl
- } )
- .addReporter( testswarm.reporters.cli )
- .auth( {
- id: config.authUsername,
- token: config.authToken
- } )
- .addjob( {
- name: "Commit " + commit.substr( 0, 10 ) + "" + extra,
- runs: runs,
- runMax: config.runMax,
- browserSets: browserSets,
- timeout: 1000 * 60 * 30
- }, function( error, passed ) {
- if ( error ) {
- grunt.log.error( error );
- }
- done( passed );
- } );
-}
-
-grunt.registerTask( "testswarm", function( commit, configFile, browserSets ) {
- var test,
- latestTests = {};
- for ( test in tests ) {
- latestTests[ test ] = tests[ test ];
- }
- submit( commit, latestTests, configFile, browserSets, "", this.async() );
-} );
-
-grunt.registerTask( "testswarm-multi-jquery", function( commit, configFile, minor, browserSets ) {
- var allTests = {};
- versions[ minor ].split( " " ).forEach( function( version ) {
- for ( var test in tests ) {
- allTests[ test + "-" + version ] = tests[ test ] + "?jquery=" + version;
- }
- } );
- submit( commit, allTests, configFile, browserSets, "core " + minor, this.async() );
-} );
-
-};
diff --git a/tests/unit/position/core.js b/tests/unit/position/core.js
index 9483e716de..ae016f34c3 100644
--- a/tests/unit/position/core.js
+++ b/tests/unit/position/core.js
@@ -396,8 +396,6 @@ QUnit.test( "collision: fit, no collision", function( assert ) {
}, "with offset" );
} );
-// Currently failing in IE8 due to the iframe used by TestSwarm
-if ( !/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ) ) {
QUnit.test( "collision: fit, collision", function( assert ) {
assert.expect( 2 + ( scrollTopSupport() ? 1 : 0 ) );
@@ -428,7 +426,6 @@ QUnit.test( "collision: fit, collision", function( assert ) {
win.scrollTop( 0 ).scrollLeft( 0 );
}
} );
-}
QUnit.test( "collision: flip, no collision", function( assert ) {
assert.expect( 2 );
From 376f142b9de42241a20efa9c89644ff5425da174 Mon Sep 17 00:00:00 2001
From: Ralf Koller <1665422+rpkoller@users.noreply.github.com>
Date: Fri, 14 Jun 2024 13:04:00 +0200
Subject: [PATCH 02/53] Dialog: Add aria-modal support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reflect the `modal` dialog option into the `aria-modal` attribute -
when `modal` is `true`, set `aria-modal` to `"true"`.
This helps some accessibility tools like VoiceOver with their rotor
functionality as it reduces the number of elements presented.
Fixes gh-2246
Closes gh-2257
Co-authored-by: Michał Gołębiowski-Owczarek
---
tests/unit/dialog/core.js | 33 +++++++++++++++++++++++++++++++++
ui/widgets/dialog.js | 7 ++++++-
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/tests/unit/dialog/core.js b/tests/unit/dialog/core.js
index d307504b80..c6bdec778c 100644
--- a/tests/unit/dialog/core.js
+++ b/tests/unit/dialog/core.js
@@ -84,6 +84,39 @@ QUnit.test( "ARIA", function( assert ) {
element.remove();
} );
+QUnit.test( "aria-modal", function( assert ) {
+ assert.expect( 9 );
+
+ var element, wrapper;
+
+ element = $( "" ).dialog( { modal: true } );
+ wrapper = element.dialog( "widget" );
+ assert.equal( wrapper.attr( "aria-modal" ), "true", "modal option set to true, aria-modal attribute added" );
+ element.dialog( "option", "modal", false );
+ assert.equal( wrapper.attr( "aria-modal" ), undefined, "modal option set to false, aria-modal attribute not added" );
+ element.dialog( "option", "modal", true );
+ assert.equal( wrapper.attr( "aria-modal" ), "true", "modal option set to true, aria-modal attribute added" );
+ element.remove();
+
+ element = $( "
" ).dialog( { modal: false } );
+ wrapper = element.dialog( "widget" );
+ assert.equal( wrapper.attr( "aria-modal" ), undefined, "modal option set to false, aria-modal attribute not added" );
+ element.dialog( "option", "modal", true );
+ assert.equal( wrapper.attr( "aria-modal" ), "true", "modal option set to true, aria-modal attribute added" );
+ element.dialog( "option", "modal", false );
+ assert.equal( wrapper.attr( "aria-modal" ), undefined, "modal option set to false, aria-modal attribute not added" );
+ element.remove();
+
+ element = $( "
" ).dialog();
+ wrapper = element.dialog( "widget" );
+ assert.equal( wrapper.attr( "aria-modal" ), undefined, "modal option not set, aria-modal attribute not added" );
+ element.dialog( "option", "modal", true );
+ assert.equal( wrapper.attr( "aria-modal" ), "true", "modal option set to true, aria-modal attribute added" );
+ element.dialog( "option", "modal", false );
+ assert.equal( wrapper.attr( "aria-modal" ), undefined, "modal option set to false, aria-modal attribute not added" );
+ element.remove();
+} );
+
QUnit.test( "widget method", function( assert ) {
assert.expect( 1 );
var dialog = $( "
" ).appendTo( "#qunit-fixture" ).dialog();
diff --git a/ui/widgets/dialog.js b/ui/widgets/dialog.js
index 4ba9d11176..756ad1cb10 100644
--- a/ui/widgets/dialog.js
+++ b/ui/widgets/dialog.js
@@ -347,7 +347,8 @@ $.widget( "ui.dialog", {
// Setting tabIndex makes the div focusable
tabIndex: -1,
- role: "dialog"
+ role: "dialog",
+ "aria-modal": this.options.modal ? "true" : null
} )
.appendTo( this._appendTo() );
@@ -762,6 +763,10 @@ $.widget( "ui.dialog", {
if ( key === "title" ) {
this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
}
+
+ if ( key === "modal" ) {
+ uiDialog.attr( "aria-modal", value ? "true" : null );
+ }
},
_size: function() {
From 04b0fd5ceee439dfe4eaaeb7df403620a374a0f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Fri, 14 Jun 2024 18:53:54 +0200
Subject: [PATCH 03/53] Build: Update AUTHORS.txt
---
AUTHORS.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 5fcf5d1e43..738af9c462 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -379,3 +379,4 @@ Timo Tijhof
Timmy Willison
divdeploy <166095818+divdeploy@users.noreply.github.com>
mark van tilburg
+Ralf Koller <1665422+rpkoller@users.noreply.github.com>
From 2f1f1eadf3b62e72d9fefc90606ab58f85f8d5d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Fri, 14 Jun 2024 18:56:20 +0200
Subject: [PATCH 04/53] Release: Update download.jqueryui.com from 2.2.14 to
2.3.4
---
build/release.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/release.js b/build/release.js
index d9ab580cb1..24ccb5b178 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.2.14",
+ "download.jqueryui.com@2.3.4",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
From b76883ad3f84b2bcd9a6910c4b41b4c35a355fad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Fri, 14 Jun 2024 19:05:41 +0200
Subject: [PATCH 05/53] Release: Fix the release script
---
build/release.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/release.js b/build/release.js
index 24ccb5b178..6cf0fa78ba 100644
--- a/build/release.js
+++ b/build/release.js
@@ -59,8 +59,8 @@ function addManifest( packager ) {
function buildCDNPackage( callback ) {
console.log( "Building CDN package" );
var JqueryUi = require( "download.jqueryui.com/lib/jquery-ui" );
- var PackageWithoutThemes = require( "download.jqueryui.com/lib/package-1-13" );
- var PackageOfThemes = require( "download.jqueryui.com/lib/package-1-13-themes" );
+ var PackageWithoutThemes = require( "download.jqueryui.com/lib/package" );
+ var PackageOfThemes = require( "download.jqueryui.com/lib/package-themes" );
var Packager = require( "node-packager" );
// PackageOfThemes doesn't contain JS files, PackageWithoutThemes doesn't contain themes;
From fdb5ee3a0f0fee66b981261a8e59c7f8d74c9f6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Sat, 15 Jun 2024 00:16:36 +0200
Subject: [PATCH 06/53] Release: Update download.jqueryui.com from 2.3.4 to
2.3.5
---
build/release.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/release.js b/build/release.js
index 6cf0fa78ba..0b95685100 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.3.4",
+ "download.jqueryui.com@2.3.5",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
From 2735f7d939012cc234ebce92ff0a43fa106ca523 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Sat, 15 Jun 2024 00:31:33 +0200
Subject: [PATCH 07/53] Release: Update download.jqueryui.com from 2.3.5 to
2.3.6
---
build/release.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/release.js b/build/release.js
index 0b95685100..a4e1b0d1b5 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.3.5",
+ "download.jqueryui.com@2.3.6",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
From 872c28a94ee3fdd4638af9b4a5ac1747366ce07a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Jul 2024 18:26:55 +0200
Subject: [PATCH 08/53] Build: Bump actions/checkout from 4.1.6 to 4.1.7
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/a5ac7e51b41094c92402da3b24376905380afc29...692973e3d937129bcbf40652eb9f2f61becf3332)
Closes gh-2266
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/filestash.yml | 2 +-
.github/workflows/node.js.yml | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/filestash.yml b/.github/workflows/filestash.yml
index f1016b5b53..487644ee98 100644
--- a/.github/workflows/filestash.yml
+++ b/.github/workflows/filestash.yml
@@ -17,7 +17,7 @@ jobs:
name: Update Filestash
steps:
- name: Checkout
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 18a5faf631..3e2bcda406 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
@@ -75,7 +75,7 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
@@ -116,7 +116,7 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
From 7f0e920a97cedbe6f18fe41d8363cb3a8ad67938 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Fri, 5 Jul 2024 18:53:40 +0200
Subject: [PATCH 09/53] Release: Update download.jqueryui.com from 2.3.6 to
2.3.7
---
build/release.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/release.js b/build/release.js
index a4e1b0d1b5..f2b2de03e6 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.3.6",
+ "download.jqueryui.com@2.3.7",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
From 5665215a8560832193735d9507a90d10e03b90c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 8 Jul 2024 19:04:44 +0200
Subject: [PATCH 10/53] Build: Group dependabot PRs updating GitHub Actions
We have monthly automatic dependabot PRs for GitHub Actions. Unfortunately,
as of now we get a separate PR for every dependency which is a bit spammy
compared to regular commits updating source.
Thankfully, there's now a way to tell dependabot to submit a single PR per
a defined group. This change defines a single group to have a single dependabot
PR for all action updates.
Closes gh-2267
Ref jquery/jquery#5503
---
.github/dependabot.yml | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 6fff16c794..aa2f745652 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -4,3 +4,10 @@ updates:
directory: "/"
schedule:
interval: monthly
+
+ # Group all dependabot version update PRs into one
+ groups:
+ github-actions:
+ applies-to: version-updates
+ patterns:
+ - "*"
From 600057f59c57fb428c0a453147476092741842c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Tue, 30 Jul 2024 08:31:10 +0200
Subject: [PATCH 11/53] Demos: Make autocomplete demos work on jqueryui.com
The `jqueryui.com` demos build process deAMDifies HTML files, replacing required
JS files with direct script tags. On the other hand, when running demos locally
from the jQuery UI repository, RequireJS is used.
This used to work fine until we got a new `search.js` file introduced in
gh-2187. The deAMDifying process doesn't touch non-HTML files which made loading
autocomplete demos crash on "require is not a function"
To resolve the issues without a major rearchitecture of the build process,
the `search.js` file now detects AMD and uses `require`, falling back to relying
on the `jQuery` global in the other case.
Closes gh-2274
Ref gh-2187
Ref jquery/jqueryui.com#216
---
demos/search.js | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/demos/search.js b/demos/search.js
index 448071cc9f..c6dddb80ef 100644
--- a/demos/search.js
+++ b/demos/search.js
@@ -1,5 +1,18 @@
-require( [ "jquery", ], function( $ ) {
+( function( factory ) {
"use strict";
+
+ if ( typeof define === "function" && define.amd ) {
+
+ // Fetch jQuery as an AMD dependency
+ require( [ "jquery" ], factory );
+ } else {
+
+ // Use the jQuery browser global
+ factory( jQuery );
+ }
+} )( function( $ ) {
+ "use strict";
+
var database = {
"Great Bittern" : "Botaurus stellaris",
"Little Grebe" : "Tachybaptus ruficollis",
From cd41c45d917d18839ab800816070db09a359d5bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Tue, 30 Jul 2024 17:53:47 +0200
Subject: [PATCH 12/53] Tests: Update jQuery Migrate from 3.4.1 to 3.5.2,
simplify Migrate setup
Apart from updating jQuery Migrate, the setup is now changed so that exact
Migrate versions are only references when fetching npm packages; other than
that, they're represented as `jquery-migrate-1.x` & `jquery-migrate-3.x`. This
will allow smaller changes when updating jQuery Migrate in the future.
Closes gh-2273
---
Gruntfile.js | 12 +--
bower.json | 4 +-
.../LICENSE.txt | 0
.../jquery-migrate.js | 0
.../LICENSE.txt | 0
.../jquery-migrate.js | 79 +++++++++++--------
tests/lib/bootstrap.js | 4 +-
7 files changed, 56 insertions(+), 43 deletions(-)
rename external/{jquery-migrate-1.4.1 => jquery-migrate-1.x}/LICENSE.txt (100%)
rename external/{jquery-migrate-1.4.1 => jquery-migrate-1.x}/jquery-migrate.js (100%)
rename external/{jquery-migrate-3.4.1 => jquery-migrate-3.x}/LICENSE.txt (100%)
rename external/{jquery-migrate-3.4.1 => jquery-migrate-3.x}/jquery-migrate.js (94%)
diff --git a/Gruntfile.js b/Gruntfile.js
index 05e83c9613..334e4bb1ae 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -316,13 +316,13 @@ grunt.initConfig( {
"jquery-3.7.1/jquery.js": "jquery-3.7.1/dist/jquery.js",
"jquery-3.7.1/LICENSE.txt": "jquery-3.7.1/LICENSE.txt",
- "jquery-migrate-1.4.1/jquery-migrate.js":
- "jquery-migrate-1.4.1/dist/jquery-migrate.js",
- "jquery-migrate-1.4.1/LICENSE.txt": "jquery-migrate-1.4.1/LICENSE.txt",
+ "jquery-migrate-1.x/jquery-migrate.js":
+ "jquery-migrate-1.x/dist/jquery-migrate.js",
+ "jquery-migrate-1.x/LICENSE.txt": "jquery-migrate-1.x/LICENSE.txt",
- "jquery-migrate-3.4.1/jquery-migrate.js":
- "jquery-migrate-3.4.1/dist/jquery-migrate.js",
- "jquery-migrate-3.4.1/LICENSE.txt": "jquery-migrate-3.4.1/LICENSE.txt"
+ "jquery-migrate-3.x/jquery-migrate.js":
+ "jquery-migrate-3.x/dist/jquery-migrate.js",
+ "jquery-migrate-3.x/LICENSE.txt": "jquery-migrate-3.x/LICENSE.txt"
}
}
},
diff --git a/bower.json b/bower.json
index 1efb14ee2f..eec454dea0 100644
--- a/bower.json
+++ b/bower.json
@@ -38,7 +38,7 @@
"jquery-3.6.4": "jquery#3.6.4",
"jquery-3.7.0": "jquery#3.7.0",
"jquery-3.7.1": "jquery#3.7.1",
- "jquery-migrate-1.4.1": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz",
- "jquery-migrate-3.4.1": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.4.1.tgz"
+ "jquery-migrate-1.x": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz",
+ "jquery-migrate-3.x": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.5.2.tgz"
}
}
diff --git a/external/jquery-migrate-1.4.1/LICENSE.txt b/external/jquery-migrate-1.x/LICENSE.txt
similarity index 100%
rename from external/jquery-migrate-1.4.1/LICENSE.txt
rename to external/jquery-migrate-1.x/LICENSE.txt
diff --git a/external/jquery-migrate-1.4.1/jquery-migrate.js b/external/jquery-migrate-1.x/jquery-migrate.js
similarity index 100%
rename from external/jquery-migrate-1.4.1/jquery-migrate.js
rename to external/jquery-migrate-1.x/jquery-migrate.js
diff --git a/external/jquery-migrate-3.4.1/LICENSE.txt b/external/jquery-migrate-3.x/LICENSE.txt
similarity index 100%
rename from external/jquery-migrate-3.4.1/LICENSE.txt
rename to external/jquery-migrate-3.x/LICENSE.txt
diff --git a/external/jquery-migrate-3.4.1/jquery-migrate.js b/external/jquery-migrate-3.x/jquery-migrate.js
similarity index 94%
rename from external/jquery-migrate-3.4.1/jquery-migrate.js
rename to external/jquery-migrate-3.x/jquery-migrate.js
index 5ef505ed92..edc32de392 100644
--- a/external/jquery-migrate-3.4.1/jquery-migrate.js
+++ b/external/jquery-migrate-3.x/jquery-migrate.js
@@ -1,5 +1,5 @@
/*!
- * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z
+ * jQuery Migrate - v3.5.2 - 2024-07-17T22:31Z
* Copyright OpenJS Foundation and other contributors
*/
( function( factory ) {
@@ -24,7 +24,7 @@
} )( function( jQuery, window ) {
"use strict";
-jQuery.migrateVersion = "3.4.1";
+jQuery.migrateVersion = "3.5.2";
// Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2
function compareVersions( v1, v2 ) {
@@ -84,26 +84,26 @@ jQuery.migrateIsPatchEnabled = function( patchCode ) {
( function() {
- // Support: IE9 only
- // IE9 only creates console object when dev tools are first opened
- // IE9 console is a host object, callable but doesn't have .apply()
- if ( !window.console || !window.console.log ) {
- return;
- }
+// Support: IE9 only
+// IE9 only creates console object when dev tools are first opened
+// IE9 console is a host object, callable but doesn't have .apply()
+if ( !window.console || !window.console.log ) {
+ return;
+}
- // Need jQuery 3.x-4.x and no older Migrate loaded
- if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
- jQueryVersionSince( "5.0.0" ) ) {
- window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" );
- }
- if ( jQuery.migrateWarnings ) {
- window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
- }
+// Need jQuery 3.x-4.x and no older Migrate loaded
+if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
+ jQueryVersionSince( "5.0.0" ) ) {
+ window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" );
+}
+if ( jQuery.migrateWarnings ) {
+ window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
+}
- // Show a message on the console so devs know we're active
- window.console.log( "JQMIGRATE: Migrate is installed" +
- ( jQuery.migrateMute ? "" : " with logging active" ) +
- ", version " + jQuery.migrateVersion );
+// Show a message on the console so devs know we're active
+window.console.log( "JQMIGRATE: Migrate is installed" +
+ ( jQuery.migrateMute ? "" : " with logging active" ) +
+ ", version " + jQuery.migrateVersion );
} )();
@@ -320,7 +320,8 @@ if ( jQueryVersionSince( "3.2.0" ) ) {
if ( jQueryVersionSince( "3.3.0" ) ) {
- migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) {
+ migratePatchAndWarnFunc( jQuery, "isNumeric",
+ function( obj ) {
// As of jQuery 3.0, isNumeric is limited to
// strings and numbers (primitives or objects)
@@ -417,6 +418,7 @@ if ( !jQueryVersionSince( "4.0.0" ) ) {
var oldRemoveAttr = jQuery.fn.removeAttr,
oldToggleClass = jQuery.fn.toggleClass,
+ rbooleans = /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
rmatchNonSpace = /\S+/g;
migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
@@ -424,7 +426,7 @@ migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
patchNeeded = false;
jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) {
- if ( jQuery.expr.match.bool.test( attr ) ) {
+ if ( rbooleans.test( attr ) ) {
// Only warn if at least a single node had the property set to
// something else than `false`. Otherwise, this Migrate patch
@@ -472,8 +474,8 @@ migratePatchFunc( jQuery.fn, "toggleClass", function( state ) {
if ( this.setAttribute ) {
this.setAttribute( "class",
className || state === false ?
- "" :
- jQuery.data( this, "__className__" ) || ""
+ "" :
+ jQuery.data( this, "__className__" ) || ""
);
}
} );
@@ -564,7 +566,7 @@ if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
}
// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:
-// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233
+// https://github.com/jquery/jquery/blob/3.7.1/src/css.js#L216-L246
// This way, number values for the CSS properties below won't start triggering
// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).
if ( jQueryVersionSince( "4.0.0" ) ) {
@@ -573,8 +575,9 @@ if ( jQueryVersionSince( "4.0.0" ) ) {
// in a `jQuery.fn.css` patch and this usage shouldn't warn.
internalCssNumber = {
animationIterationCount: true,
+ aspectRatio: true,
+ borderImageSlice: true,
columnCount: true,
- fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
@@ -589,9 +592,17 @@ if ( jQueryVersionSince( "4.0.0" ) ) {
opacity: true,
order: true,
orphans: true,
+ scale: true,
widows: true,
zIndex: true,
- zoom: true
+ zoom: true,
+
+ // SVG-related
+ fillOpacity: true,
+ floodOpacity: true,
+ stopOpacity: true,
+ strokeMiterlimit: true,
+ strokeOpacity: true
};
if ( typeof Proxy !== "undefined" ) {
@@ -837,16 +848,16 @@ jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
- function( _i, name ) {
+function( _i, name ) {
// Handle event binding
migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
- },
- "shorthand-deprecated-v3",
- "jQuery.fn." + name + "() event shorthand is deprecated" );
+ },
+ "shorthand-deprecated-v3",
+ "jQuery.fn." + name + "() event shorthand is deprecated" );
} );
// Trigger "ready" event only once, on document ready
@@ -898,9 +909,11 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\
* Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead.
* @deprecated
*/
-jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
+migratePatchAndWarnFunc( jQuery, "UNSAFE_restoreLegacyHtmlPrefilter", function() {
jQuery.migrateEnablePatches( "self-closed-tags" );
-};
+}, "legacy-self-closed-tags",
+"jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use " +
+ "`jQuery.migrateEnablePatches( \"self-closed-tags\" )`" );
migratePatchFunc( jQuery, "htmlPrefilter", function( html ) {
warnIfChanged( html );
diff --git a/tests/lib/bootstrap.js b/tests/lib/bootstrap.js
index c32d9765e6..2f1b7ef4b5 100644
--- a/tests/lib/bootstrap.js
+++ b/tests/lib/bootstrap.js
@@ -112,9 +112,9 @@ function migrateUrl() {
if ( jqueryVersion === "git" ) {
url = "https://releases.jquery.com/git/jquery-migrate-git";
} else if ( jqueryVersion[ 0 ] === "3" ) {
- url = "../../../external/jquery-migrate-3.4.1/jquery-migrate";
+ url = "../../../external/jquery-migrate-3.x/jquery-migrate";
} else if ( jqueryVersion[ 0 ] === "1" || jqueryVersion[ 0 ] === "2" ) {
- url = "../../../external/jquery-migrate-1.4.1/jquery-migrate";
+ url = "../../../external/jquery-migrate-1.x/jquery-migrate";
} else if ( jqueryVersion === "custom" ) {
if ( parseUrl().migrate ) {
throw new Error( "Migrate not currently supported for custom build" );
From a0c5b12e8291e40cf43c61844d50a5f7fdfe021a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 18:32:29 +0200
Subject: [PATCH 13/53] Build: Bump actions/setup-node from 4.0.2 to 4.0.3 in
the github-actions group
Bumps the github-actions group with 1 update: [actions/setup-node](https://github.com/actions/setup-node).
Updates `actions/setup-node` from 4.0.2 to 4.0.3
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/60edb5dd545a775178f52524783378180af0d1f8...1e60f620b9541d16bece96c5465dc8ee9832be0b)
Closes gh-2276
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/filestash.yml | 2 +-
.github/workflows/node.js.yml | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/filestash.yml b/.github/workflows/filestash.yml
index 487644ee98..be43834846 100644
--- a/.github/workflows/filestash.yml
+++ b/.github/workflows/filestash.yml
@@ -20,7 +20,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 3e2bcda406..84e1db7180 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -34,7 +34,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
@@ -78,7 +78,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
@@ -119,7 +119,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
From 02a6e6bcb004696b21324ef14c07374a56d7cd02 Mon Sep 17 00:00:00 2001
From: Porter Clevidence <116387727+porterclev@users.noreply.github.com>
Date: Mon, 5 Aug 2024 10:30:53 -0700
Subject: [PATCH 14/53] Datepicker: Hide the UI on destroy
When the datepicker UI is shown and then destroyed programmatically:
```js
$( "#datepicker" ).datepicker( "destroy" );
```
hide the datepicker UI without the need for an explicit user action.
Previously, in 1.12 the UI would not disappear immediately but only after the
first `mousedown`. In later 1.13 versions, the UI would not disappear at all.
Fixes gh-2178
Closes gh-2268
---
tests/unit/datepicker/methods.js | 11 ++++++++++-
ui/widgets/datepicker.js | 1 +
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/tests/unit/datepicker/methods.js b/tests/unit/datepicker/methods.js
index 32d6117488..ec83fb791b 100644
--- a/tests/unit/datepicker/methods.js
+++ b/tests/unit/datepicker/methods.js
@@ -11,7 +11,7 @@ var beforeAfterEach = testHelper.beforeAfterEach;
QUnit.module( "datepicker: methods", beforeAfterEach() );
QUnit.test( "destroy", function( assert ) {
- assert.expect( 35 );
+ assert.expect( 39 );
var inl,
inp = testHelper.init( "#inp" ),
dp = $( "#ui-datepicker-div" );
@@ -21,6 +21,15 @@ QUnit.test( "destroy", function( assert ) {
assert.equal( dp.css( "display" ), "block", "Datepicker - visible" );
inp.datepicker( "hide" ).datepicker( "destroy" );
assert.ok( $.datepicker._curInst == null, "Datepicker - destroyed and cleared reference" );
+ assert.equal( dp.css( "display" ), "none", "Datepicker - absent" );
+
+ // Destroy without manual hiding (ensure datepicker is hidden after calling destroy)
+ inp = testHelper.init( "#inp" );
+ inp.datepicker( "show" );
+ assert.equal( dp.css( "display" ), "block", "Datepicker - visible" );
+ inp.datepicker( "destroy" );
+ assert.ok( $.datepicker._curInst == null, "Datepicker - destroyed and cleared reference" );
+ assert.equal( dp.css( "display" ), "none", "Datepicker - absent" );
inp = testHelper.init( "#inp" );
assert.ok( inp.is( ".hasDatepicker" ), "Default - marker class set" );
diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js
index 6057605721..323723b893 100644
--- a/ui/widgets/datepicker.js
+++ b/ui/widgets/datepicker.js
@@ -435,6 +435,7 @@ $.extend( Datepicker.prototype, {
$target.removeClass( this.markerClassName ).empty();
}
+ $.datepicker._hideDatepicker();
if ( datepicker_instActive === inst ) {
datepicker_instActive = null;
this._curInst = null;
From 2fb378e86094a3afc2436a536371a33697277e2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Mon, 5 Aug 2024 19:54:51 +0200
Subject: [PATCH 15/53] Docs: Update AUTHORS.txt
---
AUTHORS.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 738af9c462..5b10979cae 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -380,3 +380,4 @@ Timmy Willison
divdeploy <166095818+divdeploy@users.noreply.github.com>
mark van tilburg
Ralf Koller <1665422+rpkoller@users.noreply.github.com>
+Porter Clevidence <116387727+porterclev@users.noreply.github.com>
From 1e67c0d5934cf92c261d557963681010c9750fda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Mon, 5 Aug 2024 20:58:10 +0200
Subject: [PATCH 16/53] Build: Updating the main version to 1.14.1-pre.
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 76ae6b05d4..81e5375251 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jquery-ui",
"title": "jQuery UI",
"description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
- "version": "1.14.0-pre",
+ "version": "1.14.1-pre",
"homepage": "https://jqueryui.com",
"author": {
"name": "OpenJS Foundation and other contributors",
From 54f96eea31b21d9ecb00912261df3e5aaebf8cce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Mon, 5 Aug 2024 22:52:56 +0200
Subject: [PATCH 17/53] Release: Update download.jqueryui.com from 2.3.7 to
2.3.10
---
build/release.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/release.js b/build/release.js
index f2b2de03e6..14fbd6f153 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.3.7",
+ "download.jqueryui.com@2.3.10",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
From fd1b8a03b22411e68e703426fb85a2566318623d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 9 Sep 2024 17:52:53 +0200
Subject: [PATCH 18/53] Tests: Properly check `$.uiBackCompat` in common widget
tests
The "common widget" tests, checking if a widget doesn't overwrite some
core widget APIs wasn't running as it was incorrectly checking for
`$.uiBackCompat === false` instead of `$.uiBackCompat !== true` after the
default changed in gh-2250.
Fixing the check uncovered that the draggable & sortable modules do
overwrite the `_trigger` method. Add an exception in the test for that;
at this stage of the project we don't plan to change the implementation.
Closes gh-2286
Ref gh-2250
---
tests/lib/common.js | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/tests/lib/common.js b/tests/lib/common.js
index 56b7a3ff38..ba78fb6f63 100644
--- a/tests/lib/common.js
+++ b/tests/lib/common.js
@@ -34,7 +34,7 @@ function testWidgetDefaults( widget, defaults ) {
}
function testWidgetOverrides( widget ) {
- if ( $.uiBackCompat === false ) {
+ if ( $.uiBackCompat !== true ) {
QUnit.test( "$.widget overrides", function( assert ) {
assert.expect( 4 );
$.each( [
@@ -43,8 +43,19 @@ function testWidgetOverrides( widget ) {
"option",
"_trigger"
], function( i, method ) {
- assert.strictEqual( $.ui[ widget ].prototype[ method ],
- $.Widget.prototype[ method ], "should not override " + method );
+
+ if ( method === "_trigger" &&
+ /^(?:draggable|sortable): common widget$/
+ .test( assert.test.module.name ) ) {
+
+ // Draggable & sortable modules overwrite _trigger. They
+ // should not, but we don't plan to change the API at this
+ // stage of the project.
+ assert.ok( true, "draggable & sortable modules overwrite _trigger" );
+ } else {
+ assert.strictEqual( $.ui[ widget ].prototype[ method ],
+ $.Widget.prototype[ method ], "should not override " + method );
+ }
} );
} );
}
From d564731f20a5eee6c6e373344a2bd6fc9d047e63 Mon Sep 17 00:00:00 2001
From: Ralf Koller <1665422+rpkoller@users.noreply.github.com>
Date: Mon, 9 Sep 2024 17:55:58 +0200
Subject: [PATCH 19/53] Dialog: Add option to put the dialog title in a header
element
Implement a new option: `uiDialogTitleHeadingLevel`, allowing to change
the `span` wrapping the dialog title into a heading element (`h1`-`h6`).
Value `0` represents the `span`, values 1-6 - a heading at the specified
level.
Fixes gh-2271
Closes gh-2275
---
tests/unit/dialog/common-deprecated.js | 1 +
tests/unit/dialog/common.js | 1 +
tests/unit/dialog/core.js | 38 ++++++++++++++++++++++++++
ui/widgets/dialog.js | 9 +++++-
4 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/tests/unit/dialog/common-deprecated.js b/tests/unit/dialog/common-deprecated.js
index 1efdcb0301..2cdae9681d 100644
--- a/tests/unit/dialog/common-deprecated.js
+++ b/tests/unit/dialog/common-deprecated.js
@@ -34,6 +34,7 @@ common.testWidget( "dialog", {
resizable: true,
show: null,
title: null,
+ uiDialogTitleHeadingLevel: 0,
width: 300,
// Callbacks
diff --git a/tests/unit/dialog/common.js b/tests/unit/dialog/common.js
index c8d885ad03..f311810476 100644
--- a/tests/unit/dialog/common.js
+++ b/tests/unit/dialog/common.js
@@ -33,6 +33,7 @@ common.testWidget( "dialog", {
resizable: true,
show: null,
title: null,
+ uiDialogTitleHeadingLevel: 0,
width: 300,
// Callbacks
diff --git a/tests/unit/dialog/core.js b/tests/unit/dialog/core.js
index c6bdec778c..a8cc9678e5 100644
--- a/tests/unit/dialog/core.js
+++ b/tests/unit/dialog/core.js
@@ -117,6 +117,44 @@ QUnit.test( "aria-modal", function( assert ) {
element.remove();
} );
+QUnit.test( "ui dialog title heading level", function( assert ) {
+ assert.expect( 8 );
+
+ var element, nodeName;
+
+ element = $( "" ).dialog( { modal: true } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: 0 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: 1 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "h1", "Element wrapping the dialog title is h1" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: 6 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "h6", "Element wrapping the dialog title is h6" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: 9 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: -9 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: 2.3 } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+
+ element = $( "
" ).dialog( { modal: true, uiDialogTitleHeadingLevel: "foo" } );
+ nodeName = element.dialog( "widget" ).find( ".ui-dialog-title" ).get( 0 ).nodeName.toLowerCase();
+ assert.equal( nodeName, "span", "Element wrapping the dialog title is span" );
+} );
+
QUnit.test( "widget method", function( assert ) {
assert.expect( 1 );
var dialog = $( "
" ).appendTo( "#qunit-fixture" ).dialog();
diff --git a/ui/widgets/dialog.js b/ui/widgets/dialog.js
index 756ad1cb10..1ef2fa3d6f 100644
--- a/ui/widgets/dialog.js
+++ b/ui/widgets/dialog.js
@@ -81,6 +81,7 @@ $.widget( "ui.dialog", {
resizable: true,
show: null,
title: null,
+ uiDialogTitleHeadingLevel: 0,
width: 300,
// Callbacks
@@ -437,7 +438,13 @@ $.widget( "ui.dialog", {
}
} );
- uiDialogTitle = $( "
" ).uniqueId().prependTo( this.uiDialogTitlebar );
+ var uiDialogHeadingLevel = Number.isInteger( this.options.uiDialogTitleHeadingLevel ) &&
+ this.options.uiDialogTitleHeadingLevel > 0 &&
+ this.options.uiDialogTitleHeadingLevel <= 6 ?
+ "h" + this.options.uiDialogTitleHeadingLevel : "span";
+
+ uiDialogTitle = $( "<" + uiDialogHeadingLevel + ">" )
+ .uniqueId().prependTo( this.uiDialogTitlebar );
this._addClass( uiDialogTitle, "ui-dialog-title" );
this._title( uiDialogTitle );
From c934995efa431efe0b15b6f9a6b614e6b8e88399 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Garc=C3=ADa?=
<93217193+Daniel-Garmig@users.noreply.github.com>
Date: Mon, 9 Sep 2024 23:51:57 +0200
Subject: [PATCH 20/53] Resizable: Fix content shrink on resize
Make resizable elements not shrink on resize when they have scrollbars
and "box-sizing: content-box".
Fixes: gh-2277
Closes gh-2281
---
tests/unit/resizable/core.js | 68 ++++++++++++++++++++++++++++
tests/unit/resizable/options.js | 62 +++++++++++++++++++++++---
ui/widgets/resizable.js | 78 ++++++++++++++++++++++++++++-----
3 files changed, 191 insertions(+), 17 deletions(-)
diff --git a/tests/unit/resizable/core.js b/tests/unit/resizable/core.js
index b3c61514a9..b47f0b645f 100644
--- a/tests/unit/resizable/core.js
+++ b/tests/unit/resizable/core.js
@@ -244,4 +244,72 @@ QUnit.test( "nested resizable", function( assert ) {
outer.remove();
} );
+QUnit.test( "Resizable with scrollbars and box-sizing: border-box", function( assert ) {
+ assert.expect( 4 );
+ testResizableWithBoxSizing( assert, {
+ isBorderBox: true,
+ applyScaleTransform: false
+ } );
+} );
+
+QUnit.test( "Resizable with scrollbars and box-sizing: content-box", function( assert ) {
+ assert.expect( 4 );
+ testResizableWithBoxSizing( assert, {
+ isBorderBox: false,
+ applyScaleTransform: false
+ } );
+} );
+
+QUnit.test( "Resizable with scrollbars, a transform and box-sizing: border-box", function( assert ) {
+ assert.expect( 4 );
+ testResizableWithBoxSizing( assert, {
+ isBorderBox: true,
+ applyScaleTransform: true
+ } );
+} );
+
+QUnit.test( "Resizable with scrollbars, a transform and box-sizing: content-box", function( assert ) {
+ assert.expect( 4 );
+ testResizableWithBoxSizing( assert, {
+ isBorderBox: false,
+ applyScaleTransform: true
+ } );
+} );
+
+function testResizableWithBoxSizing( assert, options ) {
+ var widthBefore, heightBefore,
+ cssBoxSizing = options.isBorderBox ? "border-box" : "content-box",
+ cssTransform = options.applyScaleTransform ? "scale(1.5)" : "",
+ elementContent = $( "" )
+ .css( {
+ width: "200px",
+ height: "200px",
+ padding: "10px",
+ border: "5px",
+ borderStyle: "solid",
+ margin: "20px"
+ } )
+ .appendTo( "#resizable1" ),
+ element = $( "#resizable1" ).css( { overflow: "auto", transform: cssTransform } ).resizable(),
+ handle = ".ui-resizable-se";
+
+ $( "" ).appendTo( "#qunit-fixture" );
+
+ // In some browsers scrollbar may change element size (when "box-sizing: content-box")
+ widthBefore = element.innerWidth();
+ heightBefore = element.innerHeight();
+
+ // Both scrollbars
+ testHelper.drag( handle, 10, 10 );
+ assert.equal( parseFloat( element.innerWidth() ), widthBefore + 10, "element width (both scrollbars)" );
+ assert.equal( parseFloat( element.innerHeight() ), heightBefore + 10, "element height (both scrollbars)" );
+
+ // Single (vertical) scrollbar.
+ elementContent.css( "width", "50px" );
+
+ testHelper.drag( handle, 10, 10 );
+ assert.equal( parseFloat( element.innerWidth() ), widthBefore + 20, "element width (only vertical scrollbar)" );
+ assert.equal( parseFloat( element.innerHeight() ), heightBefore + 20, "element height (only vertical scrollbar)" );
+}
+
} );
diff --git a/tests/unit/resizable/options.js b/tests/unit/resizable/options.js
index add8d80344..b80c051d58 100644
--- a/tests/unit/resizable/options.js
+++ b/tests/unit/resizable/options.js
@@ -542,21 +542,22 @@ QUnit.test( "alsoResize + multiple selection", function( assert ) {
QUnit.test( "alsoResize with box-sizing: border-box", function( assert ) {
assert.expect( 4 );
+ $( "" ).appendTo( "#qunit-fixture" );
+
var other = $( "
" )
.css( {
- width: 50,
- height: 50,
- padding: 10,
- border: 5
+ width: "50px",
+ height: "50px",
+ padding: "10px",
+ border: "5px",
+ borderStyle: "solid"
} )
- .appendTo( "body" ),
+ .appendTo( "#qunit-fixture" ),
element = $( "#resizable1" ).resizable( {
alsoResize: other
} ),
handle = ".ui-resizable-se";
- $( "*" ).css( "box-sizing", "border-box" );
-
testHelper.drag( handle, 80, 80 );
assert.equal( element.width(), 180, "resizable width" );
@@ -565,4 +566,51 @@ QUnit.test( "alsoResize with box-sizing: border-box", function( assert ) {
assert.equal( parseFloat( other.css( "height" ) ), 130, "alsoResize height" );
} );
+QUnit.test( "alsoResize with scrollbars and box-sizing: border-box", function( assert ) {
+ assert.expect( 4 );
+ testAlsoResizeWithBoxSizing( assert, {
+ isBorderBox: true
+ } );
+} );
+
+QUnit.test( "alsoResize with scrollbars and box-sizing: content-box", function( assert ) {
+ assert.expect( 4 );
+ testAlsoResizeWithBoxSizing( assert, {
+ isBorderBox: false
+ } );
+} );
+
+function testAlsoResizeWithBoxSizing( assert, options ) {
+ var widthBefore, heightBefore,
+ cssBoxSizing = options.isBorderBox ? "border-box" : "content-box",
+ other = $( "
" )
+ .css( {
+ width: "150px",
+ height: "150px",
+ padding: "10px",
+ border: "5px",
+ borderStyle: "solid",
+ margin: "20px",
+ overflow: "scroll"
+ } )
+ .appendTo( "#qunit-fixture" ),
+ element = $( "#resizable1" ).resizable( {
+ alsoResize: other
+ } ),
+ handle = ".ui-resizable-se";
+
+ $( "" ).appendTo( "#qunit-fixture" );
+
+ // In some browsers scrollbar may change element computed size.
+ widthBefore = other.innerWidth();
+ heightBefore = other.innerHeight();
+
+ testHelper.drag( handle, 80, 80 );
+
+ assert.equal( element.width(), 180, "resizable width" );
+ assert.equal( parseFloat( other.innerWidth() ), widthBefore + 80, "alsoResize width" );
+ assert.equal( element.height(), 180, "resizable height" );
+ assert.equal( parseFloat( other.innerHeight() ), heightBefore + 80, "alsoResize height" );
+}
+
} );
diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js
index 1698d55e8b..6f1e0ebdec 100644
--- a/ui/widgets/resizable.js
+++ b/ui/widgets/resizable.js
@@ -80,12 +80,18 @@ $.widget( "ui.resizable", $.ui.mouse, {
_hasScroll: function( el, a ) {
- if ( $( el ).css( "overflow" ) === "hidden" ) {
+ var scroll,
+ has = false,
+ overflow = $( el ).css( "overflow" );
+
+ if ( overflow === "hidden" ) {
return false;
}
+ if ( overflow === "scroll" ) {
+ return true;
+ }
- var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
- has = false;
+ scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop";
if ( el[ scroll ] > 0 ) {
return true;
@@ -362,7 +368,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
_mouseStart: function( event ) {
- var curleft, curtop, cursor,
+ var curleft, curtop, cursor, calculatedSize,
o = this.options,
el = this.element;
@@ -381,20 +387,24 @@ $.widget( "ui.resizable", $.ui.mouse, {
this.offset = this.helper.offset();
this.position = { left: curleft, top: curtop };
+ if ( !this._helper ) {
+ calculatedSize = this._calculateAdjustedElementDimensions( el );
+ }
+
this.size = this._helper ? {
width: this.helper.width(),
height: this.helper.height()
} : {
- width: el.width(),
- height: el.height()
+ width: calculatedSize.width,
+ height: calculatedSize.height
};
this.originalSize = this._helper ? {
width: el.outerWidth(),
height: el.outerHeight()
} : {
- width: el.width(),
- height: el.height()
+ width: calculatedSize.width,
+ height: calculatedSize.height
};
this.sizeDiff = {
@@ -690,6 +700,52 @@ $.widget( "ui.resizable", $.ui.mouse, {
};
},
+ _calculateAdjustedElementDimensions: function( element ) {
+ var elWidth, elHeight, paddingBorder,
+ ce = element.get( 0 );
+
+ if ( element.css( "box-sizing" ) !== "content-box" ||
+ ( !this._hasScroll( ce ) && !this._hasScroll( ce, "left" ) ) ) {
+ return {
+ height: parseFloat( element.css( "height" ) ),
+ width: parseFloat( element.css( "width" ) )
+ };
+ }
+
+ // Check if CSS inline styles are set and use those (usually from previous resizes)
+ elWidth = parseFloat( ce.style.width );
+ elHeight = parseFloat( ce.style.height );
+
+ paddingBorder = this._getPaddingPlusBorderDimensions( element );
+ elWidth = isNaN( elWidth ) ?
+ this._getElementTheoreticalSize( element, paddingBorder, "width" ) :
+ elWidth;
+ elHeight = isNaN( elHeight ) ?
+ this._getElementTheoreticalSize( element, paddingBorder, "height" ) :
+ elHeight;
+
+ return {
+ height: elHeight,
+ width: elWidth
+ };
+ },
+
+ _getElementTheoreticalSize: function( element, extraSize, dimension ) {
+
+ // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
+ var size = Math.max( 0, Math.ceil(
+ element.get( 0 )[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
+ extraSize[ dimension ] -
+ 0.5
+
+ // If offsetWidth/offsetHeight is unknown, then we can't determine theoretical size.
+ // Use an explicit zero to avoid NaN.
+ // See https://github.com/jquery/jquery/issues/3964
+ ) ) || 0;
+
+ return size;
+ },
+
_proportionallyResize: function() {
if ( !this._proportionallyResizeElements.length ) {
@@ -1044,9 +1100,11 @@ $.ui.plugin.add( "resizable", "alsoResize", {
o = that.options;
$( o.alsoResize ).each( function() {
- var el = $( this );
+ var el = $( this ),
+ elSize = that._calculateAdjustedElementDimensions( el );
+
el.data( "ui-resizable-alsoresize", {
- width: parseFloat( el.css( "width" ) ), height: parseFloat( el.css( "height" ) ),
+ width: elSize.width, height: elSize.height,
left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
} );
} );
From 36ed9fc3b0f0ce348a360e8a10500475337368b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 16 Sep 2024 17:16:40 +0200
Subject: [PATCH 21/53] Effect: Remove demos & visual tests of the transfer
effect
The transfer effect is deprecated and not present unless `$.uiBackCompat` is set
to `true`. In previous UI versions, the default was including the backwards
compat layer so these demos & tests worked; now they do not by default. Just
remove them.
Fixes gh-2278
Closes gh-2291
---
demos/effect/default.html | 4 ----
tests/visual/effects/all.html | 6 ------
tests/visual/effects/effects.js | 8 --------
3 files changed, 18 deletions(-)
diff --git a/demos/effect/default.html b/demos/effect/default.html
index 7d69abb2d7..289d5df7ff 100644
--- a/demos/effect/default.html
+++ b/demos/effect/default.html
@@ -11,7 +11,6 @@
#button { padding: .5em 1em; text-decoration: none; }
#effect { width: 240px; height: 170px; padding: 0.4em; position: relative; }
#effect h3 { margin: 0; padding: 0.4em; text-align: center; }
- .ui-effects-transfer { border: 2px dotted gray; }
-
.toggler { width: 500px; height: 200px; position: relative; }
From eab06ed31da44e60f2db9e760cb613bf8f5231f1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2024 00:16:34 +0200
Subject: [PATCH 24/53] Build: Bump the github-actions group with 2 updates
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-node](https://github.com/actions/setup-node).
Updates `actions/checkout` from 4.1.7 to 4.2.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...d632683dd7b4114ad314bca15554477dd762a938)
Updates `actions/setup-node` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/1e60f620b9541d16bece96c5465dc8ee9832be0b...0a44ba7841725637a19e28fa30b79a866c81b0a6)
Closes gh-2299
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
- dependency-name: actions/setup-node
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/filestash.yml | 4 ++--
.github/workflows/node.js.yml | 12 ++++++------
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/filestash.yml b/.github/workflows/filestash.yml
index be43834846..f3944447a8 100644
--- a/.github/workflows/filestash.yml
+++ b/.github/workflows/filestash.yml
@@ -17,10 +17,10 @@ jobs:
name: Update Filestash
steps:
- name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
+ uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version: ${{ env.NODE_VERSION }}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 84e1db7180..22116c7dab 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -31,10 +31,10 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
+ uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version: ${{ env.NODE_VERSION }}
@@ -75,10 +75,10 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
+ uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version: ${{ env.NODE_VERSION }}
@@ -116,10 +116,10 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
+ uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version: ${{ env.NODE_VERSION }}
From 2eebdaf506c3c242f224fedbdb44dfb9f1bf8f8a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 15 Oct 2024 00:10:49 +0200
Subject: [PATCH 25/53] Build: Bump body-parser from 1.20.2 to 1.20.3
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3)
Closes gh-2294
---
updated-dependencies:
- dependency-name: body-parser
dependency-type: direct:development
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 81e5375251..cc8b14a9a8 100644
--- a/package.json
+++ b/package.json
@@ -55,7 +55,7 @@
"jquery": ">=1.12.0 <5.0.0"
},
"devDependencies": {
- "body-parser": "1.20.2",
+ "body-parser": "1.20.3",
"browserstack-local": "1.5.5",
"commitplease": "3.2.0",
"diff": "5.2.0",
From 3934c68dee9ad5c7f037361e9d8b02215c1296bd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 15 Oct 2024 00:11:21 +0200
Subject: [PATCH 26/53] Build: Bump express from 4.19.2 to 4.20.0
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.20.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0)
Closes gh-2293
---
updated-dependencies:
- dependency-name: express
dependency-type: direct:development
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index cc8b14a9a8..f9f83b4025 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"diff": "5.2.0",
"eslint-config-jquery": "3.0.2",
"exit-hook": "4.0.0",
- "express": "4.19.2",
+ "express": "4.20.0",
"express-body-parser-error-handler": "1.0.7",
"grunt": "1.6.1",
"grunt-bowercopy": "1.2.5",
From 49bb397606b476eacd9df2bda0388795a22fa59a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Thu, 17 Oct 2024 23:47:29 +0200
Subject: [PATCH 27/53] Build: Fix the ESLint config for demos
The ESLint config for `demos` extends the one for the `ui` directory. However,
the `ui` one used to not be a root one, making the `demos` one effectively not
depend on the `jquery` preset. Fix that and fix lots of lint violations in
`demos/search.js`.
Closes gh-2303
---
demos/.eslintrc.json | 6 +-
demos/search.js | 1154 +++++++++++++++++++++---------------------
ui/.eslintrc.json | 4 +
3 files changed, 586 insertions(+), 578 deletions(-)
diff --git a/demos/.eslintrc.json b/demos/.eslintrc.json
index da1cb6b909..805ec8eb26 100644
--- a/demos/.eslintrc.json
+++ b/demos/.eslintrc.json
@@ -1,5 +1,9 @@
{
"root": true,
- "extends": "../ui/.eslintrc.json"
+ "extends": "../ui/.eslintrc.json",
+
+ "globals": {
+ "require": true
+ }
}
diff --git a/demos/search.js b/demos/search.js
index c6dddb80ef..d3a1d8c232 100644
--- a/demos/search.js
+++ b/demos/search.js
@@ -14,569 +14,569 @@
"use strict";
var database = {
- "Great Bittern" : "Botaurus stellaris",
- "Little Grebe" : "Tachybaptus ruficollis",
- "Black-necked Grebe" : "Podiceps nigricollis",
- "Little Bittern" : "Ixobrychus minutus",
- "Black-crowned Night Heron" : "Nycticorax nycticorax",
- "Purple Heron" : "Ardea purpurea",
- "White Stork" : "Ciconia ciconia",
- "Spoonbill" : "Platalea leucorodia",
- "Red-crested Pochard" : "Netta rufina",
- "Common Eider" : "Somateria mollissima",
- "Red Kite" : "Milvus milvus",
- "Hen Harrier" : "Circus cyaneus",
- "Montagu`s Harrier" : "Circus pygargus",
- "Black Grouse" : "Tetrao tetrix",
- "Grey Partridge" : "Perdix perdix",
- "Spotted Crake" : "Porzana porzana",
- "Corncrake" : "Crex crex",
- "Common Crane" : "Grus grus",
- "Avocet" : "Recurvirostra avosetta",
- "Stone Curlew" : "Burhinus oedicnemus",
- "Common Ringed Plover" : "Charadrius hiaticula",
- "Kentish Plover" : "Charadrius alexandrinus",
- "Ruff" : "Philomachus pugnax",
- "Common Snipe" : "Gallinago gallinago",
- "Black-tailed Godwit" : "Limosa limosa",
- "Common Redshank" : "Tringa totanus",
- "Sandwich Tern" : "Sterna sandvicensis",
- "Common Tern" : "Sterna hirundo",
- "Arctic Tern" : "Sterna paradisaea",
- "Little Tern" : "Sternula albifrons",
- "Black Tern" : "Chlidonias niger",
- "Barn Owl" : "Tyto alba",
- "Little Owl" : "Athene noctua",
- "Short-eared Owl" : "Asio flammeus",
- "European Nightjar" : "Caprimulgus europaeus",
- "Common Kingfisher" : "Alcedo atthis",
- "Eurasian Hoopoe" : "Upupa epops",
- "Eurasian Wryneck" : "Jynx torquilla",
- "European Green Woodpecker" : "Picus viridis",
- "Crested Lark" : "Galerida cristata",
- "White-headed Duck" : "Oxyura leucocephala",
- "Pale-bellied Brent Goose" : "Branta hrota",
- "Tawny Pipit" : "Anthus campestris",
- "Whinchat" : "Saxicola rubetra",
- "European Stonechat" : "Saxicola rubicola",
- "Northern Wheatear" : "Oenanthe oenanthe",
- "Savi`s Warbler" : "Locustella luscinioides",
- "Sedge Warbler" : "Acrocephalus schoenobaenus",
- "Great Reed Warbler" : "Acrocephalus arundinaceus",
- "Bearded Reedling" : "Panurus biarmicus",
- "Red-backed Shrike" : "Lanius collurio",
- "Great Grey Shrike" : "Lanius excubitor",
- "Woodchat Shrike" : "Lanius senator",
- "Common Raven" : "Corvus corax",
- "Yellowhammer" : "Emberiza citrinella",
- "Ortolan Bunting" : "Emberiza hortulana",
- "Corn Bunting" : "Emberiza calandra",
- "Great Cormorant" : "Phalacrocorax carbo",
- "Hawfinch" : "Coccothraustes coccothraustes",
- "Common Shelduck" : "Tadorna tadorna",
- "Bluethroat" : "Luscinia svecica",
- "Grey Heron" : "Ardea cinerea",
- "Barn Swallow" : "Hirundo rustica",
- "Hooded Crow" : "Corvus cornix",
- "Dunlin" : "Calidris alpina",
- "Eurasian Pied Flycatcher" : "Ficedula hypoleuca",
- "Eurasian Nuthatch" : "Sitta europaea",
- "Short-toed Tree Creeper" : "Certhia brachydactyla",
- "Wood Lark" : "Lullula arborea",
- "Tree Pipit" : "Anthus trivialis",
- "Eurasian Hobby" : "Falco subbuteo",
- "Marsh Warbler" : "Acrocephalus palustris",
- "Wood Sandpiper" : "Tringa glareola",
- "Tawny Owl" : "Strix aluco",
- "Lesser Whitethroat" : "Sylvia curruca",
- "Barnacle Goose" : "Branta leucopsis",
- "Common Goldeneye" : "Bucephala clangula",
- "Western Marsh Harrier" : "Circus aeruginosus",
- "Common Buzzard" : "Buteo buteo",
- "Sanderling" : "Calidris alba",
- "Little Gull" : "Larus minutus",
- "Eurasian Magpie" : "Pica pica",
- "Willow Warbler" : "Phylloscopus trochilus",
- "Wood Warbler" : "Phylloscopus sibilatrix",
- "Great Crested Grebe" : "Podiceps cristatus",
- "Eurasian Jay" : "Garrulus glandarius",
- "Common Redstart" : "Phoenicurus phoenicurus",
- "Blue-headed Wagtail" : "Motacilla flava",
- "Common Swift" : "Apus apus",
- "Marsh Tit" : "Poecile palustris",
- "Goldcrest" : "Regulus regulus",
- "European Golden Plover" : "Pluvialis apricaria",
- "Eurasian Bullfinch" : "Pyrrhula pyrrhula",
- "Common Whitethroat" : "Sylvia communis",
- "Meadow Pipit" : "Anthus pratensis",
- "Greylag Goose" : "Anser anser",
- "Spotted Flycatcher" : "Muscicapa striata",
- "European Greenfinch" : "Carduelis chloris",
- "Common Greenshank" : "Tringa nebularia",
- "Great Spotted Woodpecker" : "Dendrocopos major",
- "Greater Canada Goose" : "Branta canadensis",
- "Mistle Thrush" : "Turdus viscivorus",
- "Great Black-backed Gull" : "Larus marinus",
- "Goosander" : "Mergus merganser",
- "Great Egret" : "Casmerodius albus",
- "Northern Goshawk" : "Accipiter gentilis",
- "Dunnock" : "Prunella modularis",
- "Stock Dove" : "Columba oenas",
- "Common Wood Pigeon" : "Columba palumbus",
- "Eurasian Woodcock" : "Scolopax rusticola",
- "House Sparrow" : "Passer domesticus",
- "Common House Martin" : "Delichon urbicum",
- "Red Knot" : "Calidris canutus",
- "Western Jackdaw" : "Corvus monedula",
- "Brambling" : "Fringilla montifringilla",
- "Northern Lapwing" : "Vanellus vanellus",
- "European Reed Warbler" : "Acrocephalus scirpaceus",
- "Lesser Black-backed Gull" : "Larus fuscus",
- "Little Egret" : "Egretta garzetta",
- "Little Stint" : "Calidris minuta",
- "Common Linnet" : "Carduelis cannabina",
- "Mute Swan" : "Cygnus olor",
- "Common Cuckoo" : "Cuculus canorus",
- "Black-headed Gull" : "Larus ridibundus",
- "Greater White-fronted Goose" : "Anser albifrons",
- "Great Tit" : "Parus major",
- "Redwing" : "Turdus iliacus",
- "Gadwall" : "Anas strepera",
- "Fieldfare" : "Turdus pilaris",
- "Tufted Duck" : "Aythya fuligula",
- "Crested Tit" : "Lophophanes cristatus",
- "Willow Tit" : "Poecile montanus",
- "Eurasian Coot" : "Fulica atra",
- "Common Blackbird" : "Turdus merula",
- "Smew" : "Mergus albellus",
- "Common Sandpiper" : "Actitis hypoleucos",
- "Sand Martin" : "Riparia riparia",
- "Purple Sandpiper" : "Calidris maritima",
- "Northern Pintail" : "Anas acuta",
- "Blue Tit" : "Cyanistes caeruleus",
- "European Goldfinch" : "Carduelis carduelis",
- "Eurasian Whimbrel" : "Numenius phaeopus",
- "Common Reed Bunting" : "Emberiza schoeniclus",
- "Eurasian Tree Sparrow" : "Passer montanus",
- "Rook" : "Corvus frugilegus",
- "European Robin" : "Erithacus rubecula",
- "Bar-tailed Godwit" : "Limosa lapponica",
- "Dark-bellied Brent Goose" : "Branta bernicla",
- "Eurasian Oystercatcher" : "Haematopus ostralegus",
- "Eurasian Siskin" : "Carduelis spinus",
- "Northern Shoveler" : "Anas clypeata",
- "Eurasian Wigeon" : "Anas penelope",
- "Eurasian Sparrow Hawk" : "Accipiter nisus",
- "Icterine Warbler" : "Hippolais icterina",
- "Common Starling" : "Sturnus vulgaris",
- "Long-tailed Tit" : "Aegithalos caudatus",
- "Ruddy Turnstone" : "Arenaria interpres",
- "Mew Gull" : "Larus canus",
- "Common Pochard" : "Aythya ferina",
- "Common Chiffchaff" : "Phylloscopus collybita",
- "Greater Scaup" : "Aythya marila",
- "Common Kestrel" : "Falco tinnunculus",
- "Garden Warbler" : "Sylvia borin",
- "Eurasian Collared Dove" : "Streptopelia decaocto",
- "Eurasian Skylark" : "Alauda arvensis",
- "Common Chaffinch" : "Fringilla coelebs",
- "Common Moorhen" : "Gallinula chloropus",
- "Water Pipit" : "Anthus spinoletta",
- "Mallard" : "Anas platyrhynchos",
- "Winter Wren" : "Troglodytes troglodytes",
- "Common Teal" : "Anas crecca",
- "Green Sandpiper" : "Tringa ochropus",
- "White Wagtail" : "Motacilla alba",
- "Eurasian Curlew" : "Numenius arquata",
- "Song Thrush" : "Turdus philomelos",
- "European Herring Gull" : "Larus argentatus",
- "Grey Plover" : "Pluvialis squatarola",
- "Carrion Crow" : "Corvus corone",
- "Coal Tit" : "Periparus ater",
- "Spotted Redshank" : "Tringa erythropus",
- "Blackcap" : "Sylvia atricapilla",
- "Egyptian Vulture" : "Neophron percnopterus",
- "Razorbill" : "Alca torda",
- "Alpine Swift" : "Apus melba",
- "Long-legged Buzzard" : "Buteo rufinus",
- "Audouin`s Gull" : "Larus audouinii",
- "Balearic Shearwater" : "Puffinus mauretanicus",
- "Upland Sandpiper" : "Bartramia longicauda",
- "Greater Spotted Eagle" : "Aquila clanga",
- "Ring Ouzel" : "Turdus torquatus",
- "Yellow-browed Warbler" : "Phylloscopus inornatus",
- "Blue Rock Thrush" : "Monticola solitarius",
- "Buff-breasted Sandpiper" : "Tryngites subruficollis",
- "Jack Snipe" : "Lymnocryptes minimus",
- "White-rumped Sandpiper" : "Calidris fuscicollis",
- "Ruddy Shelduck" : "Tadorna ferruginea",
- "Cetti's Warbler" : "Cettia cetti",
- "Citrine Wagtail" : "Motacilla citreola",
- "Roseate Tern" : "Sterna dougallii",
- "Black-legged Kittiwake" : "Rissa tridactyla",
- "Pygmy Cormorant" : "Phalacrocorax pygmeus",
- "Booted Eagle" : "Aquila pennata",
- "Lesser White-fronted Goose" : "Anser erythropus",
- "Little Bunting" : "Emberiza pusilla",
- "Eleonora's Falcon" : "Falco eleonorae",
- "European Serin" : "Serinus serinus",
- "Twite" : "Carduelis flavirostris",
- "Yellow-legged Gull" : "Larus michahellis",
- "Gyr Falcon" : "Falco rusticolus",
- "Greenish Warbler" : "Phylloscopus trochiloides",
- "Red-necked Phalarope" : "Phalaropus lobatus",
- "Mealy Redpoll" : "Carduelis flammea",
- "Glaucous Gull" : "Larus hyperboreus",
- "Great Skua" : "Stercorarius skua",
- "Great Bustard" : "Otis tarda",
- "Velvet Scoter" : "Melanitta fusca",
- "Pine Grosbeak" : "Pinicola enucleator",
- "House Crow" : "Corvus splendens",
- "Hume`s Leaf Warbler" : "Phylloscopus humei",
- "Great Northern Loon" : "Gavia immer",
- "Long-tailed Duck" : "Clangula hyemalis",
- "Lapland Longspur" : "Calcarius lapponicus",
- "Northern Gannet" : "Morus bassanus",
- "Eastern Imperial Eagle" : "Aquila heliaca",
- "Little Auk" : "Alle alle",
- "Lesser Spotted Woodpecker" : "Dendrocopos minor",
- "Iceland Gull" : "Larus glaucoides",
- "Parasitic Jaeger" : "Stercorarius parasiticus",
- "Bewick`s Swan" : "Cygnus bewickii",
- "Little Bustard" : "Tetrax tetrax",
- "Little Crake" : "Porzana parva",
- "Baillon`s Crake" : "Porzana pusilla",
- "Long-tailed Jaeger" : "Stercorarius longicaudus",
- "King Eider" : "Somateria spectabilis",
- "Greater Short-toed Lark" : "Calandrella brachydactyla",
- "Houbara Bustard" : "Chlamydotis undulata",
- "Curlew Sandpiper" : "Calidris ferruginea",
- "Common Crossbill" : "Loxia curvirostra",
- "European Shag" : "Phalacrocorax aristotelis",
- "Horned Grebe" : "Podiceps auritus",
- "Common Quail" : "Coturnix coturnix",
- "Bearded Vulture" : "Gypaetus barbatus",
- "Lanner Falcon" : "Falco biarmicus",
- "Middle Spotted Woodpecker" : "Dendrocopos medius",
- "Pomarine Jaeger" : "Stercorarius pomarinus",
- "Red-breasted Merganser" : "Mergus serrator",
- "Eurasian Black Vulture" : "Aegypius monachus",
- "Eurasian Dotterel" : "Charadrius morinellus",
- "Common Nightingale" : "Luscinia megarhynchos",
- "Northern willow warbler" : "Phylloscopus trochilus acredula",
- "Manx Shearwater" : "Puffinus puffinus",
- "Northern Fulmar" : "Fulmarus glacialis",
- "Eurasian Eagle Owl" : "Bubo bubo",
- "Orphean Warbler" : "Sylvia hortensis",
- "Melodious Warbler" : "Hippolais polyglotta",
- "Pallas's Leaf Warbler" : "Phylloscopus proregulus",
- "Atlantic Puffin" : "Fratercula arctica",
- "Black-throated Loon" : "Gavia arctica",
- "Bohemian Waxwing" : "Bombycilla garrulus",
- "Marsh Sandpiper" : "Tringa stagnatilis",
- "Great Snipe" : "Gallinago media",
- "Squacco Heron" : "Ardeola ralloides",
- "Long-eared Owl" : "Asio otus",
- "Caspian Tern" : "Hydroprogne caspia",
- "Red-breasted Goose" : "Branta ruficollis",
- "Red-throated Loon" : "Gavia stellata",
- "Common Rosefinch" : "Carpodacus erythrinus",
- "Red-footed Falcon" : "Falco vespertinus",
- "Ross's Goose" : "Anser rossii",
- "Red Phalarope" : "Phalaropus fulicarius",
- "Pied Wagtail" : "Motacilla yarrellii",
- "Rose-coloured Starling" : "Sturnus roseus",
- "Rough-legged Buzzard" : "Buteo lagopus",
- "Saker Falcon" : "Falco cherrug",
- "European Roller" : "Coracias garrulus",
- "Short-toed Eagle" : "Circaetus gallicus",
- "Peregrine Falcon" : "Falco peregrinus",
- "Merlin" : "Falco columbarius",
- "Snow Goose" : "Anser caerulescens",
- "Snowy Owl" : "Bubo scandiacus",
- "Snow Bunting" : "Plectrophenax nivalis",
- "Common Grasshopper Warbler" : "Locustella naevia",
- "Golden Eagle" : "Aquila chrysaetos",
- "Black-winged Stilt" : "Himantopus himantopus",
- "Steppe Eagle" : "Aquila nipalensis",
- "Pallid Harrier" : "Circus macrourus",
- "European Storm-petrel" : "Hydrobates pelagicus",
- "Horned Lark" : "Eremophila alpestris",
- "Eurasian Treecreeper" : "Certhia familiaris",
- "Taiga Bean Goose" : "Anser fabalis",
- "Temminck`s Stint" : "Calidris temminckii",
- "Terek Sandpiper" : "Xenus cinereus",
- "Tundra Bean Goose" : "Anser serrirostris",
- "European Turtle Dove" : "Streptopelia turtur",
- "Leach`s Storm-petrel" : "Oceanodroma leucorhoa",
- "Eurasian Griffon Vulture" : "Gyps fulvus",
- "Paddyfield Warbler" : "Acrocephalus agricola",
- "Osprey" : "Pandion haliaetus",
- "Firecrest" : "Regulus ignicapilla",
- "Water Rail" : "Rallus aquaticus",
- "European Honey Buzzard" : "Pernis apivorus",
- "Eurasian Golden Oriole" : "Oriolus oriolus",
- "Whooper Swan" : "Cygnus cygnus",
- "Two-barred Crossbill" : "Loxia leucoptera",
- "White-tailed Eagle" : "Haliaeetus albicilla",
- "Atlantic Murre" : "Uria aalge",
- "Garganey" : "Anas querquedula",
- "Black Redstart" : "Phoenicurus ochruros",
- "Common Scoter" : "Melanitta nigra",
- "Rock Pipit" : "Anthus petrosus",
- "Lesser Spotted Eagle" : "Aquila pomarina",
- "Cattle Egret" : "Bubulcus ibis",
- "White-winged Black Tern" : "Chlidonias leucopterus",
- "Black Stork" : "Ciconia nigra",
- "Mediterranean Gull" : "Larus melanocephalus",
- "Black Kite" : "Milvus migrans",
- "Yellow Wagtail" : "Motacilla flavissima",
- "Red-necked Grebe" : "Podiceps grisegena",
- "Gull-billed Tern" : "Gelochelidon nilotica",
- "Pectoral Sandpiper" : "Calidris melanotos",
- "Barred Warbler" : "Sylvia nisoria",
- "Red-throated Pipit" : "Anthus cervinus",
- "Grey Wagtail" : "Motacilla cinerea",
- "Richard`s Pipit" : "Anthus richardi",
- "Black Woodpecker" : "Dryocopus martius",
- "Little Ringed Plover" : "Charadrius dubius",
- "Whiskered Tern" : "Chlidonias hybrida",
- "Lesser Redpoll" : "Carduelis cabaret",
- "Pallas' Bunting" : "Emberiza pallasi",
- "Ferruginous Duck" : "Aythya nyroca",
- "Whistling Swan" : "Cygnus columbianus",
- "Black Brant" : "Branta nigricans",
- "Marbled Teal" : "Marmaronetta angustirostris",
- "Canvasback" : "Aythya valisineria",
- "Redhead" : "Aythya americana",
- "Lesser Scaup" : "Aythya affinis",
- "Steller`s Eider" : "Polysticta stelleri",
- "Spectacled Eider" : "Somateria fischeri",
- "Harlequin Duck" : "Histronicus histrionicus",
- "Black Scoter" : "Melanitta americana",
- "Surf Scoter" : "Melanitta perspicillata",
- "Barrow`s Goldeneye" : "Bucephala islandica",
- "Falcated Duck" : "Anas falcata",
- "American Wigeon" : "Anas americana",
- "Blue-winged Teal" : "Anas discors",
- "American Black Duck" : "Anas rubripes",
- "Baikal Teal" : "Anas formosa",
- "Green-Winged Teal" : "Anas carolinensis",
- "Hazel Grouse" : "Bonasa bonasia",
- "Rock Partridge" : "Alectoris graeca",
- "Red-legged Partridge" : "Alectoris rufa",
- "Yellow-billed Loon" : "Gavia adamsii",
- "Cory`s Shearwater" : "Calonectris borealis",
- "Madeiran Storm-Petrel" : "Oceanodroma castro",
- "Great White Pelican" : "Pelecanus onocrotalus",
- "Dalmatian Pelican" : "Pelecanus crispus",
- "American Bittern" : "Botaurus lentiginosus",
- "Glossy Ibis" : "Plegadis falcinellus",
- "Spanish Imperial Eagle" : "Aquila adalberti",
- "Lesser Kestrel" : "Falco naumanni",
- "Crab-Plover" : "Dromas ardeola",
- "Cream-coloured Courser" : "Cursorius cursor",
- "Collared Pratincole" : "Glareola pratincola",
- "Black-winged Pratincole" : "Glareola nordmanni",
- "Killdeer" : "Charadrius vociferus",
- "Lesser Sand Plover" : "Charadrius mongolus",
- "Greater Sand Plover" : "Charadrius leschenaultii",
- "Caspian Plover" : "Charadrius asiaticus",
- "American Golden Plover" : "Pluvialis dominica",
- "Pacific Golden Plover" : "Pluvialis fulva",
- "Sharp-tailed Sandpiper" : "Calidris acuminata",
- "Broad-billed Sandpiper" : "Limicola falcinellus",
- "Spoon-Billed Sandpiper" : "Eurynorhynchus pygmaeus",
- "Short-Billed Dowitcher" : "Limnodromus griseus",
- "Long-billed Dowitcher" : "Limnodromus scolopaceus",
- "Hudsonian Godwit" : "Limosa haemastica",
- "Little Curlew" : "Numenius minutus",
- "Lesser Yellowlegs" : "Tringa flavipes",
- "Wilson`s Phalarope" : "Phalaropus tricolor",
- "Pallas`s Gull" : "Larus ichthyaetus",
- "Laughing Gull" : "Larus atricilla",
- "Franklin`s Gull" : "Larus pipixcan",
- "Bonaparte`s Gull" : "Larus philadelphia",
- "Ring-billed Gull" : "Larus delawarensis",
- "American Herring Gull" : "Larus smithsonianus",
- "Caspian Gull" : "Larus cachinnans",
- "Ivory Gull" : "Pagophila eburnea",
- "Royal Tern" : "Sterna maxima",
- "Brünnich`s Murre" : "Uria lomvia",
- "Crested Auklet" : "Aethia cristatella",
- "Parakeet Auklet" : "Cyclorrhynchus psittacula",
- "Tufted Puffin" : "Lunda cirrhata",
- "Laughing Dove" : "Streptopelia senegalensis",
- "Great Spotted Cuckoo" : "Clamator glandarius",
- "Great Grey Owl" : "Strix nebulosa",
- "Tengmalm`s Owl" : "Aegolius funereus",
- "Red-Necked Nightjar" : "Caprimulgus ruficollis",
- "Chimney Swift" : "Chaetura pelagica",
- "Green Bea-Eater" : "Merops orientalis",
- "Grey-headed Woodpecker" : "Picus canus",
- "Lesser Short-Toed Lark" : "Calandrella rufescens",
- "Eurasian Crag Martin" : "Hirundo rupestris",
- "Red-rumped Swallow" : "Cecropis daurica",
- "Blyth`s Pipit" : "Anthus godlewskii",
- "Pechora Pipit" : "Anthus gustavi",
- "Grey-headed Wagtail" : "Motacilla thunbergi",
- "Yellow-Headed Wagtail" : "Motacilla lutea",
- "White-throated Dipper" : "Cinclus cinclus",
- "Rufous-Tailed Scrub Robin" : "Cercotrichas galactotes",
- "Thrush Nightingale" : "Luscinia luscinia",
- "White-throated Robin" : "Irania gutturalis",
- "Caspian Stonechat" : "Saxicola maura variegata",
- "Western Black-eared Wheatear" : "Oenanthe hispanica",
- "Rufous-tailed Rock Thrush" : "Monticola saxatilis",
- "Red-throated Thrush/Black-throated" : "Turdus ruficollis",
- "American Robin" : "Turdus migratorius",
- "Zitting Cisticola" : "Cisticola juncidis",
- "Lanceolated Warbler" : "Locustella lanceolata",
- "River Warbler" : "Locustella fluviatilis",
- "Blyth`s Reed Warbler" : "Acrocephalus dumetorum",
- "Caspian Reed Warbler" : "Acrocephalus fuscus",
- "Aquatic Warbler" : "Acrocephalus paludicola",
- "Booted Warbler" : "Acrocephalus caligatus",
- "Marmora's Warbler" : "Sylvia sarda",
- "Dartford Warbler" : "Sylvia undata",
- "Subalpine Warbler" : "Sylvia cantillans",
- "Ménétries's Warbler" : "Sylvia mystacea",
- "Rüppel's Warbler" : "Sylvia rueppelli",
- "Asian Desert Warbler" : "Sylvia nana",
- "Western Orphean Warbler" : "Sylvia hortensis hortensis",
- "Arctic Warbler" : "Phylloscopus borealis",
- "Radde`s Warbler" : "Phylloscopus schwarzi",
- "Western Bonelli`s Warbler" : "Phylloscopus bonelli",
- "Red-breasted Flycatcher" : "Ficedula parva",
- "Eurasian Penduline Tit" : "Remiz pendulinus",
- "Daurian Shrike" : "Lanius isabellinus",
- "Long-Tailed Shrike" : "Lanius schach",
- "Lesser Grey Shrike" : "Lanius minor",
- "Southern Grey Shrike" : "Lanius meridionalis",
- "Masked Shrike" : "Lanius nubicus",
- "Spotted Nutcracker" : "Nucifraga caryocatactes",
- "Daurian Jackdaw" : "Corvus dauuricus",
- "Purple-Backed Starling" : "Sturnus sturninus",
- "Red-Fronted Serin" : "Serinus pusillus",
- "Arctic Redpoll" : "Carduelis hornemanni",
- "Scottish Crossbill" : "Loxia scotica",
- "Parrot Crossbill" : "Loxia pytyopsittacus",
- "Black-faced Bunting" : "Emberiza spodocephala",
- "Pink-footed Goose" : "Anser brachyrhynchus",
- "Black-winged Kite" : "Elanus caeruleus",
- "European Bee-eater" : "Merops apiaster",
- "Sabine`s Gull" : "Larus sabini",
- "Sooty Shearwater" : "Puffinus griseus",
- "Lesser Canada Goose" : "Branta hutchinsii",
- "Ring-necked Duck" : "Aythya collaris",
- "Greater Flamingo" : "Phoenicopterus roseus",
- "Iberian Chiffchaff" : "Phylloscopus ibericus",
- "Ashy-headed Wagtail" : "Motacilla cinereocapilla",
- "Stilt Sandpiper" : "Calidris himantopus",
- "Siberian Stonechat" : "Saxicola maurus",
- "Greater Yellowlegs" : "Tringa melanoleuca",
- "Forster`s Tern" : "Sterna forsteri",
- "Dusky Warbler" : "Phylloscopus fuscatus",
- "Cirl Bunting" : "Emberiza cirlus",
- "Olive-backed Pipit" : "Anthus hodgsoni",
- "Sociable Lapwing" : "Vanellus gregarius",
- "Spotted Sandpiper" : "Actitis macularius",
- "Baird`s Sandpiper" : "Calidris bairdii",
- "Rustic Bunting" : "Emberiza rustica",
- "Yellow-browed Bunting" : "Emberiza chrysophrys",
- "Great Shearwater" : "Puffinus gravis",
- "Bonelli`s Eagle" : "Aquila fasciata",
- "Calandra Lark" : "Melanocorypha calandra",
- "Sardinian Warbler" : "Sylvia melanocephala",
- "Ross's Gull" : "Larus roseus",
- "Yellow-Breasted Bunting" : "Emberiza aureola",
- "Pine Bunting" : "Emberiza leucocephalos",
- "Black Guillemot" : "Cepphus grylle",
- "Pied-billed Grebe" : "Podilymbus podiceps",
- "Soft-plumaged Petrel" : "Pterodroma mollis",
- "Bulwer's Petrel" : "Bulweria bulwerii",
- "White-Faced Storm-Petrel" : "Pelagodroma marina",
- "Pallas’s Fish Eagle" : "Haliaeetus leucoryphus",
- "Sandhill Crane" : "Grus canadensis",
- "Macqueen’s Bustard" : "Chlamydotis macqueenii",
- "White-tailed Lapwing" : "Vanellus leucurus",
- "Great Knot" : "Calidris tenuirostris",
- "Semipalmated Sandpiper" : "Calidris pusilla",
- "Red-necked Stint" : "Calidris ruficollis",
- "Slender-billed Curlew" : "Numenius tenuirostris",
- "Bridled Tern" : "Onychoprion anaethetus",
- "Pallas’s Sandgrouse" : "Syrrhaptes paradoxus",
- "European Scops Owl" : "Otus scops",
- "Northern Hawk Owl" : "Surnia ulula",
- "White-Throated Needletail" : "Hirundapus caudacutus",
- "Belted Kingfisher" : "Ceryle alcyon",
- "Blue-cheeked Bee-eater" : "Merops persicus",
- "Black-headed Wagtail" : "Motacilla feldegg",
- "Northern Mockingbird" : "Mimus polyglottos",
- "Alpine Accentor" : "Prunella collaris",
- "Red-flanked Bluetail" : "Tarsiger cyanurus",
- "Isabelline Wheatear" : "Oenanthe isabellina",
- "Pied Wheatear" : "Oenanthe pleschanka",
- "Eastern Black-eared Wheatear" : "Oenanthe melanoleuca",
- "Desert Wheatear" : "Oenanthe deserti",
- "White`s Thrush" : "Zoothera aurea",
- "Siberian Thrush" : "Zoothera sibirica",
- "Eyebrowed Thrush" : "Turdus obscurus",
- "Dusky Thrush" : "Turdus eunomus",
- "Black-throated Thrush" : "Turdus atrogularis",
- "Pallas`s Grasshopper Warbler" : "Locustella certhiola",
- "Spectacled Warbler" : "Sylvia conspicillata",
- "Two-barred Warbler" : "Phylloscopus plumbeitarsus",
- "Eastern Bonelli’s Warbler" : "Phylloscopus orientalis",
- "Collared Flycatcher" : "Ficedula albicollis",
- "Wallcreeper" : "Tichodroma muraria",
- "Turkestan Shrike" : "Lanius phoenicuroides",
- "Steppe Grey Shrike" : "Lanius pallidirostris",
- "Spanish Sparrow" : "Passer hispaniolensis",
- "Red-eyed Vireo" : "Vireo olivaceus",
- "Myrtle Warbler" : "Dendroica coronata",
- "White-crowned Sparrow" : "Zonotrichia leucophrys",
- "White-throated Sparrow" : "Zonotrichia albicollis",
- "Cretzschmar`s Bunting" : "Emberiza caesia",
- "Chestnut Bunting" : "Emberiza rutila",
- "Red-headed Bunting" : "Emberiza bruniceps",
- "Black-headed Bunting" : "Emberiza melanocephala",
- "Indigo Bunting" : "Passerina cyanea",
- "Balearic Woodchat Shrike" : "Lanius senator badius",
- "Demoiselle Crane" : "Grus virgo",
- "Chough" : "Pyrrhocorax pyrrhocorax",
- "Red-Billed Chough" : "Pyrrhocorax graculus",
- "Elegant Tern" : "Sterna elegans",
- "Chukar" : "Alectoris chukar",
- "Yellow-Billed Cuckoo" : "Coccyzus americanus",
- "American Sandwich Tern" : "Sterna sandvicensis acuflavida",
- "Olive-Tree Warbler" : "Hippolais olivetorum",
- "Eastern Olivaceous Warbler" : "Acrocephalus pallidus",
- "Indian Cormorant" : "Phalacrocorax fuscicollis",
- "Spur-Winged Lapwing" : "Vanellus spinosus",
- "Yelkouan Shearwater" : "Puffinus yelkouan",
- "Trumpeter Finch" : "Bucanetes githagineus",
- "Red Grouse" : "Lagopus scoticus",
- "Rock Ptarmigan" : "Lagopus mutus",
- "Long-Tailed Cormorant" : "Phalacrocorax africanus",
- "Double-crested Cormorant" : "Phalacrocorax auritus",
- "Magnificent Frigatebird" : "Fregata magnificens",
- "Naumann's Thrush" : "Turdus naumanni",
- "Oriental Pratincole" : "Glareola maldivarum",
- "Bufflehead" : "Bucephala albeola",
- "Snowfinch" : "Montifrigilla nivalis",
- "Ural owl" : "Strix uralensis",
- "Spanish Wagtail" : "Motacilla iberiae",
- "Song Sparrow" : "Melospiza melodia",
- "Rock Bunting" : "Emberiza cia",
- "Siberian Rubythroat" : "Luscinia calliope",
- "Pallid Swift" : "Apus pallidus",
- "Eurasian Pygmy Owl" : "Glaucidium passerinum",
- "Madeira Little Shearwater" : "Puffinus baroli",
- "House Finch" : "Carpodacus mexicanus",
- "Green Heron" : "Butorides virescens",
- "Solitary Sandpiper" : "Tringa solitaria",
- "Heuglin's Gull" : "Larus heuglini"
+ "Great Bittern": "Botaurus stellaris",
+ "Little Grebe": "Tachybaptus ruficollis",
+ "Black-necked Grebe": "Podiceps nigricollis",
+ "Little Bittern": "Ixobrychus minutus",
+ "Black-crowned Night Heron": "Nycticorax nycticorax",
+ "Purple Heron": "Ardea purpurea",
+ "White Stork": "Ciconia ciconia",
+ "Spoonbill": "Platalea leucorodia",
+ "Red-crested Pochard": "Netta rufina",
+ "Common Eider": "Somateria mollissima",
+ "Red Kite": "Milvus milvus",
+ "Hen Harrier": "Circus cyaneus",
+ "Montagu`s Harrier": "Circus pygargus",
+ "Black Grouse": "Tetrao tetrix",
+ "Grey Partridge": "Perdix perdix",
+ "Spotted Crake": "Porzana porzana",
+ "Corncrake": "Crex crex",
+ "Common Crane": "Grus grus",
+ "Avocet": "Recurvirostra avosetta",
+ "Stone Curlew": "Burhinus oedicnemus",
+ "Common Ringed Plover": "Charadrius hiaticula",
+ "Kentish Plover": "Charadrius alexandrinus",
+ "Ruff": "Philomachus pugnax",
+ "Common Snipe": "Gallinago gallinago",
+ "Black-tailed Godwit": "Limosa limosa",
+ "Common Redshank": "Tringa totanus",
+ "Sandwich Tern": "Sterna sandvicensis",
+ "Common Tern": "Sterna hirundo",
+ "Arctic Tern": "Sterna paradisaea",
+ "Little Tern": "Sternula albifrons",
+ "Black Tern": "Chlidonias niger",
+ "Barn Owl": "Tyto alba",
+ "Little Owl": "Athene noctua",
+ "Short-eared Owl": "Asio flammeus",
+ "European Nightjar": "Caprimulgus europaeus",
+ "Common Kingfisher": "Alcedo atthis",
+ "Eurasian Hoopoe": "Upupa epops",
+ "Eurasian Wryneck": "Jynx torquilla",
+ "European Green Woodpecker": "Picus viridis",
+ "Crested Lark": "Galerida cristata",
+ "White-headed Duck": "Oxyura leucocephala",
+ "Pale-bellied Brent Goose": "Branta hrota",
+ "Tawny Pipit": "Anthus campestris",
+ "Whinchat": "Saxicola rubetra",
+ "European Stonechat": "Saxicola rubicola",
+ "Northern Wheatear": "Oenanthe oenanthe",
+ "Savi`s Warbler": "Locustella luscinioides",
+ "Sedge Warbler": "Acrocephalus schoenobaenus",
+ "Great Reed Warbler": "Acrocephalus arundinaceus",
+ "Bearded Reedling": "Panurus biarmicus",
+ "Red-backed Shrike": "Lanius collurio",
+ "Great Grey Shrike": "Lanius excubitor",
+ "Woodchat Shrike": "Lanius senator",
+ "Common Raven": "Corvus corax",
+ "Yellowhammer": "Emberiza citrinella",
+ "Ortolan Bunting": "Emberiza hortulana",
+ "Corn Bunting": "Emberiza calandra",
+ "Great Cormorant": "Phalacrocorax carbo",
+ "Hawfinch": "Coccothraustes coccothraustes",
+ "Common Shelduck": "Tadorna tadorna",
+ "Bluethroat": "Luscinia svecica",
+ "Grey Heron": "Ardea cinerea",
+ "Barn Swallow": "Hirundo rustica",
+ "Hooded Crow": "Corvus cornix",
+ "Dunlin": "Calidris alpina",
+ "Eurasian Pied Flycatcher": "Ficedula hypoleuca",
+ "Eurasian Nuthatch": "Sitta europaea",
+ "Short-toed Tree Creeper": "Certhia brachydactyla",
+ "Wood Lark": "Lullula arborea",
+ "Tree Pipit": "Anthus trivialis",
+ "Eurasian Hobby": "Falco subbuteo",
+ "Marsh Warbler": "Acrocephalus palustris",
+ "Wood Sandpiper": "Tringa glareola",
+ "Tawny Owl": "Strix aluco",
+ "Lesser Whitethroat": "Sylvia curruca",
+ "Barnacle Goose": "Branta leucopsis",
+ "Common Goldeneye": "Bucephala clangula",
+ "Western Marsh Harrier": "Circus aeruginosus",
+ "Common Buzzard": "Buteo buteo",
+ "Sanderling": "Calidris alba",
+ "Little Gull": "Larus minutus",
+ "Eurasian Magpie": "Pica pica",
+ "Willow Warbler": "Phylloscopus trochilus",
+ "Wood Warbler": "Phylloscopus sibilatrix",
+ "Great Crested Grebe": "Podiceps cristatus",
+ "Eurasian Jay": "Garrulus glandarius",
+ "Common Redstart": "Phoenicurus phoenicurus",
+ "Blue-headed Wagtail": "Motacilla flava",
+ "Common Swift": "Apus apus",
+ "Marsh Tit": "Poecile palustris",
+ "Goldcrest": "Regulus regulus",
+ "European Golden Plover": "Pluvialis apricaria",
+ "Eurasian Bullfinch": "Pyrrhula pyrrhula",
+ "Common Whitethroat": "Sylvia communis",
+ "Meadow Pipit": "Anthus pratensis",
+ "Greylag Goose": "Anser anser",
+ "Spotted Flycatcher": "Muscicapa striata",
+ "European Greenfinch": "Carduelis chloris",
+ "Common Greenshank": "Tringa nebularia",
+ "Great Spotted Woodpecker": "Dendrocopos major",
+ "Greater Canada Goose": "Branta canadensis",
+ "Mistle Thrush": "Turdus viscivorus",
+ "Great Black-backed Gull": "Larus marinus",
+ "Goosander": "Mergus merganser",
+ "Great Egret": "Casmerodius albus",
+ "Northern Goshawk": "Accipiter gentilis",
+ "Dunnock": "Prunella modularis",
+ "Stock Dove": "Columba oenas",
+ "Common Wood Pigeon": "Columba palumbus",
+ "Eurasian Woodcock": "Scolopax rusticola",
+ "House Sparrow": "Passer domesticus",
+ "Common House Martin": "Delichon urbicum",
+ "Red Knot": "Calidris canutus",
+ "Western Jackdaw": "Corvus monedula",
+ "Brambling": "Fringilla montifringilla",
+ "Northern Lapwing": "Vanellus vanellus",
+ "European Reed Warbler": "Acrocephalus scirpaceus",
+ "Lesser Black-backed Gull": "Larus fuscus",
+ "Little Egret": "Egretta garzetta",
+ "Little Stint": "Calidris minuta",
+ "Common Linnet": "Carduelis cannabina",
+ "Mute Swan": "Cygnus olor",
+ "Common Cuckoo": "Cuculus canorus",
+ "Black-headed Gull": "Larus ridibundus",
+ "Greater White-fronted Goose": "Anser albifrons",
+ "Great Tit": "Parus major",
+ "Redwing": "Turdus iliacus",
+ "Gadwall": "Anas strepera",
+ "Fieldfare": "Turdus pilaris",
+ "Tufted Duck": "Aythya fuligula",
+ "Crested Tit": "Lophophanes cristatus",
+ "Willow Tit": "Poecile montanus",
+ "Eurasian Coot": "Fulica atra",
+ "Common Blackbird": "Turdus merula",
+ "Smew": "Mergus albellus",
+ "Common Sandpiper": "Actitis hypoleucos",
+ "Sand Martin": "Riparia riparia",
+ "Purple Sandpiper": "Calidris maritima",
+ "Northern Pintail": "Anas acuta",
+ "Blue Tit": "Cyanistes caeruleus",
+ "European Goldfinch": "Carduelis carduelis",
+ "Eurasian Whimbrel": "Numenius phaeopus",
+ "Common Reed Bunting": "Emberiza schoeniclus",
+ "Eurasian Tree Sparrow": "Passer montanus",
+ "Rook": "Corvus frugilegus",
+ "European Robin": "Erithacus rubecula",
+ "Bar-tailed Godwit": "Limosa lapponica",
+ "Dark-bellied Brent Goose": "Branta bernicla",
+ "Eurasian Oystercatcher": "Haematopus ostralegus",
+ "Eurasian Siskin": "Carduelis spinus",
+ "Northern Shoveler": "Anas clypeata",
+ "Eurasian Wigeon": "Anas penelope",
+ "Eurasian Sparrow Hawk": "Accipiter nisus",
+ "Icterine Warbler": "Hippolais icterina",
+ "Common Starling": "Sturnus vulgaris",
+ "Long-tailed Tit": "Aegithalos caudatus",
+ "Ruddy Turnstone": "Arenaria interpres",
+ "Mew Gull": "Larus canus",
+ "Common Pochard": "Aythya ferina",
+ "Common Chiffchaff": "Phylloscopus collybita",
+ "Greater Scaup": "Aythya marila",
+ "Common Kestrel": "Falco tinnunculus",
+ "Garden Warbler": "Sylvia borin",
+ "Eurasian Collared Dove": "Streptopelia decaocto",
+ "Eurasian Skylark": "Alauda arvensis",
+ "Common Chaffinch": "Fringilla coelebs",
+ "Common Moorhen": "Gallinula chloropus",
+ "Water Pipit": "Anthus spinoletta",
+ "Mallard": "Anas platyrhynchos",
+ "Winter Wren": "Troglodytes troglodytes",
+ "Common Teal": "Anas crecca",
+ "Green Sandpiper": "Tringa ochropus",
+ "White Wagtail": "Motacilla alba",
+ "Eurasian Curlew": "Numenius arquata",
+ "Song Thrush": "Turdus philomelos",
+ "European Herring Gull": "Larus argentatus",
+ "Grey Plover": "Pluvialis squatarola",
+ "Carrion Crow": "Corvus corone",
+ "Coal Tit": "Periparus ater",
+ "Spotted Redshank": "Tringa erythropus",
+ "Blackcap": "Sylvia atricapilla",
+ "Egyptian Vulture": "Neophron percnopterus",
+ "Razorbill": "Alca torda",
+ "Alpine Swift": "Apus melba",
+ "Long-legged Buzzard": "Buteo rufinus",
+ "Audouin`s Gull": "Larus audouinii",
+ "Balearic Shearwater": "Puffinus mauretanicus",
+ "Upland Sandpiper": "Bartramia longicauda",
+ "Greater Spotted Eagle": "Aquila clanga",
+ "Ring Ouzel": "Turdus torquatus",
+ "Yellow-browed Warbler": "Phylloscopus inornatus",
+ "Blue Rock Thrush": "Monticola solitarius",
+ "Buff-breasted Sandpiper": "Tryngites subruficollis",
+ "Jack Snipe": "Lymnocryptes minimus",
+ "White-rumped Sandpiper": "Calidris fuscicollis",
+ "Ruddy Shelduck": "Tadorna ferruginea",
+ "Cetti's Warbler": "Cettia cetti",
+ "Citrine Wagtail": "Motacilla citreola",
+ "Roseate Tern": "Sterna dougallii",
+ "Black-legged Kittiwake": "Rissa tridactyla",
+ "Pygmy Cormorant": "Phalacrocorax pygmeus",
+ "Booted Eagle": "Aquila pennata",
+ "Lesser White-fronted Goose": "Anser erythropus",
+ "Little Bunting": "Emberiza pusilla",
+ "Eleonora's Falcon": "Falco eleonorae",
+ "European Serin": "Serinus serinus",
+ "Twite": "Carduelis flavirostris",
+ "Yellow-legged Gull": "Larus michahellis",
+ "Gyr Falcon": "Falco rusticolus",
+ "Greenish Warbler": "Phylloscopus trochiloides",
+ "Red-necked Phalarope": "Phalaropus lobatus",
+ "Mealy Redpoll": "Carduelis flammea",
+ "Glaucous Gull": "Larus hyperboreus",
+ "Great Skua": "Stercorarius skua",
+ "Great Bustard": "Otis tarda",
+ "Velvet Scoter": "Melanitta fusca",
+ "Pine Grosbeak": "Pinicola enucleator",
+ "House Crow": "Corvus splendens",
+ "Hume`s Leaf Warbler": "Phylloscopus humei",
+ "Great Northern Loon": "Gavia immer",
+ "Long-tailed Duck": "Clangula hyemalis",
+ "Lapland Longspur": "Calcarius lapponicus",
+ "Northern Gannet": "Morus bassanus",
+ "Eastern Imperial Eagle": "Aquila heliaca",
+ "Little Auk": "Alle alle",
+ "Lesser Spotted Woodpecker": "Dendrocopos minor",
+ "Iceland Gull": "Larus glaucoides",
+ "Parasitic Jaeger": "Stercorarius parasiticus",
+ "Bewick`s Swan": "Cygnus bewickii",
+ "Little Bustard": "Tetrax tetrax",
+ "Little Crake": "Porzana parva",
+ "Baillon`s Crake": "Porzana pusilla",
+ "Long-tailed Jaeger": "Stercorarius longicaudus",
+ "King Eider": "Somateria spectabilis",
+ "Greater Short-toed Lark": "Calandrella brachydactyla",
+ "Houbara Bustard": "Chlamydotis undulata",
+ "Curlew Sandpiper": "Calidris ferruginea",
+ "Common Crossbill": "Loxia curvirostra",
+ "European Shag": "Phalacrocorax aristotelis",
+ "Horned Grebe": "Podiceps auritus",
+ "Common Quail": "Coturnix coturnix",
+ "Bearded Vulture": "Gypaetus barbatus",
+ "Lanner Falcon": "Falco biarmicus",
+ "Middle Spotted Woodpecker": "Dendrocopos medius",
+ "Pomarine Jaeger": "Stercorarius pomarinus",
+ "Red-breasted Merganser": "Mergus serrator",
+ "Eurasian Black Vulture": "Aegypius monachus",
+ "Eurasian Dotterel": "Charadrius morinellus",
+ "Common Nightingale": "Luscinia megarhynchos",
+ "Northern willow warbler": "Phylloscopus trochilus acredula",
+ "Manx Shearwater": "Puffinus puffinus",
+ "Northern Fulmar": "Fulmarus glacialis",
+ "Eurasian Eagle Owl": "Bubo bubo",
+ "Orphean Warbler": "Sylvia hortensis",
+ "Melodious Warbler": "Hippolais polyglotta",
+ "Pallas's Leaf Warbler": "Phylloscopus proregulus",
+ "Atlantic Puffin": "Fratercula arctica",
+ "Black-throated Loon": "Gavia arctica",
+ "Bohemian Waxwing": "Bombycilla garrulus",
+ "Marsh Sandpiper": "Tringa stagnatilis",
+ "Great Snipe": "Gallinago media",
+ "Squacco Heron": "Ardeola ralloides",
+ "Long-eared Owl": "Asio otus",
+ "Caspian Tern": "Hydroprogne caspia",
+ "Red-breasted Goose": "Branta ruficollis",
+ "Red-throated Loon": "Gavia stellata",
+ "Common Rosefinch": "Carpodacus erythrinus",
+ "Red-footed Falcon": "Falco vespertinus",
+ "Ross's Goose": "Anser rossii",
+ "Red Phalarope": "Phalaropus fulicarius",
+ "Pied Wagtail": "Motacilla yarrellii",
+ "Rose-coloured Starling": "Sturnus roseus",
+ "Rough-legged Buzzard": "Buteo lagopus",
+ "Saker Falcon": "Falco cherrug",
+ "European Roller": "Coracias garrulus",
+ "Short-toed Eagle": "Circaetus gallicus",
+ "Peregrine Falcon": "Falco peregrinus",
+ "Merlin": "Falco columbarius",
+ "Snow Goose": "Anser caerulescens",
+ "Snowy Owl": "Bubo scandiacus",
+ "Snow Bunting": "Plectrophenax nivalis",
+ "Common Grasshopper Warbler": "Locustella naevia",
+ "Golden Eagle": "Aquila chrysaetos",
+ "Black-winged Stilt": "Himantopus himantopus",
+ "Steppe Eagle": "Aquila nipalensis",
+ "Pallid Harrier": "Circus macrourus",
+ "European Storm-petrel": "Hydrobates pelagicus",
+ "Horned Lark": "Eremophila alpestris",
+ "Eurasian Treecreeper": "Certhia familiaris",
+ "Taiga Bean Goose": "Anser fabalis",
+ "Temminck`s Stint": "Calidris temminckii",
+ "Terek Sandpiper": "Xenus cinereus",
+ "Tundra Bean Goose": "Anser serrirostris",
+ "European Turtle Dove": "Streptopelia turtur",
+ "Leach`s Storm-petrel": "Oceanodroma leucorhoa",
+ "Eurasian Griffon Vulture": "Gyps fulvus",
+ "Paddyfield Warbler": "Acrocephalus agricola",
+ "Osprey": "Pandion haliaetus",
+ "Firecrest": "Regulus ignicapilla",
+ "Water Rail": "Rallus aquaticus",
+ "European Honey Buzzard": "Pernis apivorus",
+ "Eurasian Golden Oriole": "Oriolus oriolus",
+ "Whooper Swan": "Cygnus cygnus",
+ "Two-barred Crossbill": "Loxia leucoptera",
+ "White-tailed Eagle": "Haliaeetus albicilla",
+ "Atlantic Murre": "Uria aalge",
+ "Garganey": "Anas querquedula",
+ "Black Redstart": "Phoenicurus ochruros",
+ "Common Scoter": "Melanitta nigra",
+ "Rock Pipit": "Anthus petrosus",
+ "Lesser Spotted Eagle": "Aquila pomarina",
+ "Cattle Egret": "Bubulcus ibis",
+ "White-winged Black Tern": "Chlidonias leucopterus",
+ "Black Stork": "Ciconia nigra",
+ "Mediterranean Gull": "Larus melanocephalus",
+ "Black Kite": "Milvus migrans",
+ "Yellow Wagtail": "Motacilla flavissima",
+ "Red-necked Grebe": "Podiceps grisegena",
+ "Gull-billed Tern": "Gelochelidon nilotica",
+ "Pectoral Sandpiper": "Calidris melanotos",
+ "Barred Warbler": "Sylvia nisoria",
+ "Red-throated Pipit": "Anthus cervinus",
+ "Grey Wagtail": "Motacilla cinerea",
+ "Richard`s Pipit": "Anthus richardi",
+ "Black Woodpecker": "Dryocopus martius",
+ "Little Ringed Plover": "Charadrius dubius",
+ "Whiskered Tern": "Chlidonias hybrida",
+ "Lesser Redpoll": "Carduelis cabaret",
+ "Pallas' Bunting": "Emberiza pallasi",
+ "Ferruginous Duck": "Aythya nyroca",
+ "Whistling Swan": "Cygnus columbianus",
+ "Black Brant": "Branta nigricans",
+ "Marbled Teal": "Marmaronetta angustirostris",
+ "Canvasback": "Aythya valisineria",
+ "Redhead": "Aythya americana",
+ "Lesser Scaup": "Aythya affinis",
+ "Steller`s Eider": "Polysticta stelleri",
+ "Spectacled Eider": "Somateria fischeri",
+ "Harlequin Duck": "Histronicus histrionicus",
+ "Black Scoter": "Melanitta americana",
+ "Surf Scoter": "Melanitta perspicillata",
+ "Barrow`s Goldeneye": "Bucephala islandica",
+ "Falcated Duck": "Anas falcata",
+ "American Wigeon": "Anas americana",
+ "Blue-winged Teal": "Anas discors",
+ "American Black Duck": "Anas rubripes",
+ "Baikal Teal": "Anas formosa",
+ "Green-Winged Teal": "Anas carolinensis",
+ "Hazel Grouse": "Bonasa bonasia",
+ "Rock Partridge": "Alectoris graeca",
+ "Red-legged Partridge": "Alectoris rufa",
+ "Yellow-billed Loon": "Gavia adamsii",
+ "Cory`s Shearwater": "Calonectris borealis",
+ "Madeiran Storm-Petrel": "Oceanodroma castro",
+ "Great White Pelican": "Pelecanus onocrotalus",
+ "Dalmatian Pelican": "Pelecanus crispus",
+ "American Bittern": "Botaurus lentiginosus",
+ "Glossy Ibis": "Plegadis falcinellus",
+ "Spanish Imperial Eagle": "Aquila adalberti",
+ "Lesser Kestrel": "Falco naumanni",
+ "Crab-Plover": "Dromas ardeola",
+ "Cream-coloured Courser": "Cursorius cursor",
+ "Collared Pratincole": "Glareola pratincola",
+ "Black-winged Pratincole": "Glareola nordmanni",
+ "Killdeer": "Charadrius vociferus",
+ "Lesser Sand Plover": "Charadrius mongolus",
+ "Greater Sand Plover": "Charadrius leschenaultii",
+ "Caspian Plover": "Charadrius asiaticus",
+ "American Golden Plover": "Pluvialis dominica",
+ "Pacific Golden Plover": "Pluvialis fulva",
+ "Sharp-tailed Sandpiper": "Calidris acuminata",
+ "Broad-billed Sandpiper": "Limicola falcinellus",
+ "Spoon-Billed Sandpiper": "Eurynorhynchus pygmaeus",
+ "Short-Billed Dowitcher": "Limnodromus griseus",
+ "Long-billed Dowitcher": "Limnodromus scolopaceus",
+ "Hudsonian Godwit": "Limosa haemastica",
+ "Little Curlew": "Numenius minutus",
+ "Lesser Yellowlegs": "Tringa flavipes",
+ "Wilson`s Phalarope": "Phalaropus tricolor",
+ "Pallas`s Gull": "Larus ichthyaetus",
+ "Laughing Gull": "Larus atricilla",
+ "Franklin`s Gull": "Larus pipixcan",
+ "Bonaparte`s Gull": "Larus philadelphia",
+ "Ring-billed Gull": "Larus delawarensis",
+ "American Herring Gull": "Larus smithsonianus",
+ "Caspian Gull": "Larus cachinnans",
+ "Ivory Gull": "Pagophila eburnea",
+ "Royal Tern": "Sterna maxima",
+ "Brünnich`s Murre": "Uria lomvia",
+ "Crested Auklet": "Aethia cristatella",
+ "Parakeet Auklet": "Cyclorrhynchus psittacula",
+ "Tufted Puffin": "Lunda cirrhata",
+ "Laughing Dove": "Streptopelia senegalensis",
+ "Great Spotted Cuckoo": "Clamator glandarius",
+ "Great Grey Owl": "Strix nebulosa",
+ "Tengmalm`s Owl": "Aegolius funereus",
+ "Red-Necked Nightjar": "Caprimulgus ruficollis",
+ "Chimney Swift": "Chaetura pelagica",
+ "Green Bea-Eater": "Merops orientalis",
+ "Grey-headed Woodpecker": "Picus canus",
+ "Lesser Short-Toed Lark": "Calandrella rufescens",
+ "Eurasian Crag Martin": "Hirundo rupestris",
+ "Red-rumped Swallow": "Cecropis daurica",
+ "Blyth`s Pipit": "Anthus godlewskii",
+ "Pechora Pipit": "Anthus gustavi",
+ "Grey-headed Wagtail": "Motacilla thunbergi",
+ "Yellow-Headed Wagtail": "Motacilla lutea",
+ "White-throated Dipper": "Cinclus cinclus",
+ "Rufous-Tailed Scrub Robin": "Cercotrichas galactotes",
+ "Thrush Nightingale": "Luscinia luscinia",
+ "White-throated Robin": "Irania gutturalis",
+ "Caspian Stonechat": "Saxicola maura variegata",
+ "Western Black-eared Wheatear": "Oenanthe hispanica",
+ "Rufous-tailed Rock Thrush": "Monticola saxatilis",
+ "Red-throated Thrush/Black-throated": "Turdus ruficollis",
+ "American Robin": "Turdus migratorius",
+ "Zitting Cisticola": "Cisticola juncidis",
+ "Lanceolated Warbler": "Locustella lanceolata",
+ "River Warbler": "Locustella fluviatilis",
+ "Blyth`s Reed Warbler": "Acrocephalus dumetorum",
+ "Caspian Reed Warbler": "Acrocephalus fuscus",
+ "Aquatic Warbler": "Acrocephalus paludicola",
+ "Booted Warbler": "Acrocephalus caligatus",
+ "Marmora's Warbler": "Sylvia sarda",
+ "Dartford Warbler": "Sylvia undata",
+ "Subalpine Warbler": "Sylvia cantillans",
+ "Ménétries's Warbler": "Sylvia mystacea",
+ "Rüppel's Warbler": "Sylvia rueppelli",
+ "Asian Desert Warbler": "Sylvia nana",
+ "Western Orphean Warbler": "Sylvia hortensis hortensis",
+ "Arctic Warbler": "Phylloscopus borealis",
+ "Radde`s Warbler": "Phylloscopus schwarzi",
+ "Western Bonelli`s Warbler": "Phylloscopus bonelli",
+ "Red-breasted Flycatcher": "Ficedula parva",
+ "Eurasian Penduline Tit": "Remiz pendulinus",
+ "Daurian Shrike": "Lanius isabellinus",
+ "Long-Tailed Shrike": "Lanius schach",
+ "Lesser Grey Shrike": "Lanius minor",
+ "Southern Grey Shrike": "Lanius meridionalis",
+ "Masked Shrike": "Lanius nubicus",
+ "Spotted Nutcracker": "Nucifraga caryocatactes",
+ "Daurian Jackdaw": "Corvus dauuricus",
+ "Purple-Backed Starling": "Sturnus sturninus",
+ "Red-Fronted Serin": "Serinus pusillus",
+ "Arctic Redpoll": "Carduelis hornemanni",
+ "Scottish Crossbill": "Loxia scotica",
+ "Parrot Crossbill": "Loxia pytyopsittacus",
+ "Black-faced Bunting": "Emberiza spodocephala",
+ "Pink-footed Goose": "Anser brachyrhynchus",
+ "Black-winged Kite": "Elanus caeruleus",
+ "European Bee-eater": "Merops apiaster",
+ "Sabine`s Gull": "Larus sabini",
+ "Sooty Shearwater": "Puffinus griseus",
+ "Lesser Canada Goose": "Branta hutchinsii",
+ "Ring-necked Duck": "Aythya collaris",
+ "Greater Flamingo": "Phoenicopterus roseus",
+ "Iberian Chiffchaff": "Phylloscopus ibericus",
+ "Ashy-headed Wagtail": "Motacilla cinereocapilla",
+ "Stilt Sandpiper": "Calidris himantopus",
+ "Siberian Stonechat": "Saxicola maurus",
+ "Greater Yellowlegs": "Tringa melanoleuca",
+ "Forster`s Tern": "Sterna forsteri",
+ "Dusky Warbler": "Phylloscopus fuscatus",
+ "Cirl Bunting": "Emberiza cirlus",
+ "Olive-backed Pipit": "Anthus hodgsoni",
+ "Sociable Lapwing": "Vanellus gregarius",
+ "Spotted Sandpiper": "Actitis macularius",
+ "Baird`s Sandpiper": "Calidris bairdii",
+ "Rustic Bunting": "Emberiza rustica",
+ "Yellow-browed Bunting": "Emberiza chrysophrys",
+ "Great Shearwater": "Puffinus gravis",
+ "Bonelli`s Eagle": "Aquila fasciata",
+ "Calandra Lark": "Melanocorypha calandra",
+ "Sardinian Warbler": "Sylvia melanocephala",
+ "Ross's Gull": "Larus roseus",
+ "Yellow-Breasted Bunting": "Emberiza aureola",
+ "Pine Bunting": "Emberiza leucocephalos",
+ "Black Guillemot": "Cepphus grylle",
+ "Pied-billed Grebe": "Podilymbus podiceps",
+ "Soft-plumaged Petrel": "Pterodroma mollis",
+ "Bulwer's Petrel": "Bulweria bulwerii",
+ "White-Faced Storm-Petrel": "Pelagodroma marina",
+ "Pallas’s Fish Eagle": "Haliaeetus leucoryphus",
+ "Sandhill Crane": "Grus canadensis",
+ "Macqueen’s Bustard": "Chlamydotis macqueenii",
+ "White-tailed Lapwing": "Vanellus leucurus",
+ "Great Knot": "Calidris tenuirostris",
+ "Semipalmated Sandpiper": "Calidris pusilla",
+ "Red-necked Stint": "Calidris ruficollis",
+ "Slender-billed Curlew": "Numenius tenuirostris",
+ "Bridled Tern": "Onychoprion anaethetus",
+ "Pallas’s Sandgrouse": "Syrrhaptes paradoxus",
+ "European Scops Owl": "Otus scops",
+ "Northern Hawk Owl": "Surnia ulula",
+ "White-Throated Needletail": "Hirundapus caudacutus",
+ "Belted Kingfisher": "Ceryle alcyon",
+ "Blue-cheeked Bee-eater": "Merops persicus",
+ "Black-headed Wagtail": "Motacilla feldegg",
+ "Northern Mockingbird": "Mimus polyglottos",
+ "Alpine Accentor": "Prunella collaris",
+ "Red-flanked Bluetail": "Tarsiger cyanurus",
+ "Isabelline Wheatear": "Oenanthe isabellina",
+ "Pied Wheatear": "Oenanthe pleschanka",
+ "Eastern Black-eared Wheatear": "Oenanthe melanoleuca",
+ "Desert Wheatear": "Oenanthe deserti",
+ "White`s Thrush": "Zoothera aurea",
+ "Siberian Thrush": "Zoothera sibirica",
+ "Eyebrowed Thrush": "Turdus obscurus",
+ "Dusky Thrush": "Turdus eunomus",
+ "Black-throated Thrush": "Turdus atrogularis",
+ "Pallas`s Grasshopper Warbler": "Locustella certhiola",
+ "Spectacled Warbler": "Sylvia conspicillata",
+ "Two-barred Warbler": "Phylloscopus plumbeitarsus",
+ "Eastern Bonelli’s Warbler": "Phylloscopus orientalis",
+ "Collared Flycatcher": "Ficedula albicollis",
+ "Wallcreeper": "Tichodroma muraria",
+ "Turkestan Shrike": "Lanius phoenicuroides",
+ "Steppe Grey Shrike": "Lanius pallidirostris",
+ "Spanish Sparrow": "Passer hispaniolensis",
+ "Red-eyed Vireo": "Vireo olivaceus",
+ "Myrtle Warbler": "Dendroica coronata",
+ "White-crowned Sparrow": "Zonotrichia leucophrys",
+ "White-throated Sparrow": "Zonotrichia albicollis",
+ "Cretzschmar`s Bunting": "Emberiza caesia",
+ "Chestnut Bunting": "Emberiza rutila",
+ "Red-headed Bunting": "Emberiza bruniceps",
+ "Black-headed Bunting": "Emberiza melanocephala",
+ "Indigo Bunting": "Passerina cyanea",
+ "Balearic Woodchat Shrike": "Lanius senator badius",
+ "Demoiselle Crane": "Grus virgo",
+ "Chough": "Pyrrhocorax pyrrhocorax",
+ "Red-Billed Chough": "Pyrrhocorax graculus",
+ "Elegant Tern": "Sterna elegans",
+ "Chukar": "Alectoris chukar",
+ "Yellow-Billed Cuckoo": "Coccyzus americanus",
+ "American Sandwich Tern": "Sterna sandvicensis acuflavida",
+ "Olive-Tree Warbler": "Hippolais olivetorum",
+ "Eastern Olivaceous Warbler": "Acrocephalus pallidus",
+ "Indian Cormorant": "Phalacrocorax fuscicollis",
+ "Spur-Winged Lapwing": "Vanellus spinosus",
+ "Yelkouan Shearwater": "Puffinus yelkouan",
+ "Trumpeter Finch": "Bucanetes githagineus",
+ "Red Grouse": "Lagopus scoticus",
+ "Rock Ptarmigan": "Lagopus mutus",
+ "Long-Tailed Cormorant": "Phalacrocorax africanus",
+ "Double-crested Cormorant": "Phalacrocorax auritus",
+ "Magnificent Frigatebird": "Fregata magnificens",
+ "Naumann's Thrush": "Turdus naumanni",
+ "Oriental Pratincole": "Glareola maldivarum",
+ "Bufflehead": "Bucephala albeola",
+ "Snowfinch": "Montifrigilla nivalis",
+ "Ural owl": "Strix uralensis",
+ "Spanish Wagtail": "Motacilla iberiae",
+ "Song Sparrow": "Melospiza melodia",
+ "Rock Bunting": "Emberiza cia",
+ "Siberian Rubythroat": "Luscinia calliope",
+ "Pallid Swift": "Apus pallidus",
+ "Eurasian Pygmy Owl": "Glaucidium passerinum",
+ "Madeira Little Shearwater": "Puffinus baroli",
+ "House Finch": "Carpodacus mexicanus",
+ "Green Heron": "Butorides virescens",
+ "Solitary Sandpiper": "Tringa solitaria",
+ "Heuglin's Gull": "Larus heuglini"
};
function searchResponse( term ) {
term = term.toLowerCase();
@@ -584,7 +584,7 @@
for ( var key in database ) {
if ( key.toLowerCase().indexOf( term ) !== -1 ) {
result.push( {
- id: database[key],
+ id: database[ key ],
label: key,
value: key
} );
@@ -596,32 +596,32 @@
return result;
}
$.ajaxTransport( "json", function( options, originalOptions ) {
- if ( options.url.indexOf( 'search.json' ) === -1 ) {
+ if ( options.url.indexOf( "search.json" ) === -1 ) {
return;
}
return {
- abort: function () {},
- send: function ( headers, completeCallback ) {
- console.log( 'Mocked AJAX response for ' + options.url );
- var result = searchResponse( originalOptions.data.term || '' );
+ abort: function() {},
+ send: function( headers, completeCallback ) {
+ console.log( "Mocked AJAX response for " + options.url );
+ var result = searchResponse( originalOptions.data.term || "" );
setTimeout( function() {
- completeCallback( 200, 'OK', { text: JSON.stringify( result ) }, [] );
+ completeCallback( 200, "OK", { text: JSON.stringify( result ) }, [] );
}, 2000 );
}
};
} );
$.ajaxTransport( "script", function( options, originalOptions ) {
- if ( options.url.indexOf( 'search.json' ) === -1 ) {
+ if ( options.url.indexOf( "search.json" ) === -1 ) {
return;
}
return {
- abort: function () {},
- send: function ( headers, completeCallback ) {
- console.log( 'Mocked AJAX response for ' + options.url );
- var result = searchResponse( originalOptions.data.term || '' );
- var script = options.jsonpCallback + '(' + JSON.stringify( result ) + ')';
+ abort: function() {},
+ send: function( headers, completeCallback ) {
+ console.log( "Mocked AJAX response for " + options.url );
+ var result = searchResponse( originalOptions.data.term || "" );
+ var script = options.jsonpCallback + "(" + JSON.stringify( result ) + ")";
setTimeout( function() {
- completeCallback( 200, 'OK', { text: script }, [] );
+ completeCallback( 200, "OK", { text: script }, [] );
}, 2000 );
}
};
diff --git a/ui/.eslintrc.json b/ui/.eslintrc.json
index 004803729b..eaba81af2a 100644
--- a/ui/.eslintrc.json
+++ b/ui/.eslintrc.json
@@ -1,4 +1,8 @@
{
+ "root": true,
+
+ "extends": "jquery",
+
"parserOptions": {
"ecmaVersion": 5
},
From e399092c3ef6ea29443e879695268fc09c6ea9bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Fri, 25 Oct 2024 23:45:12 +0200
Subject: [PATCH 28/53] Build: Add a CodeQL non-mandatory check
This is backported from Core at:
https://github.com/jquery/jquery/blob/19716254877870ecd649272cadd00a0d0ff8be01/.github/workflows/codeql-analysis.yml
Closes gh-2306
---
.github/workflows/codeql-analysis.yml | 58 +++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
create mode 100644 .github/workflows/codeql-analysis.yml
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 0000000000..981b6912b8
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,58 @@
+name: "Code scanning - action"
+
+on:
+ pull_request:
+ push:
+ branches-ignore: "dependabot/**"
+ schedule:
+ - cron: "0 4 * * 6"
+
+permissions:
+ contents: read # to fetch code (actions/checkout)
+
+jobs:
+ CodeQL-Build:
+ permissions:
+ contents: read # to fetch code (actions/checkout)
+ security-events: write # (github/codeql-action/autobuild)
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ with:
+ # We must fetch at least the immediate parents so that if this is
+ # a pull request then we can checkout the head.
+ fetch-depth: 2
+
+ # If this run was triggered by a pull request event, then checkout
+ # the head of the pull request instead of the merge commit.
+ - run: git checkout HEAD^2
+ if: ${{ github.event_name == 'pull_request' }}
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
+ # Override language selection by uncommenting this and choosing your languages
+ # with:
+ # languages: go, javascript, csharp, python, cpp, java
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
From ebdcd0d866a5d318c5255c2d6404867878d06d47 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Fri, 25 Oct 2024 23:46:00 +0200
Subject: [PATCH 29/53] Tests: Fix titles of `jquery-patch.js` tests
The pages were erroneously titled after "Form Reset Mixin".
Closes gh-2308
---
tests/unit/jquery-patch/all.html | 2 +-
tests/unit/jquery-patch/jquery-patch.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/unit/jquery-patch/all.html b/tests/unit/jquery-patch/all.html
index d26b503734..9daa8c6b24 100644
--- a/tests/unit/jquery-patch/all.html
+++ b/tests/unit/jquery-patch/all.html
@@ -2,7 +2,7 @@
- jQuery UI Form Reset Mixin Test Suite
+ jQuery UI Legacy jQuery Core patches Test Suite
diff --git a/tests/unit/jquery-patch/jquery-patch.html b/tests/unit/jquery-patch/jquery-patch.html
index a20e25d4a1..53ce97c9bf 100644
--- a/tests/unit/jquery-patch/jquery-patch.html
+++ b/tests/unit/jquery-patch/jquery-patch.html
@@ -2,7 +2,7 @@
- jQuery UI Form Reset Mixin Test Suite
+ jQuery UI Legacy jQuery Core patches Test Suite
From af8adca5481d0ac5db0865032b6c4c7e21421be7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Sun, 27 Oct 2024 00:04:00 +0200
Subject: [PATCH 30/53] Tabs: Use `CSS.escape` for sanitizing selectors
The previous private `_sanitizeSelector` API was not correctly escaping
backslashes and is now removed. The native API should always be correct.
Closes gh-2307
---
tests/unit/tabs/core.js | 31 +++++++++++++++++++++++++++++++
tests/unit/tabs/helper.js | 3 +--
ui/widgets/tabs.js | 16 ++++++----------
3 files changed, 38 insertions(+), 12 deletions(-)
diff --git a/tests/unit/tabs/core.js b/tests/unit/tabs/core.js
index ae670ff430..c2fd890488 100644
--- a/tests/unit/tabs/core.js
+++ b/tests/unit/tabs/core.js
@@ -84,6 +84,37 @@ QUnit.test( "non-tab list items", function( assert ) {
"first actual tab is active" );
} );
+QUnit.test( "ID escaping backslashes", function( assert ) {
+ assert.expect( 5 );
+
+ location.hash = "#fragment\b-2";
+
+ var element = $( "#tabs1" )
+ .find( "a[href='#fragment-2']" )
+ .attr( "href", "#fragment\b-2" )
+ .end()
+ .find( "#fragment-2" )
+ .attr( "id", "fragment\b-2" )
+ .end()
+ .tabs();
+ var tabs = element.find( ".ui-tabs-nav li" );
+ var anchors = tabs.find( ".ui-tabs-anchor" );
+ var panels = element.find( ".ui-tabs-panel" );
+
+ assert.strictEqual( element.tabs( "option", "active" ), 1,
+ "should set the active option" );
+
+ assert.strictEqual( anchors.length, 3, "should decorate all anchors" );
+ assert.strictEqual( panels.length, 3, "should decorate all panels" );
+
+ assert.strictEqual( panels.eq( 1 ).attr( "aria-labelledby" ), anchors.eq( 1 ).attr( "id" ),
+ "panel 2 aria-labelledby equals anchor 2 id" );
+ assert.strictEqual( tabs.eq( 1 ).attr( "aria-controls" ), "fragment\b-2",
+ "tab 2 aria-controls" );
+
+ location.hash = "";
+} );
+
QUnit.test( "aria-controls", function( assert ) {
assert.expect( 7 );
var element = $( "#tabs1" ).tabs(),
diff --git a/tests/unit/tabs/helper.js b/tests/unit/tabs/helper.js
index b3fb1d6fd4..4043d86d8f 100644
--- a/tests/unit/tabs/helper.js
+++ b/tests/unit/tabs/helper.js
@@ -58,8 +58,7 @@ return $.extend( helper, {
var expected = $.makeArray( arguments ).slice( 2 ),
actual = tabs.find( ".ui-tabs-nav li" ).map( function() {
var tab = $( this ),
- panel = $( $.ui.tabs.prototype._sanitizeSelector(
- "#" + tab.attr( "aria-controls" ) ) ),
+ panel = $( "#" + CSS.escape( tab.attr( "aria-controls" ) ) ),
tabIsActive = tab.hasClass( "ui-state-active" ),
panelIsActive = panel.css( "display" ) !== "none";
diff --git a/ui/widgets/tabs.js b/ui/widgets/tabs.js
index 72b868e4f0..7b7907c327 100644
--- a/ui/widgets/tabs.js
+++ b/ui/widgets/tabs.js
@@ -121,14 +121,14 @@ $.widget( "ui.tabs", {
_initialActive: function() {
var active = this.options.active,
collapsible = this.options.collapsible,
- locationHash = location.hash.substring( 1 );
+ locationHashDecoded = decodeURIComponent( location.hash.substring( 1 ) );
if ( active === null ) {
// check the fragment identifier in the URL
- if ( locationHash ) {
+ if ( locationHashDecoded ) {
this.tabs.each( function( i, tab ) {
- if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+ if ( $( tab ).attr( "aria-controls" ) === locationHashDecoded ) {
active = i;
return false;
}
@@ -312,10 +312,6 @@ $.widget( "ui.tabs", {
}
},
- _sanitizeSelector: function( hash ) {
- return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
- },
-
refresh: function() {
var options = this.options,
lis = this.tablist.children( ":has(a[href])" );
@@ -434,9 +430,9 @@ $.widget( "ui.tabs", {
// Inline tab
if ( that._isLocal( anchor ) ) {
- selector = anchor.hash;
+ selector = decodeURIComponent( anchor.hash );
panelId = selector.substring( 1 );
- panel = that.element.find( that._sanitizeSelector( selector ) );
+ panel = that.element.find( "#" + CSS.escape( panelId ) );
// remote tab
} else {
@@ -874,7 +870,7 @@ $.widget( "ui.tabs", {
_getPanelForTab: function( tab ) {
var id = $( tab ).attr( "aria-controls" );
- return this.element.find( this._sanitizeSelector( "#" + id ) );
+ return this.element.find( "#" + CSS.escape( id ) );
}
} );
From 85bed8ddd893390fd41bd7e93d2a44a1b5d9b885 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 28 Oct 2024 16:47:29 +0100
Subject: [PATCH 31/53] Build: Fix an XSS in the test server HTML serving logic
The test server has a rule for `/tests/unit/*/*.html` paths that serves
a proper local file. However, the parameters after `/unit/` so far accepted
many characters that have special meaning, leading to possibly reading a file
from outside of the Git repository. Fix that by only accepting alphanumeric
characters, `-` or `_`.
This should resolve one CodeQL alert.
Closes gh-2309
---
tests/runner/createTestServer.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/runner/createTestServer.js b/tests/runner/createTestServer.js
index 67770c71d8..875e6d3b13 100644
--- a/tests/runner/createTestServer.js
+++ b/tests/runner/createTestServer.js
@@ -22,7 +22,7 @@ export async function createTestServer( report ) {
} );
// Add a script tag to HTML pages to load the QUnit listeners
- app.use( /\/tests\/unit\/([^/]+)\/\1\.html$/, async( req, res ) => {
+ app.use( /\/tests\/unit\/([a-zA-Z0-9_-]+)\/\1\.html$/, async( req, res ) => {
const html = await readFile(
`tests/unit/${ req.params[ 0 ] }/${ req.params[ 0 ] }.html`,
"utf8"
From d591bdd494cf28a399ea7d7ae7ccbae3a5cab020 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Wed, 30 Oct 2024 09:58:01 +0100
Subject: [PATCH 32/53] Widget: Don't let widget name affect `$.ui` prototype &
constructor
This is an edge case and it only affects code accepting untrusted input as
a widget name, but it's still technically correct to filter these out.
Closes gh-2310
---
tests/unit/widget/core.js | 22 ++++++++++++++++++++++
ui/widget.js | 3 +++
2 files changed, 25 insertions(+)
diff --git a/tests/unit/widget/core.js b/tests/unit/widget/core.js
index fe74e18e94..38e63a8c05 100644
--- a/tests/unit/widget/core.js
+++ b/tests/unit/widget/core.js
@@ -242,6 +242,28 @@ QUnit.test( "error handling", function( assert ) {
$.error = error;
} );
+QUnit.test( "Prototype pollution", function( assert ) {
+ assert.expect( 3 );
+
+ var elem = $( "" );
+
+ $.widget( "ui.testWidget", {} );
+
+ elem.testWidget();
+
+ try {
+ $.widget( "ui.__proto__", {} );
+ } catch ( _e ) {}
+ try {
+ $.widget( "ui.constructor", {} );
+ } catch ( _e ) {}
+
+ assert.strictEqual( Object.getPrototypeOf( $.ui ), Object.prototype,
+ "$.ui constructor not modified" );
+ assert.ok( $.ui instanceof Object, "$.ui is an Object instance" );
+ assert.notOk( $.ui instanceof Function, "$.ui is not a Function instance" );
+} );
+
QUnit.test( "merge multiple option arguments", function( assert ) {
assert.expect( 1 );
$.widget( "ui.testWidget", {
diff --git a/ui/widget.js b/ui/widget.js
index 7201b4fbf6..d5fbd885cf 100644
--- a/ui/widget.js
+++ b/ui/widget.js
@@ -56,6 +56,9 @@ $.widget = function( name, base, prototype ) {
var namespace = name.split( "." )[ 0 ];
name = name.split( "." )[ 1 ];
+ if ( name === "__proto__" || name === "constructor" ) {
+ return $.error( "Invalid widget name: " + name );
+ }
var fullName = namespace + "-" + name;
if ( !prototype ) {
From 3bb4232bfa792debf0b858c7eba58c4d080941b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Wed, 30 Oct 2024 17:02:00 +0100
Subject: [PATCH 33/53] Build: Update a few dependencies, drop `grunt-cli`
`grunt` already contains the needed binary, no need for `grunt-cli` anymore.
Update `download.jqueryui.com` as well.
Closes gh-2311
---
build/release.js | 2 +-
build/tasks/build.js | 2 +-
package.json | 9 ++++-----
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/build/release.js b/build/release.js
index 14fbd6f153..633dd34d12 100644
--- a/build/release.js
+++ b/build/release.js
@@ -153,7 +153,7 @@ Release.define( {
};
module.exports.dependencies = [
- "download.jqueryui.com@2.3.10",
+ "download.jqueryui.com@2.3.12",
"node-packager@0.0.7",
"shelljs@0.8.5"
];
diff --git a/build/tasks/build.js b/build/tasks/build.js
index 48feb7aba1..bd07364ea3 100644
--- a/build/tasks/build.js
+++ b/build/tasks/build.js
@@ -3,7 +3,7 @@
module.exports = function( grunt ) {
grunt.registerTask( "clean", function() {
- require( "rimraf" ).sync( "dist" );
+ require( "rimraf" ).rimrafSync( "dist" );
} );
grunt.registerTask( "asciilint", function() {
diff --git a/package.json b/package.json
index f9f83b4025..2cb41ef9e3 100644
--- a/package.json
+++ b/package.json
@@ -61,11 +61,10 @@
"diff": "5.2.0",
"eslint-config-jquery": "3.0.2",
"exit-hook": "4.0.0",
- "express": "4.20.0",
+ "express": "4.21.1",
"express-body-parser-error-handler": "1.0.7",
"grunt": "1.6.1",
"grunt-bowercopy": "1.2.5",
- "grunt-cli": "1.4.3",
"grunt-compare-size": "0.4.2",
"grunt-contrib-concat": "2.1.0",
"grunt-contrib-csslint": "2.0.0",
@@ -73,10 +72,10 @@
"grunt-contrib-uglify": "5.2.2",
"grunt-eslint": "24.0.1",
"grunt-git-authors": "3.2.0",
- "grunt-html": "16.0.0",
+ "grunt-html": "17.1.0",
"load-grunt-tasks": "5.1.0",
- "rimraf": "4.4.1",
- "selenium-webdriver": "4.18.1",
+ "rimraf": "6.0.1",
+ "selenium-webdriver": "4.26.0",
"yargs": "17.7.2"
},
"keywords": []
From bf0d4c3a06852622487c08991f702f225b9631dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Wed, 30 Oct 2024 17:02:53 +0100
Subject: [PATCH 34/53] Docs: Update AUTHORS.txt
---
AUTHORS.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 5b10979cae..b855d39997 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -381,3 +381,4 @@ divdeploy <166095818+divdeploy@users.noreply.github.com>
mark van tilburg
Ralf Koller <1665422+rpkoller@users.noreply.github.com>
Porter Clevidence <116387727+porterclev@users.noreply.github.com>
+Daniel García <93217193+Daniel-Garmig@users.noreply.github.com>
From f7bff7b6c19f4279a9e69c1f6ab2eb51ba83ce04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?=
Date: Wed, 30 Oct 2024 17:24:49 +0100
Subject: [PATCH 35/53] Build: Updating the main version to 1.14.2-pre.
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 2cb41ef9e3..f82758844a 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jquery-ui",
"title": "jQuery UI",
"description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
- "version": "1.14.1-pre",
+ "version": "1.14.2-pre",
"homepage": "https://jqueryui.com",
"author": {
"name": "OpenJS Foundation and other contributors",
From f76bbcd512290621227babf1f72fc295ffdf2983 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 3 Nov 2024 13:28:54 +0100
Subject: [PATCH 36/53] Build: Bump the github-actions group with 4 updates
Bumps the github-actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [github/codeql-action](https://github.com/github/codeql-action), [actions/setup-node](https://github.com/actions/setup-node) and [actions/cache](https://github.com/actions/cache).
Closes gh-2312
Updates `actions/checkout` from 4.2.0 to 4.2.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/d632683dd7b4114ad314bca15554477dd762a938...11bd71901bbe5b1630ceea73d27597364c9af683)
Updates `github/codeql-action` from 3.26.10 to 3.27.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/e2b3eafc8d227b0241d48be5f425d47c2d750a13...662472033e021d55d94146f66f6058822b0b39fd)
Updates `actions/setup-node` from 4.0.4 to 4.1.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/0a44ba7841725637a19e28fa30b79a866c81b0a6...39370e3970a6d050c480ffad4ff0ed4d3fdee5af)
Updates `actions/cache` from 4.0.2 to 4.1.2
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/0c45773b623bea8c8e75f6c82b208c3cf94ea4f9...6849a6489940f00c2f30c0fb92c6274307ccb58a)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
- dependency-name: actions/setup-node
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/codeql-analysis.yml | 8 ++++----
.github/workflows/filestash.yml | 6 +++---
.github/workflows/node.js.yml | 18 +++++++++---------
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 981b6912b8..06e8e59328 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -33,7 +33,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
+ uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
@@ -41,7 +41,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
+ uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -55,4 +55,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
+ uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
diff --git a/.github/workflows/filestash.yml b/.github/workflows/filestash.yml
index f3944447a8..b311ce8992 100644
--- a/.github/workflows/filestash.yml
+++ b/.github/workflows/filestash.yml
@@ -17,15 +17,15 @@ jobs:
name: Update Filestash
steps:
- name: Checkout
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
+ uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
+ uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 22116c7dab..caac8c0479 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -31,15 +31,15 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
+ uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
+ uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
@@ -75,15 +75,15 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
+ uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
+ uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
@@ -116,15 +116,15 @@ jobs:
name: jQuery stable
steps:
- name: Checkout
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
+ uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
+ uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
From 7fb4cf1168f950dbdaf86ef0bb8cd0bfc654bbce Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 6 Dec 2024 15:53:50 +0100
Subject: [PATCH 37/53] Build: Bump github/codeql-action from 3.27.0 to 3.27.5
in the github-actions group
Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).
Updates `github/codeql-action` from 3.27.0 to 3.27.5
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/662472033e021d55d94146f66f6058822b0b39fd...f09c1c0a94de965c15400f5634aa42fac8fb8f88)
Closes gh-2318
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/codeql-analysis.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 06e8e59328..cb990610bd 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -33,7 +33,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
+ uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
@@ -41,7 +41,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
+ uses: github/codeql-action/autobuild@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -55,4 +55,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
+ uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5
From 0be13b57cad253dbb5dc7fd3860239b4474d4b26 Mon Sep 17 00:00:00 2001
From: Timmy Willison
Date: Wed, 18 Dec 2024 10:14:42 -0500
Subject: [PATCH 38/53] Demos: fix easing demos
Closes gh-2320
---
demos/effect/easing.html | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/demos/effect/easing.html b/demos/effect/easing.html
index 4bee1c41f1..3014f76203 100644
--- a/demos/effect/easing.html
+++ b/demos/effect/easing.html
@@ -26,8 +26,12 @@
height = 100;
$.each( $.easing, function( name, impl ) {
+ // Skip _default property
+ if ( typeof impl !== "function" ) {
+ return;
+ }
var graph = $( "" ).addClass( "graph" ).appendTo( "#graphs" ),
- text = $( "
" ).text( ++i + ". " + name ).appendTo( graph ),
+ text = $( "
" ).text( name ).css({ fontSize: "13px", textAlign: "center", whiteSpace: "nowrap" }).appendTo( graph ),
wrap = $( "
" ).appendTo( graph ).css( 'overflow', 'hidden' ),
canvas = $( "
+
+