t2ym / i18n-element

I18N Base Element for Lit and Polymer
Other
9 stars 1 forks source link

[discard-on-disconnect] Add a handy way to enable discard-on-disconnect #88

Closed t2ym closed 5 years ago

t2ym commented 5 years ago

[discard-on-disconnect] Add a handy way to enable discard-on-disconnect

Implementation Plans

Plan # 1 - disposable mixin to override hasAttribute()

// i18n.js
export const disposable = (base) => class DisposableElement extends base {
  hasAttribute(name) {
    return name === 'discard-on-disconnect' ? true : super.hasAttribute(name);
  }
}

Plan # 2 - Add discardOnDisconnect property

// i18n.js
... if (this.hasAttribute('discard-on-disconnect') || this.discardOnDisconnect) ...
// my-element.js
class MyElement extends i18n(HTMLElement) {
  get discardOnDisconnect() { return true; }
  ..
}
// my-element2.js
class MyElement2 extends i18n(HTMLElement) {
  constructor() {
    super();
    this.discardOnDisconnect = true;
  }
  ..
}

Imperative Disposal

this.discardOnDisconnect = true;
this.disconnectedCallback();
t2ym commented 5 years ago

discard-on-disconnect has been deprecated with Issue #89