Skip to content

Commit 27e8412

Browse files
committed
refactor(material-icons-extended): improve rendering performance
1 parent 971df9b commit 27e8412

3 files changed

Lines changed: 26 additions & 15 deletions

File tree

src/app/data-display/icon/material-icons-extended/material-icons-extended.component.html

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,12 @@
4242
@for (icon of group.icons; track trackByIcon($index, icon)) {
4343
<div
4444
class="sample__grid-item"
45+
(mouseenter)="onIconMouseEnter(icon)"
46+
(mouseleave)="onIconMouseLeave()"
4547
>
4648
<button
4749
[value]="icon.name"
48-
[title]="
49-
'Copy &quot;' +
50-
icon.name +
51-
'&quot; to clipboard'
52-
"
50+
[title]="'Copy &quot;' + icon.name + '&quot; to clipboard'"
5351
(click)="copyValue($event, icon.name)"
5452
class="sample__grid-item-clipboard"
5553
>
@@ -59,25 +57,26 @@
5957
<igx-icon
6058
class="sample__grid-icon"
6159
family="imx-icons"
62-
name="{{ icon.name }}"
63-
></igx-icon>
60+
[name]="icon.name">
61+
</igx-icon>
6462
<span
6563
class="sample__grid-icon-name"
66-
title="{{ icon.name }}"
67-
>{{ icon.name }}</span
68-
>
69-
</div>
64+
[title]="icon.name">
65+
{{ icon.name }}
66+
</span>
67+
</div>
68+
@if (hoveredIcon === icon) {
7069
<button
7170
(click)="downloadFile(icon)"
72-
igxripple
7371
class="sample__grid-item-download"
7472
igxButton="contained"
75-
>
73+
igxRipple>
7674
<igx-icon>arrow_downward</igx-icon>
7775
<span>SVG</span>
7876
</button>
79-
</div>
80-
}
77+
}
78+
</div>
79+
}
8180
</div>
8281
</section>
8382
</article>

src/app/data-display/icon/material-icons-extended/material-icons-extended.component.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ $clipboardSuccessColor: color($color: 'success');
152152
padding: $grid-item-padding;
153153
position: relative;
154154
border: $grid-item-border-width solid transparent;
155+
contain: layout;
155156

156157
&:hover,
157158
&:focus {

src/app/data-display/icon/material-icons-extended/material-icons-extended.component.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,17 @@ export class MaterialIconsExtendedComponent implements OnInit {
115115

116116
public allIcons = imxIcons;
117117
public selectedCategory: IconCategory | 'all' = 'all';
118+
119+
// Floating download button
120+
public hoveredIcon: IMXIcon | null = null;
121+
122+
onIconMouseEnter(icon: IMXIcon) {
123+
this.hoveredIcon = icon;
124+
}
125+
126+
onIconMouseLeave() {
127+
this.hoveredIcon = null;
128+
}
118129

119130
handleSelection(event: ISelectionEventArgs) {
120131
this.selectedCategory = event.newSelection.value;

0 commit comments

Comments
 (0)