Dialog API Redesign

Posted on by

Continuing with the API redesign, we have some changes planned for the Dialog widget. We know that API changes like this are not without cost to our users, so we’d like to make it clear that except where specifically noted, jQuery UI Dialog in 1.9 will support the 1.8 API as well, and the deprecated APIs will not be removed until jQuery UI 2.0. Read more about the full jQuery UI API redesign.

API Redesign

Contain focus in dialog
We currently only contain focus inside modal dialogs. We will be changing this behavior to always contain focus, even in modeless dialogs. This will bring us more in line with the DHTML Style Guide. We’re not sure about implementing a key command to move the focus out of the dialog (such as F6) since that would require defining a system to track where focus should move.

Allow disabling dialogs
Dialogs don’t currently support being disabled. They do inherit the default behavior of adding the ui-state-disabled class, which makes the dialog look disabled, but the user can still interact with elements in the dialog. In order to support disabling a dialog, we will place a div over the dialog to prevent mouse interaction.

Ability to configure which element gains focus
When opening a dialog, we search for which elements are tabbable and we focus the first element that we find. If there are no tabbable elements, then we focus the dialog itself. We will be adding an autoFocus option, which will allow customizing which element gains focus. The option will accept a function which will return the element to focus. The default value for the option will be the current implementation. If no element is found using the option, the dialog will be focused.

Move dialog back to original DOM position on destroy
When dialogs are created they are moved to the end of the body. When dialogs are destroyed, they currently stay at the end of the body. We will be changing this behavior so the dialog is returned to the original position, if possible. This will be done by tracking either a sibling or the parent on create.

Automatic stacking
The stack option controls whether a dialog will move on top of other dialogs when it gains focus. Since this should always be the case, we will be removing the option and forcing the behavior. In addition, we will probably remove the moveToTop method since the proper dialog(s) should always be available to the user based on when they were opened and whether they are modal or modeless.

Saner modality
The current implementation for managing modal dialogs is a bit unwieldy, comparing the z-index of elements and often causing problems. We plan to simplify the implementation and switch to a hierarchy-based solution instead of a style-based solution.

Feedback

We’d love to hear your feedback on these changes. We want to make sure we address any issues the community may have before we finalize and implement these changes. If you have any feedback, please post it on the related forum post. Thanks.

jQuery UI 1.8.16

Posted on by

The sixteenth maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Button, Datepicker, Dialog, Draggable, Droppable, Effects, Mouse and Widget Factory. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.16, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.16, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.16 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.15. For full details on what’s included in this release see the 1.8.16 Changelog.

Thanks

Thanks to all who helped with this release, specifically: Andreas Pelme, ash, brazir, Corey Frang, dalugadm, danheberden, fracmak, jabouillei, Jay Merrifield, jbblanchet, joekarl, Jörn Zaefferer, Karl Kirch, kborchers, Krinkle, maxpayne, rdworth, rubyruy, Scott González.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our sixteenth maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

jQuery UI 1.8.15

Posted on by

The fifteenth maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Datepicker, Mouse and Slider, as well as support for jQuery 1.6.x. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.15, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.15, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.15 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.14. For full details on what’s included in this release see the 1.8.15 Changelog.

Thanks

Thanks to all who helped with this release, specifically: alexstack, be.davestein, bencoe, brettkiefer, chubyqc, Corey Frang, djmadcat, Encosia, enione, fedehf, jcm, jdufresne, kbwood, marcneuwirth, meh-cfl, peter@synerics.com, Richard D. Worth, Scott González, ThiefMaster, timn@bigfoot.com, TWD.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our fifteenth maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

ARIA Hackathon Summary

Posted on by

The original idea of the ARIA Hackathon was to get developers of jQuery UI and experts for ARIA together in one room, connect them, share knowledge and work on the accessibility of jQuery UI.

Meeting at the Inclusive Design Research Centre (IDRC) of OCAD University in Toronto, several members of the jQuery UI team (Richard, Scott, Dan, Jörn), various developers at OCAD (Michelle, Justin, Antranig, Harris), around Toronto (Ates, George, Darcy) and further away (Mat from Boston, Candace and William from the University of Washington and Jerry from the University of Illinois) learned a ton about testing and developing for screenreader users, about the ARIA standard and its process, as well as Mozilla’s efforts on accessibility.

  • Colin Clark gave an overview of the work of the IDRC team, including the Fluid project which makes use of jQuery UI.
  • Hans Hillen provided a lot of very practical insight on testing and developing with JAWS and NVDA and the ARIA spec and DHTML styleguide.
  • Jospeh Scheuhammer, heavily involved in the ARIA standards process, gave insight on how the process works like, how to provide feedback and which documents can and should be used along with the main specification.
  • David Bolter provided an overview of Mozilla’s efforts on Firefox accessibility, also covering the state and future of Firefox Mobile.
  • Finally Jennison Asuncion demonstrated usage of JAWS on regular websites, giving the spectators (or rather, listeners) a much better understanding of how a blind user actually uses a screenreader. He’s also an incredibly nice guy.

In a group discussion, we defined latest NVDA on latest Firefox as the supported setup for ARIA and acccessiblity, while also testing with JAWS on Windows and VoiceOver on OSX. We will accept reasonable patches for other or older ATs if the code is maintainable and doesn’t break ARIA in spec-conforming ATs.

After the two days of the main event, Hans and Jörn stayed till Friday to work on the keyboard and accessibility implementation of multiple jQuery UI widgets. Jörn also had meetings with Justin and Michelle at OCAD and Bobby and David at Mozilla to recruit them for jQuery UI and the Testing subteam (QUnit, TestSwarm). There is a lot of mutual interest that should lead to a lot more collaboration going forward.

Special thanks go out to IDRC and Colin Clark for hosting the event and Mozilla and David Bolter for funding some of the travel and lodging expenses.

For a mostly complete list of attendees (and links to Twitter and GitHub profiles) and various resources gathered during the event, visit the events page on our planning wiki.

jQuery UI 1.8.14

Posted on by

The fourteenth maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Autocomplete, Button, Datepicker, Dialog, Draggable, Droppable, Resizable Sortable and Effects. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.14, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.14, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.14 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.13. For full details on what’s included in this release see the 1.8.14 Changelog.

Thanks

Thanks to all who helped with this release, specifically: Andrew Powell, andrew1, aut0poietic, Ben Boyle, bohdan.ganicky, danbhfive, danilsomsikov, DEfusion, Doug Neiner, Eike Send, elpy, fracmak, Glenn Goodrich, gnarf, HershelSR, iamunr, JasonC, Jay Merrifield, Jeff Remy, Jesse Baird, jgarber, jgv, Jörn Zaefferer, Kato Kazuyoshi, Kris Borchers, Lino, Mamen, mattramey, MechanisM, morozov, muley, oferwald, olafschneider, orionll, paul, pinkie, r.oosterholt, Richard D. Worth, ruprict, schav, Scott González, Skaffen, spudly, ThiefMaster, thinkterry, tomykaira, xelaris.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our fourteenth maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

jQuery UI 1.9 Milestone 5 – Tabs Redesign

Posted on by

The fifth milestone release for jQuery UI 1.9 is out, featuring the updated Tabs widget. This release also includes updates and bug fixes to existing and new widgets that will not make it into a 1.8.x release.

What’s a Milestone Release?

A milestone release makes it easier to try out the latest development code of jQuery UI without necessarily having to check out code from GitHub.

With a milestone release you can try out new widgets that are pretty far along (though not yet final) and provide feedback based on released code with a specific version number.

Note: the API is subject to change as the code is still under active development.

Tabs

The Tabs API has been redesigned for simplicity, extensibility and consistency with other widgets in jQuery UI. We’d love to get feedback on any compatibility issues you may have with existing code. Everything supported in 1.8 should work out-of-the-box in 1.9; if something breaks, we will work to fix it before the final release.

Download

You can download the jQuery UI 1.9 Milestone 5 – Tabs Redesign release as a zip file or via git:

File Downloads

Git

How to Provide Feedback

wiki page

To help with the testing of the Tabs redesign, visit the Tabs page on our Development & Planning wiki.

forum

If the comments section on the wiki page doesn’t provide enough room for your feedback, post to the Developing jQuery UI Forum and tag the post:

How to Contribute Code

If you have code changes for the Tabs widget, fork jQuery UI on GitHub and submit a pull request.

If you’re new to git or GitHub, see our guide: How to submit a fix to jQuery UI – The Easy Way.

Comments

Note: please do NOT use the comments section of this blog post for feedback on the Tabs widget. This discussion should occur on the wiki page and the forum (see How to Provide Feedback, above).

If you have feedback on us doing our fifth milestone release, feel free to leave a comment below. Thank you.

jQuery UI 1.8.13

Posted on by

The thirteenth maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Autocomplete, Button, Datepicker, Draggable, Resizable and Slider. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.13, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.13, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.13 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.12. For full details on what’s included in this release see the 1.8.13 Changelog.

Thanks

Thanks to all who helped with this release, specifically: Adam Baratz, adamlogic, aembler, Andrew Powell, andri, bartaz, Carson McDonald, cdeszaq, cstdenis, daepark, dahlb, dalelarsen, dallaway, damion, danheberden, dmfontz, Ed4, eddiemonge, Edward Faulkner, Eike Send, EricKerby, eric_b, freerange, Garrison Locke, geoffp, glenvan, gnarf, Grismar, hammond13, i8beef, jerry, joern.zaefferer, jorrit, juergen.furrer, Kato Kazuyoshi, kborchers, KrishnarajD, larsomat, lindner@visionet.de, Lockhead, Lopo, m4olivei, machineghost, Mark Johnson, markchagers, MatrixFrog, mike3050, mikeqw, mitjakuscer, mryall, oribani, paul, pitoj, pospi, postb99, pwaring, pwoldberg, rb-cohen, Richard Worth, Scott González, spudly, superboer12, theycallmeswift, ThiefMaster, ThrushAAX, TitAn, utkarsh, VIRGOFX, vitch, whittet, wuzz.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our thirteenth maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

jQuery UI 1.8.12

Posted on by

The twelfth maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Autocomplete, Datepicker, Dialog, Progressbar, Resizable, Slider and Tabs. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.12, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.12, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.12 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.11. For full details on what’s included in this release see the 1.8.12 Changelog.

Thanks

Thanks to all who helped with this release, specifically: aperitero, Bluff, chris.rohr, danwellman, fofanafi, Giovanni Giacobbi, jimconte, joern.zaefferer, kabel, Kyle Florence, Ralph Whitbeck, Richard Worth, Scott González, toebens, tyron.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our twelfth maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

jQuery UI 1.8.11

Posted on by

The eleventh maintenance release for jQuery UI 1.8 is out. This update brings bug fixes for Accordion, Autocomplete, Button, Datepicker, Draggable, Droppable, Mouse, Sortable and Effects. For the full list of changes, see the changelog. You can download it here:

Download

File Downloads

Svn (contains final files as they are in the zip, with @VERSION replaced with 1.8.11, all themes)

Git (contains source files, with @VERSION not yet replaced with 1.8.11, base theme only)

Google Ajax Libraries API (CDN)

Microsoft Ajax CDN (CDN)

Custom Download Builder

Changelog

See the 1.8.11 Upgrade Guide for a list of changes that may affect you when upgrading from 1.8.10. For full details on what’s included in this release see the 1.8.11 Changelog.

Thanks

Thanks to all who helped with this release, specifically: Adam Parod, ajpiano, akantro, alkaaran, awgy, daepark, David.Sullivan, ddstreet, Douglas Neiner, dziastinux, eleotlecram, elijahmanor, ghusse, gnarf, Guillaume Gautreau, Marcel Toele, Matt Hoskins, michaelmwu, mosevo, mystic414, nathansobo, nefiga@hotmail.com, Niloct, Richard Worth, saidovab, Scott González, Skaffen, waschmittel.

Comments

Note: please do NOT use the comments section of this blog post for reporting bugs. Bug reports should be filed in the jQuery UI Bug Tracker and support questions should be posted on the jQuery Forum.

If you have feedback on us doing our eleventh maintenance release for jQuery UI 1.8, feel free to leave a comment below. Thank you.

API Redesigns: The Past, Present and Future

Posted on by

Back in November, we announced the first of many API redesigns. In that post, we briefly stated our overall goals:

jQuery UI is undergoing an API redesign which will slim down the size of the API in order to provide a more stable codebase that is easier to learn and use. We’ll be posting the proposed changes over the next few weeks in order to gather feedback from the community. Our goal is to support the old (current) and new (proposed) APIs simultaneously in 1.9 and then remove support for the old APIs in 2.0.

Now it’s three months later and two things are clear: 1) it’s taking more than a few weeks to post all of the proposed changes; and 2) we didn’t give enough information about the planned changes and the reasoning behind them.

The Past

When jQuery UI was first created, it was a combination of new and existing plugins. Pulling in existing, popular plugins was beneficial for everyone involved: jQuery UI was released earlier and with more plugins, the original authors’ hard work was publicly recognized and supported by the jQuery Project and the existing user base gained official support for the code they were using. Unfortunately, there was a downside to this approach. Because the existing plugins were written by different authors with different design principles and different coding styles, there wasn’t much consistency within jQuery UI. Between the 1.0 and 1.8 releases there were a few attempts to standardize various parts of the API, but there was never a coordinated effort large enough to make the necessary changes.

In addition to the inconsistencies between plugins, other problems started to appear over the past three and a half years. As users requested more and more features, the number of options, methods and events continued to grow. Over time, this led to what we have today, where something as simple as a draggable element has almost 30 options. On one hand, it’s impressive that so many various use cases can be handled, often with the use of just one or two of these options. On the other hand, finding the right one or two options to use can be a daunting task, especially for new users.

The Present

Recognizing the existing problems, we approached the 1.8 release differently. We defined a new process for building plugins that focuses on simplified APIs that are easy to extend. With the success of the 1.8 release, especially the simplicity and flexibility of the Autocomplete widget, we were convinced that our new process was working. Having a new process and new standards, we decided to go back and redesign all of our existing plugins with the same design process. In October, the jQuery UI team got together in Boston to do a first pass at redesigning all of the existing plugins. A few weeks later we started posting the proposed changes to gather feedback from the community. We’re still working through some of the details for specific plugins.

Our goal is to have a completely refreshed project with the 2.0 release. We will have a much simpler API, better stability, full documentation and a full test suite for every plugin. However, getting there will require a lot of backward-incompatible changes. We’re aware of how painful that can be and we are doing everything we can to reduce the pain of upgrading. Specifically, we’re doing the following while implementing the new API:

  • Ensuring we have a full test suite for the 2.0 API
  • Creating a separate test suite for the 1.8 API
  • Re-implementing any deprecated functionality on top of the new functionality
  • Defaulting to the 1.8 API in cases where the old and new APIs cannot live side-by-side

This approach has several benefits, with one of the most important being that upgrading to 1.9 should not break any existing pages. In fact, the 1.9 release will have better support of the 1.8 API than any 1.8.x release. As plugins are refactored for 1.9, many bugs present in 1.8.x will be fixed and some of the fixes will not be easily ported to the 1.8 branch. Because the support for the 1.8 API in the 1.9 release is actually new code built on top of the 2.0 API, it benefits from these bug fixes. The addition of a full test suite for the 1.8 API ensures that these bugs are actually fixed in both APIs.

Defaulting to 100% support of the 1.8 API is great for upgrading to 1.9, but it doesn’t provide a way to determine if you’re ready to upgrade to only using the 2.0 API. In order to deal with this, we’ve added a new flag, jQuery.uiBackCompat. If you load jQuery, then set jQuery.uiBackCompat = false, then load jQuery UI, none of the 1.8 API will be loaded. This will result in only having the 2.0 API available and will allow you to test your pages for compatibility with the new API and provide confidence that you will be ready to upgrade to 2.0 when it is released.

The Future

When jQuery UI 2.0 is released, we will no longer support the 1.8 API. However, the 1.8 API compatibility layer from 1.9 should continue to work; it will just not be included in the 2.0 release and will no longer be officially supported. All new plugins will go through the new design process so large API changes like this should not occur again. Once the existing plugins have been updated to our new standards, we should be able to move the project forward much faster than we’ve previously been able to.

It’s worth mentioning that only widgets, utilities and effects are being refactored in 1.9. All interactions are going to be rewritten for 2.0 so they will be undergoing a different implementation process. As a user of jQuery UI, there shouldn’t be much perceived difference between the widget refactors and the interaction rewrites other than the release date.

We know that no one looks forward to refactoring existing code to work with API changes, and we’re working to make sure the transition process will be clear and simple.  We hope that you, our users, understand that we need take this opportunity to refine jQuery UI to make it more robust, extensible, and maintainable in the long term.