| Index: third_party/polymer/components/core-transition/core-transition-css.html
|
| diff --git a/third_party/polymer/components/core-transition/core-transition-css.html b/third_party/polymer/components/core-transition/core-transition-css.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fd8d2fcfe1c9efed8b68e7db00e54bff41788913
|
| --- /dev/null
|
| +++ b/third_party/polymer/components/core-transition/core-transition-css.html
|
| @@ -0,0 +1,221 @@
|
| +<!--
|
| +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
|
| +-->
|
| +
|
| +<!--
|
| +
|
| +`<core-transition-css>` implements CSS transitions as `<core-transition>` objects so they can be
|
| +reused in a pluggable transition system such as in `<core-overlay>`. Currently this class has
|
| +some specific support to animate an element from and to the viewport such as a dialog, but you
|
| +can override it for different effects.
|
| +
|
| +Example:
|
| +
|
| +my-css-transition.html:
|
| +
|
| + <polymer-element name="my-css-transition" extends="core-transition-css">
|
| + <template>
|
| + <style>
|
| + :host(.my-transition) {
|
| + opacity: 0;
|
| + transition: transform 1s ease-out, opacity 1s ease-out;
|
| + }
|
| + :host(.my-transition.my-opened) {
|
| + opacity: 1;
|
| + transform: none;
|
| + }
|
| + :host(.my-transition-top) {
|
| + transform: translateY(-100vh);
|
| + }
|
| + :host(.my-transition-bottom) {
|
| + transform: translateY(100vh);
|
| + }
|
| + </style>
|
| + </template>
|
| + <script>
|
| + Polymer({
|
| + baseClass: 'my-transition',
|
| + openedClass: 'my-opened'
|
| + });
|
| + </script>
|
| + </polymer-element>
|
| +
|
| + <my-css-transition id="my-transition-top" transitionType="top"></my-css-transition>
|
| + <my-css-transition id="my-transition-bottom" transitionType="bottom"></my-css-transition>
|
| +
|
| +my-css-transition-demo.html
|
| +
|
| + <link href="components/core-meta/core-meta.html" rel="import">
|
| + <link href="my-css-transition.html">
|
| +
|
| + <div id="animate-me"></div>
|
| +
|
| + <script>
|
| + // Get the core-transition
|
| + var meta = document.createElement('core-meta');
|
| + meta.type = 'transition';
|
| + var transition1 = meta.byId('my-transition-top');
|
| +
|
| + // Set up the animation
|
| + var animated = document.getElementById('animate-me');
|
| + transition1.setup(animated);
|
| + transition1.go(animated, {opened: true});
|
| + </script>
|
| +
|
| +The first element in the template of a `<core-transition-css>` object should be a stylesheet. It
|
| +will be injected to the scope of the animated node in the `setup` function. The node is initially
|
| +invisible with `opacity: 0`, and you can transition it to an "opened" state by passing
|
| +`{opened: true}` to the `go` function.
|
| +
|
| +All nodes being animated will get the class `my-transition` added in the `setup` function.
|
| +Additionally, the class `my-transition-<transitionType>` will be applied. You can use the
|
| +`transitionType` attribute to implement several different behaviors with the same
|
| +`<core-transition-css>` object. In the above example, `<my-css-transition>` implements both
|
| +sliding the node from the top of the viewport and from the bottom of the viewport.
|
| +
|
| +Available transitions
|
| +---------------------
|
| +
|
| +`<core-transition-css>` includes several commonly used transitions.
|
| +
|
| +`core-transition-fade`: Animates from `opacity: 0` to `opacity: 1` when it opens.
|
| +
|
| +`core-transition-center`: Zooms the node into the final size.
|
| +
|
| +`core-transition-top`: Slides the node into the final position from the top.
|
| +
|
| +`core-transition-bottom`: Slides the node into the final position from the bottom.
|
| +
|
| +`core-transition-left`: Slides the node into the final position from the left.
|
| +
|
| +`core-transition-right`: Slides the node into the final position from the right.
|
| +
|
| +@group Polymer Core Elements
|
| +@element core-transition-css
|
| +@extends core-transition
|
| +@status beta
|
| +@homepage github.io
|
| +-->
|
| +
|
| +<link rel="import" href="core-transition.html">
|
| +
|
| +<polymer-element name="core-transition-css" extends="core-transition" attributes="transitionType">
|
| +<template>
|
| + <link no-shim rel="stylesheet" href="core-transition-overlay.css">
|
| +</template>
|
| +<script>
|
| +
|
| + Polymer('core-transition-css', {
|
| +
|
| + /**
|
| + * The class that will be applied to all animated nodes.
|
| + *
|
| + * @attribute baseClass
|
| + * @type string
|
| + * @default "core-transition"
|
| + */
|
| + baseClass: 'core-transition',
|
| +
|
| + /**
|
| + * The class that will be applied to nodes in the opened state.
|
| + *
|
| + * @attribute openedClass
|
| + * @type string
|
| + * @default "core-opened"
|
| + */
|
| + openedClass: 'core-opened',
|
| +
|
| + /**
|
| + * The class that will be applied to nodes in the closed state.
|
| + *
|
| + * @attribute closedClass
|
| + * @type string
|
| + * @default "core-closed"
|
| + */
|
| + closedClass: 'core-closed',
|
| +
|
| + /**
|
| + * Event to listen to for animation completion.
|
| + *
|
| + * @attribute completeEventName
|
| + * @type string
|
| + * @default "transitionEnd"
|
| + */
|
| + completeEventName: 'transitionend',
|
| +
|
| + publish: {
|
| + /**
|
| + * A secondary configuration attribute for the animation. The class
|
| + * `<baseClass>-<transitionType` is applied to the animated node during
|
| + * `setup`.
|
| + *
|
| + * @attribute transitionType
|
| + * @type string
|
| + */
|
| + transitionType: null
|
| + },
|
| +
|
| + registerCallback: function(element) {
|
| + this.transitionStyle = element.templateContent().firstElementChild;
|
| + },
|
| +
|
| + // template is just for loading styles, we don't need a shadowRoot
|
| + fetchTemplate: function() {
|
| + return null;
|
| + },
|
| +
|
| + go: function(node, state) {
|
| + if (state.opened !== undefined) {
|
| + this.transitionOpened(node, state.opened);
|
| + }
|
| + },
|
| +
|
| + setup: function(node) {
|
| + if (!node._hasTransitionStyle) {
|
| + if (!node.shadowRoot) {
|
| + node.createShadowRoot().innerHTML = '<content></content>';
|
| + }
|
| + this.installScopeStyle(this.transitionStyle, 'transition',
|
| + node.shadowRoot);
|
| + node._hasTransitionStyle = true;
|
| + }
|
| + node.classList.add(this.baseClass);
|
| + if (this.transitionType) {
|
| + node.classList.add(this.baseClass + '-' + this.transitionType);
|
| + }
|
| + },
|
| +
|
| + teardown: function(node) {
|
| + node.classList.remove(this.baseClass);
|
| + if (this.transitionType) {
|
| + node.classList.remove(this.baseClass + '-' + this.transitionType);
|
| + }
|
| + },
|
| +
|
| + transitionOpened: function(node, opened) {
|
| + this.listenOnce(node, this.completeEventName, function() {
|
| + node.classList.toggle(this.revealedClass, opened);
|
| + if (!opened) {
|
| + node.classList.remove(this.closedClass);
|
| + }
|
| + this.complete(node);
|
| + });
|
| + node.classList.toggle(this.openedClass, opened);
|
| + node.classList.toggle(this.closedClass, !opened);
|
| + }
|
| +
|
| + });
|
| +</script>
|
| +</polymer-element>
|
| +
|
| +<core-transition-css id="core-transition-fade"></core-transition-css>
|
| +<core-transition-css id="core-transition-center" transitionType="center"></core-transition-css>
|
| +<core-transition-css id="core-transition-top" transitionType="top"></core-transition-css>
|
| +<core-transition-css id="core-transition-bottom" transitionType="bottom"></core-transition-css>
|
| +<core-transition-css id="core-transition-left" transitionType="left"></core-transition-css>
|
| +<core-transition-css id="core-transition-right" transitionType="right"></core-transition-css>
|
|
|