UNPKG

@polymer/iron-pages

Version:

Organizes a set of pages and shows one at a time

74 lines (59 loc) 2.1 kB
/** @license Copyright (c) 2015 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 */ import '@polymer/polymer/polymer-legacy.js'; import {IronResizableBehavior} from '@polymer/iron-resizable-behavior/iron-resizable-behavior.js'; import {IronSelectableBehavior} from '@polymer/iron-selector/iron-selectable.js'; import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js'; import {html} from '@polymer/polymer/lib/utils/html-tag.js'; /** `iron-pages` is used to select one of its children to show. One use is to cycle through a list of children "pages". Example: <iron-pages selected="0"> <div>One</div> <div>Two</div> <div>Three</div> </iron-pages> <script> document.addEventListener('click', function(e) { var pages = document.querySelector('iron-pages'); pages.selectNext(); }); </script> @group Iron Elements @demo demo/index.html */ Polymer({ _template: html` <style> :host { display: block; } :host > ::slotted(:not(slot):not(.iron-selected)) { display: none !important; } </style> <slot></slot> `, is: 'iron-pages', behaviors: [IronResizableBehavior, IronSelectableBehavior], properties: { // as the selected page is the only one visible, activateEvent // is both non-sensical and problematic; e.g. in cases where a user // handler attempts to change the page and the activateEvent // handler immediately changes it back activateEvent: {type: String, value: null} }, observers: ['_selectedPageChanged(selected)'], _selectedPageChanged: function(selected, old) { this.async(this.notifyResize); } });