aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2012-05-24 18:34:32 +0200
committerFelix Nagel <info@felixnagel.com>2012-05-24 18:34:32 +0200
commitb30184d885329317b9dbd70835d2c4d154f98475 (patch)
tree445acc2481e8456211c3e893e7789fe4b5978791
parentec6d88fae464ffb432df6c8d2ed06ee9fa5b4dae (diff)
parenta1f604eb453208c80ec17c42c7bb4e3a1c624102 (diff)
downloadjquery-ui-b30184d885329317b9dbd70835d2c4d154f98475.tar.gz
jquery-ui-b30184d885329317b9dbd70835d2c4d154f98475.zip
Merge with master
-rw-r--r--.editorconfig13
-rw-r--r--AUTHORS.txt218
-rw-r--r--README.md77
-rw-r--r--demos/accordion/custom-icons.html10
-rw-r--r--demos/animate/default.html11
-rw-r--r--demos/autocomplete/combobox.html8
-rw-r--r--demos/button/default.html4
-rw-r--r--demos/position/default.html2
-rw-r--r--demos/progressbar/animated.html2
-rw-r--r--demos/spinner/default.html22
-rw-r--r--demos/tabs/manipulation.html4
-rw-r--r--demos/toggle/default.html33
-rw-r--r--demos/widget/default.html11
-rw-r--r--grunt.js28
-rw-r--r--tests/index.css21
-rw-r--r--tests/index.html35
-rw-r--r--tests/index.js10
-rw-r--r--tests/static/button/default.html161
-rw-r--r--tests/static/datepicker/datepicker.html1367
-rw-r--r--tests/static/datepicker/default.html86
-rw-r--r--tests/static/icons.html314
-rw-r--r--tests/static/static.css1
-rw-r--r--tests/static/static.js9
-rw-r--r--tests/unit/autocomplete/autocomplete_common.js4
-rw-r--r--tests/unit/autocomplete/autocomplete_core.js37
-rw-r--r--tests/unit/button/button_core.js6
-rw-r--r--tests/unit/button/button_options.js4
-rw-r--r--tests/unit/button/button_tickets.js12
-rw-r--r--tests/unit/draggable/draggable_common.js2
-rw-r--r--tests/unit/draggable/draggable_events.js2
-rw-r--r--tests/unit/draggable/draggable_options.js8
-rw-r--r--tests/unit/index.html36
-rw-r--r--tests/unit/menu/menu.html2
-rw-r--r--tests/unit/menu/menu_common.js1
-rw-r--r--tests/unit/menu/menu_core.js13
-rw-r--r--tests/unit/menu/menu_events.js139
-rw-r--r--tests/unit/menu/menu_methods.js6
-rw-r--r--tests/unit/menu/menu_options.js26
-rw-r--r--tests/unit/resizable/resizable_common.js2
-rw-r--r--tests/unit/selectable/selectable_common.js2
-rw-r--r--tests/unit/slider/slider_common.js2
-rw-r--r--tests/unit/sortable/sortable_common.js2
-rw-r--r--tests/unit/sortable/sortable_options.js2
-rw-r--r--tests/unit/tabs/tabs.html2
-rw-r--r--tests/unit/tabs/tabs_common.js3
-rw-r--r--tests/unit/tabs/tabs_common_deprecated.js2
-rw-r--r--tests/unit/tabs/tabs_core.js13
-rw-r--r--tests/unit/tabs/tabs_deprecated.html2
-rw-r--r--tests/unit/tabs/tabs_deprecated.js61
-rw-r--r--tests/unit/tabs/tabs_events.js28
-rw-r--r--tests/unit/tabs/tabs_methods.js22
-rw-r--r--tests/unit/tabs/tabs_options.js18
-rw-r--r--tests/unit/tabs/tabs_test_helpers.js2
-rw-r--r--tests/unit/tooltip/tooltip.html1
-rw-r--r--tests/unit/tooltip/tooltip_core.js25
-rw-r--r--tests/unit/tooltip/tooltip_events.js2
-rw-r--r--tests/unit/tooltip/tooltip_methods.js6
-rw-r--r--tests/unit/tooltip/tooltip_options.js16
-rw-r--r--tests/visual/accordion/icons.html (renamed from tests/visual/accordion/accordion.html)0
-rw-r--r--tests/visual/addClass/queue.html (renamed from tests/visual/addClass/addClass_queue.html)2
-rw-r--r--tests/visual/button/button.html184
-rw-r--r--tests/visual/button/button_disabled_true.html84
-rw-r--r--tests/visual/button/button_performance.html555
-rw-r--r--tests/visual/button/button_ticket_5261.html42
-rw-r--r--tests/visual/button/button_ticket_5278.html58
-rw-r--r--tests/visual/button/performance.html26
-rw-r--r--tests/visual/dialog/performance.html (renamed from tests/visual/dialog/dialog_on_page_with_large_dom.html)6
-rw-r--r--tests/visual/effects/all.html (renamed from tests/visual/effects/effects.all.html)10
-rw-r--r--tests/visual/effects/effects.all.js106
-rw-r--r--tests/visual/effects/effects.css (renamed from tests/visual/effects/effects.all.css)12
-rw-r--r--tests/visual/effects/effects.js107
-rw-r--r--tests/visual/effects/scale.html (renamed from tests/visual/effects/effects.scale.html)8
-rw-r--r--tests/visual/index.html82
-rw-r--r--tests/visual/menu/drilldown.html267
-rw-r--r--tests/visual/menu/menu.html76
-rw-r--r--tests/visual/menu/tablemenu.html68
-rw-r--r--tests/visual/position/position.html204
-rw-r--r--tests/visual/position/position_feedback.html4
-rw-r--r--tests/visual/position/position_feedback_rotate.html109
-rw-r--r--tests/visual/position/position_fit.html147
-rw-r--r--tests/visual/position/position_flip.html76
-rw-r--r--tests/visual/position/position_flipfit.html85
-rw-r--r--tests/visual/position/position_margin.html42
-rw-r--r--tests/visual/position/position_within.html200
-rw-r--r--tests/visual/tooltip/ajaxcontent.php2
-rw-r--r--tests/visual/tooltip/animations.html122
-rw-r--r--tests/visual/tooltip/tooltip.html302
-rw-r--r--themes/base/jquery.ui.accordion.css3
-rw-r--r--ui/i18n/jquery.ui.datepicker-eu.js18
-rw-r--r--ui/jquery.effects.core.js12
-rw-r--r--ui/jquery.ui.accordion.js14
-rw-r--r--ui/jquery.ui.autocomplete.js112
-rw-r--r--ui/jquery.ui.button.js11
-rw-r--r--ui/jquery.ui.core.js79
-rw-r--r--ui/jquery.ui.dialog.js24
-rw-r--r--ui/jquery.ui.menu.js85
-rw-r--r--ui/jquery.ui.mouse.js2
-rw-r--r--ui/jquery.ui.resizable.js6
-rw-r--r--ui/jquery.ui.slider.js5
-rw-r--r--ui/jquery.ui.sortable.js3
-rw-r--r--ui/jquery.ui.tabs.js267
-rw-r--r--ui/jquery.ui.tooltip.js38
102 files changed, 1833 insertions, 4790 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..7dd83491e
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+; This file is for unifying the coding style for different editors and IDEs.
+; More information at http://EditorConfig.org
+
+root = true
+
+[grunt.js]
+indent_style = tab
+
+[ui/**.js]
+indent_style = tab
+
+[tests/unit/**.js]
+indent_style = tab
diff --git a/AUTHORS.txt b/AUTHORS.txt
index ecb4eb460..d7cb18d16 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -1,31 +1,189 @@
-jQuery UI Authors (http://jqueryui.com/about)
+Authors ordered by first contribution
+A list of current team members is available at http://jqueryui.com/about
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-and logs, available at http://github.com/jquery/jquery-ui
-
-Brandon Aaron
-Paul Bakaus (paulbakaus.com)
-David Bolter
-Rich Caloggero
-Chi Cheng (cloudream@gmail.com)
-Colin Clark (http://colin.atrc.utoronto.ca/)
-Michelle D'Souza
-Aaron Eisenberger (aaronchi@gmail.com)
-Ariel Flesler
-Bohdan Ganicky
-Scott González
-Marc Grabanski (m@marcgrabanski.com)
-Klaus Hartl (stilbuero.de)
-Hans Hillen (TPG, funded through AEGIS: http://www.aegis-project.eu/)
-Scott Jehl
-Cody Lindley
-Eduardo Lundgren (eduardolundgren@gmail.com)
-Todd Parker
-John Resig
-Patty Toland
-Ca-Phun Ung (yelotofu.com)
-Keith Wood (kbwood@virginbroadband.com.au)
-Maggie Costello Wachs
-Richard D. Worth (rdworth.org)
-Jörn Zaefferer (bassistance.de)
+Paul Bakaus <paul.bakaus@googlemail.com>
+Richard Worth <rdworth@gmail.com>
+Yehuda Katz <wycats@gmail.com>
+Sean Catchpole <littlecooldude@gmail.com>
+John Resig <jeresig@gmail.com>
+Tane Piper <tane@tanepiper.com>
+Dmitri Gaskin <dmitrig01@gmail.com>
+Klaus Hartl <klaus.hartl@googlemail.com>
+Stefan Petre <stefan.petre@gmail.com>
+Gilles van den Hoven <gilles@webunity.nl>
+Micheil Smith <micheil@brandedcode.com>
+Jörn Zaefferer <joern.zaefferer@gmail.com>
+Marc Grabanski <m@marcgrabanski.com>
+Keith Wood <kbwood.au@gmail.com>
+Brandon Aaron <brandon.aaron@gmail.com>
+Scott González <scott.gonzalez@gmail.com>
+Eduardo Lundgren <eduardolundgren@gmail.com>
+Aaron Eisenberger <aaronchi@gmail.com>
+Joan Piedra <theneojp@gmail.com>
+Bruno Basto <b.basto@gmail.com>
+Remy Sharp <remy@leftlogic.com>
+Bohdan Ganicky <bohdan.ganicky@gmail.com>
+David Bolter <david.bolter@gmail.com>
+Chi Cheng <cloudream@gmail.com>
+Ca-Phun Ung <pazu2k@gmail.com>
+Ariel Flesler <aflesler@gmail.com>
+Maggie Costello Wachs <fg.maggie@gmail.com>
+Scott Jehl <scott@scottjehl.com>
+Todd Parker <fg.todd@gmail.com>
+Andrew Powell <powella@gmail.com>
+Brant Burnett <btburnett3@gmail.com>
+Douglas Neiner <doug@pixelgraphics.us>
+Paul Irish <paul.irish@gmail.com>
+Ralph Whitbeck <ralph.whitbeck@gmail.com>
+Thibault Duplessis <thibault.duplessis@gmail.com>
+Dominique Vincent <dominique.vincent@toitl.com>
+Jack Hsu <jack.hsu@gmail.com>
+Adam Sontag <ajpiano@ajpiano.com>
+Carl Fürstenberg <carl@excito.com>
+Kevin Dalman <development@allpro.net>
+Alberto Fernández Capel <afcapel@gmail.com>
+Jacek Jędrzejewski <jacek.jedrzejewski@gmail.com>
+Ting Kuei <ting@kuei.com>
+Samuel Cormier-Iijima <sam@chide.it>
+Jon Palmer <jonspalmer@gmail.com>
+Ben Hollis <bhollis@amazon.com>
+Justin MacCarthy <Justin@Rubystars.biz>
+Eyal Kobrigo <kobrigo@hotmail.com>
+Tiago Freire <tiago.freire@gmail.com>
+Diego Tres <diegotres@gmail.com>
+Holger Rüprich <holger@rueprich.de>
+Ziling Zhao <zizhao@cisco.com>
+Mike Alsup <malsup@gmail.com>
+Robson Braga Araujo <robsonbraga@gmail.com>
+Pierre-Henri Ausseil <ph.ausseil@gmail.com>
+Christopher McCulloh <cmcculloh@gmail.com>
+Andrew Newcomb <ext.github@preceptsoftware.co.uk>
+Lim Chee Aun <cheeaun@gmail.com>
+Jorge Barreiro <yortx.barry@gmail.com>
+Daniel Steigerwald <daniel@steigerwald.cz>
+John Firebaugh <john_firebaugh@bigfix.com>
+John Enters <github@darkdark.net>
+Andrey Kapitcyn <ru.m157y@gmail.com>
+Dmitry Petrov <dpetroff@gmail.com>
+Eric Hynds <eric@hynds.net>
+Chairat Sunthornwiphat <pipo@sixhead.com>
+Josh Varner <josh.varner@gmail.com>
+Stéphane Raimbault <stephane.raimbault@gmail.com>
+Jay Merrifield <fracmak@gmail.com>
+J. Ryan Stinnett <jryans@gmail.com>
+Peter Heiberg <peter@heiberg.se>
+Alex Dovenmuehle <adovenmuehle@gmail.com>
+Jamie Gegerson <git@jamiegegerson.com>
+Raymond Schwartz <skeetergraphics@gmail.com>
+Phillip Barnes <philbar@gmail.com>
+Kyle Wilkinson <kai@wikyd.org>
+Khaled AlHourani <me@khaledalhourani.com>
+Marian Rudzynski <mr@impaled.org>
+Jean-Francois Remy <jfremy@virtuoz.com>
+Doug Blood <dougblood@gmail.com>
+Filippo Cavallarin <poplix@papuasia.org>
+Heiko Henning <h.henning@educa.ch>
+Aliaxandr Rahalevich <saksmlz@gmail.com>
+Mario Visic <mario@mariovisic.com>
+Xavi Ramirez <xavi.rmz@gmail.com>
+Max Schnur <max.schnur@gmail.com>
+Saji Nediyanchath <saji89@gmail.com>
+Corey Frang <gnarf@gnarf.net>
+Aaron Peterson <aaronp123@yahoo.com>
+Ivan Peters <ivan@ivanpeters.com>
+Mohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>
+Marcos Sousa <marcos.sousa@corp.globo.com>
+Michael DellaNoce <mdellanoce@mailtrust.com>
+George Marshall <echosx@gmail.com>
+Tobias Brunner <tobias@strongswan.org>
+Martin Solli <msolli@gmail.com>
+David Petersen <public@petersendidit.com>
+Dan Heberden <danheberden@gmail.com>
+William Kevin Manire <williamkmanire@gmail.com>
+Gilmore Davidson <gilmoreorless@gmail.com>
+Michael Wu <michaelmwu@gmail.com>
+Adam Parod <mystic414@gmail.com>
+Guillaume Gautreau <guillaume+github@ghusse.com>
+Marcel Toele <EleotleCram@gmail.com>
+Dan Streetman <ddstreet@ieee.org>
+Matt Hoskins <furlined@cat-basket.org>
+Giovanni Giacobbi <giovanni@giacobbi.net>
+Kyle Florence <kyle.florence@gmail.com>
+Pavol Hluchý <lopo@losys.sk>
+Hans Hillen <hans.hillen@gmail.com>
+Mark Johnson <virgofx@live.com>
+Trey Hunner <treyhunner@gmail.com>
+Shane Whittet <whittet@gmail.com>
+Edward Faulkner <ef@alum.mit.edu>
+Adam Baratz <adam.baratz@gmail.com>
+Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
+Eike Send <eike.send@gmail.com>
+Kris Borchers <kris.borchers@gmail.com>
+Eddie Monge <eddie@eddiemonge.com>
+Israel Tsadok <itsadok@gmail.com>
+Carson McDonald <carson@ioncannon.net>
+Jason Davies <jason@jasondavies.com>
+Garrison Locke <gplocke@gmail.com>
+David Murdoch <musicisair@yahoo.com>
+Ben Boyle <benjamins.boyle@gmail.com>
+Jesse Baird <jebaird@gmail.com>
+Jonathan Vingiano <jvingiano@gmail.com>
+Dylan Just <dev@ephox.com>
+Tomy Kaira <tomykaira@gmail.com>
+Glenn Goodrich <glenn.goodrich@gmail.com>
+Ashek Elahi <mail.ashek@gmail.com>
+Ryan Neufeld <ryan@neufeldmail.com>
+Marc Neuwirth <marc.neuwirth@gmail.com>
+Philip Graham <philip.robert.graham@gmail.com>
+Benjamin Sterling <benjamin.sterling@kenzomedia.com>
+Wesley Walser <wwalser@atlassian.com>
+Kouhei Sutou <kou@clear-code.com>
+Karl Kirch <karl.ctr.kirch@faa.gov>
+Chris Kelly <ckdake@ckdake.com>
+Jay Oster <jay@loyalize.com>
+Alex Polomoshnov <alex.polomoshnov@gmail.com>
+David Leal <dgleal@gmail.com>
+igor milla <igor.fsp.milla@gmail.com>
+Dave Methvin <dave.methvin@gmail.com>
+Florian Gutmann <blackfeet@gmx.at>
+Marwan Al Jubeh <marwan.aljubeh@gmail.com>
+Milan Broum <midlis@googlemail.com>
+Sebastian Sauer <info@dynpages.de>
+Gaëtan Muller <m.gaetan89@gmail.com>
+Michel Weimerskirch <michel@weimerskirch.net>
+William Griffiths <william@ycymro.com>
+Stojce Slavkovski <stojce@gmail.com>
+David Soms <david.soms@gmail.com>
+David De Sloovere <david.desloovere@hotmail.com>
+Michael P. Jung <michael.jung@terreon.de>
+Shannon Pekary <spekary@gmail.com>
+Matthew Hutton <meh@corefiling.co.uk>
+James Khoury <james@jameskhoury.com>
+Rob Loach <robloach@gmail.com>
+Alberto Monteiro <betimbrasil@gmail.com>
+Alex Rhea <alex.rhea@gmail.com>
+Krzysztof Rosiński <rozwell69@gmail.com>
+Ryan Olton <oltonr@gmail.com>
+Genie <386@mail.com>
+Rick Waldron <waldron.rick@gmail.com>
+Ian Simpson <spoonlikesham@gmail.com>
+Lev Kitsis <spam4lev@gmail.com>
+TJ VanToll <tj.vantoll@gmail.com>
+Justin Domnitz <jdomnitz@gmail.com>
+Douglas Cerna <replaceafill@system76.(none)>
+Bert ter Heide <bertjh@hotmail.com>
+Jasvir Nagra <jasvir@gmail.com>
+Petr Hromadko <yuriy@tokyoscale.com>
+Harri Kilpiö <harri.kilpio@gmail.com>
+Lado Lomidze <lado.lomidze@gmail.com>
+Amir E. Aharoni <amir.aharoni@mail.huji.ac.il>
+Simon Sattes <simon.sattes@gmail.com>
+Jo Liss <joliss42@gmail.com>
+Guntupalli Karunakar <karunakarg@yahoo.com>
+Shahyar Ghobadpour <shahyar@gmail.com>
+Lukasz Lipinski <uzza17@gmail.com>
+Timo Tijhof <krinklemail@gmail.com>
+Jason Moon <jmoon@socialcast.com>
+Martin Frost <martinf55@hotmail.com>
+Eneko Illarramendi <eneko@illarra.com>
+EungJun Yi <semtlenori@gmail.com>
diff --git a/README.md b/README.md
index a233d9457..e7ae90e8a 100644
--- a/README.md
+++ b/README.md
@@ -5,14 +5,16 @@ jQuery UI provides interactions like Drag and Drop and widgets like Autocomplete
If you want to use jQuery UI, go to [jqueryui.com](http://jqueryui.com) to get started. Or visit the [Using jQuery UI Forum](http://forum.jquery.com/using-jquery-ui) for discussions and questions.
-If you are interested in helping developing jQuery UI, you are in the right place.
-To discuss development with team members and the community, visit the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui).
+If you are interested in helping develop jQuery UI, you are in the right place.
+To discuss development with team members and the community, visit the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui) or in #jquery on irc.freednode.net.
+
For contributors
---
+
If you want to help and provide a patch for a bugfix or new feature, please take
-a few minutes and look at [our Getting Involved guide](http://wiki.jqueryui.com/w/page/35263114/Getting-Involved),
-in particular check out the [Coding standards](http://wiki.jqueryui.com/w/page/12137737/Coding-standards)
+a few minutes and look at [our Getting Involved guide](http://wiki.jqueryui.com/w/page/35263114/Getting-Involved).
+In particular check out the [Coding standards](http://wiki.jqueryui.com/w/page/12137737/Coding-standards)
and [Commit Message Style Guide](http://wiki.jqueryui.com/w/page/25941597/Commit-Message-Style-Guide).
In general, fork the project, create a branch for a specific change and send a
@@ -20,19 +22,78 @@ pull request for that branch. Don't mix unrelated changes. You can use the commi
message as the description for the pull request.
+Running the Unit Tests
+---
+
+Run the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:
+
+- Windows: [WAMP download](http://www.wampserver.com/en/)
+- Mac: [MAMP download](http://www.mamp.info/en/index.html)
+- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)
+- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)
+
+
+Building jQuery UI
+---
+
+jQuery UI uses the [grunt](http://github.com/cowboy/grunt) build system. Building jQuery UI requires node.js and a command line zip program.
+
+Install grunt.
+
+`npm install grunt -g`
+
+Clone the jQuery UI git repo.
+
+`git clone git://github.com/jquery/jquery-ui.git`
+
+`cd jquery-ui`
+
+Install node modules.
+
+`npm install`
+
+Run grunt.
+
+`grunt build`
+
+There are many other tasks that can be run through grunt. For a list of all tasks:
+
+`grunt --help`
+
+
For committers
---
+
When looking at pull requests, first check for [proper commit messages](http://wiki.jqueryui.com/w/page/12137724/Bug-Fixing-Guide).
-Unless everything is fine and you can merge directly via GitHub's interface, fetch the remote first:
+Do not merge pull requests directly through GitHub's interface.
+Most pull requests are a single commit; cherry-picking will avoid creating a merge commit.
+It's also common for contributors to make minor fixes in an additional one or two commits.
+These should be squashed before landing in master.
- git remote add [username] [his-fork.git] -f
+**Make sure the author has a valid name and email address associated with the commit.**
-If you want just one commit and edit the commit message:
+Fetch the remote first:
+
+ git fetch [their-fork.git] [their-branch]
+
+Then cherry-pick the commit(s):
+
+ git cherry-pick [sha-of-commit]
+
+If you need to edit the commit message:
git cherry-pick -e [sha-of-commit]
+If you need to edit the changes:
+
+ git cherry-pick -n [sha-of-commit]
+ # make changes
+ git commit --author="[author-name-and-email]"
+
If it should go to the stable brach, cherry-pick it to stable:
git checkout 1-8-stable
- git cherry-pick -x [sha-of-commit]
+ git cherry-pick -x [sha-of-commit-from-master]
+
+*NOTE: Do not cherry-pick into 1-8-stable until you have pushed the commit from master upstream.*
diff --git a/demos/accordion/custom-icons.html b/demos/accordion/custom-icons.html
index 54716d9a0..02344bd12 100644
--- a/demos/accordion/custom-icons.html
+++ b/demos/accordion/custom-icons.html
@@ -19,10 +19,12 @@
$( "#accordion" ).accordion({
icons: icons
});
- $( "#toggle" ).button().toggle(function() {
- $( "#accordion" ).accordion( "option", "icons", null );
- }, function() {
- $( "#accordion" ).accordion( "option", "icons", icons );
+ $( "#toggle" ).button().click(function() {
+ if ( $( "#accordion" ).accordion( "option", "icons" ) ) {
+ $( "#accordion" ).accordion( "option", "icons", null );
+ } else {
+ $( "#accordion" ).accordion( "option", "icons", icons );
+ }
});
});
</script>
diff --git a/demos/animate/default.html b/demos/animate/default.html
index 4fec428e7..307d030a6 100644
--- a/demos/animate/default.html
+++ b/demos/animate/default.html
@@ -15,22 +15,23 @@
</style>
<script>
$(function() {
- $( "#button" ).toggle(
- function() {
+ var state = true;
+ $( "#button" ).click(function() {
+ if ( state ) {
$( "#effect" ).animate({
backgroundColor: "#aa0000",
color: "#fff",
width: 500
}, 1000 );
- },
- function() {
+ } else {
$( "#effect" ).animate({
backgroundColor: "#fff",
color: "#000",
width: 240
}, 1000 );
}
- );
+ state = !state;
+ });
});
</script>
</head>
diff --git a/demos/autocomplete/combobox.html b/demos/autocomplete/combobox.html
index e2ef40dd9..051d55e45 100644
--- a/demos/autocomplete/combobox.html
+++ b/demos/autocomplete/combobox.html
@@ -18,7 +18,7 @@
position: relative;
display: inline-block;
}
- .ui-button {
+ .ui-combobox-toggle {
position: absolute;
top: 0;
bottom: 0;
@@ -28,7 +28,7 @@
*height: 1.7em;
*top: 0.1em;
}
- .ui-autocomplete-input {
+ .ui-combobox-input {
margin: 0;
padding: 0.3em;
}
@@ -75,7 +75,7 @@
.appendTo( wrapper )
.val( value )
.attr( "title", "" )
- .addClass( "ui-state-default" )
+ .addClass( "ui-state-default ui-combobox-input" )
.autocomplete({
delay: 0,
minLength: 0,
@@ -128,7 +128,7 @@
text: false
})
.removeClass( "ui-corner-all" )
- .addClass( "ui-corner-right ui-button-icon" )
+ .addClass( "ui-corner-right ui-combobox-toggle" )
.click(function() {
// close if already visible
if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
diff --git a/demos/button/default.html b/demos/button/default.html
index 60d2674c0..90369f816 100644
--- a/demos/button/default.html
+++ b/demos/button/default.html
@@ -11,7 +11,7 @@
<link rel="stylesheet" href="../demos.css">
<script>
$(function() {
- $( "input:submit, a, button", ".demo" ).button();
+ $( "input[type=submit], a, button", ".demo" ).button();
$( "a", ".demo" ).click(function() { return false; });
});
</script>
@@ -22,7 +22,7 @@
<button>A button element</button>
-<input type="submit" value="A submit button"/>
+<input type="submit" value="A submit button">
<a href="#">An anchor</a>
diff --git a/demos/position/default.html b/demos/position/default.html
index 01137be62..35004b993 100644
--- a/demos/position/default.html
+++ b/demos/position/default.html
@@ -55,7 +55,7 @@
$( ".positionable" ).css( "opacity", 0.5 );
- $( ":input" ).bind( "click keyup change", position );
+ $( "select, input" ).bind( "click keyup change", position );
$( "#parent" ).draggable({
drag: position
diff --git a/demos/progressbar/animated.html b/demos/progressbar/animated.html
index c8f5ff551..6134a8ca7 100644
--- a/demos/progressbar/animated.html
+++ b/demos/progressbar/animated.html
@@ -10,7 +10,7 @@
<script src="../../ui/jquery.ui.progressbar.js"></script>
<link rel="stylesheet" href="../demos.css">
<style>
- .ui-progressbar-value { background-image: url(images/pbar-ani.gif); }
+ .ui-progressbar .ui-progressbar-value { background-image: url(images/pbar-ani.gif); }
</style>
<script>
$(function() {
diff --git a/demos/spinner/default.html b/demos/spinner/default.html
index 03ae2ad7d..1827724b9 100644
--- a/demos/spinner/default.html
+++ b/demos/spinner/default.html
@@ -14,16 +14,20 @@
<script>
$(function() {
var spinner = $( "#spinner" ).spinner();
-
- $( "#disable" ).toggle(function() {
- spinner.spinner( "disable" );
- }, function() {
- spinner.spinner( "enable" );
+
+ $( "#disable" ).click(function() {
+ if ( spinner.spinner( "option", "disabled" ) ) {
+ spinner.spinner( "enable" );
+ } else {
+ spinner.spinner( "disable" );
+ }
});
- $( "#destroy" ).toggle(function() {
- spinner.spinner( "destroy" );
- }, function() {
- spinner.spinner();
+ $( "#destroy" ).click(function() {
+ if ( spinner.data( "ui-spinner" ) ) {
+ spinner.spinner( "destroy" );
+ } else {
+ spinner.spinner();
+ }
});
$( "#getvalue" ).click(function() {
alert( spinner.spinner( "value" ) );
diff --git a/demos/tabs/manipulation.html b/demos/tabs/manipulation.html
index 205fc2e4d..085d42c43 100644
--- a/demos/tabs/manipulation.html
+++ b/demos/tabs/manipulation.html
@@ -76,8 +76,8 @@
// close icon: removing the tab on click
$( "#tabs span.ui-icon-close" ).live( "click", function() {
- $( this ).closest( "li" ).remove();
- $( "#" + $( this ).prev().attr( "aria-controls" ) ).remove();
+ var panelId = $( this ).closest( "li" ).remove().attr( "aria-controls" );
+ $( "#" + panelId ).remove();
tabs.tabs( "refresh" );
});
});
diff --git a/demos/toggle/default.html b/demos/toggle/default.html
index 469674b70..5dcd5eff8 100644
--- a/demos/toggle/default.html
+++ b/demos/toggle/default.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -19,18 +19,33 @@
<script src="../../ui/jquery.effects.slide.js"></script>
<link rel="stylesheet" href="../demos.css">
<style>
- .toggler { width: 500px; height: 200px; }
- #button { padding: .5em 1em; text-decoration: none; }
- #effect { width: 240px; height: 135px; padding: 0.4em; position: relative; }
- #effect h3 { margin: 0; padding: 0.4em; text-align: center; }
+ .toggler {
+ width: 500px;
+ height: 200px;
+ }
+ #button {
+ padding: .5em 1em;
+ text-decoration: none;
+ }
+ #effect {
+ position: relative;
+ width: 240px;
+ height: 135px;
+ padding: 0.4em;
+ }
+ #effect h3 {
+ margin: 0;
+ padding: 0.4em;
+ text-align: center;
+ }
</style>
<script>
$(function() {
// run the currently selected effect
function runEffect() {
- // get effect type from
+ // get effect type from
var selectedEffect = $( "#effectTypes" ).val();
-
+
// most effect types need no options passed by default
var options = {};
// some effects have required parameters
@@ -39,11 +54,11 @@
} else if ( selectedEffect === "size" ) {
options = { to: { width: 200, height: 60 } };
}
-
+
// run the effect
$( "#effect" ).toggle( selectedEffect, options, 500 );
};
-
+
// set effect from select menu value
$( "#button" ).click(function() {
runEffect();
diff --git a/demos/widget/default.html b/demos/widget/default.html
index ece81218a..f39825034 100644
--- a/demos/widget/default.html
+++ b/demos/widget/default.html
@@ -139,11 +139,14 @@
});
// click to toggle enabled/disabled
- $( "#disable" ).toggle(function() {
+ $( "#disable" ).click(function() {
// use the custom selector created for each widget to find all instances
- $( ":custom-colorize" ).colorize( "disable" );
- }, function() {
- $( ":custom-colorize" ).colorize( "enable" );
+ // all instances are toggled together, so we can check the state from the first
+ if ( $( ":custom-colorize" ).colorize( "option", "disabled" ) ) {
+ $( ":custom-colorize" ).colorize( "enable" );
+ } else {
+ $( ":custom-colorize" ).colorize( "disable" );
+ }
});
// click to set options after initalization
diff --git a/grunt.js b/grunt.js
index 202779e0b..5d65fa037 100644
--- a/grunt.js
+++ b/grunt.js
@@ -289,7 +289,7 @@ grunt.initConfig({
lint: {
ui: grunt.file.expandFiles( "ui/*.js" ).filter(function( file ) {
// TODO remove items from this list once rewritten
- return !( /(effects.core|mouse|datepicker|draggable|droppable|resizable|selectable|sortable)\.js$/ ).test( file );
+ return !( /(mouse|datepicker|draggable|droppable|resizable|selectable|sortable)\.js$/ ).test( file );
}),
grunt: "grunt.js",
tests: "tests/unit/**/*.js"
@@ -376,7 +376,7 @@ grunt.registerTask( "testswarm", function( commit, configFile ) {
testswarm({
url: "http://swarm.jquery.org/",
pollInterval: 10000,
- timeout: 1000 * 60 * 20,
+ timeout: 1000 * 60 * 30,
done: this.async()
}, {
authUsername: "jqueryui",
@@ -572,6 +572,30 @@ grunt.registerTask( "clean", function() {
require( "rimraf" ).sync( "dist" );
});
+grunt.registerTask( "authors", function() {
+ var done = this.async();
+
+ grunt.utils.spawn({
+ cmd: "git",
+ args: [ "log", "--pretty=%an <%ae>" ]
+ }, function( err, result ) {
+ if ( err ) {
+ grunt.log.error( err );
+ return done( false );
+ }
+
+ var authors,
+ tracked = {};
+ authors = result.split( "\n" ).reverse().filter(function( author ) {
+ var first = !tracked[ author ];
+ tracked[ author ] = true;
+ return first;
+ }).join( "\n" );
+ grunt.log.writeln( authors );
+ done();
+ });
+});
+
grunt.registerTask( "default", "lint csslint htmllint qunit" );
grunt.registerTask( "sizer", "concat:ui min:dist/jquery-ui.min.js compare_size:all" );
grunt.registerTask( "sizer_all", "concat:ui min compare_size" );
diff --git a/tests/index.css b/tests/index.css
new file mode 100644
index 000000000..2034cfba5
--- /dev/null
+++ b/tests/index.css
@@ -0,0 +1,21 @@
+body {
+ font-size: 62.5%;
+}
+.ui-widget-header {
+ padding: 0.2em 0.5em;
+ margin: 0;
+}
+.ui-widget-content {
+ padding: 1em;
+ margin-bottom: 1em;
+}
+p {
+ margin: 0;
+}
+ul {
+ margin: 0;
+ list-style: none;
+}
+li {
+ line-height: 2em;
+}
diff --git a/tests/index.html b/tests/index.html
index 3c66bf38f..d5e364ad6 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -1,22 +1,33 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
- <meta charset="UTF-8" />
+ <meta charset="utf-8">
<title>jQuery UI Tests</title>
- <link rel="stylesheet" href="../themes/base/jquery.ui.all.css" type="text/css" />
- <script type="text/javascript" src="../jquery-1.7.2.js"></script>
- <link rel="stylesheet" href="tests.css" type="text/css" />
- <script type="text/javascript" src="tests.js"></script>
+ <link rel="stylesheet" href="../../themes/base/jquery.ui.core.css">
+ <link rel="stylesheet" href="../../themes/base/jquery.ui.theme.css">
+ <link rel="stylesheet" href="index.css">
+ <script src="jquery-1.7.2.js"></script>
+ <script src="index.js"></script>
</head>
<body>
-<h1>jQuery UI Tests</h1>
+<div id="main">
+ <h1>jQuery UI Tests</h1>
+ <div>
+ <h2>Unit Tests</h2>
+ <p><a href="unit/index.html">Unit tests</a> exist for all functionality in jQuery UI.
+ The unit tests can be run locally (some tests require a web server with PHP)
+ to ensure proper functionality before committing changes.
+ The unit tests are also run on <a href="http://swarm.jquery.com/user/jqueryui">TestSwarm</a>
+ for every commit.</p>
-<h2><a href="static/index.html">Static Tests</a></h2>
-
-<h2><a href="unit/index.html">Unit Tests</a></h2>
-
-<h2><a href="visual/index.html">Visual Tests</a></h2>
+ <h2>Visual Tests</h2>
+ <p><a href="visual/index.html">Visual tests</a> only exist in cases where we can't verify proper functionality
+ with unit tests. These may be either purely visual or just hard to automate.
+ Most visual tests will provide a description of what is happening on the page
+ and what to look for.</p>
+ </div>
+</div>
</body>
</html>
diff --git a/tests/index.js b/tests/index.js
new file mode 100644
index 000000000..26c07498f
--- /dev/null
+++ b/tests/index.js
@@ -0,0 +1,10 @@
+$(function() {
+
+$( "#main" )
+ .addClass( "ui-widget" )
+ .find( "h1, h2" )
+ .addClass( "ui-widget-header ui-corner-top" )
+ .next()
+ .addClass( "ui-widget-content ui-corner-bottom" );
+
+});
diff --git a/tests/static/button/default.html b/tests/static/button/default.html
deleted file mode 100644
index 3322a7b00..000000000
--- a/tests/static/button/default.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Button Static Test : Default</title>
- <link rel="stylesheet" href="../static.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.base.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.theme.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
- <script type="text/javascript" src="../static.js"></script>
- <style>
- div { margin: 0 0 1em; }
- h2 { margin: 2em 0 1em; }
- </style>
-</head>
-<body>
-
- <h2>Using button elements</h2>
-
- <div>
- <button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Button</span>
- </button>
-
- <button class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </button>
-
- <button class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </button>
-
- <button class="ui-button ui-button-text-icon-primary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </button>
-
- <button class="ui-button ui-button-text-icon-secondary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </button>
-
- <button class="ui-button ui-button-text-icons ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Both icons</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </button>
-
- <button class="ui-button ui-button-icons-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">No text</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </button>
- </div>
-
- <h2>Using anchor elements</h2>
-
- <div>
- <a href="#" class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Button</span>
- </a>
-
- <a href="#" class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </a>
-
- <a href="#" class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </a>
-
- <a href="#" class="ui-button ui-button-text-icon-primary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </a>
-
- <a href="#" class="ui-button ui-button-text-icon-secondary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </a>
-
- <a href="#" class="ui-button ui-button-text-icons ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Both icons</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </a>
-
- <a href="#" class="ui-button ui-button-icons-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">No text</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </a>
- </div>
-
-
-
- <h2>Using label elements (used when proxying to radio or check inputs)</h2>
-
- <div>
- <label class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Button</span>
- </label>
-
- <label class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </label>
-
- <label class="ui-button ui-button-icon-only ui-widget ui-state-default ui-corner-all" title="Button">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </label>
-
- <label class="ui-button ui-button-text-icon-primary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Primary icon</span>
- </label>
-
- <label class="ui-button ui-button-text-icon-secondary ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-text">Secondary icon</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </label>
-
- <label class="ui-button ui-button-text-icons ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">Both icons</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </label>
-
- <label class="ui-button ui-button-icons-only ui-widget ui-state-default ui-corner-all">
- <span class="ui-button-icon-primary ui-icon ui-icon-gear"></span>
- <span class="ui-button-text">No text</span>
- <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
- </label>
- </div>
-
-
- <h2>Button Sets</h2>
-
- <div class="ui-buttonset">
- <button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-left"><span class="ui-button-text">First</span></button>
- <button class="ui-button ui-button-text-only ui-widget ui-state-default"><span class="ui-button-text">Middle</span></button>
- <button class="ui-button ui-button-text-only ui-widget ui-state-default"><span class="ui-button-text">Middle</span></button>
- <button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-right"><span class="ui-button-text">Last</span></button>
- </div>
-
-
-
-<script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
-<script>
- $('<div/>').css({
- position: "absolute",
- right: 10,
- top: 10
- }).appendTo(document.body).themeswitcher();
-</script>
-</body>
-</html>
diff --git a/tests/static/datepicker/datepicker.html b/tests/static/datepicker/datepicker.html
deleted file mode 100644
index 857677cfd..000000000
--- a/tests/static/datepicker/datepicker.html
+++ /dev/null
@@ -1,1367 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>jQuery UI Datepicker Static Markup Test Page</title>
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.base.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.theme.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
- <script type="text/javascript" src="../static.js"></script>
- <style type="text/css">
- .ui-datepicker { float:left; margin: 0 2em 2em 0;}
- .ui-datepicker-multi { clear:left; }
- </style>
- <!--[if gte IE 7]>
- <style type="text/css">
- .ui-datepicker { float:none; }
- </style>
- <![endif]-->
-</head>
-<body style="font-size: 62.5%;">
-
-<!-- Datepicker with read only month/year -->
-<div class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">December</span>
- <span class="ui-datepicker-year">2008</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
-</div>
-
-<!-- Datepicker with 1 combined select -->
-<div class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <select class="ui-datepicker-month-year">
- <optgroup label="2007">
- <option value="2007_0">January 2007</option>
- <option value="2007_1">February 2007</option>
- <option value="2007_2">March 2007</option>
- <option value="2007_3">April 2007</option>
- <option value="2007_4">May 2007</option>
- <option value="2007_5">June 2007</option>
- <option value="2007_6">July 2007</option>
- <option value="2007_7">August 2007</option>
- <option value="2007_8">September 2007</option>
- <option value="2007_9">October 2007</option>
- <option value="2007_10">November 2007</option>
- <option value="2007_11">December 2007</option>
- </optgroup>
- <optgroup label="2008">
- <option value="2008_0">January 2008</option>
- <option value="2008_1">February 2008</option>
- <option value="2008_2">March 2008</option>
- <option value="2008_3">April 2008</option>
- <option value="2008_4">May 2008</option>
- <option value="2008_5">June 2008</option>
- <option value="2008_6">July 2008</option>
- <option value="2008_7">August 2008</option>
- <option value="2008_8">September 2008</option>
- <option value="2008_9">October 2008</option>
- <option value="2008_10">November 2008</option>
- <option selected="selected" value="2008_11">December 2008</option>
- </optgroup>
- <optgroup label="2009">
- <option value="2009_0">January 2009</option>
- <option value="2009_1">February 2009</option>
- <option value="2009_2">March 2009</option>
- <option value="2009_3">April 2009</option>
- <option value="2009_4">May 2009</option>
- <option value="2009_5">June 2009</option>
- <option value="2009_6">July 2009</option>
- <option value="2009_7">August 2009</option>
- <option value="2009_8">September 2009</option>
- <option value="2009_9">October 2009</option>
- <option value="2009_10">November 2009</option>
- <option value="2009_11">December 2009</option>
- </optgroup>
- <optgroup label="2010">
- <option value="2010_0">January 2010</option>
- <option value="2010_1">February 2010</option>
- <option value="2010_2">March 2010</option>
- <option value="2010_3">April 2010</option>
- <option value="2010_4">May 2010</option>
- <option value="2010_5">June 2010</option>
- <option value="2010_6">July 2010</option>
- <option value="2010_7">August 2010</option>
- <option value="2010_8">September 2010</option>
- <option value="2010_9">October 2010</option>
- <option value="2010_10">November 2010</option>
- <option value="2010_11">December 2010</option>
- </optgroup>
- </select>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
-</div>
-
-<!-- Datepicker with 2 selects -->
-<div class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <select class="ui-datepicker-month">
- <option value="0">Jan</option>
- <option value="1">Feb</option>
- <option value="2">Mar</option>
- <option value="3">Apr</option>
- <option value="4">May</option>
- <option value="5">Jun</option>
- <option value="6">Jul</option>
- <option value="7">Aug</option>
- <option value="8">Sep</option>
- <option value="9">Oct</option>
- <option value="10">Nov</option>
- <option value="11" selected="selected">Dec</option>
- </select>
- <select class="ui-datepicker-year">
- <option value="1998">1998</option>
- <option value="1999">1999</option>
- <option value="2000">2000</option>
- <option value="2001">2001</option>
- <option value="2002">2002</option>
- <option value="2003">2003</option>
- <option value="2004">2004</option>
- <option value="2005">2005</option>
- <option value="2006">2006</option>
- <option value="2007">2007</option>
- <option value="2008" selected="selected">2008</option>
- <option value="2009">2009</option>
- <option value="2010">2010</option>
- <option value="2011">2011</option>
- <option value="2012">2012</option>
- <option value="2013">2013</option>
- <option value="2014">2014</option>
- <option value="2015">2015</option>
- <option value="2016">2016</option>
- <option value="2017">2017</option>
- <option value="2018">2018</option>
- </select>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
-</div>
-
-<!-- Datepicker with button bar -->
-<div class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <select class="ui-datepicker-month">
- <option value="0">Jan</option>
- <option value="1">Feb</option>
- <option value="2">Mar</option>
- <option value="3">Apr</option>
- <option value="4">May</option>
- <option value="5">Jun</option>
- <option value="6">Jul</option>
- <option value="7">Aug</option>
- <option value="8">Sep</option>
- <option value="9">Oct</option>
- <option value="10">Nov</option>
- <option value="11" selected="selected">Dec</option>
- </select>
- <select class="ui-datepicker-year">
- <option value="1998">1998</option>
- <option value="1999">1999</option>
- <option value="2000">2000</option>
- <option value="2001">2001</option>
- <option value="2002">2002</option>
- <option value="2003">2003</option>
- <option value="2004">2004</option>
- <option value="2005">2005</option>
- <option value="2006">2006</option>
- <option value="2007">2007</option>
- <option value="2008" selected="selected">2008</option>
- <option value="2009">2009</option>
- <option value="2010">2010</option>
- <option value="2011">2011</option>
- <option value="2012">2012</option>
- <option value="2013">2013</option>
- <option value="2014">2014</option>
- <option value="2015">2015</option>
- <option value="2016">2016</option>
- <option value="2017">2017</option>
- <option value="2018">2018</option>
- </select>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
- <div class="ui-datepicker-buttonpane ui-widget-content">
- <button class="ui-state-default ui-priority-primary ui-corner-all">Done</button>
- <button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all">Today</button>
- </div>
-</div>
-
-<!-- Multiple Datepickers with read only month/year -->
-<div class="ui-datepicker ui-datepicker-multi ui-datepicker-multi-2 ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" style="width:34em;">
- <div class="ui-datepicker-group ui-datepicker-group-first">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-left">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">December</span>
- <span class="ui-datepicker-year">2008</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-last">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-right">
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">January</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
-</div>
-
-<!-- Multiple Datepickers with read only month/year -->
-<div class="ui-datepicker ui-datepicker-multi ui-datepicker-multi-3 ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" style="width:51em;">
- <div class="ui-datepicker-group ui-datepicker-group-first">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-left">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">December</span>
- <span class="ui-datepicker-year">2008</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-middle">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">January</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-last">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-right">
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">February</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-buttonpane ui-widget-content">
- <button class="ui-state-default ui-priority-primary ui-corner-all">Done</button>
- <button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all">Today</button>
- </div>
-</div>
-
-<!-- Multiple Datepickers with read only month/year -->
-<div class="ui-datepicker ui-datepicker-multi ui-datepicker-multi-4 ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" style="width:60em;">
- <div class="ui-datepicker-group ui-datepicker-group-first">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-left">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">December</span>
- <span class="ui-datepicker-year">2008</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-middle">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">January</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">1</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class=""><a href="#" class="ui-state-default">6</a></td>
- <td class=""><a href="#" class="ui-state-default">7</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">8</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class=""><a href="#" class="ui-state-default">13</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">14</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">15</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class=""><a href="#" class="ui-state-default">19</a></td>
- <td class=""><a href="#" class="ui-state-default">20</a></td>
- <td class=""><a href="#" class="ui-state-default">21</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">22</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class=""><a href="#" class="ui-state-default">27</a></td>
- <td class=""><a href="#" class="ui-state-default">28</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">29</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-middle">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">February</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-last">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-right">
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">March</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
-
- <div class="ui-datepicker-row-break"></div>
- <div class="ui-datepicker-group ui-datepicker-group-first">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">April</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-middle">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">May</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-middle">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">June</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
- </div>
- <div class="ui-datepicker-group ui-datepicker-group-last">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-right">
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">July</span>
- <span class="ui-datepicker-year">2009</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">1</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class=""><a href="#" class="ui-state-default">6</a></td>
- <td class=""><a href="#" class="ui-state-default">7</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">8</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class=""><a href="#" class="ui-state-default">13</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">14</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">15</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class=""><a href="#" class="ui-state-default">19</a></td>
- <td class=""><a href="#" class="ui-state-default">20</a></td>
- <td class=""><a href="#" class="ui-state-default">21</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">22</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class=""><a href="#" class="ui-state-default">27</a></td>
- <td class=""><a href="#" class="ui-state-default">28</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">29</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
- </tr>
- </tbody>
- </table>
- </div>
-</div>
-
-</body>
-</html>
diff --git a/tests/static/datepicker/default.html b/tests/static/datepicker/default.html
deleted file mode 100644
index 5baebaf4c..000000000
--- a/tests/static/datepicker/default.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Datepicker Static Test : Default</title>
- <link rel="stylesheet" href="../static.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.base.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.theme.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
- <script type="text/javascript" src="../static.js"></script>
-</head>
-<body>
-
-<div class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
- <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
- <a title="Prev" class="ui-datepicker-prev ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
- <a title="Next" class="ui-datepicker-next ui-corner-all" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
- <div class="ui-datepicker-title">
- <span class="ui-datepicker-month">December</span>
- <span class="ui-datepicker-year">2008</span>
- </div>
- </div>
- <table class="ui-datepicker-calendar">
- <thead>
- <tr>
- <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
- <th><span title="Monday">Mo</span></th>
- <th><span title="Tuesday">Tu</span></th>
- <th><span title="Wednesday">We</span></th>
- <th><span title="Thursday">Th</span></th>
- <th><span title="Friday">Fr</span></th>
- <th class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class=""><a href="#" class="ui-state-default">1</a></td>
- <td class="ui-datepicker-today"><a href="#" class="ui-state-default ui-state-highlight">2</a></td>
- <td class=""><a href="#" class="ui-state-default">3</a></td>
- <td class=""><a href="#" class="ui-state-default">4</a></td>
- <td class=""><a href="#" class="ui-state-default">5</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">6</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">7</a></td>
- <td class=""><a href="#" class="ui-state-default">8</a></td>
- <td class=""><a href="#" class="ui-state-default">9</a></td>
- <td class=""><a href="#" class="ui-state-default">10</a></td>
- <td class=""><a href="#" class="ui-state-default">11</a></td>
- <td class=""><a href="#" class="ui-state-default">12</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">13</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">14</a></td>
- <td class=""><a href="#" class="ui-state-default">15</a></td>
- <td class=""><a href="#" class="ui-state-default">16</a></td>
- <td class=""><a href="#" class="ui-state-default">17</a></td>
- <td class=""><a href="#" class="ui-state-default">18</a></td>
- <td class="ui-datepicker-current-day"><a href="#" class="ui-state-active">19</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">20</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">21</a></td>
- <td class=""><a href="#" class="ui-state-default">22</a></td>
- <td class=""><a href="#" class="ui-state-default">23</a></td>
- <td class=""><a href="#" class="ui-state-default">24</a></td>
- <td class=""><a href="#" class="ui-state-default">25</a></td>
- <td class=""><a href="#" class="ui-state-default">26</a></td>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">27</a></td>
- </tr>
- <tr>
- <td class="ui-datepicker-week-end"><a href="#" class="ui-state-default">28</a></td>
- <td class=""><a href="#" class="ui-state-default">29</a></td>
- <td class=""><a href="#" class="ui-state-default">30</a></td>
- <td class=""><a href="#" class="ui-state-default">31</a></td>
- <td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td><td class="ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">
- </td></tr>
- </tbody>
- </table>
-</div>
-
-</body>
-</html>
diff --git a/tests/static/icons.html b/tests/static/icons.html
deleted file mode 100644
index d3ae3e348..000000000
--- a/tests/static/icons.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>jQuery UI CSS Framework Icons Test Page</title>
- <link rel="stylesheet" href="../../themes/base/jquery.ui.base.css" type="text/css" />
- <link rel="stylesheet" href="../../themes/base/jquery.ui.theme.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../jquery-1.7.2.js"></script>
-
- <style type="text/css">
- body {font-size: 62.5%; margin: 20px; font-family: Verdana, sans-serif; color: #444;}
- h1 {font-size: 1.5em; margin: 1em 0;}
- h2 {font-size: 1.3em; margin: 2em 0 .5em;}
- h2 a {font-size: .8em;}
- p {font-size: 1.2em; }
- ul {margin: 0; padding: 0;}
- td div {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left; list-style: none;}
- span.ui-icon { float: left; margin: 0 4px;}
- .icon-collection { border-spacing: 0; border-collapse: collapse; }
- </style>
-
- <script type="text/javascript">
- $(function(){
- $('.ui-state-default').hover(
- function(){ $(this).addClass('ui-state-hover'); },
- function(){ $(this).removeClass('ui-state-hover'); }
- );
-
- $('.ui-state-default').click(function(){
- $(this).toggleClass('ui-state-active');
- });
-
- });
- </script>
-</head>
-<body>
-
-<p class="icons"></p>
-
-<table class="ui-widget icon-collection">
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-n"><span class="ui-icon ui-icon-carat-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-ne"><span class="ui-icon ui-icon-carat-1-ne"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-e"><span class="ui-icon ui-icon-carat-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-se"><span class="ui-icon ui-icon-carat-1-se"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-s"><span class="ui-icon ui-icon-carat-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-sw"><span class="ui-icon ui-icon-carat-1-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-w"><span class="ui-icon ui-icon-carat-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-nw"><span class="ui-icon ui-icon-carat-1-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-n-s"><span class="ui-icon ui-icon-carat-2-n-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-e-w"><span class="ui-icon ui-icon-carat-2-e-w"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></div></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></div></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></div></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></div></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></div></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></div></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></div></td>
- <td><div class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></div></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
-</table>
-
-</body>
-</html>
diff --git a/tests/static/static.css b/tests/static/static.css
deleted file mode 100644
index 60f25b59a..000000000
--- a/tests/static/static.css
+++ /dev/null
@@ -1 +0,0 @@
-body { font-size: 62.5%; }
diff --git a/tests/static/static.js b/tests/static/static.js
deleted file mode 100644
index 1c29079ef..000000000
--- a/tests/static/static.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/* static_helpers.js
- */
-$(function(){
- //add hover states on the static widgets
- $('.ui-state-default:not(.ui-state-disabled, .ui-slider-range, .ui-progressbar-value), a.ui-datepicker-next, a.ui-datepicker-prev, .ui-dialog-titlebar-close').hover(
- function(){ $(this).addClass('ui-state-hover'); },
- function(){ $(this).removeClass('ui-state-hover'); }
- );
-});
diff --git a/tests/unit/autocomplete/autocomplete_common.js b/tests/unit/autocomplete/autocomplete_common.js
index c090ce4df..e1d24ef8d 100644
--- a/tests/unit/autocomplete/autocomplete_common.js
+++ b/tests/unit/autocomplete/autocomplete_common.js
@@ -4,6 +4,10 @@ TestHelpers.commonWidgetTests( "autocomplete", {
autoFocus: false,
delay: 300,
disabled: false,
+ messages: {
+ noResults: "No search results.",
+ results: $.ui.autocomplete.prototype.options.messages.results
+ },
minLength: 1,
position: {
my: "left top",
diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js
index daeea0972..f0ad36a57 100644
--- a/tests/unit/autocomplete/autocomplete_core.js
+++ b/tests/unit/autocomplete/autocomplete_core.js
@@ -152,4 +152,41 @@ asyncTest( "handle race condition", function() {
}
});
+test( "ARIA", function() {
+ expect( 7 );
+ var element = $( "#autocomplete" ).autocomplete({
+ source: [ "java", "javascript" ]
+ }),
+ liveRegion = element.data( "ui-autocomplete" ).liveRegion;
+
+ equal( liveRegion.text(), "", "Empty live region on create" );
+
+ element.autocomplete( "search", "j" );
+ equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
+ "Live region for multiple values" );
+
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+ equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
+ "Live region not changed on focus" );
+
+ element.one( "autocompletefocus", function( event ) {
+ event.preventDefault();
+ });
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+ equal( liveRegion.text(), "javascript",
+ "Live region updated when default focus is prevented" );
+
+ element.autocomplete( "search", "javas" );
+ equal( liveRegion.text(), "1 result is available, use up and down arrow keys to navigate.",
+ "Live region for one value" );
+
+ element.autocomplete( "search", "z" );
+ equal( liveRegion.text(), "No search results.",
+ "Live region for no values" );
+
+ element.autocomplete( "search", "j" );
+ equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
+ "Live region for multiple values" );
+});
+
}( jQuery ) );
diff --git a/tests/unit/button/button_core.js b/tests/unit/button/button_core.js
index 0d93ecedf..c274a8473 100644
--- a/tests/unit/button/button_core.js
+++ b/tests/unit/button/button_core.js
@@ -34,7 +34,7 @@ function assert(noForm, form1, form2) {
}
test("radio groups", function() {
- $(":radio").button();
+ $("input[type=radio]").button();
assert(":eq(0)", ":eq(1)", ":eq(2)");
// click outside of forms
@@ -61,7 +61,7 @@ test("buttonset", function() {
var set = $("#radio1").buttonset();
ok( set.is(".ui-buttonset") );
deepEqual( set.children(".ui-button").length, 3 );
- deepEqual( set.children("input:radio.ui-helper-hidden-accessible").length, 3 );
+ deepEqual( set.children("input[type=radio].ui-helper-hidden-accessible").length, 3 );
ok( set.children("label:eq(0)").is(".ui-button.ui-corner-left:not(.ui-corner-all)") );
ok( set.children("label:eq(1)").is(".ui-button:not(.ui-corner-all)") );
ok( set.children("label:eq(2)").is(".ui-button.ui-corner-right:not(.ui-corner-all)") );
@@ -76,7 +76,7 @@ test("buttonset (rtl)", function() {
set = $("#radio1").buttonset();
ok( set.is(".ui-buttonset") );
deepEqual( set.children(".ui-button").length, 3 );
- deepEqual( set.children("input:radio.ui-helper-hidden-accessible").length, 3 );
+ deepEqual( set.children("input[type=radio].ui-helper-hidden-accessible").length, 3 );
ok( set.children("label:eq(0)").is(".ui-button.ui-corner-right:not(.ui-corner-all)") );
ok( set.children("label:eq(1)").is(".ui-button:not(.ui-corner-all)") );
ok( set.children("label:eq(2)").is(".ui-button.ui-corner-left:not(.ui-corner-all)") );
diff --git a/tests/unit/button/button_options.js b/tests/unit/button/button_options.js
index 9ef4a19db..3dd361ac9 100644
--- a/tests/unit/button/button_options.js
+++ b/tests/unit/button/button_options.js
@@ -53,6 +53,7 @@ test("text false with icon", function() {
test("label, default", function() {
$("#button").button();
deepEqual( $("#button").text(), "Label" );
+ deepEqual( $( "#button").button( "option", "label" ), "Label" );
$("#button").button("destroy");
});
@@ -62,12 +63,14 @@ test("label", function() {
label: "xxx"
});
deepEqual( $("#button").text(), "xxx" );
+ deepEqual( $("#button").button( "option", "label" ), "xxx" );
$("#button").button("destroy");
});
test("label default with input type submit", function() {
deepEqual( $("#submit").button().val(), "Label" );
+ deepEqual( $("#submit").button( "option", "label" ), "Label" );
});
test("label with input type submit", function() {
@@ -75,6 +78,7 @@ test("label with input type submit", function() {
label: "xxx"
}).val();
deepEqual( label, "xxx" );
+ deepEqual( $("#submit").button( "option", "label" ), "xxx" );
});
test("icons", function() {
diff --git a/tests/unit/button/button_tickets.js b/tests/unit/button/button_tickets.js
index 624d16716..fe0d82fd6 100644
--- a/tests/unit/button/button_tickets.js
+++ b/tests/unit/button/button_tickets.js
@@ -7,7 +7,7 @@ module( "button: tickets" );
test( "#5946 - buttonset should ignore buttons that are not :visible", function() {
$( "#radio01" ).next().andSelf().hide();
- var set = $( "#radio0" ).buttonset({ items: ":radio:visible" });
+ var set = $( "#radio0" ).buttonset({ items: "input[type=radio]:visible" });
ok( set.find( "label:eq(0)" ).is( ":not(.ui-button):not(.ui-corner-left)" ) );
ok( set.find( "label:eq(1)" ).is( ".ui-button.ui-corner-left" ) );
});
@@ -30,23 +30,23 @@ test( "#6711 Checkbox/Radiobutton do not Show Focused State when using Keyboard
test( "#7092 - button creation that requires a matching label does not find label in all cases", function() {
var group = $( "<span><label for='t7092a'></label><input type='checkbox' id='t7092a'></span>" );
- group.find( "input:checkbox" ).button();
+ group.find( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );
group = $( "<input type='checkbox' id='t7092b'><label for='t7092b'></label>" );
- group.filter( "input:checkbox" ).button();
+ group.filter( "input[type=checkbox]" ).button();
ok( group.filter( "label" ).is( ".ui-button" ) );
group = $( "<span><input type='checkbox' id='t7092c'></span><label for='t7092c'></label>" );
- group.find( "input:checkbox" ).button();
+ group.find( "input[type=checkbox]" ).button();
ok( group.filter( "label" ).is( ".ui-button" ) );
group = $( "<span><input type='checkbox' id='t7092d'></span><span><label for='t7092d'></label></span>" );
- group.find( "input:checkbox" ).button();
+ group.find( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );
group = $( "<input type='checkbox' id='t7092e'><span><label for='t7092e'></label></span>" );
- group.filter( "input:checkbox" ).button();
+ group.filter( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );
});
diff --git a/tests/unit/draggable/draggable_common.js b/tests/unit/draggable/draggable_common.js
index b47b139cd..64f8ce4a3 100644
--- a/tests/unit/draggable/draggable_common.js
+++ b/tests/unit/draggable/draggable_common.js
@@ -3,7 +3,7 @@ TestHelpers.commonWidgetTests( "draggable", {
addClasses: true,
appendTo: "parent",
axis: false,
- cancel: ":input,option",
+ cancel: "input,textarea,button,select,option",
connectToSortable: false,
containment: false,
cursor: "auto",
diff --git a/tests/unit/draggable/draggable_events.js b/tests/unit/draggable/draggable_events.js
index 85ba824d8..2b2104ed4 100644
--- a/tests/unit/draggable/draggable_events.js
+++ b/tests/unit/draggable/draggable_events.js
@@ -5,7 +5,7 @@
module("draggable: events");
-test("callbacks occurance count", function() {
+test("callbacks occurrence count", function() {
expect(3);
diff --git a/tests/unit/draggable/draggable_options.js b/tests/unit/draggable/draggable_options.js
index 464e025dd..ea4611d69 100644
--- a/tests/unit/draggable/draggable_options.js
+++ b/tests/unit/draggable/draggable_options.js
@@ -106,15 +106,15 @@ test("{ axis: ? }, unexpected", function() {
});
});
-test("{ cancel: ':input,option' }, default", function() {
+test("{ cancel: 'input,textarea,button,select,option' }, default", function() {
$('<div id="draggable-option-cancel-default"><input type="text"></div>').appendTo('#main');
- el = $("#draggable-option-cancel-default").draggable({ cancel: ":input,option" });
+ el = $("#draggable-option-cancel-default").draggable({ cancel: "input,textarea,button,select,option" });
drag("#draggable-option-cancel-default", 50, 50);
moved(50, 50);
- el = $("#draggable-option-cancel-default").draggable({ cancel: ":input,option" });
- drag("#draggable-option-cancel-default :input", 50, 50);
+ el = $("#draggable-option-cancel-default").draggable({ cancel: "input,textarea,button,select,option" });
+ drag("#draggable-option-cancel-default input", 50, 50);
moved(0, 0);
el.draggable("destroy");
diff --git a/tests/unit/index.html b/tests/unit/index.html
index b73ede29c..33a326370 100644
--- a/tests/unit/index.html
+++ b/tests/unit/index.html
@@ -6,39 +6,9 @@
<link rel="stylesheet" href="../../themes/base/jquery.ui.core.css">
<link rel="stylesheet" href="../../themes/base/jquery.ui.theme.css">
- <style>
- body {
- font-size: 62.5%;
- }
- .ui-widget-header {
- padding: 0.2em 0.5em;
- margin: 0;
- }
- .ui-widget-content {
- padding: 1em;
- margin-bottom: 1em;
- }
- ul {
- margin: 0;
- list-style: none;
- }
- li {
- line-height: 2em;
- }
- </style>
-
- <script src="../jquery.js"></script>
- <script>
- $(function() {
- $( "#main" )
- .addClass( "ui-widget" )
- .find( "h1, h2" )
- .addClass( "ui-widget-header ui-corner-top" )
- .next()
- .addClass( "ui-widget-content ui-corner-bottom" );
-
- });
- </script>
+ <link rel="stylesheet" href="../index.css">
+ <script src="../jquery-1.7.2.js"></script>
+ <script src="../index.js"></script>
</head>
<body>
diff --git a/tests/unit/menu/menu.html b/tests/unit/menu/menu.html
index fca45697f..62585d863 100644
--- a/tests/unit/menu/menu.html
+++ b/tests/unit/menu/menu.html
@@ -63,7 +63,7 @@
<li class="foo"><a class="foo" href="#">Aberdeen</a></li>
<li class="foo"><a class="foo" href="#">Ada</a></li>
<li class="foo"><a class="foo" href="#">Adamsville</a></li>
- <li class="foo"><a class="foo" href="#">Addyston</a></li>
+ <li class="foo"><a class="foo" href="#"><span class="ui-icon ui-icon-print"></span>Addyston</a></li>
<li>
<a href="#">Delphi</a>
<ul>
diff --git a/tests/unit/menu/menu_common.js b/tests/unit/menu/menu_common.js
index ddcdbebf2..07295f1af 100644
--- a/tests/unit/menu/menu_common.js
+++ b/tests/unit/menu/menu_common.js
@@ -6,6 +6,7 @@ TestHelpers.commonWidgetTests( "menu", {
my: "left top",
at: "right top"
},
+ role: "menu",
// callbacks
blur: null,
diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js
index f2de7ef1a..68b625687 100644
--- a/tests/unit/menu/menu_core.js
+++ b/tests/unit/menu/menu_core.js
@@ -26,17 +26,4 @@ test("accessibility", function () {
equal( menu.attr("aria-activedescendant"), "menu1-4", "aria attribute, generated id");
});
-test("items class and role", function () {
- var menu = $('#menu1').menu();
- expect(1 + 5 * $("li",menu).length);
- ok( ($("li",menu).length > 0 ), "number of menu items");
- $("li",menu).each(function(item) {
- ok( $(this).hasClass("ui-menu-item"), "menu item ("+ item + ") class for item");
- equal( $(this).attr("role"), "presentation", "menu item ("+ item + ") role");
- equal( $("a", this).attr("role"), "menuitem", "menu item ("+ item + ") role");
- ok( $("a",this).hasClass("ui-corner-all"), "a element class for menu item ("+ item + ") ");
- equal( $("a",this).attr("tabindex"), "-1", "a element tabindex for menu item ("+ item + ") ");
- });
-});
-
})(jQuery);
diff --git a/tests/unit/menu/menu_events.js b/tests/unit/menu/menu_events.js
index 4cb083240..ec3e7d3c4 100644
--- a/tests/unit/menu/menu_events.js
+++ b/tests/unit/menu/menu_events.js
@@ -41,49 +41,62 @@ test("handle click on custom item menu", function() {
equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid.");
});
-/* Commenting out these tests until a way to handle the extra focus and blur events
- fired by IE is found
-test( "handle blur: click", function() {
- expect( 4 );
- var $menu = $( "#menu1" ).menu({
- focus: function( event, ui ) {
- equal( event.originalEvent.type, "click", "focus triggered 'click'" );
- equal( event.type, "menufocus", "focus event.type is 'menufocus'" );
-
- },
- blur: function( event, ui ) {
- equal( event.originalEvent.type, "click", "blur triggered 'click'" );
- equal( event.type, "menublur", "blur event.type is 'menublur'" );
- }
- });
-
- $menu.find( "li a:first" ).trigger( "click" );
- $( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
+asyncTest( "handle blur", function() {
+ expect( 1 );
+ var blurHandled = false,
+ $menu = $( "#menu1" ).menu({
+ blur: function( event, ui ) {
+ // Ignore duplicate blur event fired by IE
+ if ( !blurHandled ) {
+ blurHandled = true;
+ equal( event.type, "menublur", "blur event.type is 'menublur'" );
+ }
+ }
+ });
+
+ click( $menu, "1" );
+ setTimeout( function() {
+ $menu.blur();
+ start();
+ }, 350);
+});
- $("#remove").remove();
+asyncTest( "handle blur on click", function() {
+ expect( 1 );
+ var blurHandled = false,
+ $menu = $( "#menu1" ).menu({
+ blur: function( event, ui ) {
+ // Ignore duplicate blur event fired by IE
+ if ( !blurHandled ) {
+ blurHandled = true;
+ equal( event.type, "menublur", "blur event.type is 'menublur'" );
+ }
+ }
+ });
+
+ click( $menu, "1" );
+ setTimeout( function() {
+ $( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
+ $("#remove").remove();
+ start();
+ }, 350);
});
-test( "handle blur on custom item menu: click", function() {
- expect( 4 );
- var $menu = $( "#menu5" ).menu({
+test( "handle focus of menu with active item", function() {
+ expect( 1 );
+ var element = $( "#menu1" ).menu({
focus: function( event, ui ) {
- equal( event.originalEvent.type, "click", "focus triggered 'click'" );
- equal( event.type, "menufocus", "focus event.type is 'menufocus'" );
-
- },
- blur: function( event, ui ) {
- equal( event.originalEvent.type, "click", "blur triggered 'click'" );
- equal( event.type, "menublur", "blur event.type is 'menublur'" );
- },
- items: "div"
+ log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
+ }
});
- click($('#menu5'),"1");
- $( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
-
- $("#remove").remove();
+ log( "focus", true );
+ element.focus();
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+ element.focus();
+ equal( $("#log").html(), "2,2,1,0,focus,", "current active item remains active");
});
-*/
asyncTest( "handle submenu auto collapse: mouseleave", function() {
expect( 4 );
@@ -208,7 +221,7 @@ test("handle keyboard navigation on menu without scroll and without submenus", f
});
asyncTest("handle keyboard navigation on menu without scroll and with submenus", function() {
- expect(14);
+ expect(16);
var element = $('#menu2').menu({
select: function(event, ui) {
log($(ui.item[0]).text());
@@ -290,11 +303,23 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus",
equal( $("#log").html(), "4,keydown,", "Keydown ESCAPE (close submenu)");
log("keydown",true);
- element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.SPACE } );
setTimeout( menukeyboard4, 50 );
}
function menukeyboard4() {
+ equal( $("#log").html(), "0,keydown,", "Keydown SPACE (open submenu)");
+
+ log("keydown",true);
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
+ equal( $("#log").html(), "4,keydown,", "Keydown ESCAPE (close submenu)");
+
+ log("keydown",true);
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
+ setTimeout( menukeyboard5, 50 );
+ }
+
+ function menukeyboard5() {
equal( $("#log").html(), "0,keydown,", "Keydown ENTER (open submenu)");
log("keydown",true);
@@ -524,4 +549,42 @@ asyncTest("handle keyboard navigation and mouse click on menu with disabled item
}
});
+test("handle keyboard navigation with spelling of menu items", function() {
+ expect( 2 );
+ var element = $( "#menu2" ).menu({
+ focus: function( event, ui ) {
+ log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
+ }
+ });
+
+ log( "keydown", true );
+ element.one( "menufocus", function( event, ui ) {
+ element.simulate( "keydown", { keyCode: 65 } );
+ element.simulate( "keydown", { keyCode: 68 } );
+ element.simulate( "keydown", { keyCode: 68 } );
+ equal( $("#log").html(), "3,1,0,keydown,", "Keydown focus Addyston by spelling the first 3 letters");
+ element.simulate( "keydown", { keyCode: 68 } );
+ equal( $("#log").html(), "4,3,1,0,keydown,", "Keydown focus Delphi by repeating the 'd' again");
+ });
+ element.focus();
+});
+
+asyncTest("handle page up and page down before the menu has focus", function() {
+ expect( 1 );
+ var element = $( "#menu1" ).menu({
+ focus: function( event, ui ) {
+ log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
+ }
+ });
+
+ log( "keydown", true );
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
+ element.blur();
+ setTimeout( function() {
+ element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
+ equal( $("#log").html(), "0,0,keydown,", "Page Up and Page Down bring initial focus to first item");
+ start();
+ }, 500);
+});
+
})(jQuery);
diff --git a/tests/unit/menu/menu_methods.js b/tests/unit/menu/menu_methods.js
index 6ad7bc134..fc4fce4f1 100644
--- a/tests/unit/menu/menu_methods.js
+++ b/tests/unit/menu/menu_methods.js
@@ -42,6 +42,12 @@ test("destroy", function() {
domEqual("#menu1", function() {
$("#menu1").menu().menu("destroy");
});
+ domEqual("#menu5", function() {
+ $("#menu5").menu().menu("destroy");
+ });
+ domEqual("#menu6", function() {
+ $("#menu6").menu().menu("destroy");
+ });
});
diff --git a/tests/unit/menu/menu_options.js b/tests/unit/menu/menu_options.js
index e651fd2d1..306f575ea 100644
--- a/tests/unit/menu/menu_options.js
+++ b/tests/unit/menu/menu_options.js
@@ -38,4 +38,30 @@ test( "{ disabled: false }", function() {
equal( $("#log").html(), "afterclick,1,click,", "Click order not valid.");
});
+test("{ role: 'menu' } ", function () {
+ var menu = $('#menu1').menu();
+ expect(2 + 5 * $("li", menu).length);
+ equal( menu.attr( "role" ), "menu" );
+ ok( $("li", menu).length > 0, "number of menu items");
+ $("li", menu).each(function(item) {
+ ok( $(this).hasClass("ui-menu-item"), "menu item ("+ item + ") class for item");
+ equal( $(this).attr("role"), "presentation", "menu item ("+ item + ") role");
+ equal( $("a", this).attr("role"), "menuitem", "menu item ("+ item + ") role");
+ ok( $("a",this).hasClass("ui-corner-all"), "a element class for menu item ("+ item + ") ");
+ equal( $("a",this).attr("tabindex"), "-1", "a element tabindex for menu item ("+ item + ") ");
+ });
+});
+
+test("{ role: 'listbox' } ", function () {
+ var menu = $('#menu1').menu({
+ role: "listbox"
+ });
+ expect(2 + $("li", menu).length);
+ equal( menu.attr( "role" ), "listbox" );
+ ok( ($("li", menu).length > 0 ), "number of menu items");
+ $("li", menu).each(function(item) {
+ equal( $("a", this).attr("role"), "option", "menu item ("+ item + ") role");
+ });
+});
+
})(jQuery);
diff --git a/tests/unit/resizable/resizable_common.js b/tests/unit/resizable/resizable_common.js
index 617cdd2ad..119f5bd0e 100644
--- a/tests/unit/resizable/resizable_common.js
+++ b/tests/unit/resizable/resizable_common.js
@@ -6,7 +6,7 @@ TestHelpers.commonWidgetTests('resizable', {
animateEasing: 'swing',
aspectRatio: false,
autoHide: false,
- cancel: ':input,option',
+ cancel: 'input,textarea,button,select,option',
containment: false,
delay: 0,
disabled: false,
diff --git a/tests/unit/selectable/selectable_common.js b/tests/unit/selectable/selectable_common.js
index 27714d0ae..885e79401 100644
--- a/tests/unit/selectable/selectable_common.js
+++ b/tests/unit/selectable/selectable_common.js
@@ -2,7 +2,7 @@ TestHelpers.commonWidgetTests('selectable', {
defaults: {
appendTo: 'body',
autoRefresh: true,
- cancel: ':input,option',
+ cancel: 'input,textarea,button,select,option',
delay: 0,
disabled: false,
distance: 0,
diff --git a/tests/unit/slider/slider_common.js b/tests/unit/slider/slider_common.js
index 8a0b347f3..ccf793549 100644
--- a/tests/unit/slider/slider_common.js
+++ b/tests/unit/slider/slider_common.js
@@ -1,7 +1,7 @@
TestHelpers.commonWidgetTests( "slider", {
defaults: {
animate: false,
- cancel: ':input,option',
+ cancel: 'input,textarea,button,select,option',
delay: 0,
disabled: false,
distance: 0,
diff --git a/tests/unit/sortable/sortable_common.js b/tests/unit/sortable/sortable_common.js
index b5fc05a5d..ae21f7dd2 100644
--- a/tests/unit/sortable/sortable_common.js
+++ b/tests/unit/sortable/sortable_common.js
@@ -2,7 +2,7 @@ TestHelpers.commonWidgetTests( "sortable", {
defaults: {
appendTo: "parent",
axis: false,
- cancel: ":input,option",
+ cancel: "input,textarea,button,select,option",
connectWith: false,
containment: false,
cursor: "auto",
diff --git a/tests/unit/sortable/sortable_options.js b/tests/unit/sortable/sortable_options.js
index 507d5dcfa..a043e68fe 100644
--- a/tests/unit/sortable/sortable_options.js
+++ b/tests/unit/sortable/sortable_options.js
@@ -29,7 +29,7 @@ test("{ axis: ? }, unexpected", function() {
ok(false, "missing test - untested code is broken code.");
});
-test("{ cancel: ':input,button' }, default", function() {
+test("{ cancel: 'input,textarea,button,select,option' }, default", function() {
ok(false, "missing test - untested code is broken code.");
});
diff --git a/tests/unit/tabs/tabs.html b/tests/unit/tabs/tabs.html
index b961c60f3..b9fa507d8 100644
--- a/tests/unit/tabs/tabs.html
+++ b/tests/unit/tabs/tabs.html
@@ -57,7 +57,7 @@
<li><a href="#colon:test"><span>1</span></a></li>
<li><a href="#inline-style"><span>2</span></a></li>
<li><a href="data/test.html#test"><span>3</span></a></li>
- <li><a href="data/test.html" aria-controls="custom-id"><span>4</span></a></li>
+ <li aria-controls="custom-id"><a href="data/test.html"><span>4</span></a></li>
<li><a href="data/test.html" title="∫ßáö Սե"><span>5</span></a></li>
</ul>
<div id="colon:test"></div>
diff --git a/tests/unit/tabs/tabs_common.js b/tests/unit/tabs/tabs_common.js
index 7ffb05da4..b98ff3575 100644
--- a/tests/unit/tabs/tabs_common.js
+++ b/tests/unit/tabs/tabs_common.js
@@ -4,7 +4,8 @@ TestHelpers.commonWidgetTests( "tabs", {
collapsible: false,
disabled: false,
event: "click",
- fx: null,
+ hide: null,
+ show: null,
// callbacks
activate: null,
diff --git a/tests/unit/tabs/tabs_common_deprecated.js b/tests/unit/tabs/tabs_common_deprecated.js
index fdcff21b3..718ae8272 100644
--- a/tests/unit/tabs/tabs_common_deprecated.js
+++ b/tests/unit/tabs/tabs_common_deprecated.js
@@ -7,9 +7,11 @@ TestHelpers.commonWidgetTests( "tabs", {
cookie: null,
disabled: false,
event: "click",
+ hide: null,
fx: null,
idPrefix: "ui-tabs-",
panelTemplate: "<div></div>",
+ // show: null, // conflicts with old show callback
spinner: "<em>Loading&#8230;</em>",
tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>",
diff --git a/tests/unit/tabs/tabs_core.js b/tests/unit/tabs/tabs_core.js
index b9bd81987..fb3c306e6 100644
--- a/tests/unit/tabs/tabs_core.js
+++ b/tests/unit/tabs/tabs_core.js
@@ -47,14 +47,15 @@ test( "disconnected from DOM", function() {
test( "aria-controls", function() {
expect( 7 );
var element = $( "#tabs1" ).tabs(),
- tabs = element.find( ".ui-tabs-nav a" );
+ tabs = element.find( ".ui-tabs-nav li" );
tabs.each(function() {
- var tab = $( this );
- equal( tab.prop( "hash" ).substring( 1 ), tab.attr( "aria-controls" ) );
+ var tab = $( this ),
+ anchor = tab.find( ".ui-tabs-anchor" );
+ equal( anchor.prop( "hash" ).substring( 1 ), tab.attr( "aria-controls" ) );
});
element = $( "#tabs2" ).tabs();
- tabs = element.find( ".ui-tabs-nav a" );
+ tabs = element.find( ".ui-tabs-nav li" );
equal( tabs.eq( 0 ).attr( "aria-controls" ), "colon:test" );
equal( tabs.eq( 1 ).attr( "aria-controls" ), "inline-style" );
ok( /^ui-tabs-\d+$/.test( tabs.eq( 2 ).attr( "aria-controls" ) ), "generated id" );
@@ -86,11 +87,11 @@ test( "#4033 - IE expands hash to full url and misinterprets tab as ajax", funct
element.tabs({
beforeLoad: function( event, ui ) {
event.preventDefault();
- ok( false, 'should not be an ajax tab');
+ ok( false, "should not be an ajax tab" );
}
});
- equal( element.find( ".ui-tabs-nav a" ).attr( "aria-controls" ), "tab", "aria-contorls attribute is correct" );
+ equal( element.find( ".ui-tabs-nav li" ).attr( "aria-controls" ), "tab", "aria-contorls attribute is correct" );
state( element, 1 );
});
diff --git a/tests/unit/tabs/tabs_deprecated.html b/tests/unit/tabs/tabs_deprecated.html
index 09afc91b4..e58382efb 100644
--- a/tests/unit/tabs/tabs_deprecated.html
+++ b/tests/unit/tabs/tabs_deprecated.html
@@ -56,7 +56,7 @@
<li><a href="#colon:test"><span>1</span></a></li>
<li><a href="#inline-style"><span>2</span></a></li>
<li><a href="data/test.html#test"><span>3</span></a></li>
- <li><a href="data/test.html" aria-controls="custom-id"><span>4</span></a></li>
+ <li aria-controls="custom-id"><a href="data/test.html"><span>4</span></a></li>
<li><a href="data/test.html" title="∫ßáö Սե"><span>5</span></a></li>
</ul>
<div id="colon:test"></div>
diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js
index 66768b866..351433348 100644
--- a/tests/unit/tabs/tabs_deprecated.js
+++ b/tests/unit/tabs/tabs_deprecated.js
@@ -107,11 +107,11 @@ test( "tabTemplate + panelTemplate", function() {
});
element.tabs( "add", "#new", "New" );
tab = element.find( ".ui-tabs-nav li" ).last();
- anchor = tab.find( "a" );
+ anchor = tab.find( ".ui-tabs-anchor" );
equal( tab.text(), "New", "label" );
ok( tab.hasClass( "customTab" ), "tab custom class" );
equal( anchor.attr( "href" ), "http://example.com/#new", "href" );
- equal( anchor.attr( "aria-controls" ), "new", "aria-controls" );
+ equal( tab.attr( "aria-controls" ), "new", "aria-controls" );
ok( element.find( "#new" ).hasClass( "customPanel" ), "panel custom class" );
});
@@ -210,7 +210,7 @@ test( "selected", function() {
equal( element.tabs( "option", "selected" ), 0 );
state( element, 1, 0, 0 );
- element.find( ".ui-tabs-nav a" ).eq( 1 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 1 ).click();
equal( element.tabs( "option", "selected" ), 1 );
state( element, 0, 1, 0 );
@@ -226,17 +226,18 @@ module( "tabs (deprecated): events" );
asyncTest( "load", function() {
expect( 15 );
- var tab, panelId, panel,
+ var tab, anchor, panelId, panel,
element = $( "#tabs2" );
// init
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 2 );
+ anchor = tab.find( ".ui-tabs-anchor" );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
ok( !( "originalEvent" in event ), "originalEvent" );
- strictEqual( ui.tab, tab[ 0 ], "tab" );
+ strictEqual( ui.tab, anchor[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
state( element, 0, 0, 1, 0, 0 );
@@ -247,12 +248,13 @@ asyncTest( "load", function() {
function tabsload1() {
// .option()
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 3 );
+ anchor = tab.find( ".ui-tabs-anchor" );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
ok( !( "originalEvent" in event ), "originalEvent" );
- strictEqual( ui.tab, tab[ 0 ], "tab" );
+ strictEqual( ui.tab, anchor[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
state( element, 0, 0, 0, 1, 0 );
@@ -264,18 +266,19 @@ asyncTest( "load", function() {
function tabsload2() {
// click, change panel content
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 4 );
+ anchor = tab.find( ".ui-tabs-anchor" );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
equal( event.originalEvent.type, "click", "originalEvent" );
- strictEqual( ui.tab, tab[ 0 ], "tab" );
+ strictEqual( ui.tab, anchor[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
state( element, 0, 0, 0, 0, 1 );
start();
});
- element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 4 ).click();
}
});
@@ -285,7 +288,7 @@ test( "enable", function() {
var element = $( "#tabs1" ).tabs({
disabled: [ 0, 1 ],
enable: function( event, ui ) {
- equal( ui.tab, element.find( ".ui-tabs-nav a" )[ 1 ], "ui.tab" );
+ equal( ui.tab, element.find( ".ui-tabs-nav .ui-tabs-anchor" )[ 1 ], "ui.tab" );
equal( ui.panel, element.find( ".ui-tabs-panel" )[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
}
@@ -300,7 +303,7 @@ test( "disable", function() {
var element = $( "#tabs1" ).tabs({
disable: function( event, ui ) {
- equal( ui.tab, element.find( ".ui-tabs-nav a" )[ 1 ], "ui.tab" );
+ equal( ui.tab, element.find( ".ui-tabs-nav .ui-tabs-anchor" )[ 1 ], "ui.tab" );
equal( ui.panel, element.find( ".ui-tabs-panel" )[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
}
@@ -318,13 +321,13 @@ test( "show", function() {
active: false,
collapsible: true
}),
- tabs = element.find( ".ui-tabs-nav a" ),
+ anchors = element.find( ".ui-tabs-nav .ui-tabs-anchor" ),
panels = element.find( ".ui-tabs-panel" );
// from collapsed
element.one( "tabsshow", function( event, ui ) {
ok( !( "originalEvent" in event ), "originalEvent" );
- strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
+ strictEqual( ui.tab, anchors[ 0 ], "ui.tab" );
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
equal( ui.index, 0, "ui.index" );
state( element, 1, 0, 0 );
@@ -335,12 +338,12 @@ test( "show", function() {
// switching tabs
element.one( "tabsshow", function( event, ui ) {
equal( event.originalEvent.type, "click", "originalEvent" );
- strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
+ strictEqual( ui.tab, anchors[ 1 ], "ui.tab" );
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
state( element, 0, 1, 0 );
});
- tabs.eq( 1 ).click();
+ anchors.eq( 1 ).click();
state( element, 0, 1, 0 );
// collapsing
@@ -358,13 +361,13 @@ test( "select", function() {
active: false,
collapsible: true
}),
- tabs = element.find( ".ui-tabs-nav a" ),
+ anchors = element.find( ".ui-tabs-nav .ui-tabs-anchor" ),
panels = element.find( ".ui-tabs-panel" );
// from collapsed
element.one( "tabsselect", function( event, ui ) {
ok( !( "originalEvent" in event ), "originalEvent" );
- strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
+ strictEqual( ui.tab, anchors[ 0 ], "ui.tab" );
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
equal( ui.index, 0, "ui.index" );
state( element, 0, 0, 0 );
@@ -375,12 +378,12 @@ test( "select", function() {
// switching tabs
element.one( "tabsselect", function( event, ui ) {
equal( event.originalEvent.type, "click", "originalEvent" );
- strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
+ strictEqual( ui.tab, anchors[ 1 ], "ui.tab" );
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
state( element, 1, 0, 0 );
});
- tabs.eq( 1 ).click();
+ anchors.eq( 1 ).click();
state( element, 0, 1, 0 );
// collapsing
@@ -414,11 +417,11 @@ test( "add", function() {
element.tabs( "add", "#new", "New" );
state( element, 1, 0, 0, 0 );
tab = element.find( ".ui-tabs-nav li" ).last();
- anchor = tab.find( "a" );
+ anchor = tab.find( ".ui-tabs-anchor" );
equal( tab.text(), "New", "label" );
equal( stripLeadingSlash( anchor[0].pathname ), stripLeadingSlash( location.pathname ), "href pathname" );
equal( anchor[0].hash, "#new", "href hash" );
- equal( anchor.attr( "aria-controls" ), "new", "aria-controls" );
+ equal( tab.attr( "aria-controls" ), "new", "aria-controls" );
ok( !tab.hasClass( "ui-state-hover" ), "not hovered" );
anchor.simulate( "mouseover" );
ok( tab.hasClass( "ui-state-hover" ), "hovered" );
@@ -429,17 +432,17 @@ test( "add", function() {
element.one( "tabsadd", function( event, ui ) {
equal( ui.index, 1, "ui.index" );
equal( $( ui.tab ).text(), "New Remote", "ui.tab" );
- equal( ui.panel.id, $( ui.tab ).attr( "aria-controls" ), "ui.panel" );
+ equal( ui.panel.id, $( ui.tab ).closest( "li" ).attr( "aria-controls" ), "ui.panel" );
});
element.tabs( "add", "data/test.html", "New Remote", 1 );
state( element, 0, 0, 0, 0, 1 );
tab = element.find( ".ui-tabs-nav li" ).eq( 1 );
- anchor = tab.find( "a" );
+ anchor = tab.find( ".ui-tabs-anchor" );
equal( tab.text(), "New Remote", "label" );
equal( stripLeadingSlash( stripLeadingSlash(
anchor[0].pathname.replace( stripLeadingSlash( location.pathname ).split( "/" ).slice( 0, -1 ).join( "/" ), "" )
) ), "data/test.html", "href" );
- ok( /^ui-tabs-\d+$/.test( anchor.attr( "aria-controls" ) ), "aria controls" );
+ ok( /^ui-tabs-\d+$/.test( tab.attr( "aria-controls" ) ), "aria controls" );
ok( !tab.hasClass( "ui-state-hover" ), "not hovered" );
anchor.simulate( "mouseover" );
ok( tab.hasClass( "ui-state-hover" ), "hovered" );
@@ -560,10 +563,10 @@ test( "url", function() {
expect( 2 );
var element = $( "#tabs2" ).tabs(),
- tab = element.find( "a" ).eq( 3 );
+ anchor = element.find( ".ui-tabs-anchor" ).eq( 3 );
element.tabs( "url", 3, "data/test2.html" );
- equal( tab.attr( "href" ), "data/test2.html", "href was updated" );
+ equal( anchor.attr( "href" ), "data/test2.html", "href was updated" );
element.one( "tabsbeforeload", function( event, ui ) {
equal( ui.ajaxSettings.url, "data/test2.html", "ajaxSettings.url" );
event.preventDefault();
@@ -582,7 +585,7 @@ asyncTest( "abort", function() {
});
});
// prevent IE from caching the request, so that it won't resolve before we call abort
- element.find( ".ui-tabs-nav li:eq(2) a" ).attr( "href", function( href ) {
+ element.find( ".ui-tabs-nav li:eq(2) .ui-tabs-anchor" ).attr( "href", function( href ) {
return href + "?" + (+ new Date());
});
element.tabs( "option", "active", 2 );
diff --git a/tests/unit/tabs/tabs_events.js b/tests/unit/tabs/tabs_events.js
index f33686581..57011bdad 100644
--- a/tests/unit/tabs/tabs_events.js
+++ b/tests/unit/tabs/tabs_events.js
@@ -8,7 +8,7 @@ test( "create", function() {
expect( 10 );
var element = $( "#tabs1" ),
- tabs = element.find( "ul a" ),
+ tabs = element.find( "ul li" ),
panels = element.children( "div" );
element.tabs({
@@ -50,7 +50,8 @@ test( "beforeActivate", function() {
active: false,
collapsible: true
}),
- tabs = element.find( ".ui-tabs-nav a" ),
+ tabs = element.find( ".ui-tabs-nav li" ),
+ anchors = tabs.find( ".ui-tabs-anchor" ),
panels = element.find( ".ui-tabs-panel" );
// from collapsed
@@ -80,7 +81,7 @@ test( "beforeActivate", function() {
strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" );
state( element, 1, 0, 0 );
});
- tabs.eq( 1 ).click();
+ anchors.eq( 1 ).click();
state( element, 0, 1, 0 );
// collapsing
@@ -120,7 +121,8 @@ test( "activate", function() {
active: false,
collapsible: true
}),
- tabs = element.find( ".ui-tabs-nav a" ),
+ tabs = element.find( ".ui-tabs-nav li" ),
+ anchors = element.find( ".ui-tabs-anchor" ),
panels = element.find( ".ui-tabs-panel" );
// from collapsed
@@ -150,7 +152,7 @@ test( "activate", function() {
strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" );
state( element, 0, 1, 0 );
});
- tabs.eq( 1 ).click();
+ anchors.eq( 1 ).click();
state( element, 0, 1, 0 );
// collapsing
@@ -186,7 +188,7 @@ test( "beforeLoad", function() {
// init
element.one( "tabsbeforeload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -208,7 +210,7 @@ test( "beforeLoad", function() {
// .option()
element.one( "tabsbeforeload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -230,7 +232,7 @@ test( "beforeLoad", function() {
// click, change panel content
element.one( "tabsbeforeload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 3 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -245,7 +247,7 @@ test( "beforeLoad", function() {
event.preventDefault();
state( element, 0, 0, 1, 0, 0 );
});
- element.find( ".ui-tabs-nav a" ).eq( 3 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 3 ).click();
state( element, 0, 0, 0, 1, 0 );
// .toLowerCase() is needed to convert <P> to <p> in old IEs
equal( panel.html().toLowerCase(), "<p>testing</p>", "panel html after" );
@@ -260,7 +262,7 @@ if ( $.uiBackCompat === false ) {
// init
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -278,7 +280,7 @@ if ( $.uiBackCompat === false ) {
function tabsload1() {
// .option()
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 3 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -297,7 +299,7 @@ if ( $.uiBackCompat === false ) {
function tabsload2() {
// click, change panel content
element.one( "tabsload", function( event, ui ) {
- tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
+ tab = element.find( ".ui-tabs-nav li" ).eq( 4 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
@@ -310,7 +312,7 @@ if ( $.uiBackCompat === false ) {
state( element, 0, 0, 0, 0, 1 );
start();
});
- element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 4 ).click();
}
});
}
diff --git a/tests/unit/tabs/tabs_methods.js b/tests/unit/tabs/tabs_methods.js
index 0837995e6..ed3e73745 100644
--- a/tests/unit/tabs/tabs_methods.js
+++ b/tests/unit/tabs/tabs_methods.js
@@ -97,7 +97,7 @@ test( "refresh", function() {
element.tabs( "refresh" );
state( element, 1, 0, 0, 0 );
disabled( element, [ 1 ] );
- equal( element.find( "#" + $( "#newTab a" ).attr( "aria-controls" ) ).length, 1,
+ equal( element.find( "#" + $( "#newTab" ).attr( "aria-controls" ) ).length, 1,
"panel added for remote tab" );
// remove all tabs
@@ -156,7 +156,7 @@ asyncTest( "load", function() {
// load content of inactive tab
// useful for preloading content with custom caching
element.one( "tabsbeforeload", function( event, ui ) {
- var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
+ var tab = element.find( ".ui-tabs-nav li" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );
@@ -171,13 +171,17 @@ asyncTest( "load", function() {
// TODO: remove wrapping in 2.0
var uiTab = $( ui.tab ),
uiPanel = $( ui.panel ),
- tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
+ tab = element.find( ".ui-tabs-nav li" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );
ok( !( "originalEvent" in event ), "originalEvent" );
equal( uiTab.length, 1, "tab length" );
- strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
+ if ( $.uiBackCompat === false ) {
+ strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
+ } else {
+ strictEqual( uiTab[ 0 ], tab.find( ".ui-tabs-anchor" )[ 0 ], "tab" );
+ }
equal( uiPanel.length, 1, "panel length" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
equal( uiPanel.find( "p" ).length, 1, "panel html" );
@@ -203,7 +207,7 @@ asyncTest( "load", function() {
function tabsload2() {
// reload content of active tab
element.one( "tabsbeforeload", function( event, ui ) {
- var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
+ var tab = element.find( ".ui-tabs-nav li" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );
@@ -218,13 +222,17 @@ asyncTest( "load", function() {
// TODO: remove wrapping in 2.0
var uiTab = $( ui.tab ),
uiPanel = $( ui.panel ),
- tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
+ tab = element.find( ".ui-tabs-nav li" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );
ok( !( "originalEvent" in event ), "originalEvent" );
equal( uiTab.length, 1, "tab length" );
- strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
+ if ( $.uiBackCompat === false ) {
+ strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
+ } else {
+ strictEqual( uiTab[ 0 ], tab.find( ".ui-tabs-anchor" )[ 0 ], "tab" );
+ }
equal( uiPanel.length, 1, "panel length" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
state( element, 0, 0, 0, 1, 0 );
diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js
index ae9e7bdc6..df6827c57 100644
--- a/tests/unit/tabs/tabs_options.js
+++ b/tests/unit/tabs/tabs_options.js
@@ -57,7 +57,7 @@ test( "{ active: Number }", function() {
equal( element.tabs( "option", "active" ), 0 );
state( element, 1, 0, 0 );
- element.find( ".ui-tabs-nav a" ).eq( 1 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 1 ).click();
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
@@ -110,7 +110,7 @@ test( "{ collapsible: false }", function() {
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
- element.find( ".ui-state-active a" ).eq( 1 ).click();
+ element.find( ".ui-state-active .ui-tabs-anchor" ).eq( 1 ).click();
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
});
@@ -131,7 +131,7 @@ test( "{ collapsible: true }", function() {
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
- element.find( ".ui-state-active a" ).click();
+ element.find( ".ui-state-active .ui-tabs-anchor" ).click();
equal( element.tabs( "option", "active" ), false );
state( element, 0, 0, 0 );
});
@@ -173,7 +173,7 @@ test( "{ event: null }", function() {
state( element, 0, 1, 0 );
// ensure default click handler isn't bound
- element.find( ".ui-tabs-nav a" ).eq( 2 ).click();
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 2 ).click();
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
});
@@ -186,27 +186,27 @@ test( "{ event: custom }", function() {
});
state( element, 1, 0, 0 );
- element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" );
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 1 ).trigger( "custom1" );
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
// ensure default click handler isn't bound
- element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "click" );
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 2 ).trigger( "click" );
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
- element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "custom2" );
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 2 ).trigger( "custom2" );
equal( element.tabs( "option", "active" ), 2 );
state( element, 0, 0, 1 );
element.tabs( "option", "event", "custom3" );
// ensure old event handlers are unbound
- element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" );
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 1 ).trigger( "custom1" );
equal( element.tabs( "option", "active" ), 2 );
state( element, 0, 0, 1 );
- element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom3" );
+ element.find( ".ui-tabs-nav .ui-tabs-anchor" ).eq( 1 ).trigger( "custom3" );
equal( element.tabs( "option", "active" ), 1 );
state( element, 0, 1, 0 );
});
diff --git a/tests/unit/tabs/tabs_test_helpers.js b/tests/unit/tabs/tabs_test_helpers.js
index 9f592c074..508043943 100644
--- a/tests/unit/tabs/tabs_test_helpers.js
+++ b/tests/unit/tabs/tabs_test_helpers.js
@@ -43,7 +43,7 @@ TestHelpers.tabs = {
actual = tabs.find( ".ui-tabs-nav li" ).map(function() {
var tab = $( this ),
panel = $( $.ui.tabs.prototype._sanitizeSelector(
- "#" + tab.find( "a" ).attr( "aria-controls" ) ) ),
+ "#" + tab.attr( "aria-controls" ) ) ),
tabIsActive = tab.hasClass( "ui-state-active" ),
panelIsActive = panel.css( "display" ) !== "none";
diff --git a/tests/unit/tooltip/tooltip.html b/tests/unit/tooltip/tooltip.html
index d20ba8578..f6e60b367 100644
--- a/tests/unit/tooltip/tooltip.html
+++ b/tests/unit/tooltip/tooltip.html
@@ -41,6 +41,7 @@
<div>
<a id="tooltipped1" href="#" title="anchortitle">anchor</a>
<input title="inputtitle">
+ <span id="multiple-describedby" aria-describedby="fixture-span" title="...">aria-describedby</span>
<span id="fixture-span" title="title-text">span</span>
</div>
diff --git a/tests/unit/tooltip/tooltip_core.js b/tests/unit/tooltip/tooltip_core.js
index e2569fb01..1c8817aa8 100644
--- a/tests/unit/tooltip/tooltip_core.js
+++ b/tests/unit/tooltip/tooltip_core.js
@@ -3,7 +3,7 @@
module( "tooltip: core" );
test( "markup structure", function() {
- expect( 6 );
+ expect( 7 );
var element = $( "#tooltipped1" ).tooltip(),
tooltip = $( ".ui-tooltip" );
@@ -11,8 +11,9 @@ test( "markup structure", function() {
equal( tooltip.length, 0, "no tooltip on init" );
element.tooltip( "open" );
- tooltip = $( "#" + element.attr( "aria-describedby" ) );
+ tooltip = $( "#" + element.data( "ui-tooltip-id" ) );
equal( tooltip.length, 1, "tooltip exists" );
+ equal( element.attr( "aria-describedby"), tooltip.attr( "id" ), "aria-describedby" );
ok( tooltip.hasClass( "ui-tooltip" ), "tooltip is .ui-tooltip" );
equal( tooltip.length, 1, ".ui-tooltip exists" );
equal( tooltip.find( ".ui-tooltip-content" ).length, 1,
@@ -20,8 +21,24 @@ test( "markup structure", function() {
});
test( "accessibility", function() {
- // TODO: add tests
- expect( 0 );
+ expect( 5 );
+
+ var tooltipId,
+ tooltip,
+ element = $( "#multiple-describedby" ).tooltip();
+
+ element.tooltip( "open" );
+ tooltipId = element.data( "ui-tooltip-id" );
+ tooltip = $( "#" + tooltipId );
+ equal( tooltip.attr( "role" ), "tooltip", "role" );
+ equal( element.attr( "aria-describedby" ), "fixture-span " + tooltipId,
+ "multiple describedby when open" );
+ // strictEqual to distinguish between .removeAttr( "title" ) and .attr( "title", "" )
+ strictEqual( element.attr( "title" ), undefined, "no title when open" );
+ element.tooltip( "close" );
+ equal( element.attr( "aria-describedby" ), "fixture-span",
+ "correct describedby when closed" );
+ equal( element.attr( "title" ), "...", "title restored when closed" );
});
}( jQuery ) );
diff --git a/tests/unit/tooltip/tooltip_events.js b/tests/unit/tooltip/tooltip_events.js
index b1ce92fb2..fc5f1acc5 100644
--- a/tests/unit/tooltip/tooltip_events.js
+++ b/tests/unit/tooltip/tooltip_events.js
@@ -11,7 +11,7 @@ test( "programmatic triggers", function() {
tooltip = ui.tooltip;
ok( !( "originalEvent" in event ), "open" );
strictEqual( ui.tooltip[0],
- $( "#" + element.attr( "aria-describedby" ) )[0], "ui.tooltip" );
+ $( "#" + element.data( "ui-tooltip-id" ) )[0], "ui.tooltip" );
});
element.tooltip( "open" );
diff --git a/tests/unit/tooltip/tooltip_methods.js b/tests/unit/tooltip/tooltip_methods.js
index eaab1c0d1..1b8cd2bf2 100644
--- a/tests/unit/tooltip/tooltip_methods.js
+++ b/tests/unit/tooltip/tooltip_methods.js
@@ -21,7 +21,7 @@ test( "open/close", function() {
equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" );
element.tooltip( "open" );
- tooltip = $( "#" + element.attr( "aria-describedby" ) );
+ tooltip = $( "#" + element.data( "ui-tooltip-id" ) );
ok( tooltip.is( ":visible" ) );
element.tooltip( "close" );
@@ -37,7 +37,7 @@ test( "enable/disable", function() {
equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" );
element.tooltip( "open" );
- tooltip = $( "#" + element.attr( "aria-describedby" ) );
+ tooltip = $( "#" + element.data( "ui-tooltip-id" ) );
ok( tooltip.is( ":visible" ) );
element.tooltip( "disable" );
@@ -51,7 +51,7 @@ test( "enable/disable", function() {
equal( element.attr( "title" ), "anchortitle", "title restored on enable" );
element.tooltip( "open" );
- tooltip = $( "#" + element.attr( "aria-describedby" ) );
+ tooltip = $( "#" + element.data( "ui-tooltip-id" ) );
ok( tooltip.is( ":visible" ) );
$.fx.off = false;
});
diff --git a/tests/unit/tooltip/tooltip_options.js b/tests/unit/tooltip/tooltip_options.js
index 4f994f8de..a4ef9f472 100644
--- a/tests/unit/tooltip/tooltip_options.js
+++ b/tests/unit/tooltip/tooltip_options.js
@@ -4,7 +4,7 @@ module( "tooltip: options" );
test( "content: default", function() {
var element = $( "#tooltipped1" ).tooltip().tooltip( "open" );
- deepEqual( $( "#" + element.attr( "aria-describedby" ) ).text(), "anchortitle" );
+ deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "anchortitle" );
});
test( "content: return string", function() {
@@ -13,7 +13,7 @@ test( "content: return string", function() {
return "customstring";
}
}).tooltip( "open" );
- deepEqual( $( "#" + element.attr( "aria-describedby" ) ).text(), "customstring" );
+ deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" );
});
test( "content: return jQuery", function() {
@@ -22,7 +22,7 @@ test( "content: return jQuery", function() {
return $( "<div>" ).html( "cu<b>s</b>tomstring" );
}
}).tooltip( "open" );
- deepEqual( $( "#" + element.attr( "aria-describedby" ) ).text(), "customstring" );
+ deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" );
});
asyncTest( "content: sync + async callback", function() {
@@ -30,11 +30,11 @@ asyncTest( "content: sync + async callback", function() {
var element = $( "#tooltipped1" ).tooltip({
content: function( response ) {
setTimeout(function() {
- deepEqual( $( "#" + element.attr("aria-describedby") ).text(), "loading..." );
+ deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "loading..." );
response( "customstring2" );
setTimeout(function() {
- deepEqual( $( "#" + element.attr("aria-describedby") ).text(), "customstring2" );
+ deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "customstring2" );
start();
}, 13 );
}, 13 );
@@ -53,12 +53,12 @@ test( "items", function() {
event = $.Event( "mouseenter" );
event.target = $( "#fixture-span" )[ 0 ];
element.tooltip( "open", event );
- deepEqual( $( "#" + $( "#fixture-span" ).attr( "aria-describedby" ) ).text(), "title-text" );
+ deepEqual( $( "#" + $( "#fixture-span" ).data( "ui-tooltip-id" ) ).text(), "title-text" );
// make sure default [title] doesn't get used
event.target = $( "#tooltipped1" )[ 0 ];
element.tooltip( "open", event );
- deepEqual( $( "#tooltipped1" ).attr( "aria-describedby" ), undefined );
+ deepEqual( $( "#tooltipped1" ).data( "ui-tooltip-id" ), undefined );
element.tooltip( "destroy" );
});
@@ -68,7 +68,7 @@ test( "tooltipClass", function() {
var element = $( "#tooltipped1" ).tooltip({
tooltipClass: "custom"
}).tooltip( "open" );
- ok( $( "#" + element.attr( "aria-describedby" ) ).hasClass( "custom" ) );
+ ok( $( "#" + element.data( "ui-tooltip-id" ) ).hasClass( "custom" ) );
});
}( jQuery ) );
diff --git a/tests/visual/accordion/accordion.html b/tests/visual/accordion/icons.html
index a9cf1d129..a9cf1d129 100644
--- a/tests/visual/accordion/accordion.html
+++ b/tests/visual/accordion/icons.html
diff --git a/tests/visual/addClass/addClass_queue.html b/tests/visual/addClass/queue.html
index 616f2c7f9..21f4cc1cb 100644
--- a/tests/visual/addClass/addClass_queue.html
+++ b/tests/visual/addClass/queue.html
@@ -43,7 +43,7 @@
<body>
<p>WHAT: The two boxes animate from black to red to green to blue.</p>
-<p>The first box should start with a delay, the second box should start immediately.</p>
+<p>EXPECTED: The first box should start with a delay, the second box should start immediately.</p>
<div id="box1" class="box"></div>
<div id="box2" class="box"></div>
diff --git a/tests/visual/button/button.html b/tests/visual/button/button.html
index 7aef71f97..20bae191f 100644
--- a/tests/visual/button/button.html
+++ b/tests/visual/button/button.html
@@ -1,140 +1,94 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
- <meta charset="UTF-8" />
- <title>Button Visual push: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <style type="text/css">
- #toolbar { margin-top: 2em; padding:0.2em; }
- #ops1, #ops2, #format, #mode { margin-right: 1em }
- </style>
- <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
- <script type="text/javascript" src="../../../external/jquery.metadata.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.button.js"></script>
- <script type="text/javascript">
+ <meta charset="utf-8">
+ <title>Button Visual Test</title>
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.button.js"></script>
+ <script>
$(function() {
- var buttons = $('#push button, #check').button();
- var buttonSets = $('#radio0, #radio1, #radio2, #ops1, #format, #ops2, #mode, #inputs, #anchors').buttonset();
-
- buttons.add(buttonSets).click(function(event) {
- var target = $(event.target);
- if (target.closest('.ui-button:not(.ui-state-disabled)').length) {
- $("<div></div>")
- .text("Clicked " + (target.text() || target.val()))
- .appendTo("#log");
- window.console && console.log(this, arguments);
- }
+ $( ".buttons" ).each(function() {
+ $( this ).children()
+ .eq( 0 )
+ .button({
+ text: false,
+ icons: {
+ primary: "ui-icon-help"
+ }
+ })
+ .end()
+ .eq( 1 )
+ .button({
+ icons: {
+ primary: "ui-icon-help"
+ },
+ disabled: true
+ })
+ .end()
+ .eq( 2 )
+ .button();
});
-
- $("#disable-widgets").toggle(function() {
- buttons.button("disable");
- buttonSets.buttonset("disable");
- }, function() {
- buttons.button("enable");
- buttonSets.buttonset("enable");
- });
- $("#toggle-widgets").toggle(function() {
- buttons.button();
- buttonSets.buttonset();
- }, function() {
- buttons.button("destroy");
- buttonSets.buttonset("destroy");
- }).click();
});
</script>
</head>
<body>
-<div id="push">
- <div>
- No icon
- <button>Simple button, only text</button>
- <button class="ui-priority-secondary">Secondary priority button</button>
- </div>
- <br/>
- <div>
- With icon
- <button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
- <button class="{button:{icons:{primary:'ui-icon-locked'}}}">Primary icon</button>
- <button class="{button:{icons:{secondary:'ui-icon-triangle-1-s'}}}">Secondary icon</button>
- <button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Both icons</button>
- <button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons and no text</button>
- </div>
+<div class="buttons">
+ <button>button</button>
+ <button>button</button>
+ <button>button</button>
+</div>
+
+<div class="buttons">
+ <button type="button">button button</button>
+ <button type="button">button button</button>
+ <button type="button">button button</button>
</div>
-<div id="toggle" style="margin-top: 2em;">
- <input type="checkbox" id="check" /><label for="check">Toggle</label>
+<div class="buttons">
+ <button type="submit">button submit</button>
+ <button type="submit">button submit</button>
+ <button type="submit">button submit</button>
</div>
-<div id="radio0" style="margin-top: 2em;">
- <input type="radio" id="radio01" name="radio" checked="checked" /><label for="radio01">Choice 1</label>
- <input type="radio" id="radio02" name="radio" /><label for="radio02">Choice 2</label>
- <input type="radio" id="radio03" name="radio" /><label for="radio03">Choice 3</label>
+<div class="buttons">
+ <input type="button" value="input button">
+ <input type="button" value="input button">
+ <input type="button" value="input button">
</div>
-<form>
- <div id="radio1" style="margin-top: 2em;">
- <input type="radio" id="radio11" name="radio" /><label for="radio11">Choice 1</label>
- <input type="radio" id="radio12" name="radio" checked="checked" /><label for="radio12">Choice 2</label>
- <input type="radio" id="radio13" name="radio" /><label for="radio13">Choice 3</label>
- </div>
-</form>
-<form>
- <div id="radio2" style="margin-top: 2em;">
- <input type="radio" id="radio21" name="radio" /><label for="radio21">Choice 1</label>
- <input type="radio" id="radio22" name="radio" /><label for="radio22">Choice 2</label>
- <input type="radio" id="radio23" name="radio" checked="checked" /><label for="radio23">Choice 3</label>
- </div>
-</form>
-<div id="toolbar" class="ui-widget-header ui-corner-all ui-helper-clearfix">
- <span id="ops1">
- <button class="{button:{icons:{primary:'ui-icon-folder-open'},text:false}}">Open</button>
- <button class="{button:{icons:{primary:'ui-icon-disk'},text:false}}">Save</button>
- <button class="{button:{icons:{primary:'ui-icon-trash'},text:false}}">Delete</button>
- </span>
- <span id="format">
- <input type="checkbox" id="check1" /><label for="check1">B</label>
- <input type="checkbox" id="check2" /><label for="check2">I</label>
- <input type="checkbox" id="check3" /><label for="check3">U</label>
- </span>
- <span id="ops2">
- <button class="{button:{icons:{primary:'ui-icon-print'},text:false}}">Print...</button>
- <button class="{button:{icons:{primary:'ui-icon-mail-closed'},text:false}}">Mail to...</button>
- </span>
- <span id="mode">
- <input type="radio" id="mode1" name="radio2" checked="checked" /><label for="mode1">Edit</label>
- <input type="radio" id="mode2" name="radio2" /><label for="mode2">View</label>
- </span>
+<div class="buttons">
+ <input type="submit" value="input submit">
+ <input type="submit" value="input submit">
+ <input type="submit" value="input submit">
</div>
-<div id="inputs" style="margin-top: 2em;">
- <input type="submit" value="Submit button" />
- <input type="reset" value="Reset button" class="{button:{label:'Custom reset'}}" />
+<div class="buttons">
+ <input type="checkbox" id="input-checkbox0">
+ <input type="checkbox" id="input-checkbox1">
+ <input type="checkbox" id="input-checkbox2">
+ <label for="input-checkbox0">input checkbox</label>
+ <label for="input-checkbox1">input checkbox</label>
+ <label for="input-checkbox2">input checkbox</label>
</div>
-<div id="anchors" style="margin-top: 2em;">
- <a href="#">Anchor 1</a>
- <a href="#" class="{button:{icons:{primary:'ui-icon-print'},text:false}}">Anchor 2</a>
- <a href="#" class="{button:{icons:{primary:'ui-icon-mail-closed'},text:false}}">Anchor 3</a>
- <a href="#">Anchor 4</a>
+<div class="buttons">
+ <input type="radio" id="input-radio0" name="radio">
+ <input type="radio" id="input-radio1" name="radio">
+ <input type="radio" id="input-radio2" name="radio">
+ <label for="input-radio0">input radio</label>
+ <label for="input-radio1">input radio</label>
+ <label for="input-radio2">input radio</label>
</div>
-<div style="margin-top: 2em;">
- <button id="disable-widgets">Toggle disabled</button>
- <button id="toggle-widgets">Toggle widget</button>
+<div class="buttons">
+ <a href="#">anchor</a>
+ <a href="#">anchor</a>
+ <a href="#">anchor</a>
</div>
-<div id="log"></div>
-<script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
-<script type="text/javascript">
- $.fn.themeswitcher && $('<div></div>').css({
- position: "absolute",
- right: 10,
- top: 10
- }).appendTo(document.body).themeswitcher();
-</script>
</body>
</html>
diff --git a/tests/visual/button/button_disabled_true.html b/tests/visual/button/button_disabled_true.html
deleted file mode 100644
index 83a3e9cd6..000000000
--- a/tests/visual/button/button_disabled_true.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Button Visual Test : Button disabled true</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <script type="text/javascript" src="../../../jquery-1.7.2.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.button.js"></script>
- <script type="text/javascript">
- $(function() {
-
- $("#button1").button({
- disabled: true
- });
-
- $("#anchor1").button({
- disabled: true
- });
-
- $("#inputbutton1").button({
- disabled: true
- });
-
- $("#radio1, #radio2, #radio3").button({
- disabled: true
- });
-
- $("#checkbox1, #checkbox2, #checkbox3").button({
- disabled: true
- });
-
- });
- </script>
-</head>
-<body>
-
-<fieldset>
- <legend>button</legend>
- <button disabled="disabled">button</button>
- <hr />
- <button id="button1">button</button>
-</fieldset>
-
-<fieldset>
- <legend>anchor</legend>
- <a href="javascript:void(0)">anchor 1</a> # Attribute "disabled" not allowed on element "a" at this point.
- <hr />
- <a href="javascript:void(0)" id="anchor1">anchor 1</a>
-</fieldset>
-
-<fieldset>
- <legend>input type="button"</legend>
- <input type="button" disabled="disabled" value="input button 1" />
- <hr />
- <input type="button" id="inputbutton1" value="input button 1" />
-</fieldset>
-
-<fieldset>
- <legend>input type="radio"</legend>
- <input type="radio" name="radioletter" id="radioa" disabled="disabled" /><label for="radioa">radio a</label>
- <input type="radio" name="radioletter" id="radiob" disabled="disabled" /><label for="radiob">radio b</label>
- <input type="radio" name="radioletter" id="radioc" disabled="disabled" /><label for="radioc">radio c</label>
- <hr />
- <input type="radio" name="radionumber" id="radio1" /><label for="radio1">radio 1</label>
- <input type="radio" name="radionumber" id="radio2" /><label for="radio2">radio 2</label>
- <input type="radio" name="radionumber" id="radio3" /><label for="radio3">radio 3</label>
-</fieldset>
-
-<fieldset>
- <legend>input type="checkbox"</legend>
- <input type="checkbox" id="checkboxa" disabled="disabled" /><label for="checkboxa">checkbox a</label>
- <input type="checkbox" id="checkboxb" disabled="disabled" /><label for="checkboxb">checkbox b</label>
- <input type="checkbox" id="checkboxc" disabled="disabled" /><label for="checkboxc">checkbox c</label>
- <hr />
- <input type="checkbox" id="checkbox1" /><label for="checkbox1">checkbox 1</label>
- <input type="checkbox" id="checkbox2" /><label for="checkbox2">checkbox 2</label>
- <input type="checkbox" id="checkbox3" /><label for="checkbox3">checkbox 3</label>
-</fieldset>
-
-</body>
-</html>
diff --git a/tests/visual/button/button_performance.html b/tests/visual/button/button_performance.html
deleted file mode 100644
index 8ff6d0320..000000000
--- a/tests/visual/button/button_performance.html
+++ /dev/null
@@ -1,555 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Button Visual push: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <style type="text/css">
- #toolbar { margin-top: 2em; padding:0.2em; }
- #ops1, #ops2, #format, #mode { margin-right: 1em }
- </style>
- <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
- <script type="text/javascript" src="../../../external/jquery.metadata.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.button.js"></script>
- <script type="text/javascript">
- $(function() {
- var start = +new Date();
- $("button").button();
- var end = +new Date();
- $("<p></p>").text( "Time to initialize: " + (end - start) + "ms" ).prependTo("body");
- });
- </script>
-</head>
-<body>
-
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-<button>Simple button, only text</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'},text:false}}">Button with icon only</button>
-<button class="{button:{icons:{primary:'ui-icon-locked'}}}">Button with icon on the left</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'}}}">Button with two icons</button>
-<button class="{button:{icons:{primary:'ui-icon-gear',secondary:'ui-icon-triangle-1-s'},text:false}}">Button with two icons</button>
-
-</body>
-</html>
diff --git a/tests/visual/button/button_ticket_5261.html b/tests/visual/button/button_ticket_5261.html
deleted file mode 100644
index 7eddc33ae..000000000
--- a/tests/visual/button/button_ticket_5261.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Button Visual Test : Button ticket #5261</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <script type="text/javascript" src="../../../jquery-1.7.2.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.button.js"></script>
- <script type="text/javascript">
- $(function() {
-
- $('#id1').button().change(function(e) {
- console.log('change', e);
- });
- $('#id1').bind('change', function(e) {
- console.log('bound change', e);
- });
- $("body").live('change', function(e) {
- console.log('live change on body', e);
- });
- $(document).delegate('input', 'change', function(e) {
- console.log('delegated input change', e);
- });
- $(document).change(function(e) {
- console.log('delegated change on document', e);
- });
-
- });
- </script>
-</head>
-<body>
-
-<h1 class="ui-widget-header"><a href="http://dev.jqueryui.com/ticket/5261">#5261 - button change events don't fire in IE 7/8</a></h1>
-
-<input name="1" id="id1" type="checkbox"/>
-<label for="id1">Checkbox</label>
-
-</body>
-</html>
diff --git a/tests/visual/button/button_ticket_5278.html b/tests/visual/button/button_ticket_5278.html
deleted file mode 100644
index eed6ebdb0..000000000
--- a/tests/visual/button/button_ticket_5278.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Button Visual Test : Button ticket #5278</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <script type="text/javascript" src="../../../jquery-1.7.2.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.button.js"></script>
- <script type="text/javascript">
- $(function() {
-
- $('#id1, #id2, #id3, #id4').button();
-
- $('#r1, #r2, #r3, #r4').button();
-
- });
- </script>
-</head>
-<body>
-
-<h1 class="ui-widget-header"><a href="http://dev.jqueryui.com/ticket/5278">#5278 - ui.buttons doesn't visually reset on form "reset" event or input "change" event</a></h1>
-
-<form>
-
-<input name="a1" id="id1" type="checkbox"/>
-<label for="id1">Checkbox</label>
-
-<input name="a2" id="id2" type="checkbox"/>
-<label for="id2">Checkbox</label>
-
-<input name="a3" id="id3" type="checkbox" checked="checked" />
-<label for="id3">Checkbox</label>
-
-<input name="a4" id="id4" type="checkbox"/>
-<label for="id4">Checkbox</label>
-
-<input type="reset"/>
-
-<input name="r" id="r1" type="radio"/>
-<label for="r1">Radio</label>
-
-<input name="r" id="r2" type="radio"/>
-<label for="r2">Radio</label>
-
-<input name="r" id="r3" type="radio" checked="checked" />
-<label for="r3">Radio</label>
-
-<input name="r" id="r4" type="radio"/>
-<label for="r4">Radio</label>
-
-
-</form>
-
-</body>
-</html>
diff --git a/tests/visual/button/performance.html b/tests/visual/button/performance.html
new file mode 100644
index 000000000..1d1884bc2
--- /dev/null
+++ b/tests/visual/button/performance.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>Button Visual Test: Initialization Performance</title>
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.button.js"></script>
+ <script>
+ $(function() {
+ var start,
+ html = new Array( 500 ).join( "<button>button</button>" );
+ $( html ).appendTo( "body" );
+
+ start = $.now();
+ $( "button" ).button();
+ $( "<p>" ).text( "Time to initialize: " + ($.now() - start) + "ms" ).prependTo( "body" );
+ });
+ </script>
+</head>
+<body>
+
+</body>
+</html>
diff --git a/tests/visual/dialog/dialog_on_page_with_large_dom.html b/tests/visual/dialog/performance.html
index d807b3e3f..e84f4b328 100644
--- a/tests/visual/dialog/dialog_on_page_with_large_dom.html
+++ b/tests/visual/dialog/performance.html
@@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<title>Dialog Visual Test - Modal Dialog in Large DOM</title>
- <link rel="stylesheet" href="../visual.css">
<link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
<script src="../../../jquery-1.7.2.js"></script>
<script src="../../../external/jquery.bgiframe-2.1.2.js"></script>
@@ -37,6 +36,9 @@
</head>
<body>
+<p>WHAT: A single dialog is created on a page with a large DOM.</p>
+<p>EXPECTED: Creating and opening the dialog should be fast, regardless of page size.</p>
+
<button id="opener">open dialog</button>
<div id="dialog" title="Dialog Title">
<p> Dialog Content </p>
@@ -51,7 +53,7 @@
<div><div><div><div><div><div><div><div><div><div>
<div><div><div><div><div><div><div><div><div><div>
<div><div><div><div><div><div><div><div><div><div>
-<div><p>This <span>is</span> <span>a</span> <strong>large</strong> <abbr>DOM</abbr></p>.</div>
+<div><p>This <span>is</span> <span>a</span> <strong>large</strong> <abbr>DOM</abbr>.</p></div>
<input>
<select>
<option>option 1</option>
diff --git a/tests/visual/effects/effects.all.html b/tests/visual/effects/all.html
index acb8dc41a..15bfcd254 100644
--- a/tests/visual/effects/effects.all.html
+++ b/tests/visual/effects/all.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>jQuery UI Effects Test Suite</title>
- <link rel="stylesheet" href="effects.all.css" type="text/css">
+ <link rel="stylesheet" href="effects.css">
<script src="../../../jquery-1.7.2.js"></script>
<script src="../../../ui/jquery.effects.core.js"></script>
<script src="../../../ui/jquery.effects.blind.js"></script>
@@ -19,7 +19,7 @@
<script src="../../../ui/jquery.effects.shake.js"></script>
<script src="../../../ui/jquery.effects.slide.js"></script>
<script src="../../../ui/jquery.effects.transfer.js"></script>
- <script src="effects.all.js"></script>
+ <script src="effects.js"></script>
</head>
<body>
@@ -186,19 +186,19 @@
<p>Transfer to first element</p>
</div>
</li>
-
+
<li>
<div class="effect" id="addClass">
<p>addClass</p>
</div>
</li>
-
+
<li>
<div class="effect" id="removeClass">
<p>removeClass</p>
</div>
</li>
-
+
<li>
<div class="effect" id="toggleClass">
<p>toggleClass</p>
diff --git a/tests/visual/effects/effects.all.js b/tests/visual/effects/effects.all.js
deleted file mode 100644
index a28c41a89..000000000
--- a/tests/visual/effects/effects.all.js
+++ /dev/null
@@ -1,106 +0,0 @@
-
-$(function() {
- var duration = 1000, wait = 500;
-
- $("div.effect")
- .hover(function() { $(this).addClass("hover"); },
- function() { $(this).removeClass("hover"); });
-
- var effect = function(el, n, o) {
-
- $.extend(o, {
- easing: "easeOutQuint"
- });
-
- $(el).bind("click", function() {
-
- $(this).addClass("current")
- // delaying the initial animation makes sure that the queue stays in tact
- .delay( 10 )
- .hide( n, o, duration )
- .delay( wait )
- .show( n, o, duration, function() {
- $( this ).removeClass("current");
- });
- });
-
- };
-
- $("#hide").click(function() {
- var el = $(this);
- el.addClass("current").hide(duration, function() {
- setTimeout(function() {
- el.show(duration, function() { el.removeClass("current"); });
- }, wait);
- });
- });
-
- effect("#blindLeft", "blind", { direction: "left" });
- effect("#blindUp", "blind", { direction: "up" });
- effect("#blindRight", "blind", { direction: "right" });
- effect("#blindDown", "blind", { direction: "down" });
-
- effect("#bounce3times", "bounce", { times: 3 });
-
- effect("#clipHorizontally", "clip", { direction: "horizontal" });
- effect("#clipVertically", "clip", { direction: "vertical" });
-
- effect("#dropDown", "drop", { direction: "down" });
- effect("#dropUp", "drop", { direction: "up" });
- effect("#dropLeft", "drop", { direction: "left" });
- effect("#dropRight", "drop", { direction: "right" });
-
- effect("#explode9", "explode", {});
- effect("#explode36", "explode", { pieces: 36 });
-
- effect("#fade", "fade", {});
-
- effect("#fold", "fold", { size: 50 });
-
- effect("#highlight", "highlight", {});
-
- effect("#pulsate", "pulsate", { times: 2 });
-
- effect("#puff", "puff", { times: 2 });
- effect("#scale", "scale", {});
- effect("#size", "size", {});
- $("#sizeToggle").bind("click", function() {
- var opts = { to: { width: 300, height: 300 }};
- $(this).addClass('current')
- .toggle("size", opts, duration)
- .delay(wait)
- .toggle("size", opts, duration, function() {
- $(this).removeClass("current");
- });
- });
-
- $("#shake").bind("click", function() { $(this).addClass("current").effect("shake", {}, 100, function() { $(this).removeClass("current"); }); });
-
- effect("#slideDown", "slide", { direction: "down" });
- effect("#slideUp", "slide", { direction: "up" });
- effect("#slideLeft", "slide", { direction: "left" });
- effect("#slideRight", "slide", { direction: "right" });
-
- $("#transfer").bind("click", function() { $(this).addClass("current").effect("transfer", { to: "div:eq(0)" }, 1000, function() { $(this).removeClass("current"); }); });
-
- $("#addClass").click(function() {
- $(this).addClass(function() {
- window.console && console.log(arguments);
- return "current";
- }, duration, function() {
- $(this).removeClass("current");
- });
- });
- $("#removeClass").click(function() {
- $(this).addClass("current").removeClass(function() {
- window.console && console.log(arguments);
- return "current";
- }, duration);
- });
- $("#toggleClass").click(function() {
- $(this).toggleClass(function() {
- window.console && console.log(arguments);
- return "current";
- }, duration);
- });
-});
diff --git a/tests/visual/effects/effects.all.css b/tests/visual/effects/effects.css
index 1d531b026..460019f24 100644
--- a/tests/visual/effects/effects.all.css
+++ b/tests/visual/effects/effects.css
@@ -1,13 +1,9 @@
-
-body,html {
- margin: 0;
+body {
+ margin: 1em;
padding: 0;
- font-size: 12px;
- font-family: Arial;
background: #191919;
color: #fff;
}
-body { margin: 1em; }
ul.effects {
list-style-type: none;
@@ -16,8 +12,6 @@ ul.effects {
}
ul.effects li {
- list-style-type: none;
- margin: 0;
padding: 0;
width: 120px;
height: 100px;
@@ -44,7 +38,7 @@ div.current {
div.effect p {
color: #191919;
font-weight: bold;
- margin: 0px;
+ margin: 0;
padding: 10px;
}
diff --git a/tests/visual/effects/effects.js b/tests/visual/effects/effects.js
new file mode 100644
index 000000000..624e0b128
--- /dev/null
+++ b/tests/visual/effects/effects.js
@@ -0,0 +1,107 @@
+$(function() {
+
+var duration = 1000,
+ wait = 500;
+
+function effect( elem, name, options ) {
+ $.extend( options, {
+ easing: "easeOutQuint"
+ });
+
+ $( elem ).click(function() {
+ $( this )
+ .addClass( "current" )
+ // delaying the initial animation makes sure that the queue stays in tact
+ .delay( 10 )
+ .hide( name, options, duration )
+ .delay( wait )
+ .show( name, options, duration, function() {
+ $( this ).removeClass( "current" );
+ });
+ });
+}
+
+$( "#hide" ).click(function() {
+ $( this )
+ .addClass( "current" )
+ .hide( duration )
+ .delay( wait )
+ .show( duration, function() {
+ $( this ).removeClass( "current" );
+ });
+});
+
+effect( "#blindLeft", "blind", { direction: "left" } );
+effect( "#blindUp", "blind", { direction: "up" } );
+effect( "#blindRight", "blind", { direction: "right" } );
+effect( "#blindDown", "blind", { direction: "down" } );
+
+effect( "#bounce3times", "bounce", { times: 3 } );
+
+effect( "#clipHorizontally", "clip", { direction: "horizontal" } );
+effect( "#clipVertically", "clip", { direction: "vertical" } );
+
+effect( "#dropDown", "drop", { direction: "down" } );
+effect( "#dropUp", "drop", { direction: "up" } );
+effect( "#dropLeft", "drop", { direction: "left" } );
+effect( "#dropRight", "drop", { direction: "right" } );
+
+effect( "#explode9", "explode", {} );
+effect( "#explode36", "explode", { pieces: 36 } );
+
+effect( "#fade", "fade", {} );
+
+effect( "#fold", "fold", { size: 50 } );
+
+effect( "#highlight", "highlight", {} );
+
+effect( "#pulsate", "pulsate", { times: 2 } );
+
+effect( "#puff", "puff", { times: 2 } );
+effect( "#scale", "scale", {} );
+effect( "#size", "size", {} );
+$( "#sizeToggle" ).click(function() {
+ var options = { to: { width: 300, height: 300 } };
+ $( this )
+ .addClass( "current" )
+ .toggle( "size", options, duration )
+ .delay( wait )
+ .toggle( "size", options, duration, function() {
+ $( this ).removeClass( "current" );
+ });
+});
+
+$( "#shake" ).click(function() {
+ $( this )
+ .addClass( "current" )
+ .effect( "shake", {}, 100, function() {
+ $( this ).removeClass( "current" );
+ });
+});
+
+effect( "#slideDown", "slide", { direction: "down" } );
+effect( "#slideUp", "slide", { direction: "up" } );
+effect( "#slideLeft", "slide", { direction: "left" } );
+effect( "#slideRight", "slide", { direction: "right" } );
+
+$( "#transfer" ).click(function() {
+ $( this )
+ .addClass( "current" )
+ .effect( "transfer", { to: "div:eq(0)" }, 1000, function() {
+ $( this ).removeClass( "current" );
+ });
+});
+
+$( "#addClass" ).click(function() {
+ $( this ).addClass( "current", duration, function() {
+ $( this ).removeClass( "current" );
+ });
+});
+$( "#removeClass" ).click(function() {
+ $( this ).addClass( "current" ).removeClass( "current", duration );
+});
+$( "#toggleClass" ).click(function() {
+ $( this ).toggleClass( "current", duration );
+});
+
+});
diff --git a/tests/visual/effects/effects.scale.html b/tests/visual/effects/scale.html
index 708543257..add2ba01c 100644
--- a/tests/visual/effects/effects.scale.html
+++ b/tests/visual/effects/scale.html
@@ -3,13 +3,12 @@
<head>
<meta charset="utf-8">
<title>jQuery UI Effects Test Suite</title>
- <link rel="stylesheet" href="effects.all.css" type="text/css">
+ <link rel="stylesheet" href="effects.css">
<script src="../../../jquery-1.7.2.js"></script>
<script src="../../../ui/jquery.effects.core.js"></script>
<script src="../../../ui/jquery.effects.scale.js"></script>
- <script src="effects.all.js"></script>
<script>
- jQuery(function( $ ) {
+ $(function() {
var test = $( "#testBox" ),
opts = $( ".arg" ),
optsRev = $( opts.get().reverse() ),
@@ -82,9 +81,8 @@
}
});
</script>
- <style type="text/css">
+ <style>
#testArea {
-/* border: 5px dashed #777;*/
width: 200px;
height: 200px;
position: relative;
diff --git a/tests/visual/index.html b/tests/visual/index.html
new file mode 100644
index 000000000..0d5aceffa
--- /dev/null
+++ b/tests/visual/index.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>jQuery UI Visual Tests</title>
+
+ <link rel="stylesheet" href="../../themes/base/jquery.ui.core.css">
+ <link rel="stylesheet" href="../../themes/base/jquery.ui.theme.css">
+ <link rel="stylesheet" href="../index.css">
+ <script src="../jquery-1.7.2.js"></script>
+ <script src="../index.js"></script>
+</head>
+<body>
+
+<div id="main">
+ <h1>jQuery UI Visual Tests</h1>
+ <div>
+ <h2>Accordion</h2>
+ <ul>
+ <li><a href="accordion/icons.html">Icons</a></li>
+ </ul>
+
+ <h2>addClass</h2>
+ <ul>
+ <li><a href="addClass/queue.html">Queue</a></li>
+ </ul>
+
+ <h2>Button</h2>
+ <ul>
+ <li><a href="button/button.html">General</a></li>
+ <li><a href="button/performance.html">Performance</a></li>
+ </ul>
+
+ <h2>Dialog</h2>
+ <ul>
+ <li><a href="dialog/performance.html">Performance</a></li>
+ </ul>
+
+ <h2>Effects</h2>
+ <ul>
+ <li><a href="effects/all.html">All</a></li>
+ <li><a href="effects/scale.html">Scale</a></li>
+ </ul>
+
+ <h2>Menu</h2>
+ <ul>
+ <li><a href="menu/menu.html">General</a></li>
+ </ul>
+
+ <h2>Position</h2>
+ <ul>
+ <li><a href="position/position.html">General</a></li>
+ <li><a href="position/position_feedback.html">Feedback</a></li>
+ </ul>
+
+ <h2>Tooltip</h2>
+ <ul>
+ <li><a href="tooltip/tooltip.html">General</a></li>
+ <li><a href="tooltip/animations.html">Animations</a></li>
+ </ul>
+
+ <h2>Compound</h2>
+ <ul>
+ <li><a href="compound/accordion_tabs.html">Accordion in Tabs</a></li>
+ <li><a href="compound/datepicker_dialog.html">Datepicker in Dialog</a></li>
+ <li><a href="compound/dialog_widgets.html">Various Widgets in Dialog</a></li>
+ <li><a href="compound/draggable_accordion.html">Draggable Accordion</a></li>
+ <li><a href="compound/draggable_accordion_accordion_tabs_draggable.html">Nested Widgets</a></li>
+ <li><a href="compound/sortable_accordion_sortable_tabs.html">Sortable Tabs in Sortable Accordion</a></li>
+ <li><a href="compound/tabs_tabs.html">Nested Tabs</a></li>
+ <li><a href="compound/tabs_tooltips.html">Tabs with Tooltips</a></li>
+ </ul>
+
+ <h2>General</h2>
+ <ul>
+ <li><a href="theme.html">Theme</a></li>
+ </ul>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/visual/menu/drilldown.html b/tests/visual/menu/drilldown.html
deleted file mode 100644
index 7b40fc62f..000000000
--- a/tests/visual/menu/drilldown.html
+++ /dev/null
@@ -1,267 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>Menu Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.button.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
- <script type="text/javascript">
- $(function() {
- $.fn.themeswitcher && $('<div/>').css({
- position: "absolute",
- right: 10,
- top: 10
- }).appendTo(document.body).themeswitcher();
-
- $.widget("ui.drilldown", {
- _init: function() {
- var that = this;
- this.active = this.element.find(">ul").attr("tabindex", 0);
-
- // hide submenus and create indicator icons
- this.element.find("ul").hide().prev("a").prepend('<span class="ui-icon ui-icon-carat-1-e"></span>').end().filter(":first").show();
-
- this.element.find("ul").menu({
- // disable built-in key handling
- input: $(),
- focus: function(event, ui) {
- that.activeItem = ui.item;
- },
- select: function(event, ui) {
- if (this != that.active[0]) {
- return;
- }
- var nested = $(">ul", ui.item);
- if (nested.length) {
- that._open(nested);
- } else {
- that.element.find("h3").text(ui.item.text());
- that.options.select.apply(this, arguments);
- }
- }
- });
-
- this.back = this.element.children(":last").button({
- icons: {
- primary: "ui-icon-carat-1-w"
- }
- }).click(function() {
- that.up();
- return false;
- }).hide();
- },
-
- _open: function(submenu) {
- this.active = submenu.show().css({
- opacity: 0
- }).position({
- my: "left top",
- at: "right top",
- of: this.widget()
- }).position({
- my: "left top",
- at: "left top",
- of: this.widget(),
- using: function(to) {
- $(this).animate({
- left: to.left,
- top: to.top,
- opacity: 1
- });
- }
- });
- this.back.show();
- },
-
- up: function() {
- if (this.active.parent()[0] == this.element[0]) {
- return;
- }
- this.active.position({
- my: "left top",
- at: "right top",
- of: this.widget(),
- using: function(to) {
- $(this).animate({
- left: to.left,
- top: to.top,
- opacity: 0
- });
- }
- });
- this.active = this.active.parent().parent().show();
- this.activeItem = this.active.data("menu").active;
- if (!this.active.parent().parent().is(":ui-menu")) {
- this.back.hide();
- }
- },
-
- down: function(event) {
- var nested = this.activeItem.find(">ul");
- if (nested.length) {
- this._open(nested);
- nested.menu("focus", event, nested.children(":first"))
- }
- },
-
- show: function() {
- },
-
- hide: function() {
- },
-
- widget: function() {
- return this.element.find(">ul");
- }
- });
-
- var drilldown = $("#drilldown").drilldown({
- select: function(event, ui) {
- $("#log").append("<div>Selected " + ui.item.text() + "</div>");
- }
- });
-
- drilldown.drilldown("widget").keydown(function(event) {
- var menu = drilldown.data("drilldown").active.data("menu");
- if (menu.widget().is(":hidden"))
- return;
- event.stopPropagation();
- switch (event.keyCode) {
- case $.ui.keyCode.PAGE_UP:
- menu.previousPage();
- break;
- case $.ui.keyCode.PAGE_DOWN:
- menu.nextPage();
- break;
- case $.ui.keyCode.UP:
- menu.previous();
- break;
- case $.ui.keyCode.LEFT:
- drilldown.drilldown("up");
- break;
- case $.ui.keyCode.RIGHT:
- drilldown.drilldown("down");
- break;
- case $.ui.keyCode.DOWN:
- menu.next();
- event.preventDefault();
- break;
- case $.ui.keyCode.ENTER:
- case $.ui.keyCode.TAB:
- menu.select();
- drilldown.drilldown("hide");
- event.preventDefault();
- break;
- case $.ui.keyCode.ESCAPE:
- drilldown.drilldown("hide", event);
- break;
- default:
- clearTimeout(menu.filterTimer);
- var prev = menu.previousFilter || "";
- var character = String.fromCharCode(event.keyCode);
- var skip = false;
- if (character == prev) {
- skip = true;
- } else {
- character = prev + character;
- }
-
- var match = menu.widget().children("li").filter(function() {
- return new RegExp("^" + character, "i").test($("a", this).text());
- });
- var match = skip && match.index(menu.active.next()) != -1 ? match.next() : match;
- if (!match.length) {
- character = String.fromCharCode(event.keyCode);
- match = menu.widget().children("li").filter(function() {
- return new RegExp("^" + character, "i").test($(this).text());
- });
- }
- if (match.length) {
- menu.focus(event, match);
- if (match.length > 1) {
- menu.previousFilter = character;
- menu.filterTimer = setTimeout(function() {
- delete menu.previousFilter;
- }, 1000);
- } else {
- delete menu.previousFilter;
- }
- } else {
- delete menu.previousFilter;
- }
- }
- });
- });
- </script>
- <style>
- body { font-size:62.5%; }
- .ui-menu { width: 200px; height: 170px; }
- .ui-menu .ui-menu { position: absolute; }
- .ui-menu .ui-icon { float: right; }
- </style>
-</head>
-<body>
-
-<div id="drilldown">
- <h3>Make a selection...</h3>
- <ul>
- <li>
- <a href="#">Amsterdam</a>
- <ul>
- <li><a href="#">Aberdeen</a></li>
- <li><a href="#">Ada</a></li>
- <li>
- <a href="#">Adamsville</a>
- <ul>
- <li><a href="#">Anaheim</a></li>
- <li>
- <a href="#">Cologne</a>
- <ul>
- <li><a href="#">Mberdeen</a></li>
- <li><a href="#">Mda</a></li>
- <li><a href="#">Mdamsville</a></li>
- <li><a href="#">Mddyston</a></li>
- <li><a href="#">Mmesville</a></li>
- </ul>
- </li>
- <li><a href="#">Frankfurt</a></li>
- </ul>
- </li>
- <li><a href="#">Addyston</a></li>
- <li><a href="#">Amesville</a></li>
- </ul>
- </li>
- <li><a href="#">Anaheim</a></li>
- <li><a href="#">Cologne</a></li>
- <li><a href="#">Frankfurt</a></li>
- <li>
- <a href="#">Magdeburg</a>
- <ul>
- <li><a href="#">Mberdeen</a></li>
- <li><a href="#">Mda</a></li>
- <li><a href="#">Mdamsville</a></li>
- <li><a href="#">Mddyston</a></li>
- <li><a href="#">Mmesville</a></li>
- </ul>
- </li>
- <li><a href="#">Munich</a></li>
- <li><a href="#">Utrecht</a></li>
- <li><a href="#">Zurich</a></li>
- </ul>
- <a href="#">Go back</a>
-</div>
-
-<div class="ui-widget" style="clear: left; margin-top:2em; font-family:Arial">
- Log:
- <div id="log" style="height: 400px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
-</div>
-
-</body>
-</html>
diff --git a/tests/visual/menu/menu.html b/tests/visual/menu/menu.html
index 548f25db4..f92de61db 100644
--- a/tests/visual/menu/menu.html
+++ b/tests/visual/menu/menu.html
@@ -3,53 +3,30 @@
<head>
<meta charset="utf-8">
<title>Menu Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript">
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.position.js"></script>
+ <script src="../../../ui/jquery.ui.menu.js"></script>
+ <script>
$(function() {
- $.fn.themeswitcher && $('<div/>').css({
- position: "absolute",
- right: 10,
- top: 10
- }).appendTo(document.body).themeswitcher();
-
- function create() {
- menus.menu({
- select: function(event, ui) {
- $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
- }
- });
-
- $("#menu5").menu({
- select: function(event, ui) {
- $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
- },
- menus: "div"
- });
-
- $("#menu6").menu({
- select: function(event, ui) {
- $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
- },
- menus: ".menuElement"
- });
+ function logger( event, ui ) {
+ $( "<p>" ).text( "Selected: " + ui.item.text() ).appendTo( "#log" );
}
- var menus = $("#menu1, #menu2, #menu3, .menu4");
- create();
+ $( "#menu1, #menu2, #menu3, .menu4" ).menu({
+ select: logger
+ });
- $("#toggle-destroy").toggle(function() {
- menus.menu("destroy");
- }, create);
- $("#toggle-disable").toggle(function() {
- menus.menu("disable");
- }, function() {
- menus.menu("enable");
+ $( "#menu5" ).menu({
+ menus: "div",
+ select: logger
+ });
+
+ $( "#menu6" ).menu({
+ menus: ".menuElement",
+ select: logger
});
});
</script>
@@ -64,6 +41,7 @@
</head>
<body>
+<h2>Default inline menu</h2>
<ul id="menu1">
<li><a href="#">Aberdeen</a></li>
<li><a href="#">Ada</a></li>
@@ -74,6 +52,7 @@
<li><a href="#">Salzburg</a></li>
</ul>
+<h2>Inline with disabled items and submenus</h2>
<ul id="menu2">
<li class="ui-state-disabled"><a href="#">Aberdeen</a></li>
<li><a href="#">Ada</a></li>
@@ -114,6 +93,7 @@
<li class="ui-state-disabled"><a href="#">Amesville</a></li>
</ul>
+<h2>Menu with icons</h2>
<ul id="menu3">
<li><a href="#"><span class="ui-icon ui-icon-print"></span>Aberdeen</a></li>
<li class="ui-state-disabled"><a href="#"><span class="ui-icon ui-icon-scissors"></span>Ada</a></li>
@@ -152,6 +132,7 @@
</li>
</ul>
+<h2>Long menu with scroll overflow, to test menu's scroll-on-keypress behaviour</h2>
<ul class="menu4">
<li><a href="#">Aberdeen</a></li>
<li><a href="#">Ada</a></li>
@@ -193,6 +174,7 @@
<li><a href="#">Amesville</a></li>
</ul>
+<h2>Menu with custom markup</h2>
<div id="menu5">
<blockquote><a href="#">Aberdeen</a></blockquote>
<blockquote><a href="#">Ada</a></blockquote>
@@ -231,6 +213,7 @@
</blockquote>
</div>
+<h2>Menu with custom markup, multi-line items</h2>
<div class="menuElement" id="menu6">
<div class="address-item">
<a href="#">
@@ -274,13 +257,10 @@
</div>
</div>
-<div class="ui-widget" style="clear: left; margin-top:2em; font-family:Arial">
+<div style="position: absolute; top: 1em; right: 1em;">
Log:
- <div id="log" style="height: 400px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
+ <div id="log" style="height: 400px; width: 300px; overflow: auto; border: 1px solid #000;"></div>
</div>
-<button id="toggle-disable">Disable / Enable</button>
-<button id="toggle-destroy">Destroy / Create</button>
-
</body>
</html> \ No newline at end of file
diff --git a/tests/visual/menu/tablemenu.html b/tests/visual/menu/tablemenu.html
deleted file mode 100644
index ca4345aed..000000000
--- a/tests/visual/menu/tablemenu.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>Menu Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.menu.js"></script>
- <script type="text/javascript">
- $(function() {
- var table = $("table");
- var colgroup = table.find("colgroup");
- var menu = $("<ul>").insertAfter(table);
- var thead = table.find("thead");
- thead.children("tr").addClass("ui-state-default");
- var rows = table.find("tbody tr");
- $("<table>").width("100%").append(colgroup.clone()).append(thead).wrap("<li>").parent().appendTo(menu);
- rows.each(function() {
- $("<table>").width("100%").append(colgroup.clone()).append(this).wrap("<li><a></a></li>").parent().parent().appendTo(menu);
- });
-
- menu.menu({
- select: function(event, ui) {
- $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
- }
- });
- });
- </script>
- <style>
- body { font-size:62.5%; }
- .ui-menu { width: 200px; }
- </style>
-</head>
-<body>
-
-<table>
- <colgroup><col style="width: 50%"><col style="width: 50%"></colgroup>
- <thead>
- <tr>
- <th>Firstname</th>
- <th>Lastname</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Scott</td>
- <td>Gonzo</td>
- </tr>
- <tr>
- <td>Richy</td>
- <td>Worth</td>
- </tr>
- </tbody>
-</table>
-
-<div class="ui-widget" style="clear: left; margin-top:2em; font-family:Arial">
- Log:
- <div id="log" style="height: 400px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
-</div>
-
-<button id="toggle-disable">Disable / Enable</button>
-<button id="toggle-destroy">Destroy / Create</button>
-
-</body>
-</html>
diff --git a/tests/visual/position/position.html b/tests/visual/position/position.html
index 64c5d2300..545dc6993 100644
--- a/tests/visual/position/position.html
+++ b/tests/visual/position/position.html
@@ -1,91 +1,143 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
- <meta charset="UTF-8" />
- <title>Position Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript">
- $(function() {
- var inputs = $("input");
- $("ul").insertAfter(inputs);
- $(window).resize(function() {
- inputs.each(function() {
- var input = $(this).position({
- my: this.id.replace(/-/, " "),
- at: this.id.replace(/-/, " "),
- of: "#container",
- collision: "none"
- });
- var menu = $(this).next().menu()
- menu.position({
- my: "left+30 top+20",
- at: "left bottom",
- of: this,
- using: function( position, feedback ) {
- input.val(feedback.horizontal + " " + feedback.vertical)
- $(this).offset( position );
- $(this)
- .removeClass("left right top bottom center middle")
- .addClass(feedback.horizontal)
- .addClass(feedback.vertical);
- }
- });
- });
- }).resize();
- });
- </script>
+ <meta charset="utf-8">
+ <title>Position Visual Test</title>
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.mouse.js"></script>
+ <script src="../../../ui/jquery.ui.draggable.js"></script>
+ <script src="../../../ui/jquery.ui.position.js"></script>
<style>
- input, .ui-menu { position: absolute; }
- .ui-menu { width: 200px; }
- html, body { width: 99%; height: 99%; min-height:700px; min-width:700px; }
- #container { width: 95%; height: 95%; border: 1px solid black; margin: auto; }
- .ui-menu:before {
- font-size: 12pt;
- content: "↑";
- position: absolute;
- top: -22px;
- left: 5px;
+ .demo {
+ position: relative;
+ height: 500px;
+ width: 80%;
+ margin: 20px auto;
+ background: #eee;
}
- .right:before {
- left: auto;
- right: 5px;
+ #target {
+ width: 60%;
+ margin: 0 auto;
+ border: 1px solid #777;
+ background-color: #fbca93;
+ text-align: center;
+ cursor: move;
}
- .bottom:before {
- content: "↓";
- top: auto;
- bottom: -19px;
+ .positionable {
+ position: absolute;
+ background-color: #bcd5e6;
+ text-align: center;
+ }
+ .extra-margin {
+ margin: 0 15px 15px 0;
}
</style>
+ <script>
+ $(function() {
+ var within = $( ".demo" ),
+ positionable = $( ".positionable" );
+ function position() {
+ positionable.position({
+ of: $( "#target" ),
+ my: $( "#my_horizontal" ).val() + " " + $( "#my_vertical" ).val(),
+ at: $( "#at_horizontal" ).val() + " " + $( "#at_vertical" ).val(),
+ within: within,
+ collision: $( "#collision_horizontal" ).val() + " " + $( "#collision_vertical" ).val()
+ });
+ }
+
+ positionable.css( "opacity", 0.5 );
+
+ $( "#target" ).draggable({
+ drag: function() { position(); }
+ });
+
+ $( "#within" ).click(function() {
+ within = within.is( ".demo" ) ? $( window ) : $( ".demo" );
+ position();
+ });
+
+ $( "#margin" ).click(function() {
+ positionable.toggleClass( "extra-margin" );
+ position();
+ });
+
+ $( "select, input" ).bind( "click keyup change", function() { position(); } );
+
+ position();
+ });
+ </script>
</head>
<body>
-<div id="container"></div>
+<div class="demo">
+ <div id="target">
+ <p>This is the position target element.</p>
+ </div>
+
+ <div class="positionable" style="width: 75px; height: 75px;">
+ <p>to position</p>
+ </div>
-<input id="left-top" />
-<input id="left-center" />
-<input id="left-bottom" />
-<input id="center-top" />
-<input id="center-center" />
-<input id="center-bottom" />
-<input id="right-top" />
-<input id="right-center" />
-<input id="right-bottom" />
+ <div class="positionable" style="width:120px; height: 40px;">
+ <p>to position 2</p>
+ </div>
-<ul>
- <li><a href="#">Java</a></li>
- <li><a href="#">JavaScript</a></li>
- <li><a href="#">Perl</a></li>
- <li><a href="#">Ruby</a></li>
- <li><a href="#">C++</a></li>
- <li><a href="#">Python</a></li>
- <li><a href="#">C#</a></li>
-</ul>
+ <form style="padding: 20px; margin-top: 75px;">
+ <h2>Position configuration:</h2>
+ <div style="padding-bottom: 20px;">
+ <b>my:</b>
+ <select id="my_horizontal">
+ <option value="left">left</option>
+ <option value="center">center</option>
+ <option value="right" selected="selected">right</option>
+ </select>
+ <select id="my_vertical">
+ <option value="top">top</option>
+ <option value="middle">center</option>
+ <option value="bottom">bottom</option>
+ </select>
+ </div>
+ <div style="padding-bottom: 20px;">
+ <b>at:</b>
+ <select id="at_horizontal">
+ <option value="left">left</option>
+ <option value="center">center</option>
+ <option value="right" selected="selected">right</option>
+ </select>
+ <select id="at_vertical">
+ <option value="top">top</option>
+ <option value="middle">center</option>
+ <option value="bottom">bottom</option>
+ </select>
+ </div>
+ <div style="padding-bottom: 20px;">
+ <b>collision:</b>
+ <select id="collision_horizontal">
+ <option value="flip">flip</option>
+ <option value="fit">fit</option>
+ <option value="flipfit">flipfit</option>
+ <option value="none">none</option>
+ </select>
+ <select id="collision_vertical">
+ <option value="flip">flip</option>
+ <option value="fit">fit</option>
+ <option value="flipfit">flipfit</option>
+ <option value="none">none</option>
+ </select>
+ </div>
+ <div>
+ <label for="within">within:</label>
+ <input id="within" type="checkbox" checked="checked">
+ </div>
+ <div>
+ <label for="margin">extra margin:</label>
+ <input id="margin" type="checkbox">
+ </div>
+ </form>
+</div>
</body>
</html>
diff --git a/tests/visual/position/position_feedback.html b/tests/visual/position/position_feedback.html
index 006a1be02..bea1dd2c2 100644
--- a/tests/visual/position/position_feedback.html
+++ b/tests/visual/position/position_feedback.html
@@ -2,8 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Position Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css">
+ <title>Position Visual Test: Feedback</title>
<link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
<script src="../../../jquery-1.7.2.js"></script>
<script src="../../../ui/jquery.ui.core.js"></script>
@@ -86,6 +85,7 @@
width: 75px;
height: 25px;
padding: 5px;
+ font-size: 62.5%;
}
#target {
height: 75px;
diff --git a/tests/visual/position/position_feedback_rotate.html b/tests/visual/position/position_feedback_rotate.html
deleted file mode 100644
index 11138b112..000000000
--- a/tests/visual/position/position_feedback_rotate.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <title>Position Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css">
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
- <script src="../../../jquery-1.7.2.js"></script>
- <script src="../../../ui/jquery.ui.core.js"></script>
- <script src="../../../ui/jquery.ui.widget.js"></script>
- <script src="../../../ui/jquery.ui.position.js"></script>
- <script src="../../../ui/jquery.ui.menu.js"></script>
- <script>
- $(function() {
- function using( position, feedback ) {
- var angleRad = Math.atan2(
- feedback.target.top + feedback.target.height / 2 - feedback.element.top - feedback.element.height / 2,
- feedback.target.left + feedback.target.width / 2 - feedback.element.left - feedback.element.width / 2
- ) * 180 / Math.PI,
- angle = Math.round( angleRad * 100) / 100;
- $( this )
- .css( position )
- .text( feedback.horizontal + " " + feedback.vertical + " " + feedback.important + " " + angle + "°" )
- .css({
- "-webkit-transform": "rotate(" + angle + "deg)",
- "-moz-transform": "rotate(" + angle + "deg)",
- "-ms-transform": "rotate(" + angle + "deg)",
- "-o-transform": "rotate(" + angle + "deg)",
- "transform": "rotate(" + angle + "deg)"
- });
- }
-
- var element = $( ".element" ),
- target = $( "#target" ).position({
- my: "center",
- at: "center",
- of: window
- }),
- targetOffset = target.offset();
- oppositeElement = element.clone().width( 50 ).appendTo( "body" ),
- leftElement = element.clone().width( 50 ).height( 150 ).appendTo( "body" ),
- rightElement = element.clone().height( 150 ).width( 150 ).appendTo( "body" );
-
- $.each([
- "center top-100",
- "right+25 top-50",
- "right+75 top",
- "right+75 center",
- "right+75 bottom",
- "right+25 bottom+50",
- "center bottom+100",
- "left-25 bottom+50",
- "left-75 bottom",
- "left-75 center",
- "left-75 top",
- "left-25 top-50"
- ], function( index, direction ) {
- element.clone().insertAfter( target ).position({
- my: "center",
- at: direction,
- of: target,
- using: using
- });
- });
-
- element.width( 150 );
- $( document ).on( "mousemove", function( event ) {
- var base = {
- my: "left top",
- at: "left top",
- of: target,
- using: using
- };
- element.position( $.extend({
- offset: (event.pageX - targetOffset.left) + " " + (event.pageY - targetOffset.top)
- }, base ));
- oppositeElement.position( $.extend({
- offset: (-1 * (event.pageX - targetOffset.left)) + " " + (-1 * (event.pageY - targetOffset.top))
- }, base ));
- leftElement.position( $.extend({
- offset: (-0.9 * (event.pageX - targetOffset.left)) + " " + (0.9 * (event.pageY - targetOffset.top))
- }, base ));
- rightElement.position( $.extend({
- offset: (0.9 * (event.pageX - targetOffset.left)) + " " + (-0.9 * (event.pageY - targetOffset.top))
- }, base ));
- });
- });
- </script>
- <style>
- #target, .element {
- position: absolute;
- border: 1px solid black;
- border-radius: 5px;
- width: 75px;
- height: 25px;
- padding: 5px;
- }
- #target {
- height: 75px;
- }
- </style>
-</head>
-<body>
-
-<div id="target">all around me</div>
-<div class="element"></div>
-
-</body>
-</html>
diff --git a/tests/visual/position/position_fit.html b/tests/visual/position/position_fit.html
deleted file mode 100644
index a70423c79..000000000
--- a/tests/visual/position/position_fit.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Position Visual Test: Fit</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript">
- $(function() {
- var inputs = $("input");
- $("ul").insertAfter(inputs);
- inputs.each(function(index) {
- $(this).position({
- my: $(this).data("position"),
- at: $(this).data("position"),
- of: "#container"+index,
- collision: "none"
- });
- if(index < 3) {
- $(this).next().menu().position({
- my: "left top",
- at: "left bottom",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- if(index >= 3 && index < 6) {
- $(this).next().menu().position({
- my: "right top",
- at: "right bottom",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- if(index >= 6 && index < 9) {
- $(this).next().menu().position({
- my: "center top",
- at: "center bottom",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- if(index >= 9 && index < 12) {
- $(this).next().menu().position({
- my: "left top",
- at: "left bottom",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- if(index >= 12 && index < 15) {
- $(this).next().menu().position({
- my: "center center",
- at: "center center",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- if(index >= 15) {
- $(this).next().menu().position({
- my: "left bottom",
- at: "left top",
- of: this,
- within: "#container"+index,
- collision: "fit"
- });
- }
- });
- });
- </script>
- <style>
- input, .ui-menu { position: absolute; }
- .ui-menu { width: 300px; }
- #ui-menu-9, #ui-menu-10, #ui-menu-11, #ui-menu-12, #ui-menu-13, #ui-menu-14, #ui-menu-15, #ui-menu-16, #ui-menu-17 { width: auto; }
- html, body { width: 99%; height: 99%; min-height:700px; min-width:700px; }
- .container { width: 200px; height: 200px; border: 1px solid black; display:inline-block; margin-left: 230px; margin-top: 15px; margin-bottom: 135px; }
- .container2 { width: 200px; height: 100px; border: 1px solid black; display:inline-block; margin-left: 230px; margin-top: 15px; margin-bottom: 135px; }
- </style>
-</head>
-<body>
-
-<div id="container0" class="container"></div>
-<div id="container1" class="container"></div>
-<div id="container2" class="container"></div>
-<div style="clear:both;"></div>
-<div id="container3" class="container"></div>
-<div id="container4" class="container"></div>
-<div id="container5" class="container"></div>
-<div style="clear:both;"></div>
-<div id="container6" class="container"></div>
-<div id="container7" class="container"></div>
-<div id="container8" class="container"></div>
-<div style="clear:both;"></div>
-<div id="container9" class="container2"></div>
-<div id="container10" class="container2"></div>
-<div id="container11" class="container2"></div>
-<div style="clear:both;"></div>
-<div id="container12" class="container2"></div>
-<div id="container13" class="container2"></div>
-<div id="container14" class="container2"></div>
-<div style="clear:both;"></div>
-<div id="container15" class="container2"></div>
-<div id="container16" class="container2"></div>
-<div id="container17" class="container2"></div>
-
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-
-<input data-position="left top" />
-<input data-position="center center" />
-<input data-position="right bottom" />
-<input data-position="left top" />
-<input data-position="center center" />
-<input data-position="right bottom" />
-<input data-position="left top" />
-<input data-position="center center" />
-<input data-position="right bottom" />
-
-<ul>
- <li><a href="#">Java</a></li>
- <li><a href="#">JavaScript</a></li>
- <li><a href="#">Perl</a></li>
- <li><a href="#">Ruby</a></li>
- <li><a href="#">C++</a></li>
- <li><a href="#">Python</a></li>
- <li><a href="#">C#</a></li>
-</ul>
-
-</body>
-</html>
diff --git a/tests/visual/position/position_flip.html b/tests/visual/position/position_flip.html
deleted file mode 100644
index b67c76fb3..000000000
--- a/tests/visual/position/position_flip.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Position Visual Test: Flip</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript">
- $(function() {
- var inputs = $("input");
- $("ul").insertAfter(inputs);
- inputs.each(function(index) {
- $(this).position({
- my: $(this).data("position"),
- at: $(this).data("position"),
- of: "#container"+index,
- collision: "none"
- });
- $(this).next().menu().position({
- my: "left top",
- at: "left bottom",
- of: this,
- within: "#container"+index
- });
- });
- });
- </script>
- <style>
- input, .ui-menu { position: absolute; }
- .ui-menu { width: 300px; }
- #ui-menu-6, #ui-menu-7, #ui-menu-8 { width: auto; }
- html, body { width: 99%; height: 99%; min-height:700px; min-width:700px; }
- .container { width: 200px; height: 200px; border: 1px solid black; display:inline-block; margin-left: 230px; margin-top: 150px; }
- </style>
-</head>
-<body>
-
-<div id="container0" class="container"></div>
-<div id="container1" class="container"></div>
-<div id="container2" class="container"></div><br>
-<div style="clear:both;"></div>
-<div id="container3" class="container" style="width:300px;"></div>
-<div id="container4" class="container" style="width:300px;"></div>
-<div id="container5" class="container" style="width:300px;"></div>
-<div style="clear:both;"></div>
-<div id="container6" class="container" style="height:100px; margin-bottom: 500px;"></div>
-<div id="container7" class="container" style="height:100px; margin-bottom: 500px;"></div>
-<div id="container8" class="container" style="height:100px; margin-bottom: 500px;"></div>
-
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-<input data-position="left center" />
-<input data-position="center center" />
-<input data-position="right center" />
-<input data-position="left bottom" />
-<input data-position="center center" />
-<input data-position="right bottom" />
-
-<ul>
- <li><a href="#">Java</a></li>
- <li><a href="#">JavaScript</a></li>
- <li><a href="#">Perl</a></li>
- <li><a href="#">Ruby</a></li>
- <li><a href="#">C++</a></li>
- <li><a href="#">Python</a></li>
- <li><a href="#">C#</a></li>
-</ul>
-
-</body>
-</html>
diff --git a/tests/visual/position/position_flipfit.html b/tests/visual/position/position_flipfit.html
deleted file mode 100644
index 840dd5868..000000000
--- a/tests/visual/position/position_flipfit.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Position Visual Test: FlipFit</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
- <script type="text/javascript">
- $(function() {
- var inputs = $("input");
- $("ul").insertAfter(inputs);
- inputs.each(function(index) {
- $(this).position({
- my: $(this).data("position"),
- at: $(this).data("position"),
- of: "#container"+index,
- collision: "none"
- });
- $(this).next().menu().position({
- my: index > 2 && index < 6 ? "right top" : "left top",
- at: index > 2 && index < 6 ? "right bottom" : "left bottom",
- of: this,
- within: "#container"+index,
- collision: "flipfit"
- });
- });
- });
- </script>
- <style>
- input, .ui-menu { position: absolute; }
- .ui-menu { width: 300px; }
- #ui-menu-3, #ui-menu-4, #ui-menu-5 { width: 185px; }
- #ui-menu-9, #ui-menu-10, #ui-menu-11 { width: auto; }
- html, body { width: 99%; height: 99%; min-height:700px; min-width:700px; }
- .container { width: 200px; height: 200px; border: 1px solid black; display:inline-block; margin-left: 230px; margin-top: 150px; }
- </style>
-</head>
-<body>
-
-<div id="container0" class="container"></div>
-<div id="container1" class="container"></div>
-<div id="container2" class="container"></div><br>
-<div style="clear:both;"></div>
-<div id="container3" class="container"></div>
-<div id="container4" class="container"></div>
-<div id="container5" class="container"></div><br>
-<div style="clear:both;"></div>
-<div id="container6" class="container" style="width:300px;"></div>
-<div id="container7" class="container" style="width:300px;"></div>
-<div id="container8" class="container" style="width:300px;"></div>
-<div style="clear:both;"></div>
-<div id="container9" class="container" style="height:100px; margin-bottom: 500px;"></div>
-<div id="container10" class="container" style="height:100px; margin-bottom: 500px;"></div>
-<div id="container11" class="container" style="height:100px; margin-bottom: 500px;"></div>
-
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-<input data-position="left top" />
-<input data-position="center top" />
-<input data-position="right top" />
-<input data-position="left center" />
-<input data-position="center center" />
-<input data-position="right center" />
-<input data-position="left bottom" />
-<input data-position="center center" />
-<input data-position="right bottom" />
-
-<ul>
- <li><a href="#">Java</a></li>
- <li><a href="#">JavaScript</a></li>
- <li><a href="#">Perl</a></li>
- <li><a href="#">Ruby</a></li>
- <li><a href="#">C++</a></li>
- <li><a href="#">Python</a></li>
- <li><a href="#">C#</a></li>
-</ul>
-
-</body>
-</html>
diff --git a/tests/visual/position/position_margin.html b/tests/visual/position/position_margin.html
deleted file mode 100644
index 2e3b63266..000000000
--- a/tests/visual/position/position_margin.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8" />
- <title>Position Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript">
- $(function() {
- $( "#elem" ).position({
- my: "right bottom",
- at: "right bottom",
- of: window,
- collision: "fit"
- });
- });
- </script>
- <style>
- #elem {
- position: absolute;
- top: 100px;
- left: 100px;
- width: 200px;
- height: 200px;
- box-shadow: 10px 10px 5px #888;
- -moz-box-shadow: 10px 10px 5px #888;
- -webkit-box-shadow: 10px 10px 5px #888;
- background-color: #aaa;
- margin: 15px;
- }
- </style>
-</head>
-<body>
-
-<div id="elem"></div>
-
-</body>
-</html>
diff --git a/tests/visual/position/position_within.html b/tests/visual/position/position_within.html
deleted file mode 100644
index 692cb1067..000000000
--- a/tests/visual/position/position_within.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <title>Position Visual Test: Containing Element</title>
-
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
-
- <script src="../../../jquery-1.7.2.js"></script>
- <script src="../../../ui/jquery.ui.core.js"></script>
- <script src="../../../ui/jquery.ui.widget.js"></script>
- <script src="../../../ui/jquery.ui.mouse.js"></script>
- <script src="../../../ui/jquery.ui.draggable.js"></script>
- <script src="../../../ui/jquery.ui.position.js"></script>
-
- <style>
- html, body {
- height:100%;
- width:100%;
- margin:0;
- /* force scroll bar*/
- min-height:800px;
- min-width:800px;
-
- /* IE6 needs this */
- text-align:center;
- }
- .demo-description {
- text-align:center;
- padding:1.5em;
- }
- .demo-container {
- background:#aaa;
- width:80%;
- height:80%;
-
- text-align:left;
- margin:0 auto;
- position:relative;
- padding:10px;
- }
- .demo {
- background:#eee;
- overflow:hidden;
- position:relative;
- height:100%;
- /* IE6 needs this */
- width:100%;
- }
- #parent {
- width: 60%;
- margin: 10px auto;
- padding: 5px;
- border: 1px solid #777;
- background-color: #fbca93;
- text-align: center;
- cursor:move;
- }
- .positionable {
- width: 75px;
- height: 75px;
- position: absolute;
- display: block;
- right: 0;
- bottom: 0;
- background-color: #bcd5e6;
- text-align: center;
- cursor:move;
- }
- .ui-flipped-top {
- border-top: 3px solid #000000;
- }
- .ui-flipped-bottom {
- border-bottom: 3px solid #000000;
- }
- .ui-flipped-left {
- border-left: 3px solid #000000;
- }
- .ui-flipped-right {
- border-right: 3px solid #000000;
- }
- select, input {
- margin-left: 15px;
- }
- </style>
- <script>
- $(function() {
- function position( using ) {
- $( ".positionable" ).position({
- of: $( "#parent" ),
- my: $( "#my_horizontal" ).val() + " " + $( "#my_vertical" ).val(),
- at: $( "#at_horizontal" ).val() + " " + $( "#at_vertical" ).val(),
- offset: $( "#offset" ).val(),
- using: using,
- within: $( ".demo" ),
- collision: $( "#collision_horizontal" ).val() + " " + $( "#collision_vertical" ).val()
- });
- }
- $( ".demo" ).css("overflow","scroll");
-
- $( ".positionable" ).css( "opacity", 0.5 );
-
- $( ":input" ).bind( "click keyup change", function() { position(); } );
-
- $( "#parent" ).draggable({
- drag: function() { position(); }
- });
-
- $( ".positionable" ).draggable({
- drag: function( event, ui ) {
- // reset offset before calculating it
- $( "#offset" ).val( "0" );
- position(function( result ) {
- var demo = $( ".demo" );
- $( "#offset" ).val( "" + ( ui.offset.left - result.left - demo.offset().left + demo.scrollLeft() ) +
- " " + ( ui.offset.top - result.top - demo.offset().top + demo.scrollTop() ) );
- position();
- });
- }
- });
-
- position();
- });
- </script>
-</head>
-<body>
-
-<div class="demo-description">
- Use the form controls to configure the positioning, or drag the positioned element to modify its offset.
- <br/>Drag around the parent element to see collision detection in action.
-</div><!-- End demo-description -->
-
-<div class="demo-container">
-<div class="demo">
-
- <div id="parent">
- <p>This is the position parent element.</p>
- </div>
-
- <div class="positionable">
- <p>to position</p>
- </div>
-
- <div class="positionable" style="width:120px; height: 40px;">
- <p>to position 2</p>
- </div>
-
- <div style="padding: 20px; margin-top: 75px;">
- position...
- <div style="padding-bottom: 20px;">
- <b>my:</b>
- <select id="my_horizontal">
- <option value="left">left</option>
- <option value="center">center</option>
- <option value="right" selected="selected">right</option>
- </select>
- <select id="my_vertical">
- <option value="top">top</option>
- <option value="middle">center</option>
- <option value="bottom">bottom</option>
- </select>
- </div>
- <div style="padding-bottom: 20px;">
- <b>at:</b>
- <select id="at_horizontal">
- <option value="left">left</option>
- <option value="center">center</option>
- <option value="right" selected="selected">right</option>
- </select>
- <select id="at_vertical">
- <option value="top">top</option>
- <option value="middle">center</option>
- <option value="bottom">bottom</option>
- </select>
- </div>
- <div style="padding-bottom: 20px;">
- <b>offset:</b>
- <input id="offset" type="text" size="15"/>
- </div>
- <div style="padding-bottom: 20px;">
- <b>collision:</b>
- <select id="collision_horizontal">
- <option value="flip">flip</option>
- <option value="fit">fit</option>
- <option value="none">none</option>
- </select>
- <select id="collision_vertical">
- <option value="flip">flip</option>
- <option value="fit">fit</option>
- <option value="none">none</option>
- </select>
- </div>
- </div>
-
-</div><!-- End demo -->
-</div>
-
-</body>
-</html>
diff --git a/tests/visual/tooltip/ajaxcontent.php b/tests/visual/tooltip/ajaxcontent.php
deleted file mode 100644
index a689a734d..000000000
--- a/tests/visual/tooltip/ajaxcontent.php
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php sleep(1); ?>
-<strong>Hello</strong> world! \ No newline at end of file
diff --git a/tests/visual/tooltip/animations.html b/tests/visual/tooltip/animations.html
index 38ee28f1d..24fe02905 100644
--- a/tests/visual/tooltip/animations.html
+++ b/tests/visual/tooltip/animations.html
@@ -1,73 +1,73 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Tooltip Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.button.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.tooltip.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.effects.core.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.effects.blind.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.effects.bounce.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.effects.drop.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.effects.explode.js"></script>
- <!--
- <script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
- -->
- <script type="text/javascript">
+ <title>Tooltip Visual Test: Animations</title>
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.position.js"></script>
+ <script src="../../../ui/jquery.ui.tooltip.js"></script>
+ <script src="../../../ui/jquery.effects.core.js"></script>
+ <script src="../../../ui/jquery.effects.blind.js"></script>
+ <script src="../../../ui/jquery.effects.bounce.js"></script>
+ <script src="../../../ui/jquery.effects.drop.js"></script>
+ <script src="../../../ui/jquery.effects.explode.js"></script>
+ <style>
+ pre {
+ width: 250px;
+ border: 1px solid #000;
+ padding: .5em;
+ }
+ </style>
+ <script>
$(function() {
- var animations = [{}, {
- show: {
- effect: "slideDown"
- },
- hide: {
- effect: "slideUp"
- }
- }, {
- show: {
- effect: "explode"
- },
- hide: {
- effect: "explode"
- }
- }, {
- show: {
- effect: "bounce"
- },
- hide: {
- effect: "blind"
- }
- },
- {
- show: {
- effect: "drop",
- direction: "right"
- },
- hide: {
- effect: "drop",
- direction: "right"
- }
- }];
- $.each(animations, function(index, animation) {
- var text = JSON.stringify(animation);
- $("<span></span>").attr("title", text).text(text).tooltip({
- show: animation.show,
- hide: animation.hide
- }).wrap("<li></li>").parent().appendTo("ul");
+ $( "pre" ).each(function( index, elem ) {
+ $( elem )
+ .attr( "title", "animated tooltips" )
+ .tooltip( $.parseJSON( $( elem ).text() ) );
});
});
</script>
</head>
<body>
-<div style="width:300px">
- <ul class="ui-widget ui-widget-header">
- </ul>
-</div>
+<pre>{}</pre>
+<pre>{
+ "show": {
+ "effect": "slideDown"
+ },
+ "hide": {
+ "effect": "slideUp"
+ }
+}</pre>
+<pre>{
+ "show": {
+ "effect": "explode"
+ },
+ "hide": {
+ "effect": "explode"
+ }
+}</pre>
+<pre>{
+ "show": {
+ "effect": "bounce"
+ },
+ "hide": {
+ "effect": "blind"
+ }
+}</pre>
+<pre>{
+ "show": {
+ "effect": "drop",
+ "direction": "right"
+ },
+ "hide": {
+ "effect": "drop",
+ "direction": "right"
+ }
+}</pre>
+
</body>
</html>
diff --git a/tests/visual/tooltip/tooltip.html b/tests/visual/tooltip/tooltip.html
index da811645c..e0ff27aa8 100644
--- a/tests/visual/tooltip/tooltip.html
+++ b/tests/visual/tooltip/tooltip.html
@@ -1,121 +1,104 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Tooltip Visual Test: Default</title>
- <link rel="stylesheet" href="../visual.css" type="text/css" />
- <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
- <script type="text/javascript" src="../../../jquery-1.7.2.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.position.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.button.js"></script>
- <script type="text/javascript" src="../../../ui/jquery.ui.tooltip.js"></script>
- <!--
- <script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
- -->
- <script type="text/javascript">
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
+ <script src="../../../jquery-1.7.2.js"></script>
+ <script src="../../../ui/jquery.ui.core.js"></script>
+ <script src="../../../ui/jquery.ui.widget.js"></script>
+ <script src="../../../ui/jquery.ui.position.js"></script>
+ <script src="../../../ui/jquery.ui.button.js"></script>
+ <script src="../../../ui/jquery.ui.tooltip.js"></script>
+ <style>
+ .group {
+ margin-top: 2em;
+ }
+ </style>
+ <script>
$(function() {
- $.fn.themeswitcher && $('<div/>').css({
- position: "absolute",
- right: 10,
- top: 10
- }).appendTo(document.body).themeswitcher();
-
- function enable() {
- // default
- $("#context1, form, #childish, #nested-input").tooltip();
-
- // custom class, replaces ui-widget-content
- $("#context2").tooltip({
- tooltipClass: "ui-widget-header"
- });
- $("#right1").tooltip({
- tooltipClass: "ui-state-error"
- });
-
- // synchronous content
- $("#footnotes").tooltip({
- items: "[href^='#']",
- content: function() {
- return $($(this).attr("href")).html();
- }
- });
- // asynchronous content
- $("#ajax").tooltip({
- content: function(response) {
- $.get("ajaxcontent.php", response);
- return "Loading...";
- }
- });
- // asynchronous content with caching
- var content;
- $("#ajax2").tooltip({
- content: function(response) {
- if (content) {
- return content;
- }
- $.ajax({
- url: "ajaxcontent.php",
- cache: false,
- success: function(result) {
- content = result;
- response(result);
- }
- });
- return "Loading...";
- }
- });
-
- // custom position
- $("#right2").tooltip({
- tooltipClass: "ui-state-highlight",
- position: {
- my: "center top",
- at: "center bottom",
- offset: "0 10"
- }
- });
+ // default
+ $( "#context1, form, #childish, #nested-input" ).tooltip();
- $("#button1").button();
- $("#button2").button({
- icons: {
- primary: "ui-icon-wrench"
- }
- });
- $("#button3, #button4").button({
- icons: {
- primary: "ui-icon-wrench"
- },
- text: false
- });
- $("#buttons").tooltip({
- position: {
- my: "center bottom",
- at: "center top",
- offset: "0 -5"
+ // custom class, replaces ui-widget-content
+ $( "#context2" ).tooltip({
+ tooltipClass: "ui-widget-header"
+ });
+ $( "#right1" ).tooltip({
+ tooltipClass: "ui-state-error"
+ });
+
+ // synchronous content
+ $( "#footnotes" ).tooltip({
+ items: "[href^='#']",
+ content: function() {
+ return $( $( this ).attr( "href" ) ).html();
+ }
+ });
+
+ // asynchronous content
+ $( "#async" ).tooltip({
+ content: function( response ) {
+ setTimeout(function() {
+ response( "I loaded <strong>asyncrhonously</strong>!" );
+ }, 1000 );
+ return "Loading...";
+ }
+ });
+
+ // asynchronous content with caching
+ var content;
+ $( "#async2" ).tooltip({
+ content: function( response ) {
+ if ( content ) {
+ return content;
}
- });
- }
- enable();
-
- $("#disable").toggle(function() {
- $(":ui-tooltip").tooltip("disable");
- }, function() {
- $(":ui-tooltip").tooltip("enable");
+ setTimeout(function() {
+ content = "<strong>Hello</strong> world!";
+ response( content );
+ }, 1000 );
+ return "Loading...";
+ }
+ });
+
+ // custom position
+ $( "#right2" ).tooltip({
+ tooltipClass: "ui-state-highlight",
+ position: {
+ my: "center top",
+ at: "center bottom",
+ offset: "0 10"
+ }
+ });
+
+ $( "#button1" ).button();
+ $( "#button2" ).button({
+ icons: {
+ primary: "ui-icon-wrench"
+ }
+ });
+ $( "#button3, #button4" ).button({
+ icons: {
+ primary: "ui-icon-wrench"
+ },
+ text: false
});
- $("#toggle").toggle(function() {
- $(":ui-tooltip").tooltip("destroy");
- }, function() {
- enable();
+ $( "#buttons" ).tooltip({
+ position: {
+ my: "center bottom",
+ at: "center top",
+ offset: "0 -5"
+ }
});
});
</script>
</head>
<body>
-<div style="width:300px">
- <ul id="context1" class="ui-widget ui-widget-header">
+<div>
+ <p>Lots of tooltipped elements close together.<br>
+ Mouse through them quickly and slowly.</p>
+ <ul id="context1">
<li><a href="#" title="Tooltip text 1">Anchor 1</a></li>
<li><a href="#" title="Tooltip text 2">Anchor 2</a></li>
<li><a href="#" title="Tooltip text 3">Anchor 3</a></li>
@@ -124,68 +107,83 @@
<li><a href="#" title="Tooltip text 6 more Tooltip text Tooltip text ">Anchor 6</a></li>
</ul>
- <div id="right1" style="position: absolute; right: 1em" title="right aligned element">
- collision detection should kick in around here
- </div>
-
- <div id="footnotes" style="margin: 2em 0">
- <a href="#footnote1">I'm a link to a footnote.</a>
- <a href="#footnote2">I'm another link to a footnote.</a>
+ <div class="group" style="position: absolute; right: 1em; text-align: right;">
+ <p>These elements are right aligned.<br>
+ One collides and one uses custom position.</p>
+ <p id="right1" title="right aligned element">
+ collision detection should kick in around here
+ </p>
+ <p id="right2" title="right aligned element with custom position">
+ right aligned with custom position
+ </p>
</div>
- <div id="right2" style="position: absolute; right: 1em" title="right aligned element with custom position">
- right aligned with custom position
- </div>
-
- <div id="ajax" style="width: 100px;" class="ui-widget-content" title="never be seen">
- gets its content via ajax
- </div>
- <div id="ajax2" style="width: 100px;" class="ui-widget-content" title="never be seen">
- gets its content via ajax, caches the response
+ <div class="group">
+ <p>These footnotes pull content form the elements they link to.</p>
+ <div id="footnotes">
+ <a href="#footnote1">I'm a link to a footnote.</a>
+ <a href="#footnote2">I'm another link to a footnote.</a>
+ </div>
</div>
- <div id="context2" class="ui-widget ui-widget-content">
- <span title="something" style="border:1px solid blue">span</span>
- <div title="something else" style="border:1px solid red;">
- div
- <span title="something more" style="border:1px solid green;">nested span</span>
+ <div class="group">
+ <p>These elements load their content asynchronously.<br>
+ There should be a loading message while the content is retrieved.</p>
+ <div id="async" style="width: 100px;" class="ui-widget-content" title="never be seen">
+ async
+ </div>
+ <div id="async2" style="width: 100px;" class="ui-widget-content" title="never be seen">
+ async + cache
</div>
</div>
- <div id="childish" class="ui-widget ui-widget-content" style="margin: 2em 0; border: 1px solid black;" title="element with child elements">
- Text in <strong>bold</strong>.
+ <div class="group" style="width: 300px;">
+ <p>Nested elements.</p>
+ <div id="context2">
+ <div title="something else" style="border:1px solid red;">
+ tooltipped
+ <span title="something more" style="border:1px solid green; padding-left: 50px;">nested tooltipped</span>
+ </div>
+ </div>
+ <div id="childish" style="border: 1px solid black;" title="element with child elements">
+ Text in <strong>bold</strong>.
+ </div>
</div>
- <form style="margin: 2em 0;">
- <div>
- <label for="first">First Name:</label>
- <input id="first" title="Your first name is optional" />
- </div>
- <div>
- <label for="last">Last Name:</label>
- <input id="last" title="Your last name is optional" />
+ <div class="group">
+ <p>Play around with focusing and hovering of form elements.</p>
+ <form>
+ <div>
+ <label for="first">First Name:</label>
+ <input id="first" title="Your first name is optional">
+ </div>
+ <div>
+ <label for="last">Last Name:</label>
+ <input id="last" title="Your last name is optional">
+ </div>
+ </form>
+
+ <p>Some inputs nested inside labels:</p>
+ <div id="nested-input">
+ <label title="test"><input type="checkbox">This is a test</label>
+ <label title="test2"><input type="checkbox">This is a test</label>
+ <label><input type="checkbox" title="test3">This is a test</label>
+ <label><input type="checkbox" title="test4">This is a test</label>
</div>
- </form>
- <div id="nested-input">
- <label title="test"><input type="checkbox">This is a test</label>
- <label title="test2"><input type="checkbox">This is a test</label>
- <label><input type="checkbox" title="test3">This is a test</label>
- <label><input type="checkbox" title="test4">This is a test</label>
+ <p>Some button widgets:</p>
+ <div id="buttons">
+ <button id="button1" title="Button Tooltip">Button Label</button>
+ <button id="button2" title="Icon Button">Button with Icon</button>
+ <button id="button3">Icon Only Button 1</button>
+ <button id="button4">Icon Only Button 2</button>
+ </div>
</div>
- <div id="buttons">
- <button id="button1" title="Button Tooltip">Button Label</button>
- <button id="button2" title="Icon Button">Button with Icon</button>
- <button id="button3">Icon Only Button 1</button>
- <button id="button4">Icon Only Button 2</button>
+ <div class="group">
+ <div id="footnote1">This is <strong>the</strong> footnote, including other elements</div>
+ <div id="footnote2">This is <strong>the other</strong> footnote, including other elements</div>
</div>
-
- <div id="footnote1">This is <strong>the</strong> footnote, including other elements</div>
- <div id="footnote2">This is <strong>the other</strong> footnote, including other elements</div>
-
- <button id="disable">Toggle disabled</button>
- <button id="toggle">Toggle widget</button>
</div>
<div style="height: 2000px"></div>
diff --git a/themes/base/jquery.ui.accordion.css b/themes/base/jquery.ui.accordion.css
index c9532a87f..32c1a7242 100644
--- a/themes/base/jquery.ui.accordion.css
+++ b/themes/base/jquery.ui.accordion.css
@@ -12,5 +12,4 @@
.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
diff --git a/ui/i18n/jquery.ui.datepicker-eu.js b/ui/i18n/jquery.ui.datepicker-eu.js
index 4c40eebec..846ce3abc 100644
--- a/ui/i18n/jquery.ui.datepicker-eu.js
+++ b/ui/i18n/jquery.ui.datepicker-eu.js
@@ -6,15 +6,15 @@ jQuery(function($){
prevText: '&#x3C;Aur',
nextText: 'Hur&#x3E;',
currentText: 'Gaur',
- monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina',
- 'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
- monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka',
- 'Uzt','Abu','Ira','Urr','Aza','Abe'],
- dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],
- dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],
- dayNamesMin: ['Ig','As','As','As','Os','Os','La'],
- weekHeader: 'Wk',
- dateFormat: 'yy/mm/dd',
+ monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+ 'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+ monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+ 'uzt.','abu.','ira.','urr.','aza.','abe.'],
+ dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+ dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+ dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+ weekHeader: 'As',
+ dateFormat: 'yy-mm-dd',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
diff --git a/ui/jquery.effects.core.js b/ui/jquery.effects.core.js
index fe2bf298d..1bb1415a9 100644
--- a/ui/jquery.effects.core.js
+++ b/ui/jquery.effects.core.js
@@ -54,27 +54,27 @@ function getRGB(color) {
}
// Look for rgb(num,num,num)
- if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) {
+ if ( (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) ) {
return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
}
// Look for rgb(num%,num%,num%)
- if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) {
+ if ( (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) ) {
return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
}
// Look for #a0b1c2
- if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) {
+ if ( (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) ) {
return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
}
// Look for #fff
- if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) {
+ if ( (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) ) {
return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
}
// Look for rgba(0, 0, 0, 0) == transparent in Safari 3
- if (result = /rgba\(0, 0, 0, 0\)/.exec(color)) {
+ if ( (result = /rgba\(0, 0, 0, 0\)/.exec(color)) ) {
return colors.transparent;
}
@@ -94,7 +94,7 @@ function getColor(elem, attr) {
}
attr = "backgroundColor";
- } while ( elem = elem.parentNode );
+ } while ( (elem = elem.parentNode) );
return getRGB(color);
}
diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js
index fe1771bc8..f713d25b8 100644
--- a/ui/jquery.ui.accordion.js
+++ b/ui/jquery.ui.accordion.js
@@ -63,7 +63,8 @@ $.widget( "ui.accordion", {
this._focusable( this.headers );
this.headers.next()
- .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
+ .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
+ .hide();
// don't allow collapsible: false and active: false
if ( !options.collapsible && options.active === false ) {
@@ -76,7 +77,9 @@ $.widget( "ui.accordion", {
this.active = this._findActive( options.active )
.addClass( "ui-accordion-header-active ui-state-active" )
.toggleClass( "ui-corner-all ui-corner-top" );
- this.active.next().addClass( "ui-accordion-content-active" );
+ this.active.next()
+ .addClass( "ui-accordion-content-active" )
+ .show();
this._createIcons();
this.originalHeight = this.element[0].style.height;
@@ -290,10 +293,9 @@ $.widget( "ui.accordion", {
},
refresh: function() {
- var heightStyle = this.options.heightStyle,
- parent = this.element.parent(),
- maxHeight,
- overflow;
+ var maxHeight, overflow,
+ heightStyle = this.options.heightStyle,
+ parent = this.element.parent();
this.element.css( "height", this.originalHeight );
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index fab9691a3..e5cc9e693 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -57,16 +57,11 @@ $.widget( "ui.autocomplete", {
this.isMultiLine = this.element.is( "textarea,[contenteditable]" );
this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];
+ this.isNewMenu = true;
this.element
.addClass( "ui-autocomplete-input" )
- .attr( "autocomplete", "off" )
- // TODO verify these actually work as intended
- .attr({
- role: "textbox",
- "aria-autocomplete": "list",
- "aria-haspopup": "true"
- });
+ .attr( "autocomplete", "off" );
this._bind({
keydown: function( event ) {
@@ -115,7 +110,7 @@ $.widget( "ui.autocomplete", {
}
break;
case keyCode.ESCAPE:
- if ( this.menu.element.is(":visible") ) {
+ if ( this.menu.element.is( ":visible" ) ) {
this._value( this.term );
this.close( event );
// Different browsers have different default behavior for escape
@@ -183,12 +178,14 @@ $.widget( "ui.autocomplete", {
});
this._initSource();
- this.menu = $( "<ul></ul>" )
+ this.menu = $( "<ul>" )
.addClass( "ui-autocomplete" )
- .appendTo( this.document.find( this.options.appendTo || "body" )[0] )
+ .appendTo( this.document.find( this.options.appendTo || "body" )[ 0 ] )
.menu({
// custom key handling for now
- input: $()
+ input: $(),
+ // disable ARIA support, the live region takes care of that
+ role: null
})
.zIndex( this.element.zIndex() + 1 )
.hide()
@@ -213,7 +210,7 @@ $.widget( "ui.autocomplete", {
if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
this._delay(function() {
var that = this;
- this.document.one( 'mousedown', function( event ) {
+ this.document.one( "mousedown", function( event ) {
if ( event.target !== that.element[ 0 ] &&
event.target !== menuElement &&
!$.contains( menuElement, event.target ) ) {
@@ -224,14 +221,35 @@ $.widget( "ui.autocomplete", {
}
},
menufocus: function( event, ui ) {
+ // #7024 - Prevent accidental activation of menu items in Firefox
+ if ( this.isNewMenu ) {
+ this.isNewMenu = false;
+ if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+ this.menu.blur();
+
+ this.document.one( "mousemove", function() {
+ $( event.target ).trigger( event.originalEvent );
+ });
+
+ return;
+ }
+ }
+
// back compat for _renderItem using item.autocomplete, via #7810
// TODO remove the fallback, see #8156
var item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" );
if ( false !== this._trigger( "focus", event, { item: item } ) ) {
// use value to match what will end up in the input, if it was a key event
- if ( /^key/.test(event.originalEvent.type) ) {
+ if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
this._value( item.value );
}
+ } else {
+ // Normally the input is populated with the item's value as the
+ // menu is navigated, causing screen readers to notice a change and
+ // announce the item. Since the focus event was canceled, this doesn't
+ // happen, so we update the live region so that screen readers can
+ // still notice the change and announce it.
+ this.liveRegion.text( item.value );
}
},
menuselect: function( event, ui ) {
@@ -265,6 +283,13 @@ $.widget( "ui.autocomplete", {
}
});
+ this.liveRegion = $( "<span>", {
+ role: "status",
+ "aria-live": "polite"
+ })
+ .addClass( "ui-helper-hidden-accessible" )
+ .insertAfter( this.element );
+
if ( $.fn.bgiframe ) {
this.menu.element.bgiframe();
}
@@ -283,11 +308,9 @@ $.widget( "ui.autocomplete", {
clearTimeout( this.searching );
this.element
.removeClass( "ui-autocomplete-input" )
- .removeAttr( "autocomplete" )
- .removeAttr( "role" )
- .removeAttr( "aria-autocomplete" )
- .removeAttr( "aria-haspopup" );
+ .removeAttr( "autocomplete" );
this.menu.element.remove();
+ this.liveRegion.remove();
},
_setOption: function( key, value ) {
@@ -304,13 +327,12 @@ $.widget( "ui.autocomplete", {
},
_initSource: function() {
- var that = this,
- array,
- url;
+ var array, url,
+ that = this;
if ( $.isArray(this.options.source) ) {
array = this.options.source;
this.source = function( request, response ) {
- response( $.ui.autocomplete.filter(array, request.term) );
+ response( $.ui.autocomplete.filter( array, request.term ) );
};
} else if ( typeof this.options.source === "string" ) {
url = this.options.source;
@@ -408,9 +430,10 @@ $.widget( "ui.autocomplete", {
_close: function( event ) {
clearTimeout( this.closing );
- if ( this.menu.element.is(":visible") ) {
+ if ( this.menu.element.is( ":visible" ) ) {
this.menu.element.hide();
this.menu.blur();
+ this.isNewMenu = true;
this._trigger( "close", event );
}
},
@@ -426,7 +449,7 @@ $.widget( "ui.autocomplete", {
if ( items.length && items[0].label && items[0].value ) {
return items;
}
- return $.map( items, function(item) {
+ return $.map( items, function( item ) {
if ( typeof item === "string" ) {
return {
label: item,
@@ -457,7 +480,7 @@ $.widget( "ui.autocomplete", {
}, this.options.position ));
if ( this.options.autoFocus ) {
- this.menu.next( new $.Event("mouseover") );
+ this.menu.next();
}
},
@@ -483,18 +506,18 @@ $.widget( "ui.autocomplete", {
},
_renderItem: function( ul, item ) {
- return $( "<li></li>" )
- .append( $( "<a></a>" ).text( item.label ) )
+ return $( "<li>" )
+ .append( $( "<a>" ).text( item.label ) )
.appendTo( ul );
},
_move: function( direction, event ) {
- if ( !this.menu.element.is(":visible") ) {
+ if ( !this.menu.element.is( ":visible" ) ) {
this.search( null, event );
return;
}
- if ( this.menu.isFirstItem() && /^previous/.test(direction) ||
- this.menu.isLastItem() && /^next/.test(direction) ) {
+ if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+ this.menu.isLastItem() && /^next/.test( direction ) ) {
this._value( this.term );
this.menu.blur();
return;
@@ -532,4 +555,35 @@ $.extend( $.ui.autocomplete, {
}
});
+
+// live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+ options: {
+ messages: {
+ noResults: "No search results.",
+ results: function(amount) {
+ return amount + ( amount > 1 ? " results are" : " result is" ) +
+ " available, use up and down arrow keys to navigate.";
+ }
+ }
+ },
+
+ __response: function( content ) {
+ var message;
+ this._superApply( arguments );
+ if ( this.options.disabled || this.cancelSearch) {
+ return;
+ }
+ if ( content && content.length ) {
+ message = this.options.messages.results( content.length );
+ } else {
+ message = this.options.messages.noResults;
+ }
+ this.liveRegion.text( message );
+ }
+});
+
+
}( jQuery ));
diff --git a/ui/jquery.ui.button.js b/ui/jquery.ui.button.js
index f84d748cf..810191775 100644
--- a/ui/jquery.ui.button.js
+++ b/ui/jquery.ui.button.js
@@ -73,7 +73,7 @@ $.widget( "ui.button", {
focusClass = "ui-state-focus";
if ( options.label === null ) {
- options.label = this.buttonElement.html();
+ options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
}
this.buttonElement
@@ -214,9 +214,9 @@ $.widget( "ui.button", {
_determineButtonType: function() {
var ancestor, labelSelector, checked;
- if ( this.element.is(":checkbox") ) {
+ if ( this.element.is("[type=checkbox]") ) {
this.type = "checkbox";
- } else if ( this.element.is(":radio") ) {
+ } else if ( this.element.is("[type=radio]") ) {
this.type = "radio";
} else if ( this.element.is("input") ) {
this.type = "input";
@@ -354,11 +354,10 @@ $.widget( "ui.button", {
}
});
-$.ui.button.version = "@VERSION";
-
$.widget( "ui.buttonset", {
+ version: "@VERSION",
options: {
- items: ":button, :submit, :reset, :checkbox, :radio, a, :data(button)"
+ items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"
},
_create: function() {
diff --git a/ui/jquery.ui.core.js b/ui/jquery.ui.core.js
index 93353996e..d8fff91e1 100644
--- a/ui/jquery.ui.core.js
+++ b/ui/jquery.ui.core.js
@@ -119,49 +119,52 @@ $.fn.extend({
}
});
-$.each( [ "Width", "Height" ], function( i, name ) {
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
- type = name.toLowerCase(),
- orig = {
- innerWidth: $.fn.innerWidth,
- innerHeight: $.fn.innerHeight,
- outerWidth: $.fn.outerWidth,
- outerHeight: $.fn.outerHeight
- };
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+ $.each( [ "Width", "Height" ], function( i, name ) {
+ var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+ type = name.toLowerCase(),
+ orig = {
+ innerWidth: $.fn.innerWidth,
+ innerHeight: $.fn.innerHeight,
+ outerWidth: $.fn.outerWidth,
+ outerHeight: $.fn.outerHeight
+ };
+
+ function reduce( elem, size, border, margin ) {
+ $.each( side, function() {
+ size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+ if ( border ) {
+ size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ if ( margin ) {
+ size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+ }
+ });
+ return size;
+ }
- function reduce( elem, size, border, margin ) {
- $.each( side, function() {
- size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
- if ( border ) {
- size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+ $.fn[ "inner" + name ] = function( size ) {
+ if ( size === undefined ) {
+ return orig[ "inner" + name ].call( this );
}
- if ( margin ) {
- size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
- }
- });
- return size;
- }
-
- $.fn[ "inner" + name ] = function( size ) {
- if ( size === undefined ) {
- return orig[ "inner" + name ].call( this );
- }
- return this.each(function() {
- $( this ).css( type, reduce( this, size ) + "px" );
- });
- };
+ return this.each(function() {
+ $( this ).css( type, reduce( this, size ) + "px" );
+ });
+ };
- $.fn[ "outer" + name] = function( size, margin ) {
- if ( typeof size !== "number" ) {
- return orig[ "outer" + name ].call( this, size );
- }
+ $.fn[ "outer" + name] = function( size, margin ) {
+ if ( typeof size !== "number" ) {
+ return orig[ "outer" + name ].call( this, size );
+ }
- return this.each(function() {
- $( this).css( type, reduce( this, size, true, margin ) + "px" );
- });
- };
-});
+ return this.each(function() {
+ $( this).css( type, reduce( this, size, true, margin ) + "px" );
+ });
+ };
+ });
+}
// selectors
function focusable( element, isTabIndexNotNaN ) {
diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js
index f60a1f78d..e48c26400 100644
--- a/ui/jquery.ui.dialog.js
+++ b/ui/jquery.ui.dialog.js
@@ -143,7 +143,14 @@ $.widget("ui.dialog", {
.addClass( "ui-dialog-title" )
.attr( "id", titleId )
.html( title )
- .prependTo( uiDialogTitlebar );
+ .prependTo( uiDialogTitlebar ),
+
+ uiDialogButtonPane = ( this.uiDialogButtonPane = $( "<div>" ) )
+ .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ),
+
+ uiButtonSet = ( this.uiButtonSet = $( "<div>" ) )
+ .addClass( "ui-dialog-buttonset" )
+ .appendTo( uiDialogButtonPane );
uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection();
this._hoverable( uiDialogTitlebarClose );
@@ -326,7 +333,7 @@ $.widget("ui.dialog", {
// if there are no tabbable elements, set focus on the dialog itself
hasFocus = this.element.find( ":tabbable" );
if ( !hasFocus.length ) {
- hasFocus = uiDialog.find( ".ui-dialog-buttonpane :tabbable" );
+ hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
if ( !hasFocus.length ) {
hasFocus = uiDialog;
}
@@ -345,7 +352,8 @@ $.widget("ui.dialog", {
hasButtons = false;
// if we already have a button pane, remove it
- this.uiDialog.find( ".ui-dialog-buttonpane" ).remove();
+ this.uiDialogButtonPane.remove();
+ this.uiButtonSet.empty();
if ( typeof buttons === "object" && buttons !== null ) {
$.each( buttons, function() {
@@ -353,12 +361,6 @@ $.widget("ui.dialog", {
});
}
if ( hasButtons ) {
- uiDialogButtonPane = $( "<div>" )
- .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" );
- uiButtonSet = $( "<div>" )
- .addClass( "ui-dialog-buttonset" )
- .appendTo( uiDialogButtonPane );
-
$.each( buttons, function( name, props ) {
props = $.isFunction( props ) ?
{ click: props, text: name } :
@@ -369,13 +371,13 @@ $.widget("ui.dialog", {
.click(function() {
props.click.apply( that.element[0], arguments );
})
- .appendTo( uiButtonSet );
+ .appendTo( that.uiButtonSet );
if ( $.fn.button ) {
button.button();
}
});
this.uiDialog.addClass( "ui-dialog-buttons" );
- uiDialogButtonPane.appendTo( this.uiDialog );
+ this.uiDialogButtonPane.appendTo( this.uiDialog );
} else {
this.uiDialog.removeClass( "ui-dialog-buttons" );
}
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index 99df2e629..1bfd76716 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -26,6 +26,7 @@ $.widget( "ui.menu", {
my: "left top",
at: "right top"
},
+ role: "menu",
// callbacks
blur: null,
@@ -42,7 +43,7 @@ $.widget( "ui.menu", {
.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
.attr({
id: this.menuId,
- role: "menu",
+ role: this.options.role,
tabIndex: 0
})
// need to catch all clicks on disabled menu
@@ -201,13 +202,11 @@ $.widget( "ui.menu", {
event.preventDefault();
break;
case $.ui.keyCode.ENTER:
- if ( !this.active.is( ".ui-state-disabled" ) ) {
- if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
- this.expand( event );
- } else {
- this.select( event );
- }
- }
+ this._activate( event );
+ event.preventDefault();
+ break;
+ case $.ui.keyCode.SPACE:
+ this._activate( event );
event.preventDefault();
break;
case $.ui.keyCode.ESCAPE:
@@ -259,6 +258,16 @@ $.widget( "ui.menu", {
}
},
+ _activate: function( event ) {
+ if ( !this.active.is( ".ui-state-disabled" ) ) {
+ if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
+ this.expand( event );
+ } else {
+ this.select( event );
+ }
+ }
+ },
+
refresh: function() {
// initialize nested menus
var menus,
@@ -267,7 +276,7 @@ $.widget( "ui.menu", {
.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
.hide()
.attr({
- role: "menu",
+ role: this.options.role,
"aria-hidden": "true",
"aria-expanded": "false"
});
@@ -281,7 +290,7 @@ $.widget( "ui.menu", {
.children( "a" )
.addClass( "ui-corner-all" )
.attr( "tabIndex", -1 )
- .attr( "role", "menuitem" )
+ .attr( "role", this._itemRole() )
.attr( "id", function( i ) {
return menuId + "-" + i;
});
@@ -302,30 +311,26 @@ $.widget( "ui.menu", {
});
},
+ _itemRole: function() {
+ return {
+ menu: "menuitem",
+ listbox: "option"
+ }[ this.options.role ];
+ },
+
focus: function( event, item ) {
- var nested, borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ var nested, focused;
this.blur( event, event && event.type === "focus" );
- if ( this._hasScroll() ) {
- borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
- paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
- offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
- scroll = this.activeMenu.scrollTop();
- elementHeight = this.activeMenu.height();
- itemHeight = item.height();
-
- if ( offset < 0 ) {
- this.activeMenu.scrollTop( scroll + offset );
- } else if ( offset + itemHeight > elementHeight ) {
- this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
- }
- }
+ this._scrollIntoView( item );
this.active = item.first();
- this.element.attr( "aria-activedescendant",
- this.active.children( "a" )
- .addClass( "ui-state-focus" )
- .attr( "id" ) );
+ focused = this.active.children( "a" ).addClass( "ui-state-focus" );
+ // only update aria-activedescendant if there's a role
+ // otherwise we assume focus is managed elsewhere
+ if ( this.options.role ) {
+ this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+ }
// highlight active parent menu item, if any
this.active.parent().closest( ".ui-menu-item" ).children( "a:first" ).addClass( "ui-state-active" );
@@ -347,6 +352,24 @@ $.widget( "ui.menu", {
this._trigger( "focus", event, { item: item } );
},
+ _scrollIntoView: function( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height();
+ itemHeight = item.height();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+ }
+ }
+ },
+
blur: function( event, fromFocus ) {
if ( !fromFocus ) {
clearTimeout( this.timer );
@@ -385,8 +408,8 @@ $.widget( "ui.menu", {
var position = $.extend( {}, {
of: this.active
- }, $.type(this.options.position) === "function" ?
- this.options.position(this.active) :
+ }, $.type( this.options.position ) === "function" ?
+ this.options.position( this.active ) :
this.options.position
);
diff --git a/ui/jquery.ui.mouse.js b/ui/jquery.ui.mouse.js
index eaa953ad0..e2e06897c 100644
--- a/ui/jquery.ui.mouse.js
+++ b/ui/jquery.ui.mouse.js
@@ -20,7 +20,7 @@ $( document ).mouseup( function( e ) {
$.widget("ui.mouse", {
version: "@VERSION",
options: {
- cancel: ':input,option',
+ cancel: 'input,textarea,button,select,option',
distance: 1,
delay: 0
},
diff --git a/ui/jquery.ui.resizable.js b/ui/jquery.ui.resizable.js
index b4433b618..6039cf648 100644
--- a/ui/jquery.ui.resizable.js
+++ b/ui/jquery.ui.resizable.js
@@ -171,12 +171,12 @@ $.widget("ui.resizable", $.ui.mouse, {
this._handles.hide();
$(this.element)
.addClass("ui-resizable-autohide")
- .hover(function() {
+ .mouseenter(function() {
if (o.disabled) return;
$(this).removeClass("ui-resizable-autohide");
that._handles.show();
- },
- function(){
+ })
+ .mouseleave(function(){
if (o.disabled) return;
if (!that.resizing) {
$(this).addClass("ui-resizable-autohide");
diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js
index accd3e189..c302bfe8b 100644
--- a/ui/jquery.ui.slider.js
+++ b/ui/jquery.ui.slider.js
@@ -90,11 +90,12 @@ $.widget( "ui.slider", $.ui.mouse, {
.click(function( event ) {
event.preventDefault();
})
- .hover(function() {
+ .mouseenter(function() {
if ( !o.disabled ) {
$( this ).addClass( "ui-state-hover" );
}
- }, function() {
+ })
+ .mouseleave(function() {
$( this ).removeClass( "ui-state-hover" );
})
.focus(function() {
diff --git a/ui/jquery.ui.sortable.js b/ui/jquery.ui.sortable.js
index 55a64590b..88c8aa374 100644
--- a/ui/jquery.ui.sortable.js
+++ b/ui/jquery.ui.sortable.js
@@ -731,9 +731,10 @@ $.widget("ui.sortable", $.ui.mouse, {
var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
for (var j = this.items.length - 1; j >= 0; j--) {
if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
- var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top'];
+ var cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;
if(Math.abs(cur - base) < dist) {
dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+ this.direction = (cur - base > 0) ? 'down' : 'up';
}
}
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index 026c50993..a693899da 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -25,7 +25,7 @@ function isLocal( anchor ) {
// if it's manually set, i.e., a.href = "#foo" kills the normalization
anchor = anchor.cloneNode( false );
return anchor.hash.length > 1 &&
- anchor.href.replace( rhash, "" ) === location.href.replace( rhash, "" );
+ anchor.href.replace( rhash, "" ) === location.href.replace( rhash, "" );
}
$.widget( "ui.tabs", {
@@ -34,7 +34,8 @@ $.widget( "ui.tabs", {
active: null,
collapsible: false,
event: "click",
- fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
+ hide: null,
+ show: null,
// callbacks
activate: null,
@@ -46,20 +47,20 @@ $.widget( "ui.tabs", {
_create: function() {
var panel,
that = this,
- options = that.options,
+ options = this.options,
active = options.active;
- that.running = false;
+ this.running = false;
- that.element.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" );
+ this.element.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" );
- that._processTabs();
+ this._processTabs();
if ( active === null ) {
// check the fragment identifier in the URL
if ( location.hash ) {
- that.anchors.each(function( i, tab ) {
- if ( tab.hash === location.hash ) {
+ this.anchors.each(function( i, anchor ) {
+ if ( anchor.hash === location.hash ) {
active = i;
return false;
}
@@ -68,12 +69,12 @@ $.widget( "ui.tabs", {
// check for a tab marked active via a class
if ( active === null ) {
- active = that.lis.filter( ".ui-tabs-active" ).index();
+ active = this.lis.filter( ".ui-tabs-active" ).index();
}
// no active tab, set to false
if ( active === null || active === -1 ) {
- active = that.lis.length ? 0 : false;
+ active = this.lis.length ? 0 : false;
}
}
@@ -101,8 +102,6 @@ $.widget( "ui.tabs", {
) ).sort();
}
- this._setupFx( options.fx );
-
this._refresh();
// highlight selected tab
@@ -111,7 +110,7 @@ $.widget( "ui.tabs", {
// check for length avoids error when initializing empty list
if ( options.active !== false && this.anchors.length ) {
this.active = this._findActive( options.active );
- panel = that._getPanelForTab( this.active );
+ panel = this._getPanelForTab( this.active );
panel.show();
this.lis.eq( options.active ).addClass( "ui-tabs-active ui-state-active" );
@@ -151,14 +150,10 @@ $.widget( "ui.tabs", {
if ( key === "event" ) {
this._setupEvents( value );
}
-
- if ( key === "fx" ) {
- this._setupFx( value );
- }
},
- _tabId: function( a ) {
- return $( a ).attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+ _tabId: function( tab ) {
+ return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
},
_sanitizeSelector: function( hash ) {
@@ -192,7 +187,7 @@ $.widget( "ui.tabs", {
// was active, active tab still exists
} else {
// make sure active index is correct
- options.active = this.anchors.index( this.active );
+ options.active = this.lis.index( this.active );
}
},
@@ -202,6 +197,7 @@ $.widget( "ui.tabs", {
this.element.toggleClass( "ui-tabs-collapsible", options.collapsible );
this.list.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" );
this.lis.addClass( "ui-state-default ui-corner-top" );
+ this.anchors.addClass( "ui-tabs-anchor" );
this.panels.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" );
this._setupDisabled( options.disabled );
@@ -224,7 +220,8 @@ $.widget( "ui.tabs", {
this.panels = $();
this.anchors.each(function( i, a ) {
- var selector, panel, id;
+ var selector, panel, id,
+ tab = $( a ).closest( "li" );
// inline tab
if ( isLocal( a ) ) {
@@ -232,7 +229,7 @@ $.widget( "ui.tabs", {
panel = that.element.find( that._sanitizeSelector( selector ) );
// remote tab
} else {
- id = that._tabId( a );
+ id = that._tabId( tab );
selector = "#" + id;
panel = that.element.find( selector );
if ( !panel.length ) {
@@ -244,7 +241,7 @@ $.widget( "ui.tabs", {
if ( panel.length) {
that.panels = that.panels.add( panel );
}
- $( a ).attr( "aria-controls", selector.substring( 1 ) );
+ tab.attr( "aria-controls", selector.substring( 1 ) );
});
},
@@ -278,49 +275,34 @@ $.widget( "ui.tabs", {
this.options.disabled = disabled;
},
- _setupFx: function( fx ) {
- // set up animations
- if ( fx ) {
- if ( $.isArray( fx ) ) {
- this.hideFx = fx[ 0 ];
- this.showFx = fx[ 1 ];
- } else {
- this.hideFx = this.showFx = fx;
- }
- }
- },
-
_setupEvents: function( event ) {
- // attach tab event handler, unbind to avoid duplicates from former tabifying...
- this.anchors.unbind( ".tabs" );
-
- // TODO: use event delegation via _bind()
+ var events = {
+ click: function( event ) {
+ event.preventDefault();
+ }
+ };
if ( event ) {
- this.anchors.bind( event.split( " " ).join( ".tabs " ) + ".tabs",
- $.proxy( this, "_eventHandler" ) );
+ $.each( event.split(" "), function( index, eventName ) {
+ events[ eventName ] = "_eventHandler";
+ });
}
-
- // TODO: use event delegation via _bind()
- // disable click in any case
- this.anchors.bind( "click.tabs", function( event ){
- event.preventDefault();
- });
+ this.anchors.unbind( ".tabs" );
+ this._bind( this.anchors, events );
},
_eventHandler: function( event ) {
- var that = this,
- options = that.options,
- active = that.active,
- clicked = $( event.currentTarget ),
- clickedIsActive = clicked[ 0 ] === active[ 0 ],
+ var options = this.options,
+ active = this.active,
+ anchor = $( event.currentTarget ),
+ tab = anchor.closest( "li" ),
+ clickedIsActive = tab[ 0 ] === active[ 0 ],
collapsing = clickedIsActive && options.collapsible,
- toShow = collapsing ? $() : that._getPanelForTab( clicked ),
- toHide = !active.length ? $() : that._getPanelForTab( active ),
- tab = clicked.closest( "li" ),
+ toShow = collapsing ? $() : this._getPanelForTab( tab ),
+ toHide = !active.length ? $() : this._getPanelForTab( active ),
eventData = {
oldTab: active,
oldPanel: toHide,
- newTab: collapsing ? $() : clicked,
+ newTab: collapsing ? $() : tab,
newPanel: toShow
};
@@ -330,32 +312,30 @@ $.widget( "ui.tabs", {
// tab is already loading
tab.hasClass( "ui-tabs-loading" ) ||
// can't switch durning an animation
- that.running ||
+ this.running ||
// click on active header, but not collapsible
( clickedIsActive && !options.collapsible ) ||
// allow canceling activation
- ( that._trigger( "beforeActivate", event, eventData ) === false ) ) {
- clicked[ 0 ].blur();
+ ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
return;
}
- options.active = collapsing ? false : that.anchors.index( clicked );
+ options.active = collapsing ? false : this.lis.index( tab );
- that.active = clickedIsActive ? $() : clicked;
- if ( that.xhr ) {
- that.xhr.abort();
+ this.active = clickedIsActive ? $() : tab;
+ if ( this.xhr ) {
+ this.xhr.abort();
}
if ( !toHide.length && !toShow.length ) {
- jQuery.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+ $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
}
if ( toShow.length ) {
// TODO make passing in node possible
- that.load( that.anchors.index( clicked ), event );
- clicked[ 0 ].blur();
+ this.load( this.lis.index( tab ), event );
}
- that._toggle( event, eventData );
+ this._toggle( event, eventData );
},
// handles show/hide for selecting tabs
@@ -364,7 +344,7 @@ $.widget( "ui.tabs", {
toShow = eventData.newPanel,
toHide = eventData.oldPanel;
- that.running = true;
+ this.running = true;
function complete() {
that.running = false;
@@ -374,11 +354,8 @@ $.widget( "ui.tabs", {
function show() {
eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
- if ( toShow.length && that.showFx ) {
- toShow
- .animate( that.showFx, that.showFx.duration || "normal", function() {
- complete();
- });
+ if ( toShow.length && that.options.show ) {
+ that._show( toShow, that.options.show, complete );
} else {
toShow.show();
complete();
@@ -386,8 +363,8 @@ $.widget( "ui.tabs", {
}
// start out by hiding, then showing, then completing
- if ( toHide.length && that.hideFx ) {
- toHide.animate( that.hideFx, that.hideFx.duration || "normal", function() {
+ if ( toHide.length && this.options.hide ) {
+ this._hide( toHide, this.options.hide, function() {
eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
show();
});
@@ -399,31 +376,39 @@ $.widget( "ui.tabs", {
},
_activate: function( index ) {
- var active = this._findActive( index )[ 0 ];
+ var anchor,
+ active = this._findActive( index );
// trying to activate the already active panel
- if ( active === this.active[ 0 ] ) {
+ if ( active[ 0 ] === this.active[ 0 ] ) {
return;
}
// trying to collapse, simulate a click on the current active header
- active = active || this.active[ 0 ];
+ if ( !active.length ) {
+ active = this.active;
+ }
+ anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
this._eventHandler({
- target: active,
- currentTarget: active,
+ target: anchor,
+ currentTarget: anchor,
preventDefault: $.noop
});
},
_findActive: function( selector ) {
- return typeof selector === "number" ? this.anchors.eq( selector ) :
- typeof selector === "string" ? this.anchors.filter( "[href$='" + selector + "']" ) : $();
+ if ( typeof selector === "number" ) {
+ return this.lis.eq( selector );
+ }
+ if ( typeof selector === "string" ) {
+ return this.anchors.filter( "[href$='" + selector + "']" ).closest( "li" );
+ }
+ return $();
},
_getIndex: function( index ) {
// meta-function to give users option to provide a href string instead of a numerical index.
- // also sanitizes numerical indexes to valid values.
if ( typeof index === "string" ) {
index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
}
@@ -441,6 +426,7 @@ $.widget( "ui.tabs", {
this.list.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" );
this.anchors
+ .removeClass( "ui-tabs-anchor" )
.unbind( ".tabs" )
.removeData( "href.tabs" )
.removeData( "load.tabs" );
@@ -513,10 +499,11 @@ $.widget( "ui.tabs", {
load: function( index, event ) {
index = this._getIndex( index );
var that = this,
- anchor = this.anchors.eq( index ),
- panel = that._getPanelForTab( anchor ),
+ tab = this.lis.eq( index ),
+ anchor = tab.find( ".ui-tabs-anchor" ),
+ panel = this._getPanelForTab( tab ),
eventData = {
- tab: anchor,
+ tab: tab,
panel: panel
};
@@ -533,27 +520,30 @@ $.widget( "ui.tabs", {
}
});
- if ( this.xhr ) {
- this.lis.eq( index ).addClass( "ui-tabs-loading" );
+ // support: jQuery <1.8
+ // jQuery <1.8 returns false if the request is canceled in beforeSend,
+ // but as of 1.8, $.ajax() always returns a jqXHR object.
+ if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+ tab.addClass( "ui-tabs-loading" );
this.xhr
.success(function( response ) {
- // TODO: IE resolves cached XHRs immediately
- // remove when core #10467 is fixed
+ // support: jQuery <1.8
+ // http://bugs.jquery.com/ticket/11778
setTimeout(function() {
panel.html( response );
that._trigger( "load", event, eventData );
}, 1 );
})
.complete(function( jqXHR, status ) {
- // TODO: IE resolves cached XHRs immediately
- // remove when core #10467 is fixed
+ // support: jQuery <1.8
+ // http://bugs.jquery.com/ticket/11778
setTimeout(function() {
if ( status === "abort" ) {
that.panels.stop( false, true );
}
- that.lis.eq( index ).removeClass( "ui-tabs-loading" );
+ tab.removeClass( "ui-tabs-loading" );
if ( jqXHR === that.xhr ) {
delete that.xhr;
@@ -740,10 +730,10 @@ if ( $.uiBackCompat !== false ) {
.replace( /#\{label\}/g, label ) ),
id = !url.indexOf( "#" ) ?
url.replace( "#", "" ) :
- this._tabId( li.find( "a" )[ 0 ] );
+ this._tabId( li );
li.addClass( "ui-state-default ui-corner-top" ).data( "ui-tabs-destroy", true );
- li.find( "a" ).attr( "aria-controls", id );
+ li.attr( "aria-controls", id );
doInsertAfter = index >= this.lis.length;
@@ -786,7 +776,7 @@ if ( $.uiBackCompat !== false ) {
index = this._getIndex( index );
var options = this.options,
tab = this.lis.eq( index ).remove(),
- panel = this._getPanelForTab( tab.find( "a[aria-controls]" ) ).remove();
+ panel = this._getPanelForTab( tab ).remove();
// If selected tab was removed focus tab to the right or
// in case the last tab was removed the tab to the left.
@@ -825,8 +815,10 @@ if ( $.uiBackCompat !== false ) {
idPrefix: "ui-tabs-"
},
- _tabId: function( a ) {
- return $( a ).attr( "aria-controls" ) ||
+ _tabId: function( tab ) {
+ var a = tab.is( "li" ) ? tab.find( "a[href]" ) : tab;
+ a = a[0];
+ return $( a ).closest( "li" ).attr( "aria-controls" ) ||
a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF\-]/g, "" ) ||
this.options.idPrefix + getNextTabId();
}
@@ -892,7 +884,8 @@ if ( $.uiBackCompat !== false ) {
this._super();
if ( this.options.active !== false ) {
this._trigger( "show", null, this._ui(
- this.active[ 0 ], this._getPanelForTab( this.active )[ 0 ] ) );
+ this.active.find( ".ui-tabs-anchor" )[ 0 ],
+ this._getPanelForTab( this.active )[ 0 ] ) );
}
},
_trigger: function( type, event, data ) {
@@ -902,13 +895,13 @@ if ( $.uiBackCompat !== false ) {
}
if ( type === "beforeActivate" && data.newTab.length ) {
ret = this._super( "select", event, {
- tab: data.newTab[ 0],
+ tab: data.newTab.find( ".ui-tabs-anchor" )[ 0],
panel: data.newPanel[ 0 ],
index: data.newTab.closest( "li" ).index()
});
} else if ( type === "activate" && data.newTab.length ) {
ret = this._super( "show", event, {
- tab: data.newTab[ 0 ],
+ tab: data.newTab.find( ".ui-tabs-anchor" )[ 0 ],
panel: data.newPanel[ 0 ],
index: data.newTab.closest( "li" ).index()
});
@@ -990,11 +983,81 @@ if ( $.uiBackCompat !== false ) {
var _data = $.extend( {}, data );
if ( type === "load" ) {
_data.panel = _data.panel[ 0 ];
- _data.tab = _data.tab[ 0 ];
+ _data.tab = _data.tab.find( ".ui-tabs-anchor" )[ 0 ];
}
return this._super( type, event, _data );
}
});
+
+ // fx option
+ // The new animation options (show, hide) conflict with the old show callback.
+ // The old fx option wins over show/hide anyway (always favor back-compat).
+ // If a user wants to use the new animation API, they must give up the old API.
+ $.widget( "ui.tabs", $.ui.tabs, {
+ options: {
+ fx: null // e.g. { height: "toggle", opacity: "toggle", duration: 200 }
+ },
+
+ _getFx: function() {
+ var hide, show,
+ fx = this.options.fx;
+
+ if ( fx ) {
+ if ( $.isArray( fx ) ) {
+ hide = fx[ 0 ];
+ show = fx[ 1 ];
+ } else {
+ hide = show = fx;
+ }
+ }
+
+ return fx ? { show: show, hide: hide } : null;
+ },
+
+ _toggle: function( event, eventData ) {
+ var that = this,
+ toShow = eventData.newPanel,
+ toHide = eventData.oldPanel,
+ fx = this._getFx();
+
+ if ( !fx ) {
+ return this._super( event, eventData );
+ }
+
+ that.running = true;
+
+ function complete() {
+ that.running = false;
+ that._trigger( "activate", event, eventData );
+ }
+
+ function show() {
+ eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+ if ( toShow.length && fx.show ) {
+ toShow
+ .animate( fx.show, fx.show.duration, function() {
+ complete();
+ });
+ } else {
+ toShow.show();
+ complete();
+ }
+ }
+
+ // start out by hiding, then showing, then completing
+ if ( toHide.length && fx.hide ) {
+ toHide.animate( fx.hide, fx.hide.duration, function() {
+ eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+ show();
+ });
+ } else {
+ eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+ toHide.hide();
+ show();
+ }
+ }
+ });
}
})( jQuery );
diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js
index 47a377bfd..1892d6555 100644
--- a/ui/jquery.ui.tooltip.js
+++ b/ui/jquery.ui.tooltip.js
@@ -14,6 +14,31 @@
var increments = 0;
+function addDescribedBy( elem, id ) {
+ var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
+ describedby.push( id );
+ elem
+ .data( "ui-tooltip-id", id )
+ .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+}
+
+function removeDescribedBy( elem ) {
+ var id = elem.data( "ui-tooltip-id" ),
+ describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
+ index = $.inArray( id, describedby );
+ if ( index !== -1 ) {
+ describedby.splice( index, 1 );
+ }
+
+ elem.removeData( "ui-tooltip-id" );
+ describedby = $.trim( describedby.join( " " ) );
+ if ( describedby ) {
+ elem.attr( "aria-describedby", describedby );
+ } else {
+ elem.removeAttr( "aria-describedby" );
+ }
+}
+
$.widget( "ui.tooltip", {
version: "@VERSION",
options: {
@@ -92,8 +117,8 @@ $.widget( "ui.tooltip", {
target = $( event ? event.target : this.element )
.closest( this.options.items );
- // if aria-describedby exists, then the tooltip is already open
- if ( !target.length || target.attr( "aria-describedby" ) ) {
+ // if ui-tooltip-id exists, then the tooltip is already open
+ if ( !target.length || target.data( "ui-tooltip-id" ) ) {
return;
}
@@ -127,7 +152,7 @@ $.widget( "ui.tooltip", {
// if we have a title, clear it to prevent the native tooltip
// we have to check first to avoid defining a title if none exists
// (we don't want to cause an element to start matching [title])
-
+ //
// We use removeAttr only for key events, to allow IE to export the correct
// accessible attributes. For mouse events, set to empty string to avoid
// native tooltip showing up (happens only when removing inside mouseover).
@@ -143,7 +168,7 @@ $.widget( "ui.tooltip", {
var tooltip = this._find( target );
if ( !tooltip.length ) {
tooltip = this._tooltip( target );
- target.attr( "aria-describedby", tooltip.attr( "id" ) );
+ addDescribedBy( target, tooltip.attr( "id" ) );
}
tooltip.find( ".ui-tooltip-content" ).html( content );
tooltip
@@ -183,6 +208,7 @@ $.widget( "ui.tooltip", {
// don't close if the element has focus
// this prevents the tooltip from closing if you hover while focused
+ //
// we have to check the event type because tabbing out of the document
// may leave the element as the activeElement
if ( !force && event && event.type !== "focusout" &&
@@ -195,7 +221,7 @@ $.widget( "ui.tooltip", {
target.attr( "title", target.data( "ui-tooltip-title" ) );
}
- target.removeAttr( "aria-describedby" );
+ removeDescribedBy( target );
tooltip.stop( true );
this._hide( tooltip, this.options.hide, function() {
@@ -232,7 +258,7 @@ $.widget( "ui.tooltip", {
},
_find: function( target ) {
- var id = target.attr( "aria-describedby" );
+ var id = target.data( "ui-tooltip-id" );
return id ? $( "#" + id ) : $();
},