Index: pkg/polymer/lib/elements/polymer-flex-layout/polymer-flex-layout.html |
diff --git a/pkg/polymer/lib/elements/polymer-flex-layout/polymer-flex-layout.html b/pkg/polymer/lib/elements/polymer-flex-layout/polymer-flex-layout.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..00873aab48e776b6ee10922b98c95108925e9311 |
--- /dev/null |
+++ b/pkg/polymer/lib/elements/polymer-flex-layout/polymer-flex-layout.html |
@@ -0,0 +1,152 @@ |
+<!-- |
+Copyright 2013 The Polymer Authors. All rights reserved. |
+Use of this source code is governed by a BSD-style |
+license that can be found in the LICENSE file. |
+--> |
+<!-- |
+/** |
+ * @module Polymer Elements |
+ */ |
+/** |
+ * polymer-flex-layout provides a helper to use CSS3 Flexible Boxes. By putting |
+ * polymer-flex-layout inside an element it makes the element a flex |
+ * container. Use 'flex' attribute to make the flex item flexible. |
+ * |
+ * Example: |
+ * |
+ * <div> |
+ * <polymer-flex-layout></polymer-flex-layout> |
+ * <div>Left</div> |
+ * <div flex>Main</div> |
+ * <div>Right</div> |
+ * </div> |
+ * |
+ * --------------------------------- |
+ * |-------------------------------| |
+ * ||Left| Main |Right|| |
+ * |-------------------------------| |
+ * --------------------------------- |
+ * |
+ * <div> |
+ * <polymer-flex-layout vertical></polymer-flex-layout> |
+ * <div>Header</div> |
+ * <div flex>Body</div> |
+ * <div>Footer</div> |
+ * </div> |
+ * |
+ * ---------- |
+ * ||------|| |
+ * ||Header|| |
+ * ||------|| |
+ * ||Body || |
+ * || || |
+ * || || |
+ * || || |
+ * || || |
+ * || || |
+ * || || |
+ * ||------|| |
+ * ||Footer|| |
+ * ||------|| |
+ * ---------- |
+ * |
+ * @class polymer-flex-layout |
+ */ |
+/** |
+ * If true, flex items are aligned vertically. |
+ * |
+ * @attribute vertical |
+ * @type boolean |
+ * @default false |
+ */ |
+/** |
+ * Defines the default for how flex items are laid out along the cross axis on |
+ * the current line. Possible values are 'start', 'center' and 'end'. |
+ * |
+ * @attribute align |
+ * @type string |
+ * @default '' |
+ */ |
+/** |
+ * Defines how flex items are laid out along the main axis on the current line. |
+ * Possible values are 'start', 'center' and 'end'. |
+ * |
+ * @attribute justify |
+ * @type string |
+ * @default '' |
+ */ |
+/** |
+ * If true, polymer-flex-layout is the flex container. |
+ * |
+ * Example: |
+ * |
+ * <polymer-flex-layout isContainer> |
+ * <div>Left</div> |
+ * <div flex>Main</div> |
+ * <div>Right</div> |
+ * </polymer-flex-layout> |
+ * |
+ * --------------------------------- |
+ * |-------------------------------| |
+ * ||Left| Main |Right|| |
+ * |-------------------------------| |
+ * --------------------------------- |
+ * |
+ * @attribute isContainer |
+ * @type boolean |
+ * @default false |
+ */ |
+--> |
+<link rel="import" href="../polymer/polymer.html"> |
+ |
+<polymer-element name="polymer-flex-layout" attributes="vertical align justify isContainer"> |
+ <template> |
+ <link rel="stylesheet" polymer-scope="controller" href="polymer-flex-layout.css"> |
+ <link rel="stylesheet" href="polymer-flex-layout.css"> |
+ <content></content> |
+ </template> |
+ <script> |
+ Polymer('polymer-flex-layout', { |
+ vertical: false, |
+ isContainer: false, |
+ layoutContainer: null, |
+ enteredView: function() { |
+ this.installControllerStyles(); |
+ this.layoutContainer = this.isContainer ? |
+ this : (this.parentNode.host || this.parentNode); |
+ this.verticalChanged(); |
+ this.alignChanged(); |
+ this.justifyChanged(); |
+ }, |
+ leftView: function() { |
+ this.layoutContainer = null; |
+ }, |
+ layoutContainerChanged: function(old) { |
+ if (old) { |
+ old.classList.remove('flexbox'); |
+ } |
+ this.style.display = this.layoutContainer === this ? '' : 'none'; |
+ if (this.layoutContainer) { |
+ this.layoutContainer.classList.add('flexbox'); |
+ } |
+ }, |
+ switchContainerClass: function(prefix, old, name) { |
+ if (this.layoutContainer && name) { |
+ this.layoutContainer.classList.switch( |
+ prefix + old, prefix + name); |
+ } |
+ }, |
+ verticalChanged: function() { |
+ if (this.layoutContainer) { |
+ this.layoutContainer.classList.toggle('column', this.vertical); |
+ } |
+ }, |
+ alignChanged: function(old) { |
+ this.switchContainerClass('align-', old, this.align); |
+ }, |
+ justifyChanged: function(old) { |
+ this.switchContainerClass('justify-', old, this.justify); |
+ } |
+ }); |
+ </script> |
+</polymer-element> |