- From: Joe Pea <notifications@github.com>
- Date: Mon, 13 Aug 2018 16:02:32 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 13 August 2018 23:03:14 UTC
Another idea that avoids using a ShadowRoot, which is based on the idea of callbacks for primitives from https://github.com/w3c/webcomponents/issues/187#issuecomment-388740230:
Because element states are something common to all elements, it think if would be fine to expose a public property on all elements called something like `state` (a `Set<string>` or `DOMTokenList` or similar), then allow only Custom Element code to modify it:
Re-doing my example from above:
```js
import Privates from './privates-helper'
const _ = new Privates
import glUtils from './glUtils'
class GlSphere extends HTMLElement {
receivePrimitiveKeys(keys) {
_(this).keys = keys
}
connectedCallback() {
glUtils.whenMouseEnter(this, () => {
this.states.add('hover', _(this).keys.elementState) // keys.elementState is unique for this instance
})
glUtils.whenMouseLeave(this, () => {
this.states.remove('hover', _(this).keys.elementState)
})
}
}
customElements.define('gl-sphere', GlSphere)
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/738#issuecomment-412694539
Received on Monday, 13 August 2018 23:03:14 UTC