How to support Index Scroll Bar
Round UI provides circular index scroll bar component.Refer to the following for supporting the circular index scroll bar.
Table of Contents
Layout
![]() |
![]() |
in Rectangular UI | in Round UI |
HTML code
<div class="ui-page ui-page-active" id="pageIndexScrollbar" > <header class="ui-header ui-header-small"> <h2 class="ui-title ui-title-text-fadeout">Index Scroll Bar</h2> </header> <div id="indexscrollbar"></div> <section class="ui-content"> <ul class="ui-listview ui-snap-listview" id="list1"> <li class="ui-listview-divider">A</li> <li>Anton</li> <li class="ui-listview-divider">B</li> <li>Barry</li> <li>Bob</li> <li class="ui-listview-divider">C</li> <li>Carry</li> <li class="ui-listview-divider">D</li> <li>Daisy</li> <li class="ui-listview-divider">E</li> <li>Eric</li> <li class="ui-listview-divider">F</li> <li>Fay</li> <li class="ui-listview-divider">G</li> <li>Garry</li> </ul> </section> </div>
Javascript code
How to create a component selectively
var indexScrollbarElement = document.getElementById("indexscrollbar"); if (!tau.support.shape.circle) { // Create IndexScrollbar indexScrollbar = new tau.widget.IndexScrollbar(indexScrollbarElement); } else { // Create CircularIndexScrollbar indexScrollbar = new tau.widget.CircularIndexScrollbar(indexScrollbarElement); }
How to use callback
indexScrollbarElement.addEventListener("select", function( event ) { var index = event.detail.index; // do something using the index console.log(index); });
In the following example, the list scrolls to the position of the list item defined using
the ui-listview-divider class, selected by the index scroll bar:
(Note : In rectangular UI, touching index generates the select, but in round UI, the select occurs when using rotary.)
(function() { var page = document.getElementById("pageIndexScrollbar"), listviewElement = document.getElementById("list1"), isCircle = tau.support.shape.circle, scroller, indexScrollbar; page.addEventListener("pageshow", function(ev) { var indexScrollbarElement = document.getElementById("indexscrollbar"), listDividers = listviewElement.getElementsByClassName("ui-listview-divider"), // list dividers dividers = {}, // collection of list dividers indices = [], // index list divider, i, idx; // For all list dividers, for(i = 0; i < listDividers.length; i++) { // Add the list divider elements to the collection divider = listDividers[i]; idx = divider.innerText; dividers[idx] = divider; // Add the index to the index list indices.push(idx); } scroller = tau.util.selectors.getScrollableParent(listviewElement); if (!isCircle) { indexScrollbar = new tau.widget.IndexScrollbar(indexScrollbarElement, {index: indices, container: scroller}); } else { // Create IndexScrollbar indexScrollbar = new tau.widget.CircularIndexScrollbar(indexScrollbarElement, {index: indices}); // Add SnapListview item "selected" event handler. listviewElement.addEventListener("selected", function (ev) { var indexValue = ev.target.textContent[0]; indexScrollbar.value(indexValue); }); } // Add IndexScrollbar index "select" event handler. indexScrollbarElement.addEventListener("select", function (ev) { var divider, idx = ev.detail.index; divider = dividers[idx]; if (divider && scroller) { // Scroll to the ui-listview-divider element scroller.scrollTop = divider.offsetTop - scroller.offsetTop; } }); }); page.addEventListener("pagehide", function(ev) { indexScrollbar.destroy(); }); } ());