@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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-9bda5507.js');
5
+ const index = require('./index-c56424e5.js');
6
6
  const constants = require('./constants-8fb8ccc0.js');
7
7
  const _commonjsHelpers = require('./_commonjsHelpers-b3309d7b.js');
8
8
 
@@ -160,9 +160,18 @@ function isSameOrAfter(date, compareDate, options) {
160
160
  * @returns {number} Week number
161
161
  */
162
162
  function getWeekNumber(date) {
163
- const startOfYear = new Date(date.getFullYear(), 0, 1);
164
- const pastDaysOfYear = (date.getTime() - startOfYear.getTime()) / 86400000;
165
- return Math.ceil((pastDaysOfYear + startOfYear.getDay() + 1) / 7);
163
+ // Create a copy of the date to avoid modifying the original
164
+ const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
165
+ // Adjust to the same week Thursday (ISO 8601)
166
+ d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));
167
+ // Calculate the first Thursday of the year
168
+ const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));
169
+ // Calculate the week number
170
+ return (1 +
171
+ Math.round(((d.getTime() - week1.getTime()) / 86400000 -
172
+ 3 +
173
+ ((week1.getUTCDay() + 6) % 7)) /
174
+ 7));
166
175
  }
167
176
  /**
168
177
  * Convert a date string/Date to a Date without timezone offset
@@ -236,7 +245,176 @@ function parseDate(dateInput, dateFormat) {
236
245
  return parsed.toDate();
237
246
  }
238
247
 
239
- 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)}}";
248
+ /**
249
+ * Renders a single day cell in the calendar grid
250
+ * @param {DayCellProps} props - Component properties
251
+ * @returns {JSX.Element} JSX element representing a day cell
252
+ */
253
+ const DayCell = props => {
254
+ const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, } = props;
255
+ // Build CSS classes for the day cell
256
+ const dayClasses = [
257
+ 'day',
258
+ isSelected ? 'selected' : '',
259
+ isStart ? 'range-start' : '',
260
+ isEnd ? 'range-end' : '',
261
+ isInRange ? 'in-range' : '',
262
+ isDisabled ? 'disabled' : '',
263
+ !isCurrentMonth ? 'outside-month' : '',
264
+ isToday ? 'is-today' : '',
265
+ ]
266
+ .filter(Boolean)
267
+ .join(' ');
268
+ const handleClick = () => {
269
+ if (!isDisabled && onClick) {
270
+ onClick(date);
271
+ }
272
+ };
273
+ return (
274
+ // eslint-disable-next-line react/jsx-no-bind
275
+ index.h("div", { class: dayClasses, onClick: handleClick, "aria-disabled": isDisabled }, dayOfMonth));
276
+ };
277
+
278
+ /**
279
+ * Renders the action buttons for the calendar (Cancel/OK)
280
+ * @param {CalendarActionsProps} props - Component properties
281
+ * @returns {JSX.Element} JSX element representing the action buttons
282
+ */
283
+ const CalendarActions = props => {
284
+ const { onReset, onConfirm, useSlot = false } = props;
285
+ return (index.h("div", { class: "datepicker-actions" }, useSlot ? (index.h("slot", { name: "actions" },
286
+ index.h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
287
+ index.h("nv-button", { size: "xs", onClick: onConfirm }, "OK"))) : (index.h("div", null,
288
+ index.h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
289
+ index.h("nv-button", { size: "xs", onClick: onConfirm }, "OK")))));
290
+ };
291
+
292
+ /**
293
+ * Renders the week numbers column for the calendar
294
+ * @param {WeekNumbersProps} props - Component properties
295
+ * @returns {JSX.Element} JSX element representing the week numbers
296
+ */
297
+ const WeekNumbers = props => {
298
+ const { weeks, localizedWeekText, selectionType, onWeekSelect, calendarIndex, } = props;
299
+ /**
300
+ * Handles click on a week number for range selection
301
+ * @param {Array<WeekData>} week - Week data
302
+ */
303
+ const handleWeekClick = (week) => {
304
+ if (selectionType === 'range') {
305
+ const dates = week.map(d => d.date);
306
+ onWeekSelect(dates, calendarIndex);
307
+ }
308
+ };
309
+ /**
310
+ * Creates a click handler for a specific week
311
+ * @param {Array<WeekData>} week - Week data
312
+ * @returns {() => void} Click handler function
313
+ */
314
+ const createWeekHandler = (week) => {
315
+ return () => handleWeekClick(week);
316
+ };
317
+ return (index.h("div", { class: "week-numbers" },
318
+ index.h("div", { class: "week-header" }, localizedWeekText),
319
+ weeks.map((week, weekIndex) => {
320
+ var _a;
321
+ const firstDayWithDate = ((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date();
322
+ const weekNumber = getWeekNumber(firstDayWithDate);
323
+ const isClickable = selectionType === 'range';
324
+ return (index.h("div", { class: `week-number ${isClickable ? 'clickable' : ''}`, onClick: createWeekHandler(week), key: `week-${weekIndex}`, role: isClickable ? 'button' : undefined, tabindex: isClickable ? 0 : undefined }, weekNumber));
325
+ })));
326
+ };
327
+
328
+ /**
329
+ * Renders the shortcuts for quick date selection
330
+ * @param {CalendarShortcutsProps} props - Component properties
331
+ * @returns {JSX.Element | null} JSX element representing the shortcuts or null if no shortcuts
332
+ */
333
+ const CalendarShortcuts = props => {
334
+ const { shortcuts, placement, onShortcutClick } = props;
335
+ if (!shortcuts || shortcuts.length === 0) {
336
+ return null;
337
+ }
338
+ /**
339
+ * Creates a click handler for a specific shortcut
340
+ * @param {ShortcutData} shortcut - The shortcut data
341
+ * @returns {() => void} Click handler function
342
+ */
343
+ const createShortcutHandler = (shortcut) => {
344
+ return () => onShortcutClick(shortcut);
345
+ };
346
+ return (index.h("div", { class: `shortcuts-container shortcuts-placement-${placement}` }, shortcuts.map((shortcut, index$1) => (index.h("nv-button", { key: `shortcut-${index$1}`, emphasis: "lower", size: "xs", "aria-label": shortcut.label, onClick: createShortcutHandler(shortcut) }, shortcut.label)))));
347
+ };
348
+
349
+ /**
350
+ * Renders the calendar header with navigation and date controls
351
+ * @param {CalendarHeaderProps} props - Component properties
352
+ * @returns {JSX.Element} JSX element representing the calendar header
353
+ */
354
+ const CalendarHeader = props => {
355
+ const { currentDate, months, numberOfCalendars, calendarIndex, monthOffset, onMonthChange, onMonthSelect, onYearChange, } = props;
356
+ /**
357
+ * Creates navigation handler for month change
358
+ * @param {number} direction - Direction of navigation (-1 or 1)
359
+ * @returns {() => void} Navigation handler function
360
+ */
361
+ const createNavigationHandler = (direction) => {
362
+ return () => onMonthChange(direction);
363
+ };
364
+ /**
365
+ * Creates month selection handler
366
+ * @param {number} offset - Month offset
367
+ * @returns {(event: Event) => void} Month selection handler function
368
+ */
369
+ const createMonthSelectHandler = (offset) => {
370
+ return (event) => onMonthSelect(event, offset);
371
+ };
372
+ /**
373
+ * Creates year change handler
374
+ * @param {number} offset - Month offset
375
+ * @returns {(event: Event) => void} Year change handler function
376
+ */
377
+ const createYearChangeHandler = (offset) => {
378
+ return (event) => onYearChange(event, offset);
379
+ };
380
+ const currentMonth = (currentDate.getUTCMonth() + monthOffset) % 12;
381
+ const currentYear = currentDate.getUTCFullYear() +
382
+ Math.floor((currentDate.getUTCMonth() + monthOffset) / 12);
383
+ return (index.h("div", { class: "header" },
384
+ numberOfCalendars > 1 && calendarIndex === 0 && (index.h("nv-iconbutton", { class: "nav-left", emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) })),
385
+ index.h("div", { class: "date-controls" },
386
+ index.h("select", { class: "month-select mr-4", onChange: createMonthSelectHandler(monthOffset) }, months.map(month => (index.h("option", { key: month.value, value: month.value, selected: month.value === currentMonth }, month.label)))),
387
+ index.h("input", { type: "number", class: "year-input", min: "1950", max: "2100", value: currentYear, onChange: createYearChangeHandler(monthOffset) })),
388
+ numberOfCalendars === 1 && (index.h("div", { class: "nav-buttons" },
389
+ index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) }),
390
+ index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1) }))),
391
+ numberOfCalendars > 1 && calendarIndex === numberOfCalendars - 1 && (index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1), class: "nav-right" }))));
392
+ };
393
+
394
+ /**
395
+ * Renders the calendar grid with day headers and day cells
396
+ * @param {CalendarGridProps} props - Component properties
397
+ * @returns {JSX.Element} JSX element representing the calendar grid
398
+ */
399
+ const CalendarGrid = props => {
400
+ const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, } = props;
401
+ return (index.h("div", { class: "days-container" },
402
+ index.h("div", { class: "days-header" }, dayNames.map((day, index$1) => (index.h("div", { class: "day-header", key: `day-header-${index$1}` }, day)))),
403
+ index.h("div", { class: "days-grid" }, days.map(day => {
404
+ const date = day.date;
405
+ if (!date)
406
+ return null;
407
+ const isSelected = selectionType === 'single' &&
408
+ isSameDate(date, selectedDate, { isUTCMode });
409
+ const isInRange = isDateInRange(date);
410
+ const isStart = isSameDate(date, startDate, { isUTCMode });
411
+ const isEnd = isSameDate(date, endDate, { isUTCMode });
412
+ const isTodayDate = isToday(date);
413
+ return (index.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 }));
414
+ }))));
415
+ };
416
+
417
+ 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)}}";
240
418
  const NvCalendarStyle0 = nvCalendarCss;
241
419
 
242
420
  const NvCalendar = class {
@@ -244,18 +422,28 @@ const NvCalendar = class {
244
422
  index.registerInstance(this, hostRef);
245
423
  this.singleDateChange = index.createEvent(this, "singleDateChange", 7);
246
424
  this.rangeDateChange = index.createEvent(this, "rangeDateChange", 7);
425
+ this.valueChanged = index.createEvent(this, "valueChanged", 7);
247
426
  /****************************************************************************/
248
427
  //#region PROPERTIES
249
428
  /**
250
429
  * First day of the week (0 = Sunday, 1 = Monday, etc.)
251
- * @default 0
430
+ * @default 1
252
431
  */
253
- this.firstDayOfWeek = 0;
432
+ this.firstDayOfWeek = 1;
254
433
  /**
255
434
  * Number of calendars to display
256
435
  * @default 1
257
436
  */
258
437
  this.numberOfCalendars = 1;
438
+ /**
439
+ * Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.
440
+ * Examples:
441
+ * - Single: "2025-03-15"
442
+ * - Range: "2025-03-15,2025-03-20"
443
+ * @default ""
444
+ */
445
+ // eslint-disable-next-line @stencil-community/strict-mutable
446
+ this.value = '';
259
447
  /**
260
448
  * Locale for date formatting
261
449
  * @default 'en-BE'
@@ -293,6 +481,75 @@ const NvCalendar = class {
293
481
  this.endDate = null;
294
482
  /** List of formatted months for the selector */
295
483
  this.months = [];
484
+ /**
485
+ * Parses the unified value prop and synchronizes with internal state
486
+ * @param {string} value - Value to parse
487
+ */
488
+ this.parseUnifiedValue = (value) => {
489
+ if (!value) {
490
+ // Reset all selections
491
+ this.selectedDate = null;
492
+ this.startDate = null;
493
+ this.endDate = null;
494
+ return;
495
+ }
496
+ const values = value
497
+ .split(',')
498
+ .map(v => v.trim())
499
+ .filter(Boolean);
500
+ if (this.selectionType === 'single' && values.length >= 1) {
501
+ const parsedDate = parseDate(values[0], this.dateFormat);
502
+ if (parsedDate) {
503
+ this.selectedDate = parsedDate;
504
+ // Only sync with legacy prop if not using actions (immediate mode)
505
+ if (!this.showActions) {
506
+ this.singleValue = values[0];
507
+ }
508
+ // Navigate to the date if not prevented
509
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
510
+ if (!preventNavigation) {
511
+ this.currentDate = parsedDate;
512
+ }
513
+ }
514
+ else {
515
+ // Handle malformed date gracefully - reset state
516
+ console.warn(`Invalid date format: ${values[0]}`);
517
+ this.selectedDate = null;
518
+ if (!this.showActions) {
519
+ this.singleValue = '';
520
+ }
521
+ }
522
+ }
523
+ else if (this.selectionType === 'range' && values.length >= 2) {
524
+ const startDate = parseDate(values[0], this.dateFormat);
525
+ const endDate = parseDate(values[1], this.dateFormat);
526
+ if (startDate && endDate) {
527
+ this.startDate = startDate;
528
+ this.endDate = endDate;
529
+ // Only sync with legacy prop if not using actions (immediate mode)
530
+ if (!this.showActions) {
531
+ this.rangeValue = {
532
+ start: values[0],
533
+ end: values[1],
534
+ };
535
+ }
536
+ // Navigate to start date if not prevented
537
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
538
+ if (!preventNavigation) {
539
+ this.currentDate = startDate;
540
+ }
541
+ }
542
+ else {
543
+ // Handle malformed dates gracefully - reset state
544
+ console.warn(`Invalid date range format: ${values[0]}, ${values[1]}`);
545
+ this.startDate = null;
546
+ this.endDate = null;
547
+ if (!this.showActions) {
548
+ this.rangeValue = { start: '', end: '' };
549
+ }
550
+ }
551
+ }
552
+ };
296
553
  /**
297
554
  * Change the displayed month
298
555
  * @param {number} offset - Month offset (-1 for previous, 1 for next)
@@ -340,7 +597,14 @@ const NvCalendar = class {
340
597
  return;
341
598
  const formattedDate = formatDate(date, { dateFormat: this.dateFormat });
342
599
  this.selectedDate = date;
343
- this.singleDateChange.emit(formattedDate);
600
+ // Update the unified value prop (like nv-fieldslider)
601
+ this.value = formattedDate;
602
+ this.valueChanged.emit(formattedDate);
603
+ // Legacy support (deprecated) - only sync props if not using actions
604
+ if (!this.showActions) {
605
+ this.singleValue = formattedDate;
606
+ this.singleDateChange.emit(formattedDate);
607
+ }
344
608
  };
345
609
  /**
346
610
  * Handles range date selection
@@ -348,18 +612,32 @@ const NvCalendar = class {
348
612
  */
349
613
  this.handleRangeSelection = (date) => {
350
614
  if (!this.startDate || (this.startDate && this.endDate)) {
615
+ // Start new range selection
351
616
  this.startDate = date;
352
617
  this.endDate = null;
353
618
  }
354
619
  else {
620
+ // Complete range selection
355
621
  this.endDate = date;
622
+ // Ensure correct order
356
623
  if (this.startDate > this.endDate) {
357
624
  [this.startDate, this.endDate] = [this.endDate, this.startDate];
358
625
  }
359
- this.rangeDateChange.emit({
360
- start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
361
- end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
626
+ const startFormatted = formatDate(this.startDate, {
627
+ dateFormat: this.dateFormat,
628
+ });
629
+ const endFormatted = formatDate(this.endDate, {
630
+ dateFormat: this.dateFormat,
362
631
  });
632
+ // Update the unified value prop (like nv-fieldslider)
633
+ this.value = `${startFormatted},${endFormatted}`;
634
+ this.valueChanged.emit(this.value);
635
+ // Legacy support (deprecated) - only sync props if not using actions
636
+ if (!this.showActions) {
637
+ const legacyRange = { start: startFormatted, end: endFormatted };
638
+ this.rangeDateChange.emit(legacyRange);
639
+ this.rangeValue = legacyRange;
640
+ }
363
641
  }
364
642
  };
365
643
  /**
@@ -418,23 +696,35 @@ const NvCalendar = class {
418
696
  * @returns {string[]} Array of short day names
419
697
  */
420
698
  this.getDayNames = () => {
699
+ let days;
421
700
  // If we have custom day names for this locale
422
701
  if (constants.CUSTOM_DAY_NAMES[this.locale]) {
423
- const days = [...constants.CUSTOM_DAY_NAMES[this.locale]];
424
- // Reorganize the days based on the first day of the week
425
- const firstDays = days.slice(0, this.firstDayOfWeek);
426
- const remainingDays = days.slice(this.firstDayOfWeek);
427
- return [...remainingDays, ...firstDays];
702
+ // Custom day names are expected to start with Monday (index 0 = Monday)
703
+ days = [...constants.CUSTOM_DAY_NAMES[this.locale]];
704
+ }
705
+ else {
706
+ // Generate days using Intl.DateTimeFormat, starting from Monday
707
+ const formatter = new Intl.DateTimeFormat(this.locale, {
708
+ weekday: 'short',
709
+ });
710
+ // Generate days starting from Monday (2023-01-02 was a Monday)
711
+ days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 2)).toUpperCase());
712
+ }
713
+ // Now reorganize based on firstDayOfWeek
714
+ // 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.
715
+ if (this.firstDayOfWeek === 0) {
716
+ // If Sunday is first day, move Sunday (last element) to the beginning
717
+ return [days[6], ...days.slice(0, 6)];
718
+ }
719
+ else if (this.firstDayOfWeek === 1) {
720
+ // If Monday is first day, return as-is (since our array starts with Monday)
721
+ return days;
722
+ }
723
+ else {
724
+ // For other first days (Tuesday=2, Wednesday=3, etc.)
725
+ const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday
726
+ return [...days.slice(offset), ...days.slice(0, offset)];
428
727
  }
429
- // Otherwise, use the default behavior
430
- const formatter = new Intl.DateTimeFormat(this.locale, {
431
- weekday: 'short',
432
- });
433
- const days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 1)).toUpperCase());
434
- // Reorganize the days based on the first day of the week
435
- const firstDays = days.slice(0, this.firstDayOfWeek);
436
- const remainingDays = days.slice(this.firstDayOfWeek);
437
- return [...remainingDays, ...firstDays];
438
728
  };
439
729
  /**
440
730
  * Generates the days of the current month
@@ -615,8 +905,15 @@ const NvCalendar = class {
615
905
  if (shortcut.singleValue) {
616
906
  const newDate = parseDate(shortcut.singleValue, this.dateFormat);
617
907
  this.selectedDate = newDate;
618
- this.singleDateChange.emit(formatDate(newDate, { dateFormat: this.dateFormat }));
619
- this.singleValue = formatDate(newDate, { dateFormat: this.dateFormat });
908
+ const formattedDate = formatDate(newDate, {
909
+ dateFormat: this.dateFormat,
910
+ });
911
+ // Update the unified value prop (like nv-fieldslider)
912
+ this.value = formattedDate;
913
+ this.valueChanged.emit(formattedDate);
914
+ // Legacy support (deprecated) - sync props
915
+ this.singleValue = formattedDate;
916
+ this.singleDateChange.emit(formattedDate);
620
917
  if (!this.showActions) {
621
918
  const event = new CustomEvent('closePopover', {
622
919
  bubbles: true,
@@ -631,14 +928,18 @@ const NvCalendar = class {
631
928
  const end = parseDate(shortcut.rangeValue.end, this.dateFormat);
632
929
  this.startDate = start;
633
930
  this.endDate = end;
634
- this.rangeDateChange.emit({
635
- start: formatDate(start, { dateFormat: this.dateFormat }),
636
- end: formatDate(end, { dateFormat: this.dateFormat }),
931
+ const startFormatted = formatDate(start, {
932
+ dateFormat: this.dateFormat,
637
933
  });
638
- this.rangeValue = {
639
- start: formatDate(start, { dateFormat: this.dateFormat }),
640
- end: formatDate(end, { dateFormat: this.dateFormat }),
641
- };
934
+ const endFormatted = formatDate(end, { dateFormat: this.dateFormat });
935
+ // Update the unified value prop (like nv-fieldslider)
936
+ this.value = `${startFormatted},${endFormatted}`;
937
+ this.valueChanged.emit(this.value);
938
+ // Legacy support (deprecated) - sync props
939
+ const legacyRange = { start: startFormatted, end: endFormatted };
940
+ this.rangeDateChange.emit(legacyRange);
941
+ // eslint-disable-next-line @stencil-community/strict-mutable
942
+ this.rangeValue = legacyRange;
642
943
  if (!this.showActions) {
643
944
  const event = new CustomEvent('closePopover', {
644
945
  bubbles: true,
@@ -646,103 +947,15 @@ const NvCalendar = class {
646
947
  });
647
948
  this.el.dispatchEvent(event);
648
949
  }
649
- this.forceCalendarUpdate(end);
950
+ this.currentDate = start;
650
951
  }
651
952
  };
652
953
  /**
653
- * Method to force the complete calendar update (and fix the persistent hover problem)
954
+ * Method to force the complete calendar update
654
955
  * @param {Date} newDate - Date to force
655
956
  */
656
957
  this.forceCalendarUpdate = newDate => {
657
958
  this.currentDate = new Date(newDate);
658
- this.currentDate = new Date(this.currentDate); // Force a re-render
659
- // Reset visually the hover/touch effect
660
- requestAnimationFrame(() => {
661
- const days = document.querySelectorAll('.day');
662
- days.forEach(el => {
663
- el.classList.remove('hover', 'active', 'touched');
664
- el.style.pointerEvents = 'none';
665
- });
666
- // Add specific touch handling (for mobile)
667
- document.body.addEventListener('touchstart', this.clearTouchState, {
668
- passive: true,
669
- });
670
- // Reset the touch state after 50ms
671
- setTimeout(() => {
672
- days.forEach(el => {
673
- el.style.pointerEvents = '';
674
- });
675
- }, 50);
676
- });
677
- };
678
- /**
679
- * Function to reset the touch effect (Mobile fix)
680
- */
681
- this.clearTouchState = () => {
682
- document.querySelectorAll('.day').forEach(el => {
683
- el.classList.remove('touched');
684
- });
685
- // Remove the listener after the first interaction
686
- document.body.removeEventListener('touchstart', this.clearTouchState);
687
- };
688
- /**
689
- * Handles month change with an offset
690
- * @param {number} direction - Direction (-1 for previous, 1 for next)
691
- * @returns {Function} Change month handler
692
- */
693
- this.getChangeMonthHandler = (direction) => {
694
- return () => this.changeMonth(direction);
695
- };
696
- /**
697
- * Handles month change from an event (ex: dropdown)
698
- * @param {number} offset - Month offset (0 by default)
699
- * @returns {Function} Change month handler
700
- */
701
- this.getHandleMonthChange = (offset) => {
702
- return (event) => this.handleMonthChange(event, offset);
703
- };
704
- /**
705
- * Handles year change from an event (ex: dropdown)
706
- * @param {number} offset - Year offset (0 by default)
707
- * @returns {Function} Change year handler
708
- */
709
- this.getHandleYearChange = (offset) => {
710
- return (event) => this.handleYearChange(event, offset);
711
- };
712
- /**
713
- * Handles day click
714
- * @param {Date} date - Date to handle
715
- * @param {boolean} isDisabled - Whether the date is disabled
716
- * @returns {Function} Day click handler
717
- */
718
- this.getDayClickHandler = (date, isDisabled) => {
719
- return isDisabled ? undefined : () => this.handleDateSelection(date);
720
- };
721
- /**
722
- * Handles shortcut selection
723
- * @param {Object} shortcut - Shortcut to handle
724
- * @param {string | Date} shortcut.singleValue - Selected date value
725
- * @param {Object} shortcut.rangeValue - Start and end date values
726
- * @param {string | Date} shortcut.rangeValue.start - Start date value
727
- * @param {string | Date} shortcut.rangeValue.end - End date value
728
- * @param {string} shortcut.label - Label
729
- * @returns {Function} Shortcut selection handler
730
- */
731
- this.getShortcutHandler = (shortcut) => {
732
- return () => this.applyShortcut(shortcut);
733
- };
734
- /**
735
- * Handles week selection
736
- * @param {Date[]} dates - Dates to handle
737
- * @param {number} index - Calendar index
738
- * @returns {Function} Week selection handler
739
- */
740
- this.getWeekSelectionHandler = (dates, index) => {
741
- return () => {
742
- if (this.selectionType === 'range') {
743
- this.handleWeekSelection(dates, index);
744
- }
745
- };
746
959
  };
747
960
  /**
748
961
  * Resets the current selection
@@ -750,14 +963,22 @@ const NvCalendar = class {
750
963
  this.resetSelection = () => {
751
964
  if (this.selectionType === 'single') {
752
965
  this.selectedDate = null;
966
+ // eslint-disable-next-line @stencil-community/strict-mutable
753
967
  this.singleValue = null;
968
+ // eslint-disable-next-line @stencil-community/strict-mutable
969
+ this.value = '';
754
970
  this.singleDateChange.emit('');
971
+ this.valueChanged.emit('');
755
972
  }
756
973
  else {
757
974
  this.startDate = null;
758
975
  this.endDate = null;
976
+ // eslint-disable-next-line @stencil-community/strict-mutable
759
977
  this.rangeValue = null;
978
+ // eslint-disable-next-line @stencil-community/strict-mutable
979
+ this.value = '';
760
980
  this.rangeDateChange.emit({ start: '', end: '' });
981
+ this.valueChanged.emit('');
761
982
  }
762
983
  };
763
984
  /**
@@ -769,6 +990,7 @@ const NvCalendar = class {
769
990
  dateFormat: this.dateFormat,
770
991
  });
771
992
  this.singleDateChange.emit(dateStr);
993
+ // eslint-disable-next-line @stencil-community/strict-mutable
772
994
  this.singleValue = dateStr;
773
995
  const event = new CustomEvent('closePopover', {
774
996
  bubbles: true,
@@ -783,6 +1005,7 @@ const NvCalendar = class {
783
1005
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
784
1006
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
785
1007
  });
1008
+ // eslint-disable-next-line @stencil-community/strict-mutable
786
1009
  this.rangeValue = {
787
1010
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
788
1011
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
@@ -805,8 +1028,7 @@ const NvCalendar = class {
805
1028
  * @description Renders the header of the calendar
806
1029
  */
807
1030
  this.renderHeader = (offset, index$1) => {
808
- return (index.h("div", { class: "header" }, this.numberOfCalendars > 1 && index$1 === 0 && (index.h("nv-iconbutton", { class: "nav-left", emphasis: "lower", name: "chevron-left", onClick: this.getChangeMonthHandler(-1) })), index.h("div", { class: "date-controls" }, index.h("select", { class: "month-select mr-4", onChange: this.getHandleMonthChange(offset) }, this.months.map(month => (index.h("option", { key: month.value, value: month.value, selected: month.value === (this.currentDate.getUTCMonth() + offset) % 12 }, month.label)))), index.h("input", { type: "number", class: "year-input", min: "1950", max: "2100", value: this.currentDate.getUTCFullYear() +
809
- Math.floor((this.currentDate.getUTCMonth() + offset) / 12), onChange: this.getHandleYearChange(offset) })), this.numberOfCalendars === 1 && (index.h("div", { class: "nav-buttons" }, index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: this.getChangeMonthHandler(-1) }), index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1) }))), this.numberOfCalendars > 1 && index$1 === this.numberOfCalendars - 1 && (index.h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1), class: "nav-right" }))));
1031
+ return (index.h(CalendarHeader, { currentDate: this.currentDate, months: this.months, numberOfCalendars: this.numberOfCalendars, calendarIndex: index$1, monthOffset: offset, onMonthChange: this.changeMonth, onMonthSelect: this.handleMonthChange, onYearChange: this.handleYearChange }));
810
1032
  };
811
1033
  /**
812
1034
  * Renders the week numbers
@@ -820,42 +1042,7 @@ const NvCalendar = class {
820
1042
  weeks,
821
1043
  /** Calendar index */
822
1044
  index$1) => {
823
- return (index.h("div", { class: "week-numbers" }, index.h("div", { class: "week-header" }, this.getLocalizedWeekText()), weeks.map((week, weekIndex) => {
824
- var _a;
825
- const dates = week.map(d => d.date);
826
- return (index.h("div", { class: `week-number ${this.selectionType === 'range' ? 'clickable' : ''}`, onClick: this.getWeekSelectionHandler(dates, index$1), key: `week-${weekIndex}` }, getWeekNumber(((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date())));
827
- })));
828
- };
829
- this.renderDaysGrid = (
830
- /** Days to render */
831
- days) => {
832
- return (index.h("div", { class: "days-grid" }, days.map(day => {
833
- const date = day.date;
834
- if (!date)
835
- return null;
836
- const isSelected = this.selectionType === 'single' &&
837
- isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });
838
- const isInRange = this.isDateInRange(date);
839
- const isStart = isSameDate(date, this.startDate, {
840
- isUTCMode: this.isUTCMode,
841
- });
842
- const isEnd = isSameDate(date, this.endDate, {
843
- isUTCMode: this.isUTCMode,
844
- });
845
- const isToday = this.isToday(date);
846
- const isOutsideMonth = !day.isCurrentMonth;
847
- const dayClasses = [
848
- 'day',
849
- isSelected ? 'selected' : '',
850
- isStart ? 'range-start' : '',
851
- isEnd ? 'range-end' : '',
852
- isInRange ? 'in-range' : '',
853
- day.isDisabled ? 'disabled' : '',
854
- isOutsideMonth ? 'outside-month' : '',
855
- isToday ? 'is-today' : '',
856
- ];
857
- return (index.h("div", { class: dayClasses.filter(Boolean).join(' '), onClick: this.getDayClickHandler(date, day.isDisabled), "aria-disabled": day.isDisabled, key: `day-${date.toISOString()}` }, day.dayOfMonth));
858
- })));
1045
+ return (index.h(WeekNumbers, { weeks: weeks, localizedWeekText: this.getLocalizedWeekText(), selectionType: this.selectionType, onWeekSelect: this.handleWeekSelection, calendarIndex: index$1 }));
859
1046
  };
860
1047
  /**
861
1048
  * Renders the calendar
@@ -874,7 +1061,7 @@ const NvCalendar = class {
874
1061
  for (let i = 0; i < days.length; i += 7) {
875
1062
  weeks.push(days.slice(i, i + 7));
876
1063
  }
877
- return (index.h("div", { class: "calendar-wrapper" }, index.h("div", { class: "calendar-container", key: `calendar-${index$1}` }, this.renderHeader(offset, index$1), index.h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index$1), index.h("div", { class: "days-container" }, index.h("div", { class: "days-header" }, this.getDayNames().map(day => (index.h("div", { class: "day-header" }, day)))), this.renderDaysGrid(days)))), index$1 < this.numberOfCalendars - 1 && (index.h("div", { class: "calendar-separator" }))));
1064
+ return (index.h("div", { class: "calendar-wrapper" }, index.h("div", { class: "calendar-container", key: `calendar-${index$1}` }, this.renderHeader(offset, index$1), index.h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index$1), 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$1 < this.numberOfCalendars - 1 && (index.h("div", { class: "calendar-separator" }))));
878
1065
  };
879
1066
  /**
880
1067
  * Renders the shortcuts
@@ -885,7 +1072,7 @@ const NvCalendar = class {
885
1072
  if (!this.hasShortcuts) {
886
1073
  return null;
887
1074
  }
888
- return (index.h("div", { class: `shortcuts-container shortcuts-placement-${this.shortcutsPlacement}` }, this.shortcuts.map(shortcut => (index.h("nv-button", { emphasis: "lower", size: "xs", "aria-label": shortcut.label, onClick: this.getShortcutHandler(shortcut) }, shortcut.label)))));
1075
+ return (index.h(CalendarShortcuts, { shortcuts: this.shortcuts, placement: this.shortcutsPlacement, onShortcutClick: this.applyShortcut }));
889
1076
  };
890
1077
  /**
891
1078
  * Renders the actions
@@ -894,7 +1081,7 @@ const NvCalendar = class {
894
1081
  * @slot actions - Child content of the component.
895
1082
  */
896
1083
  this.renderActions = () => {
897
- return (index.h("div", { class: "datepicker-actions" }, index.h("slot", { name: "actions" }, index.h("nv-button", { emphasis: "low", size: "xs", onClick: this.resetSelection }, "Cancel"), index.h("nv-button", { size: "xs", onClick: this.confirmSelection }, "OK"))));
1084
+ return (index.h("div", { class: "datepicker-actions" }, index.h("slot", { name: "actions" }, index.h(CalendarActions, { onReset: this.resetSelection, onConfirm: this.confirmSelection, useSlot: false }))));
898
1085
  };
899
1086
  }
900
1087
  //#endregion EVENTS
@@ -922,7 +1109,11 @@ const NvCalendar = class {
922
1109
  const { startDate, endDate } = this.validateDateRange(newValue.start, newValue.end);
923
1110
  this.startDate = startDate;
924
1111
  this.endDate = endDate;
925
- this.currentDate = startDate;
1112
+ // Do not navigate to the start date if data-prevent-navigation attribute is present
1113
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
1114
+ if (!preventNavigation) {
1115
+ this.currentDate = startDate;
1116
+ }
926
1117
  }
927
1118
  catch (error) {
928
1119
  console.error('Invalid rangeValue:', error);
@@ -946,16 +1137,34 @@ const NvCalendar = class {
946
1137
  const parsedDate = parseDate(newValue, this.dateFormat);
947
1138
  if (parsedDate) {
948
1139
  this.selectedDate = parsedDate;
949
- this.currentDate = parsedDate;
1140
+ // Do not navigate to the selected date if data-prevent-navigation attribute is present
1141
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
1142
+ if (!preventNavigation) {
1143
+ this.currentDate = parsedDate;
1144
+ }
950
1145
  }
951
1146
  }
952
1147
  }
1148
+ /**
1149
+ * Watches the changes of the unified value prop
1150
+ * @param {string} newValue - New value
1151
+ * @param {string} oldValue - Old value
1152
+ */
1153
+ onValueChange(newValue, oldValue) {
1154
+ if (newValue !== oldValue) {
1155
+ this.parseUnifiedValue(newValue);
1156
+ }
1157
+ }
953
1158
  //#endregion WATCHERS
954
1159
  /****************************************************************************/
955
1160
  //#region LIFECYCLE
956
1161
  componentWillLoad() {
957
1162
  this.parseDisabledDates();
958
- if (this.selectionType === 'single' && this.singleValue) {
1163
+ // Initialize from unified value prop if provided
1164
+ if (this.value) {
1165
+ this.parseUnifiedValue(this.value);
1166
+ }
1167
+ else if (this.selectionType === 'single' && this.singleValue) {
959
1168
  this.selectedDate = parseDate(this.singleValue, this.dateFormat);
960
1169
  this.currentDate = this.selectedDate;
961
1170
  }
@@ -968,6 +1177,7 @@ const NvCalendar = class {
968
1177
  this.currentDate = startDate;
969
1178
  if (swapped) {
970
1179
  // If dates were swapped, update the rangeValue property
1180
+ // eslint-disable-next-line @stencil-community/strict-mutable
971
1181
  this.rangeValue = {
972
1182
  start: formatDate(startDate, { dateFormat: this.dateFormat }),
973
1183
  end: formatDate(endDate, { dateFormat: this.dateFormat }),
@@ -979,7 +1189,8 @@ const NvCalendar = class {
979
1189
  console.error('Invalid rangeValue:', error);
980
1190
  }
981
1191
  }
982
- else {
1192
+ // Ensure currentDate is always initialized
1193
+ if (!this.currentDate) {
983
1194
  this.currentDate = new Date();
984
1195
  }
985
1196
  this.initializeMonths();
@@ -1049,15 +1260,16 @@ const NvCalendar = class {
1049
1260
  * @slot default - Child content of the component.
1050
1261
  */
1051
1262
  render() {
1052
- return (index.h(index.Host, { key: 'd265f105851253b5aa2a40e055f8e51b5cb6b553' }, index.h("div", { key: 'c6e1ea923b17f7684243598109e4cffc767248d7', class: "datepicker-root" }, index.h("div", { key: '5fc4cfbf3f6d823c500408d0f81f5f15d3e654d7', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, index.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') ||
1053
- this.hasActions) && (index.h("div", { key: '91c21c945ab53acda631a8c50fb1437665fce030', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), index.h("slot", { key: '3799c412c842e406715c235d3288022c2a734ed2' })));
1263
+ return (index.h(index.Host, { key: '43d4f3ab9199e9c5f15e853f15283fa59e4a436d' }, index.h("div", { key: 'b9956225cb2c16d997aa44266af8f8c8222ea968', class: "datepicker-root" }, index.h("div", { key: '05b63935bc5ebf500bb52d10688385f994b47fb4', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, index.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') ||
1264
+ this.hasActions) && (index.h("div", { key: '1765334bf15564bc9886b210c54bddba64c7042e', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), index.h("slot", { key: '0ac3446394b8c23b859e5f0065370b95b6fd05d2' })));
1054
1265
  }
1055
1266
  get el() { return index.getElement(this); }
1056
1267
  static get watchers() { return {
1057
1268
  "numberOfCalendars": ["validateNumberOfCalendars"],
1058
1269
  "rangeValue": ["onRangeValueChange"],
1059
1270
  "disabledDates": ["handleDisabledDatesChange"],
1060
- "singleValue": ["onSingleValueChange"]
1271
+ "singleValue": ["onSingleValueChange"],
1272
+ "value": ["onValueChange"]
1061
1273
  }; }
1062
1274
  };
1063
1275
  NvCalendar.style = NvCalendarStyle0;