Closed t2ym closed 5 years ago
[HOWTO][discard-on-disconnect] Make discard-on-disconnect default
discard-on-disconnect
It may be obvious but it is better to show how to make discard-on-disconnect default
i18n
disposable
i18n.js
constructor()
class MyElement extends i18n(HTMLElement) { constructor() { super(); Promise.resolve().then(() => this.setAttribute('discard-on-disconnect', ''); ... } }
connectedCallback()
class MyElement extends i18n(HTMLElement) { connectedCallback() { super.connectedCallback(); this.setAttribute('discard-on-disconnect', ''); } }
hasAttribute()
class MyElement extends i18n(HTMLElement) { hasAttribute(name) { return name === 'discard-on-disconnect' ? true : super.hasAttribute(name); } }
// disposable.js export const disposable = (base) => class DisposableElement extends base { hasAttribute(name) { return name === 'discard-on-disconnect' ? true : super.hasAttribute(name); } } // my-element.js import { disposable } from './disposable.js'; class MyElement extends disposable(i18n(HTMLElement)) { disconnectedCallback() { super.disconnectedCallback(); // own cleanup } ... }
// disposable-i18n.js import { i18n as _i18n } from 'i18n-element/i18n.js'; export const i18n = (base) => class DisposableElement extends _i18n(base) { hasAttribute(name) { return name === 'discard-on-disconnect' ? true : super.hasAttribute(name); } } // my-element.js import { i18n } from './disposable-i18n.js'; class MyElement extends i18n(HTMLElement) { disconnectedCallback() { super.disconnectedCallback(); // own cleanup } ... }
discard-on-disconnect has been deprecated at Issue #89
[HOWTO][discard-on-disconnect] Make
discard-on-disconnect
defaultIt may be obvious but it is better to show how to make
discard-on-disconnect
defaultDesign Issue
discard-on-disconnect
be default fori18n
mixin?disposable
mixin be provided fromi18n.js
?HOWTOs
Option # 1 - Set at
constructor()
Option # 2 - Set at
connectedCallback()
Option # 3 - Override
hasAttribute()
Option # 4 - Create a mixin
Option # 5 - Override
i18n
mixin