2 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6 Code distributed by Google as part of the polymer project is also
7 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
12 `paper-dropdown-menu` works together with `paper-dropdown` and `core-menu` to
13 implement a drop-down menu. The currently selected item is displayed in the
14 control. If no item is selected, the `label` is displayed instead.
16 The child element with the class `dropdown` will be used as the drop-down
17 menu. It should be a `paper-dropdown` or other overlay element. You should
18 also provide a `core-selector` or other selector element, such as `core-menu`,
19 in the drop-down. You should apply the class `menu` to the selector element.
23 <paper-dropdown-menu label="Your favorite pastry">
24 <paper-dropdown class="dropdown">
25 <core-menu class="menu">
26 <paper-item>Croissant</paper-item>
27 <paper-item>Donut</paper-item>
28 <paper-item>Financier</paper-item>
29 <paper-item>Madeleine</paper-item>
32 </paper-dropdown-menu>
34 This example renders a drop-down menu with 4 options.
37 @element paper-dropdown-menu
38 @extends core-dropdown-base
44 Fired when an item's selection state is changed. This event is fired both
45 when an item is selected or deselected. The `isSelected` detail property
46 contains the selection state.
49 @param {Object} detail
50 @param {boolean} detail.isSelected true for selection and false for deselection
51 @param {Object} detail.item the item element
53 <link href=
"../polymer/polymer.html" rel=
"import">
55 <link href=
"../core-a11y-keys/core-a11y-keys.html" rel=
"import">
56 <link href=
"../core-dropdown/core-dropdown-base.html" rel=
"import">
57 <link href=
"../core-focusable/core-focusable.html" rel=
"import">
58 <link href=
"../core-icon/core-icon.html" rel=
"import">
59 <link href=
"../core-icons/core-icons.html" rel=
"import">
60 <link href=
"../paper-shadow/paper-shadow.html" rel=
"import">
62 <style shim-shadowdom
>
63 html /deep/ #paper-dropdown-menu-dropdown {
68 html /deep/ #paper-dropdown-menu-dropdown #menu {
73 html /deep/ #paper-dropdown-menu-dropdown .menu-container {
80 <polymer-element name=
"paper-dropdown-menu" extends=
"core-dropdown-base" relative layout inline horizontal center
tabindex=
"0">
85 -moz-user-select: none;
86 -ms-user-select: none;
87 -webkit-user-select: none;
90 padding:
0.5em
0 0.25em;
92 border-bottom:
1px solid #
757575;
103 text-overflow: ellipsis;
107 <core-a11y-keys target=
"{{}}" keys=
"enter space" on-keys-pressed=
"{{toggleOverlay}}"></core-a11y-keys>
109 <div flex auto
id=
"label">{{selectedItemLabel || label}}
</div>
110 <core-icon id=
"arrow" icon=
"{{opened ? openedIcon : closedIcon}}"></core-icon>
124 * A label for the control. The label is displayed if no item is selected.
128 * @default 'Select an item'
130 label
: 'Select an item',
133 * The icon to display when the drop-down is opened.
135 * @attribute openedIcon
137 * @default 'arrow-drop-up'
139 openedIcon
: 'arrow-drop-up',
142 * The icon to display when the drop-down is closed.
144 * @attribute closedIcon
146 * @default 'arrow-drop-down'
148 closedIcon
: 'arrow-drop-down'
152 selectedItemLabel
: '',
155 'core-overlay-open': 'openAction',
156 'core-activate': 'activateAction',
157 'core-select': 'selectAction'
160 activateAction: function(e
) {
164 selectAction: function(e
) {
165 var detail
= e
.detail
;
166 if (detail
.isSelected
) {
167 this.selectedItemLabel
= detail
.item
.label
|| detail
.item
.textContent
;
169 this.selectedItemLabel
= '';
175 Polymer
.mixin2(p
, Polymer
.CoreFocusable
);