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
@@ -1,18 +1,19 @@
1
- import * as i0 from '@angular/core';
2
- import { PLATFORM_ID, Pipe, Inject, EventEmitter, forwardRef, Component, ViewEncapsulation, Input, Output, computed, signal, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';
3
1
  import { trigger, transition, style, animate } from '@angular/animations';
4
2
  import * as i2 from '@angular/common';
5
3
  import { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';
6
- import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
7
- import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
4
+ import * as i0 from '@angular/core';
5
+ import { PLATFORM_ID, Pipe, Inject, EventEmitter, forwardRef, Component, ViewEncapsulation, Input, Output, computed, signal, ChangeDetectionStrategy, ViewChild, ContentChildren, NgModule } from '@angular/core';
8
6
  import * as i3 from '@angular/router';
9
7
  import { RouterModule } from '@angular/router';
8
+ import * as i5 from 'primeng/api';
9
+ import { PrimeTemplate } from 'primeng/api';
10
+ import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
10
11
  import * as i4 from 'primeng/ripple';
11
12
  import { RippleModule } from 'primeng/ripple';
12
13
  import * as i6 from 'primeng/tooltip';
13
14
  import { TooltipModule } from 'primeng/tooltip';
15
+ import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
14
16
  import * as i1 from '@angular/platform-browser';
15
- import * as i5 from 'primeng/api';
16
17
 
17
18
  class SafeHtmlPipe {
18
19
  platformId;
@@ -41,6 +42,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
41
42
  }] }, { type: i1.DomSanitizer }]; } });
42
43
  class MenuItemContent {
43
44
  item;
45
+ itemTemplate;
44
46
  id;
45
47
  onMenuItemClick = new EventEmitter();
46
48
  menu;
@@ -51,49 +53,53 @@ class MenuItemContent {
51
53
  this.onMenuItemClick.emit({ originalEvent: event, item: { ...item, id: this.id } });
52
54
  }
53
55
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: MenuItemContent, deps: [{ token: forwardRef(() => Menu) }], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"], id: "id" }, outputs: { onMenuItemClick: "onMenuItemClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
55
- <div [attr.data-pc-section]="'content'" class="p-menuitem-content">
56
- <a
57
- *ngIf="!item?.routerLink"
58
- [attr.title]="item.title"
59
- [attr.href]="item.url || null"
60
- [attr.data-automationid]="item.automationId"
61
- [attr.tabindex]="-1"
62
- [attr.data-pc-section]="'action'"
63
- [attr.aria-hidden]="true"
64
- class="p-menuitem-link"
65
- [target]="item.target"
66
- [ngClass]="{ 'p-disabled': item.disabled }"
67
- (click)="onItemClick($event, item)"
68
- pRipple
69
- >
70
- <ng-container *ngTemplateOutlet="itemContent"></ng-container>
71
- </a>
72
- <a
73
- *ngIf="item?.routerLink"
74
- [routerLink]="item.routerLink"
75
- [attr.data-automationid]="item.automationId"
76
- [attr.tabindex]="-1"
77
- [attr.data-pc-section]="'action'"
78
- [attr.aria-hidden]="true"
79
- [attr.title]="item.title"
80
- [queryParams]="item.queryParams"
81
- routerLinkActive="p-menuitem-link-active"
82
- [routerLinkActiveOptions]="item.routerLinkActiveOptions || { exact: false }"
83
- class="p-menuitem-link"
84
- [target]="item.target"
85
- [ngClass]="{ 'p-disabled': item.disabled }"
86
- (click)="onItemClick($event, item)"
87
- [fragment]="item.fragment"
88
- [queryParamsHandling]="item.queryParamsHandling"
89
- [preserveFragment]="item.preserveFragment"
90
- [skipLocationChange]="item.skipLocationChange"
91
- [replaceUrl]="item.replaceUrl"
92
- [state]="item.state"
93
- pRipple
94
- >
95
- <ng-container *ngTemplateOutlet="itemContent"></ng-container>
96
- </a>
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"], itemTemplate: "itemTemplate", id: "id" }, outputs: { onMenuItemClick: "onMenuItemClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
57
+ <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, item)">
58
+ <ng-container *ngIf="!itemTemplate">
59
+ <a
60
+ *ngIf="!item?.routerLink"
61
+ [attr.title]="item.title"
62
+ [attr.href]="item.url || null"
63
+ [attr.data-automationid]="item.automationId"
64
+ [attr.tabindex]="-1"
65
+ [attr.data-pc-section]="'action'"
66
+ [attr.aria-hidden]="true"
67
+ class="p-menuitem-link"
68
+ [target]="item.target"
69
+ [ngClass]="{ 'p-disabled': item.disabled }"
70
+ pRipple
71
+ >
72
+ <ng-container *ngTemplateOutlet="itemContent; context: { $implicit: item }"></ng-container>
73
+ </a>
74
+ <a
75
+ *ngIf="item?.routerLink"
76
+ [routerLink]="item.routerLink"
77
+ [attr.data-automationid]="item.automationId"
78
+ [attr.tabindex]="-1"
79
+ [attr.data-pc-section]="'action'"
80
+ [attr.aria-hidden]="true"
81
+ [attr.title]="item.title"
82
+ [queryParams]="item.queryParams"
83
+ routerLinkActive="p-menuitem-link-active"
84
+ [routerLinkActiveOptions]="item.routerLinkActiveOptions || { exact: false }"
85
+ class="p-menuitem-link"
86
+ [target]="item.target"
87
+ [ngClass]="{ 'p-disabled': item.disabled }"
88
+ [fragment]="item.fragment"
89
+ [queryParamsHandling]="item.queryParamsHandling"
90
+ [preserveFragment]="item.preserveFragment"
91
+ [skipLocationChange]="item.skipLocationChange"
92
+ [replaceUrl]="item.replaceUrl"
93
+ [state]="item.state"
94
+ pRipple
95
+ >
96
+ <ng-container *ngTemplateOutlet="itemContent; context: { $implicit: item }"></ng-container>
97
+ </a>
98
+ </ng-container>
99
+
100
+ <ng-container *ngIf="itemTemplate">
101
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: item }"></ng-template>
102
+ </ng-container>
97
103
 
98
104
  <ng-template #itemContent>
99
105
  <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon" [class]="item.iconClass" [ngStyle]="item.iconStyle"></span>
@@ -109,48 +115,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
109
115
  args: [{
110
116
  selector: '[pMenuItemContent]',
111
117
  template: `
112
- <div [attr.data-pc-section]="'content'" class="p-menuitem-content">
113
- <a
114
- *ngIf="!item?.routerLink"
115
- [attr.title]="item.title"
116
- [attr.href]="item.url || null"
117
- [attr.data-automationid]="item.automationId"
118
- [attr.tabindex]="-1"
119
- [attr.data-pc-section]="'action'"
120
- [attr.aria-hidden]="true"
121
- class="p-menuitem-link"
122
- [target]="item.target"
123
- [ngClass]="{ 'p-disabled': item.disabled }"
124
- (click)="onItemClick($event, item)"
125
- pRipple
126
- >
127
- <ng-container *ngTemplateOutlet="itemContent"></ng-container>
128
- </a>
129
- <a
130
- *ngIf="item?.routerLink"
131
- [routerLink]="item.routerLink"
132
- [attr.data-automationid]="item.automationId"
133
- [attr.tabindex]="-1"
134
- [attr.data-pc-section]="'action'"
135
- [attr.aria-hidden]="true"
136
- [attr.title]="item.title"
137
- [queryParams]="item.queryParams"
138
- routerLinkActive="p-menuitem-link-active"
139
- [routerLinkActiveOptions]="item.routerLinkActiveOptions || { exact: false }"
140
- class="p-menuitem-link"
141
- [target]="item.target"
142
- [ngClass]="{ 'p-disabled': item.disabled }"
143
- (click)="onItemClick($event, item)"
144
- [fragment]="item.fragment"
145
- [queryParamsHandling]="item.queryParamsHandling"
146
- [preserveFragment]="item.preserveFragment"
147
- [skipLocationChange]="item.skipLocationChange"
148
- [replaceUrl]="item.replaceUrl"
149
- [state]="item.state"
150
- pRipple
151
- >
152
- <ng-container *ngTemplateOutlet="itemContent"></ng-container>
153
- </a>
118
+ <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, item)">
119
+ <ng-container *ngIf="!itemTemplate">
120
+ <a
121
+ *ngIf="!item?.routerLink"
122
+ [attr.title]="item.title"
123
+ [attr.href]="item.url || null"
124
+ [attr.data-automationid]="item.automationId"
125
+ [attr.tabindex]="-1"
126
+ [attr.data-pc-section]="'action'"
127
+ [attr.aria-hidden]="true"
128
+ class="p-menuitem-link"
129
+ [target]="item.target"
130
+ [ngClass]="{ 'p-disabled': item.disabled }"
131
+ pRipple
132
+ >
133
+ <ng-container *ngTemplateOutlet="itemContent; context: { $implicit: item }"></ng-container>
134
+ </a>
135
+ <a
136
+ *ngIf="item?.routerLink"
137
+ [routerLink]="item.routerLink"
138
+ [attr.data-automationid]="item.automationId"
139
+ [attr.tabindex]="-1"
140
+ [attr.data-pc-section]="'action'"
141
+ [attr.aria-hidden]="true"
142
+ [attr.title]="item.title"
143
+ [queryParams]="item.queryParams"
144
+ routerLinkActive="p-menuitem-link-active"
145
+ [routerLinkActiveOptions]="item.routerLinkActiveOptions || { exact: false }"
146
+ class="p-menuitem-link"
147
+ [target]="item.target"
148
+ [ngClass]="{ 'p-disabled': item.disabled }"
149
+ [fragment]="item.fragment"
150
+ [queryParamsHandling]="item.queryParamsHandling"
151
+ [preserveFragment]="item.preserveFragment"
152
+ [skipLocationChange]="item.skipLocationChange"
153
+ [replaceUrl]="item.replaceUrl"
154
+ [state]="item.state"
155
+ pRipple
156
+ >
157
+ <ng-container *ngTemplateOutlet="itemContent; context: { $implicit: item }"></ng-container>
158
+ </a>
159
+ </ng-container>
160
+
161
+ <ng-container *ngIf="itemTemplate">
162
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: item }"></ng-template>
163
+ </ng-container>
154
164
 
155
165
  <ng-template #itemContent>
156
166
  <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon" [class]="item.iconClass" [ngStyle]="item.iconStyle"></span>
@@ -171,9 +181,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
171
181
  }] }]; }, propDecorators: { item: [{
172
182
  type: Input,
173
183
  args: ['pMenuItemContent']
184
+ }], itemTemplate: [{
185
+ type: Input
174
186
  }], id: [{
175
- type: Input,
176
- args: ['id']
187
+ type: Input
177
188
  }], onMenuItemClick: [{
178
189
  type: Output
179
190
  }] } });
@@ -278,6 +289,10 @@ class Menu {
278
289
  onFocus = new EventEmitter();
279
290
  listViewChild;
280
291
  containerViewChild;
292
+ templates;
293
+ startTemplate;
294
+ endTemplate;
295
+ itemTemplate;
281
296
  container;
282
297
  scrollHandler;
283
298
  documentClickListener;
@@ -333,6 +348,24 @@ class Menu {
333
348
  this.bindDocumentClickListener();
334
349
  }
335
350
  }
351
+ ngAfterContentInit() {
352
+ this.templates?.forEach((item) => {
353
+ switch (item.getType()) {
354
+ case 'start':
355
+ this.startTemplate = item.template;
356
+ break;
357
+ case 'end':
358
+ this.endTemplate = item.template;
359
+ break;
360
+ case 'itemTemplate':
361
+ this.itemTemplate = item.template;
362
+ break;
363
+ default:
364
+ this.itemTemplate = item.template;
365
+ break;
366
+ }
367
+ });
368
+ }
336
369
  onOverlayAnimationStart(event) {
337
370
  switch (event.toState) {
338
371
  case 'visible':
@@ -644,7 +677,7 @@ class Menu {
644
677
  return item.visible === false;
645
678
  }
646
679
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Menu, 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 });
647
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", id: "id", tabindex: "tabindex" }, outputs: { onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "listViewChild", first: true, predicate: ["list"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
680
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", id: "id", tabindex: "tabindex" }, outputs: { onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewChild", first: true, predicate: ["list"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
648
681
  <div
649
682
  #container
650
683
  [ngClass]="{ 'p-menu p-component': true, 'p-menu-overlay': popup }"
@@ -659,6 +692,9 @@ class Menu {
659
692
  [attr.data-pc-name]="'menu'"
660
693
  [attr.id]="id"
661
694
  >
695
+ <div *ngIf="startTemplate" class="p-menu-start" [attr.data-pc-section]="'start'">
696
+ <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
697
+ </div>
662
698
  <ul
663
699
  #list
664
700
  class="p-menu-list p-reset"
@@ -694,6 +730,7 @@ class Menu {
694
730
  class="p-menuitem"
695
731
  *ngIf="!item.separator"
696
732
  [pMenuItemContent]="item"
733
+ [itemTemplate]="itemTemplate"
697
734
  [ngClass]="{ 'p-hidden': item.visible === false || submenu.visible === false, 'p-focus': focusedOptionId() && menuitemId(item, id, i, j) === focusedOptionId(), 'p-disabled': disabled(item.disabled) }"
698
735
  [ngStyle]="item.style"
699
736
  [class]="item.styleClass"
@@ -716,6 +753,7 @@ class Menu {
716
753
  class="p-menuitem"
717
754
  *ngIf="!item.separator"
718
755
  [pMenuItemContent]="item"
756
+ [itemTemplate]="itemTemplate"
719
757
  [ngClass]="{ 'p-hidden': item.visible === false, 'p-focus': focusedOptionId() && menuitemId(item, id, i, j) === focusedOptionId(), 'p-disabled': disabled(item.disabled) }"
720
758
  [ngStyle]="item.style"
721
759
  [class]="item.styleClass"
@@ -732,8 +770,11 @@ class Menu {
732
770
  ></li>
733
771
  </ng-template>
734
772
  </ul>
773
+ <div *ngIf="endTemplate" class="p-menu-end" [attr.data-pc-section]="'end'">
774
+ <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
775
+ </div>
735
776
  </div>
736
- `, isInline: true, styles: ["@layer primeng{.p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-submenu-header{align-items:center}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.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: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent", "id"], outputs: ["onMenuItemClick"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
777
+ `, isInline: true, styles: ["@layer primeng{.p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-submenu-header{align-items:center}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.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: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent", "itemTemplate", "id"], outputs: ["onMenuItemClick"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
737
778
  }
738
779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Menu, decorators: [{
739
780
  type: Component,
@@ -752,6 +793,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
752
793
  [attr.data-pc-name]="'menu'"
753
794
  [attr.id]="id"
754
795
  >
796
+ <div *ngIf="startTemplate" class="p-menu-start" [attr.data-pc-section]="'start'">
797
+ <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
798
+ </div>
755
799
  <ul
756
800
  #list
757
801
  class="p-menu-list p-reset"
@@ -787,6 +831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
787
831
  class="p-menuitem"
788
832
  *ngIf="!item.separator"
789
833
  [pMenuItemContent]="item"
834
+ [itemTemplate]="itemTemplate"
790
835
  [ngClass]="{ 'p-hidden': item.visible === false || submenu.visible === false, 'p-focus': focusedOptionId() && menuitemId(item, id, i, j) === focusedOptionId(), 'p-disabled': disabled(item.disabled) }"
791
836
  [ngStyle]="item.style"
792
837
  [class]="item.styleClass"
@@ -809,6 +854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
809
854
  class="p-menuitem"
810
855
  *ngIf="!item.separator"
811
856
  [pMenuItemContent]="item"
857
+ [itemTemplate]="itemTemplate"
812
858
  [ngClass]="{ 'p-hidden': item.visible === false, 'p-focus': focusedOptionId() && menuitemId(item, id, i, j) === focusedOptionId(), 'p-disabled': disabled(item.disabled) }"
813
859
  [ngStyle]="item.style"
814
860
  [class]="item.styleClass"
@@ -825,6 +871,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
825
871
  ></li>
826
872
  </ng-template>
827
873
  </ul>
874
+ <div *ngIf="endTemplate" class="p-menu-end" [attr.data-pc-section]="'end'">
875
+ <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
876
+ </div>
828
877
  </div>
829
878
  `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
830
879
  class: 'p-element'
@@ -875,6 +924,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
875
924
  }], containerViewChild: [{
876
925
  type: ViewChild,
877
926
  args: ['container']
927
+ }], templates: [{
928
+ type: ContentChildren,
929
+ args: [PrimeTemplate]
878
930
  }] } });
879
931
  class MenuModule {
880
932
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });