Skip to content

Instantly share code, notes, and snippets.

@liamfiddler
Created September 9, 2016 05:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save liamfiddler/08070e5c2d4796d6ab7026284f6ed84d to your computer and use it in GitHub Desktop.
Save liamfiddler/08070e5c2d4796d6ab7026284f6ed84d to your computer and use it in GitHub Desktop.
Creating a Web Component with Polymer
<link rel="import" href="../polymer/polymer.html">
<!--
`my-listfilter`
A filterable list component
@demo demo/index.html
-->
<dom-module id="my-listfilter">
<template>
<style>
:host {
display: block;
}
</style>
<h2>Hello [[prop1]]</h2>
</template>
<script>
Polymer({
is: 'my-listfilter',
properties: {
prop1: {
type: String,
value: 'my-listfilter',
},
},
});
</script>
</dom-module>
<link rel="import" href="../polymer/polymer.html">
<!--
`my-listfilter`
A filterable list component
@demo demo/index.html
-->
<dom-module id="my-listfilter">
<template>
<style>
:host {
display: block;
}
</style>
<input value="{{prop1::input}}" />
<h2>Hello [[prop1]]</h2>
</template>
<script>
Polymer({
is: 'my-listfilter',
properties: {
prop1: {
type: String,
value: 'my-listfilter',
},
},
});
</script>
</dom-module>
<link rel="import" href="../polymer/polymer.html">
<!--
`my-listfilter`
A filterable list component
@demo demo/index.html
-->
<dom-module id="my-listfilter">
<template>
<style>
:host {
display: block;
}
.hidden {
display: none;
}
</style>
<input value="{{prop1::input}}" />
<h2>Hello [[prop1]]</h2>
<ul id="list">
<li>Hypertext Markup Language</li>
<li>Cascading Style Sheets</li>
<li>Javascript</li>
<li>Web Components</li>
<li>Polymer</li>
<li>Web Browser</li>
<li>Mentally Friendly</li>
</ul>
</template>
<script>
Polymer({
is: 'my-listfilter',
properties: {
prop1: {
type: String,
value: 'my-listfilter',
},
},
});
</script>
</dom-module>
<link rel="import" href="../polymer/polymer.html">
<!--
`my-listfilter`
A filterable list component
@demo demo/index.html
-->
<dom-module id="my-listfilter">
<template>
<style>
:host {
display: block;
}
.hidden {
display: none;
}
</style>
<input value="{{prop1::input}}" />
<h2>Hello [[prop1]]</h2>
<ul id="list">
<li>Hypertext Markup Language</li>
<li>Cascading Style Sheets</li>
<li>Javascript</li>
<li>Web Components</li>
<li>Polymer</li>
<li>Web Browser</li>
<li>Mentally Friendly</li>
</ul>
</template>
<script>
Polymer({
is: 'my-listfilter',
properties: {
prop1: {
type: String,
value: 'my-listfilter',
},
},
filterList: function() {
var items = this.$.list.children;
for (var i = 0; i < items.length; i++) {
var item = Polymer.dom(items[i]);
if (item.textContent.includes(this.prop1)) {
item.classList.remove('hidden');
} else {
item.classList.add('hidden');
}
}
}
});
</script>
</dom-module>
<link rel="import" href="../polymer/polymer.html">
<!--
`my-listfilter`
A filterable list component
@demo demo/index.html
-->
<dom-module id="my-listfilter">
<template>
<style>
:host {
display: block;
}
.hidden {
display: none;
}
</style>
<input value="{{prop1::input}}" />
<h2>Hello [[prop1]]</h2>
<ul id="list">
<li>Hypertext Markup Language</li>
<li>Cascading Style Sheets</li>
<li>Javascript</li>
<li>Web Components</li>
<li>Polymer</li>
<li>Web Browser</li>
<li>Mentally Friendly</li>
</ul>
</template>
<script>
Polymer({
is: 'my-listfilter',
properties: {
prop1: {
type: String,
value: '',
observer: 'filterList'
},
},
filterList: function() {
var items = this.$.list.children;
for (var i = 0; i < items.length; i++) {
var item = Polymer.dom(items[i]);
if (item.textContent.includes(this.prop1)) {
item.classList.remove('hidden');
} else {
item.classList.add('hidden');
}
}
}
});
</script>
</dom-module>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment