Skip to content

Juravenator/paper-dropdown-input

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A paper-input that provides the user with input suggestions

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages