30 Essential Controls
By Theresa Neil
As Bill mentioned in an earlier post, we don’t want to limit this blog to just the principles and patterns found in the book. For that you can check out our Explore the Book section.
This is the second article in a three part series on patterns and principles for RIA design.
- Standard Screen Patterns: 12 patterns w/100 examples
- Essential Controls: 30 controls for RIA design and development
- Components for Commonly Requested Features: 15 patterns and examples
Every designer has a set of controls they rely on to communicate an effective UI. This is my library of essential controls.
![30_essential_controls 30_essential_controls](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/30_essential_controls.png)
Unfortunately, no single RIA framework offers all 30 of these. So I included a checklist of which frameworks provide each control. If you have an addition or correction, please e-mail me, and I will post an updated framework/control matrix.
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/ria_frameworks.png)
The frameworks reviewed include: Flex, Laszlo, Silverlight and 12 Ajax frameworks and toolkits: ExtJS, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, SproutCore, LivePipeUI,IT Mill, Backbase.
01. Auto Suggest
![auto_recomend auto_recomend](http://designingwebinterfaces.com/blog/wp-content/uploads/2008/12/auto_recomend-300x122.png)
Google’s Auto-Complete
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, IT Mill, Backbase, Silverlight.
02. Carousel (variation as Coverflow)
![carousel_ex carousel_ex](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/carousel_ex-300x93.png)
Carousel Prototype carousel widget
Supported by: YUI, Prototype/script.aculo.us, JQuery, ITMill, Backbase, iCarousel
![coverflow_ex1 coverflow_ex1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/coverflow_ex1-300x101.png)
Coverflow MediaEvent Service’s Slideflow
Supported by: Flex, Prototype/script.aculo.us, JQuery, MooTools, RadControls for Silverlight
03. Charts & Graphs
![graph graph](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/graph-300x83.png)
![chart_wesabe chart_wesabe](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/chart_wesabe-300x115.png)
Charts Advanced charting features like hover details, drill down, rolling windows, toggle views…
Supported by: Flex, Laszlo, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery (SWF/Chart), MooTools, MochaUI, Backbase, SilverLight, AnyChart, Dundas, JPowered, JFreeChart, OpenFlashCharts, Flot, Plotr, PlotKit, WebFX, AjaxMcGraph, Measure Map.
04. Collapsible Panels (accordion, disclosure triangles, slide drawer)
![collapsible_accordion collapsible_accordion](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/collapsible_accordion-300x198.png)
Accordion Mutually exclusive collapsible panels showing status
![disclosure_arrows_mint disclosure_arrows_mint](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/disclosure_arrows_mint.png)
Disclosure arrows Mint.com uses disclosure arrows for summarizing and displaying accounts
![collapsible_sliding_fluxiom collapsible_sliding_fluxiom](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/collapsible_sliding_fluxiom-300x204.jpg)
Sliding panel Fluxiom uses a sliding panel instead of a dialog to show the selected photo’s details
Supported by: Flex, Laszlo, ExtJs (called panels), Dojo, Google Web Toolkit (disclosure panel), Prototype/script.aculo.us (accordion), JQuery, MooTools (accordion), MochaUI (split pane), SproutCore (split pane), IT Mill, Backbase (accordion), RadControls for Silverlight (PanelBar and Sliding Panel).
05. Combobox (select multiple, alternate list box UI, editable)
![combobox_multiselect_livepipe1 combobox_multiselect_livepipe1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/combobox_multiselect_livepipe1.png)
Select multiple LivePipe UI’s control takes less space and is easier to scan than an ocean of checkboxes
![combobox_multiselect_ex1 combobox_multiselect_ex1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/combobox_multiselect_ex1.png)
Alternate listbox UI Best alternative for multi select in small spaces, clearly displays all selections, and provides an easy way to edit
Supported by: Alternate Listbox UI, LivePipeUI
![combobox_editable1 combobox_editable1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/combobox_editable1.png)
Editable combobox Editable combobox allows for lookup and/or text entry
Supported by: Flex, Laszlo, ExtJs, Prototype/script.aculo.us, JQuery, MooTools (MUI.ComboBox), IT Mill, Backbase, RadControls for Silverlight.
06. Date Picker/Calendar (select range, date/time combination)
![datepicker_jquery datepicker_jquery](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/datepicker_jquery-300x140.png)
Advanced calendar Select a range, discontinuous dates, or exclude a certain day
![date_time_picker_ex3 date_time_picker_ex3](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/date_time_picker_ex3.png)
Date/time picker Select a date and time in a single control
Supported by: Flex, Laszlo, ExtJS, Dojo, YUI, JQuery, Scal built on Prototype, MooTools, MochUI, IT Mill, Backbase, Silverlight, dhtmlxCalendar, keyboard accessible calendar, more examples on Woork
07. Dialogs (modal, light weight, lightbox)
![dialog_modal1 dialog_modal1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dialog_modal1-300x204.png)
Modal dialog Mint offers a modal for adding an account
![dialog_modeless dialog_modeless](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dialog_modeless-300x266.png)
Modeless dialog Google Maps provides a modeless dialog for getting directions
![dialog_lightbox_jquery dialog_lightbox_jquery](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dialog_lightbox_jquery-300x250.png)
Lightbox JQuery provides a lightbox plugin, a modal dialog that blacks out the parent screen
Supported by: Flex(modal), Laszlo (modal and modeless), ExtJs (modal), Dojo (modal and lightbox), YUI( listed under Containers: Modal and Overlay), Prototype/script.aculo.us, JQuery (modal, modeless, lightbox) , SproutCore (has a really nice example of each under ‘panes’), MooTools, MochaUI, LivePipe UI, IT Mill, Backbase (modal and modeless window), Silverlight (modal and lightbox).
08. Docking
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dock_eyeblaster.png)
Dockable menu Campaign Manager by eyeblaster offers a pinned/unpinned menu for navigating between campaigns
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI, Backbase, Silverlight.
09. Drag & Drop Manager
![drag_drop_extjs drag_drop_extjs](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/drag_drop_extjs.png)
![drag_drop_extjs_drop drag_drop_extjs_drop](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/drag_drop_extjs_drop.png)
Drag and drop ExtJS photo organizer demo
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI, Backbase, Silverlight.
10. Dynamic Filter
![dynamic_filter_flex dynamic_filter_flex](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dynamic_filter_flex-300x78.png)
Dynamic table filtering Flex offers a filter feature that dynamically filters the results while the user types, demo
![dynamic_filter_rico dynamic_filter_rico](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/dynamic_filter_rico.png)
11. Feedback/ Status
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/feedback_gmail.png)
Feedback Gmail status message
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI, IT Mill, Backbase, Silverlight12. Fisheye/ Spotlight
![fisheye_alpslab fisheye_alpslab](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/fisheye_alpslab-300x256.png)
Fisheye Apslab Fish-eye Lense
Apply this concept to a dense chart or map for a truly useful feature.
Supported by: Flex, ExtJs (spotlight), Dojo , Prototype/script.aculo.us, JQuery, MooTools, MochaUI, Silverlight
13. Gauges (and other visual progress or status indicators)
![gauge_citibank gauge_citibank](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/gauge_citibank-300x85.png)
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/gauge_radcontrols_silverlight.png)
Gauge Thermometer gauge in RadControls for Silverlight
Gauges provide a concise visual summary in heads-up-display or other goal directed designs
Supported by: Flex (various plug-ins and Flex Charting), ExtJs (combined with GWT), Dojo, Google Web Toolkit, Prototype/script.aculo.us, JQuery (SWF/Gauge), MooTools, MochaUI, Silverlight, AnyChart, Dundas
14. Help Tip/ Quick Tip
![help_tip1 help_tip1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/help_tip1-300x169.png)
Quick Tip Picnik engages new users with some helpful advice
More than just a tooltip, these are fully formatted messages typically presented in a modeless dialog.
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI (use overlay container), Google Web Toolkit (use popup panel), Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI (use window control), IT Mill, Backbase, Silverlight
15. Hot Keys
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/hotkey_balsamiq.png)
Hot keys Balsamiq Mockups has hot keys for frequent actions
Supported by: Flex, Laszlo, Mochui, LivePipe UI, IT Mill, Backbase, Silverlight
16. Hover Action
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/hover_action_37signals.png)
Hover action Instead of cluttering the screen with redundant actions, Basecamp reveals the edit and delete actions onHover
Supported by: Flex, Laszlo, ExtJs, YUI, JQuery, MooTools, MochaUI, Backbase, Silverlight, good post by Bill on hover actions and missed moments
17. Hover Detail
![ria_frameworks ria_frameworks](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/hover_details_netflix.png)
Hover detail Netflix hover details
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI (overlay), Prototype/script.aculo.us, JQuery, MooTools (smart hover box), IT Mill, Silverlight
18. Inline Edit
![inline_edit_flickr inline_edit_flickr](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/inline_edit_flickr.png)
Inline edit Instead of showing form fields in pages that are usually read (not edited), Flickr provides inline editing
Supported by: Flex (only in the grid), Laszlo (only in the grid), ExtJs, Dojo, YUI, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, IT Mill, Backbase (only in the grid), Silverlight (only in the grid)
19. Progress Indicator/ Loading
![loading_picnik loading_picnik](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/loading_picnik-300x111.png)
Progress indicator Picnik loading indicator
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI, IT Mill, Backbase, Silverlight
20. Rating
![rating_graffletopia rating_graffletopia](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/rating_graffletopia-300x65.png)
Star rating Graffletopia offers one-click star ratings for shared stencils
Supported by: ExtJs extension, Dojo widget, Starbox for Prototype/script.aculo.us, JQuery, MooTools , MochaUI
21. Record Locator/ Paginator
![record_locator_lls record_locator_lls](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/record_locator_lls-300x55.png)
Record locator Like the control in PDF Viewer, the record locator lets you navigate through records in a dataset or skip to a specific record by name
![paginator_yahoo paginator_yahoo](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/paginator_yahoo-300x28.png)
Paginator Typically used for paging through tables, screens, or other result sets
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, LivePipe UI, Backbase, Silverlight
22. Slider
![slider_innography slider_innography](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/slider_innography.png)
Slider Innography provides sliders in their quick filter for refining results displayed on a chart
Supported by: Flex, Laszlo, ExtJs, Dojo, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, IT Mill, Backbase, RadControls for Silverlight
23. Scoped Search
![scoped_search_vimeo scoped_search_vimeo](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/scoped_search_vimeo.png)
Scoped search Like iTunes, allows for the optional selection of a category before entering free form search text, example from Vimeo’s help page
Supported by: custom css and js code, example at Janko at warp speed, RadControls for Silverlight
24. Sparklines
![sparklines_retailmenot_goodcoupon sparklines_retailmenot_goodcoupon](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/sparklines_retailmenot_goodcoupon.png)
![sparklines_google_analytics sparklines_google_analytics](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/sparklines_google_analytics.png)
Sparklines Great way to show the “shape” or trend of data is a small space, examples from RetailMeNot.com and Google Analytics. Created by Edward Tufte.
Supported by: Nuby on Rails, Any Chart, JQuery plugin, Flex , and two more ones for Flex at Microcharts and Birdeye, Google API, Visifire for Silverlight
25. Table/ Data Grid ( scrolling, editable, grouped)
![table_scrolling_extjs1 table_scrolling_extjs1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/table_scrolling_extjs1-300x213.png)
Scrolling table Endless scrolling, no paging, just like a desktop app, example from ExtJS
![table_cell_editing_blist1 table_cell_editing_blist1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/table_cell_editing_blist1-300x194.png)
Editable table Blist offers inline cell editing in their products. Best practice, highlight the selected row, and only display an editor in the selected cell. Don’t forget to accomodate keyboard navigation.
![table_grouping1 table_grouping1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/table_grouping1-300x181.png)
Tree table Grouping by row, displays as a tree table, example from ExtJS
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Backbase, Silverlight
26. Toolbar
![toolbar_sugarsync toolbar_sugarsync](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/toolbar_sugarsync-300x103.png)
![toolbar_flickr1 toolbar_flickr1](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/toolbar_flickr1.png)
Toolbar Provide actions in proximity to the object, examples from SugarSync and Flickr
Supported by: Flex, Laszlo, ExtJs, Dojo, YUI, Google Web Toolkit, Prototype/script.aculo.us, JQuery, MooTools, MochaUI, Backbase, RadControls for Silverlight
27. Vertical Browser
![vertical_browser_apple vertical_browser_apple](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/vertical_browser_apple-300x171.png)
Vertical browser Apple’s vertical browser for exploring Dashboard widgets
Supported by: custom code of multiple list boxes
28. View Toggle (buttons, button bar)
![view_toggle2 view_toggle2](http://designingwebinterfaces.com/blog/wp-content/uploads/2008/12/view_toggle2.png)
Toggle buttons Separate buttons for switching between graph and grid views Campaign Manager by eyeblaster
![view_toggle_paypal view_toggle_paypal](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/view_toggle_paypal.png)
Toggle button bar Single button bar for capturing binary choices
Supported by: Flex, Laszlo, Dojo, YUI, JQuery, MooTools, MochaUI, Backbase, Silverlight
29. WYSIWYG Editor/ Rich Text Editor
![wysiwyg_wordpress wysiwyg_wordpress](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/wysiwyg_wordpress-300x286.png)
Rich text editor WordPress offers a a WYSIWYG editor for blogging
Supported by: Flex, Laszlo, Dojo, YUI, Google Web Toolkit, JQuery, MooTools, MochaUI, IT Mill, Backbase, Silverlight
30. Zoom
![zoom_jqzoom zoom_jqzoom](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/zoom_jqzoom-300x130.png)
Zoom Zoom in on a certain spot, example from jQZoom
Supported by: Flex, Laszlo, ExtJs (spotlight), Prototype/script.aculo.us (zOOm), JQuery, MooTools (Joomla), MochaUI, Silverlight (silverZoom)
Bonus- Desktop Style Container
![desktop_container_otherinbox desktop_container_otherinbox](http://designingwebinterfaces.com/blog/wp-content/uploads/2009/01/desktop_container_otherinbox-300x190.png)
Desktop style app OtherInbox built with SproutCore
A desktop style container isn’t actually a control, but frequently required when developing enterprise software and productivity web applications. Many of the frameworks that offer this feature include built in windows management, split panels, and fluid layout.
Supported by: Flex, Laszlo, ExtJs, YUI, JQuery, MochaUI, Backbase, SproutCore, Silverlight
Send me any corrections and/or additions, and I will upload an updated control/framework matrix.
Thanks to Joonas Lehtinen of IT Mill, Ryan Johnson of LivePipe, and Peter Svensson who is a Dojo expert, and Darren James, co-author of Ajax in Action.
Update* Cody Lindley at jQuery provided a comprehensive list with links to code for jQuery support for all 30 controls.