README
x-postpress
A Web Component used to render articles. Content can be slotted or fetched over the network.
About
- Built with custom elements, CSS custom properties, and declarative Shadow DOM using TypeScript.
Import
- Add the Web Component to the project (unpkg and npm examples)
Load the custom element using a
script
tag:<script src="https://unpkg.com/x-postpress@3" type="module" > </script>
Alternatively, add using
npm
:npm i x-postpress@3
Then import the module from another file:
import 'x-postpress'
Use
Add the tag into the document and style. Content can be slotted, or fetched over the network as JSON modeled on the WordPress REST API List Posts endpoint, as well as preparsed HTML.
<style> x-postpress { --x-postpress-article-margin: 0 auto 1rem auto; --x-postpress-h1-font-size: 1.5rem; } </style> <!-- use the type and url attribute to fetch over the network --> <x-postpress type="json" url="https://example.com/wp-json/wp/v2/posts?include=1" ></x-postpress> <!-- pre-render or dynamically render slotted content --> <x-postpress> <template shadowroot="open"> <slot name="posts"></slot> </template> <section slot="posts"> <article> <h1> <a href="/example-article/"> example-article </a> </h1> <p>Lorem ipsum</p> </article> </section> </x-postpress> <script> // https://web.dev/declarative-shadow-dom/ document.querySelectorAll('template[shadowroot]') .forEach(template => { const mode = template.getAttribute('shadowroot'); const shadowRoot = template.parentNode.attachShadow({ mode }); shadowRoot.appendChild(template.content); template.remove(); }); </script> <script src="https://unpkg.com/x-postpress@3" type="module" > </script>