tabview.js revision 1c118aa68b37ac03c2dddad1c0916a56af19abc0
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludovar queries = Y.TabviewBase.queries,
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo templates = {
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo contentBox: '<div></div>',
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo tablist: '<ul></ul>',
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo tab: '<li><a href="#"><em>{label}</em></li>',
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo content: '<div></div>',
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo tabPanel: '<div>{content}</div>'
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo };
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludoY.Tabview = Y.Base.create('tabview', Y.Widget, [Y.TabviewBase, Y.WidgetParent],
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo { // prototype
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo select: function(index) {
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo if (index instanceof Y.Node) { // might be a tab item
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo index = this._node.all(queries.tab).indexOf(index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo }
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo if (Y.Lang.isNumber(index)) {
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo this.set('activeIndex', index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo }
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo },
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo addTab: function(config, index) {
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo var node = this._node.one(queries.tablist)
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo .insert(Y.substitute(templates.tab, config), index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo var content = this._node.one(queries.content)
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo .insert(Y.substitute(templates.tabPanel, config), index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo this.initClassNames(index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo if (config.active) {
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo this.select(index);
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo }
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo
c140e699d24c1aa51e5e54448cda8ed1300b1f71ludo this.fire('tabAdded', {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma index: index,
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma target: node,
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma relatedTarget: content
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma });
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return this;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma addTabs: function(tabs) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma Y.each(tabs, function(tab) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this.addTab(tab);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }, this);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma create: function(config) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma // create or use existing container
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this._node = this._node || Y.Node.create(templates.content);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma // create tab and panel containers
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma var list = this._node.appendChild(Y.Node.create(templates.tablist)),
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma content = this._node.appendChild(Y.Node.create(templates.content));
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma if (config) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this.addTabs(config);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return this;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma removeTab: function(index) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma var node = this._node.one(queries.tablist).removeChild(
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this._node.all(queries.tab).item(index));
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma var content = this._node.one(queries.content).removeChild(
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this._node.all(queries.tabPanel).item(index));
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this.fire('tabRemoved', {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma index: index,
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma target: node,
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma relatedTarget: content
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma });
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma {// static
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma ATTRS: {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma node: {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma getter: function() {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return this._node;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma setter: function(node) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this._node = node;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return node;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma activeIndex: {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma setter: function(index) {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma this._select(index);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return index;
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma },
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma getter: function() {
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma return this._node.all(queries.tab)
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma .indexOf(this._node.one(queries.selectedTab));
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma }
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma);
0df15ffb4219f8d3b14474bc44ae2da33be10a21hajma