Commit Graph

150 Commits

Author SHA1 Message Date
Michał Gołębiowski-Owczarek
0c5becce0e
Widget: Optimize attachment of the _untrackClassesElement listener
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
2022-01-15 01:26:23 +01:00
Michał Gołębiowski-Owczarek
70dae67b73
Build: Migrate from JSHint & JSCS to ESLint
Fixes #15393
Closes gh-1958
2021-06-07 00:58:12 +02:00
Michał Gołębiowski-Owczarek
e7a10c70ae
Tests: Ensure no timers are running at the end of each test (#1920)
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
2020-05-16 09:16:24 +02:00
Michał Gołębiowski-Owczarek
98b539171b All: Migrate away from deprecated/removed Core APIs
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
2019-12-08 22:23:08 +01:00
Scott González
50efd6e1b0 Menu: Ignore mouse events triggered due to page scrolling
Fixes #9356
Closes gh-1806
2017-05-02 15:16:17 -04:00
Scott González
a2b25ef6ca Selectmenu: Don't render options with the hidden attribute
Fixes #15098
2016-11-16 12:52:15 -05:00
Felix Nagel
ac9ca9e52c Menu: Support number pad keyboard input
Fixes #15031
Closes gh-1732
2016-08-24 11:56:26 -04:00
Amanpreet Singh
d00c5641b9 Selectmenu: Shift to use no globals 2016-04-14 00:14:57 +05:30
Alexander Schmitz
bff8277fbc Selectmenu: Prepend icon and move overflow to text span
Fixes #14938
Closes gh-1685
2016-03-30 11:53:28 -04:00
Alexander Schmitz
20466d5027 Selectmenu: Fixed selectmenu icon float right
Also removes the icon space as its not needed with a floated icon

Fixes #14914
Closes gh-1671
2016-02-24 11:29:44 -05:00
Jörn Zaefferer
39853fda45 Selectmenu: Handle form resets
Fixes #12236
Ref gh-1550
2015-10-27 10:28:04 -04:00
Jörn Zaefferer
3570cc5a2b Tests: Fix button space assertions on IE8
IE8 still doesn't keep the space in the text (or HTML) representation.
We don't really care, so adding more trims in these tests as well.
2015-10-25 11:25:00 -04:00
Alexander Schmitz
6b05034283 Selectmenu: Address review comments 2015-10-08 14:02:57 -04:00
Alexander Schmitz
9f7f0a4279 Selectmenu: update to use button css
This ensures consistency between different form elements
2015-10-07 10:57:59 -04:00
Alexander Schmitz
cfd48ed037 Selectmenu: Style updates
Ref #14246
2015-09-11 08:29:07 -04:00
Alexander Schmitz
7e43405269 Selectmenu: Style updates
Ref #14246
Ref gh-1588
2015-08-21 08:06:22 -04:00
Alexander Schmitz
e7c9e8877e Selectmenu: Move selectmenu into widgets folder
Ref #13885
2015-08-08 00:29:39 -04:00
Scott González
6231b161b9 Tests: Fix AMD loading in IE8
It appears that we must load require.js via a standard script tag in order
for it to work properly in IE8.
2015-04-17 12:13:38 -04:00
Scott González
bde431bb44 Tests: Rename files
Ref gh-1528
2015-04-09 09:27:00 -04:00
Scott González
3522fd9618 Selectmenu: Convert tests to new infrastructure
Ref #10119
Ref gh-1528
2015-04-09 09:26:26 -04:00
Scott González
500f6b4992 Tests: Switch to the new qunit-composite module
This module was created from our existing implementation.

Closes gh-1532
2015-04-07 09:03:36 -04:00
Alexander Schmitz
8eb29fd90c Selectmenu: Use new has/lacksClasses assertions for all class checks 2015-03-11 16:05:40 -04:00
Alexander Schmitz
3483486a15 Selectmenu: Add classes option
Ref #7053
Ref gh-1411
2015-03-11 16:05:07 -04:00
Alexander Schmitz
c192d4086d Widget: Add classes option and _add/_remove/_toggleClass methods
Fixes #7053
Closes gh-1411
2015-03-11 16:00:04 -04:00
Scott González
af4c35df9d Selectmenu: Support width: false and default to 14em
`width: null` still matches the width of the original element.
`width: false` prevents an inline style from being set for the width. This
makes it easy to set the width via a stylesheet and allows the use of any
unit for setting the width, such as the new default of `14em`.

Fixes #11198
Closes gh-1467
2015-03-05 11:42:49 -05:00
Jörn Zaefferer
2aabd427eb Tests: Fix style issues with missing or multiple line breaks
As pointed out by jscs, after a esformatter run. The latter doesn't
address these, so fixing them manually.
2015-01-24 17:10:20 +01:00
Jörn Zaefferer
0bbd156918 Menu: Use ui-state-active consistently
So far we were using ui-state-active on active parent items,
ui-state-focus on active child items. The theme update highlighted the
visual inconsistency. With this change, only ui-state-active is used.

Fixes #10692
2015-01-21 18:07:43 +01:00
Scott González
65584c1640 Selectmenu: Better handling when there are no options
Fixes #10662
Closes gh-1370
Closes gh-1423
2015-01-12 13:00:38 -05:00
Felix Nagel
979373983b Selectmenu: Copy title attributes
Fixes #10435
Closes gh-1298
2014-11-04 08:40:15 -05:00
Felix Nagel
fb4124b7af Selectmenu: Introduce _renderButtonItem() method
Fixes #10142
Closes gh-1299
2014-11-04 08:02:48 -05:00
TJ VanToll
e9643f6bfc Selectmenu: Re-add wrappers to menu items 2014-10-25 10:10:38 -07:00
Mike Sherov
aa425ab95d Build: Pull in jquery.simulate.js from Bower
Fixes #10563
2014-08-22 17:01:50 -04:00
Scott González
c017628e11 Tests: Fix composite tests 2014-08-01 12:25:14 -04:00
Scott González
4ad45991e6 Selectmenu: Remove unused var in test 2014-07-29 15:18:46 -04:00
Scott González
64faf2da0a Selectmenu: Don't check menu width in width option tests 2014-07-29 15:02:36 -04:00
Scott González
45e13ed208 Selectmenu: Properly set width for button
Fixes #10145
Closes gh-1296
2014-07-29 13:17:30 -04:00
TJ VanToll
c29b4434b6 Tests: Use closeEnough() to account for rounding differences
Selectmenu's test suite broke with b0e8380, which changed the padding
used by the menu widget. Selectmenu conditionally adds pixels to the
menu's width, and using closeEnough() accounts for that and the
rounding differences across browsers.

Closes gh-1275
2014-06-25 12:16:29 -04:00
Scott González
6df127a0b5 Build: Reorganize external directory
Put each external library into its own directory.
Move jquery.js to external.

Ref gh-1266
2014-06-24 22:45:32 -04:00
Scott González
23ea063b3c Selectmenu: Work around test bug in IE 2014-04-24 08:38:09 -04:00
Scott González
69a3d94a06 Selectmenu: Test cleanup 2014-04-22 18:24:04 -04:00
Scott González
bdb0f7a4cb Selectmenu: Test cleanup 2014-04-22 12:57:05 -04:00
Scott González
56f6f92314 Selectmenu: Test cleanup 2014-04-22 12:19:12 -04:00
Scott González
d8062dc4cf Selectmenu: Test cleanup 2014-04-21 20:15:36 -04:00
Scott González
fd7e1e3040 Selectmenu: Default disabled option to null 2014-04-21 10:32:49 -04:00
Scott González
8b2606a650 Selectmenu: Fix reference to jQuery in tests 2014-04-21 10:11:55 -04:00
Scott González
712ac17fc7 Selectmenu: Remove unused var 2014-04-18 12:46:41 -04:00
Scott González
1272fca9ef Selectmenu: Don't use active items at all
Menus only use active items for nested menus which selectmenu doesn't support.
Selectmenu should only be working with focused items.

Ref gh-1224
2014-04-18 12:37:06 -04:00
Jörn Zaefferer
0c754f9d9e Selectmenu: Refactor appendTo option tests 2014-02-21 13:40:32 +01:00
Jörn Zaefferer
fa99e23d18 Selectmenu: Fall back to .ui-front searching for empty jQuery objects
Fixes #9757
2014-02-21 13:35:34 +01:00
Jörn Zaefferer
822f3cd9d0 Tests: Update to sane QUnit markup 2014-02-20 17:05:02 +01:00