Archive for March, 2007

Spry Widgets and Tab Index

Hi Spry:fans,

It has been a big week here at Adobe. We announced CS3, so we can finally talk about Spry integration into DW. While I will jump into that topic in more detail later, I just wanted to quickly discuss a point that has been brought up in reference to widgets, accessibility and standards.

We are using tabindex in our widgets, like on the Collapsible Panel and Menu bar, to enable keyboard navigation. It has been pointed out by some that this doesn’t validate as it is an improper use of the attribute.

We are taking the tack of favoring accessibility and usability over validation in this scenario. Both IE and Mozilla-based browsers have implemented the tabindex to work on most page element just for this reason. We feel that this usefulness for accessibility outweighs validation concerns.

Of course, our widgets are set up to also accept tags in the tabs, which will allow it to get focus. Choose either method.

While tabindex will fail current W3C validation, the standards are catching up. Note that Tab Index is discussed in W3C specs, including the WAI-ARIA:

The Spry team will be discussing standards and accessibility more in the near future.

P.S. Note on the 1.5 Preview: We just added the Effects Migration doc that explains the changes that will be required to go from 1.4 to 1.5.

Spry 1.5 preview is live!

Hi Spry:fans,

I am pleased to announce that we just pushed the Spry 1.5 preview to Labs. This is a sneak peak at some of the new functionality that will be available in the Spry 1.5 release. There is no new zip today. That will not be ready for a while yet, but we wanted to show you what we are up to.

This is an opportunity for the community to see major new features and to provide feedback. We want to make sure that our thinking matches your thinking in the way we implement complex new features, like Nested Data Sets.
The preview materials can be found at
So, today, we are happy to present, finally:

Nested Data Sets – You can access data in nested XML structures. This lets you make the nested lists. We also have a way to do advanced flattening. This takes the nested information and flattens it into the main data set. We want your feedback on our implementation of this.

JSON Data Sets – Per your requests, use JSON data as your source.

HTML Data Sets – My favorite new feature: use HTML tables or other HTML structures as data sources. This will go a long way towards javascript degradation and search engine optimization.

Session Handling – We created a method for detecting session timeouts during the XMLHTTPRequest. Samples for different server models show how to handle the reply.

Form Submission – Samples on how to do form submission via the XMLHTTPRequest.

Paging Data sets – We made some good enhancements to the Spry Pager.

Effects rewrite – As noted in my previous post, we changed the way effects work. Check out the new methodology. No need to change your code yet, but I wrote a document talking about how to change over to the new code.

Radio Button Validation Widget – Cristian whipped this one up in response to use requests this week!

Auto Suggest Widget – Our first data/widget hybrid, set up a suggest text field with data set suggesting.

Spry API – Finally! It’s pretty close to final, but we need to get it out to you all.

Plus a couple more items for you…
Let us know what you think.

Some changes in Spry 1.5

Good morning, spry:fans,

I wanted to talk about one of the changes we are making for Spry 1.5. This is just some information so that you will be better prepared for Spry 1.5. In my previous post, I mentioned the March preview- May release timetable. We are still on track for that. JSON support is now working and we also have some samples on form submission and session handling ready to go.

I wanted to give a brief overview of the changes we made for Spry Effects. For those that upgrade to 1.5, this change will impact existing pages with effects. The changes that will need to be made are simple and straightforward, and we will have a document specifically outlining the changes that will need to be made.

The main idea is that we changed from using functions to using classes to enable the effects. This mirrors how widgets work today.

For instance, in Spry 1.5, a basic effect will now look like:

<a href="#" onclick="theEffect.start();">Start Effect</a>
<div id="effectMe">The content to effect</div>
var theEffect = new Spry.Effect.Fade("effectMe",{duration:500, from:’100%’, to:"0%’});

We have also changed some Effect names to be more straightforward. For instance, “AppearFade” is now “Fade”.

We are also including some wrapper functions that will still run the old versions, but these will take a small change to the code to enable, but less so than moving the functions to objects.

An example:
<a href="#" onclick="Spry.Effect.Shake("theElement");">Start Effect</a>
would be:
<a href="#" onclick="Spry.Effect.DoShake("theElement");">Start Effect</a>

where we added ‘Do’ to the effect name. Then they will work as normal.

This was done for consistency reasons. Now all effects, single and cluster, work the same way. It also was done so that clustering was easier to control, with stopping and toggling being smoother.

And now it fully supports the observer notification model we use for Spry Data.

We think that this change will make using Effects easier in the future. We are always reticent to force changes to existing pages, but in this case, we think it’s worth it.

And of course, if your page is working properly and you don’t want to upgrade, then no changes need to be made!

So that is it for this time. Just some Spry foreshadowing.
We should have the preview up in a few weeks.