Skip to content

Commit

Permalink
fix(icon): verify the icon loads in the lifecycle (#1278)
Browse files Browse the repository at this point in the history
Co-authored-by: sean-perkins <13732623+sean-perkins@users.noreply.github.com
>
  • Loading branch information
thetaPC committed Sep 12, 2023
1 parent 1b7e8aa commit 7f7f346
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/components/icon/icon.tsx
Expand Up @@ -12,6 +12,7 @@ export class Icon {
private io?: IntersectionObserver;
private iconName: string | null = null;
private inheritedAttributes: { [k: string]: any } = {};
private didLoadIcon = false;

@Element() el!: HTMLElement;

Expand Down Expand Up @@ -94,6 +95,18 @@ export class Icon {
});
}

componentDidLoad() {
/**
* Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.
* This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.
* This modification pertains to the usage of Angular's binding syntax:
* `<ion-icon [name]="myIconName"></ion-icon>`
*/
if (!this.didLoadIcon) {
this.loadIcon();
}
}

disconnectedCallback() {
if (this.io) {
this.io.disconnect();
Expand Down Expand Up @@ -138,6 +151,7 @@ export class Icon {
// async if it hasn't been loaded
getSvgContent(url, this.sanitize).then(() => (this.svgContent = ioniconContent.get(url)));
}
this.didLoadIcon = true;
}
}

Expand Down

0 comments on commit 7f7f346

Please sign in to comment.