Skip to content

Instantly share code, notes, and snippets.

@MageMasher
Forked from thheller/web-component-v1.cljs
Created April 9, 2019 13:45
Show Gist options
  • Save MageMasher/fc5c35bdc8a7f70f2c804ba36503b2d6 to your computer and use it in GitHub Desktop.
Save MageMasher/fc5c35bdc8a7f70f2c804ba36503b2d6 to your computer and use it in GitHub Desktop.
create web-component v1 in cljs without class
(defn component []
(js/Reflect.construct js/HTMLElement #js [] component))
(set! (.-prototype component)
(js/Object.create (.-prototype js/HTMLElement)
#js {:connectedCallback
#js {:configurable true
:value
(fn []
(this-as this
(js/console.log "connected" this)))}
:disconnectedCallback
#js {:configurable true
:value
(fn []
(this-as this
(js/console.log "disconnectedCallback" this)))}
:attributeChangedCallback
#js {:configurable true
:value
(fn []
(this-as this
(js/console.log "attributeChangedCallback" this)))}
}))
(js/window.customElements.define "x-component" component)
(let [x (js/document.createElement "x-component")]
(js/document.body.appendChild x))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment