Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: polymer_0.5.0/bower_components/paper-tabs/paper-tabs.html

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: polymer_0.5.0/bower_components/paper-tabs/paper-tabs.html
diff --git a/polymer_0.5.0/bower_components/paper-tabs/paper-tabs.html b/polymer_0.5.0/bower_components/paper-tabs/paper-tabs.html
new file mode 100644
index 0000000000000000000000000000000000000000..bc664f1019dec7819b162128442475377ec32168
--- /dev/null
+++ b/polymer_0.5.0/bower_components/paper-tabs/paper-tabs.html
@@ -0,0 +1,343 @@
+<!--
+Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<!--
+`paper-tabs` is a `core-selector` styled to look like tabs. Tabs make it easy to
+explore and switch between different views or functional aspects of an app, or
+to browse categorized data sets.
+
+Use `selected` property to get or set the selected tab.
+
+Example:
+
+ <paper-tabs selected="0">
+ <paper-tab>TAB 1</paper-tab>
+ <paper-tab>TAB 2</paper-tab>
+ <paper-tab>TAB 3</paper-tab>
+ </paper-tabs>
+
+See <a href="#paper-tab">paper-tab</a> for more information about
+`paper-tab`.
+
+A common usage for `paper-tabs` is to use it along with `core-pages` to switch
+between different views.
+
+ <paper-tabs selected="{{selected}}">
+ <paper-tab>Tab 1</paper-tab>
+ <paper-tab>Tab 2</paper-tab>
+ <paper-tab>Tab 3</paper-tab>
+ </paper-tabs>
+
+ <core-pages selected="{{selected}}">
+ <div>Page 1</div>
+ <div>Page 2</div>
+ <div>Page 3</div>
+ </core-pages>
+
+`paper-tabs` adapt to mobile/narrow layout when there is a `core-narrow` class set
+on itself or any of its ancestors.
+
+To use links in tabs, add `link` attribute to `paper-tabs` and put an `<a>`
+element in `paper-tab`.
+
+Example:
+
+ <paper-tabs selected="0" link>
+ <paper-tab>
+ <a href="#link1" horizontal center-center layout>TAB ONE</a>
+ </paper-tab>
+ <paper-tab>
+ <a href="#link2" horizontal center-center layout>TAB TWO</a>
+ </paper-tab>
+ <paper-tab>
+ <a href="#link3" horizontal center-center layout>TAB THREE</a>
+ </paper-tab>
+ </paper-tabs>
+
+Styling tabs:
+
+To change the sliding bar color:
+
+ paper-tabs.pink::shadow #selectionBar {
+ background-color: #ff4081;
+ }
+
+To change the ink ripple color:
+
+ paper-tabs.pink paper-tab::shadow #ink {
+ color: #ff4081;
+ }
+
+@group Paper Elements
+@element paper-tabs
+@extends core-selector
+@homepage github.io
+-->
+
+<link rel="import" href="../core-selector/core-selector.html">
+<link rel="import" href="../paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../core-resizable/core-resizable.html">
+<link rel="import" href="paper-tab.html">
+
+<polymer-element name="paper-tabs" extends="core-selector" attributes="noink nobar noslide scrollable hideScrollButton" role="tablist" horizontal center layout>
+<template>
+
+ <link rel="stylesheet" href="paper-tabs.css">
+
+ <div class="scroll-button" hidden?="{{!scrollable || hideScrollButton}}">
+ <paper-icon-button icon="chevron-left" class="{{ {hidden: leftHidden} | tokenList }}" on-down="{{holdLeft}}" on-up="{{releaseHold}}"></paper-icon-button>
+ </div>
+
+ <div id="tabsContainer" class="{{ {scrollable: scrollable} | tokenList }}" flex on-scroll="{{scroll}}" on-trackstart="{{trackStart}}">
+
+ <div id="tabsContent" horizontal layout?="{{!scrollable}}">
+ <shadow></shadow>
+ <div id="selectionBar" hidden?="{{nobar}}" on-transitionend="{{barTransitionEnd}}"></div>
+ </div>
+
+ </div>
+
+ <div class="scroll-button" hidden?="{{!scrollable || hideScrollButton}}">
+ <paper-icon-button icon="chevron-right" class="{{ {hidden: rightHidden} | tokenList }}" on-down="{{holdRight}}" on-up="{{releaseHold}}"></paper-icon-button>
+ </div>
+
+</template>
+<script>
+
+ Polymer(Polymer.mixin({
+
+ /**
+ * If true, ink ripple effect is disabled.
+ *
+ * @attribute noink
+ * @type boolean
+ * @default false
+ */
+ noink: false,
+
+ /**
+ * If true, the bottom bar to indicate the selected tab will not be shown.
+ *
+ * @attribute nobar
+ * @type boolean
+ * @default false
+ */
+ nobar: false,
+
+ /**
+ * If true, the slide effect for the bottom bar is disabled.
+ *
+ * @attribute noslide
+ * @type boolean
+ * @default false
+ */
+ noslide: false,
+
+ /**
+ * If true, tabs are scrollable and the tab width is based on the label width.
+ *
+ * @attribute scrollable
+ * @type boolean
+ * @default false
+ */
+ scrollable: false,
+
+ /**
+ * If true, dragging on the tabs to scroll is disabled.
+ *
+ * @attribute disableDrag
+ * @type boolean
+ * @default false
+ */
+ disableDrag: false,
+
+ /**
+ * If true, scroll buttons (left/right arrow) will be hidden for scrollable tabs.
+ *
+ * @attribute hideScrollButton
+ * @type boolean
+ * @default false
+ */
+ hideScrollButton: false,
+
+ eventDelegates: {
+ 'core-resize': 'resizeHandler'
+ },
+
+ activateEvent: 'tap',
+
+ step: 10,
+
+ holdDelay: 10,
+
+ ready: function() {
+ this.super();
+ this._trackxHandler = this.trackx.bind(this);
+ Polymer.addEventListener(this.$.tabsContainer, 'trackx', this._trackxHandler);
+ this._tabsObserver = new MutationObserver(this.updateBar.bind(this));
+ },
+
+ domReady: function() {
+ this.async('resizeHandler');
+ this._tabsObserver.observe(this, {childList: true, subtree: true, characterData: true});
+ },
+
+ attached: function() {
+ this.resizableAttachedHandler();
+ },
+
+ detached: function() {
+ Polymer.removeEventListener(this.$.tabsContainer, 'trackx', this._trackxHandler);
+ this._tabsObserver.disconnect();
+ this.resizableDetachedHandler();
+ },
+
+ trackStart: function(e) {
+ if (!this.scrollable || this.disableDrag) {
+ return;
+ }
+ var t = e.target;
+ if (t && t.cancelRipple) {
+ t.cancelRipple();
+ }
+ this._startx = this.$.tabsContainer.scrollLeft;
+ e.preventTap();
+ },
+
+ trackx: function(e) {
+ if (!this.scrollable || this.disableDrag) {
+ return;
+ }
+ this.$.tabsContainer.scrollLeft = this._startx - e.dx;
+ },
+
+ resizeHandler: function() {
+ this.scroll();
+ this.updateBar();
+ },
+
+ scroll: function() {
+ if (!this.scrollable) {
+ return;
+ }
+ var tc = this.$.tabsContainer;
+ var l = tc.scrollLeft;
+ this.leftHidden = l === 0;
+ this.rightHidden = l === (tc.scrollWidth - tc.clientWidth);
+ },
+
+ holdLeft: function() {
+ this.holdJob = setInterval(this.scrollToLeft.bind(this), this.holdDelay);
+ },
+
+ holdRight: function() {
+ this.holdJob = setInterval(this.scrollToRight.bind(this), this.holdDelay);
+ },
+
+ releaseHold: function() {
+ clearInterval(this.holdJob);
+ this.holdJob = null;
+ },
+
+ scrollToLeft: function() {
+ this.$.tabsContainer.scrollLeft -= this.step;
+ },
+
+ scrollToRight: function() {
+ this.$.tabsContainer.scrollLeft += this.step;
+ },
+
+ /**
+ * Invoke this to update the size and position of the bottom bar. Usually
+ * you only need to call this if the `paper-tabs` is initially hidden and
+ * later becomes visible.
+ *
+ * @method updateBar
+ */
+ updateBar: function() {
+ this.async('selectedItemChanged');
+ },
+
+ selectedItemChanged: function(old) {
+ var oldIndex = this.selectedIndex;
+ this.super(arguments);
+ var s = this.$.selectionBar.style;
+
+ if (!this.selectedItem) {
+ s.width = 0;
+ s.left = 0;
+ return;
+ }
+
+ var r = this.$.tabsContent.getBoundingClientRect();
+ this._w = r.width;
+ this._l = r.left;
+
+ r = this.selectedItem.getBoundingClientRect();
+ this._sw = r.width;
+ this._sl = r.left;
+ this._sOffsetLeft = this._sl - this._l;
+
+ if (this.noslide || old == null) {
+ this.positionBarForSelected();
+ return;
+ }
+
+ var oldRect = old.getBoundingClientRect();
+
+ var m = 5;
+ this.$.selectionBar.classList.add('expand');
+ if (oldIndex < this.selectedIndex) {
+ s.width = this.calcPercent(this._sl + this._sw - oldRect.left) - m + '%';
+ this._transitionCounter = 1;
+ } else {
+ s.width = this.calcPercent(oldRect.left + oldRect.width - this._sl) - m + '%';
+ s.left = this.calcPercent(this._sOffsetLeft) + m + '%';
+ this._transitionCounter = 2;
+ }
+ if (this.scrollable) {
+ this.scrollToSelectedIfNeeded();
+ }
+ },
+
+ scrollToSelectedIfNeeded: function() {
+ var scrollLeft = this.$.tabsContainer.scrollLeft;
+ // scroll to selected if needed
+ if (this._sOffsetLeft + this._sw < scrollLeft ||
+ this._sOffsetLeft - scrollLeft > this.$.tabsContainer.offsetWidth) {
+ this.$.tabsContainer.scrollLeft = this._sOffsetLeft;
+ }
+ },
+
+ positionBarForSelected: function() {
+ var s = this.$.selectionBar.style;
+ s.width = this.calcPercent(this._sw) + '%';
+ s.left = this.calcPercent(this._sOffsetLeft) + '%';
+ },
+
+ calcPercent: function(w) {
+ return 100 * w / this._w;
+ },
+
+ barTransitionEnd: function(e) {
+ this._transitionCounter--;
+ var cl = this.$.selectionBar.classList;
+ if (cl.contains('expand') && !this._transitionCounter) {
+ cl.remove('expand');
+ cl.add('contract');
+ this.positionBarForSelected();
+ } else if (cl.contains('contract')) {
+ cl.remove('contract');
+ }
+ }
+
+ }, Polymer.CoreResizable));
+
+</script>
+</polymer-element>
« no previous file with comments | « polymer_0.5.0/bower_components/paper-tabs/paper-tabs.css ('k') | polymer_0.5.0/bower_components/paper-toast/.bower.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698