summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2012-07-11 15:04:46 -0700
committerFelix Nagel <info@felixnagel.com>2012-07-11 15:04:46 -0700
commit144affca2208600b7e77ab3735544335bf6cbaec (patch)
treeb02bd1557db8f0895b75d234d4ec0d251c4c8364
parent8b8480ca06439ed974e19f1ab2592d1a3aded5f3 (diff)
parent397e98693a1c9a73ebccfa5f561ebfa52939070e (diff)
downloadjquery-ui-144affca2208600b7e77ab3735544335bf6cbaec.tar.gz
jquery-ui-144affca2208600b7e77ab3735544335bf6cbaec.zip
Merge pull request #247 from aglemann/selectmenu
fixed: "focus" doesn't bubble, see #241
-rw-r--r--tests/unit/index.html1
-rw-r--r--tests/unit/selectmenu/selectmenu.html99
-rw-r--r--tests/unit/selectmenu/selectmenu_tickets.js25
-rw-r--r--ui/jquery.ui.selectmenu.js7
4 files changed, 131 insertions, 1 deletions
diff --git a/tests/unit/index.html b/tests/unit/index.html
index be7009749..70a938035 100644
--- a/tests/unit/index.html
+++ b/tests/unit/index.html
@@ -68,6 +68,7 @@
<li><a href="datepicker/datepicker.html">Datepicker</a></li>
<li><a href="dialog/dialog.html">Dialog</a></li>
<li><a href="progressbar/progressbar.html">Progressbar</a></li>
+ <li><a href="selectmenu/selectmenu.html">Selectmenu</a></li>
<li><a href="slider/slider.html">Slider</a></li>
<li><a href="tabs/tabs.html">Tabs</a></li>
</ul>
diff --git a/tests/unit/selectmenu/selectmenu.html b/tests/unit/selectmenu/selectmenu.html
new file mode 100644
index 000000000..689ccd60d
--- /dev/null
+++ b/tests/unit/selectmenu/selectmenu.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>jQuery UI Selectmenu Test Suite</title>
+
+ <link type="text/css" href="../../../themes/base/jquery.ui.selectmenu.css" rel="stylesheet" />
+
+ <script src="../../jquery.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.core.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.widget.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.selectmenu.js"></script>
+
+ <link rel="stylesheet" href="../../../external/qunit.css" type="text/css"/>
+ <script type="text/javascript" src="../../../external/qunit.js"></script>
+ <script type="text/javascript" src="../../jquery.simulate.js"></script>
+ <script type="text/javascript" src="../testsuite.js"></script>
+
+ <script type="text/javascript" src="selectmenu_tickets.js"></script>
+
+ <script type="text/javascript" src="../swarminject.js"></script>
+</head>
+<body>
+
+<h1 id="qunit-header">jQuery UI Selectmenu Test Suite</h1>
+<h2 id="qunit-banner"></h2>
+<h2 id="qunit-userAgent"></h2>
+<ol id="qunit-tests">
+</ol>
+
+<div id="qunit-fixture">
+ <select id="selectmenu">
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AS">American Samoa</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="AA">Armed Forces Americas</option>
+ <option value="AE">Armed Forces Europe</option>
+ <option value="AP">Armed Forces Pacific</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="GU">Guam</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MP">Marianas</option>
+ <option value="MH">Marshall Islands</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="FM">Micronesia</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PW">Palau</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="PR">Puerto Rico</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VI">Virgin Islands</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>​
+</div>
+
+</body>
+</html>
diff --git a/tests/unit/selectmenu/selectmenu_tickets.js b/tests/unit/selectmenu/selectmenu_tickets.js
new file mode 100644
index 000000000..83032befc
--- /dev/null
+++ b/tests/unit/selectmenu/selectmenu_tickets.js
@@ -0,0 +1,25 @@
+/*
+ * selectmenu_tickets.js
+ */
+(function($) {
+
+module("selectmenu: tickets");
+
+test('#241 - "focus" doesn\'t bubble', function() {
+ // https://github.com/fnagel/jquery-ui/issues/241
+ expect(4);
+
+ el = $('#selectmenu').selectmenu();
+
+ $('.ui-selectmenu').mousedown();
+ ok($('.ui-selectmenu-menu').hasClass('ui-selectmenu-open'), 'selectmenu menu element should be visible');
+ ok($('.ui-selectmenu-menu li:eq(0)').hasClass('ui-selectmenu-item-focus'), 'first item should have focus');
+
+ $('.ui-selectmenu-menu-dropdown').simulate('keydown', { keyCode: $.ui.keyCode.DOWN });
+ ok($('.ui-selectmenu-menu li:eq(1)').hasClass('ui-selectmenu-item-focus'), 'after down arrow press, second item should have focus');
+
+ $('.ui-selectmenu-menu-dropdown').simulate('keypress', { keyCode: 'a'.charCodeAt(0) });
+ ok($('.ui-selectmenu-menu li:eq(2)').hasClass('ui-selectmenu-item-focus'), 'after "a" key press, third item should have focus');
+});
+
+})(jQuery);
diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js
index d878ec5c2..5f772dfef 100644
--- a/ui/jquery.ui.selectmenu.js
+++ b/ui/jquery.ui.selectmenu.js
@@ -308,7 +308,12 @@ $.widget("ui.selectmenu", {
href : '#nogo',
tabindex : -1,
role : 'option',
- 'aria-selected' : false
+ 'aria-selected' : false,
+ focus: function() {
+
+ // bubble the focus event
+ $(this).parent().focus();
+ }
};
if ( selectOptionData[ i ].disabled ) {
thisAAttr[ 'aria-disabled' ] = selectOptionData[ i ].disabled;