@@ -55,20 +55,28 @@ import { SelectSize } from './select-size';
55
55
class="trigger-content menu-with-border"
56
56
[ngClass]="[this.justifyClass]"
57
57
>
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>
71
61
<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>
72
80
</div>
73
81
<div
74
82
*ngSwitchCase="'${ SelectTriggerDisplayMode . Icon } '"
@@ -89,8 +97,16 @@ import { SelectSize } from './select-size';
89
97
class="trigger-content menu-with-background"
90
98
[ngClass]="[this.justifyClass]"
91
99
>
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>
94
110
<ht-icon class="trigger-icon" icon="${ IconType . ChevronDown } " size="${ IconSize . Small } "> </ht-icon>
95
111
</div>
96
112
</div>
@@ -111,28 +127,16 @@ import { SelectSize } from './select-size';
111
127
*ngTemplateOutlet="itemsTemplate; context: { items: items, showSelectionStatus: true }"
112
128
></ng-container>
113
129
</div>
114
-
115
130
<ng-template #itemsTemplate let-items="items" let-showSelectionStatus="showSelectionStatus">
116
131
<div
117
132
*ngFor="let item of items"
118
133
(click)="this.onSelectionChange(item)"
119
134
class="select-option"
120
135
[ngClass]="this.getStyleClassesForSelectItem | htMemoize: this.size:item"
121
136
>
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>
136
140
<ht-icon
137
141
class="status-icon"
138
142
*ngIf="showSelectionStatus && this.highlightSelected && this.isSelectedItem(item)"
@@ -141,6 +145,23 @@ import { SelectSize } from './select-size';
141
145
></ht-icon>
142
146
</div>
143
147
</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>
144
165
</ht-popover-content>
145
166
</ht-popover>
146
167
</div>
0 commit comments