diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/build/tabview/tabview-debug.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/lib/yui/yui_3.10.3/build/tabview/tabview-debug.js Tue Jul 16 14:29:46 2013 +0200
@@ -0,0 +1,443 @@
+/*
+YUI 3.10.3 (build 2fb5187)
+Copyright 2013 Yahoo! Inc. All rights reserved.
+Licensed under the BSD License.
+http://yuilibrary.com/license/
+*/
+
+YUI.add('tabview', function (Y, NAME) {
+
+/**
+ * The TabView module
+ *
+ * @module tabview
+ */
+
+var DOT = '.',
+
+ /**
+ * Provides a tabbed widget interface
+ * @param config {Object} Object literal specifying tabview configuration properties.
+ *
+ * @class TabView
+ * @constructor
+ * @extends Widget
+ * @uses WidgetParent
+ */
+ TabView = Y.Base.create('tabView', Y.Widget, [Y.WidgetParent], {
+
+ _afterChildAdded: function() {
+ this.get('contentBox').focusManager.refresh();
+ },
+
+ _defListNodeValueFn: function() {
+ var node = Y.Node.create(this.LIST_TEMPLATE);
+
+ node.addClass(Y.TabviewBase._classNames.tabviewList);
+
+ return node;
+ },
+
+ _defPanelNodeValueFn: function() {
+ var node = Y.Node.create(this.PANEL_TEMPLATE);
+
+ node.addClass(Y.TabviewBase._classNames.tabviewPanel);
+
+ return node;
+ },
+
+ _afterChildRemoved: function(e) { // update the selected tab when removed
+ var i = e.index,
+ selection = this.get('selection');
+
+ if (!selection) { // select previous item if selection removed
+ selection = this.item(i - 1) || this.item(0);
+ if (selection) {
+ selection.set('selected', 1);
+ }
+ }
+
+ this.get('contentBox').focusManager.refresh();
+ },
+
+ _initAria: function() {
+ var contentBox = this.get('contentBox'),
+ tablist = contentBox.one(Y.TabviewBase._queries.tabviewList);
+
+ if (tablist) {
+ tablist.setAttrs({
+ //'aria-labelledby':
+ role: 'tablist'
+ });
+ }
+ },
+
+ bindUI: function() {
+ // Use the Node Focus Manager to add keyboard support:
+ // Pressing the left and right arrow keys will move focus
+ // among each of the tabs.
+
+ this.get('contentBox').plug(Y.Plugin.NodeFocusManager, {
+ descendants: DOT + Y.TabviewBase._classNames.tabLabel,
+ keys: { next: 'down:39', // Right arrow
+ previous: 'down:37' }, // Left arrow
+ circular: true
+ });
+
+ this.after('render', this._setDefSelection);
+ this.after('addChild', this._afterChildAdded);
+ this.after('removeChild', this._afterChildRemoved);
+ },
+
+ renderUI: function() {
+ var contentBox = this.get('contentBox');
+ this._renderListBox(contentBox);
+ this._renderPanelBox(contentBox);
+ this._childrenContainer = this.get('listNode');
+ this._renderTabs(contentBox);
+ },
+
+ _setDefSelection: function() {
+ // If no tab is selected, select the first tab.
+ var selection = this.get('selection') || this.item(0);
+
+ this.some(function(tab) {
+ if (tab.get('selected')) {
+ selection = tab;
+ return true;
+ }
+ });
+ if (selection) {
+ // TODO: why both needed? (via widgetParent/Child)?
+ this.set('selection', selection);
+ selection.set('selected', 1);
+ }
+ },
+
+ _renderListBox: function(contentBox) {
+ var node = this.get('listNode');
+ if (!node.inDoc()) {
+ contentBox.append(node);
+ }
+ },
+
+ _renderPanelBox: function(contentBox) {
+ var node = this.get('panelNode');
+ if (!node.inDoc()) {
+ contentBox.append(node);
+ }
+ },
+
+ _renderTabs: function(contentBox) {
+ var _classNames = Y.TabviewBase._classNames,
+ _queries = Y.TabviewBase._queries,
+ tabs = contentBox.all(_queries.tab),
+ panelNode = this.get('panelNode'),
+ panels = (panelNode) ? this.get('panelNode').get('children') : null,
+ tabview = this;
+
+ if (tabs) { // add classNames and fill in Tab fields from markup when possible
+ tabs.addClass(_classNames.tab);
+ contentBox.all(_queries.tabLabel).addClass(_classNames.tabLabel);
+ contentBox.all(_queries.tabPanel).addClass(_classNames.tabPanel);
+
+ tabs.each(function(node, i) {
+ var panelNode = (panels) ? panels.item(i) : null;
+ tabview.add({
+ boundingBox: node,
+ contentBox: node.one(DOT + _classNames.tabLabel),
+ panelNode: panelNode
+ });
+ });
+ }
+ }
+}, {
+ ATTRS: {
+ defaultChildType: {
+ value: 'Tab'
+ },
+
+ listNode: {
+ setter: function(node) {
+ node = Y.one(node);
+ if (node) {
+ node.addClass(Y.TabviewBase._classNames.tabviewList);
+ }
+ return node;
+ },
+
+ valueFn: '_defListNodeValueFn'
+ },
+
+ panelNode: {
+ setter: function(node) {
+ node = Y.one(node);
+ if (node) {
+ node.addClass(Y.TabviewBase._classNames.tabviewPanel);
+ }
+ return node;
+ },
+
+ valueFn: '_defPanelNodeValueFn'
+ },
+
+ tabIndex: {
+ value: null
+ //validator: '_validTabIndex'
+ }
+ },
+
+ HTML_PARSER: {
+ listNode: function(srcNode) {
+ return srcNode.one(Y.TabviewBase._queries.tabviewList);
+ },
+ panelNode: function(srcNode) {
+ return srcNode.one(Y.TabviewBase._queries.tabviewPanel);
+ }
+ },
+
+ // Static for legacy support.
+ LIST_TEMPLATE: '
',
+ PANEL_TEMPLATE: ''
+});
+
+// Map to static values by default.
+TabView.prototype.LIST_TEMPLATE = TabView.LIST_TEMPLATE;
+TabView.prototype.PANEL_TEMPLATE = TabView.PANEL_TEMPLATE;
+
+Y.TabView = TabView;
+/**
+ * Provides Tab instances for use with TabView
+ * @param config {Object} Object literal specifying tabview configuration properties.
+ *
+ * @class Tab
+ * @constructor
+ * @extends Widget
+ * @uses WidgetChild
+ */
+Y.Tab = Y.Base.create('tab', Y.Widget, [Y.WidgetChild], {
+ BOUNDING_TEMPLATE: '',
+ CONTENT_TEMPLATE: '',
+ PANEL_TEMPLATE: '',
+
+ _uiSetSelectedPanel: function(selected) {
+ this.get('panelNode').toggleClass(Y.TabviewBase._classNames.selectedPanel, selected);
+ },
+
+ _afterTabSelectedChange: function(event) {
+ this._uiSetSelectedPanel(event.newVal);
+ },
+
+ _afterParentChange: function(e) {
+ if (!e.newVal) {
+ this._remove();
+ } else {
+ this._add();
+ }
+ },
+
+ _initAria: function() {
+ var anchor = this.get('contentBox'),
+ id = anchor.get('id'),
+ panel = this.get('panelNode');
+
+ if (!id) {
+ id = Y.guid();
+ anchor.set('id', id);
+ }
+ // Apply the ARIA roles, states and properties to each tab
+ anchor.set('role', 'tab');
+ anchor.get('parentNode').set('role', 'presentation');
+
+ // Apply the ARIA roles, states and properties to each panel
+ panel.setAttrs({
+ role: 'tabpanel',
+ 'aria-labelledby': id
+ });
+ },
+
+ syncUI: function() {
+ var _classNames = Y.TabviewBase._classNames;
+
+ this.get('boundingBox').addClass(_classNames.tab);
+ this.get('contentBox').addClass(_classNames.tabLabel);
+ this.set('label', this.get('label'));
+ this.set('content', this.get('content'));
+ this._uiSetSelectedPanel(this.get('selected'));
+ },
+
+ bindUI: function() {
+ this.after('selectedChange', this._afterTabSelectedChange);
+ this.after('parentChange', this._afterParentChange);
+ },
+
+ renderUI: function() {
+ this._renderPanel();
+ this._initAria();
+ },
+
+ _renderPanel: function() {
+ this.get('parent').get('panelNode')
+ .appendChild(this.get('panelNode'));
+ },
+
+ _add: function() {
+ var parent = this.get('parent').get('contentBox'),
+ list = parent.get('listNode'),
+ panel = parent.get('panelNode');
+
+ if (list) {
+ list.appendChild(this.get('boundingBox'));
+ }
+
+ if (panel) {
+ panel.appendChild(this.get('panelNode'));
+ }
+ },
+
+ _remove: function() {
+ this.get('boundingBox').remove();
+ this.get('panelNode').remove();
+ },
+
+ _onActivate: function(e) {
+ if (e.target === this) {
+ // Prevent the browser from navigating to the URL specified by the
+ // anchor's href attribute.
+ e.domEvent.preventDefault();
+ e.target.set('selected', 1);
+ }
+ },
+
+ initializer: function() {
+ this.publish(this.get('triggerEvent'), {
+ defaultFn: this._onActivate
+ });
+ },
+
+ _defLabelGetter: function() {
+ return this.get('contentBox').getHTML();
+ },
+
+ _defLabelSetter: function(label) {
+ var labelNode = this.get('contentBox');
+ if (labelNode.getHTML() !== label) { // Avoid rewriting existing label.
+ labelNode.setHTML(label);
+ }
+ return label;
+ },
+
+ _defContentSetter: function(content) {
+ var panel = this.get('panelNode');
+ if (panel.getHTML() !== content) { // Avoid rewriting existing content.
+ panel.setHTML(content);
+ }
+ return content;
+ },
+
+ _defContentGetter: function() {
+ return this.get('panelNode').getHTML();
+ },
+
+ // find panel by ID mapping from label href
+ _defPanelNodeValueFn: function() {
+ var _classNames = Y.TabviewBase._classNames,
+ href = this.get('contentBox').get('href') || '',
+ parent = this.get('parent'),
+ hashIndex = href.indexOf('#'),
+ panel;
+
+ href = href.substr(hashIndex);
+
+ if (href.charAt(0) === '#') { // in-page nav, find by ID
+ panel = Y.one(href);
+ if (panel) {
+ panel.addClass(_classNames.tabPanel);
+ }
+ }
+
+ // use the one found by id, or else try matching indices
+ if (!panel && parent) {
+ panel = parent.get('panelNode')
+ .get('children').item(this.get('index'));
+ }
+
+ if (!panel) { // create if none found
+ panel = Y.Node.create(this.PANEL_TEMPLATE);
+ panel.addClass(_classNames.tabPanel);
+ }
+ return panel;
+ }
+}, {
+ ATTRS: {
+ /**
+ * @attribute triggerEvent
+ * @default "click"
+ * @type String
+ */
+ triggerEvent: {
+ value: 'click'
+ },
+
+ /**
+ * @attribute label
+ * @type HTML
+ */
+ label: {
+ setter: '_defLabelSetter',
+ getter: '_defLabelGetter'
+ },
+
+ /**
+ * @attribute content
+ * @type HTML
+ */
+ content: {
+ setter: '_defContentSetter',
+ getter: '_defContentGetter'
+ },
+
+ /**
+ * @attribute panelNode
+ * @type Y.Node
+ */
+ panelNode: {
+ setter: function(node) {
+ node = Y.one(node);
+ if (node) {
+ node.addClass(Y.TabviewBase._classNames.tabPanel);
+ }
+ return node;
+ },
+ valueFn: '_defPanelNodeValueFn'
+ },
+
+ tabIndex: {
+ value: null,
+ validator: '_validTabIndex'
+ }
+
+ },
+
+ HTML_PARSER: {
+ selected: function() {
+ var ret = (this.get('boundingBox').hasClass(Y.TabviewBase._classNames.selectedTab)) ?
+ 1 : 0;
+ return ret;
+ }
+ }
+
+});
+
+
+}, '3.10.3', {
+ "requires": [
+ "widget",
+ "widget-parent",
+ "widget-child",
+ "tabview-base",
+ "node-pluginhost",
+ "node-focusmanager"
+ ],
+ "skinnable": true
+});