@@ -55,20 +55,28 @@ import { SelectSize } from './select-size';
5555 class="trigger-content menu-with-border"
5656 [ngClass]="[this.justifyClass]"
5757 >
58- <ht-icon
59- *ngIf="this.getPrefixIcon(selected)"
60- class="trigger-prefix-icon"
61- [icon]="this.getPrefixIcon(selected)"
62- [size]="this.iconSize"
63- [color]="selected?.iconColor"
64- [borderType]="selected?.iconBorderType"
65- [borderColor]="selected?.iconBorderColor"
66- [borderRadius]="selected?.iconBorderRadius"
67- >
68- </ht-icon>
69- <ht-label class="trigger-label" [label]="selected?.selectedLabel || selected?.label || this.placeholder">
70- </ht-label>
58+ <ng-container
59+ [ngTemplateOutlet]="selected?.selectOptionRenderer?.getTemplateRef() ?? defaultMenuWithBorderTriggerTemplate"
60+ ></ng-container>
7161 <ht-icon class="trigger-icon" icon="${ IconType . ChevronDown } " size="${ IconSize . ExtraSmall } "> </ht-icon>
62+ <ng-template #defaultMenuWithBorderTriggerTemplate
63+ ><ht-icon
64+ *ngIf="this.getPrefixIcon(selected)"
65+ class="trigger-prefix-icon"
66+ [icon]="this.getPrefixIcon(selected)"
67+ [size]="this.iconSize"
68+ [color]="selected?.iconColor"
69+ [borderType]="selected?.iconBorderType"
70+ [borderColor]="selected?.iconBorderColor"
71+ [borderRadius]="selected?.iconBorderRadius"
72+ >
73+ </ht-icon>
74+ <ht-label
75+ class="trigger-label"
76+ [label]="selected?.selectedLabel || selected?.label || this.placeholder"
77+ >
78+ </ht-label>
79+ </ng-template>
7280 </div>
7381 <div
7482 *ngSwitchCase="'${ SelectTriggerDisplayMode . Icon } '"
@@ -89,8 +97,16 @@ import { SelectSize } from './select-size';
8997 class="trigger-content menu-with-background"
9098 [ngClass]="[this.justifyClass]"
9199 >
92- <ht-label class="trigger-label" [label]="selected?.selectedLabel || selected?.label || this.placeholder">
93- </ht-label>
100+ <ng-container
101+ [ngTemplateOutlet]="selected?.selectOptionRenderer?.getTemplateRef() ?? defaultMenuWithBackgroundTriggerTemplate"
102+ ></ng-container>
103+ <ng-template #defaultMenuWithBackgroundTriggerTemplate
104+ ><<ht-label
105+ class="trigger-label"
106+ [label]="selected?.selectedLabel || selected?.label || this.placeholder"
107+ >
108+ </ht-label
109+ ></ng-template>
94110 <ht-icon class="trigger-icon" icon="${ IconType . ChevronDown } " size="${ IconSize . Small } "> </ht-icon>
95111 </div>
96112 </div>
@@ -111,28 +127,16 @@ import { SelectSize } from './select-size';
111127 *ngTemplateOutlet="itemsTemplate; context: { items: items, showSelectionStatus: true }"
112128 ></ng-container>
113129 </div>
114-
115130 <ng-template #itemsTemplate let-items="items" let-showSelectionStatus="showSelectionStatus">
116131 <div
117132 *ngFor="let item of items"
118133 (click)="this.onSelectionChange(item)"
119134 class="select-option"
120135 [ngClass]="this.getStyleClassesForSelectItem | htMemoize: this.size:item"
121136 >
122- <div class="select-option-info">
123- <ht-icon
124- *ngIf="item.icon"
125- class="icon"
126- [icon]="item.icon"
127- size="${ IconSize . Small } "
128- [color]="item.iconColor"
129- [borderType]="item?.iconBorderType"
130- [borderColor]="item?.iconBorderColor"
131- [borderRadius]="item?.iconBorderRadius"
132- >
133- </ht-icon>
134- <span class="label">{{ item.label }}</span>
135- </div>
137+ <ng-container
138+ *ngTemplateOutlet="item.selectOptionRenderer?.getTemplateRef() ?? defaultSelectOptionTemplate; context: {$implicit: item}"
139+ ></ng-container>
136140 <ht-icon
137141 class="status-icon"
138142 *ngIf="showSelectionStatus && this.highlightSelected && this.isSelectedItem(item)"
@@ -141,6 +145,23 @@ import { SelectSize } from './select-size';
141145 ></ht-icon>
142146 </div>
143147 </ng-template>
148+
149+ <ng-template #defaultSelectOptionTemplate let-item
150+ ><div class="select-option-info">
151+ <ht-icon
152+ *ngIf="item.icon"
153+ class="icon"
154+ [icon]="item.icon"
155+ size="${ IconSize . Small } "
156+ [color]="item.iconColor"
157+ [borderType]="item?.iconBorderType"
158+ [borderColor]="item?.iconBorderColor"
159+ [borderRadius]="item?.iconBorderRadius"
160+ >
161+ </ht-icon>
162+ <span class="label">{{ item.label }}</span>
163+ </div>
164+ </ng-template>
144165 </ht-popover-content>
145166 </ht-popover>
146167 </div>
0 commit comments