// Copyright 2015 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. Polymer({ is: 'viewer-zoom-button', properties: { /** * Icons to be displayed on the FAB. Multiple icons should be separated with * spaces, and will be cycled through every time the FAB is clicked. */ icons: String, /** * Array version of the list of icons. Polymer does not allow array * properties to be set from HTML, so we must use a string property and * perform the conversion manually. * @private */ icons_: { type: Array, value: [''], computed: 'computeIconsArray_(icons)' }, tooltips: Array, closed: { type: Boolean, reflectToAttribute: true, value: false }, delay: { type: Number, observer: 'delayChanged_' }, /** * Index of the icon currently being displayed. */ activeIndex: { type: Number, value: 0 }, /** * Icon currently being displayed on the FAB. * @private */ visibleIcon_: { type: String, computed: 'computeVisibleIcon_(icons_, activeIndex)' }, visibleTooltip_: { type: String, computed: 'computeVisibleTooltip_(tooltips, activeIndex)' } }, computeIconsArray_: function(icons) { return icons.split(' '); }, computeVisibleIcon_: function(icons, activeIndex) { return icons[activeIndex]; }, computeVisibleTooltip_: function(tooltips, activeIndex) { return tooltips[activeIndex]; }, delayChanged_: function() { this.$.wrapper.style.transitionDelay = this.delay + 'ms'; }, show: function() { this.closed = false; }, hide: function() { this.closed = true; }, fireClick: function() { // We cannot attach an on-click to the entire viewer-zoom-button, as this // will include clicks on the margins. Instead, proxy clicks on the FAB // through. this.fire('fabclick'); this.activeIndex = (this.activeIndex + 1) % this.icons_.length; } });