primenglab 22.0.0-beta.1

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