@ops-prime/primeng 0.0.0-stage → 21.1.11

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 (792) hide show
  1. package/LICENSE.md +77 -0
  2. package/README.md +10 -2
  3. package/fesm2022/primeng-accordion.mjs +634 -0
  4. package/fesm2022/primeng-accordion.mjs.map +1 -0
  5. package/fesm2022/primeng-animateonscroll.mjs +175 -0
  6. package/fesm2022/primeng-animateonscroll.mjs.map +1 -0
  7. package/fesm2022/primeng-api.mjs +841 -0
  8. package/fesm2022/primeng-api.mjs.map +1 -0
  9. package/fesm2022/primeng-autocomplete.mjs +2310 -0
  10. package/fesm2022/primeng-autocomplete.mjs.map +1 -0
  11. package/fesm2022/primeng-autofocus.mjs +83 -0
  12. package/fesm2022/primeng-autofocus.mjs.map +1 -0
  13. package/fesm2022/primeng-avatar.mjs +214 -0
  14. package/fesm2022/primeng-avatar.mjs.map +1 -0
  15. package/fesm2022/primeng-avatargroup.mjs +106 -0
  16. package/fesm2022/primeng-avatargroup.mjs.map +1 -0
  17. package/fesm2022/primeng-badge.mjs +417 -0
  18. package/fesm2022/primeng-badge.mjs.map +1 -0
  19. package/fesm2022/primeng-base.mjs +124 -0
  20. package/fesm2022/primeng-base.mjs.map +1 -0
  21. package/fesm2022/primeng-basecomponent.mjs +435 -0
  22. package/fesm2022/primeng-basecomponent.mjs.map +1 -0
  23. package/fesm2022/primeng-baseeditableholder.mjs +67 -0
  24. package/fesm2022/primeng-baseeditableholder.mjs.map +1 -0
  25. package/fesm2022/primeng-baseinput.mjs +85 -0
  26. package/fesm2022/primeng-baseinput.mjs.map +1 -0
  27. package/fesm2022/primeng-basemodelholder.mjs +25 -0
  28. package/fesm2022/primeng-basemodelholder.mjs.map +1 -0
  29. package/fesm2022/primeng-bind.mjs +94 -0
  30. package/fesm2022/primeng-bind.mjs.map +1 -0
  31. package/fesm2022/primeng-blockui.mjs +265 -0
  32. package/fesm2022/primeng-blockui.mjs.map +1 -0
  33. package/fesm2022/primeng-breadcrumb.mjs +526 -0
  34. package/fesm2022/primeng-breadcrumb.mjs.map +1 -0
  35. package/fesm2022/primeng-button.mjs +1028 -0
  36. package/fesm2022/primeng-button.mjs.map +1 -0
  37. package/fesm2022/primeng-buttongroup.mjs +110 -0
  38. package/fesm2022/primeng-buttongroup.mjs.map +1 -0
  39. package/fesm2022/primeng-card.mjs +312 -0
  40. package/fesm2022/primeng-card.mjs.map +1 -0
  41. package/fesm2022/primeng-carousel.mjs +1205 -0
  42. package/fesm2022/primeng-carousel.mjs.map +1 -0
  43. package/fesm2022/primeng-cascadeselect.mjs +1822 -0
  44. package/fesm2022/primeng-cascadeselect.mjs.map +1 -0
  45. package/fesm2022/primeng-chart.mjs +270 -0
  46. package/fesm2022/primeng-chart.mjs.map +1 -0
  47. package/fesm2022/primeng-checkbox.mjs +467 -0
  48. package/fesm2022/primeng-checkbox.mjs.map +1 -0
  49. package/fesm2022/primeng-chip.mjs +378 -0
  50. package/fesm2022/primeng-chip.mjs.map +1 -0
  51. package/fesm2022/primeng-classnames.mjs +48 -0
  52. package/fesm2022/primeng-classnames.mjs.map +1 -0
  53. package/fesm2022/primeng-colorpicker.mjs +805 -0
  54. package/fesm2022/primeng-colorpicker.mjs.map +1 -0
  55. package/fesm2022/primeng-config.mjs +299 -0
  56. package/fesm2022/primeng-config.mjs.map +1 -0
  57. package/fesm2022/primeng-confirmdialog.mjs +858 -0
  58. package/fesm2022/primeng-confirmdialog.mjs.map +1 -0
  59. package/fesm2022/primeng-confirmpopup.mjs +701 -0
  60. package/fesm2022/primeng-confirmpopup.mjs.map +1 -0
  61. package/fesm2022/primeng-contextmenu.mjs +1572 -0
  62. package/fesm2022/primeng-contextmenu.mjs.map +1 -0
  63. package/fesm2022/primeng-dataview.mjs +832 -0
  64. package/fesm2022/primeng-dataview.mjs.map +1 -0
  65. package/fesm2022/primeng-datepicker.mjs +4439 -0
  66. package/fesm2022/primeng-datepicker.mjs.map +1 -0
  67. package/fesm2022/primeng-dialog.mjs +1413 -0
  68. package/fesm2022/primeng-dialog.mjs.map +1 -0
  69. package/fesm2022/primeng-divider.mjs +162 -0
  70. package/fesm2022/primeng-divider.mjs.map +1 -0
  71. package/fesm2022/primeng-dock.mjs +590 -0
  72. package/fesm2022/primeng-dock.mjs.map +1 -0
  73. package/fesm2022/primeng-dom.mjs +778 -0
  74. package/fesm2022/primeng-dom.mjs.map +1 -0
  75. package/fesm2022/primeng-dragdrop.mjs +336 -0
  76. package/fesm2022/primeng-dragdrop.mjs.map +1 -0
  77. package/fesm2022/primeng-drawer.mjs +776 -0
  78. package/fesm2022/primeng-drawer.mjs.map +1 -0
  79. package/fesm2022/primeng-dynamicdialog.mjs +1075 -0
  80. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -0
  81. package/fesm2022/primeng-editor.mjs +524 -0
  82. package/fesm2022/primeng-editor.mjs.map +1 -0
  83. package/fesm2022/primeng-fieldset.mjs +456 -0
  84. package/fesm2022/primeng-fieldset.mjs.map +1 -0
  85. package/fesm2022/primeng-fileupload.mjs +1577 -0
  86. package/fesm2022/primeng-fileupload.mjs.map +1 -0
  87. package/fesm2022/primeng-floatlabel.mjs +113 -0
  88. package/fesm2022/primeng-floatlabel.mjs.map +1 -0
  89. package/fesm2022/primeng-fluid.mjs +89 -0
  90. package/fesm2022/primeng-fluid.mjs.map +1 -0
  91. package/fesm2022/primeng-focustrap.mjs +108 -0
  92. package/fesm2022/primeng-focustrap.mjs.map +1 -0
  93. package/fesm2022/primeng-galleria.mjs +2135 -0
  94. package/fesm2022/primeng-galleria.mjs.map +1 -0
  95. package/fesm2022/primeng-iconfield.mjs +114 -0
  96. package/fesm2022/primeng-iconfield.mjs.map +1 -0
  97. package/fesm2022/primeng-icons-angledoubledown.mjs +37 -0
  98. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -0
  99. package/fesm2022/primeng-icons-angledoubleleft.mjs +37 -0
  100. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -0
  101. package/fesm2022/primeng-icons-angledoubleright.mjs +37 -0
  102. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -0
  103. package/fesm2022/primeng-icons-angledoubleup.mjs +37 -0
  104. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -0
  105. package/fesm2022/primeng-icons-angledown.mjs +33 -0
  106. package/fesm2022/primeng-icons-angledown.mjs.map +1 -0
  107. package/fesm2022/primeng-icons-angleleft.mjs +33 -0
  108. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -0
  109. package/fesm2022/primeng-icons-angleright.mjs +33 -0
  110. package/fesm2022/primeng-icons-angleright.mjs.map +1 -0
  111. package/fesm2022/primeng-icons-angleup.mjs +33 -0
  112. package/fesm2022/primeng-icons-angleup.mjs.map +1 -0
  113. package/fesm2022/primeng-icons-arrowdown.mjs +56 -0
  114. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -0
  115. package/fesm2022/primeng-icons-arrowdownleft.mjs +33 -0
  116. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -0
  117. package/fesm2022/primeng-icons-arrowdownright.mjs +33 -0
  118. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -0
  119. package/fesm2022/primeng-icons-arrowleft.mjs +56 -0
  120. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -0
  121. package/fesm2022/primeng-icons-arrowright.mjs +37 -0
  122. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -0
  123. package/fesm2022/primeng-icons-arrowup.mjs +56 -0
  124. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -0
  125. package/fesm2022/primeng-icons-ban.mjs +52 -0
  126. package/fesm2022/primeng-icons-ban.mjs.map +1 -0
  127. package/fesm2022/primeng-icons-bars.mjs +37 -0
  128. package/fesm2022/primeng-icons-bars.mjs.map +1 -0
  129. package/fesm2022/primeng-icons-baseicon.mjs +103 -0
  130. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -0
  131. package/fesm2022/primeng-icons-blank.mjs +23 -0
  132. package/fesm2022/primeng-icons-blank.mjs.map +1 -0
  133. package/fesm2022/primeng-icons-calendar.mjs +33 -0
  134. package/fesm2022/primeng-icons-calendar.mjs.map +1 -0
  135. package/fesm2022/primeng-icons-caretleft.mjs +33 -0
  136. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -0
  137. package/fesm2022/primeng-icons-caretright.mjs +33 -0
  138. package/fesm2022/primeng-icons-caretright.mjs.map +1 -0
  139. package/fesm2022/primeng-icons-check.mjs +33 -0
  140. package/fesm2022/primeng-icons-check.mjs.map +1 -0
  141. package/fesm2022/primeng-icons-chevrondown.mjs +33 -0
  142. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -0
  143. package/fesm2022/primeng-icons-chevronleft.mjs +33 -0
  144. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -0
  145. package/fesm2022/primeng-icons-chevronright.mjs +33 -0
  146. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -0
  147. package/fesm2022/primeng-icons-chevronup.mjs +33 -0
  148. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -0
  149. package/fesm2022/primeng-icons-exclamationtriangle.mjs +68 -0
  150. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -0
  151. package/fesm2022/primeng-icons-eye.mjs +37 -0
  152. package/fesm2022/primeng-icons-eye.mjs.map +1 -0
  153. package/fesm2022/primeng-icons-eyeslash.mjs +56 -0
  154. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -0
  155. package/fesm2022/primeng-icons-filter.mjs +52 -0
  156. package/fesm2022/primeng-icons-filter.mjs.map +1 -0
  157. package/fesm2022/primeng-icons-filterfill.mjs +33 -0
  158. package/fesm2022/primeng-icons-filterfill.mjs.map +1 -0
  159. package/fesm2022/primeng-icons-filterslash.mjs +56 -0
  160. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -0
  161. package/fesm2022/primeng-icons-home.mjs +56 -0
  162. package/fesm2022/primeng-icons-home.mjs.map +1 -0
  163. package/fesm2022/primeng-icons-infocircle.mjs +56 -0
  164. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -0
  165. package/fesm2022/primeng-icons-minus.mjs +33 -0
  166. package/fesm2022/primeng-icons-minus.mjs.map +1 -0
  167. package/fesm2022/primeng-icons-pencil.mjs +52 -0
  168. package/fesm2022/primeng-icons-pencil.mjs.map +1 -0
  169. package/fesm2022/primeng-icons-plus.mjs +52 -0
  170. package/fesm2022/primeng-icons-plus.mjs.map +1 -0
  171. package/fesm2022/primeng-icons-refresh.mjs +56 -0
  172. package/fesm2022/primeng-icons-refresh.mjs.map +1 -0
  173. package/fesm2022/primeng-icons-search.mjs +56 -0
  174. package/fesm2022/primeng-icons-search.mjs.map +1 -0
  175. package/fesm2022/primeng-icons-searchminus.mjs +56 -0
  176. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -0
  177. package/fesm2022/primeng-icons-searchplus.mjs +56 -0
  178. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -0
  179. package/fesm2022/primeng-icons-sortalt.mjs +64 -0
  180. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -0
  181. package/fesm2022/primeng-icons-sortamountdown.mjs +52 -0
  182. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -0
  183. package/fesm2022/primeng-icons-sortamountupalt.mjs +52 -0
  184. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -0
  185. package/fesm2022/primeng-icons-spinner.mjs +52 -0
  186. package/fesm2022/primeng-icons-spinner.mjs.map +1 -0
  187. package/fesm2022/primeng-icons-star.mjs +52 -0
  188. package/fesm2022/primeng-icons-star.mjs.map +1 -0
  189. package/fesm2022/primeng-icons-starfill.mjs +52 -0
  190. package/fesm2022/primeng-icons-starfill.mjs.map +1 -0
  191. package/fesm2022/primeng-icons-thlarge.mjs +56 -0
  192. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -0
  193. package/fesm2022/primeng-icons-times.mjs +33 -0
  194. package/fesm2022/primeng-icons-times.mjs.map +1 -0
  195. package/fesm2022/primeng-icons-timescircle.mjs +56 -0
  196. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -0
  197. package/fesm2022/primeng-icons-trash.mjs +56 -0
  198. package/fesm2022/primeng-icons-trash.mjs.map +1 -0
  199. package/fesm2022/primeng-icons-undo.mjs +56 -0
  200. package/fesm2022/primeng-icons-undo.mjs.map +1 -0
  201. package/fesm2022/primeng-icons-upload.mjs +56 -0
  202. package/fesm2022/primeng-icons-upload.mjs.map +1 -0
  203. package/fesm2022/primeng-icons-windowmaximize.mjs +56 -0
  204. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -0
  205. package/fesm2022/primeng-icons-windowminimize.mjs +56 -0
  206. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -0
  207. package/fesm2022/primeng-icons.mjs +63 -0
  208. package/fesm2022/primeng-icons.mjs.map +1 -0
  209. package/fesm2022/primeng-iftalabel.mjs +100 -0
  210. package/fesm2022/primeng-iftalabel.mjs.map +1 -0
  211. package/fesm2022/primeng-image.mjs +802 -0
  212. package/fesm2022/primeng-image.mjs.map +1 -0
  213. package/fesm2022/primeng-imagecompare.mjs +200 -0
  214. package/fesm2022/primeng-imagecompare.mjs.map +1 -0
  215. package/fesm2022/primeng-inplace.mjs +330 -0
  216. package/fesm2022/primeng-inplace.mjs.map +1 -0
  217. package/fesm2022/primeng-inputgroup.mjs +136 -0
  218. package/fesm2022/primeng-inputgroup.mjs.map +1 -0
  219. package/fesm2022/primeng-inputgroupaddon.mjs +90 -0
  220. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -0
  221. package/fesm2022/primeng-inputicon.mjs +84 -0
  222. package/fesm2022/primeng-inputicon.mjs.map +1 -0
  223. package/fesm2022/primeng-inputmask.mjs +1509 -0
  224. package/fesm2022/primeng-inputmask.mjs.map +1 -0
  225. package/fesm2022/primeng-inputnumber.mjs +1675 -0
  226. package/fesm2022/primeng-inputnumber.mjs.map +1 -0
  227. package/fesm2022/primeng-inputotp.mjs +464 -0
  228. package/fesm2022/primeng-inputotp.mjs.map +1 -0
  229. package/fesm2022/primeng-inputtext.mjs +196 -0
  230. package/fesm2022/primeng-inputtext.mjs.map +1 -0
  231. package/fesm2022/primeng-keyfilter.mjs +276 -0
  232. package/fesm2022/primeng-keyfilter.mjs.map +1 -0
  233. package/fesm2022/primeng-knob.mjs +500 -0
  234. package/fesm2022/primeng-knob.mjs.map +1 -0
  235. package/fesm2022/primeng-listbox.mjs +2125 -0
  236. package/fesm2022/primeng-listbox.mjs.map +1 -0
  237. package/fesm2022/primeng-megamenu.mjs +1598 -0
  238. package/fesm2022/primeng-megamenu.mjs.map +1 -0
  239. package/fesm2022/primeng-menu.mjs +1150 -0
  240. package/fesm2022/primeng-menu.mjs.map +1 -0
  241. package/fesm2022/primeng-menubar.mjs +1538 -0
  242. package/fesm2022/primeng-menubar.mjs.map +1 -0
  243. package/fesm2022/primeng-message.mjs +408 -0
  244. package/fesm2022/primeng-message.mjs.map +1 -0
  245. package/fesm2022/primeng-metergroup.mjs +496 -0
  246. package/fesm2022/primeng-metergroup.mjs.map +1 -0
  247. package/fesm2022/primeng-motion.mjs +700 -0
  248. package/fesm2022/primeng-motion.mjs.map +1 -0
  249. package/fesm2022/primeng-multiselect.mjs +2690 -0
  250. package/fesm2022/primeng-multiselect.mjs.map +1 -0
  251. package/fesm2022/primeng-orderlist.mjs +1086 -0
  252. package/fesm2022/primeng-orderlist.mjs.map +1 -0
  253. package/fesm2022/primeng-organizationchart.mjs +545 -0
  254. package/fesm2022/primeng-organizationchart.mjs.map +1 -0
  255. package/fesm2022/primeng-overlay.mjs +879 -0
  256. package/fesm2022/primeng-overlay.mjs.map +1 -0
  257. package/fesm2022/primeng-overlaybadge.mjs +161 -0
  258. package/fesm2022/primeng-overlaybadge.mjs.map +1 -0
  259. package/fesm2022/primeng-paginator.mjs +823 -0
  260. package/fesm2022/primeng-paginator.mjs.map +1 -0
  261. package/fesm2022/primeng-panel.mjs +568 -0
  262. package/fesm2022/primeng-panel.mjs.map +1 -0
  263. package/fesm2022/primeng-panelmenu.mjs +1619 -0
  264. package/fesm2022/primeng-panelmenu.mjs.map +1 -0
  265. package/fesm2022/primeng-passthrough.mjs +21 -0
  266. package/fesm2022/primeng-passthrough.mjs.map +1 -0
  267. package/fesm2022/primeng-password.mjs +1175 -0
  268. package/fesm2022/primeng-password.mjs.map +1 -0
  269. package/fesm2022/primeng-picklist.mjs +2235 -0
  270. package/fesm2022/primeng-picklist.mjs.map +1 -0
  271. package/fesm2022/primeng-popover.mjs +528 -0
  272. package/fesm2022/primeng-popover.mjs.map +1 -0
  273. package/fesm2022/primeng-progressbar.mjs +216 -0
  274. package/fesm2022/primeng-progressbar.mjs.map +1 -0
  275. package/fesm2022/primeng-progressspinner.mjs +148 -0
  276. package/fesm2022/primeng-progressspinner.mjs.map +1 -0
  277. package/fesm2022/primeng-radiobutton.mjs +380 -0
  278. package/fesm2022/primeng-radiobutton.mjs.map +1 -0
  279. package/fesm2022/primeng-rating.mjs +410 -0
  280. package/fesm2022/primeng-rating.mjs.map +1 -0
  281. package/fesm2022/primeng-ripple.mjs +196 -0
  282. package/fesm2022/primeng-ripple.mjs.map +1 -0
  283. package/fesm2022/primeng-scroller.mjs +1327 -0
  284. package/fesm2022/primeng-scroller.mjs.map +1 -0
  285. package/fesm2022/primeng-scrollpanel.mjs +572 -0
  286. package/fesm2022/primeng-scrollpanel.mjs.map +1 -0
  287. package/fesm2022/primeng-scrolltop.mjs +347 -0
  288. package/fesm2022/primeng-scrolltop.mjs.map +1 -0
  289. package/fesm2022/primeng-select.mjs +2399 -0
  290. package/fesm2022/primeng-select.mjs.map +1 -0
  291. package/fesm2022/primeng-selectbutton.mjs +435 -0
  292. package/fesm2022/primeng-selectbutton.mjs.map +1 -0
  293. package/fesm2022/primeng-skeleton.mjs +170 -0
  294. package/fesm2022/primeng-skeleton.mjs.map +1 -0
  295. package/fesm2022/primeng-slider.mjs +889 -0
  296. package/fesm2022/primeng-slider.mjs.map +1 -0
  297. package/fesm2022/primeng-speeddial.mjs +937 -0
  298. package/fesm2022/primeng-speeddial.mjs.map +1 -0
  299. package/fesm2022/primeng-splitbutton.mjs +640 -0
  300. package/fesm2022/primeng-splitbutton.mjs.map +1 -0
  301. package/fesm2022/primeng-splitter.mjs +601 -0
  302. package/fesm2022/primeng-splitter.mjs.map +1 -0
  303. package/fesm2022/primeng-stepper.mjs +745 -0
  304. package/fesm2022/primeng-stepper.mjs.map +1 -0
  305. package/fesm2022/primeng-steps.mjs +425 -0
  306. package/fesm2022/primeng-steps.mjs.map +1 -0
  307. package/fesm2022/primeng-styleclass.mjs +354 -0
  308. package/fesm2022/primeng-styleclass.mjs.map +1 -0
  309. package/fesm2022/primeng-table.mjs +7805 -0
  310. package/fesm2022/primeng-table.mjs.map +1 -0
  311. package/fesm2022/primeng-tabs.mjs +911 -0
  312. package/fesm2022/primeng-tabs.mjs.map +1 -0
  313. package/fesm2022/primeng-tag.mjs +198 -0
  314. package/fesm2022/primeng-tag.mjs.map +1 -0
  315. package/fesm2022/primeng-terminal.mjs +260 -0
  316. package/fesm2022/primeng-terminal.mjs.map +1 -0
  317. package/fesm2022/primeng-textarea.mjs +225 -0
  318. package/fesm2022/primeng-textarea.mjs.map +1 -0
  319. package/fesm2022/primeng-tieredmenu.mjs +1625 -0
  320. package/fesm2022/primeng-tieredmenu.mjs.map +1 -0
  321. package/fesm2022/primeng-timeline.mjs +250 -0
  322. package/fesm2022/primeng-timeline.mjs.map +1 -0
  323. package/fesm2022/primeng-toast.mjs +784 -0
  324. package/fesm2022/primeng-toast.mjs.map +1 -0
  325. package/fesm2022/primeng-togglebutton.mjs +393 -0
  326. package/fesm2022/primeng-togglebutton.mjs.map +1 -0
  327. package/fesm2022/primeng-toggleswitch.mjs +346 -0
  328. package/fesm2022/primeng-toggleswitch.mjs.map +1 -0
  329. package/fesm2022/primeng-toolbar.mjs +198 -0
  330. package/fesm2022/primeng-toolbar.mjs.map +1 -0
  331. package/fesm2022/primeng-tooltip.mjs +842 -0
  332. package/fesm2022/primeng-tooltip.mjs.map +1 -0
  333. package/fesm2022/primeng-tree.mjs +2282 -0
  334. package/fesm2022/primeng-tree.mjs.map +1 -0
  335. package/fesm2022/primeng-treeselect.mjs +1408 -0
  336. package/fesm2022/primeng-treeselect.mjs.map +1 -0
  337. package/fesm2022/primeng-treetable.mjs +5164 -0
  338. package/fesm2022/primeng-treetable.mjs.map +1 -0
  339. package/fesm2022/primeng-ts-helpers.mjs +4 -0
  340. package/fesm2022/primeng-ts-helpers.mjs.map +1 -0
  341. package/fesm2022/primeng-types-accordion.mjs +4 -0
  342. package/fesm2022/primeng-types-accordion.mjs.map +1 -0
  343. package/fesm2022/primeng-types-autocomplete.mjs +4 -0
  344. package/fesm2022/primeng-types-autocomplete.mjs.map +1 -0
  345. package/fesm2022/primeng-types-avatar.mjs +4 -0
  346. package/fesm2022/primeng-types-avatar.mjs.map +1 -0
  347. package/fesm2022/primeng-types-avatargroup.mjs +4 -0
  348. package/fesm2022/primeng-types-avatargroup.mjs.map +1 -0
  349. package/fesm2022/primeng-types-badge.mjs +4 -0
  350. package/fesm2022/primeng-types-badge.mjs.map +1 -0
  351. package/fesm2022/primeng-types-blockui.mjs +4 -0
  352. package/fesm2022/primeng-types-blockui.mjs.map +1 -0
  353. package/fesm2022/primeng-types-breadcrumb.mjs +4 -0
  354. package/fesm2022/primeng-types-breadcrumb.mjs.map +1 -0
  355. package/fesm2022/primeng-types-button.mjs +4 -0
  356. package/fesm2022/primeng-types-button.mjs.map +1 -0
  357. package/fesm2022/primeng-types-card.mjs +4 -0
  358. package/fesm2022/primeng-types-card.mjs.map +1 -0
  359. package/fesm2022/primeng-types-carousel.mjs +4 -0
  360. package/fesm2022/primeng-types-carousel.mjs.map +1 -0
  361. package/fesm2022/primeng-types-cascadeselect.mjs +4 -0
  362. package/fesm2022/primeng-types-cascadeselect.mjs.map +1 -0
  363. package/fesm2022/primeng-types-chart.mjs +4 -0
  364. package/fesm2022/primeng-types-chart.mjs.map +1 -0
  365. package/fesm2022/primeng-types-checkbox.mjs +4 -0
  366. package/fesm2022/primeng-types-checkbox.mjs.map +1 -0
  367. package/fesm2022/primeng-types-chip.mjs +4 -0
  368. package/fesm2022/primeng-types-chip.mjs.map +1 -0
  369. package/fesm2022/primeng-types-colorpicker.mjs +4 -0
  370. package/fesm2022/primeng-types-colorpicker.mjs.map +1 -0
  371. package/fesm2022/primeng-types-confirmdialog.mjs +4 -0
  372. package/fesm2022/primeng-types-confirmdialog.mjs.map +1 -0
  373. package/fesm2022/primeng-types-confirmpopup.mjs +4 -0
  374. package/fesm2022/primeng-types-confirmpopup.mjs.map +1 -0
  375. package/fesm2022/primeng-types-contextmenu.mjs +4 -0
  376. package/fesm2022/primeng-types-contextmenu.mjs.map +1 -0
  377. package/fesm2022/primeng-types-dataview.mjs +4 -0
  378. package/fesm2022/primeng-types-dataview.mjs.map +1 -0
  379. package/fesm2022/primeng-types-datepicker.mjs +4 -0
  380. package/fesm2022/primeng-types-datepicker.mjs.map +1 -0
  381. package/fesm2022/primeng-types-dialog.mjs +4 -0
  382. package/fesm2022/primeng-types-dialog.mjs.map +1 -0
  383. package/fesm2022/primeng-types-divider.mjs +4 -0
  384. package/fesm2022/primeng-types-divider.mjs.map +1 -0
  385. package/fesm2022/primeng-types-dock.mjs +4 -0
  386. package/fesm2022/primeng-types-dock.mjs.map +1 -0
  387. package/fesm2022/primeng-types-drawer.mjs +4 -0
  388. package/fesm2022/primeng-types-drawer.mjs.map +1 -0
  389. package/fesm2022/primeng-types-editor.mjs +4 -0
  390. package/fesm2022/primeng-types-editor.mjs.map +1 -0
  391. package/fesm2022/primeng-types-fieldset.mjs +4 -0
  392. package/fesm2022/primeng-types-fieldset.mjs.map +1 -0
  393. package/fesm2022/primeng-types-fileupload.mjs +4 -0
  394. package/fesm2022/primeng-types-fileupload.mjs.map +1 -0
  395. package/fesm2022/primeng-types-floatlabel.mjs +4 -0
  396. package/fesm2022/primeng-types-floatlabel.mjs.map +1 -0
  397. package/fesm2022/primeng-types-fluid.mjs +4 -0
  398. package/fesm2022/primeng-types-fluid.mjs.map +1 -0
  399. package/fesm2022/primeng-types-galleria.mjs +4 -0
  400. package/fesm2022/primeng-types-galleria.mjs.map +1 -0
  401. package/fesm2022/primeng-types-iconfield.mjs +4 -0
  402. package/fesm2022/primeng-types-iconfield.mjs.map +1 -0
  403. package/fesm2022/primeng-types-iftalabel.mjs +4 -0
  404. package/fesm2022/primeng-types-iftalabel.mjs.map +1 -0
  405. package/fesm2022/primeng-types-image.mjs +4 -0
  406. package/fesm2022/primeng-types-image.mjs.map +1 -0
  407. package/fesm2022/primeng-types-imagecompare.mjs +4 -0
  408. package/fesm2022/primeng-types-imagecompare.mjs.map +1 -0
  409. package/fesm2022/primeng-types-inplace.mjs +4 -0
  410. package/fesm2022/primeng-types-inplace.mjs.map +1 -0
  411. package/fesm2022/primeng-types-inputgroup.mjs +4 -0
  412. package/fesm2022/primeng-types-inputgroup.mjs.map +1 -0
  413. package/fesm2022/primeng-types-inputgroupaddon.mjs +4 -0
  414. package/fesm2022/primeng-types-inputgroupaddon.mjs.map +1 -0
  415. package/fesm2022/primeng-types-inputicon.mjs +4 -0
  416. package/fesm2022/primeng-types-inputicon.mjs.map +1 -0
  417. package/fesm2022/primeng-types-inputmask.mjs +4 -0
  418. package/fesm2022/primeng-types-inputmask.mjs.map +1 -0
  419. package/fesm2022/primeng-types-inputnumber.mjs +4 -0
  420. package/fesm2022/primeng-types-inputnumber.mjs.map +1 -0
  421. package/fesm2022/primeng-types-inputotp.mjs +4 -0
  422. package/fesm2022/primeng-types-inputotp.mjs.map +1 -0
  423. package/fesm2022/primeng-types-inputtext.mjs +4 -0
  424. package/fesm2022/primeng-types-inputtext.mjs.map +1 -0
  425. package/fesm2022/primeng-types-knob.mjs +4 -0
  426. package/fesm2022/primeng-types-knob.mjs.map +1 -0
  427. package/fesm2022/primeng-types-listbox.mjs +4 -0
  428. package/fesm2022/primeng-types-listbox.mjs.map +1 -0
  429. package/fesm2022/primeng-types-megamenu.mjs +4 -0
  430. package/fesm2022/primeng-types-megamenu.mjs.map +1 -0
  431. package/fesm2022/primeng-types-menu.mjs +4 -0
  432. package/fesm2022/primeng-types-menu.mjs.map +1 -0
  433. package/fesm2022/primeng-types-menubar.mjs +4 -0
  434. package/fesm2022/primeng-types-menubar.mjs.map +1 -0
  435. package/fesm2022/primeng-types-message.mjs +4 -0
  436. package/fesm2022/primeng-types-message.mjs.map +1 -0
  437. package/fesm2022/primeng-types-metergroup.mjs +4 -0
  438. package/fesm2022/primeng-types-metergroup.mjs.map +1 -0
  439. package/fesm2022/primeng-types-motion.mjs +4 -0
  440. package/fesm2022/primeng-types-motion.mjs.map +1 -0
  441. package/fesm2022/primeng-types-multiselect.mjs +4 -0
  442. package/fesm2022/primeng-types-multiselect.mjs.map +1 -0
  443. package/fesm2022/primeng-types-orderlist.mjs +4 -0
  444. package/fesm2022/primeng-types-orderlist.mjs.map +1 -0
  445. package/fesm2022/primeng-types-organizationchart.mjs +4 -0
  446. package/fesm2022/primeng-types-organizationchart.mjs.map +1 -0
  447. package/fesm2022/primeng-types-overlay.mjs +4 -0
  448. package/fesm2022/primeng-types-overlay.mjs.map +1 -0
  449. package/fesm2022/primeng-types-overlaybadge.mjs +4 -0
  450. package/fesm2022/primeng-types-overlaybadge.mjs.map +1 -0
  451. package/fesm2022/primeng-types-paginator.mjs +4 -0
  452. package/fesm2022/primeng-types-paginator.mjs.map +1 -0
  453. package/fesm2022/primeng-types-panel.mjs +4 -0
  454. package/fesm2022/primeng-types-panel.mjs.map +1 -0
  455. package/fesm2022/primeng-types-panelmenu.mjs +4 -0
  456. package/fesm2022/primeng-types-panelmenu.mjs.map +1 -0
  457. package/fesm2022/primeng-types-password.mjs +4 -0
  458. package/fesm2022/primeng-types-password.mjs.map +1 -0
  459. package/fesm2022/primeng-types-picklist.mjs +4 -0
  460. package/fesm2022/primeng-types-picklist.mjs.map +1 -0
  461. package/fesm2022/primeng-types-popover.mjs +4 -0
  462. package/fesm2022/primeng-types-popover.mjs.map +1 -0
  463. package/fesm2022/primeng-types-progressbar.mjs +4 -0
  464. package/fesm2022/primeng-types-progressbar.mjs.map +1 -0
  465. package/fesm2022/primeng-types-progressspinner.mjs +4 -0
  466. package/fesm2022/primeng-types-progressspinner.mjs.map +1 -0
  467. package/fesm2022/primeng-types-radiobutton.mjs +4 -0
  468. package/fesm2022/primeng-types-radiobutton.mjs.map +1 -0
  469. package/fesm2022/primeng-types-rating.mjs +4 -0
  470. package/fesm2022/primeng-types-rating.mjs.map +1 -0
  471. package/fesm2022/primeng-types-scroller.mjs +4 -0
  472. package/fesm2022/primeng-types-scroller.mjs.map +1 -0
  473. package/fesm2022/primeng-types-scrollpanel.mjs +4 -0
  474. package/fesm2022/primeng-types-scrollpanel.mjs.map +1 -0
  475. package/fesm2022/primeng-types-scrolltop.mjs +4 -0
  476. package/fesm2022/primeng-types-scrolltop.mjs.map +1 -0
  477. package/fesm2022/primeng-types-select.mjs +4 -0
  478. package/fesm2022/primeng-types-select.mjs.map +1 -0
  479. package/fesm2022/primeng-types-selectbutton.mjs +4 -0
  480. package/fesm2022/primeng-types-selectbutton.mjs.map +1 -0
  481. package/fesm2022/primeng-types-skeleton.mjs +4 -0
  482. package/fesm2022/primeng-types-skeleton.mjs.map +1 -0
  483. package/fesm2022/primeng-types-slider.mjs +4 -0
  484. package/fesm2022/primeng-types-slider.mjs.map +1 -0
  485. package/fesm2022/primeng-types-speeddial.mjs +4 -0
  486. package/fesm2022/primeng-types-speeddial.mjs.map +1 -0
  487. package/fesm2022/primeng-types-splitbutton.mjs +4 -0
  488. package/fesm2022/primeng-types-splitbutton.mjs.map +1 -0
  489. package/fesm2022/primeng-types-splitter.mjs +4 -0
  490. package/fesm2022/primeng-types-splitter.mjs.map +1 -0
  491. package/fesm2022/primeng-types-stepper.mjs +4 -0
  492. package/fesm2022/primeng-types-stepper.mjs.map +1 -0
  493. package/fesm2022/primeng-types-table.mjs +4 -0
  494. package/fesm2022/primeng-types-table.mjs.map +1 -0
  495. package/fesm2022/primeng-types-tabs.mjs +4 -0
  496. package/fesm2022/primeng-types-tabs.mjs.map +1 -0
  497. package/fesm2022/primeng-types-tag.mjs +4 -0
  498. package/fesm2022/primeng-types-tag.mjs.map +1 -0
  499. package/fesm2022/primeng-types-terminal.mjs +4 -0
  500. package/fesm2022/primeng-types-terminal.mjs.map +1 -0
  501. package/fesm2022/primeng-types-textarea.mjs +4 -0
  502. package/fesm2022/primeng-types-textarea.mjs.map +1 -0
  503. package/fesm2022/primeng-types-tieredmenu.mjs +4 -0
  504. package/fesm2022/primeng-types-tieredmenu.mjs.map +1 -0
  505. package/fesm2022/primeng-types-timeline.mjs +4 -0
  506. package/fesm2022/primeng-types-timeline.mjs.map +1 -0
  507. package/fesm2022/primeng-types-toast.mjs +4 -0
  508. package/fesm2022/primeng-types-toast.mjs.map +1 -0
  509. package/fesm2022/primeng-types-togglebutton.mjs +4 -0
  510. package/fesm2022/primeng-types-togglebutton.mjs.map +1 -0
  511. package/fesm2022/primeng-types-toggleswitch.mjs +4 -0
  512. package/fesm2022/primeng-types-toggleswitch.mjs.map +1 -0
  513. package/fesm2022/primeng-types-toolbar.mjs +4 -0
  514. package/fesm2022/primeng-types-toolbar.mjs.map +1 -0
  515. package/fesm2022/primeng-types-tooltip.mjs +4 -0
  516. package/fesm2022/primeng-types-tooltip.mjs.map +1 -0
  517. package/fesm2022/primeng-types-tree.mjs +4 -0
  518. package/fesm2022/primeng-types-tree.mjs.map +1 -0
  519. package/fesm2022/primeng-types-treeselect.mjs +4 -0
  520. package/fesm2022/primeng-types-treeselect.mjs.map +1 -0
  521. package/fesm2022/primeng-types-treetable.mjs +4 -0
  522. package/fesm2022/primeng-types-treetable.mjs.map +1 -0
  523. package/fesm2022/primeng-usestyle.mjs +54 -0
  524. package/fesm2022/primeng-usestyle.mjs.map +1 -0
  525. package/fesm2022/primeng-utils.mjs +332 -0
  526. package/fesm2022/primeng-utils.mjs.map +1 -0
  527. package/fesm2022/primeng.mjs +6 -0
  528. package/fesm2022/primeng.mjs.map +1 -0
  529. package/package.json +1103 -4
  530. package/types/primeng-accordion.d.ts +289 -0
  531. package/types/primeng-animateonscroll.d.ts +70 -0
  532. package/types/primeng-api.d.ts +1976 -0
  533. package/types/primeng-autocomplete.d.ts +793 -0
  534. package/types/primeng-autofocus.d.ts +31 -0
  535. package/types/primeng-avatar.d.ts +140 -0
  536. package/types/primeng-avatargroup.d.ts +66 -0
  537. package/types/primeng-badge.d.ts +184 -0
  538. package/types/primeng-base.d.ts +58 -0
  539. package/types/primeng-basecomponent.d.ts +175 -0
  540. package/types/primeng-baseeditableholder.d.ts +45 -0
  541. package/types/primeng-baseinput.d.ts +73 -0
  542. package/types/primeng-basemodelholder.d.ts +12 -0
  543. package/types/primeng-bind.d.ts +38 -0
  544. package/types/primeng-blockui.d.ts +111 -0
  545. package/types/primeng-breadcrumb.d.ts +149 -0
  546. package/types/primeng-button.d.ts +491 -0
  547. package/types/primeng-buttongroup.d.ts +44 -0
  548. package/types/primeng-card.d.ts +157 -0
  549. package/types/primeng-carousel.d.ts +388 -0
  550. package/types/primeng-cascadeselect.d.ts +628 -0
  551. package/types/primeng-chart.d.ts +135 -0
  552. package/types/primeng-checkbox.d.ts +231 -0
  553. package/types/primeng-chip.d.ts +167 -0
  554. package/types/primeng-classnames.d.ts +32 -0
  555. package/types/primeng-colorpicker.d.ts +317 -0
  556. package/types/primeng-config.d.ts +268 -0
  557. package/types/primeng-confirmdialog.d.ts +360 -0
  558. package/types/primeng-confirmpopup.d.ts +236 -0
  559. package/types/primeng-contextmenu.d.ts +381 -0
  560. package/types/primeng-dataview.d.ts +379 -0
  561. package/types/primeng-datepicker.d.ts +1017 -0
  562. package/types/primeng-dialog.d.ts +555 -0
  563. package/types/primeng-divider.d.ts +122 -0
  564. package/types/primeng-dock.d.ts +195 -0
  565. package/types/primeng-dom.d.ts +109 -0
  566. package/types/primeng-dragdrop.d.ts +121 -0
  567. package/types/primeng-drawer.d.ts +303 -0
  568. package/types/primeng-dynamicdialog.d.ts +554 -0
  569. package/types/primeng-editor.d.ts +191 -0
  570. package/types/primeng-fieldset.d.ts +199 -0
  571. package/types/primeng-fileupload.d.ts +562 -0
  572. package/types/primeng-floatlabel.d.ts +67 -0
  573. package/types/primeng-fluid.d.ts +54 -0
  574. package/types/primeng-focustrap.d.ts +36 -0
  575. package/types/primeng-galleria.d.ts +694 -0
  576. package/types/primeng-iconfield.d.ts +73 -0
  577. package/types/primeng-icons-angledoubledown.d.ts +9 -0
  578. package/types/primeng-icons-angledoubleleft.d.ts +9 -0
  579. package/types/primeng-icons-angledoubleright.d.ts +9 -0
  580. package/types/primeng-icons-angledoubleup.d.ts +9 -0
  581. package/types/primeng-icons-angledown.d.ts +9 -0
  582. package/types/primeng-icons-angleleft.d.ts +9 -0
  583. package/types/primeng-icons-angleright.d.ts +9 -0
  584. package/types/primeng-icons-angleup.d.ts +9 -0
  585. package/types/primeng-icons-arrowdown.d.ts +11 -0
  586. package/types/primeng-icons-arrowdownleft.d.ts +9 -0
  587. package/types/primeng-icons-arrowdownright.d.ts +9 -0
  588. package/types/primeng-icons-arrowleft.d.ts +11 -0
  589. package/types/primeng-icons-arrowright.d.ts +9 -0
  590. package/types/primeng-icons-arrowup.d.ts +11 -0
  591. package/types/primeng-icons-ban.d.ts +11 -0
  592. package/types/primeng-icons-bars.d.ts +9 -0
  593. package/types/primeng-icons-baseicon.d.ts +33 -0
  594. package/types/primeng-icons-blank.d.ts +9 -0
  595. package/types/primeng-icons-calendar.d.ts +9 -0
  596. package/types/primeng-icons-caretleft.d.ts +9 -0
  597. package/types/primeng-icons-caretright.d.ts +9 -0
  598. package/types/primeng-icons-check.d.ts +9 -0
  599. package/types/primeng-icons-chevrondown.d.ts +9 -0
  600. package/types/primeng-icons-chevronleft.d.ts +9 -0
  601. package/types/primeng-icons-chevronright.d.ts +9 -0
  602. package/types/primeng-icons-chevronup.d.ts +9 -0
  603. package/types/primeng-icons-exclamationtriangle.d.ts +11 -0
  604. package/types/primeng-icons-eye.d.ts +9 -0
  605. package/types/primeng-icons-eyeslash.d.ts +11 -0
  606. package/types/primeng-icons-filter.d.ts +11 -0
  607. package/types/primeng-icons-filterfill.d.ts +9 -0
  608. package/types/primeng-icons-filterslash.d.ts +11 -0
  609. package/types/primeng-icons-home.d.ts +11 -0
  610. package/types/primeng-icons-infocircle.d.ts +11 -0
  611. package/types/primeng-icons-minus.d.ts +9 -0
  612. package/types/primeng-icons-pencil.d.ts +11 -0
  613. package/types/primeng-icons-plus.d.ts +11 -0
  614. package/types/primeng-icons-refresh.d.ts +11 -0
  615. package/types/primeng-icons-search.d.ts +11 -0
  616. package/types/primeng-icons-searchminus.d.ts +11 -0
  617. package/types/primeng-icons-searchplus.d.ts +11 -0
  618. package/types/primeng-icons-sortalt.d.ts +11 -0
  619. package/types/primeng-icons-sortamountdown.d.ts +11 -0
  620. package/types/primeng-icons-sortamountupalt.d.ts +11 -0
  621. package/types/primeng-icons-spinner.d.ts +11 -0
  622. package/types/primeng-icons-star.d.ts +11 -0
  623. package/types/primeng-icons-starfill.d.ts +11 -0
  624. package/types/primeng-icons-thlarge.d.ts +11 -0
  625. package/types/primeng-icons-times.d.ts +9 -0
  626. package/types/primeng-icons-timescircle.d.ts +11 -0
  627. package/types/primeng-icons-trash.d.ts +11 -0
  628. package/types/primeng-icons-undo.d.ts +11 -0
  629. package/types/primeng-icons-upload.d.ts +11 -0
  630. package/types/primeng-icons-windowmaximize.d.ts +11 -0
  631. package/types/primeng-icons-windowminimize.d.ts +11 -0
  632. package/types/primeng-icons.d.ts +53 -0
  633. package/types/primeng-iftalabel.d.ts +58 -0
  634. package/types/primeng-image.d.ts +349 -0
  635. package/types/primeng-imagecompare.d.ts +100 -0
  636. package/types/primeng-inplace.d.ts +171 -0
  637. package/types/primeng-inputgroup.d.ts +65 -0
  638. package/types/primeng-inputgroupaddon.d.ts +52 -0
  639. package/types/primeng-inputicon.d.ts +44 -0
  640. package/types/primeng-inputmask.d.ts +381 -0
  641. package/types/primeng-inputnumber.d.ts +436 -0
  642. package/types/primeng-inputotp.d.ts +179 -0
  643. package/types/primeng-inputtext.d.ts +117 -0
  644. package/types/primeng-keyfilter.d.ts +61 -0
  645. package/types/primeng-knob.d.ts +213 -0
  646. package/types/primeng-listbox.d.ts +675 -0
  647. package/types/primeng-megamenu.d.ts +392 -0
  648. package/types/primeng-menu.d.ts +364 -0
  649. package/types/primeng-menubar.d.ts +392 -0
  650. package/types/primeng-message.d.ts +213 -0
  651. package/types/primeng-metergroup.d.ts +209 -0
  652. package/types/primeng-motion.d.ts +398 -0
  653. package/types/primeng-multiselect.d.ts +903 -0
  654. package/types/primeng-orderlist.d.ts +375 -0
  655. package/types/primeng-organizationchart.d.ts +236 -0
  656. package/types/primeng-overlay.d.ts +355 -0
  657. package/types/primeng-overlaybadge.d.ts +80 -0
  658. package/types/primeng-paginator.d.ts +363 -0
  659. package/types/primeng-panel.d.ts +257 -0
  660. package/types/primeng-panelmenu.d.ts +367 -0
  661. package/types/primeng-passthrough.d.ts +14 -0
  662. package/types/primeng-password.d.ts +494 -0
  663. package/types/primeng-picklist.d.ts +669 -0
  664. package/types/primeng-popover.d.ts +202 -0
  665. package/types/primeng-progressbar.d.ts +124 -0
  666. package/types/primeng-progressspinner.d.ts +92 -0
  667. package/types/primeng-radiobutton.d.ts +193 -0
  668. package/types/primeng-rating.d.ts +196 -0
  669. package/types/primeng-ripple.d.ts +63 -0
  670. package/types/primeng-scroller.d.ts +452 -0
  671. package/types/primeng-scrollpanel.d.ts +157 -0
  672. package/types/primeng-scrolltop.d.ts +159 -0
  673. package/types/primeng-select.d.ts +792 -0
  674. package/types/primeng-selectbutton.d.ts +186 -0
  675. package/types/primeng-skeleton.d.ts +104 -0
  676. package/types/primeng-slider.d.ts +224 -0
  677. package/types/primeng-speeddial.d.ts +420 -0
  678. package/types/primeng-splitbutton.d.ts +294 -0
  679. package/types/primeng-splitter.d.ts +212 -0
  680. package/types/primeng-stepper.d.ts +337 -0
  681. package/types/primeng-steps.d.ts +153 -0
  682. package/types/primeng-styleclass.d.ts +115 -0
  683. package/types/primeng-table.d.ts +2089 -0
  684. package/types/primeng-tabs.d.ts +360 -0
  685. package/types/primeng-tag.d.ts +115 -0
  686. package/types/primeng-terminal.d.ts +141 -0
  687. package/types/primeng-textarea.d.ts +127 -0
  688. package/types/primeng-tieredmenu.d.ts +432 -0
  689. package/types/primeng-timeline.d.ts +141 -0
  690. package/types/primeng-toast.d.ts +303 -0
  691. package/types/primeng-togglebutton.d.ts +205 -0
  692. package/types/primeng-toggleswitch.d.ts +168 -0
  693. package/types/primeng-toolbar.d.ts +106 -0
  694. package/types/primeng-tooltip.d.ts +286 -0
  695. package/types/primeng-tree.d.ts +668 -0
  696. package/types/primeng-treeselect.d.ts +575 -0
  697. package/types/primeng-treetable.d.ts +1278 -0
  698. package/types/primeng-ts-helpers.d.ts +6 -0
  699. package/types/primeng-types-accordion.d.ts +97 -0
  700. package/types/primeng-types-autocomplete.d.ts +312 -0
  701. package/types/primeng-types-avatar.d.ts +40 -0
  702. package/types/primeng-types-avatargroup.d.ts +28 -0
  703. package/types/primeng-types-badge.d.ts +26 -0
  704. package/types/primeng-types-blockui.d.ts +39 -0
  705. package/types/primeng-types-breadcrumb.d.ts +96 -0
  706. package/types/primeng-types-button.d.ts +124 -0
  707. package/types/primeng-types-card.d.ts +75 -0
  708. package/types/primeng-types-carousel.d.ts +143 -0
  709. package/types/primeng-types-cascadeselect.d.ts +215 -0
  710. package/types/primeng-types-chart.d.ts +32 -0
  711. package/types/primeng-types-checkbox.d.ts +81 -0
  712. package/types/primeng-types-chip.d.ts +71 -0
  713. package/types/primeng-types-colorpicker.d.ts +78 -0
  714. package/types/primeng-types-confirmdialog.d.ts +147 -0
  715. package/types/primeng-types-confirmpopup.d.ts +105 -0
  716. package/types/primeng-types-contextmenu.d.ts +102 -0
  717. package/types/primeng-types-dataview.d.ts +253 -0
  718. package/types/primeng-types-datepicker.d.ts +521 -0
  719. package/types/primeng-types-dialog.d.ts +107 -0
  720. package/types/primeng-types-divider.d.ts +28 -0
  721. package/types/primeng-types-dock.d.ts +70 -0
  722. package/types/primeng-types-drawer.d.ts +82 -0
  723. package/types/primeng-types-editor.d.ts +210 -0
  724. package/types/primeng-types-fieldset.d.ts +101 -0
  725. package/types/primeng-types-fileupload.d.ts +360 -0
  726. package/types/primeng-types-floatlabel.d.ts +26 -0
  727. package/types/primeng-types-fluid.d.ts +28 -0
  728. package/types/primeng-types-galleria.d.ts +250 -0
  729. package/types/primeng-types-iconfield.d.ts +26 -0
  730. package/types/primeng-types-iftalabel.d.ts +26 -0
  731. package/types/primeng-types-image.d.ts +144 -0
  732. package/types/primeng-types-imagecompare.d.ts +43 -0
  733. package/types/primeng-types-inplace.d.ts +72 -0
  734. package/types/primeng-types-inputgroup.d.ts +28 -0
  735. package/types/primeng-types-inputgroupaddon.d.ts +28 -0
  736. package/types/primeng-types-inputicon.d.ts +26 -0
  737. package/types/primeng-types-inputmask.d.ts +56 -0
  738. package/types/primeng-types-inputnumber.d.ts +95 -0
  739. package/types/primeng-types-inputotp.d.ts +101 -0
  740. package/types/primeng-types-inputtext.d.ts +24 -0
  741. package/types/primeng-types-knob.d.ts +40 -0
  742. package/types/primeng-types-listbox.d.ts +359 -0
  743. package/types/primeng-types-megamenu.d.ts +138 -0
  744. package/types/primeng-types-menu.d.ts +114 -0
  745. package/types/primeng-types-menubar.d.ts +124 -0
  746. package/types/primeng-types-message.d.ts +87 -0
  747. package/types/primeng-types-metergroup.d.ts +176 -0
  748. package/types/primeng-types-motion.d.ts +26 -0
  749. package/types/primeng-types-multiselect.d.ts +414 -0
  750. package/types/primeng-types-orderlist.d.ts +173 -0
  751. package/types/primeng-types-organizationchart.d.ts +138 -0
  752. package/types/primeng-types-overlay.d.ts +60 -0
  753. package/types/primeng-types-overlaybadge.d.ts +34 -0
  754. package/types/primeng-types-paginator.d.ts +167 -0
  755. package/types/primeng-types-panel.d.ts +129 -0
  756. package/types/primeng-types-panelmenu.d.ts +131 -0
  757. package/types/primeng-types-password.d.ts +120 -0
  758. package/types/primeng-types-picklist.d.ts +348 -0
  759. package/types/primeng-types-popover.d.ts +59 -0
  760. package/types/primeng-types-progressbar.d.ts +58 -0
  761. package/types/primeng-types-progressspinner.d.ts +36 -0
  762. package/types/primeng-types-radiobutton.d.ts +51 -0
  763. package/types/primeng-types-rating.d.ts +94 -0
  764. package/types/primeng-types-scroller.d.ts +231 -0
  765. package/types/primeng-types-scrollpanel.d.ts +51 -0
  766. package/types/primeng-types-scrolltop.d.ts +61 -0
  767. package/types/primeng-types-select.d.ts +319 -0
  768. package/types/primeng-types-selectbutton.d.ts +92 -0
  769. package/types/primeng-types-skeleton.d.ts +28 -0
  770. package/types/primeng-types-slider.d.ts +78 -0
  771. package/types/primeng-types-speeddial.d.ts +100 -0
  772. package/types/primeng-types-splitbutton.d.ts +70 -0
  773. package/types/primeng-types-splitter.d.ts +70 -0
  774. package/types/primeng-types-stepper.d.ts +162 -0
  775. package/types/primeng-types-table.d.ts +893 -0
  776. package/types/primeng-types-tabs.d.ts +119 -0
  777. package/types/primeng-types-tag.d.ts +47 -0
  778. package/types/primeng-types-terminal.d.ts +60 -0
  779. package/types/primeng-types-textarea.d.ts +28 -0
  780. package/types/primeng-types-tieredmenu.d.ts +95 -0
  781. package/types/primeng-types-timeline.d.ts +85 -0
  782. package/types/primeng-types-toast.d.ts +131 -0
  783. package/types/primeng-types-togglebutton.d.ts +86 -0
  784. package/types/primeng-types-toggleswitch.d.ts +73 -0
  785. package/types/primeng-types-toolbar.d.ts +55 -0
  786. package/types/primeng-types-tooltip.d.ts +32 -0
  787. package/types/primeng-types-tree.d.ts +342 -0
  788. package/types/primeng-types-treeselect.d.ts +251 -0
  789. package/types/primeng-types-treetable.d.ts +629 -0
  790. package/types/primeng-usestyle.d.ts +15 -0
  791. package/types/primeng-utils.d.ts +43 -0
  792. package/types/primeng.d.ts +2 -0
@@ -0,0 +1,4439 @@
1
+ export * from 'primeng/types/datepicker';
2
+ import * as i3 from '@angular/common';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i0 from '@angular/core';
5
+ import { Injectable, forwardRef, InjectionToken, inject, input, computed, EventEmitter, numberAttribute, booleanAttribute, ContentChildren, ContentChild, ViewChild, Output, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
6
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
+ import { uuid, getOuterWidth, isDate, findSingle, getFocusableElements, hasClass, getIndex, find, isNotEmpty, addStyle, appendChild, absolutePosition, relativePosition, addClass, setAttribute, isTouchDevice } from '@primeuix/utils';
8
+ import * as i1 from 'primeng/api';
9
+ import { TranslationKeys, SharedModule, PrimeTemplate } from 'primeng/api';
10
+ import { AutoFocus } from 'primeng/autofocus';
11
+ import { PARENT_INSTANCE } from 'primeng/basecomponent';
12
+ import { BaseInput } from 'primeng/baseinput';
13
+ import * as i2 from 'primeng/bind';
14
+ import { Bind, BindModule } from 'primeng/bind';
15
+ import { Button } from 'primeng/button';
16
+ import { blockBodyScroll, unblockBodyScroll, ConnectedOverlayScrollHandler } from 'primeng/dom';
17
+ import { ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, TimesIcon, CalendarIcon } from 'primeng/icons';
18
+ import { InputText } from 'primeng/inputtext';
19
+ import * as i4 from 'primeng/motion';
20
+ import { MotionModule } from 'primeng/motion';
21
+ import { Ripple } from 'primeng/ripple';
22
+ import { ZIndexUtils } from 'primeng/utils';
23
+ import { style as style$1 } from '@primeuix/styles/datepicker';
24
+ import { BaseStyle } from 'primeng/base';
25
+
26
+ const style = /*css*/ `
27
+ ${style$1}
28
+
29
+ /* For PrimeNG */
30
+ .p-datepicker.ng-invalid.ng-dirty .p-inputtext {
31
+ border-color: dt('inputtext.invalid.border.color');
32
+ }
33
+ `;
34
+ const inlineStyles = {
35
+ root: () => ({ position: 'relative' })
36
+ };
37
+ const classes = {
38
+ root: ({ instance }) => [
39
+ 'p-datepicker p-component p-inputwrapper',
40
+ {
41
+ 'p-invalid': instance.invalid(),
42
+ 'p-datepicker-fluid': instance.hasFluid,
43
+ 'p-inputwrapper-filled': instance.$filled(),
44
+ 'p-variant-filled': instance.$variant() === 'filled',
45
+ 'p-inputwrapper-focus': instance.focus || instance.overlayVisible,
46
+ 'p-focus': instance.focus || instance.overlayVisible
47
+ }
48
+ ],
49
+ pcInputText: 'p-datepicker-input',
50
+ dropdown: 'p-datepicker-dropdown',
51
+ inputIconContainer: 'p-datepicker-input-icon-container',
52
+ inputIcon: 'p-datepicker-input-icon',
53
+ panel: ({ instance }) => [
54
+ 'p-datepicker-panel p-component',
55
+ {
56
+ 'p-datepicker-panel p-component': true,
57
+ 'p-datepicker-panel-inline': instance.inline,
58
+ 'p-disabled': instance.$disabled(),
59
+ 'p-datepicker-timeonly': instance.timeOnly
60
+ }
61
+ ],
62
+ calendarContainer: 'p-datepicker-calendar-container',
63
+ calendar: 'p-datepicker-calendar',
64
+ header: 'p-datepicker-header',
65
+ pcPrevButton: 'p-datepicker-prev-button',
66
+ title: 'p-datepicker-title',
67
+ selectMonth: 'p-datepicker-select-month',
68
+ selectYear: 'p-datepicker-select-year',
69
+ decade: 'p-datepicker-decade',
70
+ pcNextButton: 'p-datepicker-next-button',
71
+ dayView: 'p-datepicker-day-view',
72
+ weekHeader: 'p-datepicker-weekheader p-disabled',
73
+ weekNumber: 'p-datepicker-weeknumber',
74
+ weekLabelContainer: 'p-datepicker-weeklabel-container p-disabled',
75
+ weekDayCell: 'p-datepicker-weekday-cell',
76
+ weekDay: 'p-datepicker-weekday',
77
+ dayCell: ({ date }) => [
78
+ 'p-datepicker-day-cell',
79
+ {
80
+ 'p-datepicker-other-month': date.otherMonth,
81
+ 'p-datepicker-today': date.today
82
+ }
83
+ ],
84
+ day: ({ instance, date }) => {
85
+ let selectedDayClass = '';
86
+ if (instance.isRangeSelection() && instance.isSelected(date) && date.selectable) {
87
+ const startDate = instance.value[0];
88
+ const endDate = instance.value[1];
89
+ const isStart = startDate && date.year === startDate.getFullYear() && date.month === startDate.getMonth() && date.day === startDate.getDate();
90
+ const isEnd = endDate && date.year === endDate.getFullYear() && date.month === endDate.getMonth() && date.day === endDate.getDate();
91
+ selectedDayClass = isStart || isEnd ? 'p-datepicker-day-selected' : 'p-datepicker-day-selected-range';
92
+ }
93
+ return {
94
+ 'p-datepicker-day': true,
95
+ 'p-datepicker-day-selected': !instance.isRangeSelection() && instance.isSelected(date) && date.selectable,
96
+ 'p-disabled': instance.$disabled() || !date.selectable,
97
+ [selectedDayClass]: true
98
+ };
99
+ },
100
+ monthView: 'p-datepicker-month-view',
101
+ month: ({ instance, index }) => [
102
+ 'p-datepicker-month',
103
+ {
104
+ 'p-datepicker-month-selected': instance.isMonthSelected(index),
105
+ 'p-disabled': instance.isMonthDisabled(index)
106
+ }
107
+ ],
108
+ yearView: 'p-datepicker-year-view',
109
+ year: ({ instance, year }) => [
110
+ 'p-datepicker-year',
111
+ {
112
+ 'p-datepicker-year-selected': instance.isYearSelected(year),
113
+ 'p-disabled': instance.isYearDisabled(year)
114
+ }
115
+ ],
116
+ timePicker: 'p-datepicker-time-picker',
117
+ hourPicker: 'p-datepicker-hour-picker',
118
+ pcIncrementButton: 'p-datepicker-increment-button',
119
+ pcDecrementButton: 'p-datepicker-decrement-button',
120
+ separator: 'p-datepicker-separator',
121
+ minutePicker: 'p-datepicker-minute-picker',
122
+ secondPicker: 'p-datepicker-second-picker',
123
+ ampmPicker: 'p-datepicker-ampm-picker',
124
+ buttonbar: 'p-datepicker-buttonbar',
125
+ pcTodayButton: 'p-datepicker-today-button',
126
+ pcClearButton: 'p-datepicker-clear-button',
127
+ clearIcon: 'p-datepicker-clear-icon'
128
+ };
129
+ class DatePickerStyle extends BaseStyle {
130
+ name = 'datepicker';
131
+ style = style;
132
+ classes = classes;
133
+ inlineStyles = inlineStyles;
134
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
135
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerStyle });
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerStyle, decorators: [{
138
+ type: Injectable
139
+ }] });
140
+ /**
141
+ *
142
+ * DatePicker is a form component to work with dates.
143
+ *
144
+ * [Live Demo](https://www.primeng.org/datepicker/)
145
+ *
146
+ * @module datepickerstyle
147
+ *
148
+ */
149
+ var DatePickerClasses;
150
+ (function (DatePickerClasses) {
151
+ /**
152
+ * Class name of the root element
153
+ */
154
+ DatePickerClasses["root"] = "p-datepicker";
155
+ /**
156
+ * Class name of the input element
157
+ */
158
+ DatePickerClasses["pcInputText"] = "p-datepicker-input";
159
+ /**
160
+ * Class name of the dropdown element
161
+ */
162
+ DatePickerClasses["dropdown"] = "p-datepicker-dropdown";
163
+ /**
164
+ * Class name of the input icon container element
165
+ */
166
+ DatePickerClasses["inputIconContainer"] = "p-datepicker-input-icon-container";
167
+ /**
168
+ * Class name of the input icon element
169
+ */
170
+ DatePickerClasses["inputIcon"] = "p-datepicker-input-icon";
171
+ /**
172
+ * Class name of the panel element
173
+ */
174
+ DatePickerClasses["panel"] = "p-datepicker-panel";
175
+ /**
176
+ * Class name of the calendar container element
177
+ */
178
+ DatePickerClasses["calendarContainer"] = "p-datepicker-calendar-container";
179
+ /**
180
+ * Class name of the calendar element
181
+ */
182
+ DatePickerClasses["calendar"] = "p-datepicker-calendar";
183
+ /**
184
+ * Class name of the header element
185
+ */
186
+ DatePickerClasses["header"] = "p-datepicker-header";
187
+ /**
188
+ * Class name of the previous button element
189
+ */
190
+ DatePickerClasses["pcPrevButton"] = "p-datepicker-prev-button";
191
+ /**
192
+ * Class name of the title element
193
+ */
194
+ DatePickerClasses["title"] = "p-datepicker-title";
195
+ /**
196
+ * Class name of the select month element
197
+ */
198
+ DatePickerClasses["selectMonth"] = "p-datepicker-select-month";
199
+ /**
200
+ * Class name of the select year element
201
+ */
202
+ DatePickerClasses["selectYear"] = "p-datepicker-select-year";
203
+ /**
204
+ * Class name of the decade element
205
+ */
206
+ DatePickerClasses["decade"] = "p-datepicker-decade";
207
+ /**
208
+ * Class name of the next button element
209
+ */
210
+ DatePickerClasses["pcNextButton"] = "p-datepicker-next-button";
211
+ /**
212
+ * Class name of the day view element
213
+ */
214
+ DatePickerClasses["dayView"] = "p-datepicker-day-view";
215
+ /**
216
+ * Class name of the week header element
217
+ */
218
+ DatePickerClasses["weekHeader"] = "p-datepicker-weekheader";
219
+ /**
220
+ * Class name of the week number element
221
+ */
222
+ DatePickerClasses["weekNumber"] = "p-datepicker-weeknumber";
223
+ /**
224
+ * Class name of the week label container element
225
+ */
226
+ DatePickerClasses["weekLabelContainer"] = "p-datepicker-weeklabel-container";
227
+ /**
228
+ * Class name of the week day cell element
229
+ */
230
+ DatePickerClasses["weekDayCell"] = "p-datepicker-weekday-cell";
231
+ /**
232
+ * Class name of the week day element
233
+ */
234
+ DatePickerClasses["weekDay"] = "p-datepicker-weekday";
235
+ /**
236
+ * Class name of the day cell element
237
+ */
238
+ DatePickerClasses["dayCell"] = "p-datepicker-day-cell";
239
+ /**
240
+ * Class name of the day element
241
+ */
242
+ DatePickerClasses["day"] = "p-datepicker-day";
243
+ /**
244
+ * Class name of the month view element
245
+ */
246
+ DatePickerClasses["monthView"] = "p-datepicker-month-view";
247
+ /**
248
+ * Class name of the month element
249
+ */
250
+ DatePickerClasses["month"] = "p-datepicker-month";
251
+ /**
252
+ * Class name of the year view element
253
+ */
254
+ DatePickerClasses["yearView"] = "p-datepicker-year-view";
255
+ /**
256
+ * Class name of the year element
257
+ */
258
+ DatePickerClasses["year"] = "p-datepicker-year";
259
+ /**
260
+ * Class name of the time picker element
261
+ */
262
+ DatePickerClasses["timePicker"] = "p-datepicker-time-picker";
263
+ /**
264
+ * Class name of the hour picker element
265
+ */
266
+ DatePickerClasses["hourPicker"] = "p-datepicker-hour-picker";
267
+ /**
268
+ * Class name of the increment button element
269
+ */
270
+ DatePickerClasses["pcIncrementButton"] = "p-datepicker-increment-button";
271
+ /**
272
+ * Class name of the decrement button element
273
+ */
274
+ DatePickerClasses["pcDecrementButton"] = "p-datepicker-decrement-button";
275
+ /**
276
+ * Class name of the separator element
277
+ */
278
+ DatePickerClasses["separator"] = "p-datepicker-separator";
279
+ /**
280
+ * Class name of the minute picker element
281
+ */
282
+ DatePickerClasses["minutePicker"] = "p-datepicker-minute-picker";
283
+ /**
284
+ * Class name of the second picker element
285
+ */
286
+ DatePickerClasses["secondPicker"] = "p-datepicker-second-picker";
287
+ /**
288
+ * Class name of the ampm picker element
289
+ */
290
+ DatePickerClasses["ampmPicker"] = "p-datepicker-ampm-picker";
291
+ /**
292
+ * Class name of the buttonbar element
293
+ */
294
+ DatePickerClasses["buttonbar"] = "p-datepicker-buttonbar";
295
+ /**
296
+ * Class name of the today button element
297
+ */
298
+ DatePickerClasses["pcTodayButton"] = "p-datepicker-today-button";
299
+ /**
300
+ * Class name of the clear button element
301
+ */
302
+ DatePickerClasses["pcClearButton"] = "p-datepicker-clear-button";
303
+ /**
304
+ * Class name of the clear icon
305
+ */
306
+ DatePickerClasses["clearIcon"] = "p-datepicker-clear-icon";
307
+ })(DatePickerClasses || (DatePickerClasses = {}));
308
+
309
+ const DATEPICKER_VALUE_ACCESSOR = {
310
+ provide: NG_VALUE_ACCESSOR,
311
+ useExisting: forwardRef(() => DatePicker),
312
+ multi: true
313
+ };
314
+ const DATEPICKER_INSTANCE = new InjectionToken('DATEPICKER_INSTANCE');
315
+ /**
316
+ * DatePicker is a form component to work with dates.
317
+ * @group Components
318
+ */
319
+ class DatePicker extends BaseInput {
320
+ zone;
321
+ overlayService;
322
+ componentName = 'DatePicker';
323
+ bindDirectiveInstance = inject(Bind, { self: true });
324
+ $pcDatePicker = inject(DATEPICKER_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;
325
+ iconDisplay = 'button';
326
+ /**
327
+ * Style class of the component.
328
+ * @deprecated since v20.0.0, use `class` instead.
329
+ * @group Props
330
+ */
331
+ styleClass;
332
+ /**
333
+ * Inline style of the input field.
334
+ * @group Props
335
+ */
336
+ inputStyle;
337
+ /**
338
+ * Identifier of the focus input to match a label defined for the component.
339
+ * @group Props
340
+ */
341
+ inputId;
342
+ /**
343
+ * Style class of the input field.
344
+ * @group Props
345
+ */
346
+ inputStyleClass;
347
+ /**
348
+ * Placeholder text for the input.
349
+ * @group Props
350
+ */
351
+ placeholder;
352
+ /**
353
+ * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
354
+ * @group Props
355
+ */
356
+ ariaLabelledBy;
357
+ /**
358
+ * Defines a string that labels the input for accessibility.
359
+ * @group Props
360
+ */
361
+ ariaLabel;
362
+ /**
363
+ * Defines a string that labels the icon button for accessibility.
364
+ * @group Props
365
+ */
366
+ iconAriaLabel;
367
+ /**
368
+ * Format of the date which can also be defined at locale settings.
369
+ * @group Props
370
+ */
371
+ get dateFormat() {
372
+ return this._dateFormat;
373
+ }
374
+ set dateFormat(value) {
375
+ this._dateFormat = value;
376
+ if (this.initialized) {
377
+ this.updateInputfield();
378
+ }
379
+ }
380
+ /**
381
+ * Separator for multiple selection mode.
382
+ * @group Props
383
+ */
384
+ multipleSeparator = ',';
385
+ /**
386
+ * Separator for joining start and end dates on range selection mode.
387
+ * @group Props
388
+ */
389
+ rangeSeparator = '-';
390
+ /**
391
+ * When enabled, displays the datepicker as inline. Default is false for popup mode.
392
+ * @group Props
393
+ */
394
+ inline = false;
395
+ /**
396
+ * Whether to display dates in other months (non-selectable) at the start or end of the current month. To make these days selectable use the selectOtherMonths option.
397
+ * @group Props
398
+ */
399
+ showOtherMonths = true;
400
+ /**
401
+ * Whether days in other months shown before or after the current month are selectable. This only applies if the showOtherMonths option is set to true.
402
+ * @group Props
403
+ */
404
+ selectOtherMonths;
405
+ /**
406
+ * When enabled, displays a button with icon next to input.
407
+ * @group Props
408
+ */
409
+ showIcon;
410
+ /**
411
+ * Icon of the datepicker button.
412
+ * @group Props
413
+ */
414
+ icon;
415
+ /**
416
+ * When specified, prevents entering the date manually with keyboard.
417
+ * @group Props
418
+ */
419
+ readonlyInput;
420
+ /**
421
+ * The cutoff year for determining the century for a date.
422
+ * @group Props
423
+ */
424
+ shortYearCutoff = '+10';
425
+ /**
426
+ * Specifies 12 or 24 hour format.
427
+ * @group Props
428
+ */
429
+ get hourFormat() {
430
+ return this._hourFormat;
431
+ }
432
+ set hourFormat(value) {
433
+ this._hourFormat = value;
434
+ if (this.initialized) {
435
+ this.updateInputfield();
436
+ }
437
+ }
438
+ /**
439
+ * Whether to display timepicker only.
440
+ * @group Props
441
+ */
442
+ timeOnly;
443
+ /**
444
+ * Hours to change per step.
445
+ * @group Props
446
+ */
447
+ stepHour = 1;
448
+ /**
449
+ * Minutes to change per step.
450
+ * @group Props
451
+ */
452
+ stepMinute = 1;
453
+ /**
454
+ * Seconds to change per step.
455
+ * @group Props
456
+ */
457
+ stepSecond = 1;
458
+ /**
459
+ * Whether to show the seconds in time picker.
460
+ * @group Props
461
+ */
462
+ showSeconds = false;
463
+ /**
464
+ * When disabled, datepicker will not be visible with input focus.
465
+ * @group Props
466
+ */
467
+ showOnFocus = true;
468
+ /**
469
+ * When enabled, datepicker will show week numbers.
470
+ * @group Props
471
+ */
472
+ showWeek = false;
473
+ /**
474
+ * When enabled, datepicker will start week numbers from first day of the year.
475
+ * @group Props
476
+ */
477
+ startWeekFromFirstDayOfYear = false;
478
+ /**
479
+ * When enabled, a clear icon is displayed to clear the value.
480
+ * @group Props
481
+ */
482
+ showClear = false;
483
+ /**
484
+ * Type of the value to write back to ngModel, default is date and alternative is string.
485
+ * @group Props
486
+ */
487
+ dataType = 'date';
488
+ /**
489
+ * Defines the quantity of the selection, valid values are "single", "multiple" and "range".
490
+ * @group Props
491
+ */
492
+ selectionMode = 'single';
493
+ /**
494
+ * Maximum number of selectable dates in multiple mode.
495
+ * @group Props
496
+ */
497
+ maxDateCount;
498
+ /**
499
+ * Whether to display today and clear buttons at the footer
500
+ * @group Props
501
+ */
502
+ showButtonBar;
503
+ /**
504
+ * Style class of the today button.
505
+ * @group Props
506
+ */
507
+ todayButtonStyleClass;
508
+ /**
509
+ * Style class of the clear button.
510
+ * @group Props
511
+ */
512
+ clearButtonStyleClass;
513
+ /**
514
+ * When present, it specifies that the component should automatically get focus on load.
515
+ * @group Props
516
+ */
517
+ autofocus;
518
+ /**
519
+ * Whether to automatically manage layering.
520
+ * @group Props
521
+ */
522
+ autoZIndex = true;
523
+ /**
524
+ * Base zIndex value to use in layering.
525
+ * @group Props
526
+ */
527
+ baseZIndex = 0;
528
+ /**
529
+ * Style class of the datetimepicker container element.
530
+ * @group Props
531
+ */
532
+ panelStyleClass;
533
+ /**
534
+ * Inline style of the datetimepicker container element.
535
+ * @group Props
536
+ */
537
+ panelStyle;
538
+ /**
539
+ * Keep invalid value when input blur.
540
+ * @group Props
541
+ */
542
+ keepInvalid = false;
543
+ /**
544
+ * Whether to hide the overlay on date selection.
545
+ * @group Props
546
+ */
547
+ hideOnDateTimeSelect = true;
548
+ /**
549
+ * When enabled, datepicker overlay is displayed as optimized for touch devices.
550
+ * @group Props
551
+ */
552
+ touchUI;
553
+ /**
554
+ * Separator of time selector.
555
+ * @group Props
556
+ */
557
+ timeSeparator = ':';
558
+ /**
559
+ * When enabled, can only focus on elements inside the datepicker.
560
+ * @group Props
561
+ */
562
+ focusTrap = true;
563
+ /**
564
+ * Transition options of the show animation.
565
+ * @group Props
566
+ * @deprecated since v21.0.0, use `motionOptions` instead.
567
+ */
568
+ showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
569
+ /**
570
+ * Transition options of the hide animation.
571
+ * @group Props
572
+ * @deprecated since v21.0.0, use `motionOptions` instead.
573
+ */
574
+ hideTransitionOptions = '.1s linear';
575
+ /**
576
+ * Index of the element in tabbing order.
577
+ * @group Props
578
+ */
579
+ tabindex;
580
+ /**
581
+ * The minimum selectable date.
582
+ * @group Props
583
+ */
584
+ get minDate() {
585
+ return this._minDate;
586
+ }
587
+ set minDate(date) {
588
+ this._minDate = date;
589
+ if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
590
+ this.createMonths(this.currentMonth, this.currentYear);
591
+ }
592
+ }
593
+ /**
594
+ * The maximum selectable date.
595
+ * @group Props
596
+ */
597
+ get maxDate() {
598
+ return this._maxDate;
599
+ }
600
+ set maxDate(date) {
601
+ this._maxDate = date;
602
+ if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
603
+ this.createMonths(this.currentMonth, this.currentYear);
604
+ }
605
+ }
606
+ /**
607
+ * Array with dates that should be disabled (not selectable).
608
+ * @group Props
609
+ */
610
+ get disabledDates() {
611
+ return this._disabledDates;
612
+ }
613
+ set disabledDates(disabledDates) {
614
+ this._disabledDates = disabledDates;
615
+ if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
616
+ this.createMonths(this.currentMonth, this.currentYear);
617
+ }
618
+ }
619
+ /**
620
+ * Array with weekday numbers that should be disabled (not selectable).
621
+ * @group Props
622
+ */
623
+ get disabledDays() {
624
+ return this._disabledDays;
625
+ }
626
+ set disabledDays(disabledDays) {
627
+ this._disabledDays = disabledDays;
628
+ if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
629
+ this.createMonths(this.currentMonth, this.currentYear);
630
+ }
631
+ }
632
+ /**
633
+ * Whether to display timepicker.
634
+ * @group Props
635
+ */
636
+ get showTime() {
637
+ return this._showTime;
638
+ }
639
+ set showTime(showTime) {
640
+ this._showTime = showTime;
641
+ if (this.currentHour === undefined) {
642
+ this.initTime(this.value || new Date());
643
+ }
644
+ this.updateInputfield();
645
+ }
646
+ /**
647
+ * An array of options for responsive design.
648
+ * @group Props
649
+ */
650
+ get responsiveOptions() {
651
+ return this._responsiveOptions;
652
+ }
653
+ set responsiveOptions(responsiveOptions) {
654
+ this._responsiveOptions = responsiveOptions;
655
+ this.destroyResponsiveStyleElement();
656
+ this.createResponsiveStyle();
657
+ }
658
+ /**
659
+ * Number of months to display.
660
+ * @group Props
661
+ */
662
+ get numberOfMonths() {
663
+ return this._numberOfMonths;
664
+ }
665
+ set numberOfMonths(numberOfMonths) {
666
+ this._numberOfMonths = numberOfMonths;
667
+ this.destroyResponsiveStyleElement();
668
+ this.createResponsiveStyle();
669
+ }
670
+ /**
671
+ * Defines the first of the week for various date calculations.
672
+ * @group Props
673
+ */
674
+ get firstDayOfWeek() {
675
+ return this._firstDayOfWeek;
676
+ }
677
+ set firstDayOfWeek(firstDayOfWeek) {
678
+ this._firstDayOfWeek = firstDayOfWeek;
679
+ this.createWeekDays();
680
+ }
681
+ /**
682
+ * Type of view to display, valid values are "date" for datepicker and "month" for month picker.
683
+ * @group Props
684
+ */
685
+ get view() {
686
+ return this._view;
687
+ }
688
+ set view(view) {
689
+ this._view = view;
690
+ this.currentView = this._view;
691
+ }
692
+ /**
693
+ * Set the date to highlight on first opening if the field is blank.
694
+ * @group Props
695
+ */
696
+ get defaultDate() {
697
+ return this._defaultDate;
698
+ }
699
+ set defaultDate(defaultDate) {
700
+ this._defaultDate = defaultDate;
701
+ if (this.initialized) {
702
+ const date = defaultDate || new Date();
703
+ this.currentMonth = date.getMonth();
704
+ this.currentYear = date.getFullYear();
705
+ this.initTime(date);
706
+ this.createMonths(this.currentMonth, this.currentYear);
707
+ }
708
+ }
709
+ /**
710
+ * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
711
+ * @defaultValue 'self'
712
+ * @group Props
713
+ */
714
+ appendTo = input(undefined, ...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
715
+ /**
716
+ * The motion options.
717
+ * @group Props
718
+ */
719
+ motionOptions = input(undefined, ...(ngDevMode ? [{ debugName: "motionOptions" }] : /* istanbul ignore next */ []));
720
+ computedMotionOptions = computed(() => {
721
+ return {
722
+ ...this.ptm('motion'),
723
+ ...this.motionOptions()
724
+ };
725
+ }, ...(ngDevMode ? [{ debugName: "computedMotionOptions" }] : /* istanbul ignore next */ []));
726
+ /**
727
+ * Callback to invoke on focus of input field.
728
+ * @param {Event} event - browser event.
729
+ * @group Emits
730
+ */
731
+ onFocus = new EventEmitter();
732
+ /**
733
+ * Callback to invoke on blur of input field.
734
+ * @param {Event} event - browser event.
735
+ * @group Emits
736
+ */
737
+ onBlur = new EventEmitter();
738
+ /**
739
+ * Callback to invoke when date panel closed.
740
+ * @param {HTMLDivElement} element - The element being transitioned/animated.
741
+ * @group Emits
742
+ */
743
+ onClose = new EventEmitter();
744
+ /**
745
+ * Callback to invoke on date select.
746
+ * @param {Date} date - date value.
747
+ * @group Emits
748
+ */
749
+ onSelect = new EventEmitter();
750
+ /**
751
+ * Callback to invoke when input field cleared.
752
+ * @group Emits
753
+ */
754
+ onClear = new EventEmitter();
755
+ /**
756
+ * Callback to invoke when input field is being typed.
757
+ * @param {Event} event - browser event
758
+ * @group Emits
759
+ */
760
+ onInput = new EventEmitter();
761
+ /**
762
+ * Callback to invoke when today button is clicked.
763
+ * @param {Date} date - today as a date instance.
764
+ * @group Emits
765
+ */
766
+ onTodayClick = new EventEmitter();
767
+ /**
768
+ * Callback to invoke when clear button is clicked.
769
+ * @param {Event} event - browser event.
770
+ * @group Emits
771
+ */
772
+ onClearClick = new EventEmitter();
773
+ /**
774
+ * Callback to invoke when a month is changed using the navigators.
775
+ * @param {DatePickerMonthChangeEvent} event - custom month change event.
776
+ * @group Emits
777
+ */
778
+ onMonthChange = new EventEmitter();
779
+ /**
780
+ * Callback to invoke when a year is changed using the navigators.
781
+ * @param {DatePickerYearChangeEvent} event - custom year change event.
782
+ * @group Emits
783
+ */
784
+ onYearChange = new EventEmitter();
785
+ /**
786
+ * Callback to invoke when clicked outside of the date panel.
787
+ * @group Emits
788
+ */
789
+ onClickOutside = new EventEmitter();
790
+ /**
791
+ * Callback to invoke when datepicker panel is shown.
792
+ * @param {HTMLDivElement} element - The element being transitioned/animated.
793
+ * @group Emits
794
+ */
795
+ onShow = new EventEmitter();
796
+ inputfieldViewChild;
797
+ set content(content) {
798
+ this.contentViewChild = content;
799
+ if (this.contentViewChild && this.overlay) {
800
+ if (this.isMonthNavigate) {
801
+ Promise.resolve(null).then(() => this.updateFocus());
802
+ this.isMonthNavigate = false;
803
+ }
804
+ else {
805
+ if (!this.focus && !this.inline) {
806
+ this.initFocusableCell();
807
+ }
808
+ }
809
+ }
810
+ }
811
+ _componentStyle = inject(DatePickerStyle);
812
+ contentViewChild;
813
+ value;
814
+ dates;
815
+ months;
816
+ weekDays;
817
+ currentMonth;
818
+ currentYear;
819
+ currentHour;
820
+ currentMinute;
821
+ currentSecond;
822
+ p;
823
+ pm;
824
+ mask;
825
+ maskClickListener;
826
+ overlay;
827
+ responsiveStyleElement;
828
+ overlayVisible;
829
+ overlayMinWidth;
830
+ $appendTo = computed(() => this.appendTo() || this.config.overlayAppendTo(), ...(ngDevMode ? [{ debugName: "$appendTo" }] : /* istanbul ignore next */ []));
831
+ calendarElement;
832
+ timePickerTimer;
833
+ documentClickListener;
834
+ animationEndListener;
835
+ ticksTo1970;
836
+ yearOptions;
837
+ focus;
838
+ isKeydown;
839
+ _minDate;
840
+ _maxDate;
841
+ _dateFormat;
842
+ _hourFormat = '24';
843
+ _showTime;
844
+ _yearRange;
845
+ preventDocumentListener;
846
+ dayClass(date) {
847
+ return this._componentStyle.classes.day({ instance: this, date: date });
848
+ }
849
+ /**
850
+ * Custom template for date cells.
851
+ * @param {DatePickerDateTemplateContext} context - date template context.
852
+ * @group Templates
853
+ */
854
+ dateTemplate;
855
+ /**
856
+ * Custom template for header section.
857
+ * @group Templates
858
+ */
859
+ headerTemplate;
860
+ /**
861
+ * Custom template for footer section.
862
+ * @group Templates
863
+ */
864
+ footerTemplate;
865
+ /**
866
+ * Custom template for disabled date cells.
867
+ * @param {DatePickerDisabledDateTemplateContext} context - disabled date template context.
868
+ * @group Templates
869
+ */
870
+ disabledDateTemplate;
871
+ /**
872
+ * Custom template for decade view.
873
+ * @param {DatePickerDecadeTemplateContext} context - decade template context.
874
+ * @group Templates
875
+ */
876
+ decadeTemplate;
877
+ /**
878
+ * Custom template for previous month icon.
879
+ * @group Templates
880
+ */
881
+ previousIconTemplate;
882
+ /**
883
+ * Custom template for next month icon.
884
+ * @group Templates
885
+ */
886
+ nextIconTemplate;
887
+ /**
888
+ * Custom template for trigger icon.
889
+ * @group Templates
890
+ */
891
+ triggerIconTemplate;
892
+ /**
893
+ * Custom template for clear icon.
894
+ * @group Templates
895
+ */
896
+ clearIconTemplate;
897
+ /**
898
+ * Custom template for decrement icon.
899
+ * @group Templates
900
+ */
901
+ decrementIconTemplate;
902
+ /**
903
+ * Custom template for increment icon.
904
+ * @group Templates
905
+ */
906
+ incrementIconTemplate;
907
+ /**
908
+ * Custom template for input icon.
909
+ * @param {DatePickerInputIconTemplateContext} context - input icon template context.
910
+ * @group Templates
911
+ */
912
+ inputIconTemplate;
913
+ /**
914
+ * Custom template for button bar.
915
+ * @param {DatePickerButtonBarTemplateContext} context - button bar template context.
916
+ * @group Templates
917
+ */
918
+ buttonBarTemplate;
919
+ _dateTemplate;
920
+ _headerTemplate;
921
+ _footerTemplate;
922
+ _disabledDateTemplate;
923
+ _decadeTemplate;
924
+ _previousIconTemplate;
925
+ _nextIconTemplate;
926
+ _triggerIconTemplate;
927
+ _clearIconTemplate;
928
+ _decrementIconTemplate;
929
+ _incrementIconTemplate;
930
+ _inputIconTemplate;
931
+ _buttonBarTemplate;
932
+ _disabledDates;
933
+ _disabledDays;
934
+ selectElement;
935
+ todayElement;
936
+ focusElement;
937
+ scrollHandler;
938
+ documentResizeListener;
939
+ navigationState = null;
940
+ isMonthNavigate;
941
+ initialized;
942
+ translationSubscription;
943
+ _locale;
944
+ _responsiveOptions;
945
+ currentView;
946
+ attributeSelector;
947
+ panelId;
948
+ _numberOfMonths = 1;
949
+ _firstDayOfWeek;
950
+ _view = 'date';
951
+ preventFocus;
952
+ _defaultDate;
953
+ _focusKey = null;
954
+ window;
955
+ get locale() {
956
+ return this._locale;
957
+ }
958
+ get iconButtonAriaLabel() {
959
+ return this.iconAriaLabel ? this.iconAriaLabel : this.getTranslation('chooseDate');
960
+ }
961
+ get prevIconAriaLabel() {
962
+ return this.currentView === 'year' ? this.getTranslation('prevDecade') : this.currentView === 'month' ? this.getTranslation('prevYear') : this.getTranslation('prevMonth');
963
+ }
964
+ get nextIconAriaLabel() {
965
+ return this.currentView === 'year' ? this.getTranslation('nextDecade') : this.currentView === 'month' ? this.getTranslation('nextYear') : this.getTranslation('nextMonth');
966
+ }
967
+ constructor(zone, overlayService) {
968
+ super();
969
+ this.zone = zone;
970
+ this.overlayService = overlayService;
971
+ this.window = this.document.defaultView;
972
+ }
973
+ onInit() {
974
+ this.attributeSelector = uuid('pn_id_');
975
+ this.panelId = this.attributeSelector + '_panel';
976
+ const date = this.defaultDate || new Date();
977
+ this.createResponsiveStyle();
978
+ this.currentMonth = date.getMonth();
979
+ this.currentYear = date.getFullYear();
980
+ this.yearOptions = [];
981
+ this.currentView = this.view;
982
+ if (this.view === 'date') {
983
+ this.createWeekDays();
984
+ this.initTime(date);
985
+ this.createMonths(this.currentMonth, this.currentYear);
986
+ this.ticksTo1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;
987
+ }
988
+ this.translationSubscription = this.config.translationObserver.subscribe(() => {
989
+ this.createWeekDays();
990
+ this.cd.markForCheck();
991
+ });
992
+ this.initialized = true;
993
+ }
994
+ onAfterViewInit() {
995
+ if (this.inline) {
996
+ this.contentViewChild && this.contentViewChild.nativeElement.setAttribute(this.attributeSelector, '');
997
+ }
998
+ else {
999
+ if (!this.$disabled() && this.overlay) {
1000
+ this.initFocusableCell();
1001
+ if (this.numberOfMonths === 1) {
1002
+ if (this.contentViewChild && this.contentViewChild.nativeElement) {
1003
+ this.contentViewChild.nativeElement.style.width = getOuterWidth(this.el?.nativeElement) + 'px';
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ }
1009
+ onAfterViewChecked() {
1010
+ this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));
1011
+ }
1012
+ templates;
1013
+ onAfterContentInit() {
1014
+ this.templates.forEach((item) => {
1015
+ switch (item.getType()) {
1016
+ case 'date':
1017
+ this._dateTemplate = item.template;
1018
+ break;
1019
+ case 'decade':
1020
+ this._decadeTemplate = item.template;
1021
+ break;
1022
+ case 'disabledDate':
1023
+ this._disabledDateTemplate = item.template;
1024
+ break;
1025
+ case 'header':
1026
+ this._headerTemplate = item.template;
1027
+ break;
1028
+ case 'inputicon':
1029
+ this._inputIconTemplate = item.template;
1030
+ break;
1031
+ case 'buttonbar':
1032
+ this._buttonBarTemplate = item.template;
1033
+ break;
1034
+ case 'previousicon':
1035
+ this._previousIconTemplate = item.template;
1036
+ break;
1037
+ case 'nexticon':
1038
+ this._nextIconTemplate = item.template;
1039
+ break;
1040
+ case 'triggericon':
1041
+ this._triggerIconTemplate = item.template;
1042
+ break;
1043
+ case 'clearicon':
1044
+ this._clearIconTemplate = item.template;
1045
+ break;
1046
+ case 'decrementicon':
1047
+ this._decrementIconTemplate = item.template;
1048
+ break;
1049
+ case 'incrementicon':
1050
+ this._incrementIconTemplate = item.template;
1051
+ break;
1052
+ case 'footer':
1053
+ this._footerTemplate = item.template;
1054
+ break;
1055
+ default:
1056
+ this._dateTemplate = item.template;
1057
+ break;
1058
+ }
1059
+ });
1060
+ }
1061
+ getTranslation(option) {
1062
+ return this.config.getTranslation(option);
1063
+ }
1064
+ populateYearOptions(start, end) {
1065
+ this.yearOptions = [];
1066
+ for (let i = start; i <= end; i++) {
1067
+ this.yearOptions.push(i);
1068
+ }
1069
+ }
1070
+ createWeekDays() {
1071
+ this.weekDays = [];
1072
+ let dayIndex = this.getFirstDateOfWeek();
1073
+ let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);
1074
+ for (let i = 0; i < 7; i++) {
1075
+ this.weekDays.push(dayLabels[dayIndex]);
1076
+ dayIndex = dayIndex == 6 ? 0 : ++dayIndex;
1077
+ }
1078
+ }
1079
+ monthPickerValues() {
1080
+ let monthPickerValues = [];
1081
+ for (let i = 0; i <= 11; i++) {
1082
+ monthPickerValues.push(this.config.getTranslation('monthNamesShort')[i]);
1083
+ }
1084
+ return monthPickerValues;
1085
+ }
1086
+ yearPickerValues() {
1087
+ let yearPickerValues = [];
1088
+ let base = this.currentYear - (this.currentYear % 10);
1089
+ for (let i = 0; i < 10; i++) {
1090
+ yearPickerValues.push(base + i);
1091
+ }
1092
+ return yearPickerValues;
1093
+ }
1094
+ createMonths(month, year) {
1095
+ this.months = this.months = [];
1096
+ for (let i = 0; i < this.numberOfMonths; i++) {
1097
+ let m = month + i;
1098
+ let y = year;
1099
+ if (m > 11) {
1100
+ m = m % 12;
1101
+ y = year + Math.floor((month + i) / 12);
1102
+ }
1103
+ this.months.push(this.createMonth(m, y));
1104
+ }
1105
+ }
1106
+ getWeekNumber(date) {
1107
+ let checkDate = new Date(date.getTime());
1108
+ if (this.startWeekFromFirstDayOfYear) {
1109
+ let firstDayOfWeek = +this.getFirstDateOfWeek();
1110
+ checkDate.setDate(checkDate.getDate() + 6 + firstDayOfWeek - checkDate.getDay());
1111
+ }
1112
+ else {
1113
+ checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
1114
+ }
1115
+ let time = checkDate.getTime();
1116
+ checkDate.setMonth(0);
1117
+ checkDate.setDate(1);
1118
+ return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;
1119
+ }
1120
+ createMonth(month, year) {
1121
+ let dates = [];
1122
+ let firstDay = this.getFirstDayOfMonthIndex(month, year);
1123
+ let daysLength = this.getDaysCountInMonth(month, year);
1124
+ let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);
1125
+ let dayNo = 1;
1126
+ let today = new Date();
1127
+ let weekNumbers = [];
1128
+ let monthRows = Math.ceil((daysLength + firstDay) / 7);
1129
+ for (let i = 0; i < monthRows; i++) {
1130
+ let week = [];
1131
+ if (i == 0) {
1132
+ for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {
1133
+ let prev = this.getPreviousMonthAndYear(month, year);
1134
+ week.push({
1135
+ day: j,
1136
+ month: prev.month,
1137
+ year: prev.year,
1138
+ otherMonth: true,
1139
+ today: this.isToday(today, j, prev.month, prev.year),
1140
+ selectable: this.isSelectable(j, prev.month, prev.year, true)
1141
+ });
1142
+ }
1143
+ let remainingDaysLength = 7 - week.length;
1144
+ for (let j = 0; j < remainingDaysLength; j++) {
1145
+ week.push({
1146
+ day: dayNo,
1147
+ month: month,
1148
+ year: year,
1149
+ today: this.isToday(today, dayNo, month, year),
1150
+ selectable: this.isSelectable(dayNo, month, year, false)
1151
+ });
1152
+ dayNo++;
1153
+ }
1154
+ }
1155
+ else {
1156
+ for (let j = 0; j < 7; j++) {
1157
+ if (dayNo > daysLength) {
1158
+ let next = this.getNextMonthAndYear(month, year);
1159
+ week.push({
1160
+ day: dayNo - daysLength,
1161
+ month: next.month,
1162
+ year: next.year,
1163
+ otherMonth: true,
1164
+ today: this.isToday(today, dayNo - daysLength, next.month, next.year),
1165
+ selectable: this.isSelectable(dayNo - daysLength, next.month, next.year, true)
1166
+ });
1167
+ }
1168
+ else {
1169
+ week.push({
1170
+ day: dayNo,
1171
+ month: month,
1172
+ year: year,
1173
+ today: this.isToday(today, dayNo, month, year),
1174
+ selectable: this.isSelectable(dayNo, month, year, false)
1175
+ });
1176
+ }
1177
+ dayNo++;
1178
+ }
1179
+ }
1180
+ if (this.showWeek) {
1181
+ weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));
1182
+ }
1183
+ dates.push(week);
1184
+ }
1185
+ return {
1186
+ month: month,
1187
+ year: year,
1188
+ dates: dates,
1189
+ weekNumbers: weekNumbers
1190
+ };
1191
+ }
1192
+ initTime(date) {
1193
+ this.pm = date.getHours() > 11;
1194
+ if (this.showTime) {
1195
+ this.currentMinute = date.getMinutes();
1196
+ this.currentSecond = this.showSeconds ? date.getSeconds() : 0;
1197
+ this.setCurrentHourPM(date.getHours());
1198
+ }
1199
+ else if (this.timeOnly) {
1200
+ this.currentMinute = 0;
1201
+ this.currentHour = 0;
1202
+ this.currentSecond = 0;
1203
+ }
1204
+ }
1205
+ navBackward(event) {
1206
+ if (this.$disabled()) {
1207
+ event.preventDefault();
1208
+ return;
1209
+ }
1210
+ this.isMonthNavigate = true;
1211
+ if (this.currentView === 'month') {
1212
+ this.decrementYear();
1213
+ setTimeout(() => {
1214
+ this.updateFocus();
1215
+ }, 1);
1216
+ }
1217
+ else if (this.currentView === 'year') {
1218
+ this.decrementDecade();
1219
+ setTimeout(() => {
1220
+ this.updateFocus();
1221
+ }, 1);
1222
+ }
1223
+ else {
1224
+ if (this.currentMonth === 0) {
1225
+ this.currentMonth = 11;
1226
+ this.decrementYear();
1227
+ }
1228
+ else {
1229
+ this.currentMonth--;
1230
+ }
1231
+ this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
1232
+ this.createMonths(this.currentMonth, this.currentYear);
1233
+ }
1234
+ }
1235
+ navForward(event) {
1236
+ if (this.$disabled()) {
1237
+ event.preventDefault();
1238
+ return;
1239
+ }
1240
+ this.isMonthNavigate = true;
1241
+ if (this.currentView === 'month') {
1242
+ this.incrementYear();
1243
+ setTimeout(() => {
1244
+ this.updateFocus();
1245
+ }, 1);
1246
+ }
1247
+ else if (this.currentView === 'year') {
1248
+ this.incrementDecade();
1249
+ setTimeout(() => {
1250
+ this.updateFocus();
1251
+ }, 1);
1252
+ }
1253
+ else {
1254
+ if (this.currentMonth === 11) {
1255
+ this.currentMonth = 0;
1256
+ this.incrementYear();
1257
+ }
1258
+ else {
1259
+ this.currentMonth++;
1260
+ }
1261
+ this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
1262
+ this.createMonths(this.currentMonth, this.currentYear);
1263
+ }
1264
+ }
1265
+ decrementYear() {
1266
+ this.currentYear--;
1267
+ let _yearOptions = this.yearOptions;
1268
+ if (this.currentYear < _yearOptions[0]) {
1269
+ let difference = _yearOptions[_yearOptions.length - 1] - _yearOptions[0];
1270
+ this.populateYearOptions(_yearOptions[0] - difference, _yearOptions[_yearOptions.length - 1] - difference);
1271
+ }
1272
+ }
1273
+ decrementDecade() {
1274
+ this.currentYear = this.currentYear - 10;
1275
+ }
1276
+ incrementDecade() {
1277
+ this.currentYear = this.currentYear + 10;
1278
+ }
1279
+ incrementYear() {
1280
+ this.currentYear++;
1281
+ let _yearOptions = this.yearOptions;
1282
+ if (this.currentYear > _yearOptions[_yearOptions.length - 1]) {
1283
+ let difference = _yearOptions[_yearOptions.length - 1] - _yearOptions[0];
1284
+ this.populateYearOptions(_yearOptions[0] + difference, _yearOptions[_yearOptions.length - 1] + difference);
1285
+ }
1286
+ }
1287
+ switchToMonthView(event) {
1288
+ this.setCurrentView('month');
1289
+ event.preventDefault();
1290
+ }
1291
+ switchToYearView(event) {
1292
+ this.setCurrentView('year');
1293
+ event.preventDefault();
1294
+ }
1295
+ onDateSelect(event, dateMeta) {
1296
+ if (this.$disabled() || !dateMeta.selectable) {
1297
+ event.preventDefault();
1298
+ return;
1299
+ }
1300
+ if (this.isMultipleSelection() && this.isSelected(dateMeta)) {
1301
+ this.value = this.value.filter((date, i) => {
1302
+ return !this.isDateEquals(date, dateMeta);
1303
+ });
1304
+ if (this.value.length === 0) {
1305
+ this.value = null;
1306
+ }
1307
+ this.updateModel(this.value);
1308
+ }
1309
+ else {
1310
+ if (this.shouldSelectDate(dateMeta)) {
1311
+ this.selectDate(dateMeta);
1312
+ }
1313
+ }
1314
+ if (this.hideOnDateTimeSelect && (this.isSingleSelection() || (this.isRangeSelection() && this.value[1]))) {
1315
+ setTimeout(() => {
1316
+ event.preventDefault();
1317
+ this.hideOverlay();
1318
+ if (this.mask) {
1319
+ this.disableModality();
1320
+ }
1321
+ this.cd.markForCheck();
1322
+ }, 150);
1323
+ }
1324
+ this.updateInputfield();
1325
+ event.preventDefault();
1326
+ }
1327
+ shouldSelectDate(dateMeta) {
1328
+ if (this.isMultipleSelection())
1329
+ return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;
1330
+ else
1331
+ return true;
1332
+ }
1333
+ onMonthSelect(event, index) {
1334
+ if (this.view === 'month') {
1335
+ this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });
1336
+ }
1337
+ else {
1338
+ this.currentMonth = index;
1339
+ this.createMonths(this.currentMonth, this.currentYear);
1340
+ this.setCurrentView('date');
1341
+ this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
1342
+ }
1343
+ }
1344
+ onYearSelect(event, year) {
1345
+ if (this.view === 'year') {
1346
+ this.onDateSelect(event, { year: year, month: 0, day: 1, selectable: true });
1347
+ }
1348
+ else {
1349
+ this.currentYear = year;
1350
+ this.setCurrentView('month');
1351
+ this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
1352
+ }
1353
+ }
1354
+ updateInputfield() {
1355
+ let formattedValue = '';
1356
+ if (this.value) {
1357
+ if (this.isSingleSelection()) {
1358
+ formattedValue = this.formatDateTime(this.value);
1359
+ }
1360
+ else if (this.isMultipleSelection()) {
1361
+ for (let i = 0; i < this.value.length; i++) {
1362
+ let dateAsString = this.formatDateTime(this.value[i]);
1363
+ formattedValue += dateAsString;
1364
+ if (i !== this.value.length - 1) {
1365
+ formattedValue += this.multipleSeparator + ' ';
1366
+ }
1367
+ }
1368
+ }
1369
+ else if (this.isRangeSelection()) {
1370
+ if (this.value && this.value.length) {
1371
+ let startDate = this.value[0];
1372
+ let endDate = this.value[1];
1373
+ formattedValue = this.formatDateTime(startDate);
1374
+ if (endDate) {
1375
+ formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);
1376
+ }
1377
+ }
1378
+ }
1379
+ }
1380
+ this.writeModelValue(formattedValue);
1381
+ this.inputFieldValue = formattedValue;
1382
+ if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
1383
+ this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;
1384
+ }
1385
+ }
1386
+ inputFieldValue = null;
1387
+ formatDateTime(date) {
1388
+ let formattedValue = this.keepInvalid ? date : null;
1389
+ const isDateValid = this.isValidDateForTimeConstraints(date);
1390
+ if (this.isValidDate(date)) {
1391
+ if (this.timeOnly) {
1392
+ formattedValue = this.formatTime(date);
1393
+ }
1394
+ else {
1395
+ formattedValue = this.formatDate(date, this.getDateFormat());
1396
+ if (this.showTime) {
1397
+ formattedValue += ' ' + this.formatTime(date);
1398
+ }
1399
+ }
1400
+ }
1401
+ else if (this.dataType === 'string') {
1402
+ formattedValue = date;
1403
+ }
1404
+ formattedValue = isDateValid ? formattedValue : '';
1405
+ return formattedValue;
1406
+ }
1407
+ formatDateMetaToDate(dateMeta) {
1408
+ return new Date(dateMeta.year, dateMeta.month, dateMeta.day);
1409
+ }
1410
+ formatDateKey(date) {
1411
+ return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
1412
+ }
1413
+ setCurrentHourPM(hours) {
1414
+ if (this.hourFormat == '12') {
1415
+ this.pm = hours > 11;
1416
+ if (hours >= 12) {
1417
+ this.currentHour = hours == 12 ? 12 : hours - 12;
1418
+ }
1419
+ else {
1420
+ this.currentHour = hours == 0 ? 12 : hours;
1421
+ }
1422
+ }
1423
+ else {
1424
+ this.currentHour = hours;
1425
+ }
1426
+ }
1427
+ setCurrentView(currentView) {
1428
+ this.currentView = currentView;
1429
+ this.cd.detectChanges();
1430
+ this.alignOverlay();
1431
+ }
1432
+ selectDate(dateMeta) {
1433
+ let date = this.formatDateMetaToDate(dateMeta);
1434
+ if (this.showTime) {
1435
+ if (this.hourFormat == '12') {
1436
+ if (this.currentHour === 12)
1437
+ date.setHours(this.pm ? 12 : 0);
1438
+ else
1439
+ date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
1440
+ }
1441
+ else {
1442
+ date.setHours(this.currentHour);
1443
+ }
1444
+ date.setMinutes(this.currentMinute);
1445
+ date.setSeconds(this.currentSecond);
1446
+ }
1447
+ if (this.minDate && this.minDate > date) {
1448
+ date = this.minDate;
1449
+ this.setCurrentHourPM(date.getHours());
1450
+ this.currentMinute = date.getMinutes();
1451
+ this.currentSecond = date.getSeconds();
1452
+ }
1453
+ if (this.maxDate && this.maxDate < date) {
1454
+ date = this.maxDate;
1455
+ this.setCurrentHourPM(date.getHours());
1456
+ this.currentMinute = date.getMinutes();
1457
+ this.currentSecond = date.getSeconds();
1458
+ }
1459
+ if (this.isSingleSelection()) {
1460
+ this.updateModel(date);
1461
+ }
1462
+ else if (this.isMultipleSelection()) {
1463
+ this.updateModel(this.value ? [...this.value, date] : [date]);
1464
+ }
1465
+ else if (this.isRangeSelection()) {
1466
+ if (this.value && this.value.length) {
1467
+ let startDate = this.value[0];
1468
+ let endDate = this.value[1];
1469
+ if (!endDate && date.getTime() >= startDate.getTime()) {
1470
+ endDate = date;
1471
+ }
1472
+ else {
1473
+ startDate = date;
1474
+ endDate = null;
1475
+ }
1476
+ this.updateModel([startDate, endDate]);
1477
+ }
1478
+ else {
1479
+ this.updateModel([date, null]);
1480
+ }
1481
+ }
1482
+ this.onSelect.emit(date);
1483
+ }
1484
+ updateModel(value) {
1485
+ this.value = value;
1486
+ if (this.dataType == 'date') {
1487
+ this.writeModelValue(this.value);
1488
+ this.onModelChange(this.value);
1489
+ }
1490
+ else if (this.dataType == 'string') {
1491
+ if (this.isSingleSelection()) {
1492
+ this.onModelChange(this.formatDateTime(this.value));
1493
+ }
1494
+ else {
1495
+ let stringArrValue = null;
1496
+ if (Array.isArray(this.value)) {
1497
+ stringArrValue = this.value.map((date) => this.formatDateTime(date));
1498
+ }
1499
+ this.writeModelValue(stringArrValue);
1500
+ this.onModelChange(stringArrValue);
1501
+ }
1502
+ }
1503
+ }
1504
+ getFirstDayOfMonthIndex(month, year) {
1505
+ let day = new Date();
1506
+ day.setDate(1);
1507
+ day.setMonth(month);
1508
+ day.setFullYear(year);
1509
+ let dayIndex = day.getDay() + this.getSundayIndex();
1510
+ return dayIndex >= 7 ? dayIndex - 7 : dayIndex;
1511
+ }
1512
+ getDaysCountInMonth(month, year) {
1513
+ return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();
1514
+ }
1515
+ getDaysCountInPrevMonth(month, year) {
1516
+ let prev = this.getPreviousMonthAndYear(month, year);
1517
+ return this.getDaysCountInMonth(prev.month, prev.year);
1518
+ }
1519
+ getPreviousMonthAndYear(month, year) {
1520
+ let m, y;
1521
+ if (month === 0) {
1522
+ m = 11;
1523
+ y = year - 1;
1524
+ }
1525
+ else {
1526
+ m = month - 1;
1527
+ y = year;
1528
+ }
1529
+ return { month: m, year: y };
1530
+ }
1531
+ getNextMonthAndYear(month, year) {
1532
+ let m, y;
1533
+ if (month === 11) {
1534
+ m = 0;
1535
+ y = year + 1;
1536
+ }
1537
+ else {
1538
+ m = month + 1;
1539
+ y = year;
1540
+ }
1541
+ return { month: m, year: y };
1542
+ }
1543
+ getSundayIndex() {
1544
+ let firstDayOfWeek = this.getFirstDateOfWeek();
1545
+ return firstDayOfWeek > 0 ? 7 - firstDayOfWeek : 0;
1546
+ }
1547
+ isSelected(dateMeta) {
1548
+ if (this.value) {
1549
+ if (this.isSingleSelection()) {
1550
+ return this.isDateEquals(this.value, dateMeta);
1551
+ }
1552
+ else if (this.isMultipleSelection()) {
1553
+ let selected = false;
1554
+ for (let date of this.value) {
1555
+ selected = this.isDateEquals(date, dateMeta);
1556
+ if (selected) {
1557
+ break;
1558
+ }
1559
+ }
1560
+ return selected;
1561
+ }
1562
+ else if (this.isRangeSelection()) {
1563
+ if (this.value[1])
1564
+ return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);
1565
+ else
1566
+ return this.isDateEquals(this.value[0], dateMeta);
1567
+ }
1568
+ }
1569
+ else {
1570
+ return false;
1571
+ }
1572
+ }
1573
+ isComparable() {
1574
+ return this.value != null && typeof this.value !== 'string';
1575
+ }
1576
+ isMonthSelected(month) {
1577
+ if (!this.isComparable())
1578
+ return false;
1579
+ if (this.isMultipleSelection()) {
1580
+ return this.value.some((currentValue) => currentValue.getMonth() === month && currentValue.getFullYear() === this.currentYear);
1581
+ }
1582
+ else if (this.isRangeSelection()) {
1583
+ if (!this.value[1]) {
1584
+ return this.value[0]?.getFullYear() === this.currentYear && this.value[0]?.getMonth() === month;
1585
+ }
1586
+ else {
1587
+ const currentDate = new Date(this.currentYear, month, 1);
1588
+ const startDate = new Date(this.value[0].getFullYear(), this.value[0].getMonth(), 1);
1589
+ const endDate = new Date(this.value[1].getFullYear(), this.value[1].getMonth(), 1);
1590
+ return currentDate >= startDate && currentDate <= endDate;
1591
+ }
1592
+ }
1593
+ else {
1594
+ return this.value.getMonth() === month && this.value.getFullYear() === this.currentYear;
1595
+ }
1596
+ }
1597
+ isMonthDisabled(month, year) {
1598
+ const yearToCheck = year ?? this.currentYear;
1599
+ for (let day = 1; day < this.getDaysCountInMonth(month, yearToCheck) + 1; day++) {
1600
+ if (this.isSelectable(day, month, yearToCheck, false)) {
1601
+ return false;
1602
+ }
1603
+ }
1604
+ return true;
1605
+ }
1606
+ isYearDisabled(year) {
1607
+ return Array(12)
1608
+ .fill(0)
1609
+ .every((v, month) => this.isMonthDisabled(month, year));
1610
+ }
1611
+ isYearSelected(year) {
1612
+ if (this.isComparable()) {
1613
+ let value = this.isRangeSelection() ? this.value[0] : this.value;
1614
+ return !this.isMultipleSelection() ? value.getFullYear() === year : false;
1615
+ }
1616
+ return false;
1617
+ }
1618
+ isDateEquals(value, dateMeta) {
1619
+ if (value && isDate(value))
1620
+ return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;
1621
+ else
1622
+ return false;
1623
+ }
1624
+ isDateBetween(start, end, dateMeta) {
1625
+ let between = false;
1626
+ if (isDate(start) && isDate(end)) {
1627
+ let date = this.formatDateMetaToDate(dateMeta);
1628
+ return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();
1629
+ }
1630
+ return between;
1631
+ }
1632
+ isSingleSelection() {
1633
+ return this.selectionMode === 'single';
1634
+ }
1635
+ isRangeSelection() {
1636
+ return this.selectionMode === 'range';
1637
+ }
1638
+ isMultipleSelection() {
1639
+ return this.selectionMode === 'multiple';
1640
+ }
1641
+ isToday(today, day, month, year) {
1642
+ return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
1643
+ }
1644
+ isSelectable(day, month, year, otherMonth) {
1645
+ let validMin = true;
1646
+ let validMax = true;
1647
+ let validDate = true;
1648
+ let validDay = true;
1649
+ if (otherMonth && !this.selectOtherMonths) {
1650
+ return false;
1651
+ }
1652
+ if (this.minDate) {
1653
+ if (this.minDate.getFullYear() > year) {
1654
+ validMin = false;
1655
+ }
1656
+ else if (this.minDate.getFullYear() === year && this.currentView != 'year') {
1657
+ if (this.minDate.getMonth() > month) {
1658
+ validMin = false;
1659
+ }
1660
+ else if (this.minDate.getMonth() === month) {
1661
+ if (this.minDate.getDate() > day) {
1662
+ validMin = false;
1663
+ }
1664
+ }
1665
+ }
1666
+ }
1667
+ if (this.maxDate) {
1668
+ if (this.maxDate.getFullYear() < year) {
1669
+ validMax = false;
1670
+ }
1671
+ else if (this.maxDate.getFullYear() === year) {
1672
+ if (this.maxDate.getMonth() < month) {
1673
+ validMax = false;
1674
+ }
1675
+ else if (this.maxDate.getMonth() === month) {
1676
+ if (this.maxDate.getDate() < day) {
1677
+ validMax = false;
1678
+ }
1679
+ }
1680
+ }
1681
+ }
1682
+ if (this.disabledDates) {
1683
+ validDate = !this.isDateDisabled(day, month, year);
1684
+ }
1685
+ if (this.disabledDays) {
1686
+ validDay = !this.isDayDisabled(day, month, year);
1687
+ }
1688
+ return validMin && validMax && validDate && validDay;
1689
+ }
1690
+ isDateDisabled(day, month, year) {
1691
+ if (this.disabledDates) {
1692
+ for (let disabledDate of this.disabledDates) {
1693
+ if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {
1694
+ return true;
1695
+ }
1696
+ }
1697
+ }
1698
+ return false;
1699
+ }
1700
+ isDayDisabled(day, month, year) {
1701
+ if (this.disabledDays) {
1702
+ let weekday = new Date(year, month, day);
1703
+ let weekdayNumber = weekday.getDay();
1704
+ return this.disabledDays.indexOf(weekdayNumber) !== -1;
1705
+ }
1706
+ return false;
1707
+ }
1708
+ onInputFocus(event) {
1709
+ this.focus = true;
1710
+ if (this.showOnFocus) {
1711
+ this.showOverlay();
1712
+ }
1713
+ this.onFocus.emit(event);
1714
+ }
1715
+ onInputClick() {
1716
+ if (this.showOnFocus && !this.overlayVisible) {
1717
+ this.showOverlay();
1718
+ }
1719
+ }
1720
+ onInputBlur(event) {
1721
+ this.focus = false;
1722
+ this.onBlur.emit(event);
1723
+ if (!this.keepInvalid) {
1724
+ this.updateInputfield();
1725
+ }
1726
+ this.onModelTouched();
1727
+ }
1728
+ onButtonClick(event, inputfield = this.inputfieldViewChild?.nativeElement) {
1729
+ if (this.$disabled()) {
1730
+ return;
1731
+ }
1732
+ if (!this.overlayVisible) {
1733
+ inputfield.focus();
1734
+ this.showOverlay();
1735
+ }
1736
+ else {
1737
+ this.hideOverlay();
1738
+ }
1739
+ }
1740
+ clear() {
1741
+ this.value = null;
1742
+ this.inputFieldValue = null;
1743
+ this.writeModelValue(this.value);
1744
+ this.onModelChange(this.value);
1745
+ this.updateInputfield();
1746
+ this.onClear.emit();
1747
+ }
1748
+ onOverlayClick(event) {
1749
+ this.overlayService.add({
1750
+ originalEvent: event,
1751
+ target: this.el.nativeElement
1752
+ });
1753
+ }
1754
+ getMonthName(index) {
1755
+ return this.config.getTranslation('monthNames')[index];
1756
+ }
1757
+ getYear(month) {
1758
+ return this.currentView === 'month' ? this.currentYear : month.year;
1759
+ }
1760
+ switchViewButtonDisabled() {
1761
+ return this.numberOfMonths > 1 || this.$disabled();
1762
+ }
1763
+ onPrevButtonClick(event) {
1764
+ this.navigationState = { backward: true, button: true };
1765
+ this.navBackward(event);
1766
+ }
1767
+ onNextButtonClick(event) {
1768
+ this.navigationState = { backward: false, button: true };
1769
+ this.navForward(event);
1770
+ }
1771
+ onContainerButtonKeydown(event) {
1772
+ switch (event.which) {
1773
+ //tab
1774
+ case 9:
1775
+ if (!this.inline) {
1776
+ this.trapFocus(event);
1777
+ }
1778
+ if (this.inline) {
1779
+ const headerElements = findSingle(this.el?.nativeElement, '.p-datepicker-header');
1780
+ const element = event.target;
1781
+ if (this.timeOnly) {
1782
+ return;
1783
+ }
1784
+ else {
1785
+ if (element == headerElements?.children[headerElements?.children?.length - 1]) {
1786
+ this.initFocusableCell();
1787
+ }
1788
+ }
1789
+ }
1790
+ break;
1791
+ //escape
1792
+ case 27:
1793
+ this.inputfieldViewChild?.nativeElement.focus();
1794
+ this.overlayVisible = false;
1795
+ event.preventDefault();
1796
+ break;
1797
+ default:
1798
+ //Noop
1799
+ break;
1800
+ }
1801
+ }
1802
+ onInputKeydown(event) {
1803
+ this.isKeydown = true;
1804
+ if (event.keyCode === 40 && this.contentViewChild) {
1805
+ this.trapFocus(event);
1806
+ }
1807
+ else if (event.keyCode === 27) {
1808
+ if (this.overlayVisible) {
1809
+ this.inputfieldViewChild?.nativeElement.focus();
1810
+ this.overlayVisible = false;
1811
+ event.preventDefault();
1812
+ }
1813
+ }
1814
+ else if (event.keyCode === 13) {
1815
+ if (this.overlayVisible) {
1816
+ this.overlayVisible = false;
1817
+ event.preventDefault();
1818
+ }
1819
+ }
1820
+ else if (event.keyCode === 9 && this.contentViewChild) {
1821
+ getFocusableElements(this.contentViewChild.nativeElement).forEach((el) => (el.tabIndex = '-1'));
1822
+ if (this.overlayVisible) {
1823
+ this.overlayVisible = false;
1824
+ }
1825
+ }
1826
+ }
1827
+ onDateCellKeydown(event, dateMeta, groupIndex) {
1828
+ const cellContent = event.currentTarget;
1829
+ const cell = cellContent.parentElement;
1830
+ const currentDate = this.formatDateMetaToDate(dateMeta);
1831
+ switch (event.which) {
1832
+ //down arrow
1833
+ case 40: {
1834
+ cellContent.tabIndex = '-1';
1835
+ let cellIndex = getIndex(cell);
1836
+ let nextRow = cell.parentElement.nextElementSibling;
1837
+ if (nextRow) {
1838
+ let focusCell = nextRow.children[cellIndex].children[0];
1839
+ if (hasClass(focusCell, 'p-disabled')) {
1840
+ this.navigationState = { backward: false };
1841
+ this.navForward(event);
1842
+ }
1843
+ else {
1844
+ nextRow.children[cellIndex].children[0].tabIndex = '0';
1845
+ nextRow.children[cellIndex].children[0].focus();
1846
+ }
1847
+ }
1848
+ else {
1849
+ this.navigationState = { backward: false };
1850
+ this.navForward(event);
1851
+ }
1852
+ event.preventDefault();
1853
+ break;
1854
+ }
1855
+ //up arrow
1856
+ case 38: {
1857
+ cellContent.tabIndex = '-1';
1858
+ let cellIndex = getIndex(cell);
1859
+ let prevRow = cell.parentElement.previousElementSibling;
1860
+ if (prevRow) {
1861
+ let focusCell = prevRow.children[cellIndex].children[0];
1862
+ if (hasClass(focusCell, 'p-disabled')) {
1863
+ this.navigationState = { backward: true };
1864
+ this.navBackward(event);
1865
+ }
1866
+ else {
1867
+ focusCell.tabIndex = '0';
1868
+ focusCell.focus();
1869
+ }
1870
+ }
1871
+ else {
1872
+ this.navigationState = { backward: true };
1873
+ this.navBackward(event);
1874
+ }
1875
+ event.preventDefault();
1876
+ break;
1877
+ }
1878
+ //left arrow
1879
+ case 37: {
1880
+ cellContent.tabIndex = '-1';
1881
+ let prevCell = cell.previousElementSibling;
1882
+ if (prevCell) {
1883
+ let focusCell = prevCell.children[0];
1884
+ if (hasClass(focusCell, 'p-disabled') || hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {
1885
+ this.navigateToMonth(true, groupIndex);
1886
+ }
1887
+ else {
1888
+ focusCell.tabIndex = '0';
1889
+ focusCell.focus();
1890
+ }
1891
+ }
1892
+ else {
1893
+ this.navigateToMonth(true, groupIndex);
1894
+ }
1895
+ event.preventDefault();
1896
+ break;
1897
+ }
1898
+ //right arrow
1899
+ case 39: {
1900
+ cellContent.tabIndex = '-1';
1901
+ let nextCell = cell.nextElementSibling;
1902
+ if (nextCell) {
1903
+ let focusCell = nextCell.children[0];
1904
+ if (hasClass(focusCell, 'p-disabled')) {
1905
+ this.navigateToMonth(false, groupIndex);
1906
+ }
1907
+ else {
1908
+ focusCell.tabIndex = '0';
1909
+ focusCell.focus();
1910
+ }
1911
+ }
1912
+ else {
1913
+ this.navigateToMonth(false, groupIndex);
1914
+ }
1915
+ event.preventDefault();
1916
+ break;
1917
+ }
1918
+ //enter
1919
+ //space
1920
+ case 13:
1921
+ case 32: {
1922
+ this.onDateSelect(event, dateMeta);
1923
+ event.preventDefault();
1924
+ break;
1925
+ }
1926
+ //escape
1927
+ case 27: {
1928
+ this.inputfieldViewChild?.nativeElement.focus();
1929
+ this.overlayVisible = false;
1930
+ event.preventDefault();
1931
+ break;
1932
+ }
1933
+ //tab
1934
+ case 9: {
1935
+ if (!this.inline) {
1936
+ this.trapFocus(event);
1937
+ }
1938
+ break;
1939
+ }
1940
+ // page up
1941
+ case 33: {
1942
+ cellContent.tabIndex = '-1';
1943
+ const dateToFocus = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
1944
+ const focusKey = this.formatDateKey(dateToFocus);
1945
+ this.navigateToMonth(true, groupIndex, `span[data-date='${focusKey}']:not(.p-disabled):not(.p-ink)`);
1946
+ event.preventDefault();
1947
+ break;
1948
+ }
1949
+ // page down
1950
+ case 34: {
1951
+ cellContent.tabIndex = '-1';
1952
+ const dateToFocus = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, currentDate.getDate());
1953
+ const focusKey = this.formatDateKey(dateToFocus);
1954
+ this.navigateToMonth(false, groupIndex, `span[data-date='${focusKey}']:not(.p-disabled):not(.p-ink)`);
1955
+ event.preventDefault();
1956
+ break;
1957
+ }
1958
+ //home
1959
+ case 36:
1960
+ cellContent.tabIndex = '-1';
1961
+ const firstDayDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
1962
+ const firstDayDateKey = this.formatDateKey(firstDayDate);
1963
+ const firstDayCell = findSingle(cellContent.offsetParent, `span[data-date='${firstDayDateKey}']:not(.p-disabled):not(.p-ink)`);
1964
+ if (firstDayCell) {
1965
+ firstDayCell.tabIndex = '0';
1966
+ firstDayCell.focus();
1967
+ }
1968
+ event.preventDefault();
1969
+ break;
1970
+ //end
1971
+ case 35:
1972
+ cellContent.tabIndex = '-1';
1973
+ const lastDayDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);
1974
+ const lastDayDateKey = this.formatDateKey(lastDayDate);
1975
+ const lastDayCell = findSingle(cellContent.offsetParent, `span[data-date='${lastDayDateKey}']:not(.p-disabled):not(.p-ink)`);
1976
+ if (lastDayDate) {
1977
+ lastDayCell.tabIndex = '0';
1978
+ lastDayCell.focus();
1979
+ }
1980
+ event.preventDefault();
1981
+ break;
1982
+ default:
1983
+ //no op
1984
+ break;
1985
+ }
1986
+ }
1987
+ onMonthCellKeydown(event, index) {
1988
+ const cell = event.currentTarget;
1989
+ switch (event.which) {
1990
+ //arrows
1991
+ case 38:
1992
+ case 40: {
1993
+ cell.tabIndex = '-1';
1994
+ var cells = cell.parentElement.children;
1995
+ var cellIndex = getIndex(cell);
1996
+ let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];
1997
+ if (nextCell) {
1998
+ nextCell.tabIndex = '0';
1999
+ nextCell.focus();
2000
+ }
2001
+ event.preventDefault();
2002
+ break;
2003
+ }
2004
+ //left arrow
2005
+ case 37: {
2006
+ cell.tabIndex = '-1';
2007
+ let prevCell = cell.previousElementSibling;
2008
+ if (prevCell) {
2009
+ prevCell.tabIndex = '0';
2010
+ prevCell.focus();
2011
+ }
2012
+ else {
2013
+ this.navigationState = { backward: true };
2014
+ this.navBackward(event);
2015
+ }
2016
+ event.preventDefault();
2017
+ break;
2018
+ }
2019
+ //right arrow
2020
+ case 39: {
2021
+ cell.tabIndex = '-1';
2022
+ let nextCell = cell.nextElementSibling;
2023
+ if (nextCell) {
2024
+ nextCell.tabIndex = '0';
2025
+ nextCell.focus();
2026
+ }
2027
+ else {
2028
+ this.navigationState = { backward: false };
2029
+ this.navForward(event);
2030
+ }
2031
+ event.preventDefault();
2032
+ break;
2033
+ }
2034
+ //enter
2035
+ //space
2036
+ case 13:
2037
+ case 32: {
2038
+ this.onMonthSelect(event, index);
2039
+ event.preventDefault();
2040
+ break;
2041
+ }
2042
+ //escape
2043
+ case 27: {
2044
+ this.inputfieldViewChild?.nativeElement.focus();
2045
+ this.overlayVisible = false;
2046
+ event.preventDefault();
2047
+ break;
2048
+ }
2049
+ //tab
2050
+ case 9: {
2051
+ if (!this.inline) {
2052
+ this.trapFocus(event);
2053
+ }
2054
+ break;
2055
+ }
2056
+ default:
2057
+ //no op
2058
+ break;
2059
+ }
2060
+ }
2061
+ onYearCellKeydown(event, index) {
2062
+ const cell = event.currentTarget;
2063
+ switch (event.which) {
2064
+ //arrows
2065
+ case 38:
2066
+ case 40: {
2067
+ cell.tabIndex = '-1';
2068
+ var cells = cell.parentElement.children;
2069
+ var cellIndex = getIndex(cell);
2070
+ let nextCell = cells[event.which === 40 ? cellIndex + 2 : cellIndex - 2];
2071
+ if (nextCell) {
2072
+ nextCell.tabIndex = '0';
2073
+ nextCell.focus();
2074
+ }
2075
+ event.preventDefault();
2076
+ break;
2077
+ }
2078
+ //left arrow
2079
+ case 37: {
2080
+ cell.tabIndex = '-1';
2081
+ let prevCell = cell.previousElementSibling;
2082
+ if (prevCell) {
2083
+ prevCell.tabIndex = '0';
2084
+ prevCell.focus();
2085
+ }
2086
+ else {
2087
+ this.navigationState = { backward: true };
2088
+ this.navBackward(event);
2089
+ }
2090
+ event.preventDefault();
2091
+ break;
2092
+ }
2093
+ //right arrow
2094
+ case 39: {
2095
+ cell.tabIndex = '-1';
2096
+ let nextCell = cell.nextElementSibling;
2097
+ if (nextCell) {
2098
+ nextCell.tabIndex = '0';
2099
+ nextCell.focus();
2100
+ }
2101
+ else {
2102
+ this.navigationState = { backward: false };
2103
+ this.navForward(event);
2104
+ }
2105
+ event.preventDefault();
2106
+ break;
2107
+ }
2108
+ //enter
2109
+ //space
2110
+ case 13:
2111
+ case 32: {
2112
+ this.onYearSelect(event, index);
2113
+ event.preventDefault();
2114
+ break;
2115
+ }
2116
+ //escape
2117
+ case 27: {
2118
+ this.inputfieldViewChild?.nativeElement.focus();
2119
+ this.overlayVisible = false;
2120
+ event.preventDefault();
2121
+ break;
2122
+ }
2123
+ //tab
2124
+ case 9: {
2125
+ this.trapFocus(event);
2126
+ break;
2127
+ }
2128
+ default:
2129
+ //no op
2130
+ break;
2131
+ }
2132
+ }
2133
+ navigateToMonth(prev, groupIndex, focusKey) {
2134
+ if (prev) {
2135
+ if (this.numberOfMonths === 1 || groupIndex === 0) {
2136
+ this.navigationState = { backward: true };
2137
+ this._focusKey = focusKey;
2138
+ this.navBackward(event);
2139
+ }
2140
+ else {
2141
+ let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];
2142
+ if (focusKey) {
2143
+ const firstDayCell = findSingle(prevMonthContainer, focusKey);
2144
+ firstDayCell.tabIndex = '0';
2145
+ firstDayCell.focus();
2146
+ }
2147
+ else {
2148
+ let cells = find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
2149
+ let focusCell = cells[cells.length - 1];
2150
+ focusCell.tabIndex = '0';
2151
+ focusCell.focus();
2152
+ }
2153
+ }
2154
+ }
2155
+ else {
2156
+ if (this.numberOfMonths === 1 || groupIndex === this.numberOfMonths - 1) {
2157
+ this.navigationState = { backward: false };
2158
+ this._focusKey = focusKey;
2159
+ this.navForward(event);
2160
+ }
2161
+ else {
2162
+ let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];
2163
+ if (focusKey) {
2164
+ const firstDayCell = findSingle(nextMonthContainer, focusKey);
2165
+ firstDayCell.tabIndex = '0';
2166
+ firstDayCell.focus();
2167
+ }
2168
+ else {
2169
+ let focusCell = findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
2170
+ focusCell.tabIndex = '0';
2171
+ focusCell.focus();
2172
+ }
2173
+ }
2174
+ }
2175
+ }
2176
+ updateFocus() {
2177
+ let cell;
2178
+ if (this.navigationState) {
2179
+ if (this.navigationState.button) {
2180
+ this.initFocusableCell();
2181
+ if (this.navigationState.backward)
2182
+ findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev-button').focus();
2183
+ else
2184
+ findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next-button').focus();
2185
+ }
2186
+ else {
2187
+ if (this.navigationState.backward) {
2188
+ let cells;
2189
+ if (this.currentView === 'month') {
2190
+ cells = find(this.contentViewChild.nativeElement, '.p-datepicker-month-view .p-datepicker-month:not(.p-disabled)');
2191
+ }
2192
+ else if (this.currentView === 'year') {
2193
+ cells = find(this.contentViewChild.nativeElement, '.p-datepicker-year-view .p-datepicker-year:not(.p-disabled)');
2194
+ }
2195
+ else {
2196
+ cells = find(this.contentViewChild.nativeElement, this._focusKey || '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
2197
+ }
2198
+ if (cells && cells.length > 0) {
2199
+ cell = cells[cells.length - 1];
2200
+ }
2201
+ }
2202
+ else {
2203
+ if (this.currentView === 'month') {
2204
+ cell = findSingle(this.contentViewChild.nativeElement, '.p-datepicker-month-view .p-datepicker-month:not(.p-disabled)');
2205
+ }
2206
+ else if (this.currentView === 'year') {
2207
+ cell = findSingle(this.contentViewChild.nativeElement, '.p-datepicker-year-view .p-datepicker-year:not(.p-disabled)');
2208
+ }
2209
+ else {
2210
+ cell = findSingle(this.contentViewChild.nativeElement, this._focusKey || '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
2211
+ }
2212
+ }
2213
+ if (cell) {
2214
+ cell.tabIndex = '0';
2215
+ cell.focus();
2216
+ }
2217
+ }
2218
+ this.navigationState = null;
2219
+ this._focusKey = null;
2220
+ }
2221
+ else {
2222
+ this.initFocusableCell();
2223
+ }
2224
+ }
2225
+ initFocusableCell() {
2226
+ const contentEl = this.contentViewChild?.nativeElement;
2227
+ let cell;
2228
+ if (this.currentView === 'month') {
2229
+ let cells = find(contentEl, '.p-datepicker-month-view .p-datepicker-month:not(.p-disabled)');
2230
+ let selectedCell = findSingle(contentEl, '.p-datepicker-month-view .p-datepicker-month.p-highlight');
2231
+ cells.forEach((cell) => (cell.tabIndex = -1));
2232
+ cell = selectedCell || cells[0];
2233
+ if (cells.length === 0) {
2234
+ let disabledCells = find(contentEl, '.p-datepicker-month-view .p-datepicker-month.p-disabled[tabindex = "0"]');
2235
+ disabledCells.forEach((cell) => (cell.tabIndex = -1));
2236
+ }
2237
+ }
2238
+ else if (this.currentView === 'year') {
2239
+ let cells = find(contentEl, '.p-datepicker-year-view .p-datepicker-year:not(.p-disabled)');
2240
+ let selectedCell = findSingle(contentEl, '.p-datepicker-year-view .p-datepicker-year.p-highlight');
2241
+ cells.forEach((cell) => (cell.tabIndex = -1));
2242
+ cell = selectedCell || cells[0];
2243
+ if (cells.length === 0) {
2244
+ let disabledCells = find(contentEl, '.p-datepicker-year-view .p-datepicker-year.p-disabled[tabindex = "0"]');
2245
+ disabledCells.forEach((cell) => (cell.tabIndex = -1));
2246
+ }
2247
+ }
2248
+ else {
2249
+ cell = findSingle(contentEl, 'span.p-highlight');
2250
+ if (!cell) {
2251
+ let todayCell = findSingle(contentEl, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');
2252
+ if (todayCell)
2253
+ cell = todayCell;
2254
+ else
2255
+ cell = findSingle(contentEl, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
2256
+ }
2257
+ }
2258
+ if (cell) {
2259
+ cell.tabIndex = '0';
2260
+ if (!this.preventFocus && (!this.navigationState || !this.navigationState.button)) {
2261
+ setTimeout(() => {
2262
+ if (!this.$disabled()) {
2263
+ cell.focus();
2264
+ }
2265
+ }, 1);
2266
+ }
2267
+ this.preventFocus = false;
2268
+ }
2269
+ }
2270
+ trapFocus(event) {
2271
+ let focusableElements = getFocusableElements(this.contentViewChild.nativeElement);
2272
+ if (focusableElements && focusableElements.length > 0) {
2273
+ if (!focusableElements[0].ownerDocument.activeElement) {
2274
+ focusableElements[0].focus();
2275
+ }
2276
+ else {
2277
+ let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
2278
+ if (event.shiftKey) {
2279
+ if (focusedIndex == -1 || focusedIndex === 0) {
2280
+ if (this.focusTrap) {
2281
+ focusableElements[focusableElements.length - 1].focus();
2282
+ }
2283
+ else {
2284
+ if (focusedIndex === -1)
2285
+ return this.hideOverlay();
2286
+ else if (focusedIndex === 0)
2287
+ return;
2288
+ }
2289
+ }
2290
+ else {
2291
+ focusableElements[focusedIndex - 1].focus();
2292
+ }
2293
+ }
2294
+ else {
2295
+ if (focusedIndex == -1) {
2296
+ if (this.timeOnly) {
2297
+ focusableElements[0].focus();
2298
+ }
2299
+ else {
2300
+ let spanIndex = 0;
2301
+ for (let i = 0; i < focusableElements.length; i++) {
2302
+ if (focusableElements[i].tagName === 'SPAN')
2303
+ spanIndex = i;
2304
+ }
2305
+ focusableElements[spanIndex].focus();
2306
+ }
2307
+ }
2308
+ else if (focusedIndex === focusableElements.length - 1) {
2309
+ if (!this.focusTrap && focusedIndex != -1)
2310
+ return this.hideOverlay();
2311
+ focusableElements[0].focus();
2312
+ }
2313
+ else {
2314
+ focusableElements[focusedIndex + 1].focus();
2315
+ }
2316
+ }
2317
+ }
2318
+ }
2319
+ event.preventDefault();
2320
+ }
2321
+ onMonthDropdownChange(m) {
2322
+ this.currentMonth = parseInt(m);
2323
+ this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
2324
+ this.createMonths(this.currentMonth, this.currentYear);
2325
+ }
2326
+ onYearDropdownChange(y) {
2327
+ this.currentYear = parseInt(y);
2328
+ this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
2329
+ this.createMonths(this.currentMonth, this.currentYear);
2330
+ }
2331
+ convertTo24Hour(hours, pm) {
2332
+ //@ts-ignore
2333
+ if (this.hourFormat == '12') {
2334
+ if (hours === 12) {
2335
+ return pm ? 12 : 0;
2336
+ }
2337
+ else {
2338
+ return pm ? hours + 12 : hours;
2339
+ }
2340
+ }
2341
+ return hours;
2342
+ }
2343
+ constrainTime(hour, minute, second, pm) {
2344
+ let returnTimeTriple = [hour, minute, second];
2345
+ let minHoursExceeds12 = false;
2346
+ let value = this.value;
2347
+ const convertedHour = this.convertTo24Hour(hour, pm);
2348
+ const isRange = this.isRangeSelection(), isMultiple = this.isMultipleSelection(), isMultiValue = isRange || isMultiple;
2349
+ if (isMultiValue) {
2350
+ if (!this.value) {
2351
+ this.value = [new Date(), new Date()];
2352
+ }
2353
+ if (isRange) {
2354
+ value = this.value[1] || this.value[0];
2355
+ }
2356
+ if (isMultiple) {
2357
+ value = this.value[this.value.length - 1];
2358
+ }
2359
+ }
2360
+ const valueDateString = value && isDate(value) ? value.toDateString() : null;
2361
+ let isMinDate = this.minDate && valueDateString && this.minDate.toDateString() === valueDateString;
2362
+ let isMaxDate = this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString;
2363
+ if (isMinDate) {
2364
+ minHoursExceeds12 = this.minDate.getHours() >= 12;
2365
+ }
2366
+ switch (true // intentional fall through
2367
+ ) {
2368
+ case isMinDate && minHoursExceeds12 && this.minDate.getHours() === 12 && this.minDate.getHours() > convertedHour:
2369
+ returnTimeTriple[0] = 11;
2370
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() > minute:
2371
+ returnTimeTriple[1] = this.minDate.getMinutes();
2372
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() === minute && this.minDate.getSeconds() > second:
2373
+ returnTimeTriple[2] = this.minDate.getSeconds();
2374
+ break;
2375
+ case isMinDate && !minHoursExceeds12 && this.minDate.getHours() - 1 === convertedHour && this.minDate.getHours() > convertedHour:
2376
+ returnTimeTriple[0] = 11;
2377
+ this.pm = true;
2378
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() > minute:
2379
+ returnTimeTriple[1] = this.minDate.getMinutes();
2380
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() === minute && this.minDate.getSeconds() > second:
2381
+ returnTimeTriple[2] = this.minDate.getSeconds();
2382
+ break;
2383
+ case isMinDate && minHoursExceeds12 && this.minDate.getHours() > convertedHour && convertedHour !== 12:
2384
+ this.setCurrentHourPM(this.minDate.getHours());
2385
+ returnTimeTriple[0] = this.currentHour || 0;
2386
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() > minute:
2387
+ returnTimeTriple[1] = this.minDate.getMinutes();
2388
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() === minute && this.minDate.getSeconds() > second:
2389
+ returnTimeTriple[2] = this.minDate.getSeconds();
2390
+ break;
2391
+ case isMinDate && this.minDate.getHours() > convertedHour:
2392
+ returnTimeTriple[0] = this.minDate.getHours();
2393
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() > minute:
2394
+ returnTimeTriple[1] = this.minDate.getMinutes();
2395
+ case isMinDate && this.minDate.getHours() === convertedHour && this.minDate.getMinutes() === minute && this.minDate.getSeconds() > second:
2396
+ returnTimeTriple[2] = this.minDate.getSeconds();
2397
+ break;
2398
+ case isMaxDate && this.maxDate.getHours() < convertedHour:
2399
+ returnTimeTriple[0] = this.maxDate.getHours();
2400
+ case isMaxDate && this.maxDate.getHours() === convertedHour && this.maxDate.getMinutes() < minute:
2401
+ returnTimeTriple[1] = this.maxDate.getMinutes();
2402
+ case isMaxDate && this.maxDate.getHours() === convertedHour && this.maxDate.getMinutes() === minute && this.maxDate.getSeconds() < second:
2403
+ returnTimeTriple[2] = this.maxDate.getSeconds();
2404
+ break;
2405
+ }
2406
+ return returnTimeTriple;
2407
+ }
2408
+ incrementHour(event) {
2409
+ const prevHour = this.currentHour ?? 0;
2410
+ let newHour = (this.currentHour ?? 0) + this.stepHour;
2411
+ let newPM = this.pm;
2412
+ if (this.hourFormat == '24')
2413
+ newHour = newHour >= 24 ? newHour - 24 : newHour;
2414
+ else if (this.hourFormat == '12') {
2415
+ // Before the AM/PM break, now after
2416
+ if (prevHour < 12 && newHour > 11) {
2417
+ newPM = !this.pm;
2418
+ }
2419
+ newHour = newHour >= 13 ? newHour - 12 : newHour;
2420
+ }
2421
+ this.toggleAMPMIfNotMinDate(newPM);
2422
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(newHour, this.currentMinute, this.currentSecond, newPM);
2423
+ event.preventDefault();
2424
+ }
2425
+ toggleAMPMIfNotMinDate(newPM) {
2426
+ let value = this.value;
2427
+ const valueDateString = value && isDate(value) ? value.toDateString() : null;
2428
+ let isMinDate = this.minDate && valueDateString && this.minDate.toDateString() === valueDateString;
2429
+ if (isMinDate && this.minDate.getHours() >= 12) {
2430
+ this.pm = true;
2431
+ }
2432
+ else {
2433
+ this.pm = newPM;
2434
+ }
2435
+ }
2436
+ onTimePickerElementMouseDown(event, type, direction) {
2437
+ if (!this.$disabled()) {
2438
+ this.repeat(event, null, type, direction);
2439
+ event.preventDefault();
2440
+ }
2441
+ }
2442
+ onTimePickerElementMouseUp(event) {
2443
+ if (!this.$disabled()) {
2444
+ this.clearTimePickerTimer();
2445
+ this.updateTime();
2446
+ }
2447
+ }
2448
+ onTimePickerElementMouseLeave() {
2449
+ if (!this.$disabled() && this.timePickerTimer) {
2450
+ this.clearTimePickerTimer();
2451
+ this.updateTime();
2452
+ }
2453
+ }
2454
+ repeat(event, interval, type, direction) {
2455
+ let i = interval || 500;
2456
+ this.clearTimePickerTimer();
2457
+ this.timePickerTimer = setTimeout(() => {
2458
+ this.repeat(event, 100, type, direction);
2459
+ this.cd.markForCheck();
2460
+ }, i);
2461
+ switch (type) {
2462
+ case 0:
2463
+ if (direction === 1)
2464
+ this.incrementHour(event);
2465
+ else
2466
+ this.decrementHour(event);
2467
+ break;
2468
+ case 1:
2469
+ if (direction === 1)
2470
+ this.incrementMinute(event);
2471
+ else
2472
+ this.decrementMinute(event);
2473
+ break;
2474
+ case 2:
2475
+ if (direction === 1)
2476
+ this.incrementSecond(event);
2477
+ else
2478
+ this.decrementSecond(event);
2479
+ break;
2480
+ }
2481
+ this.updateInputfield();
2482
+ }
2483
+ clearTimePickerTimer() {
2484
+ if (this.timePickerTimer) {
2485
+ clearTimeout(this.timePickerTimer);
2486
+ this.timePickerTimer = null;
2487
+ }
2488
+ }
2489
+ decrementHour(event) {
2490
+ let newHour = (this.currentHour ?? 0) - this.stepHour;
2491
+ let newPM = this.pm;
2492
+ if (this.hourFormat == '24')
2493
+ newHour = newHour < 0 ? 24 + newHour : newHour;
2494
+ else if (this.hourFormat == '12') {
2495
+ // If we were at noon/midnight, then switch
2496
+ if (this.currentHour === 12) {
2497
+ newPM = !this.pm;
2498
+ }
2499
+ newHour = newHour <= 0 ? 12 + newHour : newHour;
2500
+ }
2501
+ this.toggleAMPMIfNotMinDate(newPM);
2502
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(newHour, this.currentMinute, this.currentSecond, newPM);
2503
+ event.preventDefault();
2504
+ }
2505
+ incrementMinute(event) {
2506
+ let newMinute = (this.currentMinute ?? 0) + this.stepMinute;
2507
+ newMinute = newMinute > 59 ? newMinute - 60 : newMinute;
2508
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(this.currentHour || 0, newMinute, this.currentSecond, this.pm);
2509
+ event.preventDefault();
2510
+ }
2511
+ decrementMinute(event) {
2512
+ let newMinute = (this.currentMinute ?? 0) - this.stepMinute;
2513
+ newMinute = newMinute < 0 ? 60 + newMinute : newMinute;
2514
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(this.currentHour || 0, newMinute, this.currentSecond || 0, this.pm);
2515
+ event.preventDefault();
2516
+ }
2517
+ incrementSecond(event) {
2518
+ let newSecond = this.currentSecond + this.stepSecond;
2519
+ newSecond = newSecond > 59 ? newSecond - 60 : newSecond;
2520
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(this.currentHour || 0, this.currentMinute || 0, newSecond, this.pm);
2521
+ event.preventDefault();
2522
+ }
2523
+ decrementSecond(event) {
2524
+ let newSecond = this.currentSecond - this.stepSecond;
2525
+ newSecond = newSecond < 0 ? 60 + newSecond : newSecond;
2526
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(this.currentHour || 0, this.currentMinute || 0, newSecond, this.pm);
2527
+ event.preventDefault();
2528
+ }
2529
+ updateTime() {
2530
+ let value = this.value;
2531
+ if (this.isRangeSelection()) {
2532
+ value = this.value[1] || this.value[0];
2533
+ }
2534
+ if (this.isMultipleSelection()) {
2535
+ value = this.value[this.value.length - 1];
2536
+ }
2537
+ value = value && isDate(value) ? new Date(value.getTime()) : new Date();
2538
+ if (this.hourFormat == '12') {
2539
+ if (this.currentHour === 12)
2540
+ value.setHours(this.pm ? 12 : 0);
2541
+ else
2542
+ value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
2543
+ }
2544
+ else {
2545
+ value.setHours(this.currentHour);
2546
+ }
2547
+ value.setMinutes(this.currentMinute);
2548
+ value.setSeconds(this.currentSecond);
2549
+ if (this.isRangeSelection()) {
2550
+ if (this.value[1])
2551
+ value = [this.value[0], value];
2552
+ else
2553
+ value = [value, null];
2554
+ }
2555
+ if (this.isMultipleSelection()) {
2556
+ value = [...this.value.slice(0, -1), value];
2557
+ }
2558
+ this.updateModel(value);
2559
+ this.onSelect.emit(value);
2560
+ this.updateInputfield();
2561
+ }
2562
+ toggleAMPM(event) {
2563
+ const newPM = !this.pm;
2564
+ this.pm = newPM;
2565
+ [this.currentHour, this.currentMinute, this.currentSecond] = this.constrainTime(this.currentHour || 0, this.currentMinute || 0, this.currentSecond || 0, newPM);
2566
+ this.updateTime();
2567
+ event.preventDefault();
2568
+ }
2569
+ onUserInput(event) {
2570
+ // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026
2571
+ if (!this.isKeydown) {
2572
+ return;
2573
+ }
2574
+ this.isKeydown = false;
2575
+ let val = event.target.value;
2576
+ try {
2577
+ let value = this.parseValueFromString(val);
2578
+ if (this.isValidSelection(value)) {
2579
+ this.updateModel(value);
2580
+ this.updateUI();
2581
+ }
2582
+ else if (this.keepInvalid) {
2583
+ this.updateModel(value);
2584
+ }
2585
+ }
2586
+ catch (err) {
2587
+ //invalid date
2588
+ let value = this.keepInvalid ? val : null;
2589
+ this.updateModel(value);
2590
+ }
2591
+ this.onInput.emit(event);
2592
+ }
2593
+ isValidSelection(value) {
2594
+ if (this.isSingleSelection()) {
2595
+ return this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false);
2596
+ }
2597
+ let isValid = value.every((v) => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false));
2598
+ if (isValid && this.isRangeSelection()) {
2599
+ isValid = value.length === 1 || (value.length > 1 && value[1] >= value[0]);
2600
+ }
2601
+ return isValid;
2602
+ }
2603
+ parseValueFromString(text) {
2604
+ if (!text || text.trim().length === 0) {
2605
+ return null;
2606
+ }
2607
+ let value;
2608
+ if (this.isSingleSelection()) {
2609
+ value = this.parseDateTime(text);
2610
+ }
2611
+ else if (this.isMultipleSelection()) {
2612
+ let tokens = text.split(this.multipleSeparator);
2613
+ value = [];
2614
+ for (let token of tokens) {
2615
+ value.push(this.parseDateTime(token.trim()));
2616
+ }
2617
+ }
2618
+ else if (this.isRangeSelection()) {
2619
+ let tokens = text.split(' ' + this.rangeSeparator + ' ');
2620
+ value = [];
2621
+ for (let i = 0; i < tokens.length; i++) {
2622
+ value[i] = this.parseDateTime(tokens[i].trim());
2623
+ }
2624
+ }
2625
+ return value;
2626
+ }
2627
+ parseDateTime(text) {
2628
+ let date;
2629
+ let parts = text.split(' ');
2630
+ if (this.timeOnly) {
2631
+ date = new Date();
2632
+ this.populateTime(date, parts[0], parts[1]);
2633
+ }
2634
+ else {
2635
+ const dateFormat = this.getDateFormat();
2636
+ if (this.showTime) {
2637
+ let ampm = this.hourFormat == '12' ? parts.pop() : null;
2638
+ let timeString = parts.pop();
2639
+ date = this.parseDate(parts.join(' '), dateFormat);
2640
+ this.populateTime(date, timeString, ampm);
2641
+ }
2642
+ else {
2643
+ date = this.parseDate(text, dateFormat);
2644
+ }
2645
+ }
2646
+ return date;
2647
+ }
2648
+ populateTime(value, timeString, ampm) {
2649
+ if (this.hourFormat == '12' && !ampm) {
2650
+ throw 'Invalid Time';
2651
+ }
2652
+ this.pm = ampm === 'PM' || ampm === 'pm';
2653
+ let time = this.parseTime(timeString);
2654
+ value.setHours(time.hour);
2655
+ value.setMinutes(time.minute);
2656
+ value.setSeconds(time.second);
2657
+ }
2658
+ isValidDate(date) {
2659
+ return isDate(date) && isNotEmpty(date);
2660
+ }
2661
+ updateUI() {
2662
+ let propValue = this.value;
2663
+ if (Array.isArray(propValue)) {
2664
+ propValue = propValue.length === 2 ? propValue[1] : propValue[0];
2665
+ }
2666
+ let val = this.defaultDate && this.isValidDate(this.defaultDate) && !this.value ? this.defaultDate : propValue && this.isValidDate(propValue) ? propValue : new Date();
2667
+ this.currentMonth = val.getMonth();
2668
+ this.currentYear = val.getFullYear();
2669
+ this.createMonths(this.currentMonth, this.currentYear);
2670
+ if (this.showTime || this.timeOnly) {
2671
+ this.setCurrentHourPM(val.getHours());
2672
+ this.currentMinute = val.getMinutes();
2673
+ this.currentSecond = this.showSeconds ? val.getSeconds() : 0;
2674
+ }
2675
+ }
2676
+ showOverlay() {
2677
+ if (!this.overlayVisible) {
2678
+ this.updateUI();
2679
+ if (!this.touchUI) {
2680
+ this.preventFocus = true;
2681
+ }
2682
+ this.overlayMinWidth = this.el.nativeElement.offsetWidth;
2683
+ this.overlayVisible = true;
2684
+ }
2685
+ }
2686
+ hideOverlay() {
2687
+ this.inputfieldViewChild?.nativeElement.focus();
2688
+ this.overlayVisible = false;
2689
+ this.clearTimePickerTimer();
2690
+ if (this.touchUI) {
2691
+ this.disableModality();
2692
+ }
2693
+ this.cd.markForCheck();
2694
+ }
2695
+ toggle() {
2696
+ if (!this.inline) {
2697
+ if (!this.overlayVisible) {
2698
+ this.showOverlay();
2699
+ this.inputfieldViewChild?.nativeElement.focus();
2700
+ }
2701
+ else {
2702
+ this.hideOverlay();
2703
+ }
2704
+ }
2705
+ }
2706
+ onOverlayBeforeEnter(event) {
2707
+ this.overlay = event.element;
2708
+ this.$attrSelector && this.overlay.setAttribute(this.$attrSelector, '');
2709
+ const styles = !this.inline ? { position: 'absolute', top: '0', minWidth: `${this.overlayMinWidth}px` } : undefined;
2710
+ addStyle(this.overlay, styles || {});
2711
+ this.appendOverlay();
2712
+ this.alignOverlay();
2713
+ this.setZIndex();
2714
+ this.updateFocus();
2715
+ this.bindListeners();
2716
+ this.onShow.emit(event.element);
2717
+ }
2718
+ onOverlayAfterLeave(event) {
2719
+ if (this.autoZIndex) {
2720
+ ZIndexUtils.clear(event.element);
2721
+ }
2722
+ this.restoreOverlayAppend();
2723
+ this.onOverlayHide();
2724
+ this.onClose.emit(event.element);
2725
+ }
2726
+ appendOverlay() {
2727
+ if (this.$appendTo() && this.$appendTo() !== 'self') {
2728
+ if (this.$appendTo() === 'body')
2729
+ this.document.body.appendChild(this.overlay);
2730
+ else
2731
+ appendChild(this.$appendTo(), this.overlay);
2732
+ }
2733
+ }
2734
+ restoreOverlayAppend() {
2735
+ if (this.overlay && this.$appendTo() !== 'self') {
2736
+ this.el.nativeElement.appendChild(this.overlay);
2737
+ }
2738
+ }
2739
+ alignOverlay() {
2740
+ if (this.touchUI) {
2741
+ this.enableModality(this.overlay);
2742
+ }
2743
+ else if (this.overlay) {
2744
+ if (this.$appendTo() && this.$appendTo() !== 'self') {
2745
+ absolutePosition(this.overlay, this.inputfieldViewChild?.nativeElement);
2746
+ }
2747
+ else {
2748
+ relativePosition(this.overlay, this.inputfieldViewChild?.nativeElement);
2749
+ }
2750
+ }
2751
+ }
2752
+ bindListeners() {
2753
+ this.bindDocumentClickListener();
2754
+ this.bindDocumentResizeListener();
2755
+ this.bindScrollListener();
2756
+ }
2757
+ setZIndex() {
2758
+ if (this.autoZIndex) {
2759
+ if (this.touchUI)
2760
+ ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);
2761
+ else
2762
+ ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);
2763
+ }
2764
+ }
2765
+ enableModality(element) {
2766
+ if (!this.mask && this.touchUI) {
2767
+ this.mask = this.renderer.createElement('div');
2768
+ this.renderer.setStyle(this.mask, 'zIndex', String(parseInt(element.style.zIndex) - 1));
2769
+ let maskStyleClass = 'p-overlay-mask p-datepicker-mask p-datepicker-mask-scrollblocker p-overlay-mask p-overlay-mask-enter-active';
2770
+ addClass(this.mask, maskStyleClass);
2771
+ this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
2772
+ this.disableModality();
2773
+ this.overlayVisible = false;
2774
+ });
2775
+ this.renderer.appendChild(this.document.body, this.mask);
2776
+ blockBodyScroll();
2777
+ }
2778
+ }
2779
+ disableModality() {
2780
+ if (this.mask) {
2781
+ addClass(this.mask, 'p-overlay-mask-leave');
2782
+ if (!this.animationEndListener) {
2783
+ this.animationEndListener = this.renderer.listen(this.mask, 'animationend', this.destroyMask.bind(this));
2784
+ }
2785
+ }
2786
+ }
2787
+ destroyMask() {
2788
+ if (!this.mask) {
2789
+ return;
2790
+ }
2791
+ this.renderer.removeChild(this.document.body, this.mask);
2792
+ let bodyChildren = this.document.body.children;
2793
+ let hasBlockerMasks;
2794
+ for (let i = 0; i < bodyChildren.length; i++) {
2795
+ let bodyChild = bodyChildren[i];
2796
+ if (hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {
2797
+ hasBlockerMasks = true;
2798
+ break;
2799
+ }
2800
+ }
2801
+ if (!hasBlockerMasks) {
2802
+ unblockBodyScroll();
2803
+ }
2804
+ this.unbindAnimationEndListener();
2805
+ this.unbindMaskClickListener();
2806
+ this.mask = null;
2807
+ }
2808
+ unbindMaskClickListener() {
2809
+ if (this.maskClickListener) {
2810
+ this.maskClickListener();
2811
+ this.maskClickListener = null;
2812
+ }
2813
+ }
2814
+ unbindAnimationEndListener() {
2815
+ if (this.animationEndListener && this.mask) {
2816
+ this.animationEndListener();
2817
+ this.animationEndListener = null;
2818
+ }
2819
+ }
2820
+ getDateFormat() {
2821
+ return this.dateFormat || this.getTranslation('dateFormat');
2822
+ }
2823
+ getFirstDateOfWeek() {
2824
+ return this._firstDayOfWeek || this.getTranslation(TranslationKeys.FIRST_DAY_OF_WEEK);
2825
+ }
2826
+ // Ported from jquery-ui datepicker formatDate
2827
+ formatDate(date, format) {
2828
+ if (!date) {
2829
+ return '';
2830
+ }
2831
+ let iFormat;
2832
+ const lookAhead = (match) => {
2833
+ const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
2834
+ if (matches) {
2835
+ iFormat++;
2836
+ }
2837
+ return matches;
2838
+ }, formatNumber = (match, value, len) => {
2839
+ let num = '' + value;
2840
+ if (lookAhead(match)) {
2841
+ while (num.length < len) {
2842
+ num = '0' + num;
2843
+ }
2844
+ }
2845
+ return num;
2846
+ }, formatName = (match, value, shortNames, longNames) => {
2847
+ return lookAhead(match) ? longNames[value] : shortNames[value];
2848
+ };
2849
+ let output = '';
2850
+ let literal = false;
2851
+ if (date) {
2852
+ for (iFormat = 0; iFormat < format.length; iFormat++) {
2853
+ if (literal) {
2854
+ if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
2855
+ literal = false;
2856
+ }
2857
+ else {
2858
+ output += format.charAt(iFormat);
2859
+ }
2860
+ }
2861
+ else {
2862
+ switch (format.charAt(iFormat)) {
2863
+ case 'd':
2864
+ output += formatNumber('d', date.getDate(), 2);
2865
+ break;
2866
+ case 'D':
2867
+ output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
2868
+ break;
2869
+ case 'o':
2870
+ output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
2871
+ break;
2872
+ case 'm':
2873
+ output += formatNumber('m', date.getMonth() + 1, 2);
2874
+ break;
2875
+ case 'M':
2876
+ output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
2877
+ break;
2878
+ case 'y':
2879
+ output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);
2880
+ break;
2881
+ case '@':
2882
+ output += date.getTime();
2883
+ break;
2884
+ case '!':
2885
+ output += date.getTime() * 10000 + this.ticksTo1970;
2886
+ break;
2887
+ case "'":
2888
+ if (lookAhead("'")) {
2889
+ output += "'";
2890
+ }
2891
+ else {
2892
+ literal = true;
2893
+ }
2894
+ break;
2895
+ default:
2896
+ output += format.charAt(iFormat);
2897
+ }
2898
+ }
2899
+ }
2900
+ }
2901
+ return output;
2902
+ }
2903
+ formatTime(date) {
2904
+ if (!date) {
2905
+ return '';
2906
+ }
2907
+ let output = '';
2908
+ let hours = date.getHours();
2909
+ let minutes = date.getMinutes();
2910
+ let seconds = date.getSeconds();
2911
+ if (this.hourFormat == '12' && hours > 11 && hours != 12) {
2912
+ hours -= 12;
2913
+ }
2914
+ if (this.hourFormat == '12') {
2915
+ output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;
2916
+ }
2917
+ else {
2918
+ output += hours < 10 ? '0' + hours : hours;
2919
+ }
2920
+ output += ':';
2921
+ output += minutes < 10 ? '0' + minutes : minutes;
2922
+ if (this.showSeconds) {
2923
+ output += ':';
2924
+ output += seconds < 10 ? '0' + seconds : seconds;
2925
+ }
2926
+ if (this.hourFormat == '12') {
2927
+ output += date.getHours() > 11 ? ' PM' : ' AM';
2928
+ }
2929
+ return output;
2930
+ }
2931
+ parseTime(value) {
2932
+ let tokens = value.split(':');
2933
+ let validTokenLength = this.showSeconds ? 3 : 2;
2934
+ if (tokens.length !== validTokenLength) {
2935
+ throw 'Invalid time';
2936
+ }
2937
+ let h = parseInt(tokens[0]);
2938
+ let m = parseInt(tokens[1]);
2939
+ let s = this.showSeconds ? parseInt(tokens[2]) : null;
2940
+ if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {
2941
+ throw 'Invalid time';
2942
+ }
2943
+ else {
2944
+ if (this.hourFormat == '12') {
2945
+ if (h !== 12 && this.pm) {
2946
+ h += 12;
2947
+ }
2948
+ else if (!this.pm && h === 12) {
2949
+ h -= 12;
2950
+ }
2951
+ }
2952
+ return { hour: h, minute: m, second: s };
2953
+ }
2954
+ }
2955
+ // Ported from jquery-ui datepicker parseDate
2956
+ parseDate(value, format) {
2957
+ if (format == null || value == null) {
2958
+ throw 'Invalid arguments';
2959
+ }
2960
+ value = typeof value === 'object' ? value.toString() : value + '';
2961
+ if (value === '') {
2962
+ return null;
2963
+ }
2964
+ let iFormat, dim, extra, iValue = 0, shortYearCutoff = typeof this.shortYearCutoff !== 'string' ? this.shortYearCutoff : (new Date().getFullYear() % 100) + parseInt(this.shortYearCutoff, 10), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {
2965
+ let matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
2966
+ if (matches) {
2967
+ iFormat++;
2968
+ }
2969
+ return matches;
2970
+ }, getNumber = (match) => {
2971
+ let isDoubled = lookAhead(match), size = match === '@' ? 14 : match === '!' ? 20 : match === 'y' && isDoubled ? 4 : match === 'o' ? 3 : 2, minSize = match === 'y' ? size : 1, digits = new RegExp('^\\d{' + minSize + ',' + size + '}'), num = value.substring(iValue).match(digits);
2972
+ if (!num) {
2973
+ throw 'Missing number at position ' + iValue;
2974
+ }
2975
+ iValue += num[0].length;
2976
+ return parseInt(num[0], 10);
2977
+ }, getName = (match, shortNames, longNames) => {
2978
+ let index = -1;
2979
+ let arr = lookAhead(match) ? longNames : shortNames;
2980
+ let names = [];
2981
+ for (let i = 0; i < arr.length; i++) {
2982
+ names.push([i, arr[i]]);
2983
+ }
2984
+ names.sort((a, b) => {
2985
+ return -(a[1].length - b[1].length);
2986
+ });
2987
+ for (let i = 0; i < names.length; i++) {
2988
+ let name = names[i][1];
2989
+ if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
2990
+ index = names[i][0];
2991
+ iValue += name.length;
2992
+ break;
2993
+ }
2994
+ }
2995
+ if (index !== -1) {
2996
+ return index + 1;
2997
+ }
2998
+ else {
2999
+ throw 'Unknown name at position ' + iValue;
3000
+ }
3001
+ }, checkLiteral = () => {
3002
+ if (value.charAt(iValue) !== format.charAt(iFormat)) {
3003
+ throw 'Unexpected literal at position ' + iValue;
3004
+ }
3005
+ iValue++;
3006
+ };
3007
+ if (this.view === 'month') {
3008
+ day = 1;
3009
+ }
3010
+ for (iFormat = 0; iFormat < format.length; iFormat++) {
3011
+ if (literal) {
3012
+ if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
3013
+ literal = false;
3014
+ }
3015
+ else {
3016
+ checkLiteral();
3017
+ }
3018
+ }
3019
+ else {
3020
+ switch (format.charAt(iFormat)) {
3021
+ case 'd':
3022
+ day = getNumber('d');
3023
+ break;
3024
+ case 'D':
3025
+ getName('D', this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
3026
+ break;
3027
+ case 'o':
3028
+ doy = getNumber('o');
3029
+ break;
3030
+ case 'm':
3031
+ month = getNumber('m');
3032
+ break;
3033
+ case 'M':
3034
+ month = getName('M', this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
3035
+ break;
3036
+ case 'y':
3037
+ year = getNumber('y');
3038
+ break;
3039
+ case '@':
3040
+ date = new Date(getNumber('@'));
3041
+ year = date.getFullYear();
3042
+ month = date.getMonth() + 1;
3043
+ day = date.getDate();
3044
+ break;
3045
+ case '!':
3046
+ date = new Date((getNumber('!') - this.ticksTo1970) / 10000);
3047
+ year = date.getFullYear();
3048
+ month = date.getMonth() + 1;
3049
+ day = date.getDate();
3050
+ break;
3051
+ case "'":
3052
+ if (lookAhead("'")) {
3053
+ checkLiteral();
3054
+ }
3055
+ else {
3056
+ literal = true;
3057
+ }
3058
+ break;
3059
+ default:
3060
+ checkLiteral();
3061
+ }
3062
+ }
3063
+ }
3064
+ if (iValue < value.length) {
3065
+ extra = value.substr(iValue);
3066
+ if (!/^\s+/.test(extra)) {
3067
+ throw 'Extra/unparsed characters found in date: ' + extra;
3068
+ }
3069
+ }
3070
+ if (year === -1) {
3071
+ year = new Date().getFullYear();
3072
+ }
3073
+ else if (year < 100) {
3074
+ year += new Date().getFullYear() - (new Date().getFullYear() % 100) + (year <= shortYearCutoff ? 0 : -100);
3075
+ }
3076
+ if (doy > -1) {
3077
+ month = 1;
3078
+ day = doy;
3079
+ do {
3080
+ dim = this.getDaysCountInMonth(year, month - 1);
3081
+ if (day <= dim) {
3082
+ break;
3083
+ }
3084
+ month++;
3085
+ day -= dim;
3086
+ } while (true);
3087
+ }
3088
+ if (this.view === 'year') {
3089
+ month = month === -1 ? 1 : month;
3090
+ day = day === -1 ? 1 : day;
3091
+ }
3092
+ date = this.daylightSavingAdjust(new Date(year, month - 1, day));
3093
+ if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
3094
+ throw 'Invalid date'; // E.g. 31/02/00
3095
+ }
3096
+ return date;
3097
+ }
3098
+ daylightSavingAdjust(date) {
3099
+ if (!date) {
3100
+ return null;
3101
+ }
3102
+ date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
3103
+ return date;
3104
+ }
3105
+ isValidDateForTimeConstraints(selectedDate) {
3106
+ if (this.keepInvalid) {
3107
+ return true; // If we are keeping invalid dates, we don't need to check for time constraints
3108
+ }
3109
+ return (!this.minDate || selectedDate >= this.minDate) && (!this.maxDate || selectedDate <= this.maxDate);
3110
+ }
3111
+ onTodayButtonClick(event) {
3112
+ const date = new Date();
3113
+ const dateMeta = {
3114
+ day: date.getDate(),
3115
+ month: date.getMonth(),
3116
+ year: date.getFullYear(),
3117
+ otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear,
3118
+ today: true,
3119
+ selectable: true
3120
+ };
3121
+ this.createMonths(date.getMonth(), date.getFullYear());
3122
+ this.onDateSelect(event, dateMeta);
3123
+ this.onTodayClick.emit(date);
3124
+ }
3125
+ onClearButtonClick(event) {
3126
+ this.updateModel(null);
3127
+ this.updateInputfield();
3128
+ this.hideOverlay();
3129
+ this.onClearClick.emit(event);
3130
+ }
3131
+ createResponsiveStyle() {
3132
+ if (this.numberOfMonths > 1 && this.responsiveOptions) {
3133
+ if (!this.responsiveStyleElement) {
3134
+ this.responsiveStyleElement = this.renderer.createElement('style');
3135
+ this.responsiveStyleElement.type = 'text/css';
3136
+ setAttribute(this.responsiveStyleElement, 'nonce', this.config?.csp()?.nonce);
3137
+ this.renderer.appendChild(this.document.body, this.responsiveStyleElement);
3138
+ }
3139
+ let innerHTML = '';
3140
+ if (this.responsiveOptions) {
3141
+ let responsiveOptions = [...this.responsiveOptions].filter((o) => !!(o.breakpoint && o.numMonths)).sort((o1, o2) => -1 * o1.breakpoint.localeCompare(o2.breakpoint, undefined, { numeric: true }));
3142
+ for (let i = 0; i < responsiveOptions.length; i++) {
3143
+ let { breakpoint, numMonths } = responsiveOptions[i];
3144
+ let styles = `
3145
+ .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${numMonths}) .p-datepicker-next {
3146
+ display: inline-flex !important;
3147
+ }
3148
+ `;
3149
+ for (let j = numMonths; j < this.numberOfMonths; j++) {
3150
+ styles += `
3151
+ .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${j + 1}) {
3152
+ display: none !important;
3153
+ }
3154
+ `;
3155
+ }
3156
+ innerHTML += `
3157
+ @media screen and (max-width: ${breakpoint}) {
3158
+ ${styles}
3159
+ }
3160
+ `;
3161
+ }
3162
+ }
3163
+ this.responsiveStyleElement.innerHTML = innerHTML;
3164
+ setAttribute(this.responsiveStyleElement, 'nonce', this.config?.csp()?.nonce);
3165
+ }
3166
+ }
3167
+ destroyResponsiveStyleElement() {
3168
+ if (this.responsiveStyleElement) {
3169
+ this.responsiveStyleElement.remove();
3170
+ this.responsiveStyleElement = null;
3171
+ }
3172
+ }
3173
+ bindDocumentClickListener() {
3174
+ if (!this.documentClickListener) {
3175
+ this.zone.runOutsideAngular(() => {
3176
+ const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;
3177
+ this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {
3178
+ if (this.isOutsideClicked(event) && this.overlayVisible) {
3179
+ this.zone.run(() => {
3180
+ this.hideOverlay();
3181
+ this.onClickOutside.emit(event);
3182
+ this.cd.markForCheck();
3183
+ });
3184
+ }
3185
+ });
3186
+ });
3187
+ }
3188
+ }
3189
+ unbindDocumentClickListener() {
3190
+ if (this.documentClickListener) {
3191
+ this.documentClickListener();
3192
+ this.documentClickListener = null;
3193
+ }
3194
+ }
3195
+ bindDocumentResizeListener() {
3196
+ if (!this.documentResizeListener && !this.touchUI) {
3197
+ this.documentResizeListener = this.renderer.listen(this.window, 'resize', this.onWindowResize.bind(this));
3198
+ }
3199
+ }
3200
+ unbindDocumentResizeListener() {
3201
+ if (this.documentResizeListener) {
3202
+ this.documentResizeListener();
3203
+ this.documentResizeListener = null;
3204
+ }
3205
+ }
3206
+ bindScrollListener() {
3207
+ if (!this.scrollHandler) {
3208
+ this.scrollHandler = new ConnectedOverlayScrollHandler(this.el?.nativeElement, () => {
3209
+ if (this.overlayVisible) {
3210
+ this.hideOverlay();
3211
+ }
3212
+ });
3213
+ }
3214
+ this.scrollHandler.bindScrollListener();
3215
+ }
3216
+ unbindScrollListener() {
3217
+ if (this.scrollHandler) {
3218
+ this.scrollHandler.unbindScrollListener();
3219
+ }
3220
+ }
3221
+ isOutsideClicked(event) {
3222
+ return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
3223
+ }
3224
+ isNavIconClicked(event) {
3225
+ return hasClass(event.target, 'p-datepicker-prev-button') || hasClass(event.target, 'p-datepicker-prev-icon') || hasClass(event.target, 'p-datepicker-next-button') || hasClass(event.target, 'p-datepicker-next-icon');
3226
+ }
3227
+ onWindowResize() {
3228
+ if (this.overlayVisible && !isTouchDevice()) {
3229
+ this.hideOverlay();
3230
+ }
3231
+ }
3232
+ onOverlayHide() {
3233
+ this.currentView = this.view;
3234
+ if (this.mask) {
3235
+ this.destroyMask();
3236
+ }
3237
+ this.unbindDocumentClickListener();
3238
+ this.unbindDocumentResizeListener();
3239
+ this.unbindScrollListener();
3240
+ this.overlay = null;
3241
+ }
3242
+ /**
3243
+ * @override
3244
+ *
3245
+ * @see {@link BaseEditableHolder.writeControlValue}
3246
+ * Writes the value to the control.
3247
+ */
3248
+ writeControlValue(value) {
3249
+ this.value = value;
3250
+ if (this.value && typeof this.value === 'string') {
3251
+ try {
3252
+ this.value = this.parseValueFromString(this.value);
3253
+ }
3254
+ catch {
3255
+ if (this.keepInvalid) {
3256
+ this.value = value;
3257
+ }
3258
+ }
3259
+ }
3260
+ this.updateInputfield();
3261
+ this.updateUI();
3262
+ this.cd.markForCheck();
3263
+ }
3264
+ onDestroy() {
3265
+ if (this.scrollHandler) {
3266
+ this.scrollHandler.destroy();
3267
+ this.scrollHandler = null;
3268
+ }
3269
+ if (this.translationSubscription) {
3270
+ this.translationSubscription.unsubscribe();
3271
+ }
3272
+ if (this.overlay && this.autoZIndex) {
3273
+ ZIndexUtils.clear(this.overlay);
3274
+ }
3275
+ this.destroyResponsiveStyleElement();
3276
+ this.clearTimePickerTimer();
3277
+ this.restoreOverlayAppend();
3278
+ this.onOverlayHide();
3279
+ }
3280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePicker, deps: [{ token: i0.NgZone }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
3281
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: DatePicker, isStandalone: true, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: { iconDisplay: { classPropertyName: "iconDisplay", publicName: "iconDisplay", isSignal: false, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: false, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: false, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: false, isRequired: false, transformFunction: null }, inputStyleClass: { classPropertyName: "inputStyleClass", publicName: "inputStyleClass", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, iconAriaLabel: { classPropertyName: "iconAriaLabel", publicName: "iconAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: false, isRequired: false, transformFunction: null }, multipleSeparator: { classPropertyName: "multipleSeparator", publicName: "multipleSeparator", isSignal: false, isRequired: false, transformFunction: null }, rangeSeparator: { classPropertyName: "rangeSeparator", publicName: "rangeSeparator", isSignal: false, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showOtherMonths: { classPropertyName: "showOtherMonths", publicName: "showOtherMonths", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, selectOtherMonths: { classPropertyName: "selectOtherMonths", publicName: "selectOtherMonths", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, readonlyInput: { classPropertyName: "readonlyInput", publicName: "readonlyInput", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, shortYearCutoff: { classPropertyName: "shortYearCutoff", publicName: "shortYearCutoff", isSignal: false, isRequired: false, transformFunction: null }, hourFormat: { classPropertyName: "hourFormat", publicName: "hourFormat", isSignal: false, isRequired: false, transformFunction: null }, timeOnly: { classPropertyName: "timeOnly", publicName: "timeOnly", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, stepHour: { classPropertyName: "stepHour", publicName: "stepHour", isSignal: false, isRequired: false, transformFunction: numberAttribute }, stepMinute: { classPropertyName: "stepMinute", publicName: "stepMinute", isSignal: false, isRequired: false, transformFunction: numberAttribute }, stepSecond: { classPropertyName: "stepSecond", publicName: "stepSecond", isSignal: false, isRequired: false, transformFunction: numberAttribute }, showSeconds: { classPropertyName: "showSeconds", publicName: "showSeconds", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showOnFocus: { classPropertyName: "showOnFocus", publicName: "showOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showWeek: { classPropertyName: "showWeek", publicName: "showWeek", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, startWeekFromFirstDayOfYear: { classPropertyName: "startWeekFromFirstDayOfYear", publicName: "startWeekFromFirstDayOfYear", isSignal: false, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: false, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: false, isRequired: false, transformFunction: null }, maxDateCount: { classPropertyName: "maxDateCount", publicName: "maxDateCount", isSignal: false, isRequired: false, transformFunction: numberAttribute }, showButtonBar: { classPropertyName: "showButtonBar", publicName: "showButtonBar", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, todayButtonStyleClass: { classPropertyName: "todayButtonStyleClass", publicName: "todayButtonStyleClass", isSignal: false, isRequired: false, transformFunction: null }, clearButtonStyleClass: { classPropertyName: "clearButtonStyleClass", publicName: "clearButtonStyleClass", isSignal: false, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, autoZIndex: { classPropertyName: "autoZIndex", publicName: "autoZIndex", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, panelStyleClass: { classPropertyName: "panelStyleClass", publicName: "panelStyleClass", isSignal: false, isRequired: false, transformFunction: null }, panelStyle: { classPropertyName: "panelStyle", publicName: "panelStyle", isSignal: false, isRequired: false, transformFunction: null }, keepInvalid: { classPropertyName: "keepInvalid", publicName: "keepInvalid", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, hideOnDateTimeSelect: { classPropertyName: "hideOnDateTimeSelect", publicName: "hideOnDateTimeSelect", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, touchUI: { classPropertyName: "touchUI", publicName: "touchUI", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, timeSeparator: { classPropertyName: "timeSeparator", publicName: "timeSeparator", isSignal: false, isRequired: false, transformFunction: null }, focusTrap: { classPropertyName: "focusTrap", publicName: "focusTrap", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showTransitionOptions: { classPropertyName: "showTransitionOptions", publicName: "showTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, hideTransitionOptions: { classPropertyName: "hideTransitionOptions", publicName: "hideTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: false, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: false, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: false, isRequired: false, transformFunction: null }, disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: false, isRequired: false, transformFunction: null }, showTime: { classPropertyName: "showTime", publicName: "showTime", isSignal: false, isRequired: false, transformFunction: null }, responsiveOptions: { classPropertyName: "responsiveOptions", publicName: "responsiveOptions", isSignal: false, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: false, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: false, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: false, isRequired: false, transformFunction: null }, defaultDate: { classPropertyName: "defaultDate", publicName: "defaultDate", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, motionOptions: { classPropertyName: "motionOptions", publicName: "motionOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onClose: "onClose", onSelect: "onSelect", onClear: "onClear", onInput: "onInput", onTodayClick: "onTodayClick", onClearClick: "onClearClick", onMonthChange: "onMonthChange", onYearChange: "onYearChange", onClickOutside: "onClickOutside", onShow: "onShow" }, host: { properties: { "class": "cn(cx('root'), styleClass)", "style": "sx('root')" } }, providers: [DATEPICKER_VALUE_ACCESSOR, DatePickerStyle, { provide: DATEPICKER_INSTANCE, useExisting: DatePicker }, { provide: PARENT_INSTANCE, useExisting: DatePicker }], queries: [{ propertyName: "dateTemplate", first: true, predicate: ["date"] }, { propertyName: "headerTemplate", first: true, predicate: ["header"] }, { propertyName: "footerTemplate", first: true, predicate: ["footer"] }, { propertyName: "disabledDateTemplate", first: true, predicate: ["disabledDate"] }, { propertyName: "decadeTemplate", first: true, predicate: ["decade"] }, { propertyName: "previousIconTemplate", first: true, predicate: ["previousicon"] }, { propertyName: "nextIconTemplate", first: true, predicate: ["nexticon"] }, { propertyName: "triggerIconTemplate", first: true, predicate: ["triggericon"] }, { propertyName: "clearIconTemplate", first: true, predicate: ["clearicon"] }, { propertyName: "decrementIconTemplate", first: true, predicate: ["decrementicon"] }, { propertyName: "incrementIconTemplate", first: true, predicate: ["incrementicon"] }, { propertyName: "inputIconTemplate", first: true, predicate: ["inputicon"] }, { propertyName: "buttonBarTemplate", first: true, predicate: ["buttonbar"] }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "content", first: true, predicate: ["contentWrapper"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i2.Bind }], ngImport: i0, template: `
3282
+ <ng-template [ngIf]="!inline">
3283
+ <input
3284
+ #inputfield
3285
+ pInputText
3286
+ data-p-maskable
3287
+ [pSize]="size()"
3288
+ [attr.size]="inputSize()"
3289
+ type="text"
3290
+ role="combobox"
3291
+ [attr.id]="inputId"
3292
+ [attr.name]="name()"
3293
+ [attr.aria-required]="required()"
3294
+ aria-autocomplete="none"
3295
+ aria-haspopup="dialog"
3296
+ [attr.aria-expanded]="overlayVisible ?? false"
3297
+ [attr.aria-controls]="overlayVisible ? panelId : null"
3298
+ [attr.aria-labelledby]="ariaLabelledBy"
3299
+ [attr.aria-label]="ariaLabel"
3300
+ [value]="inputFieldValue"
3301
+ (focus)="onInputFocus($event)"
3302
+ (keydown)="onInputKeydown($event)"
3303
+ (click)="onInputClick()"
3304
+ (blur)="onInputBlur($event)"
3305
+ [attr.required]="required() ? '' : undefined"
3306
+ [attr.readonly]="readonlyInput ? '' : undefined"
3307
+ [attr.disabled]="$disabled() ? '' : undefined"
3308
+ (input)="onUserInput($event)"
3309
+ [ngStyle]="inputStyle"
3310
+ [class]="cn(cx('pcInputText'), inputStyleClass)"
3311
+ [attr.placeholder]="placeholder"
3312
+ [attr.tabindex]="tabindex"
3313
+ [attr.inputmode]="touchUI ? 'off' : null"
3314
+ autocomplete="off"
3315
+ [pAutoFocus]="autofocus"
3316
+ [variant]="$variant()"
3317
+ [fluid]="hasFluid"
3318
+ [invalid]="invalid()"
3319
+ [pt]="ptm('pcInputText')"
3320
+ [unstyled]="unstyled()"
3321
+ />
3322
+ <ng-container *ngIf="showClear && !$disabled() && inputfieldViewChild?.nativeElement?.value">
3323
+ <svg data-p-icon="times" *ngIf="!clearIconTemplate && !_clearIconTemplate" [class]="cx('clearIcon')" [pBind]="ptm('inputIcon')" (click)="clear()" />
3324
+ <span *ngIf="clearIconTemplate || _clearIconTemplate" [class]="cx('clearIcon')" [pBind]="ptm('inputIcon')" (click)="clear()">
3325
+ <ng-template *ngTemplateOutlet="clearIconTemplate || _clearIconTemplate"></ng-template>
3326
+ </span>
3327
+ </ng-container>
3328
+ <button
3329
+ type="button"
3330
+ [attr.aria-label]="iconButtonAriaLabel"
3331
+ aria-haspopup="dialog"
3332
+ [attr.aria-expanded]="overlayVisible ?? false"
3333
+ [attr.aria-controls]="overlayVisible ? panelId : null"
3334
+ *ngIf="showIcon && iconDisplay === 'button'"
3335
+ (click)="onButtonClick($event, inputfield)"
3336
+ [class]="cx('dropdown')"
3337
+ [disabled]="$disabled()"
3338
+ tabindex="0"
3339
+ [pBind]="ptm('dropdown')"
3340
+ >
3341
+ <span *ngIf="icon" [ngClass]="icon" [pBind]="ptm('dropdownIcon')"></span>
3342
+ <ng-container *ngIf="!icon">
3343
+ <svg data-p-icon="calendar" *ngIf="!triggerIconTemplate && !_triggerIconTemplate" [pBind]="ptm('dropdownIcon')" />
3344
+ <ng-template *ngTemplateOutlet="triggerIconTemplate || _triggerIconTemplate"></ng-template>
3345
+ </ng-container>
3346
+ </button>
3347
+ <ng-container *ngIf="iconDisplay === 'input' && showIcon">
3348
+ <span [class]="cx('inputIconContainer')" [pBind]="ptm('inputIconContainer')" [attr.data-p]="inputIconDataP">
3349
+ <svg data-p-icon="calendar" (click)="onButtonClick($event)" *ngIf="!inputIconTemplate && !_inputIconTemplate" [class]="cx('inputIcon')" [pBind]="ptm('inputIcon')" />
3350
+
3351
+ <ng-container *ngTemplateOutlet="inputIconTemplate || _inputIconTemplate; context: { clickCallBack: onButtonClick.bind(this) }"></ng-container>
3352
+ </span>
3353
+ </ng-container>
3354
+ </ng-template>
3355
+ <p-motion [visible]="inline || overlayVisible" name="p-anchored-overlay" [appear]="!inline" [options]="computedMotionOptions()" (onBeforeEnter)="onOverlayBeforeEnter($event)" (onAfterLeave)="onOverlayAfterLeave($event)">
3356
+ <div
3357
+ #contentWrapper
3358
+ [attr.id]="panelId"
3359
+ [ngStyle]="panelStyle"
3360
+ [class]="cn(cx('panel'), panelStyleClass)"
3361
+ [attr.aria-label]="getTranslation('chooseDate')"
3362
+ [attr.role]="inline ? null : 'dialog'"
3363
+ [attr.aria-modal]="inline ? null : 'true'"
3364
+ (click)="onOverlayClick($event)"
3365
+ [pBind]="ptm('panel')"
3366
+ >
3367
+ <ng-content select="p-header"></ng-content>
3368
+ <ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate"></ng-container>
3369
+ <ng-container *ngIf="!timeOnly">
3370
+ <div [class]="cx('calendarContainer')" [pBind]="ptm('calendarContainer')">
3371
+ <div [class]="cx('calendar')" *ngFor="let month of months; let i = index" [pBind]="ptm('calendar')">
3372
+ <div [class]="cx('header')" [pBind]="ptm('header')">
3373
+ <p-button
3374
+ rounded
3375
+ variant="text"
3376
+ severity="secondary"
3377
+ (keydown)="onContainerButtonKeydown($event)"
3378
+ [styleClass]="cx('pcPrevButton')"
3379
+ (onClick)="onPrevButtonClick($event)"
3380
+ [ngStyle]="{ visibility: i === 0 ? 'visible' : 'hidden' }"
3381
+ type="button"
3382
+ [ariaLabel]="prevIconAriaLabel"
3383
+ [pt]="ptm('pcPrevButton')"
3384
+ [attr.data-pc-group-section]="'navigator'"
3385
+ >
3386
+ <ng-template #icon>
3387
+ <svg data-p-icon="chevron-left" *ngIf="!previousIconTemplate && !_previousIconTemplate" />
3388
+ <span *ngIf="previousIconTemplate || _previousIconTemplate">
3389
+ <ng-template *ngTemplateOutlet="previousIconTemplate || _previousIconTemplate"></ng-template>
3390
+ </span>
3391
+ </ng-template>
3392
+ </p-button>
3393
+ <div [class]="cx('title')" [pBind]="ptm('title')">
3394
+ <button
3395
+ *ngIf="currentView === 'date'"
3396
+ type="button"
3397
+ (click)="switchToMonthView($event)"
3398
+ (keydown)="onContainerButtonKeydown($event)"
3399
+ [class]="cx('selectMonth')"
3400
+ [attr.disabled]="switchViewButtonDisabled() ? '' : undefined"
3401
+ [attr.aria-label]="this.getTranslation('chooseMonth')"
3402
+ pRipple
3403
+ [pBind]="ptm('selectMonth')"
3404
+ [attr.data-pc-group-section]="'navigator'"
3405
+ >
3406
+ {{ getMonthName(month.month) }}
3407
+ </button>
3408
+ <button
3409
+ *ngIf="currentView !== 'year'"
3410
+ type="button"
3411
+ (click)="switchToYearView($event)"
3412
+ (keydown)="onContainerButtonKeydown($event)"
3413
+ [class]="cx('selectYear')"
3414
+ [attr.disabled]="switchViewButtonDisabled() ? '' : undefined"
3415
+ [attr.aria-label]="getTranslation('chooseYear')"
3416
+ pRipple
3417
+ [pBind]="ptm('selectYear')"
3418
+ [attr.data-pc-group-section]="'navigator'"
3419
+ >
3420
+ {{ getYear(month) }}
3421
+ </button>
3422
+ <span [class]="cx('decade')" *ngIf="currentView === 'year'" [pBind]="ptm('decade')">
3423
+ <ng-container *ngIf="!decadeTemplate && !_decadeTemplate">{{ yearPickerValues()[0] }} - {{ yearPickerValues()[yearPickerValues().length - 1] }}</ng-container>
3424
+ <ng-container *ngTemplateOutlet="decadeTemplate || _decadeTemplate; context: { $implicit: yearPickerValues }"></ng-container>
3425
+ </span>
3426
+ </div>
3427
+ <p-button
3428
+ rounded
3429
+ variant="text"
3430
+ severity="secondary"
3431
+ (keydown)="onContainerButtonKeydown($event)"
3432
+ [styleClass]="cx('pcNextButton')"
3433
+ (onClick)="onNextButtonClick($event)"
3434
+ [ngStyle]="{ visibility: i === months.length - 1 ? 'visible' : 'hidden' }"
3435
+ [ariaLabel]="nextIconAriaLabel"
3436
+ [pt]="ptm('pcNextButton')"
3437
+ [attr.data-pc-group-section]="'navigator'"
3438
+ >
3439
+ <ng-template #icon>
3440
+ <svg data-p-icon="chevron-right" *ngIf="!nextIconTemplate && !_nextIconTemplate" />
3441
+ <ng-container *ngIf="nextIconTemplate || _nextIconTemplate">
3442
+ <ng-template *ngTemplateOutlet="nextIconTemplate || _nextIconTemplate"></ng-template>
3443
+ </ng-container>
3444
+ </ng-template>
3445
+ </p-button>
3446
+ </div>
3447
+ <table [class]="cx('dayView')" role="grid" *ngIf="currentView === 'date'" [pBind]="ptm('table')">
3448
+ <thead [pBind]="ptm('tableHeader')">
3449
+ <tr [pBind]="ptm('tableHeaderRow')">
3450
+ <th *ngIf="showWeek" [class]="cx('weekHeader')" [pBind]="ptm('weekHeader')">
3451
+ <span [pBind]="ptm('weekHeaderLabel')">{{ getTranslation('weekHeader') }}</span>
3452
+ </th>
3453
+ <th [class]="cx('weekDayCell')" scope="col" *ngFor="let weekDay of weekDays; let begin = first; let end = last" [pBind]="ptm('weekDayCell')">
3454
+ <span [class]="cx('weekDay')" [pBind]="ptm('weekDay')">{{ weekDay }}</span>
3455
+ </th>
3456
+ </tr>
3457
+ </thead>
3458
+ <tbody [pBind]="ptm('tableBody')">
3459
+ <tr *ngFor="let week of month.dates; let j = index" [pBind]="ptm('tableBodyRow')">
3460
+ <td *ngIf="showWeek" [class]="cx('weekNumber')" [pBind]="ptm('weekNumber')">
3461
+ <span [class]="cx('weekLabelContainer')" [pBind]="ptm('weekLabelContainer')">
3462
+ {{ month.weekNumbers[j] }}
3463
+ </span>
3464
+ </td>
3465
+ <td *ngFor="let date of week" [attr.aria-label]="date.day" [class]="cx('dayCell', { date })" [pBind]="ptm('dayCell')">
3466
+ <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
3467
+ <span
3468
+ [ngClass]="dayClass(date)"
3469
+ (click)="onDateSelect($event, date)"
3470
+ draggable="false"
3471
+ [attr.data-date]="formatDateKey(formatDateMetaToDate(date))"
3472
+ (keydown)="onDateCellKeydown($event, date, i)"
3473
+ pRipple
3474
+ [pBind]="ptm('day')"
3475
+ >
3476
+ <ng-container *ngIf="!dateTemplate && !_dateTemplate && (date.selectable || (!disabledDateTemplate && !_disabledDateTemplate))">{{ date.day }}</ng-container>
3477
+ <ng-container *ngIf="date.selectable || (!disabledDateTemplate && !_disabledDateTemplate)">
3478
+ <ng-container *ngTemplateOutlet="dateTemplate || _dateTemplate; context: { $implicit: date }"></ng-container>
3479
+ </ng-container>
3480
+ <ng-container *ngIf="!date.selectable">
3481
+ <ng-container *ngTemplateOutlet="disabledDateTemplate || _disabledDateTemplate; context: { $implicit: date }"></ng-container>
3482
+ </ng-container>
3483
+ </span>
3484
+ <div *ngIf="isSelected(date)" class="p-hidden-accessible" aria-live="polite">
3485
+ {{ date.day }}
3486
+ </div>
3487
+ </ng-container>
3488
+ </td>
3489
+ </tr>
3490
+ </tbody>
3491
+ </table>
3492
+ </div>
3493
+ </div>
3494
+ <div [class]="cx('monthView')" *ngIf="currentView === 'month'" [pBind]="ptm('monthView')">
3495
+ <span *ngFor="let m of monthPickerValues(); let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event, i)" [class]="cx('month', { month: m, index: i })" pRipple [pBind]="ptm('month')">
3496
+ {{ m }}
3497
+ <div *ngIf="isMonthSelected(i)" class="p-hidden-accessible" aria-live="polite">
3498
+ {{ m }}
3499
+ </div>
3500
+ </span>
3501
+ </div>
3502
+ <div [class]="cx('yearView')" *ngIf="currentView === 'year'" [pBind]="ptm('yearView')">
3503
+ <span *ngFor="let y of yearPickerValues()" (click)="onYearSelect($event, y)" (keydown)="onYearCellKeydown($event, y)" [class]="cx('year', { year: y })" pRipple [pBind]="ptm('year')">
3504
+ {{ y }}
3505
+ <div *ngIf="isYearSelected(y)" class="p-hidden-accessible" aria-live="polite">
3506
+ {{ y }}
3507
+ </div>
3508
+ </span>
3509
+ </div>
3510
+ </ng-container>
3511
+ <div [class]="cx('timePicker')" *ngIf="(showTime || timeOnly) && currentView === 'date'" [pBind]="ptm('timePicker')">
3512
+ <div [class]="cx('hourPicker')" [pBind]="ptm('hourPicker')">
3513
+ <p-button
3514
+ rounded
3515
+ variant="text"
3516
+ severity="secondary"
3517
+ [styleClass]="cx('pcIncrementButton')"
3518
+ (keydown)="onContainerButtonKeydown($event)"
3519
+ (keydown.enter)="incrementHour($event)"
3520
+ (keydown.space)="incrementHour($event)"
3521
+ (mousedown)="onTimePickerElementMouseDown($event, 0, 1)"
3522
+ (mouseup)="onTimePickerElementMouseUp($event)"
3523
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3524
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3525
+ (mouseleave)="onTimePickerElementMouseLeave()"
3526
+ [attr.aria-label]="getTranslation('nextHour')"
3527
+ [pt]="ptm('pcIncrementButton')"
3528
+ [attr.data-pc-group-section]="'timepickerbutton'"
3529
+ >
3530
+ <ng-template #icon>
3531
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
3532
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
3533
+ </ng-template>
3534
+ </p-button>
3535
+ <span [pBind]="ptm('hour')"><ng-container *ngIf="currentHour < 10">0</ng-container>{{ currentHour }}</span>
3536
+ <p-button
3537
+ rounded
3538
+ variant="text"
3539
+ severity="secondary"
3540
+ [styleClass]="cx('pcDecrementButton')"
3541
+ (keydown)="onContainerButtonKeydown($event)"
3542
+ (keydown.enter)="decrementHour($event)"
3543
+ (keydown.space)="decrementHour($event)"
3544
+ (mousedown)="onTimePickerElementMouseDown($event, 0, -1)"
3545
+ (mouseup)="onTimePickerElementMouseUp($event)"
3546
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3547
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3548
+ (mouseleave)="onTimePickerElementMouseLeave()"
3549
+ [attr.aria-label]="getTranslation('prevHour')"
3550
+ [pt]="ptm('pcDecrementButton')"
3551
+ [attr.data-pc-group-section]="'timepickerbutton'"
3552
+ >
3553
+ <ng-template #icon>
3554
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
3555
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
3556
+ </ng-template>
3557
+ </p-button>
3558
+ </div>
3559
+ <div class="p-datepicker-separator" [pBind]="ptm('separatorContainer')">
3560
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
3561
+ </div>
3562
+ <div [class]="cx('minutePicker')" [pBind]="ptm('minutePicker')">
3563
+ <p-button
3564
+ rounded
3565
+ variant="text"
3566
+ severity="secondary"
3567
+ [styleClass]="cx('pcIncrementButton')"
3568
+ (keydown)="onContainerButtonKeydown($event)"
3569
+ (keydown.enter)="incrementMinute($event)"
3570
+ (keydown.space)="incrementMinute($event)"
3571
+ (mousedown)="onTimePickerElementMouseDown($event, 1, 1)"
3572
+ (mouseup)="onTimePickerElementMouseUp($event)"
3573
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3574
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3575
+ (mouseleave)="onTimePickerElementMouseLeave()"
3576
+ [attr.aria-label]="getTranslation('nextMinute')"
3577
+ [pt]="ptm('pcIncrementButton')"
3578
+ [attr.data-pc-group-section]="'timepickerbutton'"
3579
+ >
3580
+ <ng-template #icon>
3581
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
3582
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
3583
+ </ng-template>
3584
+ </p-button>
3585
+ <span [pBind]="ptm('minute')"><ng-container *ngIf="currentMinute < 10">0</ng-container>{{ currentMinute }}</span>
3586
+ <p-button
3587
+ rounded
3588
+ variant="text"
3589
+ severity="secondary"
3590
+ [styleClass]="cx('pcDecrementButton')"
3591
+ (keydown)="onContainerButtonKeydown($event)"
3592
+ (keydown.enter)="decrementMinute($event)"
3593
+ (keydown.space)="decrementMinute($event)"
3594
+ (mousedown)="onTimePickerElementMouseDown($event, 1, -1)"
3595
+ (mouseup)="onTimePickerElementMouseUp($event)"
3596
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3597
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3598
+ (mouseleave)="onTimePickerElementMouseLeave()"
3599
+ [attr.aria-label]="getTranslation('prevMinute')"
3600
+ [pt]="ptm('pcDecrementButton')"
3601
+ [attr.data-pc-group-section]="'timepickerbutton'"
3602
+ >
3603
+ <ng-template #icon>
3604
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
3605
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
3606
+ </ng-template>
3607
+ </p-button>
3608
+ </div>
3609
+ <div [class]="cx('separator')" *ngIf="showSeconds" [pBind]="ptm('separatorContainer')">
3610
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
3611
+ </div>
3612
+ <div [class]="cx('secondPicker')" *ngIf="showSeconds" [pBind]="ptm('secondPicker')">
3613
+ <p-button
3614
+ rounded
3615
+ variant="text"
3616
+ severity="secondary"
3617
+ [styleClass]="cx('pcIncrementButton')"
3618
+ (keydown)="onContainerButtonKeydown($event)"
3619
+ (keydown.enter)="incrementSecond($event)"
3620
+ (keydown.space)="incrementSecond($event)"
3621
+ (mousedown)="onTimePickerElementMouseDown($event, 2, 1)"
3622
+ (mouseup)="onTimePickerElementMouseUp($event)"
3623
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3624
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3625
+ (mouseleave)="onTimePickerElementMouseLeave()"
3626
+ [attr.aria-label]="getTranslation('nextSecond')"
3627
+ [pt]="ptm('pcIncrementButton')"
3628
+ [attr.data-pc-group-section]="'timepickerbutton'"
3629
+ >
3630
+ <ng-template #icon>
3631
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
3632
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
3633
+ </ng-template>
3634
+ </p-button>
3635
+ <span [pBind]="ptm('second')"><ng-container *ngIf="currentSecond < 10">0</ng-container>{{ currentSecond }}</span>
3636
+ <p-button
3637
+ rounded
3638
+ variant="text"
3639
+ severity="secondary"
3640
+ [styleClass]="cx('pcDecrementButton')"
3641
+ (keydown)="onContainerButtonKeydown($event)"
3642
+ (keydown.enter)="decrementSecond($event)"
3643
+ (keydown.space)="decrementSecond($event)"
3644
+ (mousedown)="onTimePickerElementMouseDown($event, 2, -1)"
3645
+ (mouseup)="onTimePickerElementMouseUp($event)"
3646
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3647
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3648
+ (mouseleave)="onTimePickerElementMouseLeave()"
3649
+ [attr.aria-label]="getTranslation('prevSecond')"
3650
+ [pt]="ptm('pcDecrementButton')"
3651
+ [attr.data-pc-group-section]="'timepickerbutton'"
3652
+ >
3653
+ <ng-template #icon>
3654
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
3655
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
3656
+ </ng-template>
3657
+ </p-button>
3658
+ </div>
3659
+ <div [class]="cx('separator')" *ngIf="hourFormat == '12'" [pBind]="ptm('separatorContainer')">
3660
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
3661
+ </div>
3662
+ <div [class]="cx('ampmPicker')" *ngIf="hourFormat == '12'" [pBind]="ptm('ampmPicker')">
3663
+ <p-button
3664
+ text
3665
+ rounded
3666
+ severity="secondary"
3667
+ [styleClass]="cx('pcIncrementButton')"
3668
+ (keydown)="onContainerButtonKeydown($event)"
3669
+ (onClick)="toggleAMPM($event)"
3670
+ (keydown.enter)="toggleAMPM($event)"
3671
+ [attr.aria-label]="getTranslation('am')"
3672
+ [pt]="ptm('pcIncrementButton')"
3673
+ [attr.data-pc-group-section]="'timepickerbutton'"
3674
+ >
3675
+ <ng-template #icon>
3676
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
3677
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
3678
+ </ng-template>
3679
+ </p-button>
3680
+ <span [pBind]="ptm('ampm')">{{ pm ? 'PM' : 'AM' }}</span>
3681
+ <p-button
3682
+ text
3683
+ rounded
3684
+ severity="secondary"
3685
+ [styleClass]="cx('pcDecrementButton')"
3686
+ (keydown)="onContainerButtonKeydown($event)"
3687
+ (click)="toggleAMPM($event)"
3688
+ (keydown.enter)="toggleAMPM($event)"
3689
+ [attr.aria-label]="getTranslation('pm')"
3690
+ [pt]="ptm('pcDecrementButton')"
3691
+ [attr.data-pc-group-section]="'timepickerbutton'"
3692
+ >
3693
+ <ng-template #icon>
3694
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
3695
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
3696
+ </ng-template>
3697
+ </p-button>
3698
+ </div>
3699
+ </div>
3700
+ <div [class]="cx('buttonbar')" *ngIf="showButtonBar" [pBind]="ptm('buttonbar')">
3701
+ @if (buttonBarTemplate || _buttonBarTemplate) {
3702
+ <ng-container *ngTemplateOutlet="buttonBarTemplate || _buttonBarTemplate; context: { todayCallback: onTodayButtonClick.bind(this), clearCallback: onClearButtonClick.bind(this) }"></ng-container>
3703
+ } @else {
3704
+ <p-button
3705
+ size="small"
3706
+ [styleClass]="cx('pcTodayButton')"
3707
+ [label]="getTranslation('today')"
3708
+ (keydown)="onContainerButtonKeydown($event)"
3709
+ (onClick)="onTodayButtonClick($event)"
3710
+ [ngClass]="todayButtonStyleClass"
3711
+ severity="secondary"
3712
+ variant="text"
3713
+ size="small"
3714
+ [pt]="ptm('pcTodayButton')"
3715
+ [attr.data-pc-group-section]="'button'"
3716
+ />
3717
+ <p-button
3718
+ size="small"
3719
+ [styleClass]="cx('pcClearButton')"
3720
+ [label]="getTranslation('clear')"
3721
+ (keydown)="onContainerButtonKeydown($event)"
3722
+ (onClick)="onClearButtonClick($event)"
3723
+ [ngClass]="clearButtonStyleClass"
3724
+ severity="secondary"
3725
+ variant="text"
3726
+ size="small"
3727
+ [pt]="ptm('pcClearButton')"
3728
+ [attr.data-pc-group-section]="'button'"
3729
+ />
3730
+ }
3731
+ </div>
3732
+ <ng-content select="p-footer"></ng-content>
3733
+ <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
3734
+ </div>
3735
+ </p-motion>
3736
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "component", type: ChevronLeftIcon, selector: "[data-p-icon=\"chevron-left\"]" }, { kind: "component", type: ChevronRightIcon, selector: "[data-p-icon=\"chevron-right\"]" }, { kind: "component", type: ChevronUpIcon, selector: "[data-p-icon=\"chevron-up\"]" }, { kind: "component", type: ChevronDownIcon, selector: "[data-p-icon=\"chevron-down\"]" }, { kind: "component", type: TimesIcon, selector: "[data-p-icon=\"times\"]" }, { kind: "component", type: CalendarIcon, selector: "[data-p-icon=\"calendar\"]" }, { kind: "directive", type: AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: BindModule }, { kind: "directive", type: i2.Bind, selector: "[pBind]", inputs: ["pBind"] }, { kind: "ngmodule", type: MotionModule }, { kind: "component", type: i4.Motion, selector: "p-motion", inputs: ["visible", "mountOnEnter", "unmountOnLeave", "name", "type", "safe", "disabled", "appear", "enter", "leave", "duration", "hideStrategy", "enterFromClass", "enterToClass", "enterActiveClass", "leaveFromClass", "leaveToClass", "leaveActiveClass", "options"], outputs: ["onBeforeEnter", "onEnter", "onAfterEnter", "onEnterCancelled", "onBeforeLeave", "onLeave", "onAfterLeave", "onLeaveCancelled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3737
+ }
3738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePicker, decorators: [{
3739
+ type: Component,
3740
+ args: [{
3741
+ selector: 'p-datePicker, p-datepicker, p-date-picker',
3742
+ standalone: true,
3743
+ imports: [CommonModule, Button, Ripple, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, TimesIcon, CalendarIcon, AutoFocus, InputText, SharedModule, BindModule, MotionModule],
3744
+ hostDirectives: [Bind],
3745
+ template: `
3746
+ <ng-template [ngIf]="!inline">
3747
+ <input
3748
+ #inputfield
3749
+ pInputText
3750
+ data-p-maskable
3751
+ [pSize]="size()"
3752
+ [attr.size]="inputSize()"
3753
+ type="text"
3754
+ role="combobox"
3755
+ [attr.id]="inputId"
3756
+ [attr.name]="name()"
3757
+ [attr.aria-required]="required()"
3758
+ aria-autocomplete="none"
3759
+ aria-haspopup="dialog"
3760
+ [attr.aria-expanded]="overlayVisible ?? false"
3761
+ [attr.aria-controls]="overlayVisible ? panelId : null"
3762
+ [attr.aria-labelledby]="ariaLabelledBy"
3763
+ [attr.aria-label]="ariaLabel"
3764
+ [value]="inputFieldValue"
3765
+ (focus)="onInputFocus($event)"
3766
+ (keydown)="onInputKeydown($event)"
3767
+ (click)="onInputClick()"
3768
+ (blur)="onInputBlur($event)"
3769
+ [attr.required]="required() ? '' : undefined"
3770
+ [attr.readonly]="readonlyInput ? '' : undefined"
3771
+ [attr.disabled]="$disabled() ? '' : undefined"
3772
+ (input)="onUserInput($event)"
3773
+ [ngStyle]="inputStyle"
3774
+ [class]="cn(cx('pcInputText'), inputStyleClass)"
3775
+ [attr.placeholder]="placeholder"
3776
+ [attr.tabindex]="tabindex"
3777
+ [attr.inputmode]="touchUI ? 'off' : null"
3778
+ autocomplete="off"
3779
+ [pAutoFocus]="autofocus"
3780
+ [variant]="$variant()"
3781
+ [fluid]="hasFluid"
3782
+ [invalid]="invalid()"
3783
+ [pt]="ptm('pcInputText')"
3784
+ [unstyled]="unstyled()"
3785
+ />
3786
+ <ng-container *ngIf="showClear && !$disabled() && inputfieldViewChild?.nativeElement?.value">
3787
+ <svg data-p-icon="times" *ngIf="!clearIconTemplate && !_clearIconTemplate" [class]="cx('clearIcon')" [pBind]="ptm('inputIcon')" (click)="clear()" />
3788
+ <span *ngIf="clearIconTemplate || _clearIconTemplate" [class]="cx('clearIcon')" [pBind]="ptm('inputIcon')" (click)="clear()">
3789
+ <ng-template *ngTemplateOutlet="clearIconTemplate || _clearIconTemplate"></ng-template>
3790
+ </span>
3791
+ </ng-container>
3792
+ <button
3793
+ type="button"
3794
+ [attr.aria-label]="iconButtonAriaLabel"
3795
+ aria-haspopup="dialog"
3796
+ [attr.aria-expanded]="overlayVisible ?? false"
3797
+ [attr.aria-controls]="overlayVisible ? panelId : null"
3798
+ *ngIf="showIcon && iconDisplay === 'button'"
3799
+ (click)="onButtonClick($event, inputfield)"
3800
+ [class]="cx('dropdown')"
3801
+ [disabled]="$disabled()"
3802
+ tabindex="0"
3803
+ [pBind]="ptm('dropdown')"
3804
+ >
3805
+ <span *ngIf="icon" [ngClass]="icon" [pBind]="ptm('dropdownIcon')"></span>
3806
+ <ng-container *ngIf="!icon">
3807
+ <svg data-p-icon="calendar" *ngIf="!triggerIconTemplate && !_triggerIconTemplate" [pBind]="ptm('dropdownIcon')" />
3808
+ <ng-template *ngTemplateOutlet="triggerIconTemplate || _triggerIconTemplate"></ng-template>
3809
+ </ng-container>
3810
+ </button>
3811
+ <ng-container *ngIf="iconDisplay === 'input' && showIcon">
3812
+ <span [class]="cx('inputIconContainer')" [pBind]="ptm('inputIconContainer')" [attr.data-p]="inputIconDataP">
3813
+ <svg data-p-icon="calendar" (click)="onButtonClick($event)" *ngIf="!inputIconTemplate && !_inputIconTemplate" [class]="cx('inputIcon')" [pBind]="ptm('inputIcon')" />
3814
+
3815
+ <ng-container *ngTemplateOutlet="inputIconTemplate || _inputIconTemplate; context: { clickCallBack: onButtonClick.bind(this) }"></ng-container>
3816
+ </span>
3817
+ </ng-container>
3818
+ </ng-template>
3819
+ <p-motion [visible]="inline || overlayVisible" name="p-anchored-overlay" [appear]="!inline" [options]="computedMotionOptions()" (onBeforeEnter)="onOverlayBeforeEnter($event)" (onAfterLeave)="onOverlayAfterLeave($event)">
3820
+ <div
3821
+ #contentWrapper
3822
+ [attr.id]="panelId"
3823
+ [ngStyle]="panelStyle"
3824
+ [class]="cn(cx('panel'), panelStyleClass)"
3825
+ [attr.aria-label]="getTranslation('chooseDate')"
3826
+ [attr.role]="inline ? null : 'dialog'"
3827
+ [attr.aria-modal]="inline ? null : 'true'"
3828
+ (click)="onOverlayClick($event)"
3829
+ [pBind]="ptm('panel')"
3830
+ >
3831
+ <ng-content select="p-header"></ng-content>
3832
+ <ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate"></ng-container>
3833
+ <ng-container *ngIf="!timeOnly">
3834
+ <div [class]="cx('calendarContainer')" [pBind]="ptm('calendarContainer')">
3835
+ <div [class]="cx('calendar')" *ngFor="let month of months; let i = index" [pBind]="ptm('calendar')">
3836
+ <div [class]="cx('header')" [pBind]="ptm('header')">
3837
+ <p-button
3838
+ rounded
3839
+ variant="text"
3840
+ severity="secondary"
3841
+ (keydown)="onContainerButtonKeydown($event)"
3842
+ [styleClass]="cx('pcPrevButton')"
3843
+ (onClick)="onPrevButtonClick($event)"
3844
+ [ngStyle]="{ visibility: i === 0 ? 'visible' : 'hidden' }"
3845
+ type="button"
3846
+ [ariaLabel]="prevIconAriaLabel"
3847
+ [pt]="ptm('pcPrevButton')"
3848
+ [attr.data-pc-group-section]="'navigator'"
3849
+ >
3850
+ <ng-template #icon>
3851
+ <svg data-p-icon="chevron-left" *ngIf="!previousIconTemplate && !_previousIconTemplate" />
3852
+ <span *ngIf="previousIconTemplate || _previousIconTemplate">
3853
+ <ng-template *ngTemplateOutlet="previousIconTemplate || _previousIconTemplate"></ng-template>
3854
+ </span>
3855
+ </ng-template>
3856
+ </p-button>
3857
+ <div [class]="cx('title')" [pBind]="ptm('title')">
3858
+ <button
3859
+ *ngIf="currentView === 'date'"
3860
+ type="button"
3861
+ (click)="switchToMonthView($event)"
3862
+ (keydown)="onContainerButtonKeydown($event)"
3863
+ [class]="cx('selectMonth')"
3864
+ [attr.disabled]="switchViewButtonDisabled() ? '' : undefined"
3865
+ [attr.aria-label]="this.getTranslation('chooseMonth')"
3866
+ pRipple
3867
+ [pBind]="ptm('selectMonth')"
3868
+ [attr.data-pc-group-section]="'navigator'"
3869
+ >
3870
+ {{ getMonthName(month.month) }}
3871
+ </button>
3872
+ <button
3873
+ *ngIf="currentView !== 'year'"
3874
+ type="button"
3875
+ (click)="switchToYearView($event)"
3876
+ (keydown)="onContainerButtonKeydown($event)"
3877
+ [class]="cx('selectYear')"
3878
+ [attr.disabled]="switchViewButtonDisabled() ? '' : undefined"
3879
+ [attr.aria-label]="getTranslation('chooseYear')"
3880
+ pRipple
3881
+ [pBind]="ptm('selectYear')"
3882
+ [attr.data-pc-group-section]="'navigator'"
3883
+ >
3884
+ {{ getYear(month) }}
3885
+ </button>
3886
+ <span [class]="cx('decade')" *ngIf="currentView === 'year'" [pBind]="ptm('decade')">
3887
+ <ng-container *ngIf="!decadeTemplate && !_decadeTemplate">{{ yearPickerValues()[0] }} - {{ yearPickerValues()[yearPickerValues().length - 1] }}</ng-container>
3888
+ <ng-container *ngTemplateOutlet="decadeTemplate || _decadeTemplate; context: { $implicit: yearPickerValues }"></ng-container>
3889
+ </span>
3890
+ </div>
3891
+ <p-button
3892
+ rounded
3893
+ variant="text"
3894
+ severity="secondary"
3895
+ (keydown)="onContainerButtonKeydown($event)"
3896
+ [styleClass]="cx('pcNextButton')"
3897
+ (onClick)="onNextButtonClick($event)"
3898
+ [ngStyle]="{ visibility: i === months.length - 1 ? 'visible' : 'hidden' }"
3899
+ [ariaLabel]="nextIconAriaLabel"
3900
+ [pt]="ptm('pcNextButton')"
3901
+ [attr.data-pc-group-section]="'navigator'"
3902
+ >
3903
+ <ng-template #icon>
3904
+ <svg data-p-icon="chevron-right" *ngIf="!nextIconTemplate && !_nextIconTemplate" />
3905
+ <ng-container *ngIf="nextIconTemplate || _nextIconTemplate">
3906
+ <ng-template *ngTemplateOutlet="nextIconTemplate || _nextIconTemplate"></ng-template>
3907
+ </ng-container>
3908
+ </ng-template>
3909
+ </p-button>
3910
+ </div>
3911
+ <table [class]="cx('dayView')" role="grid" *ngIf="currentView === 'date'" [pBind]="ptm('table')">
3912
+ <thead [pBind]="ptm('tableHeader')">
3913
+ <tr [pBind]="ptm('tableHeaderRow')">
3914
+ <th *ngIf="showWeek" [class]="cx('weekHeader')" [pBind]="ptm('weekHeader')">
3915
+ <span [pBind]="ptm('weekHeaderLabel')">{{ getTranslation('weekHeader') }}</span>
3916
+ </th>
3917
+ <th [class]="cx('weekDayCell')" scope="col" *ngFor="let weekDay of weekDays; let begin = first; let end = last" [pBind]="ptm('weekDayCell')">
3918
+ <span [class]="cx('weekDay')" [pBind]="ptm('weekDay')">{{ weekDay }}</span>
3919
+ </th>
3920
+ </tr>
3921
+ </thead>
3922
+ <tbody [pBind]="ptm('tableBody')">
3923
+ <tr *ngFor="let week of month.dates; let j = index" [pBind]="ptm('tableBodyRow')">
3924
+ <td *ngIf="showWeek" [class]="cx('weekNumber')" [pBind]="ptm('weekNumber')">
3925
+ <span [class]="cx('weekLabelContainer')" [pBind]="ptm('weekLabelContainer')">
3926
+ {{ month.weekNumbers[j] }}
3927
+ </span>
3928
+ </td>
3929
+ <td *ngFor="let date of week" [attr.aria-label]="date.day" [class]="cx('dayCell', { date })" [pBind]="ptm('dayCell')">
3930
+ <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
3931
+ <span
3932
+ [ngClass]="dayClass(date)"
3933
+ (click)="onDateSelect($event, date)"
3934
+ draggable="false"
3935
+ [attr.data-date]="formatDateKey(formatDateMetaToDate(date))"
3936
+ (keydown)="onDateCellKeydown($event, date, i)"
3937
+ pRipple
3938
+ [pBind]="ptm('day')"
3939
+ >
3940
+ <ng-container *ngIf="!dateTemplate && !_dateTemplate && (date.selectable || (!disabledDateTemplate && !_disabledDateTemplate))">{{ date.day }}</ng-container>
3941
+ <ng-container *ngIf="date.selectable || (!disabledDateTemplate && !_disabledDateTemplate)">
3942
+ <ng-container *ngTemplateOutlet="dateTemplate || _dateTemplate; context: { $implicit: date }"></ng-container>
3943
+ </ng-container>
3944
+ <ng-container *ngIf="!date.selectable">
3945
+ <ng-container *ngTemplateOutlet="disabledDateTemplate || _disabledDateTemplate; context: { $implicit: date }"></ng-container>
3946
+ </ng-container>
3947
+ </span>
3948
+ <div *ngIf="isSelected(date)" class="p-hidden-accessible" aria-live="polite">
3949
+ {{ date.day }}
3950
+ </div>
3951
+ </ng-container>
3952
+ </td>
3953
+ </tr>
3954
+ </tbody>
3955
+ </table>
3956
+ </div>
3957
+ </div>
3958
+ <div [class]="cx('monthView')" *ngIf="currentView === 'month'" [pBind]="ptm('monthView')">
3959
+ <span *ngFor="let m of monthPickerValues(); let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event, i)" [class]="cx('month', { month: m, index: i })" pRipple [pBind]="ptm('month')">
3960
+ {{ m }}
3961
+ <div *ngIf="isMonthSelected(i)" class="p-hidden-accessible" aria-live="polite">
3962
+ {{ m }}
3963
+ </div>
3964
+ </span>
3965
+ </div>
3966
+ <div [class]="cx('yearView')" *ngIf="currentView === 'year'" [pBind]="ptm('yearView')">
3967
+ <span *ngFor="let y of yearPickerValues()" (click)="onYearSelect($event, y)" (keydown)="onYearCellKeydown($event, y)" [class]="cx('year', { year: y })" pRipple [pBind]="ptm('year')">
3968
+ {{ y }}
3969
+ <div *ngIf="isYearSelected(y)" class="p-hidden-accessible" aria-live="polite">
3970
+ {{ y }}
3971
+ </div>
3972
+ </span>
3973
+ </div>
3974
+ </ng-container>
3975
+ <div [class]="cx('timePicker')" *ngIf="(showTime || timeOnly) && currentView === 'date'" [pBind]="ptm('timePicker')">
3976
+ <div [class]="cx('hourPicker')" [pBind]="ptm('hourPicker')">
3977
+ <p-button
3978
+ rounded
3979
+ variant="text"
3980
+ severity="secondary"
3981
+ [styleClass]="cx('pcIncrementButton')"
3982
+ (keydown)="onContainerButtonKeydown($event)"
3983
+ (keydown.enter)="incrementHour($event)"
3984
+ (keydown.space)="incrementHour($event)"
3985
+ (mousedown)="onTimePickerElementMouseDown($event, 0, 1)"
3986
+ (mouseup)="onTimePickerElementMouseUp($event)"
3987
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
3988
+ (keyup.space)="onTimePickerElementMouseUp($event)"
3989
+ (mouseleave)="onTimePickerElementMouseLeave()"
3990
+ [attr.aria-label]="getTranslation('nextHour')"
3991
+ [pt]="ptm('pcIncrementButton')"
3992
+ [attr.data-pc-group-section]="'timepickerbutton'"
3993
+ >
3994
+ <ng-template #icon>
3995
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
3996
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
3997
+ </ng-template>
3998
+ </p-button>
3999
+ <span [pBind]="ptm('hour')"><ng-container *ngIf="currentHour < 10">0</ng-container>{{ currentHour }}</span>
4000
+ <p-button
4001
+ rounded
4002
+ variant="text"
4003
+ severity="secondary"
4004
+ [styleClass]="cx('pcDecrementButton')"
4005
+ (keydown)="onContainerButtonKeydown($event)"
4006
+ (keydown.enter)="decrementHour($event)"
4007
+ (keydown.space)="decrementHour($event)"
4008
+ (mousedown)="onTimePickerElementMouseDown($event, 0, -1)"
4009
+ (mouseup)="onTimePickerElementMouseUp($event)"
4010
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
4011
+ (keyup.space)="onTimePickerElementMouseUp($event)"
4012
+ (mouseleave)="onTimePickerElementMouseLeave()"
4013
+ [attr.aria-label]="getTranslation('prevHour')"
4014
+ [pt]="ptm('pcDecrementButton')"
4015
+ [attr.data-pc-group-section]="'timepickerbutton'"
4016
+ >
4017
+ <ng-template #icon>
4018
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
4019
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
4020
+ </ng-template>
4021
+ </p-button>
4022
+ </div>
4023
+ <div class="p-datepicker-separator" [pBind]="ptm('separatorContainer')">
4024
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
4025
+ </div>
4026
+ <div [class]="cx('minutePicker')" [pBind]="ptm('minutePicker')">
4027
+ <p-button
4028
+ rounded
4029
+ variant="text"
4030
+ severity="secondary"
4031
+ [styleClass]="cx('pcIncrementButton')"
4032
+ (keydown)="onContainerButtonKeydown($event)"
4033
+ (keydown.enter)="incrementMinute($event)"
4034
+ (keydown.space)="incrementMinute($event)"
4035
+ (mousedown)="onTimePickerElementMouseDown($event, 1, 1)"
4036
+ (mouseup)="onTimePickerElementMouseUp($event)"
4037
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
4038
+ (keyup.space)="onTimePickerElementMouseUp($event)"
4039
+ (mouseleave)="onTimePickerElementMouseLeave()"
4040
+ [attr.aria-label]="getTranslation('nextMinute')"
4041
+ [pt]="ptm('pcIncrementButton')"
4042
+ [attr.data-pc-group-section]="'timepickerbutton'"
4043
+ >
4044
+ <ng-template #icon>
4045
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
4046
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
4047
+ </ng-template>
4048
+ </p-button>
4049
+ <span [pBind]="ptm('minute')"><ng-container *ngIf="currentMinute < 10">0</ng-container>{{ currentMinute }}</span>
4050
+ <p-button
4051
+ rounded
4052
+ variant="text"
4053
+ severity="secondary"
4054
+ [styleClass]="cx('pcDecrementButton')"
4055
+ (keydown)="onContainerButtonKeydown($event)"
4056
+ (keydown.enter)="decrementMinute($event)"
4057
+ (keydown.space)="decrementMinute($event)"
4058
+ (mousedown)="onTimePickerElementMouseDown($event, 1, -1)"
4059
+ (mouseup)="onTimePickerElementMouseUp($event)"
4060
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
4061
+ (keyup.space)="onTimePickerElementMouseUp($event)"
4062
+ (mouseleave)="onTimePickerElementMouseLeave()"
4063
+ [attr.aria-label]="getTranslation('prevMinute')"
4064
+ [pt]="ptm('pcDecrementButton')"
4065
+ [attr.data-pc-group-section]="'timepickerbutton'"
4066
+ >
4067
+ <ng-template #icon>
4068
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
4069
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
4070
+ </ng-template>
4071
+ </p-button>
4072
+ </div>
4073
+ <div [class]="cx('separator')" *ngIf="showSeconds" [pBind]="ptm('separatorContainer')">
4074
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
4075
+ </div>
4076
+ <div [class]="cx('secondPicker')" *ngIf="showSeconds" [pBind]="ptm('secondPicker')">
4077
+ <p-button
4078
+ rounded
4079
+ variant="text"
4080
+ severity="secondary"
4081
+ [styleClass]="cx('pcIncrementButton')"
4082
+ (keydown)="onContainerButtonKeydown($event)"
4083
+ (keydown.enter)="incrementSecond($event)"
4084
+ (keydown.space)="incrementSecond($event)"
4085
+ (mousedown)="onTimePickerElementMouseDown($event, 2, 1)"
4086
+ (mouseup)="onTimePickerElementMouseUp($event)"
4087
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
4088
+ (keyup.space)="onTimePickerElementMouseUp($event)"
4089
+ (mouseleave)="onTimePickerElementMouseLeave()"
4090
+ [attr.aria-label]="getTranslation('nextSecond')"
4091
+ [pt]="ptm('pcIncrementButton')"
4092
+ [attr.data-pc-group-section]="'timepickerbutton'"
4093
+ >
4094
+ <ng-template #icon>
4095
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
4096
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
4097
+ </ng-template>
4098
+ </p-button>
4099
+ <span [pBind]="ptm('second')"><ng-container *ngIf="currentSecond < 10">0</ng-container>{{ currentSecond }}</span>
4100
+ <p-button
4101
+ rounded
4102
+ variant="text"
4103
+ severity="secondary"
4104
+ [styleClass]="cx('pcDecrementButton')"
4105
+ (keydown)="onContainerButtonKeydown($event)"
4106
+ (keydown.enter)="decrementSecond($event)"
4107
+ (keydown.space)="decrementSecond($event)"
4108
+ (mousedown)="onTimePickerElementMouseDown($event, 2, -1)"
4109
+ (mouseup)="onTimePickerElementMouseUp($event)"
4110
+ (keyup.enter)="onTimePickerElementMouseUp($event)"
4111
+ (keyup.space)="onTimePickerElementMouseUp($event)"
4112
+ (mouseleave)="onTimePickerElementMouseLeave()"
4113
+ [attr.aria-label]="getTranslation('prevSecond')"
4114
+ [pt]="ptm('pcDecrementButton')"
4115
+ [attr.data-pc-group-section]="'timepickerbutton'"
4116
+ >
4117
+ <ng-template #icon>
4118
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
4119
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
4120
+ </ng-template>
4121
+ </p-button>
4122
+ </div>
4123
+ <div [class]="cx('separator')" *ngIf="hourFormat == '12'" [pBind]="ptm('separatorContainer')">
4124
+ <span [pBind]="ptm('separator')">{{ timeSeparator }}</span>
4125
+ </div>
4126
+ <div [class]="cx('ampmPicker')" *ngIf="hourFormat == '12'" [pBind]="ptm('ampmPicker')">
4127
+ <p-button
4128
+ text
4129
+ rounded
4130
+ severity="secondary"
4131
+ [styleClass]="cx('pcIncrementButton')"
4132
+ (keydown)="onContainerButtonKeydown($event)"
4133
+ (onClick)="toggleAMPM($event)"
4134
+ (keydown.enter)="toggleAMPM($event)"
4135
+ [attr.aria-label]="getTranslation('am')"
4136
+ [pt]="ptm('pcIncrementButton')"
4137
+ [attr.data-pc-group-section]="'timepickerbutton'"
4138
+ >
4139
+ <ng-template #icon>
4140
+ <svg data-p-icon="chevron-up" *ngIf="!incrementIconTemplate && !_incrementIconTemplate" [pBind]="ptm('pcIncrementButton')['icon']" />
4141
+ <ng-template *ngTemplateOutlet="incrementIconTemplate || _incrementIconTemplate"></ng-template>
4142
+ </ng-template>
4143
+ </p-button>
4144
+ <span [pBind]="ptm('ampm')">{{ pm ? 'PM' : 'AM' }}</span>
4145
+ <p-button
4146
+ text
4147
+ rounded
4148
+ severity="secondary"
4149
+ [styleClass]="cx('pcDecrementButton')"
4150
+ (keydown)="onContainerButtonKeydown($event)"
4151
+ (click)="toggleAMPM($event)"
4152
+ (keydown.enter)="toggleAMPM($event)"
4153
+ [attr.aria-label]="getTranslation('pm')"
4154
+ [pt]="ptm('pcDecrementButton')"
4155
+ [attr.data-pc-group-section]="'timepickerbutton'"
4156
+ >
4157
+ <ng-template #icon>
4158
+ <svg data-p-icon="chevron-down" *ngIf="!decrementIconTemplate && !_decrementIconTemplate" [pBind]="ptm('pcDecrementButton')['icon']" />
4159
+ <ng-template *ngTemplateOutlet="decrementIconTemplate || _decrementIconTemplate"></ng-template>
4160
+ </ng-template>
4161
+ </p-button>
4162
+ </div>
4163
+ </div>
4164
+ <div [class]="cx('buttonbar')" *ngIf="showButtonBar" [pBind]="ptm('buttonbar')">
4165
+ @if (buttonBarTemplate || _buttonBarTemplate) {
4166
+ <ng-container *ngTemplateOutlet="buttonBarTemplate || _buttonBarTemplate; context: { todayCallback: onTodayButtonClick.bind(this), clearCallback: onClearButtonClick.bind(this) }"></ng-container>
4167
+ } @else {
4168
+ <p-button
4169
+ size="small"
4170
+ [styleClass]="cx('pcTodayButton')"
4171
+ [label]="getTranslation('today')"
4172
+ (keydown)="onContainerButtonKeydown($event)"
4173
+ (onClick)="onTodayButtonClick($event)"
4174
+ [ngClass]="todayButtonStyleClass"
4175
+ severity="secondary"
4176
+ variant="text"
4177
+ size="small"
4178
+ [pt]="ptm('pcTodayButton')"
4179
+ [attr.data-pc-group-section]="'button'"
4180
+ />
4181
+ <p-button
4182
+ size="small"
4183
+ [styleClass]="cx('pcClearButton')"
4184
+ [label]="getTranslation('clear')"
4185
+ (keydown)="onContainerButtonKeydown($event)"
4186
+ (onClick)="onClearButtonClick($event)"
4187
+ [ngClass]="clearButtonStyleClass"
4188
+ severity="secondary"
4189
+ variant="text"
4190
+ size="small"
4191
+ [pt]="ptm('pcClearButton')"
4192
+ [attr.data-pc-group-section]="'button'"
4193
+ />
4194
+ }
4195
+ </div>
4196
+ <ng-content select="p-footer"></ng-content>
4197
+ <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
4198
+ </div>
4199
+ </p-motion>
4200
+ `,
4201
+ providers: [DATEPICKER_VALUE_ACCESSOR, DatePickerStyle, { provide: DATEPICKER_INSTANCE, useExisting: DatePicker }, { provide: PARENT_INSTANCE, useExisting: DatePicker }],
4202
+ changeDetection: ChangeDetectionStrategy.OnPush,
4203
+ encapsulation: ViewEncapsulation.None,
4204
+ host: {
4205
+ '[class]': "cn(cx('root'), styleClass)",
4206
+ '[style]': "sx('root')"
4207
+ }
4208
+ }]
4209
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.OverlayService }], propDecorators: { iconDisplay: [{
4210
+ type: Input
4211
+ }], styleClass: [{
4212
+ type: Input
4213
+ }], inputStyle: [{
4214
+ type: Input
4215
+ }], inputId: [{
4216
+ type: Input
4217
+ }], inputStyleClass: [{
4218
+ type: Input
4219
+ }], placeholder: [{
4220
+ type: Input
4221
+ }], ariaLabelledBy: [{
4222
+ type: Input
4223
+ }], ariaLabel: [{
4224
+ type: Input
4225
+ }], iconAriaLabel: [{
4226
+ type: Input
4227
+ }], dateFormat: [{
4228
+ type: Input
4229
+ }], multipleSeparator: [{
4230
+ type: Input
4231
+ }], rangeSeparator: [{
4232
+ type: Input
4233
+ }], inline: [{
4234
+ type: Input,
4235
+ args: [{ transform: booleanAttribute }]
4236
+ }], showOtherMonths: [{
4237
+ type: Input,
4238
+ args: [{ transform: booleanAttribute }]
4239
+ }], selectOtherMonths: [{
4240
+ type: Input,
4241
+ args: [{ transform: booleanAttribute }]
4242
+ }], showIcon: [{
4243
+ type: Input,
4244
+ args: [{ transform: booleanAttribute }]
4245
+ }], icon: [{
4246
+ type: Input
4247
+ }], readonlyInput: [{
4248
+ type: Input,
4249
+ args: [{ transform: booleanAttribute }]
4250
+ }], shortYearCutoff: [{
4251
+ type: Input
4252
+ }], hourFormat: [{
4253
+ type: Input
4254
+ }], timeOnly: [{
4255
+ type: Input,
4256
+ args: [{ transform: booleanAttribute }]
4257
+ }], stepHour: [{
4258
+ type: Input,
4259
+ args: [{ transform: numberAttribute }]
4260
+ }], stepMinute: [{
4261
+ type: Input,
4262
+ args: [{ transform: numberAttribute }]
4263
+ }], stepSecond: [{
4264
+ type: Input,
4265
+ args: [{ transform: numberAttribute }]
4266
+ }], showSeconds: [{
4267
+ type: Input,
4268
+ args: [{ transform: booleanAttribute }]
4269
+ }], showOnFocus: [{
4270
+ type: Input,
4271
+ args: [{ transform: booleanAttribute }]
4272
+ }], showWeek: [{
4273
+ type: Input,
4274
+ args: [{ transform: booleanAttribute }]
4275
+ }], startWeekFromFirstDayOfYear: [{
4276
+ type: Input
4277
+ }], showClear: [{
4278
+ type: Input,
4279
+ args: [{ transform: booleanAttribute }]
4280
+ }], dataType: [{
4281
+ type: Input
4282
+ }], selectionMode: [{
4283
+ type: Input
4284
+ }], maxDateCount: [{
4285
+ type: Input,
4286
+ args: [{ transform: numberAttribute }]
4287
+ }], showButtonBar: [{
4288
+ type: Input,
4289
+ args: [{ transform: booleanAttribute }]
4290
+ }], todayButtonStyleClass: [{
4291
+ type: Input
4292
+ }], clearButtonStyleClass: [{
4293
+ type: Input
4294
+ }], autofocus: [{
4295
+ type: Input,
4296
+ args: [{ transform: booleanAttribute }]
4297
+ }], autoZIndex: [{
4298
+ type: Input,
4299
+ args: [{ transform: booleanAttribute }]
4300
+ }], baseZIndex: [{
4301
+ type: Input,
4302
+ args: [{ transform: numberAttribute }]
4303
+ }], panelStyleClass: [{
4304
+ type: Input
4305
+ }], panelStyle: [{
4306
+ type: Input
4307
+ }], keepInvalid: [{
4308
+ type: Input,
4309
+ args: [{ transform: booleanAttribute }]
4310
+ }], hideOnDateTimeSelect: [{
4311
+ type: Input,
4312
+ args: [{ transform: booleanAttribute }]
4313
+ }], touchUI: [{
4314
+ type: Input,
4315
+ args: [{ transform: booleanAttribute }]
4316
+ }], timeSeparator: [{
4317
+ type: Input
4318
+ }], focusTrap: [{
4319
+ type: Input,
4320
+ args: [{ transform: booleanAttribute }]
4321
+ }], showTransitionOptions: [{
4322
+ type: Input
4323
+ }], hideTransitionOptions: [{
4324
+ type: Input
4325
+ }], tabindex: [{
4326
+ type: Input,
4327
+ args: [{ transform: numberAttribute }]
4328
+ }], minDate: [{
4329
+ type: Input
4330
+ }], maxDate: [{
4331
+ type: Input
4332
+ }], disabledDates: [{
4333
+ type: Input
4334
+ }], disabledDays: [{
4335
+ type: Input
4336
+ }], showTime: [{
4337
+ type: Input
4338
+ }], responsiveOptions: [{
4339
+ type: Input
4340
+ }], numberOfMonths: [{
4341
+ type: Input
4342
+ }], firstDayOfWeek: [{
4343
+ type: Input
4344
+ }], view: [{
4345
+ type: Input
4346
+ }], defaultDate: [{
4347
+ type: Input
4348
+ }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], motionOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "motionOptions", required: false }] }], onFocus: [{
4349
+ type: Output
4350
+ }], onBlur: [{
4351
+ type: Output
4352
+ }], onClose: [{
4353
+ type: Output
4354
+ }], onSelect: [{
4355
+ type: Output
4356
+ }], onClear: [{
4357
+ type: Output
4358
+ }], onInput: [{
4359
+ type: Output
4360
+ }], onTodayClick: [{
4361
+ type: Output
4362
+ }], onClearClick: [{
4363
+ type: Output
4364
+ }], onMonthChange: [{
4365
+ type: Output
4366
+ }], onYearChange: [{
4367
+ type: Output
4368
+ }], onClickOutside: [{
4369
+ type: Output
4370
+ }], onShow: [{
4371
+ type: Output
4372
+ }], inputfieldViewChild: [{
4373
+ type: ViewChild,
4374
+ args: ['inputfield', { static: false }]
4375
+ }], content: [{
4376
+ type: ViewChild,
4377
+ args: ['contentWrapper', { static: false }]
4378
+ }], dateTemplate: [{
4379
+ type: ContentChild,
4380
+ args: ['date', { descendants: false }]
4381
+ }], headerTemplate: [{
4382
+ type: ContentChild,
4383
+ args: ['header', { descendants: false }]
4384
+ }], footerTemplate: [{
4385
+ type: ContentChild,
4386
+ args: ['footer', { descendants: false }]
4387
+ }], disabledDateTemplate: [{
4388
+ type: ContentChild,
4389
+ args: ['disabledDate', { descendants: false }]
4390
+ }], decadeTemplate: [{
4391
+ type: ContentChild,
4392
+ args: ['decade', { descendants: false }]
4393
+ }], previousIconTemplate: [{
4394
+ type: ContentChild,
4395
+ args: ['previousicon', { descendants: false }]
4396
+ }], nextIconTemplate: [{
4397
+ type: ContentChild,
4398
+ args: ['nexticon', { descendants: false }]
4399
+ }], triggerIconTemplate: [{
4400
+ type: ContentChild,
4401
+ args: ['triggericon', { descendants: false }]
4402
+ }], clearIconTemplate: [{
4403
+ type: ContentChild,
4404
+ args: ['clearicon', { descendants: false }]
4405
+ }], decrementIconTemplate: [{
4406
+ type: ContentChild,
4407
+ args: ['decrementicon', { descendants: false }]
4408
+ }], incrementIconTemplate: [{
4409
+ type: ContentChild,
4410
+ args: ['incrementicon', { descendants: false }]
4411
+ }], inputIconTemplate: [{
4412
+ type: ContentChild,
4413
+ args: ['inputicon', { descendants: false }]
4414
+ }], buttonBarTemplate: [{
4415
+ type: ContentChild,
4416
+ args: ['buttonbar', { descendants: false }]
4417
+ }], templates: [{
4418
+ type: ContentChildren,
4419
+ args: [PrimeTemplate]
4420
+ }] } });
4421
+ class DatePickerModule {
4422
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4423
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: DatePickerModule, imports: [DatePicker, SharedModule], exports: [DatePicker, SharedModule] });
4424
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerModule, imports: [DatePicker, SharedModule, SharedModule] });
4425
+ }
4426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DatePickerModule, decorators: [{
4427
+ type: NgModule,
4428
+ args: [{
4429
+ imports: [DatePicker, SharedModule],
4430
+ exports: [DatePicker, SharedModule]
4431
+ }]
4432
+ }] });
4433
+
4434
+ /**
4435
+ * Generated bundle index. Do not edit.
4436
+ */
4437
+
4438
+ export { DATEPICKER_VALUE_ACCESSOR, DatePicker, DatePickerClasses, DatePickerModule, DatePickerStyle };
4439
+ //# sourceMappingURL=primeng-datepicker.mjs.map