701f9f21edb316e858b8444130651516c5d4a21bMatt Sweeney<div class="intro">
701f9f21edb316e858b8444130651516c5d4a21bMatt Sweeney <p>The TabView widget is a UI control that enables the user switch between content panels.</p>
701f9f21edb316e858b8444130651516c5d4a21bMatt Sweeney
701f9f21edb316e858b8444130651516c5d4a21bMatt Sweeney</div>
701f9f21edb316e858b8444130651516c5d4a21bMatt Sweeney{{>getting-started}}
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h2 id="anatomy">Anatomy of a TabView</h2>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
059837458c41550fd899341168a72174942b9de1Matt Sweeney <h3>Minimum Markup Requirement</h3>
059837458c41550fd899341168a72174942b9de1Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>A <code>TabView</code> consists of a list of links that target a content element.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>The basic markup needed to create from HTML is the following:</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<div id="demo">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#foo">foo</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#bar">bar</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#baz">baz</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="foo">foo content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="bar">bar content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="baz">baz content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
059837458c41550fd899341168a72174942b9de1Matt Sweeney <h3 id="rendered-markup">Rendered Markup</h3>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<p>After a <code>TabView</code> is rendered, the final markup becomes:
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<div class="yui3-widget yui3-tabview">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="demo" class="yui3-tabview-content">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <ul class="yui3-tabview-list">
059837458c41550fd899341168a72174942b9de1Matt Sweeney <li class="yui3-tab yui3-widget yui3-tab-selected">
059837458c41550fd899341168a72174942b9de1Matt Sweeney <a href="#foo" class="yui3-tab-label yui3-tab-content">foo</a>
059837458c41550fd899341168a72174942b9de1Matt Sweeney </li>
059837458c41550fd899341168a72174942b9de1Matt Sweeney <li class="yui3-tab yui3-widget">
059837458c41550fd899341168a72174942b9de1Matt Sweeney <a href="#bar" class="yui3-tab-label yui3-tab-content">bar</a>
059837458c41550fd899341168a72174942b9de1Matt Sweeney </li>
059837458c41550fd899341168a72174942b9de1Matt Sweeney <li class="yui3-tab yui3-widget">
059837458c41550fd899341168a72174942b9de1Matt Sweeney <a href="#baz" class="yui3-tab-label yui3-tab-content">baz</a>
059837458c41550fd899341168a72174942b9de1Matt Sweeney </li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div class="yui3-tabview-panel">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="foo" class="yui3-tab-panel">foo content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="bar" class="yui3-tab-panel">bar content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="baz" class="yui3-tab-panel">baz content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h2 id="instantiating">Creating and Configuring a TabView</h2>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>A <code>TabView</code> instance can be created from existing markup on the page, or dynamically
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney using JavaScript.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h3 id="from-markup">From Existing Markup</h3>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>To create from existing markup, first conform to the basic markup pattern, then create a
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney new <code>TabView</code> instance, pointing to the existing <code>srcNode</code>, and render.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<div id="demo">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#foo">foo</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#bar">bar</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#baz">baz</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="foo">foo content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="bar">bar content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="baz">baz content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<script>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt SweeneyYUI().use('tabview', function(Y) {
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney var tabview = new Y.TabView({
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney srcNode: '#demo'
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney });
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney tabview.render();
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney});
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</script>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h3 id="from-js">From JavaScript</h3>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>To create purely from JavaScript, all that is required is passing the <code>TabView</code>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney constructor a list of <code>children</code> containing their respective <code>label</code>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney and <content> attributes, and call render. As with all YUI <code>Widget</code>s,
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney render takes an optional container to render into, or defaults to the <code>body</code> element.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<div id="demo"></div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<script>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt SweeneyYUI().use('tabview', function(Y) {
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney var tabview = new Y.TabView({
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney children: [{
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney label: 'foo',
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney content: '<p>foo content</p>'
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney }, {
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney label: 'bar',
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney content: '<p>bar content</p>'
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney }, {
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney label: 'baz',
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney content: '<p>baz content</p>'
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney }]
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney });
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney tabview.render('#demo');
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney});
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</script>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h2 id="skinning">Skinning TabView</h2>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>The <code>TabView</code> comes with a basic skin by default. This can be easily
059837458c41550fd899341168a72174942b9de1Matt Sweeney customized using the rich set of <a href="#rendered-markup">classNames</a>.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>For a more polished look and feel, we also ship with the "sam skin", which can
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney be applied by adding the <code>yui3-skin-sam</code> className to some ancestor:</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<body class="yui3-skin-sam">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney...
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney<div id="demo">
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#foo">foo</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#bar">bar</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <li><a href="#baz">baz</a></li>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </ul>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="foo">foo content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="bar">bar content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <div id="baz">baz content</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</div>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney...
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney</body>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney```
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <h2 id="events">TabView Events</h2>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <p>TabViews fire the following events during operation:</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <table>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <thead>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <th>Event</th>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <th>When</th>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <th>Payload</th>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </thead>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tbody>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>addChild</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td>a Tab is added to the TabView</td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>child, index</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>removeChild</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td>a Tab is removed from the TabView</td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>child, index</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>selectionChange</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td>the selected tab changes</td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>prevVal, newVal</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td><code>render</code></td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td>a Tabview is rendered</td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney <td>Normal change event signature (<code>newVal</code>, <code>prevVal</code>, etc). When dragging, extra event property <code>ddEvent : (drag:drag event)</code> is added</td>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tr>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </tbody>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney </table>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney
059837458c41550fd899341168a72174942b9de1Matt Sweeney <p>This is not an exhaustive list. See the <a href="{{apiDocs}}/module_tabview.html">API docs</a> for a complete listing.</p>
6f22811f3148a8875c32d1e4a34f19dc1b8579d4Matt Sweeney