@nova-design-system/nova-webcomponents 3.1.0 → 3.2.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 (409) hide show
  1. package/dist/cjs/{index-9bda5507.js → index-108ddff0.js} +20 -4
  2. package/dist/cjs/index-108ddff0.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -0
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/native.cjs.js +2 -2
  7. package/dist/cjs/nv-alert.cjs.entry.js +1 -1
  8. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  10. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  11. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  12. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-calendar.cjs.entry.js +16 -37
  14. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-datagrid.cjs.entry.js +95 -103
  17. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  19. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nv-dialog.cjs.entry.js +1 -1
  21. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-fielddate.cjs.entry.js +2 -2
  24. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nv-fielddaterange.cjs.entry.js +73 -18
  26. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nv-fielddropdown.cjs.entry.js +84 -60
  28. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  30. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +116 -104
  31. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  33. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  35. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nv-fieldradio.cjs.entry.js +1 -1
  37. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  38. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldslider.cjs.entry.js +663 -0
  40. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -0
  41. package/dist/cjs/nv-fieldtext.cjs.entry.js +5 -5
  42. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +5 -5
  44. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-fieldtime.cjs.entry.js +11 -11
  46. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  48. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
  50. package/dist/cjs/nv-menu.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  52. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  54. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-table.cjs.entry.js +3 -3
  56. package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -1
  57. package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
  58. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -3
  59. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  60. package/dist/collection/collection-manifest.json +1 -0
  61. package/dist/collection/components/nv-calendar/nv-calendar.css +6 -2
  62. package/dist/collection/components/nv-calendar/nv-calendar.js +14 -35
  63. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  64. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +131 -48
  65. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  66. package/dist/collection/components/nv-datagrid/nv-datagrid.js +94 -152
  67. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  68. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +20 -1
  69. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  70. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +7 -1
  71. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +85 -17
  72. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  73. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +7 -1
  74. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +8 -0
  75. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  76. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +173 -106
  77. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  78. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +31 -1
  79. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +202 -190
  80. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  81. package/dist/collection/components/nv-fieldmultiselect/{nv-fieldmultiselect.css → styles/nv-fieldmultiselect.css} +15 -4
  82. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +7 -1
  83. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +7 -1
  84. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +7 -1
  85. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +264 -0
  86. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -0
  87. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +1035 -0
  88. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -0
  89. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +77 -0
  90. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +1 -0
  91. package/dist/collection/components/nv-fieldslider/partials/field-input.js +33 -0
  92. package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -0
  93. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +34 -0
  94. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +1 -0
  95. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +18 -0
  96. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +1 -0
  97. package/dist/collection/components/nv-fieldslider/partials/tick-marks.js +18 -0
  98. package/dist/collection/components/nv-fieldslider/partials/tick-marks.js.map +1 -0
  99. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +267 -0
  100. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +159 -0
  101. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +1 -0
  102. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +15 -1
  103. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  104. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  105. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +4 -3
  106. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  107. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +7 -1
  108. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  109. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  110. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +7 -1
  111. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  112. package/dist/collection/components/nv-icon/nv-icons.js +1 -0
  113. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  114. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  115. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  116. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  117. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  118. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  119. package/dist/collection/components/nv-row/nv-row.js +1 -1
  120. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  121. package/dist/collection/components/nv-table/nv-table.js +2 -2
  122. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  123. package/dist/collection/components/nv-tooltip/nv-tooltip.css +1 -0
  124. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  125. package/dist/collection/interfaces/Column.js.map +1 -1
  126. package/dist/components/index.js +2 -1
  127. package/dist/components/index.js.map +1 -1
  128. package/dist/components/nv-alert.js +2 -2
  129. package/dist/components/nv-avatar.js +2 -2
  130. package/dist/components/nv-badge.js +1 -1
  131. package/dist/components/nv-breadcrumb.js +3 -3
  132. package/dist/components/nv-breadcrumbs.js +1 -1
  133. package/dist/components/nv-button.js +1 -1
  134. package/dist/components/nv-calendar.js +1 -1
  135. package/dist/components/nv-col.js +1 -1
  136. package/dist/components/nv-datagrid.js +97 -109
  137. package/dist/components/nv-datagrid.js.map +1 -1
  138. package/dist/components/nv-datagridcolumn.js +4 -3
  139. package/dist/components/nv-datagridcolumn.js.map +1 -1
  140. package/dist/components/nv-dialog.js +6 -6
  141. package/dist/components/nv-dialogfooter.js +1 -1
  142. package/dist/components/nv-dialogheader.js +1 -1
  143. package/dist/components/nv-fieldcheckbox.js +1 -1
  144. package/dist/components/nv-fielddate.js +9 -9
  145. package/dist/components/nv-fielddate.js.map +1 -1
  146. package/dist/components/nv-fielddaterange.js +83 -27
  147. package/dist/components/nv-fielddaterange.js.map +1 -1
  148. package/dist/components/nv-fielddropdown.js +98 -72
  149. package/dist/components/nv-fielddropdown.js.map +1 -1
  150. package/dist/components/nv-fielddropdownitem.js +1 -1
  151. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  152. package/dist/components/nv-fieldmultiselect.js +132 -120
  153. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  154. package/dist/components/nv-fieldnumber.js +5 -5
  155. package/dist/components/nv-fieldnumber.js.map +1 -1
  156. package/dist/components/nv-fieldpassword.js +5 -5
  157. package/dist/components/nv-fieldpassword.js.map +1 -1
  158. package/dist/components/nv-fieldradio.js +1 -1
  159. package/dist/components/nv-fieldselect.js +5 -5
  160. package/dist/components/nv-fieldselect.js.map +1 -1
  161. package/dist/components/nv-fieldslider.d.ts +11 -0
  162. package/dist/components/nv-fieldslider.js +726 -0
  163. package/dist/components/nv-fieldslider.js.map +1 -0
  164. package/dist/components/nv-fieldtext.js +1 -1
  165. package/dist/components/nv-fieldtextarea.js +5 -5
  166. package/dist/components/nv-fieldtextarea.js.map +1 -1
  167. package/dist/components/nv-fieldtime.js +15 -15
  168. package/dist/components/nv-fieldtime.js.map +1 -1
  169. package/dist/components/nv-icon.js +1 -1
  170. package/dist/components/nv-iconbutton.js +1 -1
  171. package/dist/components/nv-loader.js +1 -1
  172. package/dist/components/nv-menu.js +5 -5
  173. package/dist/components/nv-menuitem.js +1 -1
  174. package/dist/components/nv-popover.js +1 -1
  175. package/dist/components/nv-row.js +2 -2
  176. package/dist/components/nv-stack.js +2 -2
  177. package/dist/components/nv-table.js +3 -3
  178. package/dist/components/nv-tablecolumn.js +1 -1
  179. package/dist/components/nv-toggle.js +3 -3
  180. package/dist/components/nv-tooltip.js +1 -1
  181. package/dist/components/{p-10faa938.js → p-04cb3a6f.js} +5 -5
  182. package/dist/components/{p-10faa938.js.map → p-04cb3a6f.js.map} +1 -1
  183. package/dist/components/{p-0a0f6daf.js → p-07a89754.js} +3 -3
  184. package/dist/components/{p-0a0f6daf.js.map → p-07a89754.js.map} +1 -1
  185. package/dist/components/{p-10b37876.js → p-0ab80d95.js} +3 -3
  186. package/dist/components/{p-10b37876.js.map → p-0ab80d95.js.map} +1 -1
  187. package/dist/components/{p-02752770.js → p-33e231f4.js} +2 -2
  188. package/dist/components/{p-02752770.js.map → p-33e231f4.js.map} +1 -1
  189. package/dist/components/{p-854c32dc.js → p-4656efae.js} +21 -42
  190. package/dist/components/p-4656efae.js.map +1 -0
  191. package/dist/components/{p-35a70c5e.js → p-581e67cc.js} +3 -3
  192. package/dist/components/{p-35a70c5e.js.map → p-581e67cc.js.map} +1 -1
  193. package/dist/components/{p-1c45c0f2.js → p-679e0fa9.js} +16 -4
  194. package/dist/components/p-679e0fa9.js.map +1 -0
  195. package/dist/components/p-76a30bf1.js +88 -0
  196. package/dist/components/p-76a30bf1.js.map +1 -0
  197. package/dist/components/{p-f5cb0a63.js → p-83c8873a.js} +3 -3
  198. package/dist/components/{p-f5cb0a63.js.map → p-83c8873a.js.map} +1 -1
  199. package/dist/components/{p-f76bb0c3.js → p-c0a91091.js} +5 -5
  200. package/dist/components/p-c0a91091.js.map +1 -0
  201. package/dist/components/{p-41c56ddc.js → p-cbdc2c8b.js} +5 -5
  202. package/dist/components/{p-41c56ddc.js.map → p-cbdc2c8b.js.map} +1 -1
  203. package/dist/components/{p-a2527411.js → p-cbe9521f.js} +3 -3
  204. package/dist/components/{p-a2527411.js.map → p-cbe9521f.js.map} +1 -1
  205. package/dist/components/{p-608eb9da.js → p-d19b41d2.js} +2 -2
  206. package/dist/components/{p-608eb9da.js.map → p-d19b41d2.js.map} +1 -1
  207. package/dist/components/{p-eb632278.js → p-d63f1cbe.js} +3 -3
  208. package/dist/components/{p-eb632278.js.map → p-d63f1cbe.js.map} +1 -1
  209. package/dist/components/{p-e00cbb8a.js → p-dd2273a3.js} +2 -2
  210. package/dist/components/{p-e00cbb8a.js.map → p-dd2273a3.js.map} +1 -1
  211. package/dist/components/{p-9decffb6.js → p-f0a5e7e4.js} +7 -7
  212. package/dist/components/p-f0a5e7e4.js.map +1 -0
  213. package/dist/components/{p-b48d5a94.js → p-f1859ddc.js} +4 -4
  214. package/dist/components/{p-b48d5a94.js.map → p-f1859ddc.js.map} +1 -1
  215. package/dist/esm/{index-1fb7a9a6.js → index-8f0e5f19.js} +20 -4
  216. package/dist/esm/index-8f0e5f19.js.map +1 -0
  217. package/dist/esm/index.js +1 -0
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/loader.js +3 -3
  220. package/dist/esm/native.js +3 -3
  221. package/dist/esm/nv-alert.entry.js +1 -1
  222. package/dist/esm/nv-avatar.entry.js +1 -1
  223. package/dist/esm/nv-badge_2.entry.js +1 -1
  224. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  225. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  226. package/dist/esm/nv-button.entry.js +1 -1
  227. package/dist/esm/nv-calendar.entry.js +16 -37
  228. package/dist/esm/nv-calendar.entry.js.map +1 -1
  229. package/dist/esm/nv-col.entry.js +1 -1
  230. package/dist/esm/nv-datagrid.entry.js +95 -103
  231. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  232. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  233. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  234. package/dist/esm/nv-dialog.entry.js +1 -1
  235. package/dist/esm/nv-dialogfooter_2.entry.js +1 -1
  236. package/dist/esm/nv-fieldcheckbox.entry.js +1 -1
  237. package/dist/esm/nv-fielddate.entry.js +2 -2
  238. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  239. package/dist/esm/nv-fielddaterange.entry.js +73 -18
  240. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  241. package/dist/esm/nv-fielddropdown.entry.js +84 -60
  242. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  243. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  244. package/dist/esm/nv-fieldmultiselect.entry.js +116 -104
  245. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  246. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  247. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  248. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  249. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  250. package/dist/esm/nv-fieldradio.entry.js +1 -1
  251. package/dist/esm/nv-fieldselect.entry.js +2 -2
  252. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  253. package/dist/esm/nv-fieldslider.entry.js +659 -0
  254. package/dist/esm/nv-fieldslider.entry.js.map +1 -0
  255. package/dist/esm/nv-fieldtext.entry.js +5 -5
  256. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  257. package/dist/esm/nv-fieldtextarea.entry.js +5 -5
  258. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  259. package/dist/esm/nv-fieldtime.entry.js +11 -11
  260. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  261. package/dist/esm/nv-icon.entry.js +3 -3
  262. package/dist/esm/nv-icon.entry.js.map +1 -1
  263. package/dist/esm/nv-iconbutton_2.entry.js +3 -3
  264. package/dist/esm/nv-menu.entry.js +2 -2
  265. package/dist/esm/nv-menuitem.entry.js +2 -2
  266. package/dist/esm/nv-popover.entry.js +2 -2
  267. package/dist/esm/nv-row.entry.js +2 -2
  268. package/dist/esm/nv-stack.entry.js +2 -2
  269. package/dist/esm/nv-table.entry.js +3 -3
  270. package/dist/esm/nv-tablecolumn.entry.js +1 -1
  271. package/dist/esm/nv-toggle.entry.js +3 -3
  272. package/dist/esm/nv-tooltip.entry.js +3 -3
  273. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  274. package/dist/native/index.esm.js +1 -1
  275. package/dist/native/index.esm.js.map +1 -1
  276. package/dist/native/native.css +1 -1
  277. package/dist/native/native.esm.js +1 -1
  278. package/dist/native/native.esm.js.map +1 -1
  279. package/dist/native/{p-7fd4d13d.entry.js → p-0323daf6.entry.js} +2 -2
  280. package/dist/native/{p-14c07207.entry.js → p-05d95d4d.entry.js} +2 -2
  281. package/dist/native/{p-90e6d9dd.entry.js → p-0ec1e2e3.entry.js} +2 -2
  282. package/dist/native/{p-c7b201cd.entry.js → p-16a4cdf3.entry.js} +2 -2
  283. package/dist/native/{p-1da72182.entry.js → p-19fb0fd0.entry.js} +2 -2
  284. package/dist/native/p-1e3d3374.entry.js +2 -0
  285. package/dist/native/{p-9135fdf5.entry.js.map → p-1e3d3374.entry.js.map} +1 -1
  286. package/dist/native/p-21e7132f.entry.js +2 -0
  287. package/dist/native/{p-ae7ab110.entry.js.map → p-21e7132f.entry.js.map} +1 -1
  288. package/dist/native/{p-c0f79bac.entry.js → p-221b8f72.entry.js} +2 -2
  289. package/dist/native/p-2805f9f2.entry.js +2 -0
  290. package/dist/native/{p-5d21532a.entry.js.map → p-2805f9f2.entry.js.map} +1 -1
  291. package/dist/native/p-3f2b6a22.entry.js +2 -0
  292. package/dist/native/p-3f2b6a22.entry.js.map +1 -0
  293. package/dist/native/{p-0245863d.entry.js → p-407fc32d.entry.js} +2 -2
  294. package/dist/native/{p-3cd77d82.entry.js → p-4c0d81b0.entry.js} +2 -2
  295. package/dist/native/{p-615947e7.entry.js → p-519b4819.entry.js} +2 -2
  296. package/dist/native/{p-7042ba8a.entry.js → p-5382eab2.entry.js} +2 -2
  297. package/dist/native/p-5ba3fc3c.entry.js +2 -0
  298. package/dist/native/{p-b94d9f0b.entry.js.map → p-5ba3fc3c.entry.js.map} +1 -1
  299. package/dist/native/{p-656c56f0.entry.js → p-60b204ac.entry.js} +2 -2
  300. package/dist/native/p-7092a675.entry.js +2 -0
  301. package/dist/native/p-711a7778.js +3 -0
  302. package/dist/native/p-711a7778.js.map +1 -0
  303. package/dist/native/p-759c9ce4.entry.js +2 -0
  304. package/dist/native/p-759c9ce4.entry.js.map +1 -0
  305. package/dist/native/{p-efe6a46c.entry.js → p-7c676f2c.entry.js} +2 -2
  306. package/dist/native/p-7c6edd1c.entry.js +2 -0
  307. package/dist/native/p-7c6edd1c.entry.js.map +1 -0
  308. package/dist/native/p-987c79d8.entry.js +2 -0
  309. package/dist/native/p-987c79d8.entry.js.map +1 -0
  310. package/dist/native/{p-b8b6875d.entry.js → p-9fba8663.entry.js} +2 -2
  311. package/dist/native/{p-08a75cfa.entry.js → p-a2c0f1a7.entry.js} +2 -2
  312. package/dist/native/p-aa86af25.entry.js +2 -0
  313. package/dist/native/{p-49cac014.entry.js.map → p-aa86af25.entry.js.map} +1 -1
  314. package/dist/native/p-adc96c3a.entry.js +2 -0
  315. package/dist/native/{p-4d164ed6.entry.js.map → p-adc96c3a.entry.js.map} +1 -1
  316. package/dist/native/p-b0fc08e7.entry.js +2 -0
  317. package/dist/native/p-b0fc08e7.entry.js.map +1 -0
  318. package/dist/native/{p-c67186f8.entry.js → p-c930adb7.entry.js} +2 -2
  319. package/dist/native/{p-3b7ef609.entry.js → p-cfe0a6c6.entry.js} +2 -2
  320. package/dist/native/p-d07ab618.entry.js +2 -0
  321. package/dist/native/{p-7e154bfd.entry.js → p-dac0089b.entry.js} +2 -2
  322. package/dist/native/p-dac0089b.entry.js.map +1 -0
  323. package/dist/native/{p-470588c2.entry.js → p-de2c07a6.entry.js} +3 -3
  324. package/dist/native/p-de2c07a6.entry.js.map +1 -0
  325. package/dist/native/{p-3953464e.entry.js → p-ed488498.entry.js} +2 -2
  326. package/dist/native/p-ef76178b.entry.js +2 -0
  327. package/dist/native/p-ef76178b.entry.js.map +1 -0
  328. package/dist/native/{p-e5de64d5.entry.js → p-f0ddf60b.entry.js} +2 -2
  329. package/dist/native/p-f39803d9.entry.js +2 -0
  330. package/dist/native/p-f39803d9.entry.js.map +1 -0
  331. package/dist/native/p-fb897f7d.entry.js +2 -0
  332. package/dist/native/{p-fc97f071.entry.js.map → p-fb897f7d.entry.js.map} +1 -1
  333. package/dist/native/{p-244f56ac.entry.js → p-fc3bea07.entry.js} +2 -2
  334. package/dist/types/components/nv-calendar/nv-calendar.d.ts +1 -5
  335. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +0 -16
  336. package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +4 -0
  337. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +11 -1
  338. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +47 -26
  339. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +61 -55
  340. package/dist/types/components/nv-fieldslider/nv-fieldslider.d.ts +230 -0
  341. package/dist/types/components/nv-fieldslider/nv-fieldslider.docs.d.ts +4 -0
  342. package/dist/types/components/nv-fieldslider/nv-fieldslider.utils.d.ts +46 -0
  343. package/dist/types/components/nv-fieldslider/partials/field-input.d.ts +45 -0
  344. package/dist/types/components/nv-fieldslider/partials/range-thumb.d.ts +37 -0
  345. package/dist/types/components/nv-fieldslider/partials/single-thumb.d.ts +35 -0
  346. package/dist/types/components/nv-fieldslider/partials/tick-marks.d.ts +28 -0
  347. package/dist/types/components/nv-fieldslider/test/nv-fieldslider.utils.test.d.ts +1 -0
  348. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +1 -0
  349. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  350. package/dist/types/components.d.ts +387 -38
  351. package/dist/types/interfaces/Column.d.ts +5 -1
  352. package/dist/vscode-data.json +121 -9
  353. package/hydrate/index.js +1172 -393
  354. package/hydrate/index.mjs +1172 -393
  355. package/package.json +6 -2
  356. package/dist/cjs/index-9bda5507.js.map +0 -1
  357. package/dist/components/p-1c45c0f2.js.map +0 -1
  358. package/dist/components/p-76646ce9.js +0 -88
  359. package/dist/components/p-76646ce9.js.map +0 -1
  360. package/dist/components/p-854c32dc.js.map +0 -1
  361. package/dist/components/p-9decffb6.js.map +0 -1
  362. package/dist/components/p-f76bb0c3.js.map +0 -1
  363. package/dist/esm/index-1fb7a9a6.js.map +0 -1
  364. package/dist/native/p-2523eead.entry.js +0 -2
  365. package/dist/native/p-2523eead.entry.js.map +0 -1
  366. package/dist/native/p-470588c2.entry.js.map +0 -1
  367. package/dist/native/p-49cac014.entry.js +0 -2
  368. package/dist/native/p-4d164ed6.entry.js +0 -2
  369. package/dist/native/p-4dc1d036.entry.js +0 -2
  370. package/dist/native/p-4e635fa7.entry.js +0 -2
  371. package/dist/native/p-4e635fa7.entry.js.map +0 -1
  372. package/dist/native/p-5d21532a.entry.js +0 -2
  373. package/dist/native/p-7e154bfd.entry.js.map +0 -1
  374. package/dist/native/p-7eba904e.entry.js +0 -2
  375. package/dist/native/p-7eba904e.entry.js.map +0 -1
  376. package/dist/native/p-9135fdf5.entry.js +0 -2
  377. package/dist/native/p-ab002252.js +0 -3
  378. package/dist/native/p-ab002252.js.map +0 -1
  379. package/dist/native/p-ae7ab110.entry.js +0 -2
  380. package/dist/native/p-b94d9f0b.entry.js +0 -2
  381. package/dist/native/p-c71c6f23.entry.js +0 -2
  382. package/dist/native/p-c71c6f23.entry.js.map +0 -1
  383. package/dist/native/p-d9a52884.entry.js +0 -2
  384. package/dist/native/p-d9a52884.entry.js.map +0 -1
  385. package/dist/native/p-f2ef6771.entry.js +0 -2
  386. package/dist/native/p-f5f68992.entry.js +0 -2
  387. package/dist/native/p-f5f68992.entry.js.map +0 -1
  388. package/dist/native/p-fc97f071.entry.js +0 -2
  389. /package/dist/native/{p-7fd4d13d.entry.js.map → p-0323daf6.entry.js.map} +0 -0
  390. /package/dist/native/{p-14c07207.entry.js.map → p-05d95d4d.entry.js.map} +0 -0
  391. /package/dist/native/{p-90e6d9dd.entry.js.map → p-0ec1e2e3.entry.js.map} +0 -0
  392. /package/dist/native/{p-c7b201cd.entry.js.map → p-16a4cdf3.entry.js.map} +0 -0
  393. /package/dist/native/{p-1da72182.entry.js.map → p-19fb0fd0.entry.js.map} +0 -0
  394. /package/dist/native/{p-c0f79bac.entry.js.map → p-221b8f72.entry.js.map} +0 -0
  395. /package/dist/native/{p-0245863d.entry.js.map → p-407fc32d.entry.js.map} +0 -0
  396. /package/dist/native/{p-3cd77d82.entry.js.map → p-4c0d81b0.entry.js.map} +0 -0
  397. /package/dist/native/{p-615947e7.entry.js.map → p-519b4819.entry.js.map} +0 -0
  398. /package/dist/native/{p-7042ba8a.entry.js.map → p-5382eab2.entry.js.map} +0 -0
  399. /package/dist/native/{p-656c56f0.entry.js.map → p-60b204ac.entry.js.map} +0 -0
  400. /package/dist/native/{p-f2ef6771.entry.js.map → p-7092a675.entry.js.map} +0 -0
  401. /package/dist/native/{p-efe6a46c.entry.js.map → p-7c676f2c.entry.js.map} +0 -0
  402. /package/dist/native/{p-b8b6875d.entry.js.map → p-9fba8663.entry.js.map} +0 -0
  403. /package/dist/native/{p-08a75cfa.entry.js.map → p-a2c0f1a7.entry.js.map} +0 -0
  404. /package/dist/native/{p-c67186f8.entry.js.map → p-c930adb7.entry.js.map} +0 -0
  405. /package/dist/native/{p-3b7ef609.entry.js.map → p-cfe0a6c6.entry.js.map} +0 -0
  406. /package/dist/native/{p-4dc1d036.entry.js.map → p-d07ab618.entry.js.map} +0 -0
  407. /package/dist/native/{p-3953464e.entry.js.map → p-ed488498.entry.js.map} +0 -0
  408. /package/dist/native/{p-e5de64d5.entry.js.map → p-f0ddf60b.entry.js.map} +0 -0
  409. /package/dist/native/{p-244f56ac.entry.js.map → p-fc3bea07.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} from '@stencil/core';\nimport {\n WEEK_ABBREVIATIONS,\n CUSTOM_DAY_NAMES,\n CUSTOM_MONTH_NAMES,\n} from '../../utils/constants';\n\nimport {\n getWeekNumber,\n parseDate,\n isSameDate,\n formatDate,\n isSameOrAfter,\n isSameOrBefore,\n} from './nv-calendar.utils';\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 0\n */\n @Prop({ reflect: true })\n readonly firstDayOfWeek: number = 0;\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 (ISO string format)\n * ex: \"2025-03-15\"\n */\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 @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 //#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 //#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 this.currentDate = startDate;\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 this.currentDate = parsedDate;\n }\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.parseDisabledDates();\n\n 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 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 } else {\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 * 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 // Ensure we only move by one month at a time\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n\n // Add the appropriate animation class\n const containers = this.el.querySelectorAll('.calendar-grid');\n containers.forEach(container => {\n // Remove existing animation classes\n container.classList.remove('slide-left', 'slide-right');\n\n // Add the new animation class\n const animationClass = offset > 0 ? 'slide-left' : 'slide-right';\n container.classList.add(animationClass);\n\n // Remove the class after the animation\n setTimeout(() => {\n container.classList.remove(animationClass);\n }, 300); // 300ms corresponds to $slide-duration in the SCSS\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 if (this.selectionType === 'single') {\n this.handleSingleSelection(date);\n } else {\n this.handleRangeSelection(date);\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 this.singleDateChange.emit(formattedDate);\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 this.startDate = date;\n this.endDate = null;\n } else {\n this.endDate = date;\n\n if (this.startDate > this.endDate) {\n [this.startDate, this.endDate] = [this.endDate, this.startDate];\n }\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 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 // If we have custom day names for this locale\n if (CUSTOM_DAY_NAMES[this.locale]) {\n const days = [...CUSTOM_DAY_NAMES[this.locale]];\n // Reorganize the days based on the first day of the week\n const firstDays = days.slice(0, this.firstDayOfWeek);\n const remainingDays = days.slice(this.firstDayOfWeek);\n return [...remainingDays, ...firstDays];\n }\n\n // Otherwise, use the default behavior\n const formatter = new Intl.DateTimeFormat(this.locale, {\n weekday: 'short',\n });\n const days = [...Array(7)].map((_, i) =>\n formatter.format(new Date(2023, 0, i + 1)).toUpperCase(),\n );\n // Reorganize the days based on the first day of the week\n const firstDays = days.slice(0, this.firstDayOfWeek);\n const remainingDays = days.slice(this.firstDayOfWeek);\n return [...remainingDays, ...firstDays];\n };\n\n /**\n * Generates the days of the current month\n * @param {number} offset - Month offset (0 by default)\n * @param {number} totalCalendars - Number of calendars to display (1 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 totalCalendars: number = 1,\n ): Array<{\n /** Day of the month (1 to 31) */\n dayOfMonth: number;\n /** Complete date */\n date: Date;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n }> => {\n const year = this.currentDate.getUTCFullYear();\n const month = this.currentDate.getUTCMonth() + offset;\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 the days of the previous month for the first calendar\n if (offset === 0 && offsetDays > 0) {\n const prevMonthLastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();\n for (let i = offsetDays; i > 0; i--) {\n const date = new Date(\n Date.UTC(year, month - 1, prevMonthLastDay - i + 1),\n );\n days.push({\n dayOfMonth: date.getUTCDate(),\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n });\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 });\n }\n\n // Add the days of the next month only for the last calendar\n if (offset === totalCalendars - 1) {\n const nextMonthDaysNeeded = 7 - (days.length % 7 || 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 });\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 currentMonth = this.currentDate.getUTCMonth();\n\n // Calculate the difference considering the calendar offset\n const monthDiff = selectedMonth - ((currentMonth + calendarOffset) % 12);\n\n const newDate = new Date(this.currentDate);\n newDate.setUTCMonth(newDate.getUTCMonth() + monthDiff);\n this.currentDate = newDate;\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.setUTCFullYear(year);\n newDate.setUTCMonth(newDate.getUTCMonth() + calendarOffset);\n this.currentDate = 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, this.numberOfCalendars);\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 this.singleDateChange.emit(\n formatDate(newDate, { dateFormat: this.dateFormat }),\n );\n this.singleValue = formatDate(newDate, { dateFormat: this.dateFormat });\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 this.rangeDateChange.emit({\n start: formatDate(start, { dateFormat: this.dateFormat }),\n end: formatDate(end, { dateFormat: this.dateFormat }),\n });\n this.rangeValue = {\n start: formatDate(start, { dateFormat: this.dateFormat }),\n end: formatDate(end, { dateFormat: this.dateFormat }),\n };\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(end);\n }\n };\n\n /**\n * Method to force the complete calendar update (and fix the persistent hover problem)\n * @param {Date} newDate - Date to force\n */\n private forceCalendarUpdate = newDate => {\n this.currentDate = new Date(newDate);\n this.currentDate = new Date(this.currentDate); // Force a re-render\n\n // Reset visually the hover/touch effect\n requestAnimationFrame(() => {\n const days = document.querySelectorAll('.day');\n\n days.forEach(el => {\n (el as HTMLElement).classList.remove('hover', 'active', 'touched');\n (el as HTMLElement).style.pointerEvents = 'none';\n });\n\n // Add specific touch handling (for mobile)\n document.body.addEventListener('touchstart', this.clearTouchState, {\n passive: true,\n });\n\n // Reset the touch state after 50ms\n setTimeout(() => {\n days.forEach(el => {\n (el as HTMLElement).style.pointerEvents = '';\n });\n }, 50);\n });\n };\n\n /**\n * Function to reset the touch effect (Mobile fix)\n */\n private clearTouchState = () => {\n document.querySelectorAll('.day').forEach(el => {\n (el as HTMLElement).classList.remove('touched');\n });\n\n // Remove the listener after the first interaction\n document.body.removeEventListener('touchstart', this.clearTouchState);\n };\n\n /**\n * Handles month change with an offset\n * @param {number} direction - Direction (-1 for previous, 1 for next)\n * @returns {Function} Change month handler\n */\n private getChangeMonthHandler = (direction: number) => {\n return () => this.changeMonth(direction);\n };\n\n /**\n * Handles month change from an event (ex: dropdown)\n * @param {number} offset - Month offset (0 by default)\n * @returns {Function} Change month handler\n */\n private getHandleMonthChange = (offset: number) => {\n return (event: Event) => this.handleMonthChange(event, offset);\n };\n\n /**\n * Handles year change from an event (ex: dropdown)\n * @param {number} offset - Year offset (0 by default)\n * @returns {Function} Change year handler\n */\n private getHandleYearChange = (offset: number) => {\n return (event: Event) => this.handleYearChange(event, offset);\n };\n\n /**\n * Handles day click\n * @param {Date} date - Date to handle\n * @param {boolean} isDisabled - Whether the date is disabled\n * @returns {Function} Day click handler\n */\n private getDayClickHandler = (\n date: Date,\n isDisabled: boolean,\n ): (() => void) | undefined => {\n return isDisabled ? undefined : () => this.handleDateSelection(date);\n };\n\n /**\n * Handles shortcut selection\n * @param {Object} shortcut - Shortcut to handle\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 * @returns {Function} Shortcut selection handler\n */\n private getShortcutHandler = (shortcut: (typeof this.shortcuts)[number]) => {\n return () => this.applyShortcut(shortcut);\n };\n\n /**\n * Handles week selection\n * @param {Date[]} dates - Dates to handle\n * @param {number} index - Calendar index\n * @returns {Function} Week selection handler\n */\n private getWeekSelectionHandler = (dates: Date[], index: number) => {\n return () => {\n if (this.selectionType === 'range') {\n this.handleWeekSelection(dates, index);\n }\n };\n };\n\n /**\n * Resets the current selection\n */\n private resetSelection = (): void => {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n this.singleValue = null;\n this.singleDateChange.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n this.rangeValue = null;\n this.rangeDateChange.emit({ start: '', end: '' });\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 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 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 //#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 <div class=\"header\">\n {/* If multiple calendars, display the left button only on the first calendar */}\n {this.numberOfCalendars > 1 && index === 0 && (\n <nv-iconbutton\n class=\"nav-left\"\n emphasis=\"lower\"\n name=\"chevron-left\"\n onClick={this.getChangeMonthHandler(-1)}\n ></nv-iconbutton>\n )}\n\n <div class=\"date-controls\">\n <select\n class=\"month-select mr-4\"\n onChange={this.getHandleMonthChange(offset)}\n >\n {this.months.map(month => (\n <option\n key={month.value}\n value={month.value}\n selected={\n month.value === (this.currentDate.getUTCMonth() + offset) % 12\n }\n >\n {month.label}\n </option>\n ))}\n </select>\n <input\n type=\"number\"\n class=\"year-input\"\n min=\"1950\"\n max=\"2100\"\n value={\n this.currentDate.getUTCFullYear() +\n Math.floor((this.currentDate.getUTCMonth() + offset) / 12)\n }\n onChange={this.getHandleYearChange(offset)}\n />\n </div>\n\n {/* If a single calendar, display the navigation buttons side by side */}\n {this.numberOfCalendars === 1 && (\n <div class=\"nav-buttons\">\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-left\"\n onClick={this.getChangeMonthHandler(-1)}\n ></nv-iconbutton>\n\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-right\"\n onClick={this.getChangeMonthHandler(1)}\n ></nv-iconbutton>\n </div>\n )}\n\n {/* If multiple calendars, display the right button only on the last calendar */}\n {this.numberOfCalendars > 1 && index === this.numberOfCalendars - 1 && (\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-right\"\n onClick={this.getChangeMonthHandler(1)}\n class=\"nav-right\"\n ></nv-iconbutton>\n )}\n </div>\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 <div class=\"week-numbers\">\n <div class=\"week-header\">{this.getLocalizedWeekText()}</div>\n {weeks.map((week, weekIndex) => {\n const dates = week.map(d => d.date);\n return (\n <div\n class={`week-number ${\n this.selectionType === 'range' ? 'clickable' : ''\n }`}\n onClick={this.getWeekSelectionHandler(dates, index)}\n key={`week-${weekIndex}`}\n >\n {getWeekNumber(week.find(d => d.date)?.date || new Date())}\n </div>\n );\n })}\n </div>\n );\n };\n\n private renderDaysGrid = (\n /** Days to render */\n days: Array<{\n /** Date */\n date: Date;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** Day of the month (1 to 31) */\n dayOfMonth: number;\n }>,\n ) => {\n return (\n <div class=\"days-grid\">\n {days.map(day => {\n const date = day.date;\n if (!date) return null;\n\n const isSelected =\n this.selectionType === 'single' &&\n isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });\n const isInRange = this.isDateInRange(date);\n const isStart = isSameDate(date, this.startDate, {\n isUTCMode: this.isUTCMode,\n });\n const isEnd = isSameDate(date, this.endDate, {\n isUTCMode: this.isUTCMode,\n });\n const isToday = this.isToday(date);\n const isOutsideMonth = !day.isCurrentMonth;\n\n const dayClasses = [\n 'day',\n isSelected ? 'selected' : '',\n isStart ? 'range-start' : '',\n isEnd ? 'range-end' : '',\n isInRange ? 'in-range' : '',\n day.isDisabled ? 'disabled' : '',\n isOutsideMonth ? 'outside-month' : '',\n isToday ? 'is-today' : '',\n ];\n\n return (\n <div\n class={dayClasses.filter(Boolean).join(' ')}\n onClick={this.getDayClickHandler(date, day.isDisabled)}\n aria-disabled={day.isDisabled}\n key={`day-${date.toISOString()}`}\n >\n {day.dayOfMonth}\n </div>\n );\n })}\n </div>\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, this.numberOfCalendars);\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return (\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" key={`calendar-${index}`}>\n {this.renderHeader(offset, index)}\n <div class=\"calendar-grid\">\n {this.showWeekNumbers && this.renderWeekNumbers(weeks, index)}\n <div class=\"days-container\">\n <div class=\"days-header\">\n {this.getDayNames().map(day => (\n <div class=\"day-header\">{day}</div>\n ))}\n </div>\n {this.renderDaysGrid(days)}\n </div>\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 <div\n class={`shortcuts-container shortcuts-placement-${this.shortcutsPlacement}`}\n >\n {this.shortcuts.map(shortcut => (\n <nv-button\n emphasis=\"lower\"\n size=\"xs\"\n aria-label={shortcut.label}\n onClick={this.getShortcutHandler(shortcut)}\n >\n {shortcut.label}\n </nv-button>\n ))}\n </div>\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 <nv-button emphasis=\"low\" size=\"xs\" onClick={this.resetSelection}>\n Cancel\n </nv-button>\n <nv-button size=\"xs\" onClick={this.confirmSelection}>\n OK\n </nv-button>\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} from '@stencil/core';\nimport {\n WEEK_ABBREVIATIONS,\n CUSTOM_DAY_NAMES,\n CUSTOM_MONTH_NAMES,\n} from '../../utils/constants';\n\nimport {\n getWeekNumber,\n parseDate,\n isSameDate,\n formatDate,\n isSameOrAfter,\n isSameOrBefore,\n} from './nv-calendar.utils';\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 0\n */\n @Prop({ reflect: true })\n readonly firstDayOfWeek: number = 0;\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 (ISO string format)\n * ex: \"2025-03-15\"\n */\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 @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 //#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 //#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) {\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) {\n this.currentDate = parsedDate;\n }\n }\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.parseDisabledDates();\n\n 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 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 } else {\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 * 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 // Ensure we only move by one month at a time\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n\n // Add the appropriate animation class\n const containers = this.el.querySelectorAll('.calendar-grid');\n containers.forEach(container => {\n // Remove existing animation classes\n container.classList.remove('slide-left', 'slide-right');\n\n // Add the new animation class\n const animationClass = offset > 0 ? 'slide-left' : 'slide-right';\n container.classList.add(animationClass);\n\n // Remove the class after the animation\n setTimeout(() => {\n container.classList.remove(animationClass);\n }, 300); // 300ms corresponds to $slide-duration in the SCSS\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 if (this.selectionType === 'single') {\n this.handleSingleSelection(date);\n } else {\n this.handleRangeSelection(date);\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 this.singleDateChange.emit(formattedDate);\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 this.startDate = date;\n this.endDate = null;\n } else {\n this.endDate = date;\n\n if (this.startDate > this.endDate) {\n [this.startDate, this.endDate] = [this.endDate, this.startDate];\n }\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 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 // If we have custom day names for this locale\n if (CUSTOM_DAY_NAMES[this.locale]) {\n const days = [...CUSTOM_DAY_NAMES[this.locale]];\n // Reorganize the days based on the first day of the week\n const firstDays = days.slice(0, this.firstDayOfWeek);\n const remainingDays = days.slice(this.firstDayOfWeek);\n return [...remainingDays, ...firstDays];\n }\n\n // Otherwise, use the default behavior\n const formatter = new Intl.DateTimeFormat(this.locale, {\n weekday: 'short',\n });\n const days = [...Array(7)].map((_, i) =>\n formatter.format(new Date(2023, 0, i + 1)).toUpperCase(),\n );\n // Reorganize the days based on the first day of the week\n const firstDays = days.slice(0, this.firstDayOfWeek);\n const remainingDays = days.slice(this.firstDayOfWeek);\n return [...remainingDays, ...firstDays];\n };\n\n /**\n * Generates the days of the current month\n * @param {number} offset - Month offset (0 by default)\n * @param {number} totalCalendars - Number of calendars to display (1 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 totalCalendars: number = 1,\n ): Array<{\n /** Day of the month (1 to 31) */\n dayOfMonth: number;\n /** Complete date */\n date: Date;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n }> => {\n const year = this.currentDate.getUTCFullYear();\n const month = this.currentDate.getUTCMonth() + offset;\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 the days of the previous month for the first calendar\n if (offset === 0 && offsetDays > 0) {\n const prevMonthLastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();\n for (let i = offsetDays; i > 0; i--) {\n const date = new Date(\n Date.UTC(year, month - 1, prevMonthLastDay - i + 1),\n );\n days.push({\n dayOfMonth: date.getUTCDate(),\n date,\n isCurrentMonth: false,\n isDisabled: this.isDateDisabled(date),\n });\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 });\n }\n\n // Add the days of the next month only for the last calendar\n if (offset === totalCalendars - 1) {\n const nextMonthDaysNeeded = 7 - (days.length % 7 || 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 });\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 currentMonth = this.currentDate.getUTCMonth();\n\n // Calculate the difference considering the calendar offset\n const monthDiff = selectedMonth - ((currentMonth + calendarOffset) % 12);\n\n const newDate = new Date(this.currentDate);\n newDate.setUTCMonth(newDate.getUTCMonth() + monthDiff);\n this.currentDate = newDate;\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.setUTCFullYear(year);\n newDate.setUTCMonth(newDate.getUTCMonth() + calendarOffset);\n this.currentDate = 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, this.numberOfCalendars);\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 this.singleDateChange.emit(\n formatDate(newDate, { dateFormat: this.dateFormat }),\n );\n this.singleValue = formatDate(newDate, { dateFormat: this.dateFormat });\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 this.rangeDateChange.emit({\n start: formatDate(start, { dateFormat: this.dateFormat }),\n end: formatDate(end, { dateFormat: this.dateFormat }),\n });\n this.rangeValue = {\n start: formatDate(start, { dateFormat: this.dateFormat }),\n end: formatDate(end, { dateFormat: this.dateFormat }),\n };\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 * Handles month change with an offset\n * @param {number} direction - Direction (-1 for previous, 1 for next)\n * @returns {Function} Change month handler\n */\n private getChangeMonthHandler = (direction: number) => {\n return () => this.changeMonth(direction);\n };\n\n /**\n * Handles month change from an event (ex: dropdown)\n * @param {number} offset - Month offset (0 by default)\n * @returns {Function} Change month handler\n */\n private getHandleMonthChange = (offset: number) => {\n return (event: Event) => this.handleMonthChange(event, offset);\n };\n\n /**\n * Handles year change from an event (ex: dropdown)\n * @param {number} offset - Year offset (0 by default)\n * @returns {Function} Change year handler\n */\n private getHandleYearChange = (offset: number) => {\n return (event: Event) => this.handleYearChange(event, offset);\n };\n\n /**\n * Handles day click\n * @param {Date} date - Date to handle\n * @param {boolean} isDisabled - Whether the date is disabled\n * @returns {Function} Day click handler\n */\n private getDayClickHandler = (\n date: Date,\n isDisabled: boolean,\n ): (() => void) | undefined => {\n return isDisabled ? undefined : () => this.handleDateSelection(date);\n };\n\n /**\n * Handles shortcut selection\n * @param {Object} shortcut - Shortcut to handle\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 * @returns {Function} Shortcut selection handler\n */\n private getShortcutHandler = (shortcut: (typeof this.shortcuts)[number]) => {\n return () => this.applyShortcut(shortcut);\n };\n\n /**\n * Handles week selection\n * @param {Date[]} dates - Dates to handle\n * @param {number} index - Calendar index\n * @returns {Function} Week selection handler\n */\n private getWeekSelectionHandler = (dates: Date[], index: number) => {\n return () => {\n if (this.selectionType === 'range') {\n this.handleWeekSelection(dates, index);\n }\n };\n };\n\n /**\n * Resets the current selection\n */\n private resetSelection = (): void => {\n if (this.selectionType === 'single') {\n this.selectedDate = null;\n this.singleValue = null;\n this.singleDateChange.emit('');\n } else {\n this.startDate = null;\n this.endDate = null;\n this.rangeValue = null;\n this.rangeDateChange.emit({ start: '', end: '' });\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 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 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 //#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 <div class=\"header\">\n {/* If multiple calendars, display the left button only on the first calendar */}\n {this.numberOfCalendars > 1 && index === 0 && (\n <nv-iconbutton\n class=\"nav-left\"\n emphasis=\"lower\"\n name=\"chevron-left\"\n onClick={this.getChangeMonthHandler(-1)}\n ></nv-iconbutton>\n )}\n\n <div class=\"date-controls\">\n <select\n class=\"month-select mr-4\"\n onChange={this.getHandleMonthChange(offset)}\n >\n {this.months.map(month => (\n <option\n key={month.value}\n value={month.value}\n selected={\n month.value === (this.currentDate.getUTCMonth() + offset) % 12\n }\n >\n {month.label}\n </option>\n ))}\n </select>\n <input\n type=\"number\"\n class=\"year-input\"\n min=\"1950\"\n max=\"2100\"\n value={\n this.currentDate.getUTCFullYear() +\n Math.floor((this.currentDate.getUTCMonth() + offset) / 12)\n }\n onChange={this.getHandleYearChange(offset)}\n />\n </div>\n\n {/* If a single calendar, display the navigation buttons side by side */}\n {this.numberOfCalendars === 1 && (\n <div class=\"nav-buttons\">\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-left\"\n onClick={this.getChangeMonthHandler(-1)}\n ></nv-iconbutton>\n\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-right\"\n onClick={this.getChangeMonthHandler(1)}\n ></nv-iconbutton>\n </div>\n )}\n\n {/* If multiple calendars, display the right button only on the last calendar */}\n {this.numberOfCalendars > 1 && index === this.numberOfCalendars - 1 && (\n <nv-iconbutton\n emphasis=\"lower\"\n name=\"chevron-right\"\n onClick={this.getChangeMonthHandler(1)}\n class=\"nav-right\"\n ></nv-iconbutton>\n )}\n </div>\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 <div class=\"week-numbers\">\n <div class=\"week-header\">{this.getLocalizedWeekText()}</div>\n {weeks.map((week, weekIndex) => {\n const dates = week.map(d => d.date);\n return (\n <div\n class={`week-number ${\n this.selectionType === 'range' ? 'clickable' : ''\n }`}\n onClick={this.getWeekSelectionHandler(dates, index)}\n key={`week-${weekIndex}`}\n >\n {getWeekNumber(week.find(d => d.date)?.date || new Date())}\n </div>\n );\n })}\n </div>\n );\n };\n\n private renderDaysGrid = (\n /** Days to render */\n days: Array<{\n /** Date */\n date: Date;\n /** If the day belongs to the current month */\n isCurrentMonth: boolean;\n /** If the day is disabled */\n isDisabled: boolean;\n /** Day of the month (1 to 31) */\n dayOfMonth: number;\n }>,\n ) => {\n return (\n <div class=\"days-grid\">\n {days.map(day => {\n const date = day.date;\n if (!date) return null;\n\n const isSelected =\n this.selectionType === 'single' &&\n isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });\n const isInRange = this.isDateInRange(date);\n const isStart = isSameDate(date, this.startDate, {\n isUTCMode: this.isUTCMode,\n });\n const isEnd = isSameDate(date, this.endDate, {\n isUTCMode: this.isUTCMode,\n });\n const isToday = this.isToday(date);\n const isOutsideMonth = !day.isCurrentMonth;\n\n const dayClasses = [\n 'day',\n isSelected ? 'selected' : '',\n isStart ? 'range-start' : '',\n isEnd ? 'range-end' : '',\n isInRange ? 'in-range' : '',\n day.isDisabled ? 'disabled' : '',\n isOutsideMonth ? 'outside-month' : '',\n isToday ? 'is-today' : '',\n ];\n\n return (\n <div\n class={dayClasses.filter(Boolean).join(' ')}\n onClick={this.getDayClickHandler(date, day.isDisabled)}\n aria-disabled={day.isDisabled}\n key={`day-${date.toISOString()}`}\n >\n {day.dayOfMonth}\n </div>\n );\n })}\n </div>\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, this.numberOfCalendars);\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return (\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" key={`calendar-${index}`}>\n {this.renderHeader(offset, index)}\n <div class=\"calendar-grid\">\n {this.showWeekNumbers && this.renderWeekNumbers(weeks, index)}\n <div class=\"days-container\">\n <div class=\"days-header\">\n {this.getDayNames().map(day => (\n <div class=\"day-header\">{day}</div>\n ))}\n </div>\n {this.renderDaysGrid(days)}\n </div>\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 <div\n class={`shortcuts-container shortcuts-placement-${this.shortcutsPlacement}`}\n >\n {this.shortcuts.map(shortcut => (\n <nv-button\n emphasis=\"lower\"\n size=\"xs\"\n aria-label={shortcut.label}\n onClick={this.getShortcutHandler(shortcut)}\n >\n {shortcut.label}\n </nv-button>\n ))}\n </div>\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 <nv-button emphasis=\"low\" size=\"xs\" onClick={this.resetSelection}>\n Cancel\n </nv-button>\n <nv-button size=\"xs\" onClick={this.confirmSelection}>\n OK\n </nv-button>\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"]}
@@ -22,18 +22,9 @@ const NvDatagridDocs = {
22
22
  args: {
23
23
  noDataMessage: 'No element available to display.',
24
24
  columns: [
25
- {
26
- header: 'Name',
27
- accessor: 'name',
28
- },
29
- {
30
- header: 'Age',
31
- accessor: 'age',
32
- },
33
- {
34
- header: 'Email',
35
- accessor: 'email',
36
- },
25
+ { header: 'Name', accessor: 'name' },
26
+ { header: 'Age', accessor: 'age' },
27
+ { header: 'Email', accessor: 'email' },
37
28
  ],
38
29
  },
39
30
  template: h("nv-datagrid", { "data-storybook-args": true }),
@@ -50,13 +41,18 @@ const NvDatagridDocs = {
50
41
  template: h("nv-datagrid", { "data-storybook-args": true }),
51
42
  },
52
43
  {
53
- name: nameof(x => x.columnsJson),
44
+ name: 'ColumnGroup',
54
45
  args: {
55
- columnsJson: `[
56
- {"header":"Name","accessor":"name"},
57
- {"header":"Age","accessor":"age"},
58
- {"header":"Email","accessor":"email"}
59
- ]`,
46
+ columns: [
47
+ { header: 'FirstName', accessor: 'firstName', group: 'Name' },
48
+ { header: 'LastName', accessor: 'lastName', group: 'Name' },
49
+ { header: 'Age', accessor: 'age' },
50
+ { header: 'Email', accessor: 'email' },
51
+ { header: 'Street', accessor: 'street', group: 'Address' },
52
+ { header: 'StreetNr', accessor: 'streetNr', group: 'Address' },
53
+ { header: 'ZipCode', accessor: 'zipCode', group: 'Address' },
54
+ { header: 'City', accessor: 'city', group: 'Address' },
55
+ ],
60
56
  },
61
57
  template: h("nv-datagrid", { "data-storybook-args": true }),
62
58
  },
@@ -70,16 +66,6 @@ const NvDatagridDocs = {
70
66
  },
71
67
  template: h("nv-datagrid", { "data-storybook-args": true }),
72
68
  },
73
- {
74
- name: nameof(x => x.dataJson),
75
- args: {
76
- dataJson: `[
77
- { "name": "Alice", "age": "25", "email": "alice@mail.com" },
78
- { "name": "Bob", "age": "30", "email": "bob@mail.com" }
79
- ]`,
80
- },
81
- template: h("nv-datagrid", { "data-storybook-args": true }),
82
- },
83
69
  {
84
70
  name: nameof(x => x.autoGenerateColumns),
85
71
  args: {
@@ -100,7 +86,7 @@ const NvDatagridDocs = {
100
86
  template: h("nv-datagrid", { "data-storybook-args": true }),
101
87
  },
102
88
  {
103
- name: 'ColumnsArrayAndDataArray',
89
+ name: 'ColumnsAndData',
104
90
  args: {
105
91
  columns: [
106
92
  { header: 'Name', accessor: 'name' },
@@ -115,17 +101,40 @@ const NvDatagridDocs = {
115
101
  template: h("nv-datagrid", { "data-storybook-args": true }),
116
102
  },
117
103
  {
118
- name: 'ColumnsJSONAndDataJSON',
104
+ name: 'ColumnGroupAndData',
119
105
  args: {
120
- columnsJson: `[
121
- {"header":"Name","accessor":"name"},
122
- {"header":"Age","accessor":"age"},
123
- {"header":"Email","accessor":"email"}
124
- ]`,
125
- dataJson: `[
126
- { "name": "Alice", "age": "25", "email": "alice@mail.com" },
127
- { "name": "Bob", "age": "30", "email": "bob@mail.com" }
128
- ]`,
106
+ columns: [
107
+ { header: 'FirstName', accessor: 'firstName', group: 'Name' },
108
+ { header: 'LastName', accessor: 'lastName', group: 'Name' },
109
+ { header: 'Age', accessor: 'age' },
110
+ { header: 'Email', accessor: 'email' },
111
+ { header: 'Street', accessor: 'street', group: 'Address' },
112
+ { header: 'StreetNr', accessor: 'streetNr', group: 'Address' },
113
+ { header: 'ZipCode', accessor: 'zipCode', group: 'Address' },
114
+ { header: 'City', accessor: 'city', group: 'Address' },
115
+ ],
116
+ data: [
117
+ {
118
+ firstName: 'Alice',
119
+ lastName: 'Dupont',
120
+ age: '25',
121
+ email: 'alice@mail.com',
122
+ street: 'SomeStreet',
123
+ streetNr: '1',
124
+ zipCode: '1000',
125
+ city: 'Bruxelles',
126
+ },
127
+ {
128
+ firstName: 'Bob',
129
+ lastName: 'Debouwer',
130
+ age: '30',
131
+ email: 'bob@mail.com',
132
+ street: 'AnyStreet',
133
+ streetNr: '203',
134
+ zipCode: '1000',
135
+ city: 'Bruxelles',
136
+ },
137
+ ],
129
138
  },
130
139
  template: h("nv-datagrid", { "data-storybook-args": true }),
131
140
  },
@@ -139,6 +148,36 @@ const NvDatagridDocs = {
139
148
  },
140
149
  template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
141
150
  },
151
+ {
152
+ name: 'WithDataAndTemplateAndColumnGroup',
153
+ args: {
154
+ data: [
155
+ {
156
+ id: 1,
157
+ firstName: 'Alice',
158
+ lastName: 'Dupont',
159
+ age: '25',
160
+ email: 'alice@mail.com',
161
+ street: 'SomeStreet',
162
+ streetNr: '1',
163
+ zipCode: '1000',
164
+ city: 'Bruxelles',
165
+ },
166
+ {
167
+ id: 2,
168
+ firstName: 'Bob',
169
+ lastName: 'Debouwer',
170
+ age: '30',
171
+ email: 'bob@mail.com',
172
+ street: 'AnyStreet',
173
+ streetNr: '203',
174
+ zipCode: '1000',
175
+ city: 'Bruxelles',
176
+ },
177
+ ],
178
+ },
179
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "street", header: "Street", group: "Address" }), h("nv-datagridcolumn", { accessor: "streetNr", header: "Street Number", group: "Address" }), h("nv-datagridcolumn", { accessor: "zipCode", header: "Zip Code", group: "Address" }), h("nv-datagridcolumn", { accessor: "city", header: "City", group: "Address" }), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
180
+ },
142
181
  {
143
182
  name: 'WithDataAndTemplateComplexData',
144
183
  args: {
@@ -179,6 +218,50 @@ const NvDatagridDocs = {
179
218
  },
180
219
  template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
181
220
  },
221
+ {
222
+ name: 'WithDataAndTemplateComplexDataAndColumnGroup',
223
+ args: {
224
+ data: [
225
+ {
226
+ id: 1,
227
+ firstName: 'John',
228
+ lastName: 'Doe',
229
+ age: 25,
230
+ email: 'john.doe@mail.com',
231
+ address: { city: 'New York', country: 'USA' },
232
+ status: { label: 'success', color: '1', icon: 'check' },
233
+ },
234
+ {
235
+ id: 2,
236
+ firstName: 'Jane',
237
+ lastName: 'Doe',
238
+ age: 30,
239
+ email: 'jane.doe@mail.com',
240
+ address: { city: 'Los Angeles', country: 'USA' },
241
+ status: { label: 'warning', color: '2', icon: 'alert-circle' },
242
+ },
243
+ {
244
+ id: 3,
245
+ firstName: 'John',
246
+ lastName: 'Smith',
247
+ age: 35,
248
+ email: 'john.smith@mail.com',
249
+ address: { city: 'London', country: 'UK' },
250
+ status: { label: 'error', color: '3', icon: 'loader' },
251
+ },
252
+ {
253
+ id: 4,
254
+ firstName: 'Jane',
255
+ lastName: 'Smith',
256
+ age: 40,
257
+ email: 'jane.smith@mail.com',
258
+ address: { city: 'Paris', country: 'France' },
259
+ status: { label: 'info', color: '5', icon: 'info-circle' },
260
+ },
261
+ ],
262
+ },
263
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address", group: "Contact" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address", group: "Contact" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
264
+ },
182
265
  {
183
266
  name: nameof(x => x.enableGlobalFilter),
184
267
  args: {
@@ -685,9 +768,9 @@ const NvDatagridDocs = {
685
768
  name: 'SlotBefore',
686
769
  args: {
687
770
  columns: [
688
- { header: 'Name', accessor: 'name' },
689
- { header: 'Age', accessor: 'age' },
690
- { header: 'Email', accessor: 'email' },
771
+ { header: 'Name', accessor: 'name', group: '' },
772
+ { header: 'Age', accessor: 'age', group: '' },
773
+ { header: 'Email', accessor: 'email', group: '' },
691
774
  ],
692
775
  data: [
693
776
  { name: 'Alice', age: '25', email: 'alice@mail.com' },
@@ -700,9 +783,9 @@ const NvDatagridDocs = {
700
783
  name: 'SlotAfter',
701
784
  args: {
702
785
  columns: [
703
- { header: 'Name', accessor: 'name' },
704
- { header: 'Age', accessor: 'age' },
705
- { header: 'Email', accessor: 'email' },
786
+ { header: 'Name', accessor: 'name', group: '' },
787
+ { header: 'Age', accessor: 'age', group: '' },
788
+ { header: 'Email', accessor: 'email', group: '' },
706
789
  ],
707
790
  data: [
708
791
  { name: 'Alice', age: '25', email: 'alice@mail.com' },
@@ -715,9 +798,9 @@ const NvDatagridDocs = {
715
798
  name: 'SlotBeforeAndAfter',
716
799
  args: {
717
800
  columns: [
718
- { header: 'Name', accessor: 'name' },
719
- { header: 'Age', accessor: 'age' },
720
- { header: 'Email', accessor: 'email' },
801
+ { header: 'Name', accessor: 'name', group: '' },
802
+ { header: 'Age', accessor: 'age', group: '' },
803
+ { header: 'Email', accessor: 'email', group: '' },
721
804
  ],
722
805
  data: [
723
806
  { name: 'Alice', age: '25', email: 'alice@mail.com' },