A paper-input that provides the user with input suggestions

[ This description is mirrored from README.md at github.com/Juravenator/paper-dropdown-input on 2019-05-22 ]

paper-dropdown-input

A paper-input that provides the user with input suggestions.
Compatible with Polymer 1.9 and 2.x.

Demo and API Docs

Examples

Basic input

    <paper-dropdown-input label="Your favorite dinosaur"
                          items='["Velociraptor","Deinonychus","Allosaurus","Brontosaurus","Carcharodontosaurus","Diplodocus","T-Rex"]'>
    </paper-dropdown-input>

Basic input demo

Custom template

complexItems is an array of objects of the form:

{
  "value": "Deinonychus",
  "type": "carnivore"
}
<paper-dropdown-input label="Your favorite dinosaur" items='[[complexItems]]'>
  <template>
    <p disabled>Carnivores</p>
    <template is="dom-repeat" items="[[_getCarnivores(items)]]" as="item">
      <paper-item>[[item.value]]</paper-item>
    </template>
    <hr disabled>
    <p disabled>Herbivores</p>
    <template is="dom-repeat" items="[[_getHerbivores(items)]]" as="item">
      <paper-item>[[item.value]]</paper-item>
    </template>
  </template>
</paper-dropdown-input>

Custom template demo

Completely custom template

complexItems is an array of objects of the form:

{
  "dinoName": "Deinonychus",
  "avatar": "deinonychus.png",
  "type": "carnivore",
  "description": "Deinonychus is a genus of carnivorous dromaeosaurid coelurosaurian dinosaurs, with one described species, Deinonychus antirrhopus. This species, which could grow up to 3.4 metres (11 ft) long, lived during the early Cretaceous Period, about 115–108 million years ago (from the mid-Aptian to early Albian stages). Fossils have been recovered from the U.S. states of Montana, Utah, Wyoming, and Oklahoma, in rocks of the Cloverly Formation, Cedar Mountain Formation and Antlers Formation, though teeth that may belong to Deinonychus have been found much farther east in Maryland."
}

Notice the absence of the value property in the object. The name of the property to filter on in objects can be set using filterProperty.

    <paper-dropdown-input label="Your favorite dinosaur"
                          items='[[complexItems]]'
                          filter-property="dinoName">
      <template>
        <template is="dom-repeat" items="[[items]]" as="item">
          <dinosaur-card data="[[item]]"></dinosaur-card>
        </template>
      </template>
    </paper-dropdown-input>

    <dom-module id="dinosaur-card">
      <template>
        <style>/* ... */</style>

        <div horizontal layout>
          <img src="[[data.avatar]]" alt="[[data.name]]" />
          <div>
            <h3>[[data.value]]</h3>
            <p>[[data.description]]</p>
          </div>
        </div>

      </template>
      <script>
        Polymer({
          is: 'dinosaur-card',
          properties: {
            data: Object,
            label: {
              type: String,
              computed: "_getLabel(data)"
            }
          },
          listeners: {
            "tap": "dinotap"
          },
          dinotap: function(event) {
            event.stopPropagation();
            this.fire('iron-select', {item: this});
          },
          _getLabel: function(data) {
            return data.dinoName;
          }
        });
      </script>
    </dom-module>

Completely custom template demo

Styling

The items in the dropdown list reside in the light DOM, so you are free to style them however you like.

Additionaly, paper-dropdown-input implements the same styling as paper-dropdown-menu.

Install

Link to this version
ImportedReleased 21 September 2017MIT License
Framework Support
Polymer 2.0+
Also supported:
Polymer 1 (2.4.1)
Browser Compatibility
Install with
bower install --save Juravenator/paper-dropdown-input"#2.5.2"
Run the above Bower command in your project folder. If you have any issues installing, please contact the author.
Release notes - Version 2.5.2

Dependencies

  • polymer#Polymer/polymer#1.9 - 2
  • iron-icon##1 - 2
  • iron-icons##1 - 2
  • paper-item##1 - 2
  • paper-listbox##1 - 2
  • paper-input##1 - 2
  • paper-dropdown-menu##1 - 2
  • iron-input##1 - 2
  • paper-icon-button##1 - 2
  • web-animations-js#web-animations/web-animations-js#^2.3.1