@nova-design-system/nova-webcomponents 3.9.1 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/dist/cjs/{constants-8fb8ccc0.js → constants-3b6beb66.js} +15 -1
  2. package/dist/cjs/constants-3b6beb66.js.map +1 -0
  3. package/dist/cjs/index-c56424e5.js +12 -0
  4. package/dist/cjs/index.cjs.js +7 -1
  5. package/dist/cjs/index.cjs.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/native.cjs.js +1 -1
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  11. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-badge_2.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-button.cjs.entry.js +2 -2
  18. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nv-buttongroup.cjs.entry.js +198 -0
  20. package/dist/cjs/nv-buttongroup.cjs.entry.js.map +1 -0
  21. package/dist/cjs/nv-calendar.cjs.entry.js +114 -37
  22. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +4 -4
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-dialog.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +3 -3
  29. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +5 -5
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddate.cjs.entry.js +6 -6
  32. package/dist/cjs/nv-fielddaterange.cjs.entry.js +6 -6
  33. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  34. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  35. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +377 -27
  36. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  38. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  39. package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
  40. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  42. package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
  43. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  44. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  45. package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
  46. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  47. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  51. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  52. package/dist/cjs/nv-popover.cjs.entry.js +1 -1
  53. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  54. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  55. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  56. package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
  57. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-togglebutton.cjs.entry.js +58 -0
  59. package/dist/cjs/nv-togglebutton.cjs.entry.js.map +1 -0
  60. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +172 -0
  61. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -0
  62. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  63. package/dist/collection/collection-manifest.json +3 -0
  64. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +1 -1
  65. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  66. package/dist/collection/components/nv-alert/nv-alert.css +5 -0
  67. package/dist/collection/components/nv-badge/nv-badge.css +21 -0
  68. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +2 -0
  69. package/dist/collection/components/nv-button/styles/nv-button.css +8 -0
  70. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +43 -0
  71. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -0
  72. package/dist/collection/components/nv-buttongroup/nv-buttongroup.js +217 -0
  73. package/dist/collection/components/nv-buttongroup/nv-buttongroup.js.map +1 -0
  74. package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js +86 -0
  75. package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js.map +1 -0
  76. package/dist/collection/components/nv-buttongroup/styles/nv-buttongroup.css +73 -0
  77. package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js +312 -0
  78. package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js.map +1 -0
  79. package/dist/collection/components/nv-calendar/nv-calendar.css +9 -0
  80. package/dist/collection/components/nv-calendar/nv-calendar.js +37 -24
  81. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  82. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +68 -0
  83. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  84. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +5 -3
  85. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  86. package/dist/collection/components/nv-calendar/partials/day-cell.js +4 -9
  87. package/dist/collection/components/nv-calendar/partials/day-cell.js.map +1 -1
  88. package/dist/collection/components/nv-col/nv-col.js +1 -1
  89. package/dist/collection/components/nv-datagrid/nv-datagrid.css +1 -0
  90. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  91. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  92. package/dist/collection/components/nv-dialog/nv-dialog.js +1 -1
  93. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  94. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  95. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -0
  96. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  97. package/dist/collection/components/nv-fielddate/nv-fielddate.js +6 -6
  98. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +6 -6
  99. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  100. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  101. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  102. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
  103. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +885 -122
  104. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  105. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +561 -89
  106. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  107. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +70 -16
  108. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  109. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  110. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -0
  111. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  112. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  113. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  114. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  115. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  116. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  117. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  118. package/dist/collection/components/nv-icon/nv-icons.js +6 -0
  119. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  120. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -0
  121. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  122. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  123. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  124. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  125. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  126. package/dist/collection/components/nv-row/nv-row.js +1 -1
  127. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  128. package/dist/collection/components/nv-table/nv-table.js +2 -2
  129. package/dist/collection/components/nv-toggle/nv-toggle.css +1 -0
  130. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  131. package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js +6 -0
  132. package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js.map +1 -0
  133. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +191 -0
  134. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js.map +1 -0
  135. package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +135 -0
  136. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +56 -0
  137. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -0
  138. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +324 -0
  139. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -0
  140. package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +45 -0
  141. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  142. package/dist/collection/utils/constants.js +12 -0
  143. package/dist/collection/utils/constants.js.map +1 -1
  144. package/dist/components/index.js +7 -1
  145. package/dist/components/index.js.map +1 -1
  146. package/dist/components/nv-accordion-item.js +1 -1
  147. package/dist/components/nv-accordion.js +4 -4
  148. package/dist/components/nv-alert.js +3 -3
  149. package/dist/components/nv-alert.js.map +1 -1
  150. package/dist/components/nv-avatar.js +2 -2
  151. package/dist/components/nv-badge.js +1 -1
  152. package/dist/components/nv-breadcrumb.js +3 -3
  153. package/dist/components/nv-breadcrumb.js.map +1 -1
  154. package/dist/components/nv-button.js +1 -1
  155. package/dist/components/nv-buttongroup.d.ts +11 -0
  156. package/dist/components/nv-buttongroup.js +221 -0
  157. package/dist/components/nv-buttongroup.js.map +1 -0
  158. package/dist/components/nv-calendar.js +1 -1
  159. package/dist/components/nv-col.js +1 -1
  160. package/dist/components/nv-datagrid.js +6 -6
  161. package/dist/components/nv-datagrid.js.map +1 -1
  162. package/dist/components/nv-datagridcolumn.js +1 -1
  163. package/dist/components/nv-dialog.js +7 -7
  164. package/dist/components/nv-dialogfooter.js +1 -1
  165. package/dist/components/nv-dialogheader.js +1 -1
  166. package/dist/components/nv-fieldcheckbox.js +1 -1
  167. package/dist/components/nv-fielddate.js +12 -12
  168. package/dist/components/nv-fielddaterange.js +12 -12
  169. package/dist/components/nv-fielddropdown.js +8 -8
  170. package/dist/components/nv-fielddropdownitem.js +1 -1
  171. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  172. package/dist/components/nv-fieldmultiselect.js +399 -41
  173. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  174. package/dist/components/nv-fieldnumber.js +1 -1
  175. package/dist/components/nv-fieldpassword.js +6 -6
  176. package/dist/components/nv-fieldradio.js +4 -4
  177. package/dist/components/nv-fieldradio.js.map +1 -1
  178. package/dist/components/nv-fieldselect.js +8 -8
  179. package/dist/components/nv-fieldslider.js +7 -7
  180. package/dist/components/nv-fieldtext.js +1 -1
  181. package/dist/components/nv-fieldtextarea.js +3 -3
  182. package/dist/components/nv-fieldtime.js +14 -14
  183. package/dist/components/nv-icon.js +1 -1
  184. package/dist/components/nv-iconbutton.js +1 -1
  185. package/dist/components/nv-loader.js +1 -1
  186. package/dist/components/nv-menu.js +4 -4
  187. package/dist/components/nv-menuitem.js +1 -1
  188. package/dist/components/nv-popover.js +1 -1
  189. package/dist/components/nv-row.js +1 -1
  190. package/dist/components/nv-stack.js +1 -1
  191. package/dist/components/nv-table.js +2 -2
  192. package/dist/components/nv-toggle.js +3 -3
  193. package/dist/components/nv-toggle.js.map +1 -1
  194. package/dist/components/nv-togglebutton.d.ts +11 -0
  195. package/dist/components/nv-togglebutton.js +78 -0
  196. package/dist/components/nv-togglebutton.js.map +1 -0
  197. package/dist/components/nv-togglebuttongroup.d.ts +11 -0
  198. package/dist/components/nv-togglebuttongroup.js +196 -0
  199. package/dist/components/nv-togglebuttongroup.js.map +1 -0
  200. package/dist/components/nv-tooltip.js +1 -1
  201. package/dist/components/{p-68ff562f.js → p-0ffb4785.js} +5 -5
  202. package/dist/components/{p-68ff562f.js.map → p-0ffb4785.js.map} +1 -1
  203. package/dist/components/{p-8067d283.js → p-195f46f3.js} +2 -2
  204. package/dist/components/{p-8067d283.js.map → p-195f46f3.js.map} +1 -1
  205. package/dist/components/{p-e4e1a926.js → p-1bb737fa.js} +3 -3
  206. package/dist/components/{p-e4e1a926.js.map → p-1bb737fa.js.map} +1 -1
  207. package/dist/components/{p-db4ba1d9.js → p-2db5d1ab.js} +7 -7
  208. package/dist/components/{p-db4ba1d9.js.map → p-2db5d1ab.js.map} +1 -1
  209. package/dist/components/{p-ba87d9d5.js → p-2ef4fb88.js} +3 -3
  210. package/dist/components/{p-ba87d9d5.js.map → p-2ef4fb88.js.map} +1 -1
  211. package/dist/components/{p-f1df2634.js → p-32e8e42e.js} +2 -2
  212. package/dist/components/{p-f1df2634.js.map → p-32e8e42e.js.map} +1 -1
  213. package/dist/components/{p-6de6866c.js → p-45a625fb.js} +6 -6
  214. package/dist/components/{p-6de6866c.js.map → p-45a625fb.js.map} +1 -1
  215. package/dist/components/{p-025b8a78.js → p-50d0db7b.js} +5 -5
  216. package/dist/components/{p-025b8a78.js.map → p-50d0db7b.js.map} +1 -1
  217. package/dist/components/{p-ed6686a1.js → p-51876ca1.js} +2 -2
  218. package/dist/components/{p-ed6686a1.js.map → p-51876ca1.js.map} +1 -1
  219. package/dist/components/{p-e104c58a.js → p-51a156ff.js} +3 -3
  220. package/dist/components/p-51a156ff.js.map +1 -0
  221. package/dist/components/p-8011513c.js +189 -0
  222. package/dist/components/{p-60064345.js.map → p-8011513c.js.map} +1 -1
  223. package/dist/components/{p-82e5674c.js → p-8aee1010.js} +116 -38
  224. package/dist/components/p-8aee1010.js.map +1 -0
  225. package/dist/components/{p-79e6b6a2.js → p-9fdaea9a.js} +5 -5
  226. package/dist/components/p-9fdaea9a.js.map +1 -0
  227. package/dist/components/{p-6460318d.js → p-a1fe0a5d.js} +4 -4
  228. package/dist/components/p-a1fe0a5d.js.map +1 -0
  229. package/dist/components/{p-1f505531.js → p-a3ddec4c.js} +15 -1
  230. package/dist/components/p-a3ddec4c.js.map +1 -0
  231. package/dist/components/{p-0143cee0.js → p-a5002d14.js} +6 -6
  232. package/dist/components/{p-0143cee0.js.map → p-a5002d14.js.map} +1 -1
  233. package/dist/components/{p-30f970c3.js → p-b659b999.js} +3 -3
  234. package/dist/components/{p-30f970c3.js.map → p-b659b999.js.map} +1 -1
  235. package/dist/components/{p-5d5668f0.js → p-cf06032d.js} +4 -4
  236. package/dist/components/{p-5d5668f0.js.map → p-cf06032d.js.map} +1 -1
  237. package/dist/components/{p-dfd2d4f0.js → p-fda58a76.js} +2 -2
  238. package/dist/components/{p-dfd2d4f0.js.map → p-fda58a76.js.map} +1 -1
  239. package/dist/esm/{constants-4faa1fae.js → constants-23aaef7b.js} +15 -1
  240. package/dist/esm/constants-23aaef7b.js.map +1 -0
  241. package/dist/esm/index-a1936cd0.js +12 -0
  242. package/dist/esm/index.js +7 -1
  243. package/dist/esm/index.js.map +1 -1
  244. package/dist/esm/loader.js +1 -1
  245. package/dist/esm/native.js +1 -1
  246. package/dist/esm/nv-accordion-item.entry.js +1 -1
  247. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  248. package/dist/esm/nv-alert.entry.js +2 -2
  249. package/dist/esm/nv-alert.entry.js.map +1 -1
  250. package/dist/esm/nv-avatar.entry.js +1 -1
  251. package/dist/esm/nv-badge_2.entry.js +2 -2
  252. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  253. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  254. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  255. package/dist/esm/nv-button.entry.js +2 -2
  256. package/dist/esm/nv-button.entry.js.map +1 -1
  257. package/dist/esm/nv-buttongroup.entry.js +194 -0
  258. package/dist/esm/nv-buttongroup.entry.js.map +1 -0
  259. package/dist/esm/nv-calendar.entry.js +114 -37
  260. package/dist/esm/nv-calendar.entry.js.map +1 -1
  261. package/dist/esm/nv-col.entry.js +1 -1
  262. package/dist/esm/nv-datagrid.entry.js +4 -4
  263. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  264. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  265. package/dist/esm/nv-dialog.entry.js +2 -2
  266. package/dist/esm/nv-dialogfooter_2.entry.js +3 -3
  267. package/dist/esm/nv-fieldcheckbox.entry.js +5 -5
  268. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  269. package/dist/esm/nv-fielddate.entry.js +6 -6
  270. package/dist/esm/nv-fielddaterange.entry.js +6 -6
  271. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  272. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  273. package/dist/esm/nv-fieldmultiselect.entry.js +378 -28
  274. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  275. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  276. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  277. package/dist/esm/nv-fieldradio.entry.js +4 -4
  278. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  279. package/dist/esm/nv-fieldselect.entry.js +5 -5
  280. package/dist/esm/nv-fieldslider.entry.js +3 -3
  281. package/dist/esm/nv-fieldtext.entry.js +3 -3
  282. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  283. package/dist/esm/nv-fieldtime.entry.js +10 -10
  284. package/dist/esm/nv-icon.entry.js +3 -3
  285. package/dist/esm/nv-icon.entry.js.map +1 -1
  286. package/dist/esm/nv-iconbutton_2.entry.js +3 -3
  287. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  288. package/dist/esm/nv-menu.entry.js +1 -1
  289. package/dist/esm/nv-menuitem.entry.js +1 -1
  290. package/dist/esm/nv-popover.entry.js +1 -1
  291. package/dist/esm/nv-row.entry.js +1 -1
  292. package/dist/esm/nv-stack.entry.js +1 -1
  293. package/dist/esm/nv-table.entry.js +2 -2
  294. package/dist/esm/nv-toggle.entry.js +3 -3
  295. package/dist/esm/nv-toggle.entry.js.map +1 -1
  296. package/dist/esm/nv-togglebutton.entry.js +54 -0
  297. package/dist/esm/nv-togglebutton.entry.js.map +1 -0
  298. package/dist/esm/nv-togglebuttongroup.entry.js +168 -0
  299. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -0
  300. package/dist/esm/nv-tooltip.entry.js +1 -1
  301. package/dist/native/index.esm.js +1 -1
  302. package/dist/native/index.esm.js.map +1 -1
  303. package/dist/native/native.css +1 -1
  304. package/dist/native/native.esm.js +1 -1
  305. package/dist/native/native.esm.js.map +1 -1
  306. package/dist/native/{p-2a6783ca.entry.js → p-0da8f0d1.entry.js} +2 -2
  307. package/dist/native/{p-2a6783ca.entry.js.map → p-0da8f0d1.entry.js.map} +1 -1
  308. package/dist/native/p-0ef94dae.entry.js +2 -0
  309. package/dist/native/{p-1ad1bff9.entry.js.map → p-0ef94dae.entry.js.map} +1 -1
  310. package/dist/native/p-13032ec1.entry.js +2 -0
  311. package/dist/native/p-13032ec1.entry.js.map +1 -0
  312. package/dist/native/p-184032cb.entry.js +2 -0
  313. package/dist/native/{p-a73fa60a.entry.js.map → p-184032cb.entry.js.map} +1 -1
  314. package/dist/native/p-2197ffdf.entry.js +2 -0
  315. package/dist/native/{p-fa81b77f.entry.js.map → p-2197ffdf.entry.js.map} +1 -1
  316. package/dist/native/p-234cfa2e.entry.js +2 -0
  317. package/dist/native/p-2a3325fb.entry.js +2 -0
  318. package/dist/native/p-2a3325fb.entry.js.map +1 -0
  319. package/dist/native/{p-3f139780.entry.js → p-2d647761.entry.js} +2 -2
  320. package/dist/native/{p-ff248eb8.entry.js → p-348c6bb4.entry.js} +2 -2
  321. package/dist/native/p-397c0fca.entry.js +2 -0
  322. package/dist/native/{p-51a57a3a.entry.js.map → p-397c0fca.entry.js.map} +1 -1
  323. package/dist/native/{p-55cd3d62.entry.js → p-3da64006.entry.js} +2 -2
  324. package/dist/native/p-3ed84cd9.entry.js +2 -0
  325. package/dist/native/{p-fcd52432.entry.js.map → p-3ed84cd9.entry.js.map} +1 -1
  326. package/dist/native/{p-3ff7a912.entry.js → p-3fcaac6d.entry.js} +2 -2
  327. package/dist/native/{p-b7ec9a1b.entry.js → p-4302824a.entry.js} +2 -2
  328. package/dist/native/p-43071c3b.entry.js +2 -0
  329. package/dist/native/p-44dd9a4c.entry.js +2 -0
  330. package/dist/native/p-44dd9a4c.entry.js.map +1 -0
  331. package/dist/native/p-464bb197.entry.js +2 -0
  332. package/dist/native/p-464bb197.entry.js.map +1 -0
  333. package/dist/native/{p-916acbd3.entry.js → p-49504fd6.entry.js} +2 -2
  334. package/dist/native/{p-bc77cac1.entry.js → p-553778e6.entry.js} +2 -2
  335. package/dist/native/p-553778e6.entry.js.map +1 -0
  336. package/dist/native/{p-bee62b2b.entry.js → p-5f0776cb.entry.js} +2 -2
  337. package/dist/native/p-62032cd9.entry.js +2 -0
  338. package/dist/native/p-62032cd9.entry.js.map +1 -0
  339. package/dist/native/{p-11012998.entry.js → p-676447d7.entry.js} +3 -3
  340. package/dist/native/{p-16ef7dd4.entry.js → p-681f2bac.entry.js} +2 -2
  341. package/dist/native/{p-4b15cff3.entry.js → p-7f0d576b.entry.js} +2 -2
  342. package/dist/native/{p-68edb2e8.entry.js → p-85f8f11a.entry.js} +2 -2
  343. package/dist/native/{p-0e005d95.entry.js → p-888ad58e.entry.js} +2 -2
  344. package/dist/native/{p-34bf336f.entry.js → p-92931ab8.entry.js} +2 -2
  345. package/dist/native/{p-f00a4552.entry.js → p-94dc9c41.entry.js} +2 -2
  346. package/dist/native/{p-85a54ef2.entry.js → p-9c5d6827.entry.js} +2 -2
  347. package/dist/native/{p-08452012.entry.js → p-9f451b8a.entry.js} +3 -3
  348. package/dist/native/{p-08452012.entry.js.map → p-9f451b8a.entry.js.map} +1 -1
  349. package/dist/native/{p-1f932a4b.entry.js → p-aacd8789.entry.js} +2 -2
  350. package/dist/native/p-ac5496e7.entry.js +2 -0
  351. package/dist/native/{p-9ea3d30d.entry.js → p-ad2cc829.entry.js} +2 -2
  352. package/dist/native/p-b2442d4b.entry.js +2 -0
  353. package/dist/native/{p-a36dc25a.entry.js.map → p-b2442d4b.entry.js.map} +1 -1
  354. package/dist/native/{p-67c34b8c.entry.js → p-b58fb522.entry.js} +2 -2
  355. package/dist/native/p-ba9906b7.entry.js +2 -0
  356. package/dist/native/{p-64cb38e6.entry.js.map → p-ba9906b7.entry.js.map} +1 -1
  357. package/dist/native/{p-f540db71.entry.js → p-dd023fd6.entry.js} +2 -2
  358. package/dist/native/p-f033c4ce.entry.js +2 -0
  359. package/dist/native/p-f033c4ce.entry.js.map +1 -0
  360. package/dist/native/{p-051db87c.entry.js → p-fb672f90.entry.js} +2 -2
  361. package/dist/native/p-fc9564b3.js +2 -0
  362. package/dist/native/p-fc9564b3.js.map +1 -0
  363. package/dist/types/components/nv-buttongroup/nv-buttongroup.d.ts +50 -0
  364. package/dist/types/components/nv-buttongroup/nv-buttongroup.docs.d.ts +4 -0
  365. package/dist/types/components/nv-buttongroup/nv-buttongroup.utils.d.ts +25 -0
  366. package/dist/types/components/nv-buttongroup/test/nv-buttongroup.utils.test.d.ts +1 -0
  367. package/dist/types/components/nv-calendar/nv-calendar.d.ts +11 -1
  368. package/dist/types/components/nv-calendar/nv-calendar.utils.d.ts +31 -0
  369. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +11 -1
  370. package/dist/types/components/nv-calendar/partials/day-cell.d.ts +7 -1
  371. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +116 -23
  372. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  373. package/dist/types/components/nv-togglebutton/nv-togglebutton.d.ts +46 -0
  374. package/dist/types/components/nv-togglebutton/nv-togglebutton.docs.d.ts +4 -0
  375. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +80 -0
  376. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.d.ts +4 -0
  377. package/dist/types/components.d.ts +289 -2
  378. package/dist/types/utils/constants.d.ts +10 -0
  379. package/dist/vscode-data.json +189 -0
  380. package/hydrate/index.js +1058 -154
  381. package/hydrate/index.mjs +1058 -154
  382. package/package.json +14 -2
  383. package/dist/cjs/constants-8fb8ccc0.js.map +0 -1
  384. package/dist/components/p-1f505531.js.map +0 -1
  385. package/dist/components/p-60064345.js +0 -189
  386. package/dist/components/p-6460318d.js.map +0 -1
  387. package/dist/components/p-79e6b6a2.js.map +0 -1
  388. package/dist/components/p-82e5674c.js.map +0 -1
  389. package/dist/components/p-e104c58a.js.map +0 -1
  390. package/dist/esm/constants-4faa1fae.js.map +0 -1
  391. package/dist/native/p-10ce53ea.entry.js +0 -2
  392. package/dist/native/p-1ad1bff9.entry.js +0 -2
  393. package/dist/native/p-4a533dd8.entry.js +0 -2
  394. package/dist/native/p-4a533dd8.entry.js.map +0 -1
  395. package/dist/native/p-51a57a3a.entry.js +0 -2
  396. package/dist/native/p-64cb38e6.entry.js +0 -2
  397. package/dist/native/p-73c08f3b.entry.js +0 -2
  398. package/dist/native/p-73c08f3b.entry.js.map +0 -1
  399. package/dist/native/p-a36dc25a.entry.js +0 -2
  400. package/dist/native/p-a50f3850.entry.js +0 -2
  401. package/dist/native/p-a73fa60a.entry.js +0 -2
  402. package/dist/native/p-b3f9db23.entry.js +0 -2
  403. package/dist/native/p-b3f9db23.entry.js.map +0 -1
  404. package/dist/native/p-bc77cac1.entry.js.map +0 -1
  405. package/dist/native/p-e2d0a77d.js +0 -2
  406. package/dist/native/p-e2d0a77d.js.map +0 -1
  407. package/dist/native/p-ec92ee7a.entry.js +0 -2
  408. package/dist/native/p-fa81b77f.entry.js +0 -2
  409. package/dist/native/p-fcd52432.entry.js +0 -2
  410. /package/dist/native/{p-ec92ee7a.entry.js.map → p-234cfa2e.entry.js.map} +0 -0
  411. /package/dist/native/{p-3f139780.entry.js.map → p-2d647761.entry.js.map} +0 -0
  412. /package/dist/native/{p-ff248eb8.entry.js.map → p-348c6bb4.entry.js.map} +0 -0
  413. /package/dist/native/{p-55cd3d62.entry.js.map → p-3da64006.entry.js.map} +0 -0
  414. /package/dist/native/{p-3ff7a912.entry.js.map → p-3fcaac6d.entry.js.map} +0 -0
  415. /package/dist/native/{p-b7ec9a1b.entry.js.map → p-4302824a.entry.js.map} +0 -0
  416. /package/dist/native/{p-10ce53ea.entry.js.map → p-43071c3b.entry.js.map} +0 -0
  417. /package/dist/native/{p-916acbd3.entry.js.map → p-49504fd6.entry.js.map} +0 -0
  418. /package/dist/native/{p-bee62b2b.entry.js.map → p-5f0776cb.entry.js.map} +0 -0
  419. /package/dist/native/{p-11012998.entry.js.map → p-676447d7.entry.js.map} +0 -0
  420. /package/dist/native/{p-16ef7dd4.entry.js.map → p-681f2bac.entry.js.map} +0 -0
  421. /package/dist/native/{p-4b15cff3.entry.js.map → p-7f0d576b.entry.js.map} +0 -0
  422. /package/dist/native/{p-68edb2e8.entry.js.map → p-85f8f11a.entry.js.map} +0 -0
  423. /package/dist/native/{p-0e005d95.entry.js.map → p-888ad58e.entry.js.map} +0 -0
  424. /package/dist/native/{p-34bf336f.entry.js.map → p-92931ab8.entry.js.map} +0 -0
  425. /package/dist/native/{p-f00a4552.entry.js.map → p-94dc9c41.entry.js.map} +0 -0
  426. /package/dist/native/{p-85a54ef2.entry.js.map → p-9c5d6827.entry.js.map} +0 -0
  427. /package/dist/native/{p-1f932a4b.entry.js.map → p-aacd8789.entry.js.map} +0 -0
  428. /package/dist/native/{p-a50f3850.entry.js.map → p-ac5496e7.entry.js.map} +0 -0
  429. /package/dist/native/{p-9ea3d30d.entry.js.map → p-ad2cc829.entry.js.map} +0 -0
  430. /package/dist/native/{p-67c34b8c.entry.js.map → p-b58fb522.entry.js.map} +0 -0
  431. /package/dist/native/{p-f540db71.entry.js.map → p-dd023fd6.entry.js.map} +0 -0
  432. /package/dist/native/{p-051db87c.entry.js.map → p-fb672f90.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nv-calendar.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\nimport {\n WEEK_ABBREVIATIONS,\n CUSTOM_DAY_NAMES,\n CUSTOM_MONTH_NAMES,\n} from '../../utils/constants';\n\nimport {\n parseDate,\n isSameDate,\n formatDate,\n isSameOrAfter,\n isSameOrBefore,\n} from './nv-calendar.utils';\n\n// Import partials\nimport {\n CalendarHeader,\n CalendarGrid,\n WeekNumbers,\n CalendarShortcuts,\n CalendarActions,\n} from './partials';\n\n/**\n * @slot default - Child content of the component.\n * @slot actions - Child content of the component.\n */\n@Component({\n tag: 'nv-calendar',\n styleUrl: 'nv-calendar.scss',\n shadow: false,\n})\nexport class NvCalendar {\n @Element() el: HTMLNvCalendarElement;\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * First day of the week (0 = Sunday, 1 = Monday, etc.)\n * @default 1\n */\n @Prop({ reflect: true })\n readonly firstDayOfWeek: number = 1;\n\n /**\n * Number of calendars to display\n * @default 1\n */\n @Prop({ mutable: true, reflect: true })\n numberOfCalendars: number = 1;\n\n /**\n * Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.\n * Examples:\n * - Single: \"2025-03-15\"\n * - Range: \"2025-03-15,2025-03-20\"\n * @default \"\"\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: true, mutable: true })\n value: string = '';\n\n /**\n * Selected date (ISO string format)\n * ex: \"2025-03-15\"\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: true, mutable: true })\n singleValue: string;\n\n /**\n * Selected date range\n * format: { start: ISO string, end: ISO string }\n * ex: { start: \"2025-03-15\", end: \"2025-03-20\" }\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: false, mutable: true })\n rangeValue: {\n /** ISO string for start date */\n start: string;\n /** ISO string for end date */\n end: string;\n };\n\n /**\n * Minimum date for selection (ISO string format, ex: \"2025-01-01\")\n */\n @Prop({ reflect: true })\n readonly min?: string;\n\n /**\n * Maximum date for selection (ISO string format, ex: \"2025-12-31\")\n */\n @Prop({ reflect: true })\n readonly max?: string;\n\n /**\n * Disabled dates (ISO string array)\n */\n @Prop({ reflect: false })\n readonly disabledDates: Array<string>;\n\n /**\n * Locale for date formatting\n * @default 'en-BE'\n */\n @Prop({ reflect: true })\n readonly locale: string = 'en-BE';\n\n /**\n * Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @default 'YYYY-MM-DD'\n * @note If the date format is in UTC mode, the date will be displayed in UTC time.\n * @note If the date format is not in UTC mode, the date will be displayed in the local time.\n */\n @Prop({ reflect: true })\n readonly dateFormat: string = 'YYYY-MM-DD';\n\n /**\n * Footer placement\n * @default 'bottom'\n */\n @Prop({ reflect: true })\n readonly shortcutsPlacement: 'bottom' | 'left' | 'right' = 'bottom';\n\n /**\n * Selection type (single date or date range)\n * @default 'single'\n */\n @Prop({ reflect: true })\n readonly selectionType: 'single' | 'range' = 'single';\n\n /**\n * Show action buttons\n */\n @Prop({ reflect: true })\n readonly showActions: boolean = false;\n\n /**\n * Custom actions to display in the footer\n */\n @Prop({ reflect: true })\n readonly shortcuts: {\n /** Label of the shortcut */\n label: string;\n /** Selected date value for single selection mode */\n singleValue?: string;\n /** Date range values for range selection mode */\n rangeValue?: HTMLNvCalendarElement['rangeValue'];\n }[];\n\n /**\n * Show week numbers\n */\n @Prop({ reflect: true })\n readonly showWeekNumbers: boolean;\n\n /** Cache for parsed disabled dates */\n private parsedDisabledDates: Date[] = [];\n\n /** Flag to indicate a user click for selection */\n private isUserClick: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n @State()\n currentDate: Date | null = null;\n\n @State()\n selectedDate: Date | null = null;\n\n @State()\n startDate: Date | null = null;\n\n @State()\n endDate: Date | null = null;\n\n /** List of formatted months for the selector */\n @State()\n private months: {\n /** Month value */\n value: number;\n /** Month label */\n label: string;\n }[] = [];\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when a single date is selected\n */\n @Event()\n singleDateChange: EventEmitter<string>;\n\n /**\n * Emitted when a date range is selected\n */\n @Event()\n rangeDateChange: EventEmitter<HTMLNvCalendarElement['rangeValue']>;\n\n /**\n * Emitted when the unified value changes\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Watches the changes of the number of calendars\n * @param {number} newValue - New number of calendars\n */\n @Watch('numberOfCalendars')\n validateNumberOfCalendars(newValue: number) {\n if (newValue < 1 || newValue > 4) {\n console.warn(\n 'numberOfCalendars must be between 1 and 4. Defaulting to 1.',\n );\n this.numberOfCalendars = 1;\n }\n }\n\n /**\n * Watches the changes of the selected date range\n * @param {Object} newValue - New rangeValue value\n * @param {string} newValue.start - Start date\n * @param {string} newValue.end - End date\n */\n @Watch('rangeValue')\n onRangeValueChange(newValue: typeof this.rangeValue) {\n if (newValue && newValue.start && newValue.end) {\n try {\n const { startDate, endDate } = this.validateDateRange(\n newValue.start,\n newValue.end,\n );\n\n this.startDate = startDate;\n this.endDate = endDate;\n\n // Do not navigate to the start date if data-prevent-navigation attribute is present\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = startDate;\n }\n } catch (error) {\n console.error('Invalid rangeValue:', error);\n }\n }\n }\n\n /**\n * Watches the changes of the disabled dates\n * @description Watches the changes of the disabled dates\n */\n @Watch('disabledDates')\n handleDisabledDatesChange() {\n this.parseDisabledDates();\n }\n\n /**\n * Watches the changes of the single value\n * @param {string} newValue - New single value\n * @param {string} oldValue - Old single value\n */\n @Watch('singleValue')\n onSingleValueChange(newValue: string, oldValue: string) {\n if (this.selectionType === 'single' && newValue !== oldValue && newValue) {\n const parsedDate = parseDate(newValue, this.dateFormat);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n\n // Do not navigate to the selected date if data-prevent-navigation attribute is present\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = parsedDate;\n }\n }\n }\n }\n\n /**\n * Watches the changes of the unified value prop\n * @param {string} newValue - New value\n * @param {string} oldValue - Old value\n */\n @Watch('value')\n onValueChange(newValue: string, oldValue: string) {\n if (newValue !== oldValue) {\n this.parseUnifiedValue(newValue);\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.parseDisabledDates();\n\n // Initialize from unified value prop if provided\n if (this.value) {\n this.parseUnifiedValue(this.value);\n } else if (this.selectionType === 'single' && this.singleValue) {\n this.selectedDate = parseDate(this.singleValue, this.dateFormat);\n this.currentDate = this.selectedDate;\n } else if (this.selectionType === 'range' && this.rangeValue) {\n try {\n if (this.rangeValue.start && this.rangeValue.end) {\n const { startDate, endDate, swapped } = this.validateDateRange(\n this.rangeValue.start,\n this.rangeValue.end,\n );\n\n this.startDate = startDate;\n this.endDate = endDate;\n this.currentDate = startDate;\n\n if (swapped) {\n // If dates were swapped, update the rangeValue property\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = {\n start: formatDate(startDate, { dateFormat: this.dateFormat }),\n end: formatDate(endDate, { dateFormat: this.dateFormat }),\n };\n }\n }\n } catch (error) {\n console.error('Invalid rangeValue:', error);\n }\n }\n\n // Ensure currentDate is always initialized\n if (!this.currentDate) {\n this.currentDate = new Date();\n }\n\n this.initializeMonths();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Checks if shortcuts are visible\n * @returns {boolean} true if shortcuts are visible\n */\n private get hasShortcuts(): boolean {\n return Boolean(this.shortcutsPlacement && this.shortcuts);\n }\n\n /**\n * Checks if actions are visible\n * @returns {boolean} true if actions are visible\n */\n private get hasActions(): boolean {\n return this.showActions;\n }\n\n /**\n * Checks if the date format is in UTC mode\n * @returns {boolean} true if the date format is in UTC mode\n */\n private get isUTCMode(): boolean {\n return this.dateFormat.includes('Z');\n }\n\n /**\n * Parses the unified value prop and synchronizes with internal state\n * @param {string} value - Value to parse\n */\n private parseUnifiedValue = (value: string): void => {\n if (!value) {\n // Reset all selections\n this.selectedDate = null;\n this.startDate = null;\n this.endDate = null;\n return;\n }\n\n const values = value\n .split(',')\n .map(v => v.trim())\n .filter(Boolean);\n\n if (this.selectionType === 'range' && values.length < 2) {\n console.warn(`Invalid date range format: ${value}`);\n this.startDate = null;\n this.endDate = null;\n return;\n }\n\n if (this.selectionType === 'single' && values.length >= 1) {\n const parsedDate = parseDate(values[0], this.dateFormat);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n\n // Only sync with legacy prop if not using actions (immediate mode)\n if (!this.showActions) {\n this.singleValue = values[0];\n }\n\n // Navigate to the date if not prevented\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = parsedDate;\n }\n } else {\n // Handle malformed date gracefully - reset state\n console.warn(`Invalid date format: ${values[0]}`);\n this.selectedDate = null;\n if (!this.showActions) {\n this.singleValue = '';\n }\n }\n } else if (this.selectionType === 'range' && values.length >= 2) {\n const startDate = parseDate(values[0], this.dateFormat);\n const endDate = parseDate(values[1], this.dateFormat);\n\n if (startDate && endDate) {\n this.startDate = startDate;\n this.endDate = endDate;\n\n // Only sync with legacy prop if not using actions (immediate mode)\n if (!this.showActions) {\n this.rangeValue = {\n start: values[0],\n end: values[1],\n };\n }\n\n // Navigate to start date if not prevented\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = startDate;\n }\n } else {\n // Handle malformed dates gracefully - reset state\n console.warn(\n `Invalid date range format: ${values?.[0]}, ${values?.[1]}`,\n );\n this.startDate = null;\n this.endDate = null;\n if (!this.showActions) {\n this.rangeValue = { start: '', end: '' };\n }\n }\n }\n };\n\n /**\n * Validates and processes a date range, warning if start is after end\n * @param {string} startDateStr - Start date in ISO string format\n * @param {string} endDateStr - End date in ISO string format\n * @returns {object} Object containing the validated start and end dates\n */\n private validateDateRange(\n startDateStr: string,\n endDateStr: string,\n ): {\n /** Start date */\n startDate: Date;\n /** End date */\n endDate: Date;\n /** If the dates were swapped */\n swapped: boolean;\n } {\n try {\n const startDate = parseDate(startDateStr, this.dateFormat);\n const endDate = parseDate(endDateStr, this.dateFormat);\n\n if (startDate && endDate && startDate > endDate) {\n console.warn(\n `Warning: startDate (${formatDate(startDate, {\n dateFormat: this.dateFormat,\n })}) is after endDate (${formatDate(endDate, {\n dateFormat: this.dateFormat,\n })})`,\n );\n\n // Return dates in correct order, with swapped flag\n return {\n startDate: endDate,\n endDate: startDate,\n swapped: true,\n };\n }\n\n return {\n startDate,\n endDate,\n swapped: false,\n };\n } catch (error) {\n console.error('Invalid date range:', error);\n throw error; // Re-throw to let the caller handle it\n }\n }\n\n /**\n * Change the displayed month\n * @param {number} offset - Month offset (-1 for previous, 1 for next)\n */\n private changeMonth = (offset: number) => {\n const newDate = new Date(this.currentDate);\n newDate.setUTCDate(1); // Set to the first of the month to avoid day-of-month issues\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n\n const containers = this.el.querySelectorAll('.calendar-grid');\n containers.forEach(container => {\n container.classList.remove('slide-left', 'slide-right');\n const animationClass = offset > 0 ? 'slide-left' : 'slide-right';\n container.classList.add(animationClass);\n setTimeout(() => container.classList.remove(animationClass), 300);\n });\n\n this.currentDate = newDate;\n };\n\n /**\n * Handles date selection based on the mode\n * @param {Date} date - Selected date\n */\n private handleDateSelection = (date: Date) => {\n if (this.isDateDisabled(date)) {\n return;\n }\n\n this.isUserClick = true;\n\n if (this.selectionType === 'single') {\n this.handleSingleSelection(date);\n } else {\n this.handleRangeSelection(date);\n }\n\n requestAnimationFrame(() => {\n this.isUserClick = false;\n });\n };\n\n /**\n * Handles single date selection\n * @param {Date} date - Selected date\n */\n private handleSingleSelection = (date: Date) => {\n if (!date) return;\n\n const formattedDate = formatDate(date, { dateFormat: this.dateFormat });\n this.selectedDate = date;\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = formattedDate;\n this.valueChanged.emit(formattedDate);\n\n // Legacy support (deprecated) - only sync props if not using actions\n if (!this.showActions) {\n this.singleValue = formattedDate;\n this.singleDateChange.emit(formattedDate);\n }\n };\n\n /**\n * Handles range date selection\n * @param {Date} date - Selected date\n */\n private handleRangeSelection = (date: Date) => {\n if (!this.startDate || (this.startDate && this.endDate)) {\n // Start new range selection\n this.startDate = date;\n this.endDate = null;\n } else {\n // Complete range selection\n this.endDate = date;\n\n // Ensure correct order\n if (this.startDate > this.endDate) {\n [this.startDate, this.endDate] = [this.endDate, this.startDate];\n }\n\n const startFormatted = formatDate(this.startDate, {\n dateFormat: this.dateFormat,\n });\n const endFormatted = formatDate(this.endDate, {\n dateFormat: this.dateFormat,\n });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = `${startFormatted},${endFormatted}`;\n this.valueChanged.emit(this.value);\n\n // Legacy support (deprecated) - only sync props if not using actions\n if (!this.showActions) {\n const legacyRange = { start: startFormatted, end: endFormatted };\n this.rangeDateChange.emit(legacyRange);\n this.rangeValue = legacyRange;\n }\n }\n };\n\n /**\n * Checks if a date is disabled.\n * Disabled if:\n * - The date is before min (if defined)\n * - The date is after max (if defined)\n * - The date is in the disabledDates array\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is disabled\n */\n private isDateDisabled = (date: Date): boolean => {\n if (!date) return true;\n\n // Minimum bound check\n if (this.min) {\n const minDate = parseDate(this.min, this.dateFormat);\n if (minDate && date < minDate) {\n return true;\n }\n }\n\n // Maximum bound check\n if (this.max) {\n const maxDate = parseDate(this.max, this.dateFormat);\n if (maxDate && date > maxDate) {\n return true;\n }\n }\n\n // Check disabled dates\n return this.parsedDisabledDates.some(disabledDate =>\n isSameDate(date, disabledDate, { isUTCMode: this.isUTCMode }),\n );\n };\n\n /**\n * Checks if a date is in the selected range\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is in the range\n */\n private isDateInRange = (date: Date): boolean => {\n if (!date || !this.startDate || !this.endDate) return false;\n\n const checkDate = parseDate(date, this.dateFormat);\n const startDate = parseDate(this.startDate, this.dateFormat);\n const endDate = parseDate(this.endDate, this.dateFormat);\n\n // Verify if startDate and endDate are valid\n if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\n return false;\n }\n\n // Verify that startDate is before endDate (additional security)\n if (startDate > endDate) return false;\n\n // Comparison based only on the date (year, month, day)\n return (\n isSameOrAfter(checkDate, startDate, { isUTCMode: this.isUTCMode }) &&\n isSameOrBefore(checkDate, endDate, { isUTCMode: this.isUTCMode })\n );\n };\n\n /**\n * Retrieves the localized day names\n * @returns {string[]} Array of short day names\n */\n private getDayNames = (): string[] => {\n let days: string[];\n\n // If we have custom day names for this locale\n if (CUSTOM_DAY_NAMES[this.locale]) {\n // Custom day names are expected to start with Monday (index 0 = Monday)\n days = [...CUSTOM_DAY_NAMES[this.locale]];\n } else {\n // Generate days using Intl.DateTimeFormat, starting from Monday\n const formatter = new Intl.DateTimeFormat(this.locale, {\n weekday: 'short',\n });\n\n // Generate days starting from Monday (2023-01-02 was a Monday)\n days = [...Array(7)].map((_, i) =>\n formatter.format(new Date(2023, 0, i + 2)).toUpperCase(),\n );\n }\n\n // Now reorganize based on firstDayOfWeek\n // 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.\n if (this.firstDayOfWeek === 0) {\n // If Sunday is first day, move Sunday (last element) to the beginning\n return [days[6], ...days.slice(0, 6)];\n } else if (this.firstDayOfWeek === 1) {\n // If Monday is first day, return as-is (since our array starts with Monday)\n return days;\n } else {\n // For other first days (Tuesday=2, Wednesday=3, etc.)\n const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday\n return [...days.slice(offset), ...days.slice(0, offset)];\n }\n };\n\n /**\n * Generates the days of the current month\n * @param {number} offset - Month offset (0 by default)\n * @returns {Array<{ dayOfMonth: number | null, date: Date | null, isSelected: boolean, isDisabled: boolean }>} Array of formatted days\n */\n private getDaysInMonth = (\n offset: number = 0,\n ): Array<{\n /** Day of the month (1 to 31) */\n dayOfMonth: number | null;\n /** Complete date */\n date: Date | null;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** If the day is blank (padding) */\n isBlank: boolean;\n }> => {\n const baseMonth = this.currentDate.getUTCMonth();\n\n // Correctly calculate the year and month for the given offset\n const targetDate = new Date(this.currentDate);\n targetDate.setUTCMonth(baseMonth + offset);\n const year = targetDate.getUTCFullYear();\n const month = targetDate.getUTCMonth();\n\n const firstDay = new Date(Date.UTC(year, month, 1));\n const lastDay = new Date(Date.UTC(year, month + 1, 0));\n\n const days = [];\n\n // Correct calculation of offset for previous month days\n // Use getUTCDay to stay consistent with UTC timezone\n const dayOfWeekIndex = firstDay.getUTCDay(); // 0 = Sunday, 1 = Monday, etc.\n\n // Adjust based on firstDayOfWeek (if week starts on Monday, offset is different)\n const offsetDays = (dayOfWeekIndex - this.firstDayOfWeek + 7) % 7;\n\n // Add padding days from the previous month\n for (let i = 0; i < offsetDays; i++) {\n const prevMonthDay = new Date(Date.UTC(year, month, 0)).getUTCDate();\n const date = new Date(\n Date.UTC(year, month - 1, prevMonthDay - offsetDays + 1 + i),\n );\n days.push({\n dayOfMonth: date.getUTCDate(),\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n // Days from previous month are blank if not the first calendar\n isBlank: offset > 0,\n });\n }\n\n // Add the days of the current month\n for (let i = 1; i <= lastDay.getUTCDate(); i++) {\n const date = new Date(Date.UTC(year, month, i));\n days.push({\n dayOfMonth: i,\n date,\n isCurrentMonth: true,\n isDisabled: this.isDateDisabled(date),\n isBlank: false,\n });\n }\n\n // Add padding days to fill the last week\n const nextMonthDaysNeeded = 7 - (days.length % 7 || 7);\n if (nextMonthDaysNeeded < 7) {\n for (let i = 1; i <= nextMonthDaysNeeded; i++) {\n const date = new Date(Date.UTC(year, month + 1, i));\n days.push({\n dayOfMonth: i,\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n // Days from next month are blank if not the last calendar\n isBlank: offset < this.numberOfCalendars - 1,\n });\n }\n }\n\n return days;\n };\n\n /** Initializes the list of formatted months according to the locale */\n private initializeMonths = () => {\n // If we have custom month names for this locale\n if (CUSTOM_MONTH_NAMES[this.locale]) {\n this.months = CUSTOM_MONTH_NAMES[this.locale].map((label, value) => ({\n value,\n label,\n }));\n return;\n }\n\n // Otherwise, use the default behavior\n const formatter = new Intl.DateTimeFormat(this.locale, { month: 'short' });\n this.months = Array.from({ length: 12 }, (_, i) => ({\n value: i,\n label: formatter.format(new Date(2000, i, 1)).toUpperCase(),\n }));\n };\n\n /**\n * Retrieves the localized abbreviation for \"week\"\n * @returns {string} Localized abbreviation for \"week\"\n */\n private getLocalizedWeekText = (): string => {\n return WEEK_ABBREVIATIONS[this.locale] || 'W';\n };\n\n /**\n * Handles month change in the selector\n * @param {Event} event - Month change event\n * @param {number} calendarOffset - Calendar offset (0 by default)\n */\n private handleMonthChange = (event: Event, calendarOffset: number = 0) => {\n const select = event.target as HTMLSelectElement;\n const selectedMonth = parseInt(select.value, 10);\n const newDate = new Date(this.currentDate);\n\n // Date for the calendar being changed\n const targetCalendarDate = new Date(newDate.toUTCString());\n targetCalendarDate.setUTCMonth(\n targetCalendarDate.getUTCMonth() + calendarOffset,\n );\n\n const currentMonth = targetCalendarDate.getUTCMonth();\n let monthDiff = selectedMonth - currentMonth;\n\n // Smartly adjust for year change\n if (monthDiff > 6) {\n // e.g. from Jan to Dec, go back 1 month\n monthDiff -= 12;\n }\n if (monthDiff < -6) {\n // e.g. from Dec to Jan, go forward 1 month\n monthDiff += 12;\n }\n\n // Apply the diff to the original `currentDate`\n const finalDate = new Date(this.currentDate);\n finalDate.setUTCMonth(finalDate.getUTCMonth() + monthDiff);\n this.currentDate = finalDate;\n };\n\n /**\n * Handles year change in the numeric entry\n * @param {Event} event - Year change event\n * @param {number} calendarOffset - Calendar offset (0 by default)\n */\n private handleYearChange = (event: Event, calendarOffset: number = 0) => {\n const input = event.target as HTMLInputElement;\n const year = parseInt(input.value, 10);\n if (!isNaN(year) && year >= 1900 && year <= 2100) {\n const newDate = new Date(this.currentDate);\n newDate.setUTCMonth(newDate.getUTCMonth() + calendarOffset);\n newDate.setUTCFullYear(year);\n newDate.setUTCMonth(newDate.getUTCMonth() - calendarOffset);\n this.currentDate = new Date(newDate);\n }\n };\n\n /**\n * Handles week selection\n * @param {Date[]} weekDays - Selected week days\n * @param {number} calendarIndex - Calendar index from which the selection is made\n */\n private handleWeekSelection = (weekDays: Date[], calendarIndex: number) => {\n if (this.selectionType !== 'range') return;\n\n const allDays = this.getDaysInMonth(calendarIndex);\n\n const weekStart = weekDays[0];\n const weekEnd = weekDays[weekDays.length - 1];\n\n if (!weekStart || !weekEnd) return;\n\n const selectedWeekDays = allDays.filter(\n day => day.date && day.date >= weekStart && day.date <= weekEnd,\n );\n\n const validDays = selectedWeekDays.filter(\n day => !this.isDateDisabled(day.date),\n );\n\n if (validDays.length > 0) {\n this.startDate = validDays[0].date;\n this.endDate = validDays[validDays.length - 1].date;\n\n this.rangeDateChange.emit({\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n });\n }\n };\n\n /**\n * Checks if a date corresponds to today\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is today\n */\n private isToday = (date: Date): boolean => {\n const today = new Date();\n return (\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n );\n };\n\n /**\n * Parse and cache the disabled dates\n * @description Parse and cache the disabled dates\n */\n private parseDisabledDates = () => {\n if (!this.disabledDates) {\n this.parsedDisabledDates = [];\n return;\n }\n\n try {\n this.parsedDisabledDates = this.disabledDates\n .map(date => parseDate(date, this.dateFormat))\n .filter(date => date !== null) as Date[];\n } catch (error) {\n console.error('Error parsing disabled dates:', error);\n this.parsedDisabledDates = [];\n }\n };\n\n /**\n * Applies a shortcut selection\n * @param {Object} shortcut - Shortcut to apply\n * @param {string | Date} shortcut.singleValue - Selected date value\n * @param {Object} shortcut.rangeValue - Start and end date values\n * @param {string | Date} shortcut.rangeValue.start - Start date value\n * @param {string | Date} shortcut.rangeValue.end - End date value\n * @param {string} shortcut.label - Label\n */\n private applyShortcut = (shortcut: (typeof this.shortcuts)[number]) => {\n this.selectedDate = null;\n this.startDate = null;\n this.endDate = null;\n\n if (shortcut.singleValue) {\n const newDate = parseDate(shortcut.singleValue, this.dateFormat);\n this.selectedDate = newDate;\n const formattedDate = formatDate(newDate, {\n dateFormat: this.dateFormat,\n });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = formattedDate;\n this.valueChanged.emit(formattedDate);\n\n // Legacy support (deprecated) - sync props\n this.singleValue = formattedDate;\n this.singleDateChange.emit(formattedDate);\n\n if (!this.showActions) {\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n\n this.forceCalendarUpdate(newDate);\n } else {\n const start = parseDate(shortcut.rangeValue.start, this.dateFormat);\n const end = parseDate(shortcut.rangeValue.end, this.dateFormat);\n\n this.startDate = start;\n this.endDate = end;\n\n const startFormatted = formatDate(start, {\n dateFormat: this.dateFormat,\n });\n const endFormatted = formatDate(end, { dateFormat: this.dateFormat });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = `${startFormatted},${endFormatted}`;\n this.valueChanged.emit(this.value);\n\n // Legacy support (deprecated) - sync props\n const legacyRange = { start: startFormatted, end: endFormatted };\n this.rangeDateChange.emit(legacyRange);\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = legacyRange;\n\n if (!this.showActions) {\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n\n this.currentDate = start;\n }\n };\n\n /**\n * Method to force the complete calendar update\n * @param {Date} newDate - Date to force\n */\n private forceCalendarUpdate = newDate => {\n this.currentDate = new Date(newDate);\n };\n\n /**\n * Resets the current selection\n */\n private resetSelection = (): void => {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.singleValue = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.value = '';\n this.singleDateChange.emit('');\n this.valueChanged.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.value = '';\n this.rangeDateChange.emit({ start: '', end: '' });\n this.valueChanged.emit('');\n }\n };\n\n /**\n * Confirms the current selection\n */\n private confirmSelection = (): void => {\n if (this.selectionType === 'single' && this.selectedDate) {\n const dateStr = formatDate(this.selectedDate, {\n dateFormat: this.dateFormat,\n });\n this.singleDateChange.emit(dateStr);\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.singleValue = dateStr;\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n } else if (\n this.selectionType === 'range' &&\n this.startDate &&\n this.endDate\n ) {\n this.rangeDateChange.emit({\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n });\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = {\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n };\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n };\n\n /**\n * Clears the current selection and resets the calendar to its initial state.\n * This method can be called programmatically to reset the calendar.\n */\n @Method()\n async clear(): Promise<void> {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n this.singleValue = '';\n this.value = '';\n this.singleDateChange.emit('');\n this.valueChanged.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n this.rangeValue = { start: '', end: '' };\n this.value = '';\n this.rangeDateChange.emit({ start: '', end: '' });\n this.valueChanged.emit('');\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Renders the header\n * @param {number} offset - Month offset\n * @param {number} index - Calendar index\n * @returns {JSX.Element} Header\n * @description Renders the header of the calendar\n */\n private renderHeader = (offset: number, index: number) => {\n return (\n <CalendarHeader\n currentDate={this.currentDate}\n months={this.months}\n numberOfCalendars={this.numberOfCalendars}\n calendarIndex={index}\n monthOffset={offset}\n onMonthChange={this.changeMonth}\n onMonthSelect={this.handleMonthChange}\n onYearChange={this.handleYearChange}\n />\n );\n };\n\n /**\n * Renders the week numbers\n * @param {Array<{date: Date}>} weeks - Weeks to render\n * @param {number} index - Calendar index\n * @returns {JSX.Element} Week numbers\n * @description Renders the week numbers of the calendar\n */\n private renderWeekNumbers = (\n /** Weeks to render */\n weeks: Array<{\n /** Date */\n date: Date;\n }>[],\n /** Calendar index */\n index: number,\n ) => {\n return (\n <WeekNumbers\n weeks={weeks}\n localizedWeekText={this.getLocalizedWeekText()}\n selectionType={this.selectionType}\n onWeekSelect={this.handleWeekSelection}\n calendarIndex={index}\n />\n );\n };\n\n /**\n * Renders the calendar\n * @param {number} index - Calendar index\n * @param {number} offset - Month offset\n * @returns {JSX.Element} Calendar\n * @description Renders the calendar of the calendar\n */\n private renderCalendar = (\n /** Calendar index */\n index: number,\n /** Month offset */\n offset: number,\n ) => {\n const days = this.getDaysInMonth(offset);\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n // Add year and month to the key to force re-render on date change\n const targetDate = new Date(this.currentDate);\n targetDate.setUTCMonth(targetDate.getUTCMonth() + offset);\n const year = targetDate.getUTCFullYear();\n const month = targetDate.getUTCMonth();\n\n return (\n <div class=\"calendar-wrapper\">\n <div\n class=\"calendar-container\"\n key={`calendar-${index}-${year}-${month}`}\n >\n {this.renderHeader(offset, index)}\n <div class=\"calendar-grid\">\n {this.showWeekNumbers && this.renderWeekNumbers(weeks, index)}\n <CalendarGrid\n days={days}\n dayNames={this.getDayNames()}\n selectionType={this.selectionType}\n selectedDate={this.selectedDate}\n startDate={this.startDate}\n endDate={this.endDate}\n isUTCMode={this.isUTCMode}\n onDayClick={this.handleDateSelection}\n isDateInRange={this.isDateInRange}\n isToday={this.isToday}\n />\n </div>\n </div>\n\n {/* Display a vertical separator only if multiple calendars */}\n {index < this.numberOfCalendars - 1 && (\n <div class=\"calendar-separator\"></div>\n )}\n </div>\n );\n };\n\n /**\n * Renders the shortcuts\n * @returns {JSX.Element} Shortcuts\n * @description Renders the shortcuts of the calendar\n */\n private renderShortcuts = () => {\n if (!this.hasShortcuts) {\n return null;\n }\n\n return (\n <CalendarShortcuts\n shortcuts={this.shortcuts}\n placement={this.shortcutsPlacement}\n onShortcutClick={this.applyShortcut}\n />\n );\n };\n\n /**\n * Renders the actions\n * @returns {JSX.Element} Actions\n * @description Renders the actions of the calendar\n * @slot actions - Child content of the component.\n */\n private renderActions = () => {\n return (\n <div class=\"datepicker-actions\">\n <slot name=\"actions\">\n <CalendarActions\n onReset={this.resetSelection}\n onConfirm={this.confirmSelection}\n useSlot={false}\n />\n </slot>\n </div>\n );\n };\n\n /**\n * Renders the datepicker\n * @returns {JSX.Element} Datepicker\n * @description Renders the datepicker of the calendar\n * @slot default - Child content of the component.\n */\n render() {\n return (\n <Host>\n <div class=\"datepicker-root\">\n <div\n class={`datepicker-container ${\n this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''\n }`}\n >\n <div\n class={`datepicker-wrapper ${\n this.numberOfCalendars === 1 ? 'single' : ''\n }`}\n >\n {this.shortcutsPlacement === 'left' && this.renderShortcuts()}\n\n {Array.from({ length: this.numberOfCalendars }, (_, index) =>\n this.renderCalendar(index, index),\n )}\n\n {this.shortcutsPlacement === 'right' && this.renderShortcuts()}\n </div>\n\n {((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||\n this.hasActions) && (\n <div class=\"datepicker-controls\">\n {this.shortcutsPlacement === 'bottom' && this.renderShortcuts()}\n {this.hasActions && this.renderActions()}\n </div>\n )}\n </div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
1
+ {"version":3,"file":"nv-calendar.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\nimport {\n WEEK_ABBREVIATIONS,\n CUSTOM_DAY_NAMES,\n CUSTOM_MONTH_NAMES,\n} from '../../utils/constants';\n\nimport {\n parseDate,\n formatDate,\n isSameOrAfter,\n isSameOrBefore,\n isInHoverRange,\n isHoverRangeValid,\n isDateDisabledUtil,\n} from './nv-calendar.utils';\n\n// Import partials\nimport {\n CalendarHeader,\n CalendarGrid,\n WeekNumbers,\n CalendarShortcuts,\n CalendarActions,\n} from './partials';\n\n/**\n * @slot default - Child content of the component.\n * @slot actions - Child content of the component.\n */\n@Component({\n tag: 'nv-calendar',\n styleUrl: 'nv-calendar.scss',\n shadow: false,\n})\nexport class NvCalendar {\n @Element() el: HTMLNvCalendarElement;\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * First day of the week (0 = Sunday, 1 = Monday, etc.)\n * @default 1\n */\n @Prop({ reflect: true })\n readonly firstDayOfWeek: number = 1;\n\n /**\n * Number of calendars to display\n * @default 1\n */\n @Prop({ mutable: true, reflect: true })\n numberOfCalendars: number = 1;\n\n /**\n * Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.\n * Examples:\n * - Single: \"2025-03-15\"\n * - Range: \"2025-03-15,2025-03-20\"\n * @default \"\"\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: true, mutable: true })\n value: string = '';\n\n /**\n * Selected date (ISO string format)\n * ex: \"2025-03-15\"\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: true, mutable: true })\n singleValue: string;\n\n /**\n * Selected date range\n * format: { start: ISO string, end: ISO string }\n * ex: { start: \"2025-03-15\", end: \"2025-03-20\" }\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ reflect: false, mutable: true })\n rangeValue: {\n /** ISO string for start date */\n start: string;\n /** ISO string for end date */\n end: string;\n };\n\n /**\n * Minimum date for selection (ISO string format, ex: \"2025-01-01\")\n */\n @Prop({ reflect: true })\n readonly min?: string;\n\n /**\n * Maximum date for selection (ISO string format, ex: \"2025-12-31\")\n */\n @Prop({ reflect: true })\n readonly max?: string;\n\n /**\n * Disabled dates (ISO string array)\n */\n @Prop({ reflect: false })\n readonly disabledDates: Array<string>;\n\n /**\n * Locale for date formatting\n * @default 'en-BE'\n */\n @Prop({ reflect: true })\n readonly locale: string = 'en-BE';\n\n /**\n * Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @default 'YYYY-MM-DD'\n * @note If the date format is in UTC mode, the date will be displayed in UTC time.\n * @note If the date format is not in UTC mode, the date will be displayed in the local time.\n */\n @Prop({ reflect: true })\n readonly dateFormat: string = 'YYYY-MM-DD';\n\n /**\n * Footer placement\n * @default 'bottom'\n */\n @Prop({ reflect: true })\n readonly shortcutsPlacement: 'bottom' | 'left' | 'right' = 'bottom';\n\n /**\n * Selection type (single date or date range)\n * @default 'single'\n */\n @Prop({ reflect: true })\n readonly selectionType: 'single' | 'range' = 'single';\n\n /**\n * Show action buttons\n */\n @Prop({ reflect: true })\n readonly showActions: boolean = false;\n\n /**\n * Custom actions to display in the footer\n */\n @Prop({ reflect: true })\n readonly shortcuts: {\n /** Label of the shortcut */\n label: string;\n /** Selected date value for single selection mode */\n singleValue?: string;\n /** Date range values for range selection mode */\n rangeValue?: HTMLNvCalendarElement['rangeValue'];\n }[];\n\n /**\n * Show week numbers\n */\n @Prop({ reflect: true })\n readonly showWeekNumbers: boolean;\n\n /** Cache for parsed disabled dates */\n private parsedDisabledDates: Date[] = [];\n\n /** Flag to indicate a user click for selection */\n private isUserClick: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n @State()\n currentDate: Date | null = null;\n\n @State()\n selectedDate: Date | null = null;\n\n @State()\n startDate: Date | null = null;\n\n @State()\n endDate: Date | null = null;\n\n @State()\n hoverDate: Date | null = null;\n\n /** List of formatted months for the selector */\n @State()\n private months: {\n /** Month value */\n value: number;\n /** Month label */\n label: string;\n }[] = [];\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when a single date is selected\n */\n @Event()\n singleDateChange: EventEmitter<string>;\n\n /**\n * Emitted when a date range is selected\n */\n @Event()\n rangeDateChange: EventEmitter<HTMLNvCalendarElement['rangeValue']>;\n\n /**\n * Emitted when the unified value changes\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Watches the changes of the number of calendars\n * @param {number} newValue - New number of calendars\n */\n @Watch('numberOfCalendars')\n validateNumberOfCalendars(newValue: number) {\n if (newValue < 1 || newValue > 4) {\n console.warn(\n 'numberOfCalendars must be between 1 and 4. Defaulting to 1.',\n );\n this.numberOfCalendars = 1;\n }\n }\n\n /**\n * Watches the changes of the selected date range\n * @param {Object} newValue - New rangeValue value\n * @param {string} newValue.start - Start date\n * @param {string} newValue.end - End date\n */\n @Watch('rangeValue')\n onRangeValueChange(newValue: typeof this.rangeValue) {\n if (newValue && newValue.start && newValue.end) {\n try {\n const { startDate, endDate } = this.validateDateRange(\n newValue.start,\n newValue.end,\n );\n\n this.startDate = startDate;\n this.endDate = endDate;\n\n // Do not navigate to the start date if data-prevent-navigation attribute is present\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = startDate;\n }\n } catch (error) {\n console.error('Invalid rangeValue:', error);\n }\n }\n }\n\n /**\n * Watches the changes of the disabled dates\n * @description Watches the changes of the disabled dates\n */\n @Watch('disabledDates')\n handleDisabledDatesChange() {\n this.parseDisabledDates();\n }\n\n /**\n * Watches the changes of the single value\n * @param {string} newValue - New single value\n * @param {string} oldValue - Old single value\n */\n @Watch('singleValue')\n onSingleValueChange(newValue: string, oldValue: string) {\n if (this.selectionType === 'single' && newValue !== oldValue && newValue) {\n const parsedDate = parseDate(newValue, this.dateFormat);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n\n // Do not navigate to the selected date if data-prevent-navigation attribute is present\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = parsedDate;\n }\n }\n }\n }\n\n /**\n * Watches the changes of the unified value prop\n * @param {string} newValue - New value\n * @param {string} oldValue - Old value\n */\n @Watch('value')\n onValueChange(newValue: string, oldValue: string) {\n if (newValue !== oldValue) {\n this.parseUnifiedValue(newValue);\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.parseDisabledDates();\n\n // Initialize from unified value prop if provided\n if (this.value) {\n this.parseUnifiedValue(this.value);\n } else if (this.selectionType === 'single' && this.singleValue) {\n this.selectedDate = parseDate(this.singleValue, this.dateFormat);\n this.currentDate = this.selectedDate;\n } else if (this.selectionType === 'range' && this.rangeValue) {\n try {\n if (this.rangeValue.start && this.rangeValue.end) {\n const { startDate, endDate, swapped } = this.validateDateRange(\n this.rangeValue.start,\n this.rangeValue.end,\n );\n\n this.startDate = startDate;\n this.endDate = endDate;\n this.currentDate = startDate;\n\n if (swapped) {\n // If dates were swapped, update the rangeValue property\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = {\n start: formatDate(startDate, { dateFormat: this.dateFormat }),\n end: formatDate(endDate, { dateFormat: this.dateFormat }),\n };\n }\n }\n } catch (error) {\n console.error('Invalid rangeValue:', error);\n }\n }\n\n // Ensure currentDate is always initialized\n if (!this.currentDate) {\n this.currentDate = new Date();\n }\n\n this.initializeMonths();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Checks if shortcuts are visible\n * @returns {boolean} true if shortcuts are visible\n */\n private get hasShortcuts(): boolean {\n return Boolean(this.shortcutsPlacement && this.shortcuts);\n }\n\n /**\n * Checks if actions are visible\n * @returns {boolean} true if actions are visible\n */\n private get hasActions(): boolean {\n return this.showActions;\n }\n\n /**\n * Checks if the date format is in UTC mode\n * @returns {boolean} true if the date format is in UTC mode\n */\n private get isUTCMode(): boolean {\n return this.dateFormat.includes('Z');\n }\n\n /**\n * Parses the unified value prop and synchronizes with internal state\n * @param {string} value - Value to parse\n */\n private parseUnifiedValue = (value: string): void => {\n if (!value) {\n // Reset all selections\n this.selectedDate = null;\n this.startDate = null;\n this.endDate = null;\n return;\n }\n\n const values = value\n .split(',')\n .map(v => v.trim())\n .filter(Boolean);\n\n if (this.selectionType === 'range' && values.length < 2) {\n console.warn(`Invalid date range format: ${value}`);\n this.startDate = null;\n this.endDate = null;\n return;\n }\n\n if (this.selectionType === 'single' && values.length >= 1) {\n const parsedDate = parseDate(values[0], this.dateFormat);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n\n // Only sync with legacy prop if not using actions (immediate mode)\n if (!this.showActions) {\n this.singleValue = values[0];\n }\n\n // Navigate to the date if not prevented\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = parsedDate;\n }\n } else {\n // Handle malformed date gracefully - reset state\n console.warn(`Invalid date format: ${values[0]}`);\n this.selectedDate = null;\n if (!this.showActions) {\n this.singleValue = '';\n }\n }\n } else if (this.selectionType === 'range' && values.length >= 2) {\n const startDate = parseDate(values[0], this.dateFormat);\n const endDate = parseDate(values[1], this.dateFormat);\n\n if (startDate && endDate) {\n this.startDate = startDate;\n this.endDate = endDate;\n\n // Only sync with legacy prop if not using actions (immediate mode)\n if (!this.showActions) {\n this.rangeValue = {\n start: values[0],\n end: values[1],\n };\n }\n\n // Navigate to start date if not prevented\n const preventNavigation =\n this.el.getAttribute('data-prevent-navigation') === 'true';\n if (!preventNavigation && !this.isUserClick) {\n this.currentDate = startDate;\n }\n } else {\n // Handle malformed dates gracefully - reset state\n console.warn(\n `Invalid date range format: ${values?.[0]}, ${values?.[1]}`,\n );\n this.startDate = null;\n this.endDate = null;\n if (!this.showActions) {\n this.rangeValue = { start: '', end: '' };\n }\n }\n }\n };\n\n /**\n * Validates and processes a date range, warning if start is after end\n * @param {string} startDateStr - Start date in ISO string format\n * @param {string} endDateStr - End date in ISO string format\n * @returns {object} Object containing the validated start and end dates\n */\n private validateDateRange(\n startDateStr: string,\n endDateStr: string,\n ): {\n /** Start date */\n startDate: Date;\n /** End date */\n endDate: Date;\n /** If the dates were swapped */\n swapped: boolean;\n } {\n try {\n const startDate = parseDate(startDateStr, this.dateFormat);\n const endDate = parseDate(endDateStr, this.dateFormat);\n\n if (startDate && endDate && startDate > endDate) {\n console.warn(\n `Warning: startDate (${formatDate(startDate, {\n dateFormat: this.dateFormat,\n })}) is after endDate (${formatDate(endDate, {\n dateFormat: this.dateFormat,\n })})`,\n );\n\n // Return dates in correct order, with swapped flag\n return {\n startDate: endDate,\n endDate: startDate,\n swapped: true,\n };\n }\n\n return {\n startDate,\n endDate,\n swapped: false,\n };\n } catch (error) {\n console.error('Invalid date range:', error);\n throw error; // Re-throw to let the caller handle it\n }\n }\n\n /**\n * Change the displayed month\n * @param {number} offset - Month offset (-1 for previous, 1 for next)\n */\n private changeMonth = (offset: number) => {\n const newDate = new Date(this.currentDate);\n newDate.setUTCDate(1); // Set to the first of the month to avoid day-of-month issues\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n\n const containers = this.el.querySelectorAll('.calendar-grid');\n containers.forEach(container => {\n container.classList.remove('slide-left', 'slide-right');\n const animationClass = offset > 0 ? 'slide-left' : 'slide-right';\n container.classList.add(animationClass);\n setTimeout(() => container.classList.remove(animationClass), 300);\n });\n\n this.currentDate = newDate;\n };\n\n private handleMouseLeave = () => {\n this.hoverDate = null;\n };\n\n private handleDayHover = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const dateStr = target.getAttribute('data-date');\n if (\n dateStr &&\n this.selectionType === 'range' &&\n this.startDate &&\n !this.endDate\n ) {\n this.hoverDate = new Date(dateStr);\n }\n };\n\n /**\n * Handles date selection based on the mode\n * @param {MouseEvent} event - The mouse event from the click.\n */\n private handleDateSelection = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const dateStr = target.getAttribute('data-date');\n if (!dateStr) return;\n\n const date = new Date(dateStr);\n if (this.isDateDisabled(date)) {\n return;\n }\n\n this.isUserClick = true;\n\n if (this.selectionType === 'single') {\n this.handleSingleSelection(date);\n } else {\n this.handleRangeSelection(date);\n }\n\n requestAnimationFrame(() => {\n this.isUserClick = false;\n });\n };\n\n /**\n * Handles single date selection\n * @param {Date} date - Selected date\n */\n private handleSingleSelection = (date: Date) => {\n if (!date) return;\n\n const formattedDate = formatDate(date, { dateFormat: this.dateFormat });\n this.selectedDate = date;\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = formattedDate;\n this.valueChanged.emit(formattedDate);\n\n // Legacy support (deprecated) - only sync props if not using actions\n if (!this.showActions) {\n this.singleValue = formattedDate;\n this.singleDateChange.emit(formattedDate);\n }\n };\n\n /**\n * Handles range date selection\n * @param {Date} date - Selected date\n */\n private handleRangeSelection = (date: Date) => {\n if (!this.startDate || (this.startDate && this.endDate)) {\n // Start new range selection\n this.startDate = date;\n this.endDate = null;\n } else {\n // Complete range selection\n this.endDate = date;\n this.hoverDate = null;\n\n // Ensure correct order\n if (this.startDate > this.endDate) {\n [this.startDate, this.endDate] = [this.endDate, this.startDate];\n }\n\n const startFormatted = formatDate(this.startDate, {\n dateFormat: this.dateFormat,\n });\n const endFormatted = formatDate(this.endDate, {\n dateFormat: this.dateFormat,\n });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = `${startFormatted},${endFormatted}`;\n this.valueChanged.emit(this.value);\n\n // Legacy support (deprecated) - only sync props if not using actions\n if (!this.showActions) {\n const legacyRange = { start: startFormatted, end: endFormatted };\n this.rangeDateChange.emit(legacyRange);\n this.rangeValue = legacyRange;\n }\n }\n };\n\n /**\n * Checks if a date is disabled.\n * Disabled if:\n * - The date is before min (if defined)\n * - The date is after max (if defined)\n * - The date is in the disabledDates array\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is disabled\n */\n private isDateDisabled = (date: Date): boolean => {\n return isDateDisabledUtil(\n date,\n this.min,\n this.max,\n this.parsedDisabledDates,\n this.dateFormat,\n this.isUTCMode,\n );\n };\n\n /**\n * Checks if a date is in the selected range\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is in the range\n */\n private isDateInRange = (date: Date): boolean => {\n if (!date || !this.startDate || !this.endDate) return false;\n\n const checkDate = parseDate(date, this.dateFormat);\n const startDate = parseDate(this.startDate, this.dateFormat);\n const endDate = parseDate(this.endDate, this.dateFormat);\n\n // Verify if startDate and endDate are valid\n if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\n return false;\n }\n\n // Verify that startDate is before endDate (additional security)\n if (startDate > endDate) return false;\n\n // Comparison based only on the date (year, month, day)\n return (\n isSameOrAfter(checkDate, startDate, { isUTCMode: this.isUTCMode }) &&\n isSameOrBefore(checkDate, endDate, { isUTCMode: this.isUTCMode })\n );\n };\n\n /**\n * Retrieves the localized day names\n * @returns {string[]} Array of short day names\n */\n private getDayNames = (): string[] => {\n let days: string[];\n\n // If we have custom day names for this locale\n if (CUSTOM_DAY_NAMES[this.locale]) {\n // Custom day names are expected to start with Monday (index 0 = Monday)\n days = [...CUSTOM_DAY_NAMES[this.locale]];\n } else {\n // Generate days using Intl.DateTimeFormat, starting from Monday\n const formatter = new Intl.DateTimeFormat(this.locale, {\n weekday: 'short',\n });\n\n // Generate days starting from Monday (2023-01-02 was a Monday)\n days = [...Array(7)].map((_, i) =>\n formatter.format(new Date(2023, 0, i + 2)).toUpperCase(),\n );\n }\n\n // Now reorganize based on firstDayOfWeek\n // 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.\n if (this.firstDayOfWeek === 0) {\n // If Sunday is first day, move Sunday (last element) to the beginning\n return [days[6], ...days.slice(0, 6)];\n } else if (this.firstDayOfWeek === 1) {\n // If Monday is first day, return as-is (since our array starts with Monday)\n return days;\n } else {\n // For other first days (Tuesday=2, Wednesday=3, etc.)\n const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday\n return [...days.slice(offset), ...days.slice(0, offset)];\n }\n };\n\n /**\n * Generates the days of the current month\n * @param {number} offset - Month offset (0 by default)\n * @returns {Array<{ dayOfMonth: number | null, date: Date | null, isSelected: boolean, isDisabled: boolean }>} Array of formatted days\n */\n private getDaysInMonth = (\n offset: number = 0,\n ): Array<{\n /** Day of the month (1 to 31) */\n dayOfMonth: number | null;\n /** Complete date */\n date: Date | null;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** If the day is blank (padding) */\n isBlank: boolean;\n }> => {\n const baseMonth = this.currentDate.getUTCMonth();\n\n // Correctly calculate the year and month for the given offset\n const targetDate = new Date(this.currentDate);\n targetDate.setUTCMonth(baseMonth + offset);\n const year = targetDate.getUTCFullYear();\n const month = targetDate.getUTCMonth();\n\n const firstDay = new Date(Date.UTC(year, month, 1));\n const lastDay = new Date(Date.UTC(year, month + 1, 0));\n\n const days = [];\n\n // Correct calculation of offset for previous month days\n // Use getUTCDay to stay consistent with UTC timezone\n const dayOfWeekIndex = firstDay.getUTCDay(); // 0 = Sunday, 1 = Monday, etc.\n\n // Adjust based on firstDayOfWeek (if week starts on Monday, offset is different)\n const offsetDays = (dayOfWeekIndex - this.firstDayOfWeek + 7) % 7;\n\n // Add padding days from the previous month\n for (let i = 0; i < offsetDays; i++) {\n const prevMonthDay = new Date(Date.UTC(year, month, 0)).getUTCDate();\n const date = new Date(\n Date.UTC(year, month - 1, prevMonthDay - offsetDays + 1 + i),\n );\n days.push({\n dayOfMonth: date.getUTCDate(),\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n // Days from previous month are blank if not the first calendar\n isBlank: offset > 0,\n });\n }\n\n // Add the days of the current month\n for (let i = 1; i <= lastDay.getUTCDate(); i++) {\n const date = new Date(Date.UTC(year, month, i));\n days.push({\n dayOfMonth: i,\n date,\n isCurrentMonth: true,\n isDisabled: this.isDateDisabled(date),\n isBlank: false,\n });\n }\n\n // Add padding days to fill the last week\n const nextMonthDaysNeeded = 7 - (days.length % 7 || 7);\n if (nextMonthDaysNeeded < 7) {\n for (let i = 1; i <= nextMonthDaysNeeded; i++) {\n const date = new Date(Date.UTC(year, month + 1, i));\n days.push({\n dayOfMonth: i,\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n // Days from next month are blank if not the last calendar\n isBlank: offset < this.numberOfCalendars - 1,\n });\n }\n }\n\n return days;\n };\n\n /** Initializes the list of formatted months according to the locale */\n private initializeMonths = () => {\n // If we have custom month names for this locale\n if (CUSTOM_MONTH_NAMES[this.locale]) {\n this.months = CUSTOM_MONTH_NAMES[this.locale].map((label, value) => ({\n value,\n label,\n }));\n return;\n }\n\n // Otherwise, use the default behavior\n const formatter = new Intl.DateTimeFormat(this.locale, { month: 'short' });\n this.months = Array.from({ length: 12 }, (_, i) => ({\n value: i,\n label: formatter.format(new Date(2000, i, 1)).toUpperCase(),\n }));\n };\n\n /**\n * Retrieves the localized abbreviation for \"week\"\n * @returns {string} Localized abbreviation for \"week\"\n */\n private getLocalizedWeekText = (): string => {\n return WEEK_ABBREVIATIONS[this.locale] || 'W';\n };\n\n /**\n * Handles month change in the selector\n * @param {Event} event - Month change event\n * @param {number} calendarOffset - Calendar offset (0 by default)\n */\n private handleMonthChange = (event: Event, calendarOffset: number = 0) => {\n const select = event.target as HTMLSelectElement;\n const selectedMonth = parseInt(select.value, 10);\n const newDate = new Date(this.currentDate);\n\n // Date for the calendar being changed\n const targetCalendarDate = new Date(newDate.toUTCString());\n targetCalendarDate.setUTCMonth(\n targetCalendarDate.getUTCMonth() + calendarOffset,\n );\n\n const currentMonth = targetCalendarDate.getUTCMonth();\n let monthDiff = selectedMonth - currentMonth;\n\n // Smartly adjust for year change\n if (monthDiff > 6) {\n // e.g. from Jan to Dec, go back 1 month\n monthDiff -= 12;\n }\n if (monthDiff < -6) {\n // e.g. from Dec to Jan, go forward 1 month\n monthDiff += 12;\n }\n\n // Apply the diff to the original `currentDate`\n const finalDate = new Date(this.currentDate);\n finalDate.setUTCMonth(finalDate.getUTCMonth() + monthDiff);\n this.currentDate = finalDate;\n };\n\n /**\n * Handles year change in the numeric entry\n * @param {Event} event - Year change event\n * @param {number} calendarOffset - Calendar offset (0 by default)\n */\n private handleYearChange = (event: Event, calendarOffset: number = 0) => {\n const input = event.target as HTMLInputElement;\n const year = parseInt(input.value, 10);\n if (!isNaN(year) && year >= 1900 && year <= 2100) {\n const newDate = new Date(this.currentDate);\n newDate.setUTCMonth(newDate.getUTCMonth() + calendarOffset);\n newDate.setUTCFullYear(year);\n newDate.setUTCMonth(newDate.getUTCMonth() - calendarOffset);\n this.currentDate = new Date(newDate);\n }\n };\n\n /**\n * Handles week selection\n * @param {Date[]} weekDays - Selected week days\n * @param {number} calendarIndex - Calendar index from which the selection is made\n */\n private handleWeekSelection = (weekDays: Date[], calendarIndex: number) => {\n if (this.selectionType !== 'range') return;\n\n const allDays = this.getDaysInMonth(calendarIndex);\n\n const weekStart = weekDays[0];\n const weekEnd = weekDays[weekDays.length - 1];\n\n if (!weekStart || !weekEnd) return;\n\n const selectedWeekDays = allDays.filter(\n day => day.date && day.date >= weekStart && day.date <= weekEnd,\n );\n\n const validDays = selectedWeekDays.filter(\n day => !this.isDateDisabled(day.date),\n );\n\n if (validDays.length > 0) {\n this.startDate = validDays[0].date;\n this.endDate = validDays[validDays.length - 1].date;\n\n this.rangeDateChange.emit({\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n });\n }\n };\n\n /**\n * Checks if a date corresponds to today\n * @param {Date} date - Date to check\n * @returns {boolean} true if the date is today\n */\n private isToday = (date: Date): boolean => {\n const today = new Date();\n return (\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n );\n };\n\n /**\n * Parse and cache the disabled dates\n * @description Parse and cache the disabled dates\n */\n private parseDisabledDates = () => {\n if (!this.disabledDates) {\n this.parsedDisabledDates = [];\n return;\n }\n\n try {\n this.parsedDisabledDates = this.disabledDates\n .map(date => parseDate(date, this.dateFormat))\n .filter(date => date !== null) as Date[];\n } catch (error) {\n console.error('Error parsing disabled dates:', error);\n this.parsedDisabledDates = [];\n }\n };\n\n /**\n * Applies a shortcut selection\n * @param {Object} shortcut - Shortcut to apply\n * @param {string | Date} shortcut.singleValue - Selected date value\n * @param {Object} shortcut.rangeValue - Start and end date values\n * @param {string | Date} shortcut.rangeValue.start - Start date value\n * @param {string | Date} shortcut.rangeValue.end - End date value\n * @param {string} shortcut.label - Label\n */\n private applyShortcut = (shortcut: (typeof this.shortcuts)[number]) => {\n this.selectedDate = null;\n this.startDate = null;\n this.endDate = null;\n\n if (shortcut.singleValue) {\n const newDate = parseDate(shortcut.singleValue, this.dateFormat);\n this.selectedDate = newDate;\n const formattedDate = formatDate(newDate, {\n dateFormat: this.dateFormat,\n });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = formattedDate;\n this.valueChanged.emit(formattedDate);\n\n // Legacy support (deprecated) - sync props\n this.singleValue = formattedDate;\n this.singleDateChange.emit(formattedDate);\n\n if (!this.showActions) {\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n\n this.forceCalendarUpdate(newDate);\n } else {\n const start = parseDate(shortcut.rangeValue.start, this.dateFormat);\n const end = parseDate(shortcut.rangeValue.end, this.dateFormat);\n\n this.startDate = start;\n this.endDate = end;\n\n const startFormatted = formatDate(start, {\n dateFormat: this.dateFormat,\n });\n const endFormatted = formatDate(end, { dateFormat: this.dateFormat });\n\n // Update the unified value prop (like nv-fieldslider)\n this.value = `${startFormatted},${endFormatted}`;\n this.valueChanged.emit(this.value);\n\n // Legacy support (deprecated) - sync props\n const legacyRange = { start: startFormatted, end: endFormatted };\n this.rangeDateChange.emit(legacyRange);\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = legacyRange;\n\n if (!this.showActions) {\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n\n this.currentDate = start;\n }\n };\n\n /**\n * Method to force the complete calendar update\n * @param {Date} newDate - Date to force\n */\n private forceCalendarUpdate = newDate => {\n this.currentDate = new Date(newDate);\n };\n\n /**\n * Resets the current selection\n */\n private resetSelection = (): void => {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.singleValue = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.value = '';\n this.singleDateChange.emit('');\n this.valueChanged.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = null;\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.value = '';\n this.rangeDateChange.emit({ start: '', end: '' });\n this.valueChanged.emit('');\n }\n };\n\n /**\n * Confirms the current selection\n */\n private confirmSelection = (): void => {\n if (this.selectionType === 'single' && this.selectedDate) {\n const dateStr = formatDate(this.selectedDate, {\n dateFormat: this.dateFormat,\n });\n this.singleDateChange.emit(dateStr);\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.singleValue = dateStr;\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n } else if (\n this.selectionType === 'range' &&\n this.startDate &&\n this.endDate\n ) {\n this.rangeDateChange.emit({\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n });\n // eslint-disable-next-line @stencil-community/strict-mutable\n this.rangeValue = {\n start: formatDate(this.startDate, { dateFormat: this.dateFormat }),\n end: formatDate(this.endDate, { dateFormat: this.dateFormat }),\n };\n const event = new CustomEvent('closePopover', {\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(event);\n }\n };\n\n /**\n * Clears the current selection and resets the calendar to its initial state.\n * This method can be called programmatically to reset the calendar.\n */\n @Method()\n async clear(): Promise<void> {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n this.singleValue = '';\n this.value = '';\n this.singleDateChange.emit('');\n this.valueChanged.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n this.rangeValue = { start: '', end: '' };\n this.value = '';\n this.rangeDateChange.emit({ start: '', end: '' });\n this.valueChanged.emit('');\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Renders the header\n * @param {number} offset - Month offset\n * @param {number} index - Calendar index\n * @returns {JSX.Element} Header\n * @description Renders the header of the calendar\n */\n private renderHeader = (offset: number, index: number) => {\n return (\n <CalendarHeader\n currentDate={this.currentDate}\n months={this.months}\n numberOfCalendars={this.numberOfCalendars}\n calendarIndex={index}\n monthOffset={offset}\n onMonthChange={this.changeMonth}\n onMonthSelect={this.handleMonthChange}\n onYearChange={this.handleYearChange}\n />\n );\n };\n\n /**\n * Renders the week numbers\n * @param {Array<{date: Date}>} weeks - Weeks to render\n * @param {number} index - Calendar index\n * @returns {JSX.Element} Week numbers\n * @description Renders the week numbers of the calendar\n */\n private renderWeekNumbers = (\n /** Weeks to render */\n weeks: Array<{\n /** Date */\n date: Date;\n }>[],\n /** Calendar index */\n index: number,\n ) => {\n return (\n <WeekNumbers\n weeks={weeks}\n localizedWeekText={this.getLocalizedWeekText()}\n selectionType={this.selectionType}\n onWeekSelect={this.handleWeekSelection}\n calendarIndex={index}\n />\n );\n };\n\n /**\n * Checks if the hover range is valid\n * @param {Date} startDate - Start date\n * @param {Date | null} hoverDate - Hovered date\n * @returns {boolean} true if the hover range is valid\n */\n private isHoverRangeValidFn = (\n startDate: Date,\n hoverDate: Date | null,\n ): boolean => {\n return isHoverRangeValid(\n startDate,\n hoverDate,\n this.min,\n this.max,\n this.parsedDisabledDates,\n this.dateFormat,\n this.isUTCMode,\n );\n };\n\n /**\n * Renders the calendar\n * @param {number} index - Calendar index\n * @param {number} offset - Month offset\n * @returns {JSX.Element} Calendar\n * @description Renders the calendar of the calendar\n */\n private renderCalendar = (\n /** Calendar index */\n index: number,\n /** Month offset */\n offset: number,\n ) => {\n const days = this.getDaysInMonth(offset);\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n // Add year and month to the key to force re-render on date change\n const targetDate = new Date(this.currentDate);\n targetDate.setUTCMonth(targetDate.getUTCMonth() + offset);\n const year = targetDate.getUTCFullYear();\n const month = targetDate.getUTCMonth();\n\n return (\n <div class=\"calendar-wrapper\">\n <div\n class=\"calendar-container\"\n key={`calendar-${index}-${year}-${month}`}\n >\n {this.renderHeader(offset, index)}\n <div class=\"calendar-grid\">\n {this.showWeekNumbers && this.renderWeekNumbers(weeks, index)}\n <CalendarGrid\n days={days}\n dayNames={this.getDayNames()}\n selectionType={this.selectionType}\n selectedDate={this.selectedDate}\n startDate={this.startDate}\n endDate={this.endDate}\n isUTCMode={this.isUTCMode}\n onDayClick={this.handleDateSelection}\n isDateInRange={this.isDateInRange}\n isToday={this.isToday}\n onDayHover={this.handleDayHover}\n onMouseLeave={this.handleMouseLeave}\n hoverDate={this.hoverDate}\n isInHoverRange={isInHoverRange}\n isHoverRangeValid={this.isHoverRangeValidFn}\n />\n </div>\n </div>\n\n {/* Display a vertical separator only if multiple calendars */}\n {index < this.numberOfCalendars - 1 && (\n <div class=\"calendar-separator\"></div>\n )}\n </div>\n );\n };\n\n /**\n * Renders the shortcuts\n * @returns {JSX.Element} Shortcuts\n * @description Renders the shortcuts of the calendar\n */\n private renderShortcuts = () => {\n if (!this.hasShortcuts) {\n return null;\n }\n\n return (\n <CalendarShortcuts\n shortcuts={this.shortcuts}\n placement={this.shortcutsPlacement}\n onShortcutClick={this.applyShortcut}\n />\n );\n };\n\n /**\n * Renders the actions\n * @returns {JSX.Element} Actions\n * @description Renders the actions of the calendar\n * @slot actions - Child content of the component.\n */\n private renderActions = () => {\n return (\n <div class=\"datepicker-actions\">\n <slot name=\"actions\">\n <CalendarActions\n onReset={this.resetSelection}\n onConfirm={this.confirmSelection}\n useSlot={false}\n />\n </slot>\n </div>\n );\n };\n\n /**\n * Renders the datepicker\n * @returns {JSX.Element} Datepicker\n * @description Renders the datepicker of the calendar\n * @slot default - Child content of the component.\n */\n render() {\n return (\n <Host>\n <div class=\"datepicker-root\">\n <div\n class={`datepicker-container ${\n this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''\n }`}\n >\n <div\n class={`datepicker-wrapper ${\n this.numberOfCalendars === 1 ? 'single' : ''\n }`}\n >\n {this.shortcutsPlacement === 'left' && this.renderShortcuts()}\n\n {Array.from({ length: this.numberOfCalendars }, (_, index) =>\n this.renderCalendar(index, index),\n )}\n\n {this.shortcutsPlacement === 'right' && this.renderShortcuts()}\n </div>\n\n {((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||\n this.hasActions) && (\n <div class=\"datepicker-controls\">\n {this.shortcutsPlacement === 'bottom' && this.renderShortcuts()}\n {this.hasActions && this.renderActions()}\n </div>\n )}\n </div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
@@ -204,4 +204,72 @@ export function parseDate(dateInput, dateFormat) {
204
204
  }
205
205
  return parsed.toDate();
206
206
  }
207
+ /**
208
+ * Checks if a date is disabled.
209
+ * @param {Date} date - Date to check
210
+ * @param {string} min - Minimum date
211
+ * @param {string} max - Maximum date
212
+ * @param {Date[]} parsedDisabledDates - Parsed disabled dates
213
+ * @param {string} dateFormat - Date format
214
+ * @param {boolean} isUTCMode - Whether the dates are in UTC mode
215
+ * @returns {boolean} true if the date is disabled
216
+ */
217
+ export function isDateDisabledUtil(date, min, max, parsedDisabledDates, dateFormat, isUTCMode) {
218
+ if (!date)
219
+ return true;
220
+ if (min) {
221
+ const minDate = parseDate(min, dateFormat);
222
+ if (minDate && date < minDate) {
223
+ return true;
224
+ }
225
+ }
226
+ if (max) {
227
+ const maxDate = parseDate(max, dateFormat);
228
+ if (maxDate && date > maxDate) {
229
+ return true;
230
+ }
231
+ }
232
+ return parsedDisabledDates.some(disabledDate => isSameDate(date, disabledDate, { isUTCMode }));
233
+ }
234
+ /**
235
+ * Checks if a date is within the hover range.
236
+ * @param {Date} date - The date to check.
237
+ * @param {Date} startDate - The start of the range.
238
+ * @param {Date | null} hoverDate - The hovered date.
239
+ * @returns {boolean} True if the date is in the hover range.
240
+ */
241
+ export const isInHoverRange = (date, startDate, hoverDate) => {
242
+ if (!hoverDate || !startDate || !date) {
243
+ return false;
244
+ }
245
+ const start = startDate < hoverDate ? startDate : hoverDate;
246
+ const end = startDate < hoverDate ? hoverDate : startDate;
247
+ return date > start && date < end;
248
+ };
249
+ /**
250
+ * Checks if the hover range is valid (does not contain disabled dates).
251
+ * @param {Date} startDate - The start of the range.
252
+ * @param {Date | null} hoverDate - The hovered date.
253
+ * @param {string} min - The minimum allowed date.
254
+ * @param {string} max - The maximum allowed date.
255
+ * @param {Date[]} parsedDisabledDates - An array of disabled dates.
256
+ * @param {string} dateFormat - The date format for parsing.
257
+ * @param {boolean} isUTCMode - Flag for UTC mode.
258
+ * @returns {boolean} True if the hover range is valid.
259
+ */
260
+ export const isHoverRangeValid = (startDate, hoverDate, min, max, parsedDisabledDates, dateFormat, isUTCMode) => {
261
+ if (!hoverDate || !startDate) {
262
+ return true;
263
+ }
264
+ const start = startDate < hoverDate ? startDate : hoverDate;
265
+ const end = startDate < hoverDate ? hoverDate : startDate;
266
+ const current = new Date(start);
267
+ while (current <= end) {
268
+ if (isDateDisabledUtil(current, min, max, parsedDisabledDates, dateFormat, isUTCMode)) {
269
+ return false;
270
+ }
271
+ current.setDate(current.getDate() + 1);
272
+ }
273
+ return true;
274
+ };
207
275
  //# sourceMappingURL=nv-calendar.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nv-calendar.utils.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport utc from 'dayjs/plugin/utc';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\n\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\ndayjs.extend(weekOfYear);\n\n/**\n * Formats a date to a string according to the format\n * @param {Date} date - Date to format\n * @returns {string} Formatted date\n * @param {Object} options - Additional options\n * @param {string} options.dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n */\nexport function formatDate(\n date: Date,\n options: {\n /** Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.) */\n dateFormat: string;\n },\n): string {\n if (!date) return '';\n\n const isUTCMode = options.dateFormat.includes('Z');\n const isISO8601Format = options.dateFormat === 'YYYY-MM-DD[T]HH:mm:ss[Z]';\n\n // Special case for ISO 8601\n if (isISO8601Format) {\n // For the ISO 8601 format, use directly toISOString() which is standard\n return date.toISOString();\n }\n\n // If the format is \"Ticks\", convert the time to C# ticks\n if (options.dateFormat === 'Ticks') {\n const ticks = date.getTime() * 10000 + 621355968000000000;\n return ticks.toString();\n }\n\n // If the format is \"X\" (Unix Seconds)\n if (options.dateFormat === 'X') {\n return dayjs(date).unix().toString();\n }\n\n // If the format is \"x\" (Unix Milliseconds)\n if (options.dateFormat === 'x') {\n return date.getTime().toString();\n }\n\n // Otherwise, format according to the mode (UTC or local)\n return isUTCMode\n ? dayjs(date).utc().format(options.dateFormat)\n : dayjs(date).format(options.dateFormat);\n}\n\n/**\n * Checks if two dates are identical\n * @param {Date | null} date - First date\n * @param {Date | null} compareDate - Second date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if the dates are identical\n */\nexport function isSameDate(\n date: Date | null,\n compareDate: Date | null,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() === compareDate.getUTCDate()\n );\n } else {\n return (\n date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() === compareDate.getDate()\n );\n }\n}\n\n/**\n * Checks if a date is identical or before another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` <= `compareDate`\n */\nexport function isSameOrBefore(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() < compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() < compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() <= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() < compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() < compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() <= compareDate.getDate())\n );\n }\n}\n\n/**\n * Checks if a date is identical or after another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` >= `compareDate`\n */\nexport function isSameOrAfter(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() > compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() > compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() >= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() > compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() > compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() >= compareDate.getDate())\n );\n }\n}\n\n/**\n * Calculates the ISO week number\n * @param {Date} date - Date to calculate\n * @returns {number} Week number\n */\nexport function getWeekNumber(date: Date): number {\n // Create a copy of the date to avoid modifying the original\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n\n // Adjust to the same week Thursday (ISO 8601)\n d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));\n\n // Calculate the first Thursday of the year\n const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));\n\n // Calculate the week number\n return (\n 1 +\n Math.round(\n ((d.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getUTCDay() + 6) % 7)) /\n 7,\n )\n );\n}\n\n/**\n * Convert a date string/Date to a Date without timezone offset\n * @param {string | Date} dateInput - Date under string or Date object form\n * @param {string} dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @returns {Date} Date in Date form without timezone offset\n */\nexport function parseDate(\n dateInput: string | Date,\n dateFormat: string,\n): Date | null {\n if (dateInput instanceof Date) return dateInput;\n const isUTCMode = dateFormat.includes('Z');\n\n // Attempt to automatically detect ISO 8601 format (generated by toISOString())\n // The regex checks the standard ISO format: YYYY-MM-DDTHH:mm:ss.sssZ\n if (\n typeof dateInput === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z$/.test(dateInput)\n ) {\n try {\n const parsedDate = new Date(dateInput);\n if (!isNaN(parsedDate.getTime())) {\n return parsedDate;\n }\n } catch (error) {\n // If it fails, continue with other methods\n console.error('Error parsing ISO date:', error);\n }\n }\n\n // Handling Unix Seconds (\"X\") formats\n if (dateFormat === 'X') {\n const unixSeconds = Number(dateInput);\n if (isNaN(unixSeconds)) return null;\n return isUTCMode\n ? dayjs.unix(unixSeconds).utc().toDate()\n : dayjs.unix(unixSeconds).toDate();\n }\n\n // Handling Unix Milliseconds (\"x\") formats\n if (dateFormat === 'x') {\n const unixMilliseconds = Number(dateInput);\n if (isNaN(unixMilliseconds)) return null;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // Handling C# Ticks format\n if (dateFormat === 'Ticks') {\n const ticks = Number(dateInput);\n if (isNaN(ticks)) return null;\n // Conversion of .NET ticks to milliseconds since Unix epoch\n const unixMilliseconds = (ticks - 621355968000000000) / 10000;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // For all other formats, use customParseFormat in strict mode\n let parsed;\n if (isUTCMode) {\n parsed = dayjs.utc(dateInput, dateFormat, true);\n } else {\n parsed = dayjs(dateInput, dateFormat, true);\n }\n if (!parsed.isValid()) {\n return null;\n }\n return parsed.toDate();\n}\n"]}
1
+ {"version":3,"file":"nv-calendar.utils.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport utc from 'dayjs/plugin/utc';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\n\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\ndayjs.extend(weekOfYear);\n\n/**\n * Formats a date to a string according to the format\n * @param {Date} date - Date to format\n * @returns {string} Formatted date\n * @param {Object} options - Additional options\n * @param {string} options.dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n */\nexport function formatDate(\n date: Date,\n options: {\n /** Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.) */\n dateFormat: string;\n },\n): string {\n if (!date) return '';\n\n const isUTCMode = options.dateFormat.includes('Z');\n const isISO8601Format = options.dateFormat === 'YYYY-MM-DD[T]HH:mm:ss[Z]';\n\n // Special case for ISO 8601\n if (isISO8601Format) {\n // For the ISO 8601 format, use directly toISOString() which is standard\n return date.toISOString();\n }\n\n // If the format is \"Ticks\", convert the time to C# ticks\n if (options.dateFormat === 'Ticks') {\n const ticks = date.getTime() * 10000 + 621355968000000000;\n return ticks.toString();\n }\n\n // If the format is \"X\" (Unix Seconds)\n if (options.dateFormat === 'X') {\n return dayjs(date).unix().toString();\n }\n\n // If the format is \"x\" (Unix Milliseconds)\n if (options.dateFormat === 'x') {\n return date.getTime().toString();\n }\n\n // Otherwise, format according to the mode (UTC or local)\n return isUTCMode\n ? dayjs(date).utc().format(options.dateFormat)\n : dayjs(date).format(options.dateFormat);\n}\n\n/**\n * Checks if two dates are identical\n * @param {Date | null} date - First date\n * @param {Date | null} compareDate - Second date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if the dates are identical\n */\nexport function isSameDate(\n date: Date | null,\n compareDate: Date | null,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() === compareDate.getUTCDate()\n );\n } else {\n return (\n date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() === compareDate.getDate()\n );\n }\n}\n\n/**\n * Checks if a date is identical or before another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` <= `compareDate`\n */\nexport function isSameOrBefore(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() < compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() < compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() <= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() < compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() < compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() <= compareDate.getDate())\n );\n }\n}\n\n/**\n * Checks if a date is identical or after another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` >= `compareDate`\n */\nexport function isSameOrAfter(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() > compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() > compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() >= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() > compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() > compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() >= compareDate.getDate())\n );\n }\n}\n\n/**\n * Calculates the ISO week number\n * @param {Date} date - Date to calculate\n * @returns {number} Week number\n */\nexport function getWeekNumber(date: Date): number {\n // Create a copy of the date to avoid modifying the original\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n\n // Adjust to the same week Thursday (ISO 8601)\n d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));\n\n // Calculate the first Thursday of the year\n const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));\n\n // Calculate the week number\n return (\n 1 +\n Math.round(\n ((d.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getUTCDay() + 6) % 7)) /\n 7,\n )\n );\n}\n\n/**\n * Convert a date string/Date to a Date without timezone offset\n * @param {string | Date} dateInput - Date under string or Date object form\n * @param {string} dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @returns {Date} Date in Date form without timezone offset\n */\nexport function parseDate(\n dateInput: string | Date,\n dateFormat: string,\n): Date | null {\n if (dateInput instanceof Date) return dateInput;\n const isUTCMode = dateFormat.includes('Z');\n\n // Attempt to automatically detect ISO 8601 format (generated by toISOString())\n // The regex checks the standard ISO format: YYYY-MM-DDTHH:mm:ss.sssZ\n if (\n typeof dateInput === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z$/.test(dateInput)\n ) {\n try {\n const parsedDate = new Date(dateInput);\n if (!isNaN(parsedDate.getTime())) {\n return parsedDate;\n }\n } catch (error) {\n // If it fails, continue with other methods\n console.error('Error parsing ISO date:', error);\n }\n }\n\n // Handling Unix Seconds (\"X\") formats\n if (dateFormat === 'X') {\n const unixSeconds = Number(dateInput);\n if (isNaN(unixSeconds)) return null;\n return isUTCMode\n ? dayjs.unix(unixSeconds).utc().toDate()\n : dayjs.unix(unixSeconds).toDate();\n }\n\n // Handling Unix Milliseconds (\"x\") formats\n if (dateFormat === 'x') {\n const unixMilliseconds = Number(dateInput);\n if (isNaN(unixMilliseconds)) return null;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // Handling C# Ticks format\n if (dateFormat === 'Ticks') {\n const ticks = Number(dateInput);\n if (isNaN(ticks)) return null;\n // Conversion of .NET ticks to milliseconds since Unix epoch\n const unixMilliseconds = (ticks - 621355968000000000) / 10000;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // For all other formats, use customParseFormat in strict mode\n let parsed;\n if (isUTCMode) {\n parsed = dayjs.utc(dateInput, dateFormat, true);\n } else {\n parsed = dayjs(dateInput, dateFormat, true);\n }\n if (!parsed.isValid()) {\n return null;\n }\n return parsed.toDate();\n}\n\n/**\n * Checks if a date is disabled.\n * @param {Date} date - Date to check\n * @param {string} min - Minimum date\n * @param {string} max - Maximum date\n * @param {Date[]} parsedDisabledDates - Parsed disabled dates\n * @param {string} dateFormat - Date format\n * @param {boolean} isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if the date is disabled\n */\nexport function isDateDisabledUtil(\n date: Date,\n min: string,\n max: string,\n parsedDisabledDates: Date[],\n dateFormat: string,\n isUTCMode: boolean,\n): boolean {\n if (!date) return true;\n\n if (min) {\n const minDate = parseDate(min, dateFormat);\n if (minDate && date < minDate) {\n return true;\n }\n }\n\n if (max) {\n const maxDate = parseDate(max, dateFormat);\n if (maxDate && date > maxDate) {\n return true;\n }\n }\n\n return parsedDisabledDates.some(disabledDate =>\n isSameDate(date, disabledDate, { isUTCMode }),\n );\n}\n\n/**\n * Checks if a date is within the hover range.\n * @param {Date} date - The date to check.\n * @param {Date} startDate - The start of the range.\n * @param {Date | null} hoverDate - The hovered date.\n * @returns {boolean} True if the date is in the hover range.\n */\nexport const isInHoverRange = (\n date: Date,\n startDate: Date,\n hoverDate: Date | null,\n): boolean => {\n if (!hoverDate || !startDate || !date) {\n return false;\n }\n\n const start = startDate < hoverDate ? startDate : hoverDate;\n const end = startDate < hoverDate ? hoverDate : startDate;\n\n return date > start && date < end;\n};\n\n/**\n * Checks if the hover range is valid (does not contain disabled dates).\n * @param {Date} startDate - The start of the range.\n * @param {Date | null} hoverDate - The hovered date.\n * @param {string} min - The minimum allowed date.\n * @param {string} max - The maximum allowed date.\n * @param {Date[]} parsedDisabledDates - An array of disabled dates.\n * @param {string} dateFormat - The date format for parsing.\n * @param {boolean} isUTCMode - Flag for UTC mode.\n * @returns {boolean} True if the hover range is valid.\n */\nexport const isHoverRangeValid = (\n startDate: Date,\n hoverDate: Date | null,\n min: string,\n max: string,\n parsedDisabledDates: Date[],\n dateFormat: string,\n isUTCMode: boolean,\n): boolean => {\n if (!hoverDate || !startDate) {\n return true;\n }\n\n const start = startDate < hoverDate ? startDate : hoverDate;\n const end = startDate < hoverDate ? hoverDate : startDate;\n\n const current = new Date(start);\n while (current <= end) {\n if (\n isDateDisabledUtil(\n current,\n min,\n max,\n parsedDisabledDates,\n dateFormat,\n isUTCMode,\n )\n ) {\n return false;\n }\n current.setDate(current.getDate() + 1);\n }\n\n return true;\n};\n"]}
@@ -7,8 +7,8 @@ import { isSameDate } from "../nv-calendar.utils";
7
7
  * @returns {JSX.Element} JSX element representing the calendar grid
8
8
  */
9
9
  export const CalendarGrid = props => {
10
- const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, } = props;
11
- return (h("div", { class: "days-container" }, h("div", { class: "days-header" }, dayNames.map((day, index) => (h("div", { class: "day-header", key: `day-header-${index}` }, day)))), h("div", { class: "days-grid" }, days.map(day => {
10
+ const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, onDayHover, onMouseLeave, hoverDate, isInHoverRange, isHoverRangeValid, } = props;
11
+ return (h("div", { class: "days-container" }, h("div", { class: "days-header" }, dayNames.map((day, index) => (h("div", { class: "day-header", key: `day-header-${index}` }, day)))), h("div", { class: "days-grid", onMouseLeave: onMouseLeave }, days.map(day => {
12
12
  if (day.isBlank) {
13
13
  return h("div", { class: "day day-blank" });
14
14
  }
@@ -22,7 +22,9 @@ export const CalendarGrid = props => {
22
22
  const isStart = isSameDate(date, startDate, { isUTCMode });
23
23
  const isEnd = isSameDate(date, endDate, { isUTCMode });
24
24
  const isTodayDate = isToday(date);
25
- return (h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick }));
25
+ const inHoverRange = isInHoverRange(date, startDate, hoverDate);
26
+ const hoverRangeValid = isHoverRangeValid(startDate, hoverDate);
27
+ return (h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick, onDayHover: onDayHover, isInHoverRange: inHoverRange, isHoverRangeValid: hoverRangeValid }));
26
28
  }))));
27
29
  };
28
30
  //# sourceMappingURL=calendar-grid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-grid.js","sourceRoot":"","sources":["../../../../src/components/nv-calendar/partials/calendar-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA8ClD;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2C,KAAK,CAAC,EAAE;IAC1E,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,EACb,OAAO,GACR,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,WAAK,KAAK,EAAC,gBAAgB;QACzB,WAAK,KAAK,EAAC,aAAa,IACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,WAAK,KAAK,EAAC,YAAY,EAAC,GAAG,EAAE,cAAc,KAAK,EAAE,IAC/C,GAAG,CACA,CACP,CAAC,CACE;QACN,WAAK,KAAK,EAAC,WAAW,IACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACd,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAO,WAAK,KAAK,EAAC,eAAe,GAAO,CAAC;YAC3C,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,WAAK,KAAK,EAAC,+BAA+B,GAAO,CAAC;YAC3D,CAAC;YAED,MAAM,UAAU,GACd,aAAa,KAAK,QAAQ;gBAC1B,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAElC,OAAO,CACL,EAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,cAAc,EAAE,GAAG,CAAC,cAAc,EAClC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,UAAU,GACnB,CACH,CAAC;QACJ,CAAC,CAAC,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\nimport { DayCell } from './day-cell';\nimport { isSameDate } from '../nv-calendar.utils';\n\n/**\n * Day data structure\n * @internal\n */\ninterface DayData {\n /** Day of the month (1-31) */\n dayOfMonth: number | null;\n /** Complete date */\n date: Date | null;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** If the day is blank */\n isBlank: boolean;\n}\n\n/**\n * Props for the CalendarGrid component\n * @internal\n */\ninterface CalendarGridProps {\n /** Array of day data for the month */\n days: DayData[];\n /** Array of localized day names */\n dayNames: string[];\n /** Current selection type */\n selectionType: 'single' | 'range';\n /** Selected date in single mode */\n selectedDate: Date | null;\n /** Start date in range mode */\n startDate: Date | null;\n /** End date in range mode */\n endDate: Date | null;\n /** Whether date format is in UTC mode */\n isUTCMode: boolean;\n /** Handler for day selection */\n onDayClick: (date: Date) => void;\n /** Function to check if date is in range */\n isDateInRange: (date: Date) => boolean;\n /** Function to check if date is today */\n isToday: (date: Date) => boolean;\n}\n\n/**\n * Renders the calendar grid with day headers and day cells\n * @param {CalendarGridProps} props - Component properties\n * @returns {JSX.Element} JSX element representing the calendar grid\n */\nexport const CalendarGrid: FunctionalComponent<CalendarGridProps> = props => {\n const {\n days,\n dayNames,\n selectionType,\n selectedDate,\n startDate,\n endDate,\n isUTCMode,\n onDayClick,\n isDateInRange,\n isToday,\n } = props;\n\n return (\n <div class=\"days-container\">\n <div class=\"days-header\">\n {dayNames.map((day, index) => (\n <div class=\"day-header\" key={`day-header-${index}`}>\n {day}\n </div>\n ))}\n </div>\n <div class=\"days-grid\">\n {days.map(day => {\n if (day.isBlank) {\n return <div class=\"day day-blank\"></div>;\n }\n\n const date = day.date;\n if (!date || !day.dayOfMonth) {\n return <div class=\"day-cell is-disabled is-empty\"></div>;\n }\n\n const isSelected =\n selectionType === 'single' &&\n isSameDate(date, selectedDate, { isUTCMode });\n const isInRange = isDateInRange(date);\n const isStart = isSameDate(date, startDate, { isUTCMode });\n const isEnd = isSameDate(date, endDate, { isUTCMode });\n const isTodayDate = isToday(date);\n\n return (\n <DayCell\n date={date}\n dayOfMonth={day.dayOfMonth}\n isCurrentMonth={day.isCurrentMonth}\n isSelected={isSelected}\n isInRange={isInRange}\n isStart={isStart}\n isEnd={isEnd}\n isToday={isTodayDate}\n isDisabled={day.isDisabled}\n selectionType={selectionType}\n onClick={onDayClick}\n />\n );\n })}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"calendar-grid.js","sourceRoot":"","sources":["../../../../src/components/nv-calendar/partials/calendar-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA4DlD;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2C,KAAK,CAAC,EAAE;IAC1E,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,WAAK,KAAK,EAAC,gBAAgB;QACzB,WAAK,KAAK,EAAC,aAAa,IACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,WAAK,KAAK,EAAC,YAAY,EAAC,GAAG,EAAE,cAAc,KAAK,EAAE,IAC/C,GAAG,CACA,CACP,CAAC,CACE;QACN,WAAK,KAAK,EAAC,WAAW,EAAC,YAAY,EAAE,YAAY,IAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACd,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAO,WAAK,KAAK,EAAC,eAAe,GAAO,CAAC;YAC3C,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,WAAK,KAAK,EAAC,+BAA+B,GAAO,CAAC;YAC3D,CAAC;YAED,MAAM,UAAU,GACd,aAAa,KAAK,QAAQ;gBAC1B,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEhE,OAAO,CACL,EAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,cAAc,EAAE,GAAG,CAAC,cAAc,EAClC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,YAAY,EAC5B,iBAAiB,EAAE,eAAe,GAClC,CACH,CAAC;QACJ,CAAC,CAAC,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\nimport { DayCell } from './day-cell';\nimport { isSameDate } from '../nv-calendar.utils';\n\n/**\n * Day data structure\n * @internal\n */\ninterface DayData {\n /** Day of the month (1-31) */\n dayOfMonth: number | null;\n /** Complete date */\n date: Date | null;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** If the day is blank */\n isBlank: boolean;\n}\n\n/**\n * Props for the CalendarGrid component\n * @internal\n */\ninterface CalendarGridProps {\n /** Array of day data for the month */\n days: DayData[];\n /** Array of localized day names */\n dayNames: string[];\n /** Current selection type */\n selectionType: 'single' | 'range';\n /** Selected date in single mode */\n selectedDate: Date | null;\n /** Start date in range mode */\n startDate: Date | null;\n /** End date in range mode */\n endDate: Date | null;\n /** Whether date format is in UTC mode */\n isUTCMode: boolean;\n /** Handler for day selection */\n onDayClick: (event: MouseEvent) => void;\n /** Function to check if date is in range */\n isDateInRange: (date: Date) => boolean;\n /** Function to check if date is today */\n isToday: (date: Date) => boolean;\n /** Handler for day hover */\n onDayHover: (event: MouseEvent) => void;\n /** Handler for mouse leave */\n onMouseLeave: () => void;\n /** Hovered date */\n hoverDate: Date | null;\n /** Function to check if date is in hover range */\n isInHoverRange: (\n date: Date,\n startDate: Date,\n hoverDate: Date | null,\n ) => boolean;\n /** Function to check if hover range is valid */\n isHoverRangeValid: (startDate: Date, hoverDate: Date | null) => boolean;\n}\n\n/**\n * Renders the calendar grid with day headers and day cells\n * @param {CalendarGridProps} props - Component properties\n * @returns {JSX.Element} JSX element representing the calendar grid\n */\nexport const CalendarGrid: FunctionalComponent<CalendarGridProps> = props => {\n const {\n days,\n dayNames,\n selectionType,\n selectedDate,\n startDate,\n endDate,\n isUTCMode,\n onDayClick,\n isDateInRange,\n isToday,\n onDayHover,\n onMouseLeave,\n hoverDate,\n isInHoverRange,\n isHoverRangeValid,\n } = props;\n\n return (\n <div class=\"days-container\">\n <div class=\"days-header\">\n {dayNames.map((day, index) => (\n <div class=\"day-header\" key={`day-header-${index}`}>\n {day}\n </div>\n ))}\n </div>\n <div class=\"days-grid\" onMouseLeave={onMouseLeave}>\n {days.map(day => {\n if (day.isBlank) {\n return <div class=\"day day-blank\"></div>;\n }\n\n const date = day.date;\n if (!date || !day.dayOfMonth) {\n return <div class=\"day-cell is-disabled is-empty\"></div>;\n }\n\n const isSelected =\n selectionType === 'single' &&\n isSameDate(date, selectedDate, { isUTCMode });\n const isInRange = isDateInRange(date);\n const isStart = isSameDate(date, startDate, { isUTCMode });\n const isEnd = isSameDate(date, endDate, { isUTCMode });\n const isTodayDate = isToday(date);\n const inHoverRange = isInHoverRange(date, startDate, hoverDate);\n const hoverRangeValid = isHoverRangeValid(startDate, hoverDate);\n\n return (\n <DayCell\n date={date}\n dayOfMonth={day.dayOfMonth}\n isCurrentMonth={day.isCurrentMonth}\n isSelected={isSelected}\n isInRange={isInRange}\n isStart={isStart}\n isEnd={isEnd}\n isToday={isTodayDate}\n isDisabled={day.isDisabled}\n selectionType={selectionType}\n onClick={onDayClick}\n onDayHover={onDayHover}\n isInHoverRange={inHoverRange}\n isHoverRangeValid={hoverRangeValid}\n />\n );\n })}\n </div>\n </div>\n );\n};\n"]}
@@ -5,7 +5,7 @@ import { h } from "@stencil/core";
5
5
  * @returns {JSX.Element} JSX element representing a day cell
6
6
  */
7
7
  export const DayCell = props => {
8
- const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, } = props;
8
+ const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, onDayHover, isInHoverRange, isHoverRangeValid, } = props;
9
9
  // Build CSS classes for the day cell
10
10
  const dayClasses = [
11
11
  'day',
@@ -16,16 +16,11 @@ export const DayCell = props => {
16
16
  isDisabled ? 'disabled' : '',
17
17
  !isCurrentMonth ? 'outside-month' : '',
18
18
  isToday ? 'is-today' : '',
19
+ isInHoverRange && isHoverRangeValid ? 'hover-range' : '',
20
+ isInHoverRange && !isHoverRangeValid ? 'hover-blocked' : '',
19
21
  ]
20
22
  .filter(Boolean)
21
23
  .join(' ');
22
- const handleClick = () => {
23
- if (!isDisabled && onClick) {
24
- onClick(date);
25
- }
26
- };
27
- return (
28
- // eslint-disable-next-line react/jsx-no-bind
29
- h("div", { class: dayClasses, onClick: handleClick, "aria-disabled": isDisabled }, dayOfMonth));
24
+ return (h("div", { class: dayClasses, "data-date": date.toISOString(), onClick: !isDisabled ? onClick : undefined, onMouseEnter: onDayHover, "aria-disabled": isDisabled }, dayOfMonth));
30
25
  };
31
26
  //# sourceMappingURL=day-cell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"day-cell.js","sourceRoot":"","sources":["../../../../src/components/nv-calendar/partials/day-cell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AA8BvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAsC,KAAK,CAAC,EAAE;IAChE,MAAM,EACJ,IAAI,EACJ,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,OAAO,GACR,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC5B,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACxB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC3B,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KAC1B;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;IACL,6CAA6C;IAC7C,WAAK,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,mBAAiB,UAAU,IACpE,UAAU,CACP,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\n\n/**\n * Props for the DayCell component\n */\ninterface DayCellProps {\n /** Date object for this cell */\n date: Date;\n /** Day number (1-31) */\n dayOfMonth: number;\n /** Whether this day belongs to the current month */\n isCurrentMonth: boolean;\n /** Whether this day is selected (single mode) */\n isSelected: boolean;\n /** Whether this day is in a selected range */\n isInRange: boolean;\n /** Whether this day is the start of a range */\n isStart: boolean;\n /** Whether this day is the end of a range */\n isEnd: boolean;\n /** Whether this day is today */\n isToday: boolean;\n /** Whether this day is disabled */\n isDisabled: boolean;\n /** Selection type for conditional styling */\n selectionType: 'single' | 'range';\n /** Click handler for day selection */\n onClick?: (date: Date) => void;\n}\n\n/**\n * Renders a single day cell in the calendar grid\n * @param {DayCellProps} props - Component properties\n * @returns {JSX.Element} JSX element representing a day cell\n */\nexport const DayCell: FunctionalComponent<DayCellProps> = props => {\n const {\n date,\n dayOfMonth,\n isCurrentMonth,\n isSelected,\n isInRange,\n isStart,\n isEnd,\n isToday,\n isDisabled,\n onClick,\n } = props;\n\n // Build CSS classes for the day cell\n const dayClasses = [\n 'day',\n isSelected ? 'selected' : '',\n isStart ? 'range-start' : '',\n isEnd ? 'range-end' : '',\n isInRange ? 'in-range' : '',\n isDisabled ? 'disabled' : '',\n !isCurrentMonth ? 'outside-month' : '',\n isToday ? 'is-today' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!isDisabled && onClick) {\n onClick(date);\n }\n };\n\n return (\n // eslint-disable-next-line react/jsx-no-bind\n <div class={dayClasses} onClick={handleClick} aria-disabled={isDisabled}>\n {dayOfMonth}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"day-cell.js","sourceRoot":"","sources":["../../../../src/components/nv-calendar/partials/day-cell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AAoCvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAsC,KAAK,CAAC,EAAE;IAChE,MAAM,EACJ,IAAI,EACJ,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,iBAAiB,GAClB,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC5B,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACxB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC3B,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QACzB,cAAc,IAAI,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QACxD,cAAc,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;KAC5D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,WACE,KAAK,EAAE,UAAU,eACN,IAAI,CAAC,WAAW,EAAE,EAC7B,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC1C,YAAY,EAAE,UAAU,mBACT,UAAU,IAExB,UAAU,CACP,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\n\n/**\n * Props for the DayCell component\n */\ninterface DayCellProps {\n /** Date object for this cell */\n date: Date;\n /** Day number (1-31) */\n dayOfMonth: number;\n /** Whether this day belongs to the current month */\n isCurrentMonth: boolean;\n /** Whether this day is selected (single mode) */\n isSelected: boolean;\n /** Whether this day is in a selected range */\n isInRange: boolean;\n /** Whether this day is the start of a range */\n isStart: boolean;\n /** Whether this day is the end of a range */\n isEnd: boolean;\n /** Whether this day is today */\n isToday: boolean;\n /** Whether this day is disabled */\n isDisabled: boolean;\n /** Selection type for conditional styling */\n selectionType: 'single' | 'range';\n /** Click handler for day selection */\n onClick?: (event: MouseEvent) => void;\n /** Hover handler for day */\n onDayHover?: (event: MouseEvent) => void;\n /** Whether this day is in a hover range */\n isInHoverRange: boolean;\n /** Whether the hover range is valid */\n isHoverRangeValid: boolean;\n}\n\n/**\n * Renders a single day cell in the calendar grid\n * @param {DayCellProps} props - Component properties\n * @returns {JSX.Element} JSX element representing a day cell\n */\nexport const DayCell: FunctionalComponent<DayCellProps> = props => {\n const {\n date,\n dayOfMonth,\n isCurrentMonth,\n isSelected,\n isInRange,\n isStart,\n isEnd,\n isToday,\n isDisabled,\n onClick,\n onDayHover,\n isInHoverRange,\n isHoverRangeValid,\n } = props;\n\n // Build CSS classes for the day cell\n const dayClasses = [\n 'day',\n isSelected ? 'selected' : '',\n isStart ? 'range-start' : '',\n isEnd ? 'range-end' : '',\n isInRange ? 'in-range' : '',\n isDisabled ? 'disabled' : '',\n !isCurrentMonth ? 'outside-month' : '',\n isToday ? 'is-today' : '',\n isInHoverRange && isHoverRangeValid ? 'hover-range' : '',\n isInHoverRange && !isHoverRangeValid ? 'hover-blocked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n class={dayClasses}\n data-date={date.toISOString()}\n onClick={!isDisabled ? onClick : undefined}\n onMouseEnter={onDayHover}\n aria-disabled={isDisabled}\n >\n {dayOfMonth}\n </div>\n );\n};\n"]}