primeng 16.5.1 → 16.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/animate/animate.d.ts +3 -2
  2. package/animateonscroll/animateonscroll.d.ts +73 -0
  3. package/animateonscroll/index.d.ts +5 -0
  4. package/animateonscroll/public_api.d.ts +1 -0
  5. package/api/menuitem.d.ts +5 -1
  6. package/api/primengconfig.d.ts +1 -0
  7. package/autocomplete/autocomplete.d.ts +177 -54
  8. package/autocomplete/autocomplete.interface.d.ts +30 -0
  9. package/breadcrumb/breadcrumb.d.ts +1 -0
  10. package/cascadeselect/cascadeselect.d.ts +188 -68
  11. package/cascadeselect/cascadeselect.interface.d.ts +19 -0
  12. package/checkbox/checkbox.d.ts +1 -4
  13. package/chips/chips.d.ts +21 -5
  14. package/colorpicker/colorpicker.d.ts +5 -5
  15. package/contextmenu/contextmenu.d.ts +4 -1
  16. package/dialog/dialog.d.ts +1 -2
  17. package/dom/domhandler.d.ts +4 -1
  18. package/dropdown/dropdown.d.ts +115 -37
  19. package/esm2022/accordion/accordion.mjs +11 -7
  20. package/esm2022/animate/animate.mjs +4 -1
  21. package/esm2022/animateonscroll/animateonscroll.mjs +185 -0
  22. package/esm2022/animateonscroll/primeng-animateonscroll.mjs +5 -0
  23. package/esm2022/animateonscroll/public_api.mjs +2 -0
  24. package/esm2022/api/menuitem.mjs +1 -1
  25. package/esm2022/api/primengconfig.mjs +2 -1
  26. package/esm2022/autocomplete/autocomplete.interface.mjs +1 -1
  27. package/esm2022/autocomplete/autocomplete.mjs +893 -617
  28. package/esm2022/breadcrumb/breadcrumb.mjs +44 -17
  29. package/esm2022/button/button.mjs +2 -2
  30. package/esm2022/carousel/carousel.mjs +6 -1
  31. package/esm2022/cascadeselect/cascadeselect.interface.mjs +1 -1
  32. package/esm2022/cascadeselect/cascadeselect.mjs +921 -482
  33. package/esm2022/checkbox/checkbox.mjs +90 -73
  34. package/esm2022/chips/chips.mjs +197 -53
  35. package/esm2022/colorpicker/colorpicker.mjs +56 -37
  36. package/esm2022/contextmenu/contextmenu.mjs +177 -144
  37. package/esm2022/dialog/dialog.mjs +6 -11
  38. package/esm2022/dom/domhandler.mjs +26 -8
  39. package/esm2022/dropdown/dropdown.mjs +707 -588
  40. package/esm2022/galleria/galleria.mjs +3 -3
  41. package/esm2022/image/image.mjs +11 -4
  42. package/esm2022/inputmask/inputmask.mjs +22 -9
  43. package/esm2022/inputnumber/inputnumber.mjs +142 -83
  44. package/esm2022/inputswitch/inputswitch.mjs +55 -49
  45. package/esm2022/knob/knob.mjs +92 -5
  46. package/esm2022/listbox/listbox.interface.mjs +1 -1
  47. package/esm2022/listbox/listbox.mjs +996 -454
  48. package/esm2022/megamenu/megamenu.mjs +168 -144
  49. package/esm2022/menu/menu.mjs +146 -94
  50. package/esm2022/menubar/menubar.mjs +168 -144
  51. package/esm2022/multiselect/multiselect.mjs +1022 -603
  52. package/esm2022/overlaypanel/overlaypanel.mjs +10 -4
  53. package/esm2022/paginator/paginator.mjs +2 -2
  54. package/esm2022/panelmenu/panelmenu.mjs +135 -106
  55. package/esm2022/password/password.mjs +29 -28
  56. package/esm2022/radiobutton/radiobutton.mjs +46 -33
  57. package/esm2022/rating/rating.mjs +172 -80
  58. package/esm2022/selectbutton/selectbutton.mjs +105 -34
  59. package/esm2022/slider/slider.mjs +151 -66
  60. package/esm2022/splitbutton/splitbutton.interface.mjs +1 -1
  61. package/esm2022/splitbutton/splitbutton.mjs +70 -14
  62. package/esm2022/table/table.mjs +3 -3
  63. package/esm2022/tabmenu/tabmenu.mjs +17 -25
  64. package/esm2022/tabview/tabview.mjs +3 -3
  65. package/esm2022/tieredmenu/tieredmenu.mjs +168 -144
  66. package/esm2022/togglebutton/togglebutton.mjs +47 -10
  67. package/esm2022/treetable/treetable.mjs +1 -1
  68. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +53 -35
  69. package/fesm2022/primeng-accordion.mjs +10 -6
  70. package/fesm2022/primeng-accordion.mjs.map +1 -1
  71. package/fesm2022/primeng-animate.mjs +3 -0
  72. package/fesm2022/primeng-animate.mjs.map +1 -1
  73. package/fesm2022/primeng-animateonscroll.mjs +190 -0
  74. package/fesm2022/primeng-animateonscroll.mjs.map +1 -0
  75. package/fesm2022/primeng-api.mjs +1 -0
  76. package/fesm2022/primeng-api.mjs.map +1 -1
  77. package/fesm2022/primeng-autocomplete.mjs +893 -617
  78. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  79. package/fesm2022/primeng-breadcrumb.mjs +43 -16
  80. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  81. package/fesm2022/primeng-button.mjs +1 -1
  82. package/fesm2022/primeng-button.mjs.map +1 -1
  83. package/fesm2022/primeng-carousel.mjs +5 -0
  84. package/fesm2022/primeng-carousel.mjs.map +1 -1
  85. package/fesm2022/primeng-cascadeselect.mjs +920 -481
  86. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  87. package/fesm2022/primeng-checkbox.mjs +89 -72
  88. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  89. package/fesm2022/primeng-chips.mjs +195 -51
  90. package/fesm2022/primeng-chips.mjs.map +1 -1
  91. package/fesm2022/primeng-colorpicker.mjs +55 -36
  92. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  93. package/fesm2022/primeng-contextmenu.mjs +176 -143
  94. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  95. package/fesm2022/primeng-dialog.mjs +5 -10
  96. package/fesm2022/primeng-dialog.mjs.map +1 -1
  97. package/fesm2022/primeng-dom.mjs +25 -7
  98. package/fesm2022/primeng-dom.mjs.map +1 -1
  99. package/fesm2022/primeng-dropdown.mjs +707 -588
  100. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  101. package/fesm2022/primeng-galleria.mjs +2 -2
  102. package/fesm2022/primeng-galleria.mjs.map +1 -1
  103. package/fesm2022/primeng-image.mjs +10 -3
  104. package/fesm2022/primeng-image.mjs.map +1 -1
  105. package/fesm2022/primeng-inputmask.mjs +20 -7
  106. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  107. package/fesm2022/primeng-inputnumber.mjs +140 -81
  108. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  109. package/fesm2022/primeng-inputswitch.mjs +55 -49
  110. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  111. package/fesm2022/primeng-knob.mjs +92 -5
  112. package/fesm2022/primeng-knob.mjs.map +1 -1
  113. package/fesm2022/primeng-listbox.mjs +995 -453
  114. package/fesm2022/primeng-listbox.mjs.map +1 -1
  115. package/fesm2022/primeng-megamenu.mjs +167 -143
  116. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  117. package/fesm2022/primeng-menu.mjs +146 -94
  118. package/fesm2022/primeng-menu.mjs.map +1 -1
  119. package/fesm2022/primeng-menubar.mjs +167 -143
  120. package/fesm2022/primeng-menubar.mjs.map +1 -1
  121. package/fesm2022/primeng-multiselect.mjs +1021 -602
  122. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  123. package/fesm2022/primeng-overlaypanel.mjs +9 -3
  124. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  125. package/fesm2022/primeng-paginator.mjs +1 -1
  126. package/fesm2022/primeng-paginator.mjs.map +1 -1
  127. package/fesm2022/primeng-panelmenu.mjs +134 -105
  128. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  129. package/fesm2022/primeng-password.mjs +27 -26
  130. package/fesm2022/primeng-password.mjs.map +1 -1
  131. package/fesm2022/primeng-radiobutton.mjs +46 -33
  132. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  133. package/fesm2022/primeng-rating.mjs +171 -79
  134. package/fesm2022/primeng-rating.mjs.map +1 -1
  135. package/fesm2022/primeng-selectbutton.mjs +104 -33
  136. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  137. package/fesm2022/primeng-slider.mjs +150 -65
  138. package/fesm2022/primeng-slider.mjs.map +1 -1
  139. package/fesm2022/primeng-splitbutton.mjs +69 -13
  140. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  141. package/fesm2022/primeng-table.mjs +2 -2
  142. package/fesm2022/primeng-table.mjs.map +1 -1
  143. package/fesm2022/primeng-tabmenu.mjs +16 -24
  144. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  145. package/fesm2022/primeng-tabview.mjs +2 -2
  146. package/fesm2022/primeng-tabview.mjs.map +1 -1
  147. package/fesm2022/primeng-tieredmenu.mjs +167 -143
  148. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  149. package/fesm2022/primeng-togglebutton.mjs +46 -9
  150. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  151. package/fesm2022/primeng-treetable.mjs.map +1 -1
  152. package/fesm2022/primeng-tristatecheckbox.mjs +53 -35
  153. package/fesm2022/primeng-tristatecheckbox.mjs.map +1 -1
  154. package/image/image.d.ts +6 -1
  155. package/inputmask/inputmask.d.ts +6 -1
  156. package/inputnumber/inputnumber.d.ts +6 -1
  157. package/inputswitch/inputswitch.d.ts +6 -9
  158. package/knob/knob.d.ts +20 -3
  159. package/listbox/listbox.d.ts +208 -39
  160. package/listbox/listbox.interface.d.ts +15 -0
  161. package/megamenu/megamenu.d.ts +3 -1
  162. package/menu/menu.d.ts +11 -5
  163. package/menubar/menubar.d.ts +3 -1
  164. package/multiselect/multiselect.d.ts +171 -60
  165. package/overlaypanel/overlaypanel.d.ts +1 -0
  166. package/package.json +83 -77
  167. package/panelmenu/panelmenu.d.ts +5 -2
  168. package/password/password.d.ts +3 -4
  169. package/radiobutton/radiobutton.d.ts +1 -2
  170. package/rating/rating.d.ts +29 -7
  171. package/resources/components/dropdown/dropdown.css +16 -2
  172. package/resources/themes/arya-blue/theme.css +106 -84
  173. package/resources/themes/arya-green/theme.css +106 -84
  174. package/resources/themes/arya-orange/theme.css +106 -84
  175. package/resources/themes/arya-purple/theme.css +106 -84
  176. package/resources/themes/bootstrap4-dark-blue/theme.css +110 -88
  177. package/resources/themes/bootstrap4-dark-purple/theme.css +110 -88
  178. package/resources/themes/bootstrap4-light-blue/theme.css +110 -88
  179. package/resources/themes/bootstrap4-light-purple/theme.css +110 -88
  180. package/resources/themes/fluent-light/theme.css +103 -81
  181. package/resources/themes/lara-dark-blue/theme.css +106 -84
  182. package/resources/themes/lara-dark-indigo/theme.css +106 -84
  183. package/resources/themes/lara-dark-purple/theme.css +106 -84
  184. package/resources/themes/lara-dark-teal/theme.css +106 -84
  185. package/resources/themes/lara-light-blue/theme.css +109 -87
  186. package/resources/themes/lara-light-indigo/theme.css +109 -87
  187. package/resources/themes/lara-light-purple/theme.css +109 -87
  188. package/resources/themes/lara-light-teal/theme.css +109 -87
  189. package/resources/themes/luna-amber/theme.css +110 -88
  190. package/resources/themes/luna-blue/theme.css +110 -88
  191. package/resources/themes/luna-green/theme.css +110 -88
  192. package/resources/themes/luna-pink/theme.css +110 -88
  193. package/resources/themes/md-dark-deeppurple/theme.css +117 -95
  194. package/resources/themes/md-dark-indigo/theme.css +117 -95
  195. package/resources/themes/md-light-deeppurple/theme.css +117 -95
  196. package/resources/themes/md-light-indigo/theme.css +117 -95
  197. package/resources/themes/mdc-dark-deeppurple/theme.css +117 -95
  198. package/resources/themes/mdc-dark-indigo/theme.css +117 -95
  199. package/resources/themes/mdc-light-deeppurple/theme.css +117 -95
  200. package/resources/themes/mdc-light-indigo/theme.css +117 -95
  201. package/resources/themes/mira/theme.css +107 -85
  202. package/resources/themes/nano/theme.css +109 -87
  203. package/resources/themes/nova/theme.css +110 -88
  204. package/resources/themes/nova-accent/theme.css +109 -87
  205. package/resources/themes/nova-alt/theme.css +110 -88
  206. package/resources/themes/rhea/theme.css +109 -87
  207. package/resources/themes/saga-blue/theme.css +106 -84
  208. package/resources/themes/saga-green/theme.css +106 -84
  209. package/resources/themes/saga-orange/theme.css +106 -84
  210. package/resources/themes/saga-purple/theme.css +106 -84
  211. package/resources/themes/soho-dark/theme.css +109 -87
  212. package/resources/themes/soho-light/theme.css +109 -87
  213. package/resources/themes/tailwind-light/theme.css +110 -88
  214. package/resources/themes/vela-blue/theme.css +106 -84
  215. package/resources/themes/vela-green/theme.css +106 -84
  216. package/resources/themes/vela-orange/theme.css +106 -84
  217. package/resources/themes/vela-purple/theme.css +106 -84
  218. package/resources/themes/viva-dark/theme.css +109 -87
  219. package/resources/themes/viva-light/theme.css +109 -87
  220. package/selectbutton/selectbutton.d.ts +15 -3
  221. package/slider/slider.d.ts +12 -6
  222. package/splitbutton/splitbutton.d.ts +10 -1
  223. package/splitbutton/splitbutton.interface.d.ts +15 -0
  224. package/tabmenu/tabmenu.d.ts +2 -2
  225. package/tieredmenu/tieredmenu.d.ts +3 -1
  226. package/togglebutton/togglebutton.d.ts +7 -1
  227. package/treetable/treetable.d.ts +1 -1
  228. package/tristatecheckbox/tristatecheckbox.d.ts +8 -4
@@ -24,6 +24,7 @@ class ContextMenuSub {
24
24
  ref;
25
25
  visible = false;
26
26
  items;
27
+ itemTemplate;
27
28
  root = false;
28
29
  autoZIndex = true;
29
30
  baseZIndex = 0;
@@ -129,7 +130,7 @@ class ContextMenuSub {
129
130
  }
130
131
  }
131
132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ContextMenuSub, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => ContextMenu) }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
132
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { visible: "visible", items: "items", root: "root", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", popup: "popup", menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: "level", focusedItemId: "focusedItemId", activeItemPath: "activeItemPath", tabindex: "tabindex" }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { visible: "visible", items: "items", itemTemplate: "itemTemplate", root: "root", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", popup: "popup", menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: "level", focusedItemId: "focusedItemId", activeItemPath: "activeItemPath", tabindex: "tabindex" }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
133
134
  <ul
134
135
  *ngIf="root ? true : visible"
135
136
  #sublist
@@ -180,88 +181,94 @@ class ContextMenuSub {
180
181
  [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
181
182
  >
182
183
  <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({$event, processedItem})">
183
- <a
184
- *ngIf="!getItemProp(processedItem, 'routerLink')"
185
- [attr.href]="getItemProp(processedItem, 'url')"
186
- [attr.aria-hidden]="true"
187
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
188
- [attr.data-pc-section]="'action'"
189
- [target]="getItemProp(processedItem, 'target')"
190
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
191
- [attr.tabindex]="-1"
192
- pRipple
193
- >
194
- <span
195
- *ngIf="getItemProp(processedItem, 'icon')"
196
- class="p-menuitem-icon"
197
- [ngClass]="getItemProp(processedItem, 'icon')"
198
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
199
- [attr.data-pc-section]="'icon'"
184
+ <ng-container *ngIf="!itemTemplate">
185
+ <a
186
+ *ngIf="!getItemProp(processedItem, 'routerLink')"
187
+ [attr.href]="getItemProp(processedItem, 'url')"
200
188
  [attr.aria-hidden]="true"
189
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
190
+ [attr.data-pc-section]="'action'"
191
+ [target]="getItemProp(processedItem, 'target')"
192
+ [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
201
193
  [attr.tabindex]="-1"
194
+ pRipple
202
195
  >
203
- </span>
204
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
205
- {{ getItemLabel(processedItem) }}
206
- </span>
207
- <ng-template #htmlLabel>
208
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
209
- </ng-template>
210
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
196
+ <span
197
+ *ngIf="getItemProp(processedItem, 'icon')"
198
+ class="p-menuitem-icon"
199
+ [ngClass]="getItemProp(processedItem, 'icon')"
200
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
201
+ [attr.data-pc-section]="'icon'"
202
+ [attr.aria-hidden]="true"
203
+ [attr.tabindex]="-1"
204
+ >
205
+ </span>
206
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
207
+ {{ getItemLabel(processedItem) }}
208
+ </span>
209
+ <ng-template #htmlLabel>
210
+ <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
211
+ </ng-template>
212
+ <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
211
213
 
212
- <ng-container *ngIf="isItemGroup(processedItem)">
213
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
214
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
215
- </ng-container>
216
- </a>
217
- <a
218
- *ngIf="getItemProp(processedItem, 'routerLink')"
219
- [routerLink]="getItemProp(processedItem, 'routerLink')"
220
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
221
- [attr.tabindex]="-1"
222
- [attr.aria-hidden]="true"
223
- [attr.data-pc-section]="'action'"
224
- [queryParams]="getItemProp(processedItem, 'queryParams')"
225
- [routerLinkActive]="'p-menuitem-link-active'"
226
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
227
- [target]="getItemProp(processedItem, 'target')"
228
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
229
- [fragment]="getItemProp(processedItem, 'fragment')"
230
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
231
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
232
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
233
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
234
- [state]="getItemProp(processedItem, 'state')"
235
- pRipple
236
- >
237
- <span
238
- *ngIf="getItemProp(processedItem, 'icon')"
239
- class="p-menuitem-icon"
240
- [ngClass]="getItemProp(processedItem, 'icon')"
241
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
242
- [attr.data-pc-section]="'icon'"
243
- [attr.aria-hidden]="true"
214
+ <ng-container *ngIf="isItemGroup(processedItem)">
215
+ <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
216
+ <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
217
+ </ng-container>
218
+ </a>
219
+ <a
220
+ *ngIf="getItemProp(processedItem, 'routerLink')"
221
+ [routerLink]="getItemProp(processedItem, 'routerLink')"
222
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
244
223
  [attr.tabindex]="-1"
224
+ [attr.aria-hidden]="true"
225
+ [attr.data-pc-section]="'action'"
226
+ [queryParams]="getItemProp(processedItem, 'queryParams')"
227
+ [routerLinkActive]="'p-menuitem-link-active'"
228
+ [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
229
+ [target]="getItemProp(processedItem, 'target')"
230
+ [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
231
+ [fragment]="getItemProp(processedItem, 'fragment')"
232
+ [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
233
+ [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
234
+ [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
235
+ [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
236
+ [state]="getItemProp(processedItem, 'state')"
237
+ pRipple
245
238
  >
246
- </span>
247
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
248
- {{ getItemLabel(processedItem) }}
249
- </span>
250
- <ng-template #htmlLabel>
251
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
252
- </ng-template>
253
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
239
+ <span
240
+ *ngIf="getItemProp(processedItem, 'icon')"
241
+ class="p-menuitem-icon"
242
+ [ngClass]="getItemProp(processedItem, 'icon')"
243
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
244
+ [attr.data-pc-section]="'icon'"
245
+ [attr.aria-hidden]="true"
246
+ [attr.tabindex]="-1"
247
+ >
248
+ </span>
249
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
250
+ {{ getItemLabel(processedItem) }}
251
+ </span>
252
+ <ng-template #htmlLabel>
253
+ <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
254
+ </ng-template>
255
+ <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
254
256
 
255
- <ng-container *ngIf="isItemGroup(processedItem)">
256
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
257
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
258
- </ng-container>
259
- </a>
257
+ <ng-container *ngIf="isItemGroup(processedItem)">
258
+ <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
259
+ <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
260
+ </ng-container>
261
+ </a>
262
+ </ng-container>
263
+ <ng-container *ngIf="itemTemplate">
264
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
265
+ </ng-container>
260
266
  </div>
261
267
 
262
268
  <p-contextMenuSub
263
269
  *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
264
270
  [items]="processedItem.items"
271
+ [itemTemplate]="itemTemplate"
265
272
  [menuId]="menuId"
266
273
  [visible]="isItemActive(processedItem) && isItemGroup(processedItem)"
267
274
  [activeItemPath]="activeItemPath"
@@ -273,7 +280,7 @@ class ContextMenuSub {
273
280
  </li>
274
281
  </ng-template>
275
282
  </ul>
276
- `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.Tooltip; }), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(function () { return AngleRightIcon; }), selector: "AngleRightIcon" }, { kind: "component", type: i0.forwardRef(function () { return ContextMenuSub; }), selector: "p-contextMenuSub", inputs: ["visible", "items", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])], encapsulation: i0.ViewEncapsulation.None });
283
+ `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.Tooltip; }), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(function () { return AngleRightIcon; }), selector: "AngleRightIcon" }, { kind: "component", type: i0.forwardRef(function () { return ContextMenuSub; }), selector: "p-contextMenuSub", inputs: ["visible", "items", "itemTemplate", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])], encapsulation: i0.ViewEncapsulation.None });
277
284
  }
278
285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ContextMenuSub, decorators: [{
279
286
  type: Component,
@@ -330,88 +337,94 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
330
337
  [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
331
338
  >
332
339
  <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({$event, processedItem})">
333
- <a
334
- *ngIf="!getItemProp(processedItem, 'routerLink')"
335
- [attr.href]="getItemProp(processedItem, 'url')"
336
- [attr.aria-hidden]="true"
337
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
338
- [attr.data-pc-section]="'action'"
339
- [target]="getItemProp(processedItem, 'target')"
340
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
341
- [attr.tabindex]="-1"
342
- pRipple
343
- >
344
- <span
345
- *ngIf="getItemProp(processedItem, 'icon')"
346
- class="p-menuitem-icon"
347
- [ngClass]="getItemProp(processedItem, 'icon')"
348
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
349
- [attr.data-pc-section]="'icon'"
340
+ <ng-container *ngIf="!itemTemplate">
341
+ <a
342
+ *ngIf="!getItemProp(processedItem, 'routerLink')"
343
+ [attr.href]="getItemProp(processedItem, 'url')"
350
344
  [attr.aria-hidden]="true"
345
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
346
+ [attr.data-pc-section]="'action'"
347
+ [target]="getItemProp(processedItem, 'target')"
348
+ [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
351
349
  [attr.tabindex]="-1"
350
+ pRipple
352
351
  >
353
- </span>
354
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
355
- {{ getItemLabel(processedItem) }}
356
- </span>
357
- <ng-template #htmlLabel>
358
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
359
- </ng-template>
360
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
352
+ <span
353
+ *ngIf="getItemProp(processedItem, 'icon')"
354
+ class="p-menuitem-icon"
355
+ [ngClass]="getItemProp(processedItem, 'icon')"
356
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
357
+ [attr.data-pc-section]="'icon'"
358
+ [attr.aria-hidden]="true"
359
+ [attr.tabindex]="-1"
360
+ >
361
+ </span>
362
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
363
+ {{ getItemLabel(processedItem) }}
364
+ </span>
365
+ <ng-template #htmlLabel>
366
+ <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
367
+ </ng-template>
368
+ <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
361
369
 
362
- <ng-container *ngIf="isItemGroup(processedItem)">
363
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
364
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
365
- </ng-container>
366
- </a>
367
- <a
368
- *ngIf="getItemProp(processedItem, 'routerLink')"
369
- [routerLink]="getItemProp(processedItem, 'routerLink')"
370
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
371
- [attr.tabindex]="-1"
372
- [attr.aria-hidden]="true"
373
- [attr.data-pc-section]="'action'"
374
- [queryParams]="getItemProp(processedItem, 'queryParams')"
375
- [routerLinkActive]="'p-menuitem-link-active'"
376
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
377
- [target]="getItemProp(processedItem, 'target')"
378
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
379
- [fragment]="getItemProp(processedItem, 'fragment')"
380
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
381
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
382
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
383
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
384
- [state]="getItemProp(processedItem, 'state')"
385
- pRipple
386
- >
387
- <span
388
- *ngIf="getItemProp(processedItem, 'icon')"
389
- class="p-menuitem-icon"
390
- [ngClass]="getItemProp(processedItem, 'icon')"
391
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
392
- [attr.data-pc-section]="'icon'"
393
- [attr.aria-hidden]="true"
370
+ <ng-container *ngIf="isItemGroup(processedItem)">
371
+ <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
372
+ <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
373
+ </ng-container>
374
+ </a>
375
+ <a
376
+ *ngIf="getItemProp(processedItem, 'routerLink')"
377
+ [routerLink]="getItemProp(processedItem, 'routerLink')"
378
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
394
379
  [attr.tabindex]="-1"
380
+ [attr.aria-hidden]="true"
381
+ [attr.data-pc-section]="'action'"
382
+ [queryParams]="getItemProp(processedItem, 'queryParams')"
383
+ [routerLinkActive]="'p-menuitem-link-active'"
384
+ [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
385
+ [target]="getItemProp(processedItem, 'target')"
386
+ [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
387
+ [fragment]="getItemProp(processedItem, 'fragment')"
388
+ [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
389
+ [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
390
+ [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
391
+ [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
392
+ [state]="getItemProp(processedItem, 'state')"
393
+ pRipple
395
394
  >
396
- </span>
397
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
398
- {{ getItemLabel(processedItem) }}
399
- </span>
400
- <ng-template #htmlLabel>
401
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
402
- </ng-template>
403
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
395
+ <span
396
+ *ngIf="getItemProp(processedItem, 'icon')"
397
+ class="p-menuitem-icon"
398
+ [ngClass]="getItemProp(processedItem, 'icon')"
399
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
400
+ [attr.data-pc-section]="'icon'"
401
+ [attr.aria-hidden]="true"
402
+ [attr.tabindex]="-1"
403
+ >
404
+ </span>
405
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
406
+ {{ getItemLabel(processedItem) }}
407
+ </span>
408
+ <ng-template #htmlLabel>
409
+ <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
410
+ </ng-template>
411
+ <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
404
412
 
405
- <ng-container *ngIf="isItemGroup(processedItem)">
406
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
407
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
408
- </ng-container>
409
- </a>
413
+ <ng-container *ngIf="isItemGroup(processedItem)">
414
+ <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
415
+ <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
416
+ </ng-container>
417
+ </a>
418
+ </ng-container>
419
+ <ng-container *ngIf="itemTemplate">
420
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
421
+ </ng-container>
410
422
  </div>
411
423
 
412
424
  <p-contextMenuSub
413
425
  *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
414
426
  [items]="processedItem.items"
427
+ [itemTemplate]="itemTemplate"
415
428
  [menuId]="menuId"
416
429
  [visible]="isItemActive(processedItem) && isItemGroup(processedItem)"
417
430
  [activeItemPath]="activeItemPath"
@@ -440,6 +453,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
440
453
  type: Input
441
454
  }], items: [{
442
455
  type: Input
456
+ }], itemTemplate: [{
457
+ type: Input
443
458
  }], root: [{
444
459
  type: Input
445
460
  }], autoZIndex: [{
@@ -568,6 +583,7 @@ class ContextMenu {
568
583
  rootmenu;
569
584
  containerViewChild;
570
585
  submenuIconTemplate;
586
+ itemTemplate;
571
587
  container;
572
588
  outsideClickListener;
573
589
  resizeListener;
@@ -668,6 +684,12 @@ class ContextMenu {
668
684
  case 'submenuicon':
669
685
  this.submenuIconTemplate = item.template;
670
686
  break;
687
+ case 'item':
688
+ this.itemTemplate = item.template;
689
+ break;
690
+ default:
691
+ this.itemTemplate = item.template;
692
+ break;
671
693
  }
672
694
  });
673
695
  }
@@ -1097,9 +1119,18 @@ class ContextMenu {
1097
1119
  this.triggerEventListener = null;
1098
1120
  }
1099
1121
  }
1122
+ removeAppendedElements() {
1123
+ if (this.appendTo) {
1124
+ if (this.appendTo === 'body')
1125
+ this.renderer.removeChild(this.document.body, this.containerViewChild.nativeElement);
1126
+ else
1127
+ DomHandler.removeChild(this.containerViewChild.nativeElement, this.appendTo);
1128
+ }
1129
+ }
1100
1130
  ngOnDestroy() {
1101
1131
  this.unbindGlobalListeners();
1102
1132
  this.unbindTriggerEventListener();
1133
+ this.removeAppendedElements();
1103
1134
  }
1104
1135
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ContextMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
1105
1136
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: ContextMenu, selector: "p-contextMenu", inputs: { model: "model", triggerEvent: "triggerEvent", target: "target", global: "global", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
@@ -1120,6 +1151,7 @@ class ContextMenu {
1120
1151
  #rootmenu
1121
1152
  [root]="true"
1122
1153
  [items]="processedItems"
1154
+ [itemTemplate]="itemTemplate"
1123
1155
  [menuId]="id"
1124
1156
  [tabindex]="!disabled ? tabindex : -1"
1125
1157
  [ariaLabel]="ariaLabel"
@@ -1136,7 +1168,7 @@ class ContextMenu {
1136
1168
  (itemMouseEnter)="onItemMouseEnter($event)"
1137
1169
  ></p-contextMenuSub>
1138
1170
  </div>
1139
- `, isInline: true, styles: ["@layer primeng{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["visible", "items", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1171
+ `, isInline: true, styles: ["@layer primeng{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["visible", "items", "itemTemplate", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1140
1172
  }
1141
1173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ContextMenu, decorators: [{
1142
1174
  type: Component,
@@ -1158,6 +1190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
1158
1190
  #rootmenu
1159
1191
  [root]="true"
1160
1192
  [items]="processedItems"
1193
+ [itemTemplate]="itemTemplate"
1161
1194
  [menuId]="id"
1162
1195
  [tabindex]="!disabled ? tabindex : -1"
1163
1196
  [ariaLabel]="ariaLabel"