]> source.dussan.org Git - jquery-ui.git/commitdiff
All: Drop support for IE & some other browsers (but mostly IE)
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Tue, 30 Apr 2024 22:54:19 +0000 (00:54 +0200)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Tue, 14 May 2024 22:38:40 +0000 (00:38 +0200)
Closes gh-2249

53 files changed:
demos/autocomplete/maxheight.html
demos/bootstrap.js
demos/tooltip/custom-style.html
tests/lib/qunit-assert-domequal.js
tests/lib/vendor/qunit-composite/qunit-composite.js
tests/unit/autocomplete/events.js
tests/unit/button/core.js
tests/unit/checkboxradio/core.js
tests/unit/core/core.js
tests/unit/datepicker/core.js
tests/unit/datepicker/options.js
tests/unit/dialog/core.js
tests/unit/dialog/methods.js
tests/unit/draggable/core.js
tests/unit/draggable/helper.js
tests/unit/draggable/options.js
tests/unit/menu/events.js
tests/unit/sortable/options.js
tests/unit/widget/core.js
themes/base/button.css
themes/base/controlgroup.css
themes/base/core.css
themes/base/draggable.css
themes/base/menu.css
themes/base/progressbar.css
themes/base/resizable.css
themes/base/selectable.css
themes/base/slider.css
themes/base/sortable.css
themes/base/theme.css
ui/core.js
ui/effect.js
ui/focusable.js
ui/form-reset-mixin.js
ui/form.js [deleted file]
ui/ie.js [deleted file]
ui/labels.js
ui/safe-active-element.js [deleted file]
ui/safe-blur.js [deleted file]
ui/widgets/accordion.js
ui/widgets/autocomplete.js
ui/widgets/button.js
ui/widgets/checkboxradio.js
ui/widgets/dialog.js
ui/widgets/draggable.js
ui/widgets/menu.js
ui/widgets/mouse.js
ui/widgets/resizable.js
ui/widgets/selectmenu.js
ui/widgets/sortable.js
ui/widgets/spinner.js
ui/widgets/tabs.js
ui/widgets/tooltip.js

index 9ebda7938baa7fd890abf959128bb125d6caae80..b8c59819d632e5fa6aad6a2d0a8b2b9ef2a7f516 100644 (file)
                /* prevent horizontal scrollbar */
                overflow-x: hidden;
        }
-       /* IE 6 doesn't support max-height
-        * we use height instead, but this forces the menu to always be this tall
-        */
-       * html .ui-autocomplete {
-               height: 100px;
-       }
        </style>
        <script src="../../external/requirejs/require.js"></script>
        <script src="../bootstrap.js">
index 9b046802815fd2b18941b992b6c93f6902e9a07b..ba1cde2e91df1100e7fc3acdf1dba4c083c8471c 100644 (file)
@@ -2,9 +2,7 @@
 ( function() {
 "use strict";
 
-// Find the script element
-var scripts = document.getElementsByTagName( "script" );
-var script = scripts[ scripts.length - 1 ];
+var script = document.currentScript;
 
 // Read the modules
 var modules = script.getAttribute( "data-modules" );
index 5cbd4bbd35277ac79a1391e5c28aa435803aae83..8ab8dcc9d2fb1d391b3c379bb5944018836a37c6 100644 (file)
@@ -60,8 +60,6 @@
                width: 25px;
                height: 25px;
                box-shadow: 6px 5px 9px -9px black;
-               -webkit-transform: rotate(45deg);
-               -ms-transform: rotate(45deg);
                transform: rotate(45deg);
        }
        .arrow.top:after {
index bcce60702f582a2f18e52ae1db004e8217272eb1..d99ed06de1964ba29e28692eacf893e2d14a2117 100644 (file)
@@ -83,17 +83,6 @@ function getElementStyles( elem ) {
                key = style[ len ];
                camelKey = camelCase( key );
 
-               // Support: IE <=11+
-               // In IE, `option` elements may have different initial `option` colors.
-               // They may initially all be transparent, but later the selected
-               // option gets a blue background with white text; ignore it.
-               if ( document.documentMode && elem.nodeName.toLowerCase() === "option" && (
-                       camelKey === "color" ||
-                               camelKey.indexOf( "Color" ) === camelKey.length - "Color".length
-               ) ) {
-                       continue;
-               }
-
                if ( typeof style[ key ] === "string" ) {
                        styles[ camelKey ] = style[ key ];
                }
index 042d024b447c24d1bb4555c8b4e7189e0e1f933e..b3c2b749d1e5ea330b1619eec1d77e5647e55ddb 100644 (file)
@@ -35,9 +35,6 @@ function addEvent( elem, type, fn ) {
        if ( elem.addEventListener ) {
                // Standards-based browsers
                elem.addEventListener( type, fn, false );
-       } else if ( elem.attachEvent ) {
-               // support: IE <9
-               elem.attachEvent( "on" + type, fn );
        }
 }
 
index d08fe9828713d61883a87867ef23c503a911ecc1..9ee3a92e4a6824fa58f8a4fbf9499da1ea8f384c 100644 (file)
@@ -75,11 +75,7 @@ $.each( [
                        assert.ok( menu.is( ":visible" ), "menu is visible after delay" );
                        element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
                        element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
-
-                       // Blur must be async for IE to handle it properly
-                       setTimeout( function() {
-                               element.simulate( "blur" );
-                       } );
+                       element.simulate( "blur" );
                } );
        } );
 } );
index 7b696631e328c2fc1793af5e5cdde26a8d5efac5..ae4b870eda939a7097759588dc64225080b4fd5a 100644 (file)
@@ -2,7 +2,6 @@ define( [
        "qunit",
        "jquery",
        "lib/helper",
-       "ui/safe-active-element",
        "ui/widgets/button"
 ], function( QUnit, $, helper ) {
 "use strict";
@@ -17,10 +16,10 @@ QUnit.test( "Disabled button loses focus", function( assert ) {
        element.trigger( "focus" );
        setTimeout( function() {
 
-               assert.equal( element[ 0 ], $.ui.safeActiveElement( document ), "Button is focused" );
+               assert.equal( element[ 0 ], document.activeElement, "Button is focused" );
 
                element.button( "disable" );
-               assert.notEqual( element[ 0 ], $.ui.safeActiveElement( document ), "Button has had focus removed" );
+               assert.notEqual( element[ 0 ], document.activeElement, "Button has had focus removed" );
                ready();
        } );
 } );
index ad27f1be0fb099bfc25f766dbff488da82c92300..f218cc1cd84112d5edb14d82a8703bcc55bc7a5f 100644 (file)
@@ -33,7 +33,6 @@ QUnit.test( "Radios - Initial class structure", function( assert ) {
 } );
 
 QUnit.test( "Ensure checked after single click on checkbox label button", function( assert ) {
-       var ready = assert.async();
        assert.expect( 2 );
 
        $( "#check2" ).checkboxradio().on( "change", function() {
@@ -43,14 +42,7 @@ QUnit.test( "Ensure checked after single click on checkbox label button", functi
                assert.hasClasses( label, "ui-state-active" );
        } );
 
-       // Support: Opera
-       // Opera doesn't trigger a change event when this is done synchronously.
-       // This seems to be a side effect of another test, but until that can be
-       // tracked down, this delay will have to do.
-       setTimeout( function() {
-               $( "#check2" ).checkboxradio( "widget" ).simulate( "click" );
-               ready();
-       } );
+       $( "#check2" ).checkboxradio( "widget" ).simulate( "click" );
 } );
 
 QUnit.test( "Handle form association via form attribute", function( assert ) {
index d9677a406f596a65ea60fd18e3ddebf6fc06fb23..5d9eee07ca835457babb2ad783645469245141de 100644 (file)
@@ -3,7 +3,6 @@ define( [
        "jquery",
        "lib/common",
        "lib/helper",
-       "ui/form",
        "ui/labels",
        "ui/unique-id"
 ], function( QUnit, $, common, helper ) {
@@ -150,10 +149,6 @@ QUnit.test( "Labels", function( assert ) {
        function testLabels( testType ) {
                var labels = dom.find( "#test" ).labels();
                var found = labels.map( function() {
-
-                               // Support: Core 1.9 Only
-                               // We use String.prototype.trim because core 1.9.x silently fails
-                               // when white space is present
                                return String.prototype.trim.call( $( this ).text() );
                        } ).get();
 
@@ -183,7 +178,7 @@ QUnit.test( "Labels", function( assert ) {
                        QUnit.test( name + this.id.replace( /_/g, " " ), function( assert ) {
                                var ready = assert.async();
                                assert.expect( 1 );
-                               var form = input._form();
+                               var form = $( input.prop( "form" ) );
 
                                // If input has a form the value should reset to "" if not it should be "changed"
                                var value = form.length ? "" : "changed";
index 74320931e931f630a08bae7cad701372bc0ad8a0..edc16d005dfaea10017ac2719d2b533a2a39c7b0 100644 (file)
@@ -311,9 +311,6 @@ QUnit.test( "customStructure", function( assert ) {
                } );
        }
 
-       // TODO: figure out why this setTimeout is needed in IE,
-       // it only is necessary when the previous baseStructure tests runs first
-       // Support: IE
        setTimeout( step1 );
 } );
 
index 5d03cd61f03e4a5c319fbe0aefc5b67dc242d941..3055bc19975cebd6e92d474c53a921def7bb5c1b 100644 (file)
@@ -5,8 +5,7 @@ define( [
        "ui/widgets/datepicker",
        "ui/i18n/datepicker-fr",
        "ui/i18n/datepicker-he",
-       "ui/i18n/datepicker-zh-CN",
-       "ui/ie"
+       "ui/i18n/datepicker-zh-CN"
 ], function( QUnit, $, testHelper ) {
 "use strict";
 
@@ -97,147 +96,131 @@ QUnit.test( "change", function( assert ) {
        assert.equal( $.datepicker._defaults.showOn, "focus", "Retain default showOn" );
 } );
 
-( function() {
-       var url = window.location.search;
-       url = decodeURIComponent( url.slice( url.indexOf( "swarmURL=" ) + 9 ) );
+QUnit.test( "invocation", function( assert ) {
+       var ready = assert.async();
+       var button, image,
+               body = $( "body" );
 
-       // TODO: This test occassionally fails in IE in TestSwarm
-       if ( $.ui.ie && url && url.indexOf( "http" ) === 0 ) {
-               return;
-       }
+       assert.expect( 29 );
 
-       QUnit.test( "invocation", function( assert ) {
-               var ready = assert.async();
-               var button, image,
-                       isOldIE = $.ui.ie && ( !document.documentMode || document.documentMode < 9 ),
-                       body = $( "body" );
-
-               assert.expect( isOldIE ? 25 : 29 );
-
-               function step0() {
-                       var inp = testHelper.initNewInput(),
-                               dp = $( "#ui-datepicker-div" );
-
-                       button = inp.siblings( "button" );
-                       assert.ok( button.length === 0, "Focus - button absent" );
-                       image = inp.siblings( "img" );
-                       assert.ok( image.length === 0, "Focus - image absent" );
-
-                       testHelper.onFocus( inp, function() {
-                               assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" );
-                               inp.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
-                               assert.ok( !dp.is( ":visible" ), "Focus - hidden on exit" );
-                               step1();
-                       } );
-               }
+       function step0() {
+               var inp = testHelper.initNewInput(),
+                       dp = $( "#ui-datepicker-div" );
 
-               function step1() {
+               button = inp.siblings( "button" );
+               assert.ok( button.length === 0, "Focus - button absent" );
+               image = inp.siblings( "img" );
+               assert.ok( image.length === 0, "Focus - image absent" );
 
-                       var inp = testHelper.initNewInput(),
-                               dp = $( "#ui-datepicker-div" );
+               testHelper.onFocus( inp, function() {
+                       assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" );
+                       inp.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
+                       assert.ok( !dp.is( ":visible" ), "Focus - hidden on exit" );
+                       step1();
+               } );
+       }
 
-                       testHelper.onFocus( inp, function() {
-                               assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" );
-                               body.simulate( "mousedown", {} );
-                               assert.ok( !dp.is( ":visible" ), "Focus - hidden on external click" );
-                               inp.datepicker( "hide" ).datepicker( "destroy" );
+       function step1() {
 
-                               step2();
-                       } );
-               }
+               var inp = testHelper.initNewInput(),
+                       dp = $( "#ui-datepicker-div" );
 
-               function step2() {
-                       var inp = testHelper.initNewInput( {
-                                       showOn: "button",
-                                       buttonText: "Popup"
-                               } ),
-                               dp = $( "#ui-datepicker-div" );
-
-                       assert.ok( !dp.is( ":visible" ), "Button - initially hidden" );
-                       button = inp.siblings( "button" );
-                       image = inp.siblings( "img" );
-                       assert.ok( button.length === 1, "Button - button present" );
-                       assert.ok( image.length === 0, "Button - image absent" );
-                       assert.equal( button.text(), "Popup", "Button - button text" );
-
-                       testHelper.onFocus( inp, function() {
-                               assert.ok( !dp.is( ":visible" ), "Button - not rendered on focus" );
-                               button.trigger( "click" );
-                               assert.ok( dp.is( ":visible" ), "Button - rendered on button click" );
-                               button.trigger( "click" );
-                               assert.ok( !dp.is( ":visible" ), "Button - hidden on second button click" );
-                               inp.datepicker( "hide" ).datepicker( "destroy" );
-
-                               step3();
-                       } );
-               }
+               testHelper.onFocus( inp, function() {
+                       assert.ok( dp.is( ":visible" ), "Focus - rendered on focus" );
+                       body.simulate( "mousedown", {} );
+                       assert.ok( !dp.is( ":visible" ), "Focus - hidden on external click" );
+                       inp.datepicker( "hide" ).datepicker( "destroy" );
 
-               function step3() {
-                       var inp = testHelper.initNewInput( {
-                                       showOn: "button",
-                                       buttonImageOnly: true,
-                                       buttonImage: "images/calendar.gif",
-                                       buttonText: "Cal"
-                               } ),
-                               dp = $( "#ui-datepicker-div" );
-
-                       assert.ok( !dp.is( ":visible" ), "Image button - initially hidden" );
-                       button = inp.siblings( "button" );
-                       assert.ok( button.length === 0, "Image button - button absent" );
-                       image = inp.siblings( "img" );
-                       assert.ok( image.length === 1, "Image button - image present" );
-                       assert.ok( /images\/calendar\.gif$/.test( image.attr( "src" ) ), "Image button - image source" );
-                       assert.equal( image.attr( "title" ), "Cal", "Image button - image text" );
-
-                       testHelper.onFocus( inp, function() {
-                               assert.ok( !dp.is( ":visible" ), "Image button - not rendered on focus" );
-                               image.trigger( "click" );
-                               assert.ok( dp.is( ":visible" ), "Image button - rendered on image click" );
-                               image.trigger( "click" );
-                               assert.ok( !dp.is( ":visible" ), "Image button - hidden on second image click" );
-                               inp.datepicker( "hide" ).datepicker( "destroy" );
-
-                               step4();
-                       } );
-               }
+                       step2();
+               } );
+       }
 
-               function step4() {
-                       var inp = testHelper.initNewInput( {
-                                       showOn: "both",
-                                       buttonImage: "images/calendar.gif"
-                               } ),
-                               dp = $( "#ui-datepicker-div" );
-
-                       assert.ok( !dp.is( ":visible" ), "Both - initially hidden" );
-                       button = inp.siblings( "button" );
-                       assert.ok( button.length === 1, "Both - button present" );
-                       image = inp.siblings( "img" );
-                       assert.ok( image.length === 0, "Both - image absent" );
-                       image = button.children( "img" );
-                       assert.ok( image.length === 1, "Both - button image present" );
-
-                       // TODO: This test occasionally fails to focus in IE8 in BrowserStack
-                       if ( !isOldIE ) {
-                               testHelper.onFocus( inp, function() {
-                                       assert.ok( dp.is( ":visible" ), "Both - rendered on focus" );
-                                       body.simulate( "mousedown", {} );
-                                       assert.ok( !dp.is( ":visible" ), "Both - hidden on external click" );
-                                       button.trigger( "click" );
-                                       assert.ok( dp.is( ":visible" ), "Both - rendered on button click" );
-                                       button.trigger( "click" );
-                                       assert.ok( !dp.is( ":visible" ), "Both - hidden on second button click" );
-                                       inp.datepicker( "hide" ).datepicker( "destroy" );
-
-                                       ready();
-                               } );
-                       } else {
-                               ready();
-                       }
-               }
+       function step2() {
+               var inp = testHelper.initNewInput( {
+                               showOn: "button",
+                               buttonText: "Popup"
+                       } ),
+                       dp = $( "#ui-datepicker-div" );
+
+               assert.ok( !dp.is( ":visible" ), "Button - initially hidden" );
+               button = inp.siblings( "button" );
+               image = inp.siblings( "img" );
+               assert.ok( button.length === 1, "Button - button present" );
+               assert.ok( image.length === 0, "Button - image absent" );
+               assert.equal( button.text(), "Popup", "Button - button text" );
+
+               testHelper.onFocus( inp, function() {
+                       assert.ok( !dp.is( ":visible" ), "Button - not rendered on focus" );
+                       button.trigger( "click" );
+                       assert.ok( dp.is( ":visible" ), "Button - rendered on button click" );
+                       button.trigger( "click" );
+                       assert.ok( !dp.is( ":visible" ), "Button - hidden on second button click" );
+                       inp.datepicker( "hide" ).datepicker( "destroy" );
+
+                       step3();
+               } );
+       }
 
-               step0();
-       } );
-} )();
+       function step3() {
+               var inp = testHelper.initNewInput( {
+                               showOn: "button",
+                               buttonImageOnly: true,
+                               buttonImage: "images/calendar.gif",
+                               buttonText: "Cal"
+                       } ),
+                       dp = $( "#ui-datepicker-div" );
+
+               assert.ok( !dp.is( ":visible" ), "Image button - initially hidden" );
+               button = inp.siblings( "button" );
+               assert.ok( button.length === 0, "Image button - button absent" );
+               image = inp.siblings( "img" );
+               assert.ok( image.length === 1, "Image button - image present" );
+               assert.ok( /images\/calendar\.gif$/.test( image.attr( "src" ) ), "Image button - image source" );
+               assert.equal( image.attr( "title" ), "Cal", "Image button - image text" );
+
+               testHelper.onFocus( inp, function() {
+                       assert.ok( !dp.is( ":visible" ), "Image button - not rendered on focus" );
+                       image.trigger( "click" );
+                       assert.ok( dp.is( ":visible" ), "Image button - rendered on image click" );
+                       image.trigger( "click" );
+                       assert.ok( !dp.is( ":visible" ), "Image button - hidden on second image click" );
+                       inp.datepicker( "hide" ).datepicker( "destroy" );
+
+                       step4();
+               } );
+       }
+
+       function step4() {
+               var inp = testHelper.initNewInput( {
+                               showOn: "both",
+                               buttonImage: "images/calendar.gif"
+                       } ),
+                       dp = $( "#ui-datepicker-div" );
+
+               assert.ok( !dp.is( ":visible" ), "Both - initially hidden" );
+               button = inp.siblings( "button" );
+               assert.ok( button.length === 1, "Both - button present" );
+               image = inp.siblings( "img" );
+               assert.ok( image.length === 0, "Both - image absent" );
+               image = button.children( "img" );
+               assert.ok( image.length === 1, "Both - button image present" );
+
+               testHelper.onFocus( inp, function() {
+                       assert.ok( dp.is( ":visible" ), "Both - rendered on focus" );
+                       body.simulate( "mousedown", {} );
+                       assert.ok( !dp.is( ":visible" ), "Both - hidden on external click" );
+                       button.trigger( "click" );
+                       assert.ok( dp.is( ":visible" ), "Both - rendered on button click" );
+                       button.trigger( "click" );
+                       assert.ok( !dp.is( ":visible" ), "Both - hidden on second button click" );
+                       inp.datepicker( "hide" ).datepicker( "destroy" );
+
+                       ready();
+               } );
+       }
+
+       step0();
+} );
 
 QUnit.test( "otherMonths", function( assert ) {
        assert.expect( 8 );
index cb0ee53e0a155118cff5e14b5458e3aee52c67eb..d307504b80c8f737634e80266b555ea9ebcce7f7 100644 (file)
@@ -103,12 +103,6 @@ QUnit.test( "focus tabbable", function( assert ) {
                };
 
        function checkFocus( markup, options, testFn, next ) {
-
-               // Support: IE8
-               // For some reason the focus doesn't get set properly if we don't
-               // focus the body first.
-               $( "body" ).trigger( "focus" );
-
                element = $( markup ).dialog( options );
                setTimeout( function() {
                        testFn( function done() {
@@ -122,31 +116,12 @@ QUnit.test( "focus tabbable", function( assert ) {
                checkFocus( "<div><input><input></div>", options, function( done ) {
                        var input = element.find( "input" ).last().trigger( "focus" ).trigger( "blur" );
 
-                       // Support: IE 11+
-                       // In IE in jQuery 3.4+ a sequence:
-                       // $( inputNode ).trigger( "focus" ).trigger( "blur" ).trigger( "focus" )
-                       // doesn't end up with a focused input. See:
-                       // https://github.com/jquery/jquery/issues/4856
-                       // However, in this test we only want to check that the last focused
-                       // input receives the focus back when `_focusTabbable()` is called
-                       // which in reality doesn't happen so quickly so let's avoid the issue
-                       // by waiting a bit.
-                       if ( document.documentMode ) {
-                               setTimeout( function() {
-                                       focusTabbableAndAssert();
-                               }, 500 );
-                       } else {
-                               focusTabbableAndAssert();
-                       }
-
-                       function focusTabbableAndAssert() {
-                               element.dialog( "instance" )._focusTabbable();
-                               setTimeout( function() {
-                                       assert.equal( document.activeElement, input[ 0 ],
-                                               "1. an element that was focused previously." );
-                                       done();
-                               } );
-                       }
+                       element.dialog( "instance" )._focusTabbable();
+                       setTimeout( function() {
+                               assert.equal( document.activeElement, input[ 0 ],
+                                       "1. an element that was focused previously." );
+                               done();
+                       } );
                }, step2 );
        }
 
@@ -303,11 +278,6 @@ QUnit.test( "interaction between overlay and other dialogs", function( assert )
                second = $( "<div><input id='input-2'></div>" ).testWidget(),
                secondInput = second.find( "input" );
 
-       // Support: IE8
-       // For some reason the focus doesn't get set properly if we don't
-       // focus the body first.
-       $( "body" ).trigger( "focus" );
-
        // Wait for the modal to init
        setTimeout( function() {
 
index 1de32194b76cce1457b406bf91db75af1c8dc16a..c3f360fb9ed98cb240d97d11de9abf3519d4f3bb 100644 (file)
@@ -226,11 +226,6 @@ QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
                }
        } );
 
-       // Support: IE8
-       // For some reason the #favorite-animal input doesn't get focus if we don't
-       // focus the body first, causing the test to hang.
-       $( "body" ).trigger( "focus" );
-
        $( "#favorite-animal" )
 
                // We focus the input to start the test. Once it receives focus, the
index 46c856d4eda5023b3471d8b8250d268a75182225..d7f786c9376ac19366bf8e78e951fd54f43a7711 100644 (file)
@@ -38,8 +38,8 @@ QUnit.test( "element types", function( assert ) {
                } );
                offsetAfter = el.offset();
 
-               // Support: FF, Chrome, and IE9,
-               // there are some rounding errors in so we can't say equal, we have to settle for close enough
+               // Support: Firefox, Chrome
+               // There are some rounding errors, so we can't say equal, we have to settle for close enough
                assert.close( offsetBefore.left, offsetAfter.left - 50, 1, "dragged[50, 50] " + "<" + typeName + "> left" );
                assert.close( offsetBefore.top, offsetAfter.top - 50, 1, "dragged[50, 50] " + "<" + typeName + "> top" );
                el.draggable( "destroy" );
@@ -112,7 +112,6 @@ QUnit.test( "Stray mousemove after mousedown still drags", function( assert ) {
 
        // In IE8, when content is placed under the mouse (e.g. when draggable content is replaced
        // on mousedown), mousemove is triggered on those elements even though the mouse hasn't moved.
-       // Support: IE <9
        element.on( "mousedown", function() {
                $( document ).simulate( "mousemove", { button: -1 } );
        } );
@@ -341,11 +340,13 @@ QUnit.test( "blur behavior - off handle", function( assert ) {
        var element = $( "#draggable2" ).draggable( { handle: "span" } ),
                focusElement = $( "<div tabindex='1'></div>" ).appendTo( element );
 
-       // Mock $.ui.safeBlur with a spy
-       var _safeBlur = $.ui.safeBlur;
+       // Mock $.ui.trigger with a spy
+       var _trigger = $.fn.trigger;
        var blurCalledCount = 0;
-       $.ui.safeBlur = function() {
-               blurCalledCount++;
+       $.fn.trigger = function( eventName ) {
+               if ( eventName === "blur" ) {
+                       blurCalledCount++;
+               }
        };
 
        testHelper.onFocus( focusElement, function() {
@@ -357,8 +358,8 @@ QUnit.test( "blur behavior - off handle", function( assert ) {
                testHelper.move( element.find( "span" ), 1, 1 );
                assert.strictEqual( blurCalledCount, 1, "draggable blurs when mousing down on handle" );
 
-               // Restore safeBlur
-               $.ui.safeBlur = _safeBlur;
+               // Restore trigger
+               $.fn.trigger = _trigger;
 
                ready();
        } );
@@ -394,27 +395,21 @@ QUnit.test( "ui-draggable-handle managed correctly in nested draggables", functi
        assert.hasClasses( child, "ui-draggable-handle", "child retains class name on destroy" );
 } );
 
-// Support: IE 8 only
-// IE 8 implements DOM Level 2 Events which only has events bubble up to the document.
-// We skip this test since it would be impossible for it to pass in such an environment.
-QUnit[ document.documentMode === 8 ? "skip" : "test" ](
-       "does not stop propagation to window",
-       function( assert ) {
-               assert.expect( 1 );
-               var element = $( "#draggable1" ).draggable();
+QUnit.test( "does not stop propagation to window", function( assert ) {
+       assert.expect( 1 );
+       var element = $( "#draggable1" ).draggable();
 
-               var handler = function() {
-                       assert.ok( true, "mouseup propagates to window" );
-               };
-               $( window ).on( "mouseup", handler );
+       var handler = function() {
+               assert.ok( true, "mouseup propagates to window" );
+       };
+       $( window ).on( "mouseup", handler );
 
-               element.simulate( "drag", {
-                       dx: 10,
-                       dy: 10
-               } );
+       element.simulate( "drag", {
+               dx: 10,
+               dy: 10
+       } );
 
-               $( window ).off( "mouseup", handler );
-       }
-);
+       $( window ).off( "mouseup", handler );
+} );
 
 } );
index 292b75bf073c409a60a476a2e0b939d14ba57d10..2fd637a2480b2ad822f2414bb96744cc6a7ec0df 100644 (file)
@@ -8,9 +8,6 @@ define( [
 
 return $.extend( helper, {
 
-       // TODO: remove the unreliable offset hacks
-       unreliableOffset: $.ui.ie && ( !document.documentMode || document.documentMode < 8 ) ? 2 : 0,
-
        testDragPosition: function( assert, el, dx, dy, expectedDX, expectedDY, msg ) {
                msg = msg ? msg + "." : "";
 
index 79aac27c2be263be185bca4124527dad43b05d34..f97696920bd0ade4e8ce606ba0e3f4d171a5cbe0 100644 (file)
@@ -743,11 +743,11 @@ QUnit.test( "cursorAt", function( assert ) {
                                                        assert.equal( ui.position.left - ui.originalPosition.left, deltaX, testName + " " + position + " left" );
                                                        assert.equal( ui.position.top - ui.originalPosition.top, deltaY, testName + " " + position + " top" );
                                                } else if ( testData.cursorAt.right ) {
-                                                       assert.equal( ui.helper.width() - ( event.clientX - ui.offset.left ), testData.x - testHelper.unreliableOffset, testName + " " + position + " left" );
-                                                       assert.equal( ui.helper.height() - ( event.clientY - ui.offset.top ), testData.y - testHelper.unreliableOffset, testName + " " + position + " top" );
+                                                       assert.equal( ui.helper.width() - ( event.clientX - ui.offset.left ), testData.x, testName + " " + position + " left" );
+                                                       assert.equal( ui.helper.height() - ( event.clientY - ui.offset.top ), testData.y, testName + " " + position + " top" );
                                                } else {
-                                                       assert.equal( event.clientX - ui.offset.left, testData.x + testHelper.unreliableOffset, testName + " " + position + " left" );
-                                                       assert.equal( event.clientY - ui.offset.top, testData.y + testHelper.unreliableOffset, testName + " " + position + " top" );
+                                                       assert.equal( event.clientX - ui.offset.left, testData.x, testName + " " + position + " left" );
+                                                       assert.equal( event.clientY - ui.offset.top, testData.y, testName + " " + position + " top" );
                                                }
                                        }
                        } );
@@ -785,11 +785,11 @@ QUnit.test( "cursorAt, switching after initialization", function( assert ) {
                                                        assert.equal( ui.position.left - ui.originalPosition.left, deltaX, testName + " " + position + " left" );
                                                        assert.equal( ui.position.top - ui.originalPosition.top, deltaY, testName + " " + position + " top" );
                                                } else if ( testData.cursorAt.right ) {
-                                                       assert.equal( ui.helper.width() - ( event.clientX - ui.offset.left ), testData.x - testHelper.unreliableOffset, testName + " " + position + " left" );
-                                                       assert.equal( ui.helper.height() - ( event.clientY - ui.offset.top ), testData.y - testHelper.unreliableOffset, testName + " " + position + " top" );
+                                                       assert.equal( ui.helper.width() - ( event.clientX - ui.offset.left ), testData.x, testName + " " + position + " left" );
+                                                       assert.equal( ui.helper.height() - ( event.clientY - ui.offset.top ), testData.y, testName + " " + position + " top" );
                                                } else {
-                                                       assert.equal( event.clientX - ui.offset.left, testData.x + testHelper.unreliableOffset, testName + " " + position + " left" );
-                                                       assert.equal( event.clientY - ui.offset.top, testData.y + testHelper.unreliableOffset, testName + " " + position + " top" );
+                                                       assert.equal( event.clientX - ui.offset.left, testData.x, testName + " " + position + " left" );
+                                                       assert.equal( event.clientY - ui.offset.top, testData.y, testName + " " + position + " top" );
                                                }
                                        }
                        } );
@@ -1136,15 +1136,6 @@ QUnit.test( "scroll ignores containers that are overflow: hidden", function( ass
                dy: 1300
        } );
 
-       // IE8 natively scrolls when dragging an element inside a overflow:hidden
-       // container, so skip this test if native scroll occurs.
-       // Support: IE <9
-       if ( scrollParent.scrollTop() > 0 ) {
-               assert.ok( true, "overflow:hidden container natively scrolls" );
-               assert.ok( true, "overflow:hidden container natively scrolls" );
-               return;
-       }
-
        element.css( { top: 0, left: 0 } ).draggable( "option", "scroll", true );
 
        element.simulate( "drag", {
@@ -1458,7 +1449,7 @@ QUnit.test( "zIndex, default, switching after initialization", function( assert
 } );
 
 QUnit.test( "iframeFix", function( assert ) {
-       assert.expect( 6 );
+       assert.expect( 5 );
 
        var element = $( "<div>" ).appendTo( "#qunit-fixture" ).draggable( { iframeFix: true } ),
                element2 = $( "<div>" ).appendTo( "#qunit-fixture" ).draggable( { iframeFix: ".iframe" } ),
@@ -1474,8 +1465,7 @@ QUnit.test( "iframeFix", function( assert ) {
        } );
 
        element.one( "drag", function() {
-               var divOffset, iframeOffset,
-                       div = $( this ).children().not( "iframe" );
+               var div = $( this ).children().not( "iframe" );
 
                // https://bugs.jqueryui.com/ticket/9671
                // iframeFix doesn't handle iframes that move
@@ -1483,13 +1473,7 @@ QUnit.test( "iframeFix", function( assert ) {
                assert.equal( div.outerWidth(), iframe.outerWidth(), "blocking div is wide enough" );
                assert.equal( div.outerHeight(), iframe.outerHeight(), "blocking div is tall enough" );
 
-               divOffset = div.offset();
-               iframeOffset = iframe.offset();
-
-               // Support: Edge <79 only
-               // In Edge Legacy these values differ a little.
-               assert.ok( Math.abs( divOffset.top - iframeOffset.top ) < 0.25, "Check top within 0.25 of expected" );
-               assert.ok( Math.abs( divOffset.left - iframeOffset.left ) < 0.25, "Check left within 0.25 of expected" );
+               assert.deepEqual( div.offset(), iframe.offset(), "blocking div is tall enough" );
        } );
 
        element.simulate( "drag", {
index caac7e741711da31d59c57edf88d94f5b4179256..f03ba333c02be1e4f385017766f20630e075ca2f 100644 (file)
@@ -54,17 +54,11 @@ QUnit.test( "handle click on custom item menu", function( assert ) {
 QUnit.test( "handle blur", function( assert ) {
        var ready = assert.async();
        assert.expect( 2 );
-       var blurHandled = false,
-               index = 1,
+       var index = 1,
                element = $( "#menu1" ).menu( {
                        blur: function( event, ui ) {
-
-                               // Ignore duplicate blur event fired by IE
-                               if ( !blurHandled ) {
-                                       blurHandled = true;
-                                       assert.equal( event.type, "menublur", "blur event.type is 'menublur'" );
-                                       assert.strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
-                               }
+                               assert.equal( event.type, "menublur", "blur event.type is 'menublur'" );
+                               assert.strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
                        }
                } );
 
@@ -80,17 +74,11 @@ QUnit.test( "handle blur", function( assert ) {
 QUnit.test( "handle blur via click outside", function( assert ) {
        var ready = assert.async();
        assert.expect( 2 );
-       var blurHandled = false,
-               index = 1,
+       var index = 1,
                element = $( "#menu1" ).menu( {
                        blur: function( event, ui ) {
-
-                               // Ignore duplicate blur event fired by IE
-                               if ( !blurHandled ) {
-                                       blurHandled = true;
-                                       assert.equal( event.type, "menublur", "blur event.type is 'menublur'" );
-                                       assert.strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
-                               }
+                               assert.equal( event.type, "menublur", "blur event.type is 'menublur'" );
+                               assert.strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
                        }
                } );
 
index 0905de73cf144dba5d9a4ca4896b510709b7f372..3792d433f300dfaae6b5abc08aeaba296c1305ef 100644 (file)
@@ -294,17 +294,8 @@ QUnit.test( "{ forcePlaceholderSize: true } table rows", function( assert ) {
                placeholder: "test",
                forcePlaceholderSize: true,
                start: function( event, ui ) {
-
-                       // Support: IE 11+, Edge <79 only
-                       // In IE & Edge Legacy these values may differ a little
-                       // when jQuery >=3.0 <3.2 is used.
-                       if ( jqMinor === "3.0." || jqMinor === "3.1." ) {
-                               assert.ok( Math.abs( ui.placeholder.height() - ui.item.height() ) < 0.25,
-                                       "placeholder height is within 0.25 px of item's" );
-                       } else {
-                               assert.equal( ui.placeholder.height(), ui.item.height(),
-                                       "placeholder is same height as item" );
-                       }
+                       assert.equal( ui.placeholder.height(), ui.item.height(),
+                               "placeholder is same height as item" );
                }
        } );
 
index 1054bf092285a86e0d6e34df58dfe4ba7e850ba0..fe74e18e94e0f9eeb78349f98a844b23e933dfe3 100644 (file)
@@ -293,9 +293,7 @@ QUnit.test( "._getCreateOptions()", function( assert ) {
 
                        assert.deepEqual( superOptions, {}, "Base implementation returns empty object" );
 
-                       // Support: IE8
-                       // Strict equality fails when comparing this.window in ie8
-                       assert.equal( this.window[ 0 ], window, "this.window is properly defined" );
+                       assert.strictEqual( this.window[ 0 ], window, "this.window is properly defined" );
                        assert.strictEqual( this.document[ 0 ], document, "this.document is properly defined" );
 
                        return {
index f6780cb15cc9ee081d193e509e8d6e787110d5f5..c432b4abc7aedb404ff84e099de85a16da817b53 100644 (file)
        vertical-align: middle;
        text-align: center;
        -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
        user-select: none;
-
-       /* Support: IE <= 11 */
-       overflow: visible;
 }
 
 .ui-button,
@@ -74,7 +69,7 @@ input.ui-button.ui-icon-notext .ui-icon {
 }
 
 /* workarounds */
-/* Support: Firefox 5 - 40 */
+/* Support: Firefox 5 - 125+ */
 input.ui-button::-moz-focus-inner,
 button.ui-button::-moz-focus-inner {
        border: 0;
index 24048bd795d63438cf0212f421b2076e9916a268..cd9e4e520a6fea3045e3e8bc24299ffd784e8e28 100644 (file)
@@ -54,9 +54,6 @@
 
 /* Spinner specific style fixes */
 .ui-controlgroup-vertical .ui-spinner-input {
-
-       /* Support: IE8 only, Android < 4.4 only */
-       width: 75%;
        width: calc( 100% - 2.4em );
 }
 .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
index 6917bb6d409283f81fc7388099833a5a84acac2d..2bea103b5ff005d4ec4a6c941cf2914c07442527 100644 (file)
@@ -50,7 +50,6 @@
        left: 0;
        position: absolute;
        opacity: 0;
-       -ms-filter: "alpha(opacity=0)"; /* support: IE8 */
 }
 
 .ui-front {
index c77269d937673ae6b9107748d483631368be3363..4183f5ac412e07ea5523c415b3f234093c9875f1 100644 (file)
@@ -7,6 +7,5 @@
  * https://jquery.org/license
  */
 .ui-draggable-handle {
-       -ms-touch-action: none;
        touch-action: none;
 }
index 83e165a5da019f6b7024070ff1636f4c17aad6b3..e35c9e8bf0c2f53deba5d618da8f696782e64dd8 100644 (file)
@@ -21,8 +21,6 @@
 .ui-menu .ui-menu-item {
        margin: 0;
        cursor: pointer;
-       /* support: IE10, see #8844 */
-       list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
 }
 .ui-menu .ui-menu-item-wrapper {
        position: relative;
index 6c379e5bd37cda00da3071338d91d3810c18d731..e1abfab465d92dbc33b6fec4b4b9ca32f5c9002a 100644 (file)
@@ -20,7 +20,6 @@
 .ui-progressbar .ui-progressbar-overlay {
        background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
        height: 100%;
-       -ms-filter: "alpha(opacity=25)"; /* support: IE8 */
        opacity: 0.25;
 }
 .ui-progressbar-indeterminate .ui-progressbar-value {
index 35cd3034d086176125c6b19c632800ef441fb496..8a48c427e35263ad170f001f23da067cb32b78d5 100644 (file)
@@ -13,7 +13,6 @@
        position: absolute;
        font-size: 0.1px;
        display: block;
-       -ms-touch-action: none;
        touch-action: none;
 }
 .ui-resizable-disabled .ui-resizable-handle,
index 4b749755ce70c94f953df73ba45349df3fdad29d..cb770e7ccf7ffc878633e05220926a0a169bd314 100644 (file)
@@ -7,7 +7,6 @@
  * https://jquery.org/license
  */
 .ui-selectable {
-       -ms-touch-action: none;
        touch-action: none;
 }
 .ui-selectable-helper {
index d6d261c428bc83bd92227945f0795a624abf4715..134bf14b2d01462645597750d0e26dd188d21d34 100644 (file)
@@ -18,7 +18,6 @@
        width: 1.2em;
        height: 1.2em;
        cursor: pointer;
-       -ms-touch-action: none;
        touch-action: none;
 }
 .ui-slider .ui-slider-range {
        background-position: 0 0;
 }
 
-/* support: IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
 .ui-slider-horizontal {
        height: .8em;
 }
index fe54de6ab1f72cf34b668f72ed1587e7c9e5c1d4..dc698ded890daf4399cf35330930cb01b30a1f67 100644 (file)
@@ -7,6 +7,5 @@
  * https://jquery.org/license
  */
 .ui-sortable-handle {
-       -ms-touch-action: none;
        touch-action: none;
 }
index eb1097b82ebd49e7ce497b0eb5688db2b55e648b..d99a47bbc5c92030aa94ff0e15114678bf3ba6ae 100644 (file)
@@ -172,19 +172,14 @@ a.ui-button:active,
 .ui-widget-content .ui-priority-secondary,
 .ui-widget-header .ui-priority-secondary {
        opacity: .7;
-       -ms-filter: "alpha(opacity=70)"; /* support: IE8 */
        font-weight: normal;
 }
 .ui-state-disabled,
 .ui-widget-content .ui-state-disabled,
 .ui-widget-header .ui-state-disabled {
        opacity: .35;
-       -ms-filter: "alpha(opacity=35)"; /* support: IE8 */
        background-image: none;
 }
-.ui-state-disabled .ui-icon {
-       -ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
-}
 
 /* Icons
 ----------------------------------*/
@@ -438,9 +433,7 @@ a.ui-button:active,
 .ui-widget-overlay {
        background: #aaaaaa/*{bgColorOverlay}*/ /*{bgImgUrlOverlay}*/ /*{bgOverlayXPos}*/ /*{bgOverlayYPos}*/ /*{bgOverlayRepeat}*/;
        opacity: .3/*{opacityOverlay}*/;
-       -ms-filter: "alpha(opacity=30)"/*{opacityFilterOverlay}*/; /* support: IE8 */
 }
 .ui-widget-shadow {
-       -webkit-box-shadow: 0/*{offsetLeftShadow}*/ 0/*{offsetTopShadow}*/ 5px/*{thicknessShadow}*/ #666666/*{bgColorShadow}*/;
        box-shadow: 0/*{offsetLeftShadow}*/ 0/*{offsetTopShadow}*/ 5px/*{thicknessShadow}*/ #666666/*{bgColorShadow}*/;
 }
index 8628513918c0cbd9ddf59d9acae1c533fe07fbc0..33d7974e2fe1759d9960bc36d56557d4ec80c8af 100644 (file)
@@ -7,14 +7,10 @@ define( [
        "./data",
        "./disable-selection",
        "./focusable",
-       "./form",
-       "./ie",
        "./keycode",
        "./labels",
        "./jquery-patch",
        "./plugin",
-       "./safe-active-element",
-       "./safe-blur",
        "./scroll-parent",
        "./tabbable",
        "./unique-id",
index ac9b0c809e5f22f4a83eb87e901cd1bb6be846f9..bbbb733c3db5d801eeae472862bef17af52fc71a 100644 (file)
@@ -81,26 +81,14 @@ function camelCase( string ) {
 
 function getElementStyles( elem ) {
        var key, len,
-               style = elem.ownerDocument.defaultView ?
-                       elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
-                       elem.currentStyle,
+               style = elem.ownerDocument.defaultView.getComputedStyle( elem ),
                styles = {};
 
-       if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
-               len = style.length;
-               while ( len-- ) {
-                       key = style[ len ];
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ camelCase( key ) ] = style[ key ];
-                       }
-               }
-
-       // Support: Opera, IE <9
-       } else {
-               for ( key in style ) {
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ key ] = style[ key ];
-                       }
+       len = style.length;
+       while ( len-- ) {
+               key = style[ len ];
+               if ( typeof style[ key ] === "string" ) {
+                       styles[ camelCase( key ) ] = style[ key ];
                }
        }
 
index 2db058678cb023d4ad4acb65d56dd17d8b516c85..4920417fc3604262dd9fcf696608506e72d2f424 100644 (file)
@@ -62,20 +62,10 @@ $.ui.focusable = function( element, hasTabindex ) {
                focusableIfVisible = hasTabindex;
        }
 
-       return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
+       return focusableIfVisible && $( element ).is( ":visible" ) &&
+               $( element ).css( "visibility" ) === "visible";
 };
 
-// Support: IE 8 only
-// IE 8 doesn't resolve inherit to visible/hidden for computed values
-function visible( element ) {
-       var visibility = element.css( "visibility" );
-       while ( visibility === "inherit" ) {
-               element = element.parent();
-               visibility = element.css( "visibility" );
-       }
-       return visibility === "visible";
-}
-
 $.extend( $.expr.pseudos, {
        focusable: function( element ) {
                return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
index a60299d136489fa1d3936d04c5ad3c7c5fb0f36d..9a2e73aac62f8f4ba54d6bcea3a615eff7107d9a 100644 (file)
@@ -20,7 +20,6 @@
                // AMD. Register as an anonymous module.
                define( [
                        "jquery",
-                       "./form",
                        "./version"
                ], factory );
        } else {
@@ -45,7 +44,7 @@ return $.ui.formResetMixin = {
        },
 
        _bindFormResetHandler: function() {
-               this.form = this.element._form();
+               this.form = $( this.element.prop( "form" ) );
                if ( !this.form.length ) {
                        return;
                }
diff --git a/ui/form.js b/ui/form.js
deleted file mode 100644 (file)
index 60b0522..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-( function( factory ) {
-       "use strict";
-
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define( [ "jquery", "./version" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-} )( function( $ ) {
-"use strict";
-
-// Support: IE8 Only
-// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
-// with a string, so we need to find the proper form.
-return $.fn._form = function() {
-       return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
-};
-
-} );
diff --git a/ui/ie.js b/ui/ie.js
deleted file mode 100644 (file)
index 1754b94..0000000
--- a/ui/ie.js
+++ /dev/null
@@ -1,18 +0,0 @@
-( function( factory ) {
-       "use strict";
-
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define( [ "jquery", "./version" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-} )( function( $ ) {
-"use strict";
-
-// This file is deprecated
-return $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
-} );
index 9f1c3296b26811005720fc591f1c0a3c12485331..4f6533451a9ee4c12f1806c2a8b93dfe3a45a72c 100644 (file)
@@ -39,9 +39,8 @@ return $.fn.labels = function() {
                return this.pushStack( this[ 0 ].labels );
        }
 
-       // Support: IE <= 11, FF <= 37, Android <= 2.3 only
-       // Above browsers do not support control.labels. Everything below is to support them
-       // as well as document fragments. control.labels does not work on document fragments
+       // If `control.labels` is empty - e.g. inside of document fragments - find
+       // the labels manually
        labels = this.eq( 0 ).parents( "label" );
 
        // Look for the label based on the id
diff --git a/ui/safe-active-element.js b/ui/safe-active-element.js
deleted file mode 100644 (file)
index 9d6968e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-( function( factory ) {
-       "use strict";
-
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define( [ "jquery", "./version" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-} )( function( $ ) {
-"use strict";
-
-return $.ui.safeActiveElement = function( document ) {
-       var activeElement;
-
-       // Support: IE 9 only
-       // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-       try {
-               activeElement = document.activeElement;
-       } catch ( error ) {
-               activeElement = document.body;
-       }
-
-       // Support: IE 9 - 11 only
-       // IE may return null instead of an element
-       // Interestingly, this only seems to occur when NOT in an iframe
-       if ( !activeElement ) {
-               activeElement = document.body;
-       }
-
-       // Support: IE 11 only
-       // IE11 returns a seemingly empty object in some cases when accessing
-       // document.activeElement from an <iframe>
-       if ( !activeElement.nodeName ) {
-               activeElement = document.body;
-       }
-
-       return activeElement;
-};
-
-} );
diff --git a/ui/safe-blur.js b/ui/safe-blur.js
deleted file mode 100644 (file)
index c0b3b8a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-( function( factory ) {
-       "use strict";
-
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define( [ "jquery", "./version" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-} )( function( $ ) {
-"use strict";
-
-return $.ui.safeBlur = function( element ) {
-
-       // Support: IE9 - 10 only
-       // If the <body> is blurred, IE will switch windows, see #9420
-       if ( element && element.nodeName.toLowerCase() !== "body" ) {
-               $( element ).trigger( "blur" );
-       }
-};
-
-} );
index d5d71224dee0c48affd53c1690fe55e2fada2e1f..b6a7a7eeec3f1670c37fec616792150af2ae4789 100644 (file)
@@ -187,13 +187,7 @@ return $.widget( "ui.accordion", {
                this._super( value );
 
                this.element.attr( "aria-disabled", value );
-
-               // Support: IE8 Only
-               // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
-               // so we need to add the disabled class to the headers and panels
                this._toggleClass( null, "ui-state-disabled", !!value );
-               this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
-                       !!value );
        },
 
        _keydown: function( event ) {
@@ -611,10 +605,6 @@ return $.widget( "ui.accordion", {
                this._removeClass( prev, "ui-accordion-header-active" )
                        ._addClass( prev, "ui-accordion-header-collapsed" );
 
-               // Work around for rendering bug in IE (#5421)
-               if ( toHide.length ) {
-                       toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
-               }
                this._trigger( "activate", null, data );
        }
 } );
index ac2cfe42b22b7c0870cc60965a0b7e73ba2a0866..57e59820c6f017e8b025a74529bff420ec6bf702 100644 (file)
@@ -27,7 +27,6 @@
                        "./menu",
                        "../keycode",
                        "../position",
-                       "../safe-active-element",
                        "../version",
                        "../widget"
                ], factory );
@@ -84,9 +83,9 @@ $.widget( "ui.autocomplete", {
 
                // Textareas are always multi-line
                // Inputs are always single-line, even if inside a contentEditable element
-               // IE also treats inputs as contentEditable
-               // All other element types are determined by whether or not they're contentEditable
-               this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
+               // All other element types are determined by whether they're contentEditable
+               this.isMultiLine = isTextarea ||
+                       !isInput && this.element.prop( "contentEditable" ) === "true";
 
                this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
                this.isNewMenu = true;
@@ -150,7 +149,6 @@ $.widget( "ui.autocomplete", {
 
                                                // Different browsers have different default behavior for escape
                                                // Single press can mean undo or clear
-                                               // Double press in IE means clear the whole form
                                                event.preventDefault();
                                        }
                                        break;
@@ -219,16 +217,6 @@ $.widget( "ui.autocomplete", {
                                role: null
                        } )
                        .hide()
-
-                       // Support: IE 11 only, Edge <= 14
-                       // For other browsers, we preventDefault() on the mousedown event
-                       // to keep the dropdown from taking focus from the input. This doesn't
-                       // work for IE/Edge, causing problems with selection and scrolling (#9638)
-                       // Happily, IE and Edge support an "unselectable" attribute that
-                       // prevents an element from receiving focus, exactly what we want here.
-                       .attr( {
-                               "unselectable": "on"
-                       } )
                        .menu( "instance" );
 
                this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
@@ -241,7 +229,7 @@ $.widget( "ui.autocomplete", {
                        menufocus: function( event, ui ) {
                                var label, item;
 
-                               // support: Firefox
+                               // Support: Firefox
                                // Prevent accidental activation of menu items in Firefox (#7024 #9118)
                                if ( this.isNewMenu ) {
                                        this.isNewMenu = false;
@@ -279,17 +267,9 @@ $.widget( "ui.autocomplete", {
                                        previous = this.previous;
 
                                // Only trigger when focus was lost (click on menu)
-                               if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
+                               if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {
                                        this.element.trigger( "focus" );
                                        this.previous = previous;
-
-                                       // #6109 - IE triggers two focus events and the second
-                                       // is asynchronous, so we need to reset the previous
-                                       // term synchronously and asynchronously :-(
-                                       this._delay( function() {
-                                               this.previous = previous;
-                                               this.selectedItem = item;
-                                       } );
                                }
 
                                if ( false !== this._trigger( "select", event, { item: item } ) ) {
@@ -608,24 +588,6 @@ $.widget( "ui.autocomplete", {
                        // Prevents moving cursor to beginning/end of the text field in some browsers
                        event.preventDefault();
                }
-       },
-
-       // Support: Chrome <=50
-       // We should be able to just use this.element.prop( "isContentEditable" )
-       // but hidden elements always report false in Chrome.
-       // https://code.google.com/p/chromium/issues/detail?id=313082
-       _isContentEditable: function( element ) {
-               if ( !element.length ) {
-                       return false;
-               }
-
-               var editable = element.prop( "contentEditable" );
-
-               if ( editable === "inherit" ) {
-                       return this._isContentEditable( element.parent() );
-               }
-
-               return editable === "true";
        }
 } );
 
index 02708d620c262de2602a8e0a557237c4912e331a..08a4b61c51064aa47d0c45cba7fd6bd9b81e938d 100644 (file)
@@ -109,9 +109,9 @@ $.widget( "ui.button", {
                                        if ( event.keyCode === $.ui.keyCode.SPACE ) {
                                                event.preventDefault();
 
-                                               // Support: PhantomJS <= 1.9, IE 8 Only
-                                               // If a native click is available use it so we actually cause navigation
-                                               // otherwise just trigger a click event
+                                               // If a native click is available use it, so we
+                                               // actually cause navigation. Otherwise, just trigger
+                                               // a click event.
                                                if ( this.element[ 0 ].click ) {
                                                        this.element[ 0 ].click();
                                                } else {
index add80d80a15d3abded3f417d6f494d49a1a6b59f..fc812116ea872bd2cf7c628476e709a083194d3f 100644 (file)
@@ -168,7 +168,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 
                        // Not inside a form, check all inputs that also are not inside a form
                        group = $( nameSelector ).filter( function() {
-                               return $( this )._form().length === 0;
+                               return $( $( this ).prop( "form" ) ).length === 0;
                        } );
                }
 
index cbda816360f620a9a19d1f9fd15061ae4356fb30..4ba9d11176519107b90eac11cf5735cc17dcf40e 100644 (file)
@@ -31,8 +31,6 @@
                        "../focusable",
                        "../keycode",
                        "../position",
-                       "../safe-active-element",
-                       "../safe-blur",
                        "../tabbable",
                        "../unique-id",
                        "../version",
@@ -229,7 +227,7 @@ $.widget( "ui.dialog", {
                        // Hiding a focused element doesn't trigger blur in WebKit
                        // so in case we have nothing to focus on, explicitly blur the active element
                        // https://bugs.webkit.org/show_bug.cgi?id=47182
-                       $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
+                       $( this.document[ 0 ].activeElement ).trigger( "blur" );
                }
 
                this._hide( this.uiDialog, this.options.hide, function() {
@@ -273,7 +271,7 @@ $.widget( "ui.dialog", {
                }
 
                this._isOpen = true;
-               this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
+               this.opener = $( this.document[ 0 ].activeElement );
 
                this._size();
                this._position();
@@ -329,7 +327,7 @@ $.widget( "ui.dialog", {
        },
 
        _restoreTabbableFocus: function() {
-               var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+               var activeElement = this.document[ 0 ].activeElement,
                        isActive = this.uiDialog[ 0 ] === activeElement ||
                                $.contains( this.uiDialog[ 0 ], activeElement );
                if ( !isActive ) {
@@ -340,11 +338,6 @@ $.widget( "ui.dialog", {
        _keepFocus: function( event ) {
                event.preventDefault();
                this._restoreTabbableFocus();
-
-               // support: IE
-               // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
-               // so we check again later
-               this._delay( this._restoreTabbableFocus );
        },
 
        _createWrapper: function() {
@@ -427,9 +420,6 @@ $.widget( "ui.dialog", {
                        }
                } );
 
-               // Support: IE
-               // Use type="button" to prevent enter keypresses in textboxes from closing the
-               // dialog in IE (#9312)
                this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
                        .button( {
                                label: $( "<a>" ).text( this.options.closeText ).html(),
index 91443fac59a52d418012d092dfc49bf985ab852a..e0abdd26f3698896f5731deeab225aa24644f637 100644 (file)
@@ -25,8 +25,6 @@
                        "./mouse",
                        "../data",
                        "../plugin",
-                       "../safe-active-element",
-                       "../safe-blur",
                        "../scroll-parent",
                        "../version",
                        "../widget"
@@ -147,7 +145,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
        },
 
        _blurActiveElement: function( event ) {
-               var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+               var activeElement = this.document[ 0 ].activeElement,
                        target = $( event.target );
 
                // Don't blur if the event occurred on an element that is within
@@ -158,7 +156,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
                }
 
                // Blur any element that currently has focus, see #4261
-               $.ui.safeBlur( activeElement );
+               $( activeElement ).trigger( "blur" );
        },
 
        _mouseStart: function( event ) {
index 1ef4b8a3dd8052849604813bafdaa852e1e4b35b..f3fdc82c8375a4cbc64ac45d3a9e454f656cbcfb 100644 (file)
@@ -26,7 +26,6 @@
                        "jquery",
                        "../keycode",
                        "../position",
-                       "../safe-active-element",
                        "../unique-id",
                        "../version",
                        "../widget"
@@ -87,7 +86,7 @@ return $.widget( "ui.menu", {
                        },
                        "click .ui-menu-item": function( event ) {
                                var target = $( event.target );
-                               var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
+                               var active = $( this.document[ 0 ].activeElement );
                                if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
                                        this.select( event );
 
@@ -131,7 +130,7 @@ return $.widget( "ui.menu", {
                                this._delay( function() {
                                        var notContained = !$.contains(
                                                this.element[ 0 ],
-                                               $.ui.safeActiveElement( this.document[ 0 ] )
+                                               this.document[ 0 ].activeElement
                                        );
                                        if ( notContained ) {
                                                this.collapseAll( event );
index 1dcac52777f6057bf85be808d5941e036a771f61..ef9dd8dbe9cabda95216c9395d72c00b502a6c51 100644 (file)
@@ -20,7 +20,6 @@
                // AMD. Register as an anonymous module.
                define( [
                        "jquery",
-                       "../ie",
                        "../version",
                        "../widget"
                ], factory );
@@ -90,12 +89,10 @@ return $.widget( "ui.mouse", {
                this._mouseDownEvent = event;
 
                var that = this,
-                       btnIsLeft = ( event.which === 1 ),
-
-                       // event.target.nodeName works around a bug in IE 8 with
-                       // disabled inputs (#7620)
-                       elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
-                               $( event.target ).closest( this.options.cancel ).length : false );
+                       btnIsLeft = event.which === 1,
+                       elIsCancel = typeof this.options.cancel === "string" ?
+                               $( event.target ).closest( this.options.cancel ).length :
+                               false;
                if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
                        return true;
                }
@@ -141,28 +138,17 @@ return $.widget( "ui.mouse", {
        _mouseMove: function( event ) {
 
                // Only check for mouseups outside the document if you've moved inside the document
-               // at least once. This prevents the firing of mouseup in the case of IE<9, which will
-               // fire a mousemove event if content is placed under the cursor. See #7778
-               // Support: IE <9
-               if ( this._mouseMoved ) {
-
-                       // IE mouseup check - mouseup happened when mouse was out of window
-                       if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
-                                       !event.button ) {
+               // at least once.
+               if ( this._mouseMoved && !event.which ) {
+
+                       // Support: Safari <=8 - 9
+                       // Safari sets which to 0 if you press any of the following keys
+                       // during a drag (#14461)
+                       if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
+                                       event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
+                               this.ignoreMissingWhich = true;
+                       } else if ( !this.ignoreMissingWhich ) {
                                return this._mouseUp( event );
-
-                       // Iframe mouseup check - mouseup occurred in another document
-                       } else if ( !event.which ) {
-
-                               // Support: Safari <=8 - 9
-                               // Safari sets which to 0 if you press any of the following keys
-                               // during a drag (#14461)
-                               if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
-                                               event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
-                                       this.ignoreMissingWhich = true;
-                               } else if ( !this.ignoreMissingWhich ) {
-                                       return this._mouseUp( event );
-                               }
                        }
                }
 
index e163b03fead43935ff2193d5a630281e8856816a..1698d55e8bb153e4a02ff8e04ed58cfd4abe793e 100644 (file)
@@ -149,9 +149,8 @@ $.widget( "ui.resizable", $.ui.mouse, {
                        };
 
                        this.element.css( margins );
-                       this.originalElement.css( "margin", 0 );
 
-                       // support: Safari
+                       // Support: Safari
                        // Prevent Safari textarea resize
                        this.originalResizeStyle = this.originalElement.css( "resize" );
                        this.originalElement.css( "resize", "none" );
@@ -162,10 +161,6 @@ $.widget( "ui.resizable", $.ui.mouse, {
                                display: "block"
                        } ) );
 
-                       // Support: IE9
-                       // avoid IE jump (hard set the margin)
-                       this.originalElement.css( margins );
-
                        this._proportionallyResize();
                }
 
index b1e2033ba9dbf1795cfa564ae4a4b3b95e1d9d9c..eecd368f51cd1db3e1bbd2650ebcfb0b1d9fb53d 100644 (file)
@@ -167,12 +167,6 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
                                role: "listbox",
                                select: function( event, ui ) {
                                        event.preventDefault();
-
-                                       // Support: IE8
-                                       // If the item was selected via a click, the text selection
-                                       // will be destroyed in IE
-                                       that._setSelection();
-
                                        that._select( ui.item.data( "ui-selectmenu-item" ), event );
                                },
                                focus: function( event, ui ) {
@@ -409,20 +403,9 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
                        return;
                }
 
-               if ( window.getSelection ) {
-                       selection = window.getSelection();
-                       selection.removeAllRanges();
-                       selection.addRange( this.range );
-
-               // Support: IE8
-               } else {
-                       this.range.select();
-               }
-
-               // Support: IE
-               // Setting the text selection kills the button focus in IE, but
-               // restoring the focus doesn't kill the selection.
-               this.button.trigger( "focus" );
+               selection = window.getSelection();
+               selection.removeAllRanges();
+               selection.addRange( this.range );
        },
 
        _documentClick: {
@@ -442,17 +425,9 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
 
                // Prevent text selection from being reset when interacting with the selectmenu (#10144)
                mousedown: function() {
-                       var selection;
-
-                       if ( window.getSelection ) {
-                               selection = window.getSelection();
-                               if ( selection.rangeCount ) {
-                                       this.range = selection.getRangeAt( 0 );
-                               }
-
-                       // Support: IE8
-                       } else {
-                               this.range = document.selection.createRange();
+                       var selection = window.getSelection();
+                       if ( selection.rangeCount ) {
+                               this.range = selection.getRangeAt( 0 );
                        }
                },
 
@@ -643,11 +618,7 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
        _resizeMenu: function() {
                this.menu.outerWidth( Math.max(
                        this.button.outerWidth(),
-
-                       // Support: IE10
-                       // IE10 wraps long text (possibly a rounding bug)
-                       // so we add 1px to avoid the wrapping
-                       this.menu.width( "" ).outerWidth() + 1
+                       this.menu.width( "" ).outerWidth()
                ) );
        },
 
index 70dc7e703556369bd457f82eb96a232c72527d08..32333b6f51b68de435cba33f0de6bf5f15b0b966 100644 (file)
@@ -24,7 +24,6 @@
                        "jquery",
                        "./mouse",
                        "../data",
-                       "../ie",
                        "../scroll-parent",
                        "../version",
                        "../widget"
@@ -276,10 +275,6 @@ return $.widget( "ui.sortable", $.ui.mouse, {
                if ( o.cursor && o.cursor !== "auto" ) { // cursor option
                        body = this.document.find( "body" );
 
-                       // Support: IE
-                       this.storedCursor = body.css( "cursor" );
-                       body.css( "cursor", o.cursor );
-
                        this.storedStylesheet =
                                $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
                }
@@ -1197,11 +1192,9 @@ return $.widget( "ui.sortable", $.ui.mouse, {
                        po.top += this.scrollParent.scrollTop();
                }
 
-               // This needs to be actually done for all browsers, since pageX/pageY includes this
-               // information with an ugly IE fix
-               if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
-                               ( this.offsetParent[ 0 ].tagName &&
-                               this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
+               // This needs to be actually done for all browsers, since pageX/pageY includes
+               // this information.
+               if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ) {
                        po = { top: 0, left: 0 };
                }
 
@@ -1549,8 +1542,7 @@ return $.widget( "ui.sortable", $.ui.mouse, {
                }
 
                //Do what was originally in plugins
-               if ( this.storedCursor ) {
-                       this.document.find( "body" ).css( "cursor", this.storedCursor );
+               if ( this.storedStylesheet ) {
                        this.storedStylesheet.remove();
                }
                if ( this._storedOpacity ) {
index b92b8ab520be0af8a0016c1dd51ffbf3390f703a..d999d85d7837a4dc117f8920d6b1122bf44c746e 100644 (file)
@@ -27,7 +27,6 @@
                        "./button",
                        "../version",
                        "../keycode",
-                       "../safe-active-element",
                        "../widget"
                ], factory );
        } else {
@@ -131,11 +130,6 @@ $.widget( "ui.spinner", {
                        this.previous = this.element.val();
                },
                blur: function( event ) {
-                       if ( this.cancelBlur ) {
-                               delete this.cancelBlur;
-                               return;
-                       }
-
                        this._stop();
                        this._refresh();
                        if ( this.previous !== this.element.val() ) {
@@ -143,7 +137,7 @@ $.widget( "ui.spinner", {
                        }
                },
                mousewheel: function( event, delta ) {
-                       var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
+                       var activeElement = this.document[ 0 ].activeElement;
                        var isActive = this.element[ 0 ] === activeElement;
 
                        if ( !isActive || !delta ) {
@@ -171,20 +165,13 @@ $.widget( "ui.spinner", {
                        // If the input is focused then this.previous is properly set from
                        // when the input first received focus. If the input is not focused
                        // then we need to set this.previous based on the value before spinning.
-                       previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
+                       previous = this.element[ 0 ] === this.document[ 0 ].activeElement ?
                                this.previous : this.element.val();
                        function checkFocus() {
-                               var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
+                               var isActive = this.element[ 0 ] === this.document[ 0 ].activeElement;
                                if ( !isActive ) {
                                        this.element.trigger( "focus" );
                                        this.previous = previous;
-
-                                       // support: IE
-                                       // IE sets focus asynchronously, so we need to check if focus
-                                       // moved off of the input because the user clicked on the button.
-                                       this._delay( function() {
-                                               this.previous = previous;
-                                       } );
                                }
                        }
 
@@ -192,16 +179,6 @@ $.widget( "ui.spinner", {
                        event.preventDefault();
                        checkFocus.call( this );
 
-                       // Support: IE
-                       // IE doesn't prevent moving focus even with event.preventDefault()
-                       // so we set a flag to know when we should ignore the blur event
-                       // and check (again) if focus moved off of the input.
-                       this.cancelBlur = true;
-                       this._delay( function() {
-                               delete this.cancelBlur;
-                               checkFocus.call( this );
-                       } );
-
                        if ( this._start( event ) === false ) {
                                return;
                        }
index 465b48cecf22f39752011aaa45a9f4aeea092e2c..e191dfbb4143362064fdd674a1f35a57141a95e8 100644 (file)
@@ -25,7 +25,6 @@
                define( [
                        "jquery",
                        "../keycode",
-                       "../safe-active-element",
                        "../unique-id",
                        "../version",
                        "../widget"
@@ -171,7 +170,7 @@ $.widget( "ui.tabs", {
        },
 
        _tabKeydown: function( event ) {
-               var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
+               var focusedTab = $( this.document[ 0 ].activeElement ).closest( "li" ),
                        selectedIndex = this.tabs.index( focusedTab ),
                        goingForward = true;
 
@@ -408,18 +407,6 @@ $.widget( "ui.tabs", {
                                if ( $( this ).is( ".ui-state-disabled" ) ) {
                                        event.preventDefault();
                                }
-                       } )
-
-                       // Support: IE <9
-                       // Preventing the default action in mousedown doesn't prevent IE
-                       // from focusing the element, so if the anchor gets focused, blur.
-                       // We don't have to worry about focusing the previously focused
-                       // element since clicking on a non-focusable element should focus
-                       // the body anyway.
-                       .on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
-                               if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
-                                       this.blur();
-                               }
                        } );
 
                this.tabs = this.tablist.find( "> li:has(a[href])" )
@@ -877,10 +864,7 @@ $.widget( "ui.tabs", {
        _ajaxSettings: function( anchor, event, eventData ) {
                var that = this;
                return {
-
-                       // Support: IE <11 only
-                       // Strip any hash that exists to prevent errors with the Ajax request
-                       url: anchor.attr( "href" ).replace( /#.*$/, "" ),
+                       url: anchor.attr( "href" ),
                        beforeSend: function( jqXHR, settings ) {
                                return that._trigger( "beforeLoad", event,
                                        $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
index b626c5d1016ebcd16db55eead228f1929e642575..d23da19226101c1fd69da52d11a06445c6afe097 100644 (file)
@@ -227,25 +227,20 @@ $.widget( "ui.tooltip", {
 
                content = contentOption.call( target[ 0 ], function( response ) {
 
-                       // IE may instantly serve a cached response for ajax requests
-                       // delay this call to _open so the other call to _open runs first
-                       that._delay( function() {
-
-                               // Ignore async response if tooltip was closed already
-                               if ( !target.data( "ui-tooltip-open" ) ) {
-                                       return;
-                               }
+                       // Ignore async response if tooltip was closed already
+                       if ( !target.data( "ui-tooltip-open" ) ) {
+                               return;
+                       }
 
-                               // JQuery creates a special event for focusin when it doesn't
-                               // exist natively. To improve performance, the native event
-                               // object is reused and the type is changed. Therefore, we can't
-                               // rely on the type being correct after the event finished
-                               // bubbling, so we set it back to the previous value. (#8740)
-                               if ( event ) {
-                                       event.type = eventType;
-                               }
-                               this._open( event, target, response );
-                       } );
+                       // JQuery creates a special event for focusin when it doesn't
+                       // exist natively. To improve performance, the native event
+                       // object is reused and the type is changed. Therefore, we can't
+                       // rely on the type being correct after the event finished
+                       // bubbling, so we set it back to the previous value. (#8740)
+                       if ( event ) {
+                               event.type = eventType;
+                       }
+                       that._open( event, target, response );
                } );
                if ( content ) {
                        this._open( event, target, content );