primeng 17.14.1 → 17.16.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 (266) hide show
  1. package/api/megamenuitem.d.ts +4 -0
  2. package/api/primengconfig.d.ts +1 -1
  3. package/api/treenode.d.ts +4 -0
  4. package/autocomplete/autocomplete.d.ts +17 -2
  5. package/badge/badge.d.ts +2 -2
  6. package/breadcrumb/breadcrumb.interface.d.ts +11 -0
  7. package/calendar/calendar.d.ts +13 -2
  8. package/card/card.d.ts +5 -2
  9. package/cascadeselect/cascadeselect.d.ts +19 -1
  10. package/cascadeselect/cascadeselect.interface.d.ts +4 -0
  11. package/checkbox/checkbox.d.ts +11 -4
  12. package/chips/chips.d.ts +9 -2
  13. package/dom/domhandler.d.ts +2 -2
  14. package/dropdown/dropdown.d.ts +31 -3
  15. package/dropdown/dropdown.interface.d.ts +1 -1
  16. package/esm2022/api/filterservice.mjs +6 -1
  17. package/esm2022/api/megamenuitem.mjs +1 -1
  18. package/esm2022/api/primengconfig.mjs +3 -3
  19. package/esm2022/api/treenode.mjs +1 -1
  20. package/esm2022/autocomplete/autocomplete.mjs +34 -12
  21. package/esm2022/badge/badge.mjs +3 -3
  22. package/esm2022/breadcrumb/breadcrumb.interface.mjs +1 -1
  23. package/esm2022/breadcrumb/breadcrumb.mjs +1 -1
  24. package/esm2022/calendar/calendar.mjs +65 -9
  25. package/esm2022/card/card.mjs +11 -5
  26. package/esm2022/cascadeselect/cascadeselect.interface.mjs +1 -1
  27. package/esm2022/cascadeselect/cascadeselect.mjs +61 -12
  28. package/esm2022/checkbox/checkbox.mjs +44 -13
  29. package/esm2022/chips/chips.mjs +20 -10
  30. package/esm2022/colorpicker/colorpicker.mjs +2 -1
  31. package/esm2022/confirmpopup/confirmpopup.mjs +2 -2
  32. package/esm2022/dialog/dialog.mjs +2 -2
  33. package/esm2022/divider/divider.mjs +2 -2
  34. package/esm2022/dom/domhandler.mjs +5 -3
  35. package/esm2022/dropdown/dropdown.interface.mjs +1 -1
  36. package/esm2022/dropdown/dropdown.mjs +106 -26
  37. package/esm2022/dynamicdialog/dynamicdialog.mjs +3 -3
  38. package/esm2022/editor/editor.mjs +2 -4
  39. package/esm2022/fileupload/fileupload.mjs +128 -110
  40. package/esm2022/icons/blank/blank.mjs +25 -0
  41. package/esm2022/icons/blank/primeng-icons-blank.mjs +5 -0
  42. package/esm2022/icons/blank/public_api.mjs +2 -0
  43. package/esm2022/inputmask/inputmask.mjs +31 -13
  44. package/esm2022/inputnumber/inputnumber.mjs +13 -4
  45. package/esm2022/inputotp/inputotp.mjs +3 -3
  46. package/esm2022/inputtext/inputtext.mjs +22 -7
  47. package/esm2022/inputtextarea/inputtextarea.mjs +17 -6
  48. package/esm2022/keyfilter/keyfilter.mjs +14 -13
  49. package/esm2022/megamenu/megamenu.interface.mjs +1 -1
  50. package/esm2022/megamenu/megamenu.mjs +2 -2
  51. package/esm2022/menu/menu.mjs +18 -5
  52. package/esm2022/menubar/menubar.interface.mjs +1 -1
  53. package/esm2022/menubar/menubar.mjs +3 -6
  54. package/esm2022/multiselect/multiselect.interface.mjs +1 -1
  55. package/esm2022/multiselect/multiselect.mjs +155 -44
  56. package/esm2022/organizationchart/organizationchart.mjs +43 -27
  57. package/esm2022/overlaypanel/overlaypanel.mjs +2 -2
  58. package/esm2022/paginator/paginator.mjs +3 -3
  59. package/esm2022/panelmenu/panelmenu.interface.mjs +1 -1
  60. package/esm2022/panelmenu/panelmenu.mjs +51 -41
  61. package/esm2022/password/password.mjs +22 -5
  62. package/esm2022/radiobutton/radiobutton.mjs +32 -10
  63. package/esm2022/scroller/scroller.mjs +4 -4
  64. package/esm2022/speeddial/speeddial.mjs +6 -8
  65. package/esm2022/splitbutton/splitbutton.mjs +13 -13
  66. package/esm2022/stepper/stepper.mjs +1 -9
  67. package/esm2022/table/columnfilter.interface.mjs +1 -1
  68. package/esm2022/table/table.mjs +59 -18
  69. package/esm2022/tieredmenu/tieredmenu.mjs +19 -12
  70. package/esm2022/timeline/timeline.mjs +2 -2
  71. package/esm2022/tree/tree.mjs +157 -115
  72. package/esm2022/treeselect/treeselect.mjs +16 -8
  73. package/esm2022/treetable/treetable.mjs +8 -6
  74. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +20 -10
  75. package/fesm2022/primeng-api.mjs +7 -2
  76. package/fesm2022/primeng-api.mjs.map +1 -1
  77. package/fesm2022/primeng-autocomplete.mjs +33 -11
  78. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  79. package/fesm2022/primeng-badge.mjs +2 -2
  80. package/fesm2022/primeng-badge.mjs.map +1 -1
  81. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  82. package/fesm2022/primeng-calendar.mjs +64 -8
  83. package/fesm2022/primeng-calendar.mjs.map +1 -1
  84. package/fesm2022/primeng-card.mjs +10 -4
  85. package/fesm2022/primeng-card.mjs.map +1 -1
  86. package/fesm2022/primeng-cascadeselect.mjs +60 -11
  87. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  88. package/fesm2022/primeng-checkbox.mjs +43 -12
  89. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  90. package/fesm2022/primeng-chips.mjs +19 -9
  91. package/fesm2022/primeng-chips.mjs.map +1 -1
  92. package/fesm2022/primeng-colorpicker.mjs +1 -0
  93. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  94. package/fesm2022/primeng-confirmpopup.mjs +1 -1
  95. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  96. package/fesm2022/primeng-dialog.mjs +1 -1
  97. package/fesm2022/primeng-dialog.mjs.map +1 -1
  98. package/fesm2022/primeng-divider.mjs +2 -2
  99. package/fesm2022/primeng-divider.mjs.map +1 -1
  100. package/fesm2022/primeng-dom.mjs +4 -2
  101. package/fesm2022/primeng-dom.mjs.map +1 -1
  102. package/fesm2022/primeng-dropdown.mjs +105 -25
  103. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  104. package/fesm2022/primeng-dynamicdialog.mjs +2 -2
  105. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  106. package/fesm2022/primeng-editor.mjs +1 -3
  107. package/fesm2022/primeng-editor.mjs.map +1 -1
  108. package/fesm2022/primeng-fileupload.mjs +127 -109
  109. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  110. package/fesm2022/primeng-icons-blank.mjs +32 -0
  111. package/fesm2022/primeng-icons-blank.mjs.map +1 -0
  112. package/fesm2022/primeng-inputmask.mjs +30 -12
  113. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  114. package/fesm2022/primeng-inputnumber.mjs +12 -3
  115. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  116. package/fesm2022/primeng-inputotp.mjs +2 -2
  117. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  118. package/fesm2022/primeng-inputtext.mjs +21 -6
  119. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  120. package/fesm2022/primeng-inputtextarea.mjs +16 -5
  121. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  122. package/fesm2022/primeng-keyfilter.mjs +13 -12
  123. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  124. package/fesm2022/primeng-megamenu.mjs +1 -1
  125. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  126. package/fesm2022/primeng-menu.mjs +17 -4
  127. package/fesm2022/primeng-menu.mjs.map +1 -1
  128. package/fesm2022/primeng-menubar.mjs +2 -5
  129. package/fesm2022/primeng-menubar.mjs.map +1 -1
  130. package/fesm2022/primeng-multiselect.mjs +154 -43
  131. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  132. package/fesm2022/primeng-organizationchart.mjs +42 -26
  133. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  134. package/fesm2022/primeng-overlaypanel.mjs +1 -1
  135. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  136. package/fesm2022/primeng-paginator.mjs +2 -2
  137. package/fesm2022/primeng-paginator.mjs.map +1 -1
  138. package/fesm2022/primeng-panelmenu.mjs +50 -40
  139. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  140. package/fesm2022/primeng-password.mjs +21 -4
  141. package/fesm2022/primeng-password.mjs.map +1 -1
  142. package/fesm2022/primeng-radiobutton.mjs +31 -9
  143. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  144. package/fesm2022/primeng-scroller.mjs +3 -3
  145. package/fesm2022/primeng-scroller.mjs.map +1 -1
  146. package/fesm2022/primeng-speeddial.mjs +5 -7
  147. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  148. package/fesm2022/primeng-splitbutton.mjs +12 -12
  149. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  150. package/fesm2022/primeng-stepper.mjs +0 -8
  151. package/fesm2022/primeng-stepper.mjs.map +1 -1
  152. package/fesm2022/primeng-table.mjs +58 -17
  153. package/fesm2022/primeng-table.mjs.map +1 -1
  154. package/fesm2022/primeng-tieredmenu.mjs +18 -11
  155. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  156. package/fesm2022/primeng-timeline.mjs +2 -2
  157. package/fesm2022/primeng-timeline.mjs.map +1 -1
  158. package/fesm2022/primeng-tree.mjs +156 -114
  159. package/fesm2022/primeng-tree.mjs.map +1 -1
  160. package/fesm2022/primeng-treeselect.mjs +15 -7
  161. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  162. package/fesm2022/primeng-treetable.mjs +7 -5
  163. package/fesm2022/primeng-treetable.mjs.map +1 -1
  164. package/fesm2022/primeng-tristatecheckbox.mjs +19 -9
  165. package/fesm2022/primeng-tristatecheckbox.mjs.map +1 -1
  166. package/fileupload/fileupload.d.ts +11 -10
  167. package/icons/blank/blank.d.ts +6 -0
  168. package/icons/blank/index.d.ts +5 -0
  169. package/icons/blank/public_api.d.ts +1 -0
  170. package/inputmask/inputmask.d.ts +13 -3
  171. package/inputnumber/inputnumber.d.ts +6 -1
  172. package/inputotp/inputotp.d.ts +1 -1
  173. package/inputtext/inputtext.d.ts +14 -3
  174. package/inputtextarea/inputtextarea.d.ts +10 -3
  175. package/keyfilter/keyfilter.d.ts +1 -1
  176. package/megamenu/megamenu.interface.d.ts +12 -0
  177. package/menu/menu.d.ts +1 -0
  178. package/menubar/menubar.interface.d.ts +17 -0
  179. package/multiselect/multiselect.d.ts +30 -3
  180. package/multiselect/multiselect.interface.d.ts +28 -0
  181. package/organizationchart/organizationchart.d.ts +10 -2
  182. package/package.json +198 -192
  183. package/paginator/paginator.d.ts +4 -4
  184. package/panelmenu/panelmenu.d.ts +1 -0
  185. package/panelmenu/panelmenu.interface.d.ts +12 -0
  186. package/password/password.d.ts +12 -2
  187. package/radiobutton/radiobutton.d.ts +9 -2
  188. package/resources/components/divider/divider.css +1 -1
  189. package/resources/components/speeddial/speeddial.css +8 -0
  190. package/resources/components/timeline/timeline.css +2 -0
  191. package/resources/themes/arya-blue/theme.css +117 -1
  192. package/resources/themes/arya-green/theme.css +117 -1
  193. package/resources/themes/arya-orange/theme.css +117 -1
  194. package/resources/themes/arya-purple/theme.css +117 -1
  195. package/resources/themes/aura-dark-amber/theme.css +118 -2
  196. package/resources/themes/aura-dark-blue/theme.css +118 -2
  197. package/resources/themes/aura-dark-cyan/theme.css +118 -2
  198. package/resources/themes/aura-dark-green/theme.css +118 -2
  199. package/resources/themes/aura-dark-indigo/theme.css +118 -2
  200. package/resources/themes/aura-dark-lime/theme.css +118 -2
  201. package/resources/themes/aura-dark-noir/theme.css +118 -2
  202. package/resources/themes/aura-dark-pink/theme.css +118 -2
  203. package/resources/themes/aura-dark-purple/theme.css +118 -2
  204. package/resources/themes/aura-dark-teal/theme.css +118 -2
  205. package/resources/themes/aura-light-amber/theme.css +118 -2
  206. package/resources/themes/aura-light-blue/theme.css +118 -2
  207. package/resources/themes/aura-light-cyan/theme.css +118 -2
  208. package/resources/themes/aura-light-green/theme.css +118 -2
  209. package/resources/themes/aura-light-indigo/theme.css +118 -2
  210. package/resources/themes/aura-light-lime/theme.css +118 -2
  211. package/resources/themes/aura-light-noir/theme.css +118 -2
  212. package/resources/themes/aura-light-pink/theme.css +118 -2
  213. package/resources/themes/aura-light-purple/theme.css +118 -2
  214. package/resources/themes/aura-light-teal/theme.css +118 -2
  215. package/resources/themes/bootstrap4-dark-blue/theme.css +117 -1
  216. package/resources/themes/bootstrap4-dark-purple/theme.css +117 -1
  217. package/resources/themes/bootstrap4-light-blue/theme.css +117 -1
  218. package/resources/themes/bootstrap4-light-purple/theme.css +117 -1
  219. package/resources/themes/fluent-light/theme.css +117 -1
  220. package/resources/themes/lara-dark-blue/theme.css +117 -1
  221. package/resources/themes/lara-dark-indigo/theme.css +117 -1
  222. package/resources/themes/lara-dark-purple/theme.css +117 -1
  223. package/resources/themes/lara-dark-teal/theme.css +117 -1
  224. package/resources/themes/lara-light-blue/theme.css +117 -1
  225. package/resources/themes/lara-light-indigo/theme.css +117 -1
  226. package/resources/themes/lara-light-purple/theme.css +117 -1
  227. package/resources/themes/lara-light-teal/theme.css +117 -1
  228. package/resources/themes/luna-amber/theme.css +117 -1
  229. package/resources/themes/luna-blue/theme.css +117 -1
  230. package/resources/themes/luna-green/theme.css +117 -1
  231. package/resources/themes/luna-pink/theme.css +117 -1
  232. package/resources/themes/md-dark-deeppurple/theme.css +131 -4
  233. package/resources/themes/md-dark-indigo/theme.css +131 -4
  234. package/resources/themes/md-light-deeppurple/theme.css +131 -4
  235. package/resources/themes/md-light-indigo/theme.css +131 -4
  236. package/resources/themes/mdc-dark-deeppurple/theme.css +131 -4
  237. package/resources/themes/mdc-dark-indigo/theme.css +131 -4
  238. package/resources/themes/mdc-light-deeppurple/theme.css +131 -4
  239. package/resources/themes/mdc-light-indigo/theme.css +131 -4
  240. package/resources/themes/mira/theme.css +117 -1
  241. package/resources/themes/nano/theme.css +117 -1
  242. package/resources/themes/nova/theme.css +117 -1
  243. package/resources/themes/nova-accent/theme.css +117 -1
  244. package/resources/themes/nova-alt/theme.css +117 -1
  245. package/resources/themes/rhea/theme.css +117 -1
  246. package/resources/themes/saga-blue/theme.css +117 -1
  247. package/resources/themes/saga-green/theme.css +117 -1
  248. package/resources/themes/saga-orange/theme.css +117 -1
  249. package/resources/themes/saga-purple/theme.css +117 -1
  250. package/resources/themes/soho-dark/theme.css +117 -1
  251. package/resources/themes/soho-light/theme.css +117 -1
  252. package/resources/themes/tailwind-light/theme.css +117 -1
  253. package/resources/themes/vela-blue/theme.css +117 -1
  254. package/resources/themes/vela-green/theme.css +117 -1
  255. package/resources/themes/vela-orange/theme.css +117 -1
  256. package/resources/themes/vela-purple/theme.css +117 -1
  257. package/resources/themes/viva-dark/theme.css +117 -1
  258. package/resources/themes/viva-light/theme.css +117 -1
  259. package/stepper/stepper.d.ts +0 -8
  260. package/table/columnfilter.interface.d.ts +213 -1
  261. package/table/table.d.ts +9 -5
  262. package/tieredmenu/tieredmenu.d.ts +4 -3
  263. package/tree/tree.d.ts +9 -2
  264. package/treeselect/treeselect.d.ts +9 -3
  265. package/treetable/treetable.d.ts +2 -1
  266. package/tristatecheckbox/tristatecheckbox.d.ts +9 -3
@@ -1,7 +1,7 @@
1
1
  import * as i4 from '@angular/common';
2
2
  import { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';
3
3
  import * as i2 from '@angular/common/http';
4
- import { HttpEventType, HttpClientModule } from '@angular/common/http';
4
+ import { HttpEventType } from '@angular/common/http';
5
5
  import * as i0 from '@angular/core';
6
6
  import { EventEmitter, PLATFORM_ID, booleanAttribute, numberAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
7
7
  import * as i3 from 'primeng/api';
@@ -294,11 +294,13 @@ class FileUpload {
294
294
  dragHighlight;
295
295
  msgs;
296
296
  fileTemplate;
297
+ headerTemplate;
297
298
  contentTemplate;
298
299
  toolbarTemplate;
299
300
  chooseIconTemplate;
300
301
  uploadIconTemplate;
301
302
  cancelIconTemplate;
303
+ emptyTemplate;
302
304
  uploadedFileCount = 0;
303
305
  focus;
304
306
  uploading;
@@ -319,6 +321,9 @@ class FileUpload {
319
321
  ngAfterContentInit() {
320
322
  this.templates?.forEach((item) => {
321
323
  switch (item.getType()) {
324
+ case 'header':
325
+ this.headerTemplate = item.template;
326
+ break;
322
327
  case 'file':
323
328
  this.fileTemplate = item.template;
324
329
  break;
@@ -337,6 +342,9 @@ class FileUpload {
337
342
  case 'cancelicon':
338
343
  this.cancelIconTemplate = item.template;
339
344
  break;
345
+ case 'empty':
346
+ this.emptyTemplate = item.template;
347
+ break;
340
348
  default:
341
349
  this.fileTemplate = item.template;
342
350
  break;
@@ -389,7 +397,7 @@ class FileUpload {
389
397
  this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });
390
398
  // this will check the fileLimit with the uploaded files
391
399
  this.checkFileLimit(files);
392
- if (this.hasFiles() && this.auto && (!(this.mode === 'advanced') || !this.isFileLimitExceeded())) {
400
+ if (this.hasFiles() && this.auto && (this.mode !== 'advanced' || !this.isFileLimitExceeded())) {
393
401
  this.upload();
394
402
  }
395
403
  if (event.type !== 'drop' && this.isIE11()) {
@@ -680,61 +688,63 @@ class FileUpload {
680
688
  }
681
689
  }
682
690
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FileUpload, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
683
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.1", type: FileUpload, selector: "p-fileUpload", inputs: { name: "name", url: "url", method: "method", multiple: ["multiple", "multiple", booleanAttribute], accept: "accept", disabled: ["disabled", "disabled", booleanAttribute], auto: ["auto", "auto", booleanAttribute], withCredentials: ["withCredentials", "withCredentials", booleanAttribute], maxFileSize: ["maxFileSize", "maxFileSize", numberAttribute], invalidFileSizeMessageSummary: "invalidFileSizeMessageSummary", invalidFileSizeMessageDetail: "invalidFileSizeMessageDetail", invalidFileTypeMessageSummary: "invalidFileTypeMessageSummary", invalidFileTypeMessageDetail: "invalidFileTypeMessageDetail", invalidFileLimitMessageDetail: "invalidFileLimitMessageDetail", invalidFileLimitMessageSummary: "invalidFileLimitMessageSummary", style: "style", styleClass: "styleClass", previewWidth: ["previewWidth", "previewWidth", numberAttribute], chooseLabel: "chooseLabel", uploadLabel: "uploadLabel", cancelLabel: "cancelLabel", chooseIcon: "chooseIcon", uploadIcon: "uploadIcon", cancelIcon: "cancelIcon", showUploadButton: ["showUploadButton", "showUploadButton", booleanAttribute], showCancelButton: ["showCancelButton", "showCancelButton", booleanAttribute], mode: "mode", headers: "headers", customUpload: ["customUpload", "customUpload", booleanAttribute], fileLimit: ["fileLimit", "fileLimit", numberAttribute], uploadStyleClass: "uploadStyleClass", cancelStyleClass: "cancelStyleClass", removeStyleClass: "removeStyleClass", chooseStyleClass: "chooseStyleClass", files: "files" }, outputs: { onBeforeUpload: "onBeforeUpload", onSend: "onSend", onUpload: "onUpload", onError: "onError", onClear: "onClear", onRemove: "onRemove", onSelect: "onSelect", onProgress: "onProgress", uploadHandler: "uploadHandler", onImageError: "onImageError" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "advancedFileInput", first: true, predicate: ["advancedfileinput"], descendants: true }, { propertyName: "basicFileInput", first: true, predicate: ["basicfileinput"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
691
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.1", type: FileUpload, selector: "p-fileUpload", inputs: { name: "name", url: "url", method: "method", multiple: ["multiple", "multiple", booleanAttribute], accept: "accept", disabled: ["disabled", "disabled", booleanAttribute], auto: ["auto", "auto", booleanAttribute], withCredentials: ["withCredentials", "withCredentials", booleanAttribute], maxFileSize: ["maxFileSize", "maxFileSize", numberAttribute], invalidFileSizeMessageSummary: "invalidFileSizeMessageSummary", invalidFileSizeMessageDetail: "invalidFileSizeMessageDetail", invalidFileTypeMessageSummary: "invalidFileTypeMessageSummary", invalidFileTypeMessageDetail: "invalidFileTypeMessageDetail", invalidFileLimitMessageDetail: "invalidFileLimitMessageDetail", invalidFileLimitMessageSummary: "invalidFileLimitMessageSummary", style: "style", styleClass: "styleClass", previewWidth: ["previewWidth", "previewWidth", numberAttribute], chooseLabel: "chooseLabel", uploadLabel: "uploadLabel", cancelLabel: "cancelLabel", chooseIcon: "chooseIcon", uploadIcon: "uploadIcon", cancelIcon: "cancelIcon", showUploadButton: ["showUploadButton", "showUploadButton", booleanAttribute], showCancelButton: ["showCancelButton", "showCancelButton", booleanAttribute], mode: "mode", headers: "headers", customUpload: ["customUpload", "customUpload", booleanAttribute], fileLimit: ["fileLimit", "fileLimit", (value) => numberAttribute(value, null)], uploadStyleClass: "uploadStyleClass", cancelStyleClass: "cancelStyleClass", removeStyleClass: "removeStyleClass", chooseStyleClass: "chooseStyleClass", files: "files" }, outputs: { onBeforeUpload: "onBeforeUpload", onSend: "onSend", onUpload: "onUpload", onError: "onError", onClear: "onClear", onRemove: "onRemove", onSelect: "onSelect", onProgress: "onProgress", uploadHandler: "uploadHandler", onImageError: "onImageError" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "advancedFileInput", first: true, predicate: ["advancedfileinput"], descendants: true }, { propertyName: "basicFileInput", first: true, predicate: ["basicfileinput"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
684
692
  <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'" [attr.data-pc-name]="'fileupload'" [attr.data-pc-section]="'root'">
685
693
  <div class="p-fileupload-buttonbar" [attr.data-pc-section]="'buttonbar'">
686
- <span
687
- class="p-button p-component p-fileupload-choose"
688
- [ngClass]="{ 'p-focus': focus, 'p-disabled': disabled || isChooseDisabled() }"
689
- (focus)="onFocus()"
690
- (blur)="onBlur()"
691
- pRipple
692
- (click)="choose()"
693
- (keydown.enter)="choose()"
694
- tabindex="0"
695
- [class]="chooseStyleClass"
696
- [attr.data-pc-section]="'choosebutton'"
697
- >
698
- <input
699
- [attr.aria-label]="browseFilesLabel"
700
- #advancedfileinput
701
- type="file"
702
- (change)="onFileSelect($event)"
703
- [multiple]="multiple"
704
- [accept]="accept"
705
- [disabled]="disabled || isChooseDisabled()"
706
- [attr.title]="''"
707
- [attr.data-pc-section]="'input'"
708
- />
709
- <span *ngIf="chooseIcon" [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'"></span>
710
- <ng-container *ngIf="!chooseIcon">
711
- <PlusIcon *ngIf="!chooseIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'" />
712
- <span *ngIf="chooseIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'">
713
- <ng-template *ngTemplateOutlet="chooseIconTemplate"></ng-template>
714
- </span>
715
- </ng-container>
716
- <span class="p-button-label" [attr.data-pc-section]="'choosebuttonlabel'">{{ chooseButtonLabel }}</span>
717
- </span>
718
-
719
- <p-button *ngIf="!auto && showUploadButton" type="button" [label]="uploadButtonLabel" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()" [styleClass]="uploadStyleClass">
720
- <span *ngIf="uploadIcon" [ngClass]="uploadIcon" [attr.aria-hidden]="true" class="p-button-icon p-button-icon-left"></span>
721
- <ng-container *ngIf="!uploadIcon">
722
- <UploadIcon *ngIf="!uploadIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" />
723
- <span *ngIf="uploadIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
724
- <ng-template *ngTemplateOutlet="uploadIconTemplate"></ng-template>
725
- </span>
726
- </ng-container>
727
- </p-button>
728
- <p-button *ngIf="!auto && showCancelButton" type="button" [label]="cancelButtonLabel" (onClick)="clear()" [disabled]="!hasFiles() || uploading" [styleClass]="cancelStyleClass">
729
- <span *ngIf="cancelIcon" [ngClass]="cancelIcon" class="p-button-icon p-button-icon-left"></span>
730
- <ng-container *ngIf="!cancelIcon">
731
- <TimesIcon *ngIf="!cancelIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-hidden]="true" />
732
- <span *ngIf="cancelIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
733
- <ng-template *ngTemplateOutlet="cancelIconTemplate"></ng-template>
734
- </span>
735
- </ng-container>
736
- </p-button>
694
+ <ng-container *ngIf="!headerTemplate">
695
+ <span
696
+ class="p-button p-component p-fileupload-choose"
697
+ [ngClass]="{ 'p-focus': focus, 'p-disabled': disabled || isChooseDisabled() }"
698
+ (focus)="onFocus()"
699
+ (blur)="onBlur()"
700
+ pRipple
701
+ (click)="choose()"
702
+ (keydown.enter)="choose()"
703
+ tabindex="0"
704
+ [class]="chooseStyleClass"
705
+ [attr.data-pc-section]="'choosebutton'"
706
+ >
707
+ <input
708
+ [attr.aria-label]="browseFilesLabel"
709
+ #advancedfileinput
710
+ type="file"
711
+ (change)="onFileSelect($event)"
712
+ [multiple]="multiple"
713
+ [accept]="accept"
714
+ [disabled]="disabled || isChooseDisabled()"
715
+ [attr.title]="''"
716
+ [attr.data-pc-section]="'input'"
717
+ />
718
+ <span *ngIf="chooseIcon" [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'"></span>
719
+ <ng-container *ngIf="!chooseIcon">
720
+ <PlusIcon *ngIf="!chooseIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'" />
721
+ <span *ngIf="chooseIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'">
722
+ <ng-template *ngTemplateOutlet="chooseIconTemplate"></ng-template>
723
+ </span>
724
+ </ng-container>
725
+ <span class="p-button-label" [attr.data-pc-section]="'choosebuttonlabel'">{{ chooseButtonLabel }}</span>
726
+ </span>
737
727
 
728
+ <p-button *ngIf="!auto && showUploadButton" type="button" [label]="uploadButtonLabel" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()" [styleClass]="uploadStyleClass">
729
+ <span *ngIf="uploadIcon" [ngClass]="uploadIcon" [attr.aria-hidden]="true" class="p-button-icon p-button-icon-left"></span>
730
+ <ng-container *ngIf="!uploadIcon">
731
+ <UploadIcon *ngIf="!uploadIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" />
732
+ <span *ngIf="uploadIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
733
+ <ng-template *ngTemplateOutlet="uploadIconTemplate"></ng-template>
734
+ </span>
735
+ </ng-container>
736
+ </p-button>
737
+ <p-button *ngIf="!auto && showCancelButton" type="button" [label]="cancelButtonLabel" (onClick)="clear()" [disabled]="!hasFiles() || uploading" [styleClass]="cancelStyleClass">
738
+ <span *ngIf="cancelIcon" [ngClass]="cancelIcon" class="p-button-icon p-button-icon-left"></span>
739
+ <ng-container *ngIf="!cancelIcon">
740
+ <TimesIcon *ngIf="!cancelIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-hidden]="true" />
741
+ <span *ngIf="cancelIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
742
+ <ng-template *ngTemplateOutlet="cancelIconTemplate"></ng-template>
743
+ </span>
744
+ </ng-container>
745
+ </p-button>
746
+ </ng-container>
747
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
738
748
  <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
739
749
  </div>
740
750
  <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)" [attr.data-pc-section]="'content'">
@@ -761,6 +771,9 @@ class FileUpload {
761
771
  </div>
762
772
  </div>
763
773
  <ng-container *ngTemplateOutlet="contentTemplate; context: { $implicit: files }"></ng-container>
774
+ <div *ngIf="emptyTemplate && !hasFiles() && !uploadedFileCount" class="p-fileupload-empty">
775
+ <ng-container *ngTemplateOutlet="emptyTemplate"></ng-container>
776
+ </div>
764
777
  </div>
765
778
  </div>
766
779
  <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'" [attr.data-pc-name]="'fileupload'">
@@ -816,58 +829,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
816
829
  args: [{ selector: 'p-fileUpload', template: `
817
830
  <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'" [attr.data-pc-name]="'fileupload'" [attr.data-pc-section]="'root'">
818
831
  <div class="p-fileupload-buttonbar" [attr.data-pc-section]="'buttonbar'">
819
- <span
820
- class="p-button p-component p-fileupload-choose"
821
- [ngClass]="{ 'p-focus': focus, 'p-disabled': disabled || isChooseDisabled() }"
822
- (focus)="onFocus()"
823
- (blur)="onBlur()"
824
- pRipple
825
- (click)="choose()"
826
- (keydown.enter)="choose()"
827
- tabindex="0"
828
- [class]="chooseStyleClass"
829
- [attr.data-pc-section]="'choosebutton'"
830
- >
831
- <input
832
- [attr.aria-label]="browseFilesLabel"
833
- #advancedfileinput
834
- type="file"
835
- (change)="onFileSelect($event)"
836
- [multiple]="multiple"
837
- [accept]="accept"
838
- [disabled]="disabled || isChooseDisabled()"
839
- [attr.title]="''"
840
- [attr.data-pc-section]="'input'"
841
- />
842
- <span *ngIf="chooseIcon" [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'"></span>
843
- <ng-container *ngIf="!chooseIcon">
844
- <PlusIcon *ngIf="!chooseIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'" />
845
- <span *ngIf="chooseIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'">
846
- <ng-template *ngTemplateOutlet="chooseIconTemplate"></ng-template>
847
- </span>
848
- </ng-container>
849
- <span class="p-button-label" [attr.data-pc-section]="'choosebuttonlabel'">{{ chooseButtonLabel }}</span>
850
- </span>
851
-
852
- <p-button *ngIf="!auto && showUploadButton" type="button" [label]="uploadButtonLabel" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()" [styleClass]="uploadStyleClass">
853
- <span *ngIf="uploadIcon" [ngClass]="uploadIcon" [attr.aria-hidden]="true" class="p-button-icon p-button-icon-left"></span>
854
- <ng-container *ngIf="!uploadIcon">
855
- <UploadIcon *ngIf="!uploadIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" />
856
- <span *ngIf="uploadIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
857
- <ng-template *ngTemplateOutlet="uploadIconTemplate"></ng-template>
858
- </span>
859
- </ng-container>
860
- </p-button>
861
- <p-button *ngIf="!auto && showCancelButton" type="button" [label]="cancelButtonLabel" (onClick)="clear()" [disabled]="!hasFiles() || uploading" [styleClass]="cancelStyleClass">
862
- <span *ngIf="cancelIcon" [ngClass]="cancelIcon" class="p-button-icon p-button-icon-left"></span>
863
- <ng-container *ngIf="!cancelIcon">
864
- <TimesIcon *ngIf="!cancelIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-hidden]="true" />
865
- <span *ngIf="cancelIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
866
- <ng-template *ngTemplateOutlet="cancelIconTemplate"></ng-template>
867
- </span>
868
- </ng-container>
869
- </p-button>
832
+ <ng-container *ngIf="!headerTemplate">
833
+ <span
834
+ class="p-button p-component p-fileupload-choose"
835
+ [ngClass]="{ 'p-focus': focus, 'p-disabled': disabled || isChooseDisabled() }"
836
+ (focus)="onFocus()"
837
+ (blur)="onBlur()"
838
+ pRipple
839
+ (click)="choose()"
840
+ (keydown.enter)="choose()"
841
+ tabindex="0"
842
+ [class]="chooseStyleClass"
843
+ [attr.data-pc-section]="'choosebutton'"
844
+ >
845
+ <input
846
+ [attr.aria-label]="browseFilesLabel"
847
+ #advancedfileinput
848
+ type="file"
849
+ (change)="onFileSelect($event)"
850
+ [multiple]="multiple"
851
+ [accept]="accept"
852
+ [disabled]="disabled || isChooseDisabled()"
853
+ [attr.title]="''"
854
+ [attr.data-pc-section]="'input'"
855
+ />
856
+ <span *ngIf="chooseIcon" [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'"></span>
857
+ <ng-container *ngIf="!chooseIcon">
858
+ <PlusIcon *ngIf="!chooseIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'" />
859
+ <span *ngIf="chooseIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-label]="true" [attr.data-pc-section]="'chooseicon'">
860
+ <ng-template *ngTemplateOutlet="chooseIconTemplate"></ng-template>
861
+ </span>
862
+ </ng-container>
863
+ <span class="p-button-label" [attr.data-pc-section]="'choosebuttonlabel'">{{ chooseButtonLabel }}</span>
864
+ </span>
870
865
 
866
+ <p-button *ngIf="!auto && showUploadButton" type="button" [label]="uploadButtonLabel" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()" [styleClass]="uploadStyleClass">
867
+ <span *ngIf="uploadIcon" [ngClass]="uploadIcon" [attr.aria-hidden]="true" class="p-button-icon p-button-icon-left"></span>
868
+ <ng-container *ngIf="!uploadIcon">
869
+ <UploadIcon *ngIf="!uploadIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" />
870
+ <span *ngIf="uploadIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
871
+ <ng-template *ngTemplateOutlet="uploadIconTemplate"></ng-template>
872
+ </span>
873
+ </ng-container>
874
+ </p-button>
875
+ <p-button *ngIf="!auto && showCancelButton" type="button" [label]="cancelButtonLabel" (onClick)="clear()" [disabled]="!hasFiles() || uploading" [styleClass]="cancelStyleClass">
876
+ <span *ngIf="cancelIcon" [ngClass]="cancelIcon" class="p-button-icon p-button-icon-left"></span>
877
+ <ng-container *ngIf="!cancelIcon">
878
+ <TimesIcon *ngIf="!cancelIconTemplate" [styleClass]="'p-button-icon p-button-icon-left'" [attr.aria-hidden]="true" />
879
+ <span *ngIf="cancelIconTemplate" class="p-button-icon p-button-icon-left" [attr.aria-hidden]="true">
880
+ <ng-template *ngTemplateOutlet="cancelIconTemplate"></ng-template>
881
+ </span>
882
+ </ng-container>
883
+ </p-button>
884
+ </ng-container>
885
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
871
886
  <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
872
887
  </div>
873
888
  <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)" [attr.data-pc-section]="'content'">
@@ -894,6 +909,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
894
909
  </div>
895
910
  </div>
896
911
  <ng-container *ngTemplateOutlet="contentTemplate; context: { $implicit: files }"></ng-container>
912
+ <div *ngIf="emptyTemplate && !hasFiles() && !uploadedFileCount" class="p-fileupload-empty">
913
+ <ng-container *ngTemplateOutlet="emptyTemplate"></ng-container>
914
+ </div>
897
915
  </div>
898
916
  </div>
899
917
  <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'" [attr.data-pc-name]="'fileupload'">
@@ -1020,7 +1038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
1020
1038
  args: [{ transform: booleanAttribute }]
1021
1039
  }], fileLimit: [{
1022
1040
  type: Input,
1023
- args: [{ transform: numberAttribute }]
1041
+ args: [{ transform: (value) => numberAttribute(value, null) }]
1024
1042
  }], uploadStyleClass: [{
1025
1043
  type: Input
1026
1044
  }], cancelStyleClass: [{
@@ -1066,13 +1084,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
1066
1084
  }] } });
1067
1085
  class FileUploadModule {
1068
1086
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1069
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, HttpClientModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
1070
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, imports: [CommonModule, HttpClientModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
1087
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
1088
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
1071
1089
  }
1072
1090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FileUploadModule, decorators: [{
1073
1091
  type: NgModule,
1074
1092
  args: [{
1075
- imports: [CommonModule, HttpClientModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon],
1093
+ imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, PlusIcon, UploadIcon, TimesIcon],
1076
1094
  exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],
1077
1095
  declarations: [FileUpload]
1078
1096
  }]