@polymer/paper-dropdown-menu
Version:
An element that works similarly to a native browser select
332 lines (301 loc) • 13.2 kB
HTML
<!--
@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
-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<title>paper-dropdown-menu demo</title>
<script src="https://unpkg.com/@webcomponents/webcomponentsjs@^2.0.0/webcomponents-loader.js"></script>
<!-- Import Web Animations polyfill -->
<script src="https://unpkg.com/web-animations-js@^2.0.0/web-animations-next-lite.min.js"></script>
<script type="module">
import '@polymer/iron-demo-helpers/demo-snippet.js';
import '@polymer/iron-demo-helpers/demo-pages-shared-styles.js';
import '@polymer/paper-item/paper-item.js';
import '@polymer/paper-listbox/paper-listbox.js';
import '@polymer/paper-tabs/paper-tabs.js';
import '../paper-dropdown-menu.js';
import '../paper-dropdown-menu-light.js';
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
const template = html
`<custom-style><style is="custom-style" include="demo-pages-shared-styles"></style></custom-style>`;
document.body.appendChild(template.content);
</script>
<custom-style><style is="custom-style">
demo-snippet {
--demo-snippet-demo: {
display: flex;
};
}
paper-tabs {
width: 400px;
}
.vertical-section-container {
max-width: 500px;
}
paper-dropdown-menu {
width: 200px;
margin-right: 20px;
}
</style></custom-style>
</head>
<body unresolved>
<div class="vertical-section-container centered">
<h4>This is a plain paper-dropdown-menu</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Dinosaurs">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Dinosaurs (light)">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>Supports RTL</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu dir="rtl" label="Dinosaurs">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light dir="rtl" label="Dinosaurs lite">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>You can pre-select a value using the <i>selected</i> attribute</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Dinosaurs">
<paper-listbox slot="dropdown-content" class="dropdown-content" selected="1">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Dinosaurs (light)">
<paper-listbox slot="dropdown-content" class="dropdown-content" selected="1">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>You can change the direction in which the menu opens</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Upwards and to the left!" vertical-align="bottom" horizontal-align="left">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Upwards and to the left! (light)" vertical-align="bottom" horizontal-align="left">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>A paper-dropdown-menu can be disabled</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Disabled dinosaurs" disabled>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Disabled dinosaurs (light)" disabled>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<!-- TODO(noms): enable this demo when the webcomponentsjs bug is fixed -->
<!-- <h4>Here is an example of a long, scrolling menu, using a <i>dom-repeat</i></h4>
<demo-snippet class="centered-demo">
<template>
<template is="dom-bind" id="Demo">
<paper-dropdown-menu label="Dinosaurs">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<template is="dom-repeat" items='[[dinosaurs]]' as="dinosaur">
<paper-item>[[dinosaur]]</paper-item>
</template>
</paper-listbox>
</paper-dropdown-menu>
</template>
</template>
</demo-snippet> -->
<h4>A paper-dropdown-menu can contain any kind of content, such as tabs</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Menu tabs!?">
<paper-tabs slot="dropdown-content" class="dropdown-content">
<paper-tab>cheddar</paper-tab>
<paper-tab>stilton</paper-tab>
<paper-tab>emmental</paper-tab>
</paper-tabs>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Menu tabs!? (light)">
<paper-tabs slot="dropdown-content" class="dropdown-content">
<paper-tab>cheddar</paper-tab>
<paper-tab>stilton</paper-tab>
<paper-tab>emmental</paper-tab>
</paper-tabs>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>You can remove the ripple and the animations</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Dinosaurs" noink no-animations>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Dinosaurs (light)" noink no-animations>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>You can override the vertical offset to position it below the button</h4>
<demo-snippet class="centered-demo">
<template>
<paper-dropdown-menu label="Dinosaurs" vertical-offset="60">
<paper-listbox slot="dropdown-content" class="dropdown-content" selected="1">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light label="Dinosaurs (light)" vertical-offset="60">
<paper-listbox slot="dropdown-content" class="dropdown-content" selected="1">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
<h4>You can style a paper-dropdown-menu using custom properties</h4>
<demo-snippet class="centered-demo">
<template>
<custom-style>
<style is="custom-style">
paper-dropdown-menu.custom {
--paper-input-container-label: {
color: var(--paper-pink-500);
font-style: italic;
text-align: center;
font-weight: bold;
};
--paper-input-container-input: {
color: var(--paper-indigo-500);
font-style: normal;
font-family: serif;
text-transform: uppercase;
};
/* Only show the underline when focused. */
--paper-input-container-underline: {
display: none;
};
--paper-input-container-underline-focus: {
border-color: var(--paper-cyan-500);
};
}
paper-dropdown-menu-light.custom {
--paper-dropdown-menu-label: {
color: var(--paper-pink-500);
font-style: italic;
text-align: center;
font-weight: bold;
};
--paper-dropdown-menu-input: {
color: var(--paper-indigo-500);
font-style: normal;
font-family: serif;
text-transform: uppercase;
/* Only show the underline when focused. */
border-bottom: none;
};
--paper-dropdown-menu-underline-focus: {
background-color: var(--paper-cyan-500);
};
}
</style>
</custom-style>
<paper-dropdown-menu class="custom" label="Custom" no-label-float>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu-light class="custom" label="Custom (light)" no-label-float>
<paper-listbox slot="dropdown-content" class="dropdown-content">
<paper-item>allosaurus</paper-item>
<paper-item>brontosaurus</paper-item>
<paper-item>carcharodontosaurus</paper-item>
<paper-item>diplodocus</paper-item>
</paper-listbox>
</paper-dropdown-menu-light>
</template>
</demo-snippet>
</div>
</body>
</html>