src/cm/media/js/lib/yui/yui3-3.15.0/build/tabview-base/tabview-base-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('tabview-base', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
var getClassName = Y.ClassNameManager.getClassName,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
    TABVIEW = 'tabview',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
    TAB = 'tab',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
    PANEL = 'panel',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
    SELECTED = 'selected',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
    EMPTY_OBJ = {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
    DOT = '.',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    TabviewBase = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
        this.init.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
TabviewBase.NAME = 'tabviewBase';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
TabviewBase._classNames = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    tabview: getClassName(TABVIEW),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
    tabviewPanel: getClassName(TABVIEW, PANEL),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
    tabviewList: getClassName(TABVIEW, 'list'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
    tab: getClassName(TAB),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
    tabLabel: getClassName(TAB, 'label'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
    tabPanel: getClassName(TAB, PANEL),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
    selectedTab: getClassName(TAB, SELECTED),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    selectedPanel: getClassName(TAB, PANEL, SELECTED)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
TabviewBase._queries = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    tabview: DOT + TabviewBase._classNames.tabview,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    tabviewList: '> ul',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
    tab: '> ul > li',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
    tabLabel: '> ul > li > a',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    tabviewPanel: '> div',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    tabPanel: '> div > div',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    selectedTab: '> ul > ' + DOT + TabviewBase._classNames.selectedTab,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    selectedPanel: '> div ' + DOT + TabviewBase._classNames.selectedPanel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
Y.mix(TabviewBase.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    init: function(config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
        config = config || EMPTY_OBJ;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        this._node = config.host || Y.one(config.node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        this.refresh();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    initClassNames: function(index) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        var _classNames = Y.TabviewBase._classNames;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        Y.Object.each(Y.TabviewBase._queries, function(query, name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
            // this === tabview._node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
            if (_classNames[name]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
                var result = this.all(query);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                if (index !== undefined) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
                    result = result.item(index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
                if (result) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
                    result.addClass(_classNames[name]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        }, this._node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        this._node.addClass(_classNames.tabview);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    _select: function(index) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
        var _classNames = Y.TabviewBase._classNames,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
            _queries = Y.TabviewBase._queries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
            node = this._node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            oldItem = node.one(_queries.selectedTab),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            oldContent = node.one(_queries.selectedPanel),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
            newItem = node.all(_queries.tab).item(index),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
            newContent = node.all(_queries.tabPanel).item(index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        if (oldItem) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            oldItem.removeClass(_classNames.selectedTab);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        if (oldContent) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            oldContent.removeClass(_classNames.selectedPanel);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        if (newItem) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
            newItem.addClass(_classNames.selectedTab);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
        if (newContent) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            newContent.addClass(_classNames.selectedPanel);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    initState: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
        var _queries = Y.TabviewBase._queries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            node = this._node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            activeNode = node.one(_queries.selectedTab),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            activeIndex = activeNode ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
                    node.all(_queries.tab).indexOf(activeNode) : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
        this._select(activeIndex);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
    // collapse extra space between list-items
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
    _scrubTextNodes: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
        this._node.one(Y.TabviewBase._queries.tabviewList).get('childNodes').each(function(node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            if (node.get('nodeType') === 3) { // text node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                node.remove();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
    // base renderer only enlivens existing markup
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
    refresh: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
        this._scrubTextNodes();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
        this.initClassNames();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
        this.initState();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
        this.initEvents();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
    tabEventName: 'click',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    initEvents: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        // TODO: detach prefix for delegate?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        // this._node.delegate('tabview|' + this.tabEventName),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        this._node.delegate(this.tabEventName,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
            this.onTabEvent,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
            Y.TabviewBase._queries.tab,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
        );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
    onTabEvent: function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
        e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
        this._select(this._node.all(Y.TabviewBase._queries.tab).indexOf(e.currentTarget));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    destroy: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
        this._node.detach(this.tabEventName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
Y.TabviewBase = TabviewBase;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
}, '@VERSION@', {"requires": ["node-event-delegate", "classnamemanager"]});