diff --git a/elements/lazy-template/lazy-template-examples.js b/elements/lazy-template/lazy-template-examples.js new file mode 100644 index 00000000..c95e99ac --- /dev/null +++ b/elements/lazy-template/lazy-template-examples.js @@ -0,0 +1,37 @@ +export default { + element: 'lazy-template', + examples: { + 'Load On Page Load': { + render () { + return ` + + `; + }, + }, + 'Load On In View': { + render () { + return ` +
+
SCROLL DOWN TO LOAD STUFF
+ +
+ `; + }, + }, + }, +}; diff --git a/elements/lazy-template/lazy-template.js b/elements/lazy-template/lazy-template.js new file mode 100644 index 00000000..e623e1e7 --- /dev/null +++ b/elements/lazy-template/lazy-template.js @@ -0,0 +1,68 @@ +import { registerElement } from 'bulbs-elements/register'; +import { InViewMonitor } from 'bulbs-elements/util'; +import invariant from 'invariant'; +import './lazy-template.scss'; + +function BulbsHTMLScriptElement () {} +BulbsHTMLScriptElement.prototype = HTMLScriptElement.prototype; + +class LazyTemplate extends BulbsHTMLScriptElement { + get loadOn () { + return this.getAttribute('load-on'); + } + + attachedCallback () { + invariant(this.hasAttribute('load-on'), + '