fix(all): component reusage (#18963)

Use new stencil APIs to allow ionic elements to be reused once removed from the DOM.

fixes #18843
fixes #17344
fixes #16453
fixes #15879
fixes #15788
fixes #15484
fixes #17890
fixes #16364
This commit is contained in:
Manu MA
2019-08-27 16:29:37 +02:00
committed by GitHub
parent a65d897214
commit 48a27636c7
33 changed files with 411 additions and 368 deletions

View File

@ -97,20 +97,19 @@ export class Refresher implements ComponentInterface {
*/
@Event() ionStart!: EventEmitter<void>;
async componentDidLoad() {
async connectedCallback() {
if (this.el.getAttribute('slot') !== 'fixed') {
console.error('Make sure you use: <ion-refresher slot="fixed">');
return;
}
const contentEl = this.el.closest('ion-content');
if (contentEl) {
this.scrollEl = await contentEl.getScrollElement();
} else {
console.error('ion-refresher did not attach, make sure the parent is an ion-content.');
if (!contentEl) {
console.error('<ion-refresher> must be used inside an <ion-content>');
return;
}
this.scrollEl = await contentEl.getScrollElement();
this.gesture = (await import('../../utils/gesture')).createGesture({
el: this.el.closest('ion-content') as any,
el: contentEl,
gestureName: 'refresher',
gesturePriority: 10,
direction: 'y',
@ -125,7 +124,7 @@ export class Refresher implements ComponentInterface {
this.disabledChanged();
}
componentDidUnload() {
disconnectedCallback() {
this.scrollEl = undefined;
if (this.gesture) {
this.gesture.destroy();