11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Polymer('core-dropdown',{ 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci publish: { 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * True if the menu is open. 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute opened 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci opened: false, 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * A label for the control. The label is displayed if no item is selected. 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute label 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default 'Select an item' 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci label: 'Select an item', 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The currently selected element. By default this is the index of the item element. 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If you want a specific attribute value of the element to be used instead of the 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * index, set `valueattr` to that attribute name. 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute selected 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type Object 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default null 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selected: null, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Specifies the attribute to be used for "selected" attribute. 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute valueattr 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default 'name' 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci valueattr: 'name', 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Specifies the CSS class to be used to add to the selected element. 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute selectedClass 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default 'core-selected' 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selectedClass: 'core-selected', 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Specifies the property to be used to set on the selected element 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to indicate its active state. 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute selectedProperty 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default '' 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selectedProperty: '', 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Specifies the attribute to set on the selected element to indicate 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * its active state. 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute selectedAttribute 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default 'active' 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selectedAttribute: 'selected', 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The currently selected element. 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute selectedItem 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type Object 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default null 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selectedItem: null, 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Horizontally align the overlay with the control. 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute halign 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type "left"|"right" 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default "left" 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci halign: {value: 'left', reflect: true}, 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Vertically align the dropdown menu with the control. 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute valign 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type "top"|"bottom" 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default "bottom" 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci valign: {value: 'bottom', reflect: true} 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci toggle: function() { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.opened = !this.opened; 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci openAction: function(e) { 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (e.detail) { 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var rect = this.$.control.getBoundingClientRect(); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (this.valign === 'top') { 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.top = 'auto'; 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.bottom = rect.height + 'px'; 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.maxHeight = (window.innerHeight - (window.innerHeight - rect.top) - 12) + 'px'; 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.top = rect.height + 'px'; 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.bottom = 'auto'; 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.maxHeight = (window.innerHeight - rect.height - rect.top - 12) + 'px'; 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.menu.style.minWidth = rect.width + 'px'; 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci selectAction: function() { 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.opened = false; 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 126