2015-06-21 14:31:21 -07:00
|
|
|
<!--
|
|
|
|
@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
|
|
|
|
-->
|
|
|
|
|
|
|
|
<link rel="import" href="../polymer/polymer.html">
|
|
|
|
<link rel="import" href="../iron-menu-behavior/iron-menu-behavior.html">
|
|
|
|
<link rel="import" href="../paper-styles/paper-styles.html">
|
|
|
|
|
|
|
|
<!--
|
|
|
|
`<paper-menu>` implements an accessible menu control with Material Design styling. The focused item
|
|
|
|
is highlighted, and the selected item has bolded text.
|
|
|
|
|
|
|
|
<paper-menu>
|
|
|
|
<paper-item>Item 1</paper-item>
|
|
|
|
<paper-item>Item 2</paper-item>
|
|
|
|
</paper-menu>
|
|
|
|
|
2015-07-13 14:26:11 -07:00
|
|
|
An initial selection can be specified with the `selected` attribute.
|
|
|
|
|
|
|
|
<paper-menu selected="0">
|
|
|
|
<paper-item>Item 1</paper-item>
|
|
|
|
<paper-item>Item 2</paper-item>
|
|
|
|
</paper-menu>
|
|
|
|
|
2015-06-21 14:31:21 -07:00
|
|
|
Make a multi-select menu with the `multi` attribute. Items in a multi-select menu can be deselected,
|
|
|
|
and multiple item can be selected.
|
|
|
|
|
|
|
|
<paper-menu multi>
|
|
|
|
<paper-item>Item 1</paper-item>
|
|
|
|
<paper-item>Item 2</paper-item>
|
|
|
|
</paper-menu>
|
|
|
|
|
|
|
|
### Styling
|
|
|
|
|
|
|
|
The following custom properties and mixins are available for styling:
|
|
|
|
|
|
|
|
Custom property | Description | Default
|
|
|
|
----------------|-------------|----------
|
|
|
|
`--paper-menu-background-color` | Menu background color | `--primary-background-color`
|
2015-07-13 14:26:11 -07:00
|
|
|
`--paper-menu-color` | Menu foreground color | `--primary-text-color`
|
2015-06-21 14:31:21 -07:00
|
|
|
`--paper-menu-disabled-color` | Foreground color for a disabled item | `--disabled-text-color`
|
|
|
|
`--paper-menu` | Mixin applied to the menu | `{}`
|
|
|
|
`--paper-menu-selected-item` | Mixin applied to the selected item | `{}`
|
|
|
|
`--paper-menu-focused-item` | Mixin applied to the focused item | `{}`
|
|
|
|
`--paper-menu-focused-item-after` | Mixin applied to the ::after pseudo-element for the focused item | `{}`
|
|
|
|
|
|
|
|
### Accessibility
|
|
|
|
|
|
|
|
`<paper-menu>` has `role="menu"` by default. A multi-select menu will also have
|
|
|
|
`aria-multiselectable` set. It implements key bindings to navigate through the menu with the up and
|
|
|
|
down arrow keys, esc to exit the menu, and enter to activate a menu item. Typing the first letter
|
|
|
|
of a menu item will also focus it.
|
|
|
|
|
|
|
|
@group Paper Elements
|
|
|
|
@element paper-menu
|
|
|
|
@hero hero.svg
|
|
|
|
@demo demo/index.html
|
|
|
|
-->
|
|
|
|
|
|
|
|
<dom-module id="paper-menu">
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
|
|
:host {
|
|
|
|
display: block;
|
|
|
|
padding: 8px 0;
|
|
|
|
|
|
|
|
background: var(--paper-menu-background-color, --primary-background-color);
|
|
|
|
color: var(--paper-menu-color, --primary-text-color);
|
|
|
|
|
|
|
|
@apply(--paper-menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* need a wrapper element to make this higher specificity than the :host rule in paper-item */
|
|
|
|
.content > ::content > .iron-selected {
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
|
|
@apply(--paper-menu-selected-item);
|
|
|
|
}
|
|
|
|
|
|
|
|
.content > ::content > [disabled] {
|
|
|
|
color: var(--paper-menu-disabled-color, --disabled-text-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.content > ::content > *:focus {
|
|
|
|
position: relative;
|
|
|
|
outline: 0;
|
|
|
|
|
2015-07-13 14:26:11 -07:00
|
|
|
@apply(--paper-menu-focused-item);
|
2015-06-21 14:31:21 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
.content > ::content > *:focus:after {
|
|
|
|
@apply(--layout-fit);
|
|
|
|
background: currentColor;
|
|
|
|
/* FIXME move to paper-styles for next widget */
|
|
|
|
opacity: 0.12;
|
|
|
|
content: '';
|
|
|
|
|
2015-07-13 14:26:11 -07:00
|
|
|
@apply(--paper-menu-focused-item-after);
|
2015-06-21 14:31:21 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
.content > ::content > *[colored]:focus:after {
|
|
|
|
opacity: 0.26;
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
|
|
|
<div class="content">
|
|
|
|
<content></content>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</dom-module>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
|
|
|
Polymer({
|
|
|
|
|
|
|
|
is: 'paper-menu',
|
|
|
|
|
|
|
|
behaviors: [
|
|
|
|
Polymer.IronMenuBehavior
|
|
|
|
]
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
</script>
|