@apollo-elements/mixins
🍹 Moon mixins for cosmic components 👩🚀
A set of class mixin functions that add Apollo GraphQL goodness to your web component classes.
📓 Contents
🔧 Installation
Apollo element mixins are distributed through npm
, the node package manager. To install a copy of the latest version in your project's node_modules
directory, install npm on your system then run the following command in your project's root directory:
npm install --save @apollo-elements/mixins
👩🚀 Usage
Here's an example that uses HTMLElement
import { ApolloQueryMixin } from '@apollo-elements/mixins/apollo-query-mixin.js';
class HelloQuery extends ApolloQueryMixin(HTMLElement) {
constructor() {
super();
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>/* ... */</style>
<p hidden>
<span id="greeting"></span>
<span id="name"></span>
</p>
`;
}
get data() {
return this.__data;
}
set data(data) {
this.__data = data;
this.render();
}
render() {
if (!this.data) return;
this.shadowRoot.getElementById('greeting').textContent =
this.data?.helloWorld.greeting ?? 'Hello';
this.shadowRoot.getElementById('name').textContent =
this.data?.helloWorld.name ?? 'Friend';
this.shadowRoot.querySelector('p').hidden = false;
}
}
customElements.define('hello-query', HelloQuery);
<hello-query>
<script type="application/graphql">
query HelloQuery {
helloWorld {
name
greeting
}
}
</script>
</hello-query>
Aren't Mixins Considered Harmful?
Different kind of mixin. These are JS class mixins.
👷♂️ Maintainers
apollo-elements
is a community project maintained by Benny Powers.