src/cm/media/js/lib/yui/yui_3.10.3/docs/node-focusmanager/index.html
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>FocusManager Node Plugin</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        <a href="#toc" class="jump">Jump to Table of Contents</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            <h1>FocusManager Node Plugin</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                <div class="content"><div class='intro'>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        When designing widgets that manage a set of descendant controls (i.e. buttons in a toolbar, tabs in a tablist, menuitems in a menu, etc.) it is important to limit the number of descendants in the browser's default tab flow.  The fewer number of descendants in the default tab flow, the easier it is for keyboard users to navigate between widgets by pressing the tab key.  When a widget has focus it should provide a set of shortcut keys (typically the arrow keys) to move focus among its descendants.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        To this end, the Focus Manager Node Plugin makes it easy to define a Node's focusable descendants, define which descendant should be in the default tab flow, and define the keys that move focus among each descendant. Additionally, as the CSS <a href='http://www.w3.org/TR/CSS21/selector.html#x38'><code>:focus</code></a> pseudo class is not supported on all elements in all browsers, the Focus Manager Node Plugin provides an easy, cross-browser means of styling focus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
<div class="notice">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        <strong>NOTICE</strong>: This component is <strong>deprecated</strong>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        as of YUI 3.9.0 and will be removed in future versions.  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        If you require functionality similar to the one provided by this module, consider taking a look at the various modules in the <a href="http://yuilibrary.com/gallery/">YUI Gallery</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
<h2 id="getting-started">Getting Started</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
To include the source files for FocusManager Node Plugin and its dependencies, first load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
the YUI seed file if you haven't already loaded it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
<pre class="code prettyprint">&lt;script src=&quot;http:&#x2F;&#x2F;yui.yahooapis.com&#x2F;3.10.3&#x2F;build&#x2F;yui&#x2F;yui-min.js&quot;&gt;&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
Next, create a new YUI instance for your application and populate it with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
modules you need by specifying them as arguments to the <code>YUI().use()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
YUI will automatically load any dependencies required by the modules you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
specify.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
<pre class="code prettyprint">&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
&#x2F;&#x2F; Create a new YUI instance and populate it with the required modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
YUI().use(&#x27;node-focusmanager&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    &#x2F;&#x2F; FocusManager Node Plugin is available and ready for use. Add implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    &#x2F;&#x2F; code here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
For more information on creating YUI instances and on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
<a href="http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_use"><code>use()</code> method</a>, see the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
documentation for the <a href="../yui/index.html">YUI Global Object</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
<h2 id="using-the-focus-manager-node-plugin">Using the Focus Manager Node Plugin</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    To use the Focus Manager Node Plugin, start by identifying the parent element of the elements whose focus is to be managed.  For example, consider the following toolbar HTML:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
<pre class="code prettyprint">&lt;div id=&#x27;toolbar&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-add&#x27; value=&#x27;Add&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-edit&#x27; value=&#x27;Edit&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-print&#x27; value=&#x27;Print&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-delete&#x27; value=&#x27;Delete&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-open&#x27; value=&#x27;Open&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-save&#x27; value=&#x27;Save&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
&lt;&#x2F;div&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    To manage the focus of each button in the toolbar, start by retrieving a <a href='../node'>Node</a> instance representing the toolbar's root element (<code>&lt;div id=&#x27;toolbar&#x27;&gt;</code>). Next, call the Node's <a href='http://yuilibrary.com/yui/docs/api/classes/Node.html#method_plug'><code>plug</code></a> method, passing in a reference to the Focus Manager Node Plugin (<code>Y.Plugin.NodeFocusManager</code>) as the first argument, followed by an object literal of configuration attributes as the second.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    Use the <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_descendants'><code>descendants</code></a> configuration attribute to specify the child nodes of the root node whose focus is to be managed.  The <code>descendants</code> configuration attribute accepts a string representing a CSS selector, making it very easy to identify the elements whose focus should be managed.  For the toolbar, a value of 'input' will be passed as the value of the <code>descendants</code> configuration attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    Use the <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_keys'><code>keys</code></a> configuration attribute to identify which keys move focus between each of the specified descendant Nodes.  The <code>keys</code> configuration attribute accepts an object literal, the format of which is <code>{ next: &#x27;down:40&#x27;, previous: &#x27;down:38&#x27; }</code>.  The value for the <code>next</code> and <code>previous</code> sub attributes are used to attach <code>keys</code> event listeners.  Each value represents the type of event ('down' for <code>mousedown</code>, 'up' for <code>mouseup</code>, and 'press' for <code>keypress</code>) and key codes ('40' for the down arrow key) to use to navigate to the next/previous descendant.  For the toolbar the <code>keys</code> configuration attribute will be set to a value of <code>{ next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; }</code>, enabling the user to move focus among each button using the left and right arrows keys. (See the <a href='../event/key.html'>Using the key Event</a> section of the Event documentation for more information on 'key' event listeners.)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
<pre class="code prettyprint">&#x2F;&#x2F;  Retrieve the Node instance representing the toolbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
&#x2F;&#x2F;  (&lt;div id=&#x27;toolbar&#x27;&gt;) and call the &#x27;plug&#x27; method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
&#x2F;&#x2F;  passing in a reference to the Focus Manager Node Plugin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    &#x2F;&#x2F; CSS Selector indicating the descendant Nodes whose focus to manage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    &#x2F;&#x2F;  Move focus the buttons in the toolbar by pressing the left and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    &#x2F;&#x2F;  right arrow keys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    keys: { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        next: &#x27;down:39&#x27;, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        previous: &#x27;down:37&#x27; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    Use the <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_circular'><code>circular</code></a> configuration attribute to indicate that focus should be directed to the first or last descendant when the user has navigated to the first or last descendant.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    circular: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
<h3 id="activedescendant-attribute">The <code>activeDescendant</code> Attribute</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    The <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_activeDescendant'><code>activeDescendant</code></a> attribute represents which of the Focus Manager's <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_descendants'><code>descendants</code></a> is either currently focused or is focusable (<code>tabIndex</code> attribute is set to 0). As the user moves focus among the Focus Manager's defined descendants, the <code>activeDescendant</code> configuration attribute is updated to remain in sync with the currently focused descendant.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
    The <code>activeDescendant</code> configuration attribute can be set two different ways: via markup or via script.  To set the <code>activeDescendant</code> configuration attribute via markup, simply set the <code>tabIndex</code> attribute to 0 for the element that should be considered the active descendant. If the <code>tabIndex</code> attribute isn't set on any of the descendants the active descendant will be set to 0, or the index of the first enabled descendant. The following example shows how to make the second button in the toolbar the active descendant.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
<pre class="code prettyprint">&lt;div id=&#x27;toolbar&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-add&#x27; value=&#x27;Add&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    &lt;input type=&#x27;button&#x27; tabindex=&#x27;0&#x27; name=&#x27;btn-edit&#x27; value=&#x27;Edit&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-print&#x27; value=&#x27;Print&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-delete&#x27; value=&#x27;Delete&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-open&#x27; value=&#x27;Open&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    &lt;input type=&#x27;button&#x27; name=&#x27;btn-save&#x27; value=&#x27;Save&#x27;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
&lt;&#x2F;div&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    The <code>activeDescendant</code> configuration attribute can also be set via the object literal of configuration attributes passed to the <a href='http://yuilibrary.com/yui/docs/api/classes/Node.html#method_plug'><code>plug</code></a> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    &#x2F;&#x2F;  Make the second button in the toolbar the active descendant
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    activeDescendant: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    The <code>activeDescendant</code> configuration attribute can also be set at runtime via the <a href='http://yuilibrary.com/yui/docs/api/classes/Attribute.html#method_set'><code>set</code></a> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
toolbar.focusManager.set(&#x27;activeDescendant&#x27;, 1);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
<h3 id="styling-focus">Styling Focus</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    One of the challenges to styling the focus state of HTML elements is that support for the CSS <a href='http://www.w3.org/TR/CSS21/selector.html#x38'><code>:focus</code></a> pseudo class is limited to the <code>a</code> element in Internet Explorer. To fix this problem, the Focus Manager Node Plugin provides a <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_focusClass'><code>focusClass</code></a> configuration attribute that makes it easy to style focus across <em>all</em> elements in <em>all</em> browsers</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    The <code>focusClass</code> configuration attribute can be used one of two ways.  The first way is to simply pass a string representing the class name to be applied to the currently focused descendant Node instance.  For example, to apply a class of 'focus' to each button in the toolbar, set the the <code>focusClass</code> configuration attribute to a value of 'focus':
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    focusClass: &#x27;focus&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    Often styling focusable elements such as <code>&lt;input&gt;</code>s requires wrapping them in decorator elements, since <code>&lt;input&gt;</code> elements cannot have children.  In such cases, it is likely the class name used to style focus would be applied to the element decorating the focused descendant, rather than the descendant itself.  For this reason, it is also possible to pass an object literal as the value of the <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_focusClass'><code>focusClass</code></a> configuration attribute that defines not only the class name to be used to indicate focus, but a function used to retrieve the Node instance to which the class name should be applied.  For example, if each button in the toolbar where decorated by a <code>&lt;span&gt;</code>, the 'focus' class could be applied to the parent <code>&lt;span&gt;</code> of the focused <code>&lt;input&gt;</code> using the following code:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
    focusClass: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        className: &#x27;focus&#x27;, &#x2F;&#x2F;  The class name to use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        fn: function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            &#x2F;&#x2F;  The Node instance to which the class should be applied
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            return node.get(&#x27;parentNode&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    As demonstrated in the example, the function passed as the value of the <code>fn</code> property is passed a reference to the currently focused descendant.  That Node reference is then used to return the Node to which the class name is to be applied.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
<h3 id="managing-focus">Managing Focus</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    The Focus Manager Node Plugin manages focus among its defined descendants as an atomic operation: the Focus Manager's <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#attr_focused'><code>focused</code></a> configuration attribute is set to <code>true</code> the first time any descendant is focused, and is set to <code>false</code> the first time no descendant is focused.  The <code>focused</code> configuration attribute is read only, and is set either via user interaction (the user focuses one of the defined descendant elements using either the keyboard or the mouse), or programmatically via the <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#method_focus'><code>focus</code></a> and <a href='http://yuilibrary.com/yui/docs/api/classes/plugin.NodeFocusManager.html#method_blur'><code>blur</code></a> methods, as illustrated in the following example:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
<pre class="code prettyprint">var toolbar = Y.one(&#x27;#toolbar&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
toolbar.plug(Y.Plugin.NodeFocusManager, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
    descendants: &#x27;input&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
    keys: { next: &#x27;down:39&#x27;, previous: &#x27;down:37&#x27; }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
&#x2F;&#x2F;  Listen for when the &#x27;focused&#x27; attribute changes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
toolbar.focusManager.after(&#x27;focusedChange&#x27;, function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    if (event.newVal) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        Y.log(&#x27;The toolbar has focus&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        Y.log(&#x27;The toolbar has lost focus&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
&#x2F;&#x2F;  Focus the current active descendant, setting the &#x27;focused&#x27; attribute to true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
toolbar.focusManager.focus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
&#x2F;&#x2F;  Focus the second descendant in the toolbar, making it the active descendant
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
&#x2F;&#x2F;  (this won&#x27;t change the &#x27;focused&#x27; attribute, meaning the &#x27;focusedChange&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
&#x2F;&#x2F;  event handler won&#x27;t be called.)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
toolbar.focusManager.focus(1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
&#x2F;&#x2F;  Blur the current active descendant, setting the &#x27;focused&#x27; attribute to false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
&#x2F;&#x2F;  and causing the &#x27;focusedChange&#x27; event handler to be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
toolbar.focusManager.blur();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
<h3 id="best-practices">Best Practices</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    While it is possible to use the Focus Manager Node Plugin to manage focus among descendants of any type, it is recommended to use it with elements that are natively in the the browser's default tab flow. Doing so provides two primary benefits:  The first is that your code will work in all popular browsers, since some browsers don't support the <a href='http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex' title='Forms in HTML documents'><code>tabIndex</code></a> attribute on all elements.  Sticking with the elements that natively support <code>tabIndex</code> as defined in the HTML 4.01 specification will ensure better cross-browser keyboard support.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    The second benefit is that by using the set of natively focusable HTML elements, users of screen readers will still perceive the Focus Manager's defined descendants as actionable/clickable elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                    <div id="toc" class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
                            <h2 class="no-toc">Table of Contents</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                            <ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
<a href="#getting-started">Getting Started</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
<a href="#using-the-focus-manager-node-plugin">Using the Focus Manager Node Plugin</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
<a href="#activedescendant-attribute">The <code>activeDescendant</code> Attribute</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
<a href="#styling-focus">Styling Focus</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
<a href="#managing-focus">Managing Focus</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
<a href="#best-practices">Best Practices</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
                                        <li data-description="Creating an accessible toolbar using the Focus Manager Node Plugin and Node&#x27;s support for the WAI-ARIA Roles and States.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
                                            <a href="node-focusmanager-toolbar.html">Accessible Toolbar</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                                        <li data-description="Creating an accessible menu button using the Focus Manager Node Plugin, Event&#x27;s delegation support and mouseenter event, along with the Overlay widget and Node&#x27;s support for the WAI-ARIA Roles and States.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                                            <a href="node-focusmanager-button.html">Accessible Menu Button</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    assets: '../assets/node-focusmanager',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    name: 'node-focusmanager',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
    title: 'FocusManager Node Plugin',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
YUI.Env.Tests.examples.push('node-focusmanager-toolbar');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
YUI.Env.Tests.examples.push('node-focusmanager-button');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
</html>