@nova-design-system/nova-webcomponents 3.1.0 → 3.3.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 (474) hide show
  1. package/dist/cjs/{index-9bda5507.js → index-c56424e5.js} +34 -186
  2. package/dist/cjs/index-c56424e5.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 -23
  7. package/dist/cjs/native.cjs.js.map +1 -1
  8. package/dist/cjs/nv-alert.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  11. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  12. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  14. package/dist/cjs/nv-calendar.cjs.entry.js +384 -172
  15. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  17. package/dist/cjs/nv-datagrid.cjs.entry.js +95 -103
  18. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  20. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-dialog.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-fielddate.cjs.entry.js +45 -11
  25. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-fielddaterange.cjs.entry.js +128 -42
  27. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nv-fielddropdown.cjs.entry.js +84 -60
  29. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  31. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +116 -104
  32. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  34. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  36. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fieldradio.cjs.entry.js +1 -1
  38. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  39. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nv-fieldslider.cjs.entry.js +668 -0
  41. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -0
  42. package/dist/cjs/nv-fieldtext.cjs.entry.js +5 -5
  43. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +5 -5
  45. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldtime.cjs.entry.js +11 -11
  47. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
  51. package/dist/cjs/nv-menu.cjs.entry.js +2 -2
  52. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  54. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  56. package/dist/cjs/nv-table.cjs.entry.js +3 -3
  57. package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -1
  58. package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
  59. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -3
  60. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  61. package/dist/collection/collection-manifest.json +1 -0
  62. package/dist/collection/components/nv-calendar/nv-calendar.css +6 -2
  63. package/dist/collection/components/nv-calendar/nv-calendar.js +247 -169
  64. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  65. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +12 -3
  66. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  67. package/dist/collection/components/nv-calendar/partials/calendar-actions.js +11 -0
  68. package/dist/collection/components/nv-calendar/partials/calendar-actions.js.map +1 -0
  69. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +24 -0
  70. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -0
  71. package/dist/collection/components/nv-calendar/partials/calendar-header.js +38 -0
  72. package/dist/collection/components/nv-calendar/partials/calendar-header.js.map +1 -0
  73. package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js +22 -0
  74. package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js.map +1 -0
  75. package/dist/collection/components/nv-calendar/partials/day-cell.js +31 -0
  76. package/dist/collection/components/nv-calendar/partials/day-cell.js.map +1 -0
  77. package/dist/collection/components/nv-calendar/partials/index.js +7 -0
  78. package/dist/collection/components/nv-calendar/partials/index.js.map +1 -0
  79. package/dist/collection/components/nv-calendar/partials/week-numbers.js +36 -0
  80. package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +1 -0
  81. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +692 -651
  82. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
  83. package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js +169 -0
  84. package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js.map +1 -0
  85. package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +262 -0
  86. package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +1 -0
  87. package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js +208 -0
  88. package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js.map +1 -0
  89. package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +355 -0
  90. package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +1 -0
  91. package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +250 -0
  92. package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +1 -0
  93. package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js +217 -0
  94. package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js.map +1 -0
  95. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +131 -48
  96. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  97. package/dist/collection/components/nv-datagrid/nv-datagrid.js +94 -152
  98. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  99. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +20 -1
  100. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  101. package/dist/collection/components/nv-fielddate/nv-fielddate.js +56 -16
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  103. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +51 -1
  104. package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js +196 -0
  105. package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js.map +1 -0
  106. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +165 -41
  107. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  108. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +51 -1
  109. package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js +137 -0
  110. package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js.map +1 -0
  111. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +8 -0
  112. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  113. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +173 -106
  114. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  115. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +77 -1
  116. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +202 -190
  117. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  118. package/dist/collection/components/nv-fieldmultiselect/{nv-fieldmultiselect.css → styles/nv-fieldmultiselect.css} +61 -4
  119. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +51 -1
  120. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +51 -1
  121. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +51 -1
  122. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +264 -0
  123. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -0
  124. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +1036 -0
  125. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -0
  126. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +77 -0
  127. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +1 -0
  128. package/dist/collection/components/nv-fieldslider/partials/field-input.js +33 -0
  129. package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -0
  130. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +34 -0
  131. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +1 -0
  132. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +18 -0
  133. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +1 -0
  134. package/dist/collection/components/nv-fieldslider/partials/tick-marks.js +18 -0
  135. package/dist/collection/components/nv-fieldslider/partials/tick-marks.js.map +1 -0
  136. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +338 -0
  137. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +159 -0
  138. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +1 -0
  139. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +59 -1
  140. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  141. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  142. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +4 -3
  143. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  144. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +45 -1
  145. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  146. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  147. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +51 -1
  148. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  149. package/dist/collection/components/nv-icon/nv-icons.js +1 -0
  150. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  151. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  152. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  153. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  154. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  155. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  156. package/dist/collection/components/nv-row/nv-row.js +1 -1
  157. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  158. package/dist/collection/components/nv-table/nv-table.js +2 -2
  159. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  160. package/dist/collection/components/nv-tooltip/nv-tooltip.css +1 -0
  161. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  162. package/dist/collection/interfaces/Column.js.map +1 -1
  163. package/dist/components/index.js +2 -1
  164. package/dist/components/index.js.map +1 -1
  165. package/dist/components/nv-alert.js +2 -2
  166. package/dist/components/nv-avatar.js +2 -2
  167. package/dist/components/nv-badge.js +1 -1
  168. package/dist/components/nv-breadcrumb.js +3 -3
  169. package/dist/components/nv-breadcrumbs.js +1 -1
  170. package/dist/components/nv-button.js +1 -1
  171. package/dist/components/nv-calendar.js +1 -1
  172. package/dist/components/nv-col.js +1 -1
  173. package/dist/components/nv-datagrid.js +97 -109
  174. package/dist/components/nv-datagrid.js.map +1 -1
  175. package/dist/components/nv-datagridcolumn.js +4 -3
  176. package/dist/components/nv-datagridcolumn.js.map +1 -1
  177. package/dist/components/nv-dialog.js +6 -6
  178. package/dist/components/nv-dialogfooter.js +1 -1
  179. package/dist/components/nv-dialogheader.js +1 -1
  180. package/dist/components/nv-fieldcheckbox.js +1 -1
  181. package/dist/components/nv-fielddate.js +53 -25
  182. package/dist/components/nv-fielddate.js.map +1 -1
  183. package/dist/components/nv-fielddaterange.js +137 -57
  184. package/dist/components/nv-fielddaterange.js.map +1 -1
  185. package/dist/components/nv-fielddropdown.js +98 -72
  186. package/dist/components/nv-fielddropdown.js.map +1 -1
  187. package/dist/components/nv-fielddropdownitem.js +1 -1
  188. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  189. package/dist/components/nv-fieldmultiselect.js +132 -120
  190. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  191. package/dist/components/nv-fieldnumber.js +5 -5
  192. package/dist/components/nv-fieldnumber.js.map +1 -1
  193. package/dist/components/nv-fieldpassword.js +5 -5
  194. package/dist/components/nv-fieldpassword.js.map +1 -1
  195. package/dist/components/nv-fieldradio.js +1 -1
  196. package/dist/components/nv-fieldselect.js +5 -5
  197. package/dist/components/nv-fieldselect.js.map +1 -1
  198. package/dist/components/nv-fieldslider.d.ts +11 -0
  199. package/dist/components/nv-fieldslider.js +731 -0
  200. package/dist/components/nv-fieldslider.js.map +1 -0
  201. package/dist/components/nv-fieldtext.js +1 -1
  202. package/dist/components/nv-fieldtextarea.js +5 -5
  203. package/dist/components/nv-fieldtextarea.js.map +1 -1
  204. package/dist/components/nv-fieldtime.js +15 -15
  205. package/dist/components/nv-fieldtime.js.map +1 -1
  206. package/dist/components/nv-icon.js +1 -1
  207. package/dist/components/nv-iconbutton.js +1 -1
  208. package/dist/components/nv-loader.js +1 -1
  209. package/dist/components/nv-menu.js +5 -5
  210. package/dist/components/nv-menuitem.js +1 -1
  211. package/dist/components/nv-popover.js +1 -1
  212. package/dist/components/nv-row.js +2 -2
  213. package/dist/components/nv-stack.js +2 -2
  214. package/dist/components/nv-table.js +3 -3
  215. package/dist/components/nv-tablecolumn.js +1 -1
  216. package/dist/components/nv-toggle.js +3 -3
  217. package/dist/components/nv-tooltip.js +1 -1
  218. package/dist/components/{p-eb632278.js → p-2ae214d2.js} +3 -3
  219. package/dist/components/{p-eb632278.js.map → p-2ae214d2.js.map} +1 -1
  220. package/dist/components/{p-f76bb0c3.js → p-3e32b5a1.js} +5 -5
  221. package/dist/components/p-3e32b5a1.js.map +1 -0
  222. package/dist/components/{p-854c32dc.js → p-5e90b9b8.js} +389 -199
  223. package/dist/components/p-5e90b9b8.js.map +1 -0
  224. package/dist/components/{p-a2527411.js → p-5ee4015d.js} +3 -3
  225. package/dist/components/{p-a2527411.js.map → p-5ee4015d.js.map} +1 -1
  226. package/dist/components/{p-02752770.js → p-6277f746.js} +2 -2
  227. package/dist/components/{p-02752770.js.map → p-6277f746.js.map} +1 -1
  228. package/dist/components/p-7935c1cb.js +167 -0
  229. package/dist/components/p-7935c1cb.js.map +1 -0
  230. package/dist/components/{p-b48d5a94.js → p-8d92f0e1.js} +4 -4
  231. package/dist/components/{p-b48d5a94.js.map → p-8d92f0e1.js.map} +1 -1
  232. package/dist/components/{p-41c56ddc.js → p-95a7581c.js} +5 -5
  233. package/dist/components/{p-41c56ddc.js.map → p-95a7581c.js.map} +1 -1
  234. package/dist/components/{p-e00cbb8a.js → p-9e6e26cb.js} +2 -2
  235. package/dist/components/{p-e00cbb8a.js.map → p-9e6e26cb.js.map} +1 -1
  236. package/dist/components/p-9fa0de38.js +88 -0
  237. package/dist/components/p-9fa0de38.js.map +1 -0
  238. package/dist/components/{p-1c45c0f2.js → p-aff3ed68.js} +24 -177
  239. package/dist/components/p-aff3ed68.js.map +1 -0
  240. package/dist/components/{p-608eb9da.js → p-b6d858b2.js} +2 -2
  241. package/dist/components/{p-608eb9da.js.map → p-b6d858b2.js.map} +1 -1
  242. package/dist/components/{p-f5cb0a63.js → p-bb6d1e4e.js} +3 -3
  243. package/dist/components/{p-f5cb0a63.js.map → p-bb6d1e4e.js.map} +1 -1
  244. package/dist/components/{p-35a70c5e.js → p-c07c32d2.js} +3 -3
  245. package/dist/components/{p-35a70c5e.js.map → p-c07c32d2.js.map} +1 -1
  246. package/dist/components/{p-10faa938.js → p-c9006520.js} +5 -5
  247. package/dist/components/{p-10faa938.js.map → p-c9006520.js.map} +1 -1
  248. package/dist/components/{p-0a0f6daf.js → p-e28c4707.js} +3 -3
  249. package/dist/components/{p-0a0f6daf.js.map → p-e28c4707.js.map} +1 -1
  250. package/dist/components/{p-10b37876.js → p-eabbc885.js} +3 -3
  251. package/dist/components/{p-10b37876.js.map → p-eabbc885.js.map} +1 -1
  252. package/dist/esm/{constants-b97e736d.js → constants-4faa1fae.js} +2 -2
  253. package/dist/esm/{constants-b97e736d.js.map → constants-4faa1fae.js.map} +1 -1
  254. package/dist/esm/{index-1fb7a9a6.js → index-a1936cd0.js} +35 -186
  255. package/dist/esm/index-a1936cd0.js.map +1 -0
  256. package/dist/esm/index.js +2 -1
  257. package/dist/esm/index.js.map +1 -1
  258. package/dist/esm/loader.js +3 -3
  259. package/dist/esm/native.js +3 -24
  260. package/dist/esm/native.js.map +1 -1
  261. package/dist/esm/nv-alert.entry.js +2 -2
  262. package/dist/esm/nv-avatar.entry.js +2 -2
  263. package/dist/esm/nv-badge_2.entry.js +1 -1
  264. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  265. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  266. package/dist/esm/nv-button.entry.js +2 -2
  267. package/dist/esm/nv-calendar.entry.js +385 -173
  268. package/dist/esm/nv-calendar.entry.js.map +1 -1
  269. package/dist/esm/nv-col.entry.js +1 -1
  270. package/dist/esm/nv-datagrid.entry.js +96 -104
  271. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  272. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  273. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  274. package/dist/esm/nv-dialog.entry.js +2 -2
  275. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  276. package/dist/esm/nv-fieldcheckbox.entry.js +1 -1
  277. package/dist/esm/nv-fielddate.entry.js +45 -11
  278. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  279. package/dist/esm/nv-fielddaterange.entry.js +128 -42
  280. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  281. package/dist/esm/nv-fielddropdown.entry.js +84 -60
  282. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  283. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  284. package/dist/esm/nv-fieldmultiselect.entry.js +116 -104
  285. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  286. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  287. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  288. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  289. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  290. package/dist/esm/nv-fieldradio.entry.js +1 -1
  291. package/dist/esm/nv-fieldselect.entry.js +2 -2
  292. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  293. package/dist/esm/nv-fieldslider.entry.js +664 -0
  294. package/dist/esm/nv-fieldslider.entry.js.map +1 -0
  295. package/dist/esm/nv-fieldtext.entry.js +5 -5
  296. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  297. package/dist/esm/nv-fieldtextarea.entry.js +5 -5
  298. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  299. package/dist/esm/nv-fieldtime.entry.js +12 -12
  300. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  301. package/dist/esm/nv-icon.entry.js +4 -4
  302. package/dist/esm/nv-icon.entry.js.map +1 -1
  303. package/dist/esm/nv-iconbutton_2.entry.js +3 -3
  304. package/dist/esm/nv-menu.entry.js +2 -2
  305. package/dist/esm/nv-menuitem.entry.js +2 -2
  306. package/dist/esm/nv-popover.entry.js +2 -2
  307. package/dist/esm/nv-row.entry.js +2 -2
  308. package/dist/esm/nv-stack.entry.js +2 -2
  309. package/dist/esm/nv-table.entry.js +3 -3
  310. package/dist/esm/nv-tablecolumn.entry.js +1 -1
  311. package/dist/esm/nv-toggle.entry.js +3 -3
  312. package/dist/esm/nv-tooltip.entry.js +3 -3
  313. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  314. package/dist/native/index.esm.js +1 -1
  315. package/dist/native/index.esm.js.map +1 -1
  316. package/dist/native/native.css +1 -1
  317. package/dist/native/native.esm.js +1 -1
  318. package/dist/native/native.esm.js.map +1 -1
  319. package/dist/native/p-050d6c6c.entry.js +2 -0
  320. package/dist/native/{p-4d164ed6.entry.js.map → p-050d6c6c.entry.js.map} +1 -1
  321. package/dist/native/{p-615947e7.entry.js → p-08ca678c.entry.js} +2 -2
  322. package/dist/native/p-1a5d3b87.entry.js +2 -0
  323. package/dist/native/{p-efe6a46c.entry.js.map → p-1a5d3b87.entry.js.map} +1 -1
  324. package/dist/native/{p-7fd4d13d.entry.js → p-1c1ecd38.entry.js} +2 -2
  325. package/dist/native/{p-c7b201cd.entry.js → p-1d98477d.entry.js} +2 -2
  326. package/dist/native/{p-1da72182.entry.js → p-2006f5d4.entry.js} +2 -2
  327. package/dist/native/p-26cf4938.entry.js +2 -0
  328. package/dist/native/p-26cf4938.entry.js.map +1 -0
  329. package/dist/native/p-3817efb2.entry.js +2 -0
  330. package/dist/native/{p-fc97f071.entry.js.map → p-3817efb2.entry.js.map} +1 -1
  331. package/dist/native/p-45459dbb.entry.js +2 -0
  332. package/dist/native/{p-7042ba8a.entry.js.map → p-45459dbb.entry.js.map} +1 -1
  333. package/dist/native/p-45cbe6e4.entry.js +2 -0
  334. package/dist/native/{p-9135fdf5.entry.js.map → p-45cbe6e4.entry.js.map} +1 -1
  335. package/dist/native/p-46428304.entry.js +2 -0
  336. package/dist/native/p-46428304.entry.js.map +1 -0
  337. package/dist/native/p-4f9cdf0b.entry.js +2 -0
  338. package/dist/native/{p-3b7ef609.entry.js → p-58bb90ad.entry.js} +2 -2
  339. package/dist/native/p-59b07b36.entry.js +2 -0
  340. package/dist/native/p-59b07b36.entry.js.map +1 -0
  341. package/dist/native/{p-3cd77d82.entry.js → p-5b6c59e0.entry.js} +2 -2
  342. package/dist/native/p-6029e51b.entry.js +2 -0
  343. package/dist/native/{p-244f56ac.entry.js.map → p-6029e51b.entry.js.map} +1 -1
  344. package/dist/native/{p-08a75cfa.entry.js → p-60c64f2b.entry.js} +2 -2
  345. package/dist/native/p-64a76565.entry.js +2 -0
  346. package/dist/native/p-64a76565.entry.js.map +1 -0
  347. package/dist/native/{p-c67186f8.entry.js → p-83288db0.entry.js} +2 -2
  348. package/dist/native/p-838f7842.entry.js +2 -0
  349. package/dist/native/p-838f7842.entry.js.map +1 -0
  350. package/dist/native/{p-0245863d.entry.js → p-86ab23ea.entry.js} +2 -2
  351. package/dist/native/p-87784622.entry.js +2 -0
  352. package/dist/native/p-8fb4e5c0.entry.js +2 -0
  353. package/dist/native/{p-b94d9f0b.entry.js.map → p-8fb4e5c0.entry.js.map} +1 -1
  354. package/dist/native/{p-14c07207.entry.js → p-914da1e1.entry.js} +2 -2
  355. package/dist/native/p-abbe5d69.entry.js +2 -0
  356. package/dist/native/p-abbe5d69.entry.js.map +1 -0
  357. package/dist/native/p-abc251aa.entry.js +2 -0
  358. package/dist/native/p-abc251aa.entry.js.map +1 -0
  359. package/dist/native/{p-c0f79bac.entry.js → p-ad128108.entry.js} +2 -2
  360. package/dist/native/{p-e5de64d5.entry.js → p-b5b9190a.entry.js} +2 -2
  361. package/dist/native/{p-470588c2.entry.js → p-b8f2c1e7.entry.js} +3 -3
  362. package/dist/native/p-b8f2c1e7.entry.js.map +1 -0
  363. package/dist/native/{p-b8b6875d.entry.js → p-d040bd61.entry.js} +2 -2
  364. package/dist/native/p-d0a33e64.js +3 -0
  365. package/dist/native/p-d0a33e64.js.map +1 -0
  366. package/dist/native/{p-3953464e.entry.js → p-d21b2da2.entry.js} +3 -3
  367. package/dist/native/{p-90e6d9dd.entry.js → p-d53e8795.entry.js} +2 -2
  368. package/dist/native/p-dc7dd7f3.entry.js +2 -0
  369. package/dist/native/{p-ae7ab110.entry.js.map → p-dc7dd7f3.entry.js.map} +1 -1
  370. package/dist/native/p-e2c1992e.entry.js +2 -0
  371. package/dist/native/{p-656c56f0.entry.js.map → p-e2c1992e.entry.js.map} +1 -1
  372. package/dist/native/{p-f85c08f1.js → p-e2d0a77d.js} +2 -2
  373. package/dist/native/p-ed6019fe.entry.js +2 -0
  374. package/dist/native/p-ed6019fe.entry.js.map +1 -0
  375. package/dist/native/p-f94d7054.entry.js +2 -0
  376. package/dist/native/{p-49cac014.entry.js.map → p-f94d7054.entry.js.map} +1 -1
  377. package/dist/native/p-fdea17ce.entry.js +2 -0
  378. package/dist/native/p-fdea17ce.entry.js.map +1 -0
  379. package/dist/types/components/nv-calendar/nv-calendar.d.ts +26 -50
  380. package/dist/types/components/nv-calendar/partials/calendar-actions.d.ts +19 -0
  381. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +46 -0
  382. package/dist/types/components/nv-calendar/partials/calendar-header.d.ts +38 -0
  383. package/dist/types/components/nv-calendar/partials/calendar-shortcuts.d.ts +35 -0
  384. package/dist/types/components/nv-calendar/partials/day-cell.d.ts +35 -0
  385. package/dist/types/components/nv-calendar/partials/index.d.ts +6 -0
  386. package/dist/types/components/nv-calendar/partials/week-numbers.d.ts +30 -0
  387. package/dist/types/components/nv-calendar/test/partials/calendar-actions.logic.test.d.ts +1 -0
  388. package/dist/types/components/nv-calendar/test/partials/calendar-grid.logic.test.d.ts +1 -0
  389. package/dist/types/components/nv-calendar/test/partials/calendar-header.logic.test.d.ts +1 -0
  390. package/dist/types/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.d.ts +1 -0
  391. package/dist/types/components/nv-calendar/test/partials/day-cell.logic.test.d.ts +1 -0
  392. package/dist/types/components/nv-calendar/test/partials/week-numbers.logic.test.d.ts +1 -0
  393. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +0 -16
  394. package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +4 -0
  395. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +21 -9
  396. package/dist/types/components/nv-fielddate/test/nv-fielddate.logic.test.d.ts +1 -0
  397. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +24 -3
  398. package/dist/types/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.d.ts +1 -0
  399. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +47 -26
  400. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +61 -55
  401. package/dist/types/components/nv-fieldslider/nv-fieldslider.d.ts +229 -0
  402. package/dist/types/components/nv-fieldslider/nv-fieldslider.docs.d.ts +4 -0
  403. package/dist/types/components/nv-fieldslider/nv-fieldslider.utils.d.ts +46 -0
  404. package/dist/types/components/nv-fieldslider/partials/field-input.d.ts +45 -0
  405. package/dist/types/components/nv-fieldslider/partials/range-thumb.d.ts +37 -0
  406. package/dist/types/components/nv-fieldslider/partials/single-thumb.d.ts +35 -0
  407. package/dist/types/components/nv-fieldslider/partials/tick-marks.d.ts +28 -0
  408. package/dist/types/components/nv-fieldslider/test/nv-fieldslider.utils.test.d.ts +1 -0
  409. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +1 -0
  410. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  411. package/dist/types/components.d.ts +402 -54
  412. package/dist/types/interfaces/Column.d.ts +5 -1
  413. package/dist/vscode-data.json +121 -9
  414. package/hydrate/index.js +1664 -584
  415. package/hydrate/index.mjs +1664 -584
  416. package/package.json +6 -2
  417. package/dist/cjs/index-9bda5507.js.map +0 -1
  418. package/dist/components/p-1c45c0f2.js.map +0 -1
  419. package/dist/components/p-76646ce9.js +0 -88
  420. package/dist/components/p-76646ce9.js.map +0 -1
  421. package/dist/components/p-854c32dc.js.map +0 -1
  422. package/dist/components/p-9decffb6.js +0 -167
  423. package/dist/components/p-9decffb6.js.map +0 -1
  424. package/dist/components/p-f76bb0c3.js.map +0 -1
  425. package/dist/esm/index-1fb7a9a6.js.map +0 -1
  426. package/dist/native/p-244f56ac.entry.js +0 -2
  427. package/dist/native/p-2523eead.entry.js +0 -2
  428. package/dist/native/p-2523eead.entry.js.map +0 -1
  429. package/dist/native/p-470588c2.entry.js.map +0 -1
  430. package/dist/native/p-49cac014.entry.js +0 -2
  431. package/dist/native/p-4d164ed6.entry.js +0 -2
  432. package/dist/native/p-4dc1d036.entry.js +0 -2
  433. package/dist/native/p-4e635fa7.entry.js +0 -2
  434. package/dist/native/p-4e635fa7.entry.js.map +0 -1
  435. package/dist/native/p-5d21532a.entry.js +0 -2
  436. package/dist/native/p-5d21532a.entry.js.map +0 -1
  437. package/dist/native/p-656c56f0.entry.js +0 -2
  438. package/dist/native/p-7042ba8a.entry.js +0 -2
  439. package/dist/native/p-7e154bfd.entry.js +0 -2
  440. package/dist/native/p-7e154bfd.entry.js.map +0 -1
  441. package/dist/native/p-7eba904e.entry.js +0 -2
  442. package/dist/native/p-7eba904e.entry.js.map +0 -1
  443. package/dist/native/p-9135fdf5.entry.js +0 -2
  444. package/dist/native/p-ab002252.js +0 -3
  445. package/dist/native/p-ab002252.js.map +0 -1
  446. package/dist/native/p-ae7ab110.entry.js +0 -2
  447. package/dist/native/p-b94d9f0b.entry.js +0 -2
  448. package/dist/native/p-c71c6f23.entry.js +0 -2
  449. package/dist/native/p-c71c6f23.entry.js.map +0 -1
  450. package/dist/native/p-d9a52884.entry.js +0 -2
  451. package/dist/native/p-d9a52884.entry.js.map +0 -1
  452. package/dist/native/p-efe6a46c.entry.js +0 -2
  453. package/dist/native/p-f2ef6771.entry.js +0 -2
  454. package/dist/native/p-f5f68992.entry.js +0 -2
  455. package/dist/native/p-f5f68992.entry.js.map +0 -1
  456. package/dist/native/p-fc97f071.entry.js +0 -2
  457. /package/dist/native/{p-615947e7.entry.js.map → p-08ca678c.entry.js.map} +0 -0
  458. /package/dist/native/{p-7fd4d13d.entry.js.map → p-1c1ecd38.entry.js.map} +0 -0
  459. /package/dist/native/{p-c7b201cd.entry.js.map → p-1d98477d.entry.js.map} +0 -0
  460. /package/dist/native/{p-1da72182.entry.js.map → p-2006f5d4.entry.js.map} +0 -0
  461. /package/dist/native/{p-f2ef6771.entry.js.map → p-4f9cdf0b.entry.js.map} +0 -0
  462. /package/dist/native/{p-3b7ef609.entry.js.map → p-58bb90ad.entry.js.map} +0 -0
  463. /package/dist/native/{p-3cd77d82.entry.js.map → p-5b6c59e0.entry.js.map} +0 -0
  464. /package/dist/native/{p-08a75cfa.entry.js.map → p-60c64f2b.entry.js.map} +0 -0
  465. /package/dist/native/{p-c67186f8.entry.js.map → p-83288db0.entry.js.map} +0 -0
  466. /package/dist/native/{p-0245863d.entry.js.map → p-86ab23ea.entry.js.map} +0 -0
  467. /package/dist/native/{p-4dc1d036.entry.js.map → p-87784622.entry.js.map} +0 -0
  468. /package/dist/native/{p-14c07207.entry.js.map → p-914da1e1.entry.js.map} +0 -0
  469. /package/dist/native/{p-c0f79bac.entry.js.map → p-ad128108.entry.js.map} +0 -0
  470. /package/dist/native/{p-e5de64d5.entry.js.map → p-b5b9190a.entry.js.map} +0 -0
  471. /package/dist/native/{p-b8b6875d.entry.js.map → p-d040bd61.entry.js.map} +0 -0
  472. /package/dist/native/{p-3953464e.entry.js.map → p-d21b2da2.entry.js.map} +0 -0
  473. /package/dist/native/{p-90e6d9dd.entry.js.map → p-d53e8795.entry.js.map} +0 -0
  474. /package/dist/native/{p-f85c08f1.js.map → p-e2d0a77d.js.map} +0 -0
@@ -1,9 +1,5 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-1c45c0f2.js';
1
+ import { h, p as proxyCustomElement, H, c as createEvent, d as Host } from './p-aff3ed68.js';
2
2
  import { C as CUSTOM_DAY_NAMES, b as CUSTOM_MONTH_NAMES, W as WEEK_ABBREVIATIONS } from './p-1f505531.js';
3
- import { d as defineCustomElement$4 } from './p-a2527411.js';
4
- import { d as defineCustomElement$3 } from './p-76646ce9.js';
5
- import { d as defineCustomElement$2 } from './p-10faa938.js';
6
- import { d as defineCustomElement$1 } from './p-f5cb0a63.js';
7
3
 
8
4
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
9
5
 
@@ -165,9 +161,18 @@ function isSameOrAfter(date, compareDate, options) {
165
161
  * @returns {number} Week number
166
162
  */
167
163
  function getWeekNumber(date) {
168
- const startOfYear = new Date(date.getFullYear(), 0, 1);
169
- const pastDaysOfYear = (date.getTime() - startOfYear.getTime()) / 86400000;
170
- return Math.ceil((pastDaysOfYear + startOfYear.getDay() + 1) / 7);
164
+ // Create a copy of the date to avoid modifying the original
165
+ const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
166
+ // Adjust to the same week Thursday (ISO 8601)
167
+ d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));
168
+ // Calculate the first Thursday of the year
169
+ const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));
170
+ // Calculate the week number
171
+ return (1 +
172
+ Math.round(((d.getTime() - week1.getTime()) / 86400000 -
173
+ 3 +
174
+ ((week1.getUTCDay() + 6) % 7)) /
175
+ 7));
171
176
  }
172
177
  /**
173
178
  * Convert a date string/Date to a Date without timezone offset
@@ -241,7 +246,176 @@ function parseDate(dateInput, dateFormat) {
241
246
  return parsed.toDate();
242
247
  }
243
248
 
244
- const nvCalendarCss = "nv-calendar{display:block}.datepicker-root{display:flex;justify-content:center;align-items:flex-start;width:auto}.datepicker-container{font-family:system-ui, sans-serif;display:flex;flex-direction:column;align-items:stretch;background:var(--components-calendar-background);border-radius:var(--calendar-radius);padding:var(--calendar-padding);box-shadow:0px var(--shadow-y-axis-md-1) var(--shadow-blur-md-1) var(--shadow-spread-md, 0) var(--shadow-color-opacity-0), 0px var(--shadow-y-axis-md-2) var(--shadow-blur-md-2) var(--shadow-spread-md, 0) var(--shadow-color-opacity-2);border:1px solid var(--components-calendar-border);width:auto;max-width:100%}.datepicker-container-single{max-width:300px}.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-left),.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-container-single:has(.shortcuts-placement-left),.datepicker-container-single:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-wrapper{display:flex;justify-content:center;align-items:flex-start;gap:var(--calendar-gap-x);width:auto;overflow-x:hidden}.datepicker-wrapper::-webkit-scrollbar{width:6px;height:6px}.datepicker-wrapper::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}.datepicker-wrapper::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}.datepicker-wrapper.single{justify-content:center}.calendar-container{display:flex;flex-direction:column;align-items:center;padding:var(--calendar-padding);width:auto;position:relative}.calendar-separator{width:1px;background:var(--components-calendar-border);height:auto;min-height:100%;margin:0 10px}.header{display:flex;justify-content:start;align-items:center;margin-bottom:var(--calendar-header-margin-bottom);width:100%}.header nv-iconbutton{width:var(--calendar-header-button-size);height:var(--calendar-header-button-size)}.nav-buttons{display:flex;gap:var(--spacing-0);margin-left:auto}.nav-left{order:-1}.date-controls{display:flex;gap:var(--spacing-1);align-items:center;min-height:34px;justify-content:center}.datepicker-container-single .date-controls{justify-content:flex-start}.datepicker-container:not(.datepicker-container-single) .date-controls{justify-content:start;flex-grow:1}.date-controls .month-select,.date-controls .year-input{background:transparent !important}.calendar-wrapper:nth-child(n+2) .datepicker-container{margin-left:42px}.calendar-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--calendar-weeks-calendar-gap-x);position:relative}.calendar-grid.slide-left{animation:slideLeft 0.3s ease-out}.calendar-grid.slide-right{animation:slideRight 0.3s ease-out}.week-numbers{display:grid;grid-template-rows:var(--calendar-cell-size) repeat(6, var(--calendar-cell-size));background:var(--components-calendar-weeks-background);color:var(--components-calendar-weeks-text);border-radius:var(--calendar-weeks-radius);width:var(--calendar-weeks-size);row-gap:var(--calendar-grid-gap-y)}.week-numbers .clickable{cursor:pointer}.week-numbers .clickable:hover{background-color:var(--components-calendar-weeks-background-hover);color:var(--components-calendar-weeks-text-hover);border-radius:var(--calendar-radius)}.week-header,.week-number{display:grid;place-items:center;font-size:var(--calendar-cell-font-size)}.week-header{font-weight:700;color:var(--components-calendar-weeks-text)}.week-number{color:var(--components-calendar-cell-text)}.days-container{display:grid;grid-template-rows:auto 1fr;row-gap:var(--calendar-grid-gap-y)}.days-header{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));height:var(--calendar-cell-size)}.day-header{display:grid;place-items:center;font-size:var(--calendar-cell-font-size);color:var(--components-calendar-cell-text)}.days-grid{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));grid-template-rows:repeat(6, var(--calendar-cell-size));animation:fadeIn 0.2s ease-in;row-gap:var(--calendar-grid-gap-y);z-index:0}.day{display:grid;place-items:center;width:var(--calendar-cell-size);height:var(--calendar-cell-size);font-size:var(--calendar-cell-font-size);border-radius:var(--calendar-cell-radius);cursor:pointer;border:none;background:transparent;transition:all 0.2s ease;text-align:center;animation:scaleIn 0.2s ease-out}.day:hover:not(.disabled,.empty,.selected){background:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}.day.selected,.day.selected:hover .day.is-today.selected,.day.is-today.selected:hover{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected) !important}.day.disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.day.outside-month{color:var(--components-calendar-cell-text);opacity:var(--opacity-disabled)}.day.outside-month.selected{opacity:1 !important;color:var(--components-calendar-cell-text-selected)}.day.outside-month.in-range{opacity:1 !important;background-color:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range)}.day.in-range{background:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range);border-radius:0;position:relative}.day.range-start,.day.range-start:focus,.day.range-start:hover,.day.range-end,.day.range-end:focus,.day.range-end:hover{background-color:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected) !important}.day.range-start,.day.range-end,.day.range-start.is-today,.day.range-end.is-today{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected);position:relative;border-radius:var(--radius-rounded-full)}.day.range-start:hover,.day.range-end:hover,.day.range-start.is-today:hover,.day.range-end.is-today:hover{color:var(--components-calendar-cell-text-today)}.day.range-start:before,.day.range-end:before,.day.range-start.is-today:before,.day.range-end.is-today:before{content:\"\";position:absolute;bottom:0;left:0;right:0;top:0;z-index:-1;background-color:var(--components-calendar-cell-background-in-range);border-radius:var(--radius-rounded-full);width:auto;height:auto}.day.range-start:has(~.range-end):before,.day.range-start:has(+.in-range):before{border-top-right-radius:0;border-bottom-right-radius:0}.day.range-end:before{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.day.outside-month.range-start,.day.outside-month.range-end{background:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected);opacity:1 !important}.day.is-today{font-weight:700;position:relative;color:var(--components-calendar-cell-text-today)}.day.is-today.range-start,.day.is-today.range-end{color:var(--components-calendar-cell-text-selected)}.day.is-today.range-start:hover,.day.is-today.range-end:hover{color:var(--components-calendar-cell-text-today)}.day.is-today::after{content:\"\";position:absolute;bottom:var(--spacing-1);left:50%;transform:translateX(-50%);width:var(--calendar-cell-dot-size);height:var(--calendar-cell-dot-size);background-color:currentColor;border-radius:50%}.day.is-today.selected::after{color:var(--components-calendar-cell-text-selected)}.day.is-today.selected::after::after{background-color:var(--components-calendar-cell-dot-selected)}.calendar-footer{display:flex;gap:var(--spacing-1);justify-content:flex-start;width:100%;flex-wrap:wrap}.footer-placement-left{justify-content:flex-start}.footer-placement-right{justify-content:flex-end}.footer-placement-center{justify-content:center}.datepicker-controls{display:flex;flex-direction:column;border-top:1px solid var(--components-calendar-border);padding:var(--calendar-controls-padding-top) var(--calendar-padding) var(--calendar-padding);gap:var(--calendar-grid-gap-y);margin-top:var(--calendar-controls-margin-top)}.datepicker-actions{display:flex;justify-content:flex-end;gap:var(--spacing-1);width:100%}.datepicker-actions slot-fb{display:contents !important}.calendar-footer+.datepicker-actions{margin-top:0}.shortcuts-placement-left,.shortcuts-placement-right{display:flex;flex-direction:column;gap:var(--spacing-1);margin-top:var(--spacing-4)}.shortcuts-placement-left{align-items:flex-end}.shortcuts-placement-right{align-items:flex-start}@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}";
249
+ /**
250
+ * Renders a single day cell in the calendar grid
251
+ * @param {DayCellProps} props - Component properties
252
+ * @returns {JSX.Element} JSX element representing a day cell
253
+ */
254
+ const DayCell = props => {
255
+ const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, } = props;
256
+ // Build CSS classes for the day cell
257
+ const dayClasses = [
258
+ 'day',
259
+ isSelected ? 'selected' : '',
260
+ isStart ? 'range-start' : '',
261
+ isEnd ? 'range-end' : '',
262
+ isInRange ? 'in-range' : '',
263
+ isDisabled ? 'disabled' : '',
264
+ !isCurrentMonth ? 'outside-month' : '',
265
+ isToday ? 'is-today' : '',
266
+ ]
267
+ .filter(Boolean)
268
+ .join(' ');
269
+ const handleClick = () => {
270
+ if (!isDisabled && onClick) {
271
+ onClick(date);
272
+ }
273
+ };
274
+ return (
275
+ // eslint-disable-next-line react/jsx-no-bind
276
+ h("div", { class: dayClasses, onClick: handleClick, "aria-disabled": isDisabled }, dayOfMonth));
277
+ };
278
+
279
+ /**
280
+ * Renders the action buttons for the calendar (Cancel/OK)
281
+ * @param {CalendarActionsProps} props - Component properties
282
+ * @returns {JSX.Element} JSX element representing the action buttons
283
+ */
284
+ const CalendarActions = props => {
285
+ const { onReset, onConfirm, useSlot = false } = props;
286
+ return (h("div", { class: "datepicker-actions" }, useSlot ? (h("slot", { name: "actions" },
287
+ h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
288
+ h("nv-button", { size: "xs", onClick: onConfirm }, "OK"))) : (h("div", null,
289
+ h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
290
+ h("nv-button", { size: "xs", onClick: onConfirm }, "OK")))));
291
+ };
292
+
293
+ /**
294
+ * Renders the week numbers column for the calendar
295
+ * @param {WeekNumbersProps} props - Component properties
296
+ * @returns {JSX.Element} JSX element representing the week numbers
297
+ */
298
+ const WeekNumbers = props => {
299
+ const { weeks, localizedWeekText, selectionType, onWeekSelect, calendarIndex, } = props;
300
+ /**
301
+ * Handles click on a week number for range selection
302
+ * @param {Array<WeekData>} week - Week data
303
+ */
304
+ const handleWeekClick = (week) => {
305
+ if (selectionType === 'range') {
306
+ const dates = week.map(d => d.date);
307
+ onWeekSelect(dates, calendarIndex);
308
+ }
309
+ };
310
+ /**
311
+ * Creates a click handler for a specific week
312
+ * @param {Array<WeekData>} week - Week data
313
+ * @returns {() => void} Click handler function
314
+ */
315
+ const createWeekHandler = (week) => {
316
+ return () => handleWeekClick(week);
317
+ };
318
+ return (h("div", { class: "week-numbers" },
319
+ h("div", { class: "week-header" }, localizedWeekText),
320
+ weeks.map((week, weekIndex) => {
321
+ var _a;
322
+ const firstDayWithDate = ((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date();
323
+ const weekNumber = getWeekNumber(firstDayWithDate);
324
+ const isClickable = selectionType === 'range';
325
+ return (h("div", { class: `week-number ${isClickable ? 'clickable' : ''}`, onClick: createWeekHandler(week), key: `week-${weekIndex}`, role: isClickable ? 'button' : undefined, tabindex: isClickable ? 0 : undefined }, weekNumber));
326
+ })));
327
+ };
328
+
329
+ /**
330
+ * Renders the shortcuts for quick date selection
331
+ * @param {CalendarShortcutsProps} props - Component properties
332
+ * @returns {JSX.Element | null} JSX element representing the shortcuts or null if no shortcuts
333
+ */
334
+ const CalendarShortcuts = props => {
335
+ const { shortcuts, placement, onShortcutClick } = props;
336
+ if (!shortcuts || shortcuts.length === 0) {
337
+ return null;
338
+ }
339
+ /**
340
+ * Creates a click handler for a specific shortcut
341
+ * @param {ShortcutData} shortcut - The shortcut data
342
+ * @returns {() => void} Click handler function
343
+ */
344
+ const createShortcutHandler = (shortcut) => {
345
+ return () => onShortcutClick(shortcut);
346
+ };
347
+ return (h("div", { class: `shortcuts-container shortcuts-placement-${placement}` }, shortcuts.map((shortcut, index) => (h("nv-button", { key: `shortcut-${index}`, emphasis: "lower", size: "xs", "aria-label": shortcut.label, onClick: createShortcutHandler(shortcut) }, shortcut.label)))));
348
+ };
349
+
350
+ /**
351
+ * Renders the calendar header with navigation and date controls
352
+ * @param {CalendarHeaderProps} props - Component properties
353
+ * @returns {JSX.Element} JSX element representing the calendar header
354
+ */
355
+ const CalendarHeader = props => {
356
+ const { currentDate, months, numberOfCalendars, calendarIndex, monthOffset, onMonthChange, onMonthSelect, onYearChange, } = props;
357
+ /**
358
+ * Creates navigation handler for month change
359
+ * @param {number} direction - Direction of navigation (-1 or 1)
360
+ * @returns {() => void} Navigation handler function
361
+ */
362
+ const createNavigationHandler = (direction) => {
363
+ return () => onMonthChange(direction);
364
+ };
365
+ /**
366
+ * Creates month selection handler
367
+ * @param {number} offset - Month offset
368
+ * @returns {(event: Event) => void} Month selection handler function
369
+ */
370
+ const createMonthSelectHandler = (offset) => {
371
+ return (event) => onMonthSelect(event, offset);
372
+ };
373
+ /**
374
+ * Creates year change handler
375
+ * @param {number} offset - Month offset
376
+ * @returns {(event: Event) => void} Year change handler function
377
+ */
378
+ const createYearChangeHandler = (offset) => {
379
+ return (event) => onYearChange(event, offset);
380
+ };
381
+ const currentMonth = (currentDate.getUTCMonth() + monthOffset) % 12;
382
+ const currentYear = currentDate.getUTCFullYear() +
383
+ Math.floor((currentDate.getUTCMonth() + monthOffset) / 12);
384
+ return (h("div", { class: "header" },
385
+ numberOfCalendars > 1 && calendarIndex === 0 && (h("nv-iconbutton", { class: "nav-left", emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) })),
386
+ h("div", { class: "date-controls" },
387
+ h("select", { class: "month-select mr-4", onChange: createMonthSelectHandler(monthOffset) }, months.map(month => (h("option", { key: month.value, value: month.value, selected: month.value === currentMonth }, month.label)))),
388
+ h("input", { type: "number", class: "year-input", min: "1950", max: "2100", value: currentYear, onChange: createYearChangeHandler(monthOffset) })),
389
+ numberOfCalendars === 1 && (h("div", { class: "nav-buttons" },
390
+ h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) }),
391
+ h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1) }))),
392
+ numberOfCalendars > 1 && calendarIndex === numberOfCalendars - 1 && (h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1), class: "nav-right" }))));
393
+ };
394
+
395
+ /**
396
+ * Renders the calendar grid with day headers and day cells
397
+ * @param {CalendarGridProps} props - Component properties
398
+ * @returns {JSX.Element} JSX element representing the calendar grid
399
+ */
400
+ const CalendarGrid = props => {
401
+ const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, } = props;
402
+ return (h("div", { class: "days-container" },
403
+ h("div", { class: "days-header" }, dayNames.map((day, index) => (h("div", { class: "day-header", key: `day-header-${index}` }, day)))),
404
+ h("div", { class: "days-grid" }, days.map(day => {
405
+ const date = day.date;
406
+ if (!date)
407
+ return null;
408
+ const isSelected = selectionType === 'single' &&
409
+ isSameDate(date, selectedDate, { isUTCMode });
410
+ const isInRange = isDateInRange(date);
411
+ const isStart = isSameDate(date, startDate, { isUTCMode });
412
+ const isEnd = isSameDate(date, endDate, { isUTCMode });
413
+ const isTodayDate = isToday(date);
414
+ return (h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick }));
415
+ }))));
416
+ };
417
+
418
+ const nvCalendarCss = "nv-calendar{display:block}.datepicker-root{display:flex;justify-content:center;align-items:flex-start;width:auto}.datepicker-container{font-family:system-ui, sans-serif;display:flex;flex-direction:column;align-items:stretch;background:var(--components-calendar-background);border-radius:var(--calendar-radius);padding:var(--calendar-padding);box-shadow:0px var(--shadow-y-axis-md-1) var(--shadow-blur-md-1) var(--shadow-spread-md, 0) var(--shadow-color-opacity-0), 0px var(--shadow-y-axis-md-2) var(--shadow-blur-md-2) var(--shadow-spread-md, 0) var(--shadow-color-opacity-2);border:1px solid var(--components-calendar-border);width:auto;max-width:100%}.datepicker-container-single{max-width:300px}.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-left),.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-container-single:has(.shortcuts-placement-left),.datepicker-container-single:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-wrapper{display:flex;justify-content:center;align-items:flex-start;gap:var(--calendar-gap-x);width:auto;overflow-x:hidden}.datepicker-wrapper::-webkit-scrollbar{width:6px;height:6px}.datepicker-wrapper::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}.datepicker-wrapper::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}.datepicker-wrapper.single{justify-content:center}.calendar-container{display:flex;flex-direction:column;align-items:center;padding:var(--calendar-padding);width:auto;position:relative}.calendar-separator{width:1px;background:var(--components-calendar-border);height:auto;min-height:100%;margin:0 10px}.header{display:flex;justify-content:start;align-items:center;margin-bottom:var(--calendar-header-margin-bottom);width:100%}.header nv-iconbutton{width:var(--calendar-header-button-size);height:var(--calendar-header-button-size)}.nav-buttons{display:flex;gap:var(--spacing-0);margin-left:auto}.nav-left{order:-1}.date-controls{display:flex;gap:var(--spacing-1);align-items:center;min-height:34px;justify-content:center}.datepicker-container-single .date-controls{justify-content:flex-start}.datepicker-container:not(.datepicker-container-single) .date-controls{justify-content:start;flex-grow:1}.date-controls .month-select,.date-controls .year-input{background:transparent !important}.calendar-wrapper:nth-child(n+2) .datepicker-container{margin-left:42px}.calendar-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--calendar-weeks-calendar-gap-x);position:relative}.calendar-grid.slide-left{animation:slideLeft 0.3s ease-out}.calendar-grid.slide-right{animation:slideRight 0.3s ease-out}.week-numbers{display:grid;grid-template-rows:var(--calendar-cell-size) repeat(6, var(--calendar-cell-size));background:var(--components-calendar-weeks-background);color:var(--components-calendar-weeks-text);border-radius:var(--calendar-weeks-radius);width:var(--calendar-weeks-size);row-gap:var(--calendar-grid-gap-y)}.week-numbers .clickable{cursor:pointer}.week-numbers .clickable:hover{background-color:var(--components-calendar-weeks-background-hover);color:var(--components-calendar-weeks-text-hover);border-radius:var(--calendar-radius)}.week-header,.week-number{display:grid;place-items:center;font-size:var(--calendar-cell-font-size)}.week-header{font-weight:700;color:var(--components-calendar-weeks-text)}.week-number{color:var(--components-calendar-cell-text)}.days-container{display:grid;grid-template-rows:auto 1fr;row-gap:var(--calendar-grid-gap-y)}.days-header{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));height:var(--calendar-cell-size)}.day-header{display:grid;place-items:center;font-size:var(--calendar-cell-font-size);color:var(--components-calendar-cell-text)}.days-grid{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));grid-template-rows:repeat(6, var(--calendar-cell-size));animation:fadeIn 0.2s ease-in;row-gap:var(--calendar-grid-gap-y);z-index:0}.day{display:grid;place-items:center;width:var(--calendar-cell-size);height:var(--calendar-cell-size);font-size:var(--calendar-cell-font-size);border-radius:var(--calendar-cell-radius);cursor:pointer;border:none;background:transparent;transition:all 0.2s ease;text-align:center;animation:scaleIn 0.2s ease-out}.day:hover:not(.disabled,.empty,.selected){background:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}.day.selected,.day.selected:hover .day.is-today.selected,.day.is-today.selected:hover{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected) !important}.day.disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.day.outside-month{color:var(--components-calendar-cell-text);opacity:var(--opacity-disabled)}.day.outside-month.selected{opacity:1 !important;color:var(--components-calendar-cell-text-selected)}.day.outside-month.in-range{opacity:0.5 !important;background-color:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range)}.day.outside-month.in-range:hover{opacity:0.7 !important;background-color:var(--components-calendar-cell-background-in-range)}.day.in-range{background:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range);border-radius:0;position:relative}.day.range-start,.day.range-start:focus,.day.range-start:hover,.day.range-end,.day.range-end:focus,.day.range-end:hover{background-color:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected) !important}.day.range-start,.day.range-end,.day.range-start.is-today,.day.range-end.is-today{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected);position:relative;border-radius:var(--radius-rounded-full)}.day.range-start:hover,.day.range-end:hover,.day.range-start.is-today:hover,.day.range-end.is-today:hover{color:var(--components-calendar-cell-text-today)}.day.range-start:before,.day.range-end:before,.day.range-start.is-today:before,.day.range-end.is-today:before{content:\"\";position:absolute;bottom:0;left:0;right:0;top:0;z-index:-1;background-color:var(--components-calendar-cell-background-in-range);border-radius:var(--radius-rounded-full);width:auto;height:auto}.day.range-start:has(~.range-end):before,.day.range-start:has(+.in-range):before{border-top-right-radius:0;border-bottom-right-radius:0}.day.range-end:before{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.day.outside-month.range-start,.day.outside-month.range-end{opacity:1 !important;background:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected)}.day.is-today{font-weight:700;position:relative;color:var(--components-calendar-cell-text-today)}.day.is-today.range-start,.day.is-today.range-end{color:var(--components-calendar-cell-text-selected)}.day.is-today.range-start:hover,.day.is-today.range-end:hover{color:var(--components-calendar-cell-text-today)}.day.is-today::after{content:\"\";position:absolute;bottom:var(--spacing-1);left:50%;transform:translateX(-50%);width:var(--calendar-cell-dot-size);height:var(--calendar-cell-dot-size);background-color:currentColor;border-radius:50%}.day.is-today.selected::after{color:var(--components-calendar-cell-text-selected)}.day.is-today.selected::after::after{background-color:var(--components-calendar-cell-dot-selected)}.calendar-footer{display:flex;gap:var(--spacing-1);justify-content:flex-start;width:100%;flex-wrap:wrap}.footer-placement-left{justify-content:flex-start}.footer-placement-right{justify-content:flex-end}.footer-placement-center{justify-content:center}.datepicker-controls{display:flex;flex-direction:column;border-top:1px solid var(--components-calendar-border);padding:var(--calendar-controls-padding-top) var(--calendar-padding) var(--calendar-padding);gap:var(--calendar-grid-gap-y);margin-top:var(--calendar-controls-margin-top)}.datepicker-actions{display:flex;justify-content:flex-end;gap:var(--spacing-1);width:100%}.datepicker-actions slot-fb{display:contents !important}.calendar-footer+.datepicker-actions{margin-top:0}.shortcuts-placement-left,.shortcuts-placement-right{display:flex;flex-direction:column;gap:var(--spacing-1);margin-top:var(--spacing-4)}.shortcuts-placement-left{align-items:flex-end}.shortcuts-placement-right{align-items:flex-start}@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}";
245
419
  const NvCalendarStyle0 = nvCalendarCss;
246
420
 
247
421
  const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
@@ -250,18 +424,28 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
250
424
  this.__registerHost();
251
425
  this.singleDateChange = createEvent(this, "singleDateChange", 7);
252
426
  this.rangeDateChange = createEvent(this, "rangeDateChange", 7);
427
+ this.valueChanged = createEvent(this, "valueChanged", 7);
253
428
  /****************************************************************************/
254
429
  //#region PROPERTIES
255
430
  /**
256
431
  * First day of the week (0 = Sunday, 1 = Monday, etc.)
257
- * @default 0
432
+ * @default 1
258
433
  */
259
- this.firstDayOfWeek = 0;
434
+ this.firstDayOfWeek = 1;
260
435
  /**
261
436
  * Number of calendars to display
262
437
  * @default 1
263
438
  */
264
439
  this.numberOfCalendars = 1;
440
+ /**
441
+ * Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.
442
+ * Examples:
443
+ * - Single: "2025-03-15"
444
+ * - Range: "2025-03-15,2025-03-20"
445
+ * @default ""
446
+ */
447
+ // eslint-disable-next-line @stencil-community/strict-mutable
448
+ this.value = '';
265
449
  /**
266
450
  * Locale for date formatting
267
451
  * @default 'en-BE'
@@ -299,6 +483,75 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
299
483
  this.endDate = null;
300
484
  /** List of formatted months for the selector */
301
485
  this.months = [];
486
+ /**
487
+ * Parses the unified value prop and synchronizes with internal state
488
+ * @param {string} value - Value to parse
489
+ */
490
+ this.parseUnifiedValue = (value) => {
491
+ if (!value) {
492
+ // Reset all selections
493
+ this.selectedDate = null;
494
+ this.startDate = null;
495
+ this.endDate = null;
496
+ return;
497
+ }
498
+ const values = value
499
+ .split(',')
500
+ .map(v => v.trim())
501
+ .filter(Boolean);
502
+ if (this.selectionType === 'single' && values.length >= 1) {
503
+ const parsedDate = parseDate(values[0], this.dateFormat);
504
+ if (parsedDate) {
505
+ this.selectedDate = parsedDate;
506
+ // Only sync with legacy prop if not using actions (immediate mode)
507
+ if (!this.showActions) {
508
+ this.singleValue = values[0];
509
+ }
510
+ // Navigate to the date if not prevented
511
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
512
+ if (!preventNavigation) {
513
+ this.currentDate = parsedDate;
514
+ }
515
+ }
516
+ else {
517
+ // Handle malformed date gracefully - reset state
518
+ console.warn(`Invalid date format: ${values[0]}`);
519
+ this.selectedDate = null;
520
+ if (!this.showActions) {
521
+ this.singleValue = '';
522
+ }
523
+ }
524
+ }
525
+ else if (this.selectionType === 'range' && values.length >= 2) {
526
+ const startDate = parseDate(values[0], this.dateFormat);
527
+ const endDate = parseDate(values[1], this.dateFormat);
528
+ if (startDate && endDate) {
529
+ this.startDate = startDate;
530
+ this.endDate = endDate;
531
+ // Only sync with legacy prop if not using actions (immediate mode)
532
+ if (!this.showActions) {
533
+ this.rangeValue = {
534
+ start: values[0],
535
+ end: values[1],
536
+ };
537
+ }
538
+ // Navigate to start date if not prevented
539
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
540
+ if (!preventNavigation) {
541
+ this.currentDate = startDate;
542
+ }
543
+ }
544
+ else {
545
+ // Handle malformed dates gracefully - reset state
546
+ console.warn(`Invalid date range format: ${values[0]}, ${values[1]}`);
547
+ this.startDate = null;
548
+ this.endDate = null;
549
+ if (!this.showActions) {
550
+ this.rangeValue = { start: '', end: '' };
551
+ }
552
+ }
553
+ }
554
+ };
302
555
  /**
303
556
  * Change the displayed month
304
557
  * @param {number} offset - Month offset (-1 for previous, 1 for next)
@@ -346,7 +599,14 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
346
599
  return;
347
600
  const formattedDate = formatDate(date, { dateFormat: this.dateFormat });
348
601
  this.selectedDate = date;
349
- this.singleDateChange.emit(formattedDate);
602
+ // Update the unified value prop (like nv-fieldslider)
603
+ this.value = formattedDate;
604
+ this.valueChanged.emit(formattedDate);
605
+ // Legacy support (deprecated) - only sync props if not using actions
606
+ if (!this.showActions) {
607
+ this.singleValue = formattedDate;
608
+ this.singleDateChange.emit(formattedDate);
609
+ }
350
610
  };
351
611
  /**
352
612
  * Handles range date selection
@@ -354,18 +614,32 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
354
614
  */
355
615
  this.handleRangeSelection = (date) => {
356
616
  if (!this.startDate || (this.startDate && this.endDate)) {
617
+ // Start new range selection
357
618
  this.startDate = date;
358
619
  this.endDate = null;
359
620
  }
360
621
  else {
622
+ // Complete range selection
361
623
  this.endDate = date;
624
+ // Ensure correct order
362
625
  if (this.startDate > this.endDate) {
363
626
  [this.startDate, this.endDate] = [this.endDate, this.startDate];
364
627
  }
365
- this.rangeDateChange.emit({
366
- start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
367
- end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
628
+ const startFormatted = formatDate(this.startDate, {
629
+ dateFormat: this.dateFormat,
630
+ });
631
+ const endFormatted = formatDate(this.endDate, {
632
+ dateFormat: this.dateFormat,
368
633
  });
634
+ // Update the unified value prop (like nv-fieldslider)
635
+ this.value = `${startFormatted},${endFormatted}`;
636
+ this.valueChanged.emit(this.value);
637
+ // Legacy support (deprecated) - only sync props if not using actions
638
+ if (!this.showActions) {
639
+ const legacyRange = { start: startFormatted, end: endFormatted };
640
+ this.rangeDateChange.emit(legacyRange);
641
+ this.rangeValue = legacyRange;
642
+ }
369
643
  }
370
644
  };
371
645
  /**
@@ -424,23 +698,35 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
424
698
  * @returns {string[]} Array of short day names
425
699
  */
426
700
  this.getDayNames = () => {
701
+ let days;
427
702
  // If we have custom day names for this locale
428
703
  if (CUSTOM_DAY_NAMES[this.locale]) {
429
- const days = [...CUSTOM_DAY_NAMES[this.locale]];
430
- // Reorganize the days based on the first day of the week
431
- const firstDays = days.slice(0, this.firstDayOfWeek);
432
- const remainingDays = days.slice(this.firstDayOfWeek);
433
- return [...remainingDays, ...firstDays];
704
+ // Custom day names are expected to start with Monday (index 0 = Monday)
705
+ days = [...CUSTOM_DAY_NAMES[this.locale]];
706
+ }
707
+ else {
708
+ // Generate days using Intl.DateTimeFormat, starting from Monday
709
+ const formatter = new Intl.DateTimeFormat(this.locale, {
710
+ weekday: 'short',
711
+ });
712
+ // Generate days starting from Monday (2023-01-02 was a Monday)
713
+ days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 2)).toUpperCase());
714
+ }
715
+ // Now reorganize based on firstDayOfWeek
716
+ // 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.
717
+ if (this.firstDayOfWeek === 0) {
718
+ // If Sunday is first day, move Sunday (last element) to the beginning
719
+ return [days[6], ...days.slice(0, 6)];
720
+ }
721
+ else if (this.firstDayOfWeek === 1) {
722
+ // If Monday is first day, return as-is (since our array starts with Monday)
723
+ return days;
724
+ }
725
+ else {
726
+ // For other first days (Tuesday=2, Wednesday=3, etc.)
727
+ const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday
728
+ return [...days.slice(offset), ...days.slice(0, offset)];
434
729
  }
435
- // Otherwise, use the default behavior
436
- const formatter = new Intl.DateTimeFormat(this.locale, {
437
- weekday: 'short',
438
- });
439
- const days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 1)).toUpperCase());
440
- // Reorganize the days based on the first day of the week
441
- const firstDays = days.slice(0, this.firstDayOfWeek);
442
- const remainingDays = days.slice(this.firstDayOfWeek);
443
- return [...remainingDays, ...firstDays];
444
730
  };
445
731
  /**
446
732
  * Generates the days of the current month
@@ -621,8 +907,15 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
621
907
  if (shortcut.singleValue) {
622
908
  const newDate = parseDate(shortcut.singleValue, this.dateFormat);
623
909
  this.selectedDate = newDate;
624
- this.singleDateChange.emit(formatDate(newDate, { dateFormat: this.dateFormat }));
625
- this.singleValue = formatDate(newDate, { dateFormat: this.dateFormat });
910
+ const formattedDate = formatDate(newDate, {
911
+ dateFormat: this.dateFormat,
912
+ });
913
+ // Update the unified value prop (like nv-fieldslider)
914
+ this.value = formattedDate;
915
+ this.valueChanged.emit(formattedDate);
916
+ // Legacy support (deprecated) - sync props
917
+ this.singleValue = formattedDate;
918
+ this.singleDateChange.emit(formattedDate);
626
919
  if (!this.showActions) {
627
920
  const event = new CustomEvent('closePopover', {
628
921
  bubbles: true,
@@ -637,14 +930,18 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
637
930
  const end = parseDate(shortcut.rangeValue.end, this.dateFormat);
638
931
  this.startDate = start;
639
932
  this.endDate = end;
640
- this.rangeDateChange.emit({
641
- start: formatDate(start, { dateFormat: this.dateFormat }),
642
- end: formatDate(end, { dateFormat: this.dateFormat }),
933
+ const startFormatted = formatDate(start, {
934
+ dateFormat: this.dateFormat,
643
935
  });
644
- this.rangeValue = {
645
- start: formatDate(start, { dateFormat: this.dateFormat }),
646
- end: formatDate(end, { dateFormat: this.dateFormat }),
647
- };
936
+ const endFormatted = formatDate(end, { dateFormat: this.dateFormat });
937
+ // Update the unified value prop (like nv-fieldslider)
938
+ this.value = `${startFormatted},${endFormatted}`;
939
+ this.valueChanged.emit(this.value);
940
+ // Legacy support (deprecated) - sync props
941
+ const legacyRange = { start: startFormatted, end: endFormatted };
942
+ this.rangeDateChange.emit(legacyRange);
943
+ // eslint-disable-next-line @stencil-community/strict-mutable
944
+ this.rangeValue = legacyRange;
648
945
  if (!this.showActions) {
649
946
  const event = new CustomEvent('closePopover', {
650
947
  bubbles: true,
@@ -652,103 +949,15 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
652
949
  });
653
950
  this.el.dispatchEvent(event);
654
951
  }
655
- this.forceCalendarUpdate(end);
952
+ this.currentDate = start;
656
953
  }
657
954
  };
658
955
  /**
659
- * Method to force the complete calendar update (and fix the persistent hover problem)
956
+ * Method to force the complete calendar update
660
957
  * @param {Date} newDate - Date to force
661
958
  */
662
959
  this.forceCalendarUpdate = newDate => {
663
960
  this.currentDate = new Date(newDate);
664
- this.currentDate = new Date(this.currentDate); // Force a re-render
665
- // Reset visually the hover/touch effect
666
- requestAnimationFrame(() => {
667
- const days = document.querySelectorAll('.day');
668
- days.forEach(el => {
669
- el.classList.remove('hover', 'active', 'touched');
670
- el.style.pointerEvents = 'none';
671
- });
672
- // Add specific touch handling (for mobile)
673
- document.body.addEventListener('touchstart', this.clearTouchState, {
674
- passive: true,
675
- });
676
- // Reset the touch state after 50ms
677
- setTimeout(() => {
678
- days.forEach(el => {
679
- el.style.pointerEvents = '';
680
- });
681
- }, 50);
682
- });
683
- };
684
- /**
685
- * Function to reset the touch effect (Mobile fix)
686
- */
687
- this.clearTouchState = () => {
688
- document.querySelectorAll('.day').forEach(el => {
689
- el.classList.remove('touched');
690
- });
691
- // Remove the listener after the first interaction
692
- document.body.removeEventListener('touchstart', this.clearTouchState);
693
- };
694
- /**
695
- * Handles month change with an offset
696
- * @param {number} direction - Direction (-1 for previous, 1 for next)
697
- * @returns {Function} Change month handler
698
- */
699
- this.getChangeMonthHandler = (direction) => {
700
- return () => this.changeMonth(direction);
701
- };
702
- /**
703
- * Handles month change from an event (ex: dropdown)
704
- * @param {number} offset - Month offset (0 by default)
705
- * @returns {Function} Change month handler
706
- */
707
- this.getHandleMonthChange = (offset) => {
708
- return (event) => this.handleMonthChange(event, offset);
709
- };
710
- /**
711
- * Handles year change from an event (ex: dropdown)
712
- * @param {number} offset - Year offset (0 by default)
713
- * @returns {Function} Change year handler
714
- */
715
- this.getHandleYearChange = (offset) => {
716
- return (event) => this.handleYearChange(event, offset);
717
- };
718
- /**
719
- * Handles day click
720
- * @param {Date} date - Date to handle
721
- * @param {boolean} isDisabled - Whether the date is disabled
722
- * @returns {Function} Day click handler
723
- */
724
- this.getDayClickHandler = (date, isDisabled) => {
725
- return isDisabled ? undefined : () => this.handleDateSelection(date);
726
- };
727
- /**
728
- * Handles shortcut selection
729
- * @param {Object} shortcut - Shortcut to handle
730
- * @param {string | Date} shortcut.singleValue - Selected date value
731
- * @param {Object} shortcut.rangeValue - Start and end date values
732
- * @param {string | Date} shortcut.rangeValue.start - Start date value
733
- * @param {string | Date} shortcut.rangeValue.end - End date value
734
- * @param {string} shortcut.label - Label
735
- * @returns {Function} Shortcut selection handler
736
- */
737
- this.getShortcutHandler = (shortcut) => {
738
- return () => this.applyShortcut(shortcut);
739
- };
740
- /**
741
- * Handles week selection
742
- * @param {Date[]} dates - Dates to handle
743
- * @param {number} index - Calendar index
744
- * @returns {Function} Week selection handler
745
- */
746
- this.getWeekSelectionHandler = (dates, index) => {
747
- return () => {
748
- if (this.selectionType === 'range') {
749
- this.handleWeekSelection(dates, index);
750
- }
751
- };
752
961
  };
753
962
  /**
754
963
  * Resets the current selection
@@ -756,14 +965,22 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
756
965
  this.resetSelection = () => {
757
966
  if (this.selectionType === 'single') {
758
967
  this.selectedDate = null;
968
+ // eslint-disable-next-line @stencil-community/strict-mutable
759
969
  this.singleValue = null;
970
+ // eslint-disable-next-line @stencil-community/strict-mutable
971
+ this.value = '';
760
972
  this.singleDateChange.emit('');
973
+ this.valueChanged.emit('');
761
974
  }
762
975
  else {
763
976
  this.startDate = null;
764
977
  this.endDate = null;
978
+ // eslint-disable-next-line @stencil-community/strict-mutable
765
979
  this.rangeValue = null;
980
+ // eslint-disable-next-line @stencil-community/strict-mutable
981
+ this.value = '';
766
982
  this.rangeDateChange.emit({ start: '', end: '' });
983
+ this.valueChanged.emit('');
767
984
  }
768
985
  };
769
986
  /**
@@ -775,6 +992,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
775
992
  dateFormat: this.dateFormat,
776
993
  });
777
994
  this.singleDateChange.emit(dateStr);
995
+ // eslint-disable-next-line @stencil-community/strict-mutable
778
996
  this.singleValue = dateStr;
779
997
  const event = new CustomEvent('closePopover', {
780
998
  bubbles: true,
@@ -789,6 +1007,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
789
1007
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
790
1008
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
791
1009
  });
1010
+ // eslint-disable-next-line @stencil-community/strict-mutable
792
1011
  this.rangeValue = {
793
1012
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
794
1013
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
@@ -811,8 +1030,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
811
1030
  * @description Renders the header of the calendar
812
1031
  */
813
1032
  this.renderHeader = (offset, index) => {
814
- return (h("div", { class: "header" }, this.numberOfCalendars > 1 && index === 0 && (h("nv-iconbutton", { class: "nav-left", emphasis: "lower", name: "chevron-left", onClick: this.getChangeMonthHandler(-1) })), h("div", { class: "date-controls" }, h("select", { class: "month-select mr-4", onChange: this.getHandleMonthChange(offset) }, this.months.map(month => (h("option", { key: month.value, value: month.value, selected: month.value === (this.currentDate.getUTCMonth() + offset) % 12 }, month.label)))), h("input", { type: "number", class: "year-input", min: "1950", max: "2100", value: this.currentDate.getUTCFullYear() +
815
- Math.floor((this.currentDate.getUTCMonth() + offset) / 12), onChange: this.getHandleYearChange(offset) })), this.numberOfCalendars === 1 && (h("div", { class: "nav-buttons" }, h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: this.getChangeMonthHandler(-1) }), h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1) }))), this.numberOfCalendars > 1 && index === this.numberOfCalendars - 1 && (h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1), class: "nav-right" }))));
1033
+ return (h(CalendarHeader, { currentDate: this.currentDate, months: this.months, numberOfCalendars: this.numberOfCalendars, calendarIndex: index, monthOffset: offset, onMonthChange: this.changeMonth, onMonthSelect: this.handleMonthChange, onYearChange: this.handleYearChange }));
816
1034
  };
817
1035
  /**
818
1036
  * Renders the week numbers
@@ -826,42 +1044,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
826
1044
  weeks,
827
1045
  /** Calendar index */
828
1046
  index) => {
829
- return (h("div", { class: "week-numbers" }, h("div", { class: "week-header" }, this.getLocalizedWeekText()), weeks.map((week, weekIndex) => {
830
- var _a;
831
- const dates = week.map(d => d.date);
832
- return (h("div", { class: `week-number ${this.selectionType === 'range' ? 'clickable' : ''}`, onClick: this.getWeekSelectionHandler(dates, index), key: `week-${weekIndex}` }, getWeekNumber(((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date())));
833
- })));
834
- };
835
- this.renderDaysGrid = (
836
- /** Days to render */
837
- days) => {
838
- return (h("div", { class: "days-grid" }, days.map(day => {
839
- const date = day.date;
840
- if (!date)
841
- return null;
842
- const isSelected = this.selectionType === 'single' &&
843
- isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });
844
- const isInRange = this.isDateInRange(date);
845
- const isStart = isSameDate(date, this.startDate, {
846
- isUTCMode: this.isUTCMode,
847
- });
848
- const isEnd = isSameDate(date, this.endDate, {
849
- isUTCMode: this.isUTCMode,
850
- });
851
- const isToday = this.isToday(date);
852
- const isOutsideMonth = !day.isCurrentMonth;
853
- const dayClasses = [
854
- 'day',
855
- isSelected ? 'selected' : '',
856
- isStart ? 'range-start' : '',
857
- isEnd ? 'range-end' : '',
858
- isInRange ? 'in-range' : '',
859
- day.isDisabled ? 'disabled' : '',
860
- isOutsideMonth ? 'outside-month' : '',
861
- isToday ? 'is-today' : '',
862
- ];
863
- return (h("div", { class: dayClasses.filter(Boolean).join(' '), onClick: this.getDayClickHandler(date, day.isDisabled), "aria-disabled": day.isDisabled, key: `day-${date.toISOString()}` }, day.dayOfMonth));
864
- })));
1047
+ return (h(WeekNumbers, { weeks: weeks, localizedWeekText: this.getLocalizedWeekText(), selectionType: this.selectionType, onWeekSelect: this.handleWeekSelection, calendarIndex: index }));
865
1048
  };
866
1049
  /**
867
1050
  * Renders the calendar
@@ -880,7 +1063,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
880
1063
  for (let i = 0; i < days.length; i += 7) {
881
1064
  weeks.push(days.slice(i, i + 7));
882
1065
  }
883
- return (h("div", { class: "calendar-wrapper" }, h("div", { class: "calendar-container", key: `calendar-${index}` }, this.renderHeader(offset, index), h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index), h("div", { class: "days-container" }, h("div", { class: "days-header" }, this.getDayNames().map(day => (h("div", { class: "day-header" }, day)))), this.renderDaysGrid(days)))), index < this.numberOfCalendars - 1 && (h("div", { class: "calendar-separator" }))));
1066
+ return (h("div", { class: "calendar-wrapper" }, h("div", { class: "calendar-container", key: `calendar-${index}` }, this.renderHeader(offset, index), h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index), h(CalendarGrid, { days: days, dayNames: this.getDayNames(), selectionType: this.selectionType, selectedDate: this.selectedDate, startDate: this.startDate, endDate: this.endDate, isUTCMode: this.isUTCMode, onDayClick: this.handleDateSelection, isDateInRange: this.isDateInRange, isToday: this.isToday }))), index < this.numberOfCalendars - 1 && (h("div", { class: "calendar-separator" }))));
884
1067
  };
885
1068
  /**
886
1069
  * Renders the shortcuts
@@ -891,7 +1074,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
891
1074
  if (!this.hasShortcuts) {
892
1075
  return null;
893
1076
  }
894
- return (h("div", { class: `shortcuts-container shortcuts-placement-${this.shortcutsPlacement}` }, this.shortcuts.map(shortcut => (h("nv-button", { emphasis: "lower", size: "xs", "aria-label": shortcut.label, onClick: this.getShortcutHandler(shortcut) }, shortcut.label)))));
1077
+ return (h(CalendarShortcuts, { shortcuts: this.shortcuts, placement: this.shortcutsPlacement, onShortcutClick: this.applyShortcut }));
895
1078
  };
896
1079
  /**
897
1080
  * Renders the actions
@@ -900,7 +1083,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
900
1083
  * @slot actions - Child content of the component.
901
1084
  */
902
1085
  this.renderActions = () => {
903
- return (h("div", { class: "datepicker-actions" }, h("slot", { name: "actions" }, h("nv-button", { emphasis: "low", size: "xs", onClick: this.resetSelection }, "Cancel"), h("nv-button", { size: "xs", onClick: this.confirmSelection }, "OK"))));
1086
+ return (h("div", { class: "datepicker-actions" }, h("slot", { name: "actions" }, h(CalendarActions, { onReset: this.resetSelection, onConfirm: this.confirmSelection, useSlot: false }))));
904
1087
  };
905
1088
  }
906
1089
  //#endregion EVENTS
@@ -928,7 +1111,11 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
928
1111
  const { startDate, endDate } = this.validateDateRange(newValue.start, newValue.end);
929
1112
  this.startDate = startDate;
930
1113
  this.endDate = endDate;
931
- this.currentDate = startDate;
1114
+ // Do not navigate to the start date if data-prevent-navigation attribute is present
1115
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
1116
+ if (!preventNavigation) {
1117
+ this.currentDate = startDate;
1118
+ }
932
1119
  }
933
1120
  catch (error) {
934
1121
  console.error('Invalid rangeValue:', error);
@@ -952,16 +1139,34 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
952
1139
  const parsedDate = parseDate(newValue, this.dateFormat);
953
1140
  if (parsedDate) {
954
1141
  this.selectedDate = parsedDate;
955
- this.currentDate = parsedDate;
1142
+ // Do not navigate to the selected date if data-prevent-navigation attribute is present
1143
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
1144
+ if (!preventNavigation) {
1145
+ this.currentDate = parsedDate;
1146
+ }
956
1147
  }
957
1148
  }
958
1149
  }
1150
+ /**
1151
+ * Watches the changes of the unified value prop
1152
+ * @param {string} newValue - New value
1153
+ * @param {string} oldValue - Old value
1154
+ */
1155
+ onValueChange(newValue, oldValue) {
1156
+ if (newValue !== oldValue) {
1157
+ this.parseUnifiedValue(newValue);
1158
+ }
1159
+ }
959
1160
  //#endregion WATCHERS
960
1161
  /****************************************************************************/
961
1162
  //#region LIFECYCLE
962
1163
  componentWillLoad() {
963
1164
  this.parseDisabledDates();
964
- if (this.selectionType === 'single' && this.singleValue) {
1165
+ // Initialize from unified value prop if provided
1166
+ if (this.value) {
1167
+ this.parseUnifiedValue(this.value);
1168
+ }
1169
+ else if (this.selectionType === 'single' && this.singleValue) {
965
1170
  this.selectedDate = parseDate(this.singleValue, this.dateFormat);
966
1171
  this.currentDate = this.selectedDate;
967
1172
  }
@@ -974,6 +1179,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
974
1179
  this.currentDate = startDate;
975
1180
  if (swapped) {
976
1181
  // If dates were swapped, update the rangeValue property
1182
+ // eslint-disable-next-line @stencil-community/strict-mutable
977
1183
  this.rangeValue = {
978
1184
  start: formatDate(startDate, { dateFormat: this.dateFormat }),
979
1185
  end: formatDate(endDate, { dateFormat: this.dateFormat }),
@@ -985,7 +1191,8 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
985
1191
  console.error('Invalid rangeValue:', error);
986
1192
  }
987
1193
  }
988
- else {
1194
+ // Ensure currentDate is always initialized
1195
+ if (!this.currentDate) {
989
1196
  this.currentDate = new Date();
990
1197
  }
991
1198
  this.initializeMonths();
@@ -1055,20 +1262,22 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
1055
1262
  * @slot default - Child content of the component.
1056
1263
  */
1057
1264
  render() {
1058
- return (h(Host, { key: 'd265f105851253b5aa2a40e055f8e51b5cb6b553' }, h("div", { key: 'c6e1ea923b17f7684243598109e4cffc767248d7', class: "datepicker-root" }, h("div", { key: '5fc4cfbf3f6d823c500408d0f81f5f15d3e654d7', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, h("div", { key: '035dac25c8b8090e1a3a0ac2493865907f665da9', class: `datepicker-wrapper ${this.numberOfCalendars === 1 ? 'single' : ''}` }, this.shortcutsPlacement === 'left' && this.renderShortcuts(), Array.from({ length: this.numberOfCalendars }, (_, index) => this.renderCalendar(index, index)), this.shortcutsPlacement === 'right' && this.renderShortcuts()), ((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||
1059
- this.hasActions) && (h("div", { key: '91c21c945ab53acda631a8c50fb1437665fce030', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), h("slot", { key: '3799c412c842e406715c235d3288022c2a734ed2' })));
1265
+ return (h(Host, { key: '43d4f3ab9199e9c5f15e853f15283fa59e4a436d' }, h("div", { key: 'b9956225cb2c16d997aa44266af8f8c8222ea968', class: "datepicker-root" }, h("div", { key: '05b63935bc5ebf500bb52d10688385f994b47fb4', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, h("div", { key: 'd7af15b9ce051026cf841b3be361b32d8db41fc1', class: `datepicker-wrapper ${this.numberOfCalendars === 1 ? 'single' : ''}` }, this.shortcutsPlacement === 'left' && this.renderShortcuts(), Array.from({ length: this.numberOfCalendars }, (_, index) => this.renderCalendar(index, index)), this.shortcutsPlacement === 'right' && this.renderShortcuts()), ((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||
1266
+ this.hasActions) && (h("div", { key: '1765334bf15564bc9886b210c54bddba64c7042e', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), h("slot", { key: '0ac3446394b8c23b859e5f0065370b95b6fd05d2' })));
1060
1267
  }
1061
1268
  get el() { return this; }
1062
1269
  static get watchers() { return {
1063
1270
  "numberOfCalendars": ["validateNumberOfCalendars"],
1064
1271
  "rangeValue": ["onRangeValueChange"],
1065
1272
  "disabledDates": ["handleDisabledDatesChange"],
1066
- "singleValue": ["onSingleValueChange"]
1273
+ "singleValue": ["onSingleValueChange"],
1274
+ "value": ["onValueChange"]
1067
1275
  }; }
1068
1276
  static get style() { return NvCalendarStyle0; }
1069
1277
  }, [4, "nv-calendar", {
1070
1278
  "firstDayOfWeek": [514, "first-day-of-week"],
1071
1279
  "numberOfCalendars": [1538, "number-of-calendars"],
1280
+ "value": [1537],
1072
1281
  "singleValue": [1537, "single-value"],
1073
1282
  "rangeValue": [1040],
1074
1283
  "min": [513],
@@ -1090,43 +1299,24 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
1090
1299
  "numberOfCalendars": ["validateNumberOfCalendars"],
1091
1300
  "rangeValue": ["onRangeValueChange"],
1092
1301
  "disabledDates": ["handleDisabledDatesChange"],
1093
- "singleValue": ["onSingleValueChange"]
1302
+ "singleValue": ["onSingleValueChange"],
1303
+ "value": ["onValueChange"]
1094
1304
  }]);
1095
1305
  function defineCustomElement() {
1096
1306
  if (typeof customElements === "undefined") {
1097
1307
  return;
1098
1308
  }
1099
- const components = ["nv-calendar", "nv-button", "nv-icon", "nv-iconbutton", "nv-loader"];
1309
+ const components = ["nv-calendar"];
1100
1310
  components.forEach(tagName => { switch (tagName) {
1101
1311
  case "nv-calendar":
1102
1312
  if (!customElements.get(tagName)) {
1103
1313
  customElements.define(tagName, NvCalendar);
1104
1314
  }
1105
1315
  break;
1106
- case "nv-button":
1107
- if (!customElements.get(tagName)) {
1108
- defineCustomElement$4();
1109
- }
1110
- break;
1111
- case "nv-icon":
1112
- if (!customElements.get(tagName)) {
1113
- defineCustomElement$3();
1114
- }
1115
- break;
1116
- case "nv-iconbutton":
1117
- if (!customElements.get(tagName)) {
1118
- defineCustomElement$2();
1119
- }
1120
- break;
1121
- case "nv-loader":
1122
- if (!customElements.get(tagName)) {
1123
- defineCustomElement$1();
1124
- }
1125
- break;
1126
1316
  } });
1127
1317
  }
1128
1318
  defineCustomElement();
1129
1319
 
1130
1320
  export { NvCalendar as N, commonjsGlobal as c, defineCustomElement as d, getDefaultExportFromCjs as g };
1131
1321
 
1132
- //# sourceMappingURL=p-854c32dc.js.map
1322
+ //# sourceMappingURL=p-5e90b9b8.js.map