aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit
Commit message (Collapse)AuthorAgeFilesLines
* Widget: Optimize attachment of the _untrackClassesElement listenerMichał Gołębiowski-Owczarek2022-01-153-0/+105
| | | | | | | | | | | | | | | jQuery UI 1.13.0 changed the logic attaching the `_untrackClassesElement` listener in the `_classes` widget method; one of the side effects was calling `this._on` for each node that needed the listener. That caused a severe performance degradation for large comboboxes as each `_on` jQuery UI call causes a jQuery `add` call that calls Sizzle's `uniqueSort` underneath. Instead, collect the nodes that need the listener and then, outside of the loop, create a jQuery object out of them and attach the listener once. That's still slower than the jQuery 1.12 version but only slightly: 936 ms to 1.03s on a very large list on a recent MacBook Pro, compared to ~30 seconds before this patch. Fixes gh-2014 Closes gh-2037
* Autocomplete: Rewrite with a delay instead of appending the live regionBen Mullins2022-01-051-34/+46
| | | | | | | | | This fixes the issue caused by https://bugs.jqueryui.com/ticket/9357. We now empty the live region instead of appending to it, and we do so after a brief timeout so the live region isn't updated on every mousemove event or when quickly traversing through options. Fixes gh-2002 Closes gh-2031
* Widget: Make contextless widget construction workMichał Gołębiowski-Owczarek2021-11-191-0/+12
| | | | | | | | | | | | | | Due to the fact the widget factory code is now in strict mode, the check for being called without using the `new` keyword started breaking if you save the widget constructor to a variable before calling it: ```js var customWidget = $.custom.customWidget; customWidget( {}, elem ); ``` as then `this` is undefined and checking for `this._createWidget` crashes. Account for that with an additional check. Fixes gh-2015 Closes gh-2019
* Sortable: Fix positioning when moving a Draggable item into a SortableMichał Gołębiowski-Owczarek2021-11-151-0/+57
| | | | | | | | | PR gh-1793 removed setting `this.offset.parent` in the Draggable `refreshPositions` method which broke position calculations when moving a Draggable item into a connected Sortable. restore that assignment. Ref gh-1793 Fixes gh-2001 Closes gh-2009
* Sortable: Allow 0-height containers to be sortable as in 1.12.1Michał Gołębiowski-Owczarek2021-11-081-0/+53
| | | | | | | | | Note that container specific events will not fire when the dragged element is interacting with zero height containers. Fixes gh-1998 Closes gh-2008 Co-authored-by: A. Wells <borgboyone@users.noreply.github.com>
* Tooltip: Don't crash on empty contentJosep Sanz2021-11-081-0/+70
| | | | | | | | | | | | | | | Commit 1f2011ece removed a `try-catch` around triggering the `remove` handlers in the `jQuery.cleanData` override. The `try-catch` was meant for old IE but it was also catching an error coming from the tooltip `remove` handler depending on being able to find a relevant tooltip. The `_find` method returns `null`, though, when the tooltip cotent is empty. Instead of restoring the `try-catch`, handle the `null` case in the `remove` handler. Fixes gh-1990 Closes gh-1994 Co-authored-by: Claas Augner <github@caugner.de> Co-authored-by: Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
* Build: Migrate from JSHint & JSCS to ESLintMichał Gołębiowski-Owczarek2021-06-0796-75/+217
| | | | | Fixes #15393 Closes gh-1958
* Datepicker: Improve callbacks test for onUpdateDatepickerPatrick McKay2021-05-211-2/+7
| | | | Make sure the custom element added by the onUpdateDatepicker callback still exists and is not duplicated after calling refresh and setDate.
* Datepicker: Add option for onUpdateDatepicker callbackPatrick McKay2021-05-211-2/+18
| | | | | | Add a new option named onUpdateDatepicker that allows a custom callback to be provided. If provided, the callback is called at the end of $.datepicker._updateDatepicker.
* All: Drop $.ui.escapeSelector in favor of $.escapeSelectorMichał Gołębiowski-Owczarek2021-05-141-8/+0
| | | | Fixes #14991 Closes gh-1957
* Datepicker: Make sure text option are text, shorten HTML stringsMichał Gołębiowski-Owczarek2021-05-121-0/+51
| | | | | | | | Instead of using enormous HTML strings, various elements are now constructed using jQuery APIs. This makes it more obvious user-provided data is used correctly. Fixes #15284 Closes gh-1953
* Position: Make sure `of` is treated as a CSS selectorMichał Gołębiowski-Owczarek2021-05-041-1/+19
| | | Closes gh-1955
* Datepicker: Make sure altField is treated as a CSS selectorMichał Gołębiowski-Owczarek2021-05-041-2/+20
| | | Closes gh-1954
* Tests: Accept delayed focusout in IE with jQuery 1.8Michał Gołębiowski-Owczarek2021-04-161-2/+13
| | | | | | In IE with jQuery 1.8 focusout may not happen immediately so some checks need to be done later. Closes gh-1952
* Tests: Fix the "dialog: core: focus tabbable" test in IEMichał Gołębiowski-Owczarek2021-03-161-6/+26
| | | | | | | | | | | | | In IE in jQuery 3.4+ a sequence: ```js $( inputNode ).trigger( "focus" ).trigger( "blur" ).trigger( "focus" ); ``` doesn't end up with a focused input. 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. Ref jquery/jquery#4856 Closes gh-1951
* Tests: Make some number comparisons less strictMichał Gołębiowski-Owczarek2021-03-092-6/+24
| | | | | | | | | | Some of the APIs return fractional values in newer jQueries, making comparisons sometimes not being 100% accurate. Allow some delta. This is similar to what was already done in 98b539171b6e805fa79346a5e9896865e5213b9c but a few cases affecting IE and/or Edge Legacy were missed. Closes gh-1947
* Build: Add jQuery 3.6.0, update Migrate from 3.3.1 to 3.3.2Michał Gołębiowski-Owczarek2021-03-091-0/+1
| | | Closes gh-1948
* Focusable: Fix handling of `visibility: collapse`Paul Capron2020-10-142-1/+13
| | | | | | | | | | | | | | "collapse" is similar to "hidden", with a slight difference in the case of tr/tbody/td/colgroup elements. See https://www.w3.org/TR/CSS22/visufx.html#visibility See https://www.w3.org/TR/CSS22/tables.html#dynamic-effects See https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Table_example "visibility: collapse" elements are always not focusable, though. Commit d3025968f34 introduced a regression by testing with `!== "hidden"` instead of `=== "visible"`. Closes gh-1843
* Tests: Accept a small difference of animated width/heightMichał Gołębiowski-Owczarek2020-07-231-2/+4
| | | | | | | | | | | | | jQuery 3.2 & newer have a different animation logic and the animated elements width/height differ from the starting ones even at the beginning of the animation. The point of the assertions checking that they're identical was to ensure bug #5245 is fixed; that issue manifested by a big jump to half the element size. To test for that, it's enough to check that the first obtained values are close to the original ones. This makes effects tests pass in all supported jQuery versions. Closes gh-1928 Ref #5245
* Tests: Skip a scrollbar test in jQuery 3.2Michał Gołębiowski-Owczarek2020-07-231-1/+7
| | | | | | | | | | | jQuery 3.2 incorrectly handle scrollbars in WebKit/Blink-based browsers. This is fixed in version 3.3, see https://github.com/jquery/jquery/issues/3589. As the data here comes from jQuery directly and the changes to fix it are non-trivial: https://github.com/jquery/jquery/pull/3656, just accept that scrollbar data in this jQuery version is inaccurate. Closes gh-1927 Ref jquery/jquery#3589 Ref jquery/jquery#3656
* Tests: Clear the timers queue in an animateClass testMichał Gołębiowski-Owczarek2020-07-231-3/+2
| | | | | | jQueries older than 1.11 or 2.1 were leaving a timer in the queue which could then influence other tests. Closes gh-1926
* All: Drop support for jQuery 1.7Michał Gołębiowski-Owczarek2020-07-223-18/+11
| | | Closes gh-1923
* Tests: Ensure no timers are running at the end of each test (#1920)Michał Gołębiowski-Owczarek2020-05-1690-171/+324
| | | | | | | | | | | | | This helps fix issues that make tooltip tests sometimes fail when run against jQuery 3.2 or newer due to timing differences. Details: * Add the `moduleAfterEach` function ensuring no timers are running. * Attach this function via `common.testWidget`. * Attach this function to most test suites. * Add a tooltip test helper cleaning up leftover timers. * Rename legacy `setup`/`teardown` hooks to `beforeEach`/`afterEach`. Closes gh-1920
* All: Resolve most jQuery Migrate warningsMichał Gołębiowski-Owczarek2020-05-164-5/+5
| | | Closes gh-1919
* Tests: Solve a frequent race condition in tests in Chrome/SafariMichał Gołębiowski-Owczarek2020-05-161-4/+10
| | | Closes gh-1916
* Build: Add jQuery 3.5.0 & 3.5.1Michał Gołębiowski-Owczarek2020-05-161-0/+1
| | | Closes gh-1915
* Datepicker: Fixed current instance memory leak and added unit testcasesjigar gala2020-03-231-2/+11
|
* All: Remove usage of jQuery positional selectorsMichał Gołębiowski-Owczarek2020-01-2214-124/+143
| | | | | | | | | | | | | | | | | jQuery positional selectors () have been deprecated in [jQuery 3.4.0](https://blog.jquery.com/2019/04/10/jquery-3-4-0-released/) and they'll be removed in jQuery 4.0.0. This PR removes their usage. Most of the changes were possible without changing public API. However, dropping `:even` usage required a change to the [`header` option](https://api.jqueryui.com/accordion/#option-header) of the accordion widget. I made it an optional function; this will need to be documented. The polyfill for `.even()` & `.odd()` is added for jQuery <3.5.0. There was no usage of the :odd selector in the code but the `.odd()` method is also polyfilled for completeness. Closes gh-1904
* All: Migrate away from deprecated/removed Core APIsMichał Gołębiowski-Owczarek2019-12-0811-39/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary of the changes: * Build: Add jQuery 3.2.0-3.4.1 to versions UI can be tested against * Build: Load jQuery & Migrate via HTTPS * Build: Add package-lock.json to .gitignore * Build: Update jQuery Migrate from 3.0.0 to 3.1.0 * Build: Allow to run tests against jQuery 3.x-git * Build: Fix formatting according to JSCS rules * Build: Disable JSCS for the inlined jQuery Color * All: Switch from $.isArray to Array.isArray (jQuery.isArray will be removed in jQuery 4.0) * All: Switch from `$.isFunction( x )` to `typeof x === "function"` (jQuery.isFunction will be removed in jQuery 4.0) * All: Inline jQuery.isWindow as it'll be removed in jQuery 4.0 * Effects: Fix a timing issue in a variable declaration. Previously, a jQuery object was created, chained & assigned to a variable that was then accessed in a callback used inside of this chained definition. Due to a timing difference in when the callback fired for the first time in latest jQuery master, it was being called before the variable was defined. * Tests: Make dialog & draggable unit tests less strict (newest jQuery returns fractional results in some cases, making comparisons fail when there's a tiny difference) * All: Migrate from $.trim to bare String.prototype.trim (jQuery.trim will be deprecated in jQuery 3.5) Closes gh-1901
* Menu: Ignore mouse events triggered due to page scrollingScott González2017-05-022-4/+4
| | | | | Fixes #9356 Closes gh-1806
* Menu: Don't focus dividers when wrapping via keyboard navigationScott González2017-05-022-0/+32
| | | | | Fixes #15157 Closes gh-1804
* Button: Fix backcompat when called on collection of mixed elementsAlexander Schmitz2017-05-022-0/+26
| | | | | Fixes #15109 Closes gh-1808
* Labels: Handle empty setsScott González2017-05-021-1/+3
| | | | Fixes #15184
* Menu: Close menus immediately on selection or click outsideScott González2017-04-251-1/+3
| | | | | Fixes #15034 Closes gh-1807
* Widget: Handle `Object.create(null)` for options objectsScott González2017-04-241-1/+6
| | | | | Fixes #15179 Closes gh-1809
* Resizable: Keep user-provided handles on destroyKonstantin Dinev2017-04-171-1/+9
| | | | | Closes gh-1798 Ref gh-1795
* Resizable: Keep user defined handles on _setOptionKonstantin Dinev2017-02-241-8/+20
| | | | | Fixes #15084 Closes gh-1795
* Spinner: Ignore `mousewheel` events when not focusedScott González2017-02-211-9/+25
| | | | | Fixes #15139 Closes gh-1794
* Selectmenu: Don't render options with the `hidden` attributeScott González2016-11-161-0/+26
| | | | Fixes #15098
* Build: Add jQuery 3.1.1Michał Gołębiowski2016-11-021-1/+1
| | | | Closes gh-1766
* Form: Rename from `.form()` to `._form()` since its not for public useScott González2016-10-111-1/+1
| | | | | Fixes #15074 Closes gh-1760
* Sortable: Setting table row placeholder height to be same as sorted rowKevin Cupp2016-10-042-7/+66
| | | | | Fixes #13662 Closes gh-1578
* Tabs: Remove presentation rolemilk542016-09-291-2/+1
| | | | | Fixes #10122 Closes gh-1748
* Resizable: Fix aspectRatio cannot be changed after initialization.Sergei Ratnikov2016-09-281-0/+22
| | | | | Fixes #4186 Closes gh-1750
* Widget: Untrack classes elements when they are removed from the DOMAlexander Schmitz2016-09-131-5/+37
| | | | | Fixes #15043 Closes gh-1744
* Draggable: Fix spurious blur in dialogs on mousedownRyan Oriecuia2016-09-131-0/+30
| | | | | | | | | | | | | | | | | | I was running into a problem with a popup menu control in a dialog; clicks weren't working (but keyboard was working fine). It turned out that the menu was getting destroyed before the click event could fire. Tracked down the issue to the way draggable blurs focused controls; it was doing the blur before it ran through the logic to figure out if the drag was actually on the handle. I've moved the blur below these checks, so it'll only blur things if it actually needs to handle the drag. Otherwise, it asserts no opinion on what should and shouldn't be focused, which seems like the way things ought to be. Also, added a unit test to check for the expected behavior. Fixes #15046 Closes gh-1730
* Slider: Add demo for custom handleScott González2016-09-132-2/+14
| | | | | Fixes #15023 Closes gh-1740
* Dialog: Fix code styleScott González2016-08-311-2/+2
|
* Dialog: Allow for subpixel calculation errors in testsScott González2016-08-311-7/+8
| | | | | | Tests were failing in IE 10-11 with values that were off by 0.01 pixels. Closes gh-1737
* Effects: Adjust animation duration in testsScott González2016-08-301-2/+2
| | | | | | | | | | | | | With jQuery 3 using `requestAnimationFrame()`, the `setTimeout()` timing for short animations wasn't working consistently. This resulted in infrequent failures everywhere (but infrequent enough that it's hard to even notice), but consistent failures in IE and Edge. Bumping up the duration and running the assertions in the middle seems to give consistent results. Eventually, we should refactor this to use `requestAnimationFrame()` in the tests themselves to avoid problems like this. Closes gh-1738