// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * Add support for tab pannels on custom elements (tabs, header and content) * **/ (function() { function registerEvent(target, eventType, handler) { if (target.addEventListener) { target.addEventListener(eventType, handler); } else { target.attachEvent(eventType, handler); } } function getSessionKey(key) { return window.sessionStorage.getItem("__tab_"+key); } function setSessionKey(key, value) { window.sessionStorage.setItem("__tab_"+key, value); } function onTabHeaderKeyDown(e) { if (e.keyCode == 13) { e.preventDefault(); onTabClicked(e); } } function onTabClicked(e) { var tabs = e.target.parentNode; if (!tabs || tabs.tagName !== 'TABS') return; var headers = tabs.getElementsByTagName('header'), contents = tabs.getElementsByTagName('content'), tabGroup = tabs.getAttribute("data-group"), tabValue = e.target.getAttribute("data-value"); if (tabGroup && tabValue && window.sessionStorage) setSessionKey(tabGroup, tabValue); for (var i=0; i i) contents[i].classList.remove('unselected'); } else { headers[i].classList.add('unselected'); if (contents.length > i) contents[i].classList.add('unselected'); } } } function initTabPane(tab) { var tabGroup = tab.getAttribute("data-group"); if (tabGroup && window.sessionStorage) var tabGroupSelectedValue = getSessionKey(tabGroup); var headers = tab.getElementsByTagName('header'); var contents = tab.getElementsByTagName('content'); var hasSelected = false; if (headers.length==0 || contents.length==0) return; for (var j=0; j