Skip to content

Commit

Permalink
All: Drop $.ui.escapeSelector in favor of $.escapeSelector
Browse files Browse the repository at this point in the history
Fixes #14991
Closes gh-1957
  • Loading branch information
mgol committed May 14, 2021
1 parent afe20b7 commit 7c6a9f0
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 37 deletions.
8 changes: 0 additions & 8 deletions tests/unit/core/selector.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ define( [
"jquery",
"lib/helper",
"ui/data",
"ui/escape-selector",
"ui/focusable",
"ui/tabbable"
], function( QUnit, $, helper ) {
Expand Down Expand Up @@ -280,11 +279,4 @@ QUnit.test( "tabbable - dimensionless parent with overflow", function( assert )
assert.isTabbable( "#dimensionlessParent", "input" );
} );

QUnit.test( "escapeSelector", function( assert ) {
assert.expect( 1 );

assert.equal( $( "#" + $.ui.escapeSelector( "weird-['x']-id" ) ).length, 1,
"properly escapes selectors to use as an id" );
} );

} );
21 changes: 0 additions & 21 deletions ui/escape-selector.js

This file was deleted.

30 changes: 30 additions & 0 deletions ui/jquery-patch.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,36 @@ if ( !$.uniqueSort ) {
$.uniqueSort = $.unique;
}

// Support: jQuery 2.2.x or older.
// This method has been defined in jQuery 3.0.0.
// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
if ( !$.escapeSelector ) {

// CSS string/identifier serialization
// https://drafts.csswg.org/cssom/#common-serializing-idioms
var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;

var fcssescape = function( ch, asCodePoint ) {
if ( asCodePoint ) {

// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
if ( ch === "\0" ) {
return "\uFFFD";
}

// Control characters and (dependent upon position) numbers get escaped as code points
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
}

// Other potentially-special ASCII characters get backslash-escaped
return "\\" + ch;
};

$.escapeSelector = function( sel ) {
return ( sel + "" ).replace( rcssescape, fcssescape );
};
}

// Support: jQuery 3.4.x or older
// These methods have been defined in jQuery 3.5.0.
if ( !$.fn.even || !$.fn.odd ) {
Expand Down
4 changes: 2 additions & 2 deletions ui/labels.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
if ( typeof define === "function" && define.amd ) {

// AMD. Register as an anonymous module.
define( [ "jquery", "./version", "./escape-selector" ], factory );
define( [ "jquery", "./version" ], factory );
} else {

// Browser globals
Expand Down Expand Up @@ -53,7 +53,7 @@ return $.fn.labels = function() {
ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );

// Create a selector for the label based on the id
selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
selector = "label[for='" + $.escapeSelector( id ) + "']";

labels = labels.add( ancestors.find( selector ).addBack( selector ) );

Expand Down
3 changes: 1 addition & 2 deletions ui/widgets/checkboxradio.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
// AMD. Register as an anonymous module.
define( [
"jquery",
"../escape-selector",
"../form-reset-mixin",
"../labels",
"../widget"
Expand Down Expand Up @@ -149,7 +148,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
_getRadioGroup: function() {
var group;
var name = this.element[ 0 ].name;
var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";

if ( !name ) {
return $( [] );
Expand Down
3 changes: 1 addition & 2 deletions ui/widgets/selectmenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
define( [
"jquery",
"./menu",
"../escape-selector",
"../form-reset-mixin",
"../keycode",
"../labels",
Expand Down Expand Up @@ -425,7 +424,7 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
}

if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
$.ui.escapeSelector( this.ids.button ) ).length ) {
$.escapeSelector( this.ids.button ) ).length ) {
this.close( event );
}
}
Expand Down
3 changes: 1 addition & 2 deletions ui/widgets/tabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
// AMD. Register as an anonymous module.
define( [
"jquery",
"../escape-selector",
"../keycode",
"../safe-active-element",
"../unique-id",
Expand Down Expand Up @@ -733,7 +732,7 @@ $.widget( "ui.tabs", {
// meta-function to give users option to provide a href string instead of a numerical index.
if ( typeof index === "string" ) {
index = this.anchors.index( this.anchors.filter( "[href$='" +
$.ui.escapeSelector( index ) + "']" ) );
$.escapeSelector( index ) + "']" ) );
}

return index;
Expand Down

0 comments on commit 7c6a9f0

Please sign in to comment.