Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 3.3
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Sparkle
-
Assignee Priority:P1
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial
Description
Create a completely new ACE component to provide a rich, cross-browser selectMenu component.
The high-level initial requirements for selection component are:
- Must support common selection component functionality:
- Select one item from a popup list of options
- Must NOT use the native browser input elements to render the selection list itself. This is to avoid platform/browser specific quirks and differences in behavior with these elements.
- Each selection list item may be either a simple String label/value pair, or a facet (with arbitrary complexity, nested components, etc.)/value pair.
- Must be fully stylable using CSS, including each selection row item.
- Individual selection row items maybe disabled or enabled. When disabled they adopt a disable style appearance and cannot be selected, although they still appear in the list.
- Must support keyboard navigation: Arrow keys to move up/down the list, Enter to select the current item.
- Must support mouse navigation: highlight list item as hovered over (same as moving up.dwn the list), click to select an item.
- Styling must differentiate between a "highlighted/focussed" row and a selected row (similar to current ice:rowSelector behavior).
- Ability to size the component either automatically (component will size itself large enough to render it's selection rows), or via CSS width/height. Size attribute may be used on the component if necessary.
- The look and feel of this component must be consistent regardless of the browser it is rendered on.
- Should support extreme lazyInit/proactive cleanup of JavaScript listeners and objects for enhanced scalability (in large dataTables, for example).
The high-level initial requirements for selection component are:
- Must support common selection component functionality:
- Select one item from a popup list of options
- Must NOT use the native browser input elements to render the selection list itself. This is to avoid platform/browser specific quirks and differences in behavior with these elements.
- Each selection list item may be either a simple String label/value pair, or a facet (with arbitrary complexity, nested components, etc.)/value pair.
- Must be fully stylable using CSS, including each selection row item.
- Individual selection row items maybe disabled or enabled. When disabled they adopt a disable style appearance and cannot be selected, although they still appear in the list.
- Must support keyboard navigation: Arrow keys to move up/down the list, Enter to select the current item.
- Must support mouse navigation: highlight list item as hovered over (same as moving up.dwn the list), click to select an item.
- Styling must differentiate between a "highlighted/focussed" row and a selected row (similar to current ice:rowSelector behavior).
- Ability to size the component either automatically (component will size itself large enough to render it's selection rows), or via CSS width/height. Size attribute may be used on the component if necessary.
- The look and feel of this component must be consistent regardless of the browser it is rendered on.
- Should support extreme lazyInit/proactive cleanup of JavaScript listeners and objects for enhanced scalability (in large dataTables, for example).
Might also need a simpleSelectOneMenu that uses the native browser widget like h:selectOneMenu, but works correctly with ICEfaces.
Another JIRA exists to also enhance ace:list to align its features when used as a "selectOneManyList" with those described in this JIRA (
ICE-8934).