@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,6 +1,8 @@
1
1
  import { Host, h, } from "@stencil/core";
2
2
  import { WEEK_ABBREVIATIONS, CUSTOM_DAY_NAMES, CUSTOM_MONTH_NAMES, } from "../../utils/constants";
3
- import { getWeekNumber, parseDate, isSameDate, formatDate, isSameOrAfter, isSameOrBefore, } from "./nv-calendar.utils";
3
+ import { parseDate, isSameDate, formatDate, isSameOrAfter, isSameOrBefore, } from "./nv-calendar.utils";
4
+ // Import partials
5
+ import { CalendarHeader, CalendarGrid, WeekNumbers, CalendarShortcuts, CalendarActions, } from "./partials";
4
6
  /**
5
7
  * @slot default - Child content of the component.
6
8
  * @slot actions - Child content of the component.
@@ -11,14 +13,23 @@ export class NvCalendar {
11
13
  //#region PROPERTIES
12
14
  /**
13
15
  * First day of the week (0 = Sunday, 1 = Monday, etc.)
14
- * @default 0
16
+ * @default 1
15
17
  */
16
- this.firstDayOfWeek = 0;
18
+ this.firstDayOfWeek = 1;
17
19
  /**
18
20
  * Number of calendars to display
19
21
  * @default 1
20
22
  */
21
23
  this.numberOfCalendars = 1;
24
+ /**
25
+ * Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.
26
+ * Examples:
27
+ * - Single: "2025-03-15"
28
+ * - Range: "2025-03-15,2025-03-20"
29
+ * @default ""
30
+ */
31
+ // eslint-disable-next-line @stencil-community/strict-mutable
32
+ this.value = '';
22
33
  /**
23
34
  * Locale for date formatting
24
35
  * @default 'en-BE'
@@ -56,6 +67,75 @@ export class NvCalendar {
56
67
  this.endDate = null;
57
68
  /** List of formatted months for the selector */
58
69
  this.months = [];
70
+ /**
71
+ * Parses the unified value prop and synchronizes with internal state
72
+ * @param {string} value - Value to parse
73
+ */
74
+ this.parseUnifiedValue = (value) => {
75
+ if (!value) {
76
+ // Reset all selections
77
+ this.selectedDate = null;
78
+ this.startDate = null;
79
+ this.endDate = null;
80
+ return;
81
+ }
82
+ const values = value
83
+ .split(',')
84
+ .map(v => v.trim())
85
+ .filter(Boolean);
86
+ if (this.selectionType === 'single' && values.length >= 1) {
87
+ const parsedDate = parseDate(values[0], this.dateFormat);
88
+ if (parsedDate) {
89
+ this.selectedDate = parsedDate;
90
+ // Only sync with legacy prop if not using actions (immediate mode)
91
+ if (!this.showActions) {
92
+ this.singleValue = values[0];
93
+ }
94
+ // Navigate to the date if not prevented
95
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
96
+ if (!preventNavigation) {
97
+ this.currentDate = parsedDate;
98
+ }
99
+ }
100
+ else {
101
+ // Handle malformed date gracefully - reset state
102
+ console.warn(`Invalid date format: ${values[0]}`);
103
+ this.selectedDate = null;
104
+ if (!this.showActions) {
105
+ this.singleValue = '';
106
+ }
107
+ }
108
+ }
109
+ else if (this.selectionType === 'range' && values.length >= 2) {
110
+ const startDate = parseDate(values[0], this.dateFormat);
111
+ const endDate = parseDate(values[1], this.dateFormat);
112
+ if (startDate && endDate) {
113
+ this.startDate = startDate;
114
+ this.endDate = endDate;
115
+ // Only sync with legacy prop if not using actions (immediate mode)
116
+ if (!this.showActions) {
117
+ this.rangeValue = {
118
+ start: values[0],
119
+ end: values[1],
120
+ };
121
+ }
122
+ // Navigate to start date if not prevented
123
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
124
+ if (!preventNavigation) {
125
+ this.currentDate = startDate;
126
+ }
127
+ }
128
+ else {
129
+ // Handle malformed dates gracefully - reset state
130
+ console.warn(`Invalid date range format: ${values[0]}, ${values[1]}`);
131
+ this.startDate = null;
132
+ this.endDate = null;
133
+ if (!this.showActions) {
134
+ this.rangeValue = { start: '', end: '' };
135
+ }
136
+ }
137
+ }
138
+ };
59
139
  /**
60
140
  * Change the displayed month
61
141
  * @param {number} offset - Month offset (-1 for previous, 1 for next)
@@ -103,7 +183,14 @@ export class NvCalendar {
103
183
  return;
104
184
  const formattedDate = formatDate(date, { dateFormat: this.dateFormat });
105
185
  this.selectedDate = date;
106
- this.singleDateChange.emit(formattedDate);
186
+ // Update the unified value prop (like nv-fieldslider)
187
+ this.value = formattedDate;
188
+ this.valueChanged.emit(formattedDate);
189
+ // Legacy support (deprecated) - only sync props if not using actions
190
+ if (!this.showActions) {
191
+ this.singleValue = formattedDate;
192
+ this.singleDateChange.emit(formattedDate);
193
+ }
107
194
  };
108
195
  /**
109
196
  * Handles range date selection
@@ -111,18 +198,32 @@ export class NvCalendar {
111
198
  */
112
199
  this.handleRangeSelection = (date) => {
113
200
  if (!this.startDate || (this.startDate && this.endDate)) {
201
+ // Start new range selection
114
202
  this.startDate = date;
115
203
  this.endDate = null;
116
204
  }
117
205
  else {
206
+ // Complete range selection
118
207
  this.endDate = date;
208
+ // Ensure correct order
119
209
  if (this.startDate > this.endDate) {
120
210
  [this.startDate, this.endDate] = [this.endDate, this.startDate];
121
211
  }
122
- this.rangeDateChange.emit({
123
- start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
124
- end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
212
+ const startFormatted = formatDate(this.startDate, {
213
+ dateFormat: this.dateFormat,
214
+ });
215
+ const endFormatted = formatDate(this.endDate, {
216
+ dateFormat: this.dateFormat,
125
217
  });
218
+ // Update the unified value prop (like nv-fieldslider)
219
+ this.value = `${startFormatted},${endFormatted}`;
220
+ this.valueChanged.emit(this.value);
221
+ // Legacy support (deprecated) - only sync props if not using actions
222
+ if (!this.showActions) {
223
+ const legacyRange = { start: startFormatted, end: endFormatted };
224
+ this.rangeDateChange.emit(legacyRange);
225
+ this.rangeValue = legacyRange;
226
+ }
126
227
  }
127
228
  };
128
229
  /**
@@ -181,23 +282,35 @@ export class NvCalendar {
181
282
  * @returns {string[]} Array of short day names
182
283
  */
183
284
  this.getDayNames = () => {
285
+ let days;
184
286
  // If we have custom day names for this locale
185
287
  if (CUSTOM_DAY_NAMES[this.locale]) {
186
- const days = [...CUSTOM_DAY_NAMES[this.locale]];
187
- // Reorganize the days based on the first day of the week
188
- const firstDays = days.slice(0, this.firstDayOfWeek);
189
- const remainingDays = days.slice(this.firstDayOfWeek);
190
- return [...remainingDays, ...firstDays];
288
+ // Custom day names are expected to start with Monday (index 0 = Monday)
289
+ days = [...CUSTOM_DAY_NAMES[this.locale]];
290
+ }
291
+ else {
292
+ // Generate days using Intl.DateTimeFormat, starting from Monday
293
+ const formatter = new Intl.DateTimeFormat(this.locale, {
294
+ weekday: 'short',
295
+ });
296
+ // Generate days starting from Monday (2023-01-02 was a Monday)
297
+ days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 2)).toUpperCase());
298
+ }
299
+ // Now reorganize based on firstDayOfWeek
300
+ // 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.
301
+ if (this.firstDayOfWeek === 0) {
302
+ // If Sunday is first day, move Sunday (last element) to the beginning
303
+ return [days[6], ...days.slice(0, 6)];
304
+ }
305
+ else if (this.firstDayOfWeek === 1) {
306
+ // If Monday is first day, return as-is (since our array starts with Monday)
307
+ return days;
308
+ }
309
+ else {
310
+ // For other first days (Tuesday=2, Wednesday=3, etc.)
311
+ const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday
312
+ return [...days.slice(offset), ...days.slice(0, offset)];
191
313
  }
192
- // Otherwise, use the default behavior
193
- const formatter = new Intl.DateTimeFormat(this.locale, {
194
- weekday: 'short',
195
- });
196
- const days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 1)).toUpperCase());
197
- // Reorganize the days based on the first day of the week
198
- const firstDays = days.slice(0, this.firstDayOfWeek);
199
- const remainingDays = days.slice(this.firstDayOfWeek);
200
- return [...remainingDays, ...firstDays];
201
314
  };
202
315
  /**
203
316
  * Generates the days of the current month
@@ -378,8 +491,15 @@ export class NvCalendar {
378
491
  if (shortcut.singleValue) {
379
492
  const newDate = parseDate(shortcut.singleValue, this.dateFormat);
380
493
  this.selectedDate = newDate;
381
- this.singleDateChange.emit(formatDate(newDate, { dateFormat: this.dateFormat }));
382
- this.singleValue = formatDate(newDate, { dateFormat: this.dateFormat });
494
+ const formattedDate = formatDate(newDate, {
495
+ dateFormat: this.dateFormat,
496
+ });
497
+ // Update the unified value prop (like nv-fieldslider)
498
+ this.value = formattedDate;
499
+ this.valueChanged.emit(formattedDate);
500
+ // Legacy support (deprecated) - sync props
501
+ this.singleValue = formattedDate;
502
+ this.singleDateChange.emit(formattedDate);
383
503
  if (!this.showActions) {
384
504
  const event = new CustomEvent('closePopover', {
385
505
  bubbles: true,
@@ -394,14 +514,18 @@ export class NvCalendar {
394
514
  const end = parseDate(shortcut.rangeValue.end, this.dateFormat);
395
515
  this.startDate = start;
396
516
  this.endDate = end;
397
- this.rangeDateChange.emit({
398
- start: formatDate(start, { dateFormat: this.dateFormat }),
399
- end: formatDate(end, { dateFormat: this.dateFormat }),
517
+ const startFormatted = formatDate(start, {
518
+ dateFormat: this.dateFormat,
400
519
  });
401
- this.rangeValue = {
402
- start: formatDate(start, { dateFormat: this.dateFormat }),
403
- end: formatDate(end, { dateFormat: this.dateFormat }),
404
- };
520
+ const endFormatted = formatDate(end, { dateFormat: this.dateFormat });
521
+ // Update the unified value prop (like nv-fieldslider)
522
+ this.value = `${startFormatted},${endFormatted}`;
523
+ this.valueChanged.emit(this.value);
524
+ // Legacy support (deprecated) - sync props
525
+ const legacyRange = { start: startFormatted, end: endFormatted };
526
+ this.rangeDateChange.emit(legacyRange);
527
+ // eslint-disable-next-line @stencil-community/strict-mutable
528
+ this.rangeValue = legacyRange;
405
529
  if (!this.showActions) {
406
530
  const event = new CustomEvent('closePopover', {
407
531
  bubbles: true,
@@ -409,103 +533,15 @@ export class NvCalendar {
409
533
  });
410
534
  this.el.dispatchEvent(event);
411
535
  }
412
- this.forceCalendarUpdate(end);
536
+ this.currentDate = start;
413
537
  }
414
538
  };
415
539
  /**
416
- * Method to force the complete calendar update (and fix the persistent hover problem)
540
+ * Method to force the complete calendar update
417
541
  * @param {Date} newDate - Date to force
418
542
  */
419
543
  this.forceCalendarUpdate = newDate => {
420
544
  this.currentDate = new Date(newDate);
421
- this.currentDate = new Date(this.currentDate); // Force a re-render
422
- // Reset visually the hover/touch effect
423
- requestAnimationFrame(() => {
424
- const days = document.querySelectorAll('.day');
425
- days.forEach(el => {
426
- el.classList.remove('hover', 'active', 'touched');
427
- el.style.pointerEvents = 'none';
428
- });
429
- // Add specific touch handling (for mobile)
430
- document.body.addEventListener('touchstart', this.clearTouchState, {
431
- passive: true,
432
- });
433
- // Reset the touch state after 50ms
434
- setTimeout(() => {
435
- days.forEach(el => {
436
- el.style.pointerEvents = '';
437
- });
438
- }, 50);
439
- });
440
- };
441
- /**
442
- * Function to reset the touch effect (Mobile fix)
443
- */
444
- this.clearTouchState = () => {
445
- document.querySelectorAll('.day').forEach(el => {
446
- el.classList.remove('touched');
447
- });
448
- // Remove the listener after the first interaction
449
- document.body.removeEventListener('touchstart', this.clearTouchState);
450
- };
451
- /**
452
- * Handles month change with an offset
453
- * @param {number} direction - Direction (-1 for previous, 1 for next)
454
- * @returns {Function} Change month handler
455
- */
456
- this.getChangeMonthHandler = (direction) => {
457
- return () => this.changeMonth(direction);
458
- };
459
- /**
460
- * Handles month change from an event (ex: dropdown)
461
- * @param {number} offset - Month offset (0 by default)
462
- * @returns {Function} Change month handler
463
- */
464
- this.getHandleMonthChange = (offset) => {
465
- return (event) => this.handleMonthChange(event, offset);
466
- };
467
- /**
468
- * Handles year change from an event (ex: dropdown)
469
- * @param {number} offset - Year offset (0 by default)
470
- * @returns {Function} Change year handler
471
- */
472
- this.getHandleYearChange = (offset) => {
473
- return (event) => this.handleYearChange(event, offset);
474
- };
475
- /**
476
- * Handles day click
477
- * @param {Date} date - Date to handle
478
- * @param {boolean} isDisabled - Whether the date is disabled
479
- * @returns {Function} Day click handler
480
- */
481
- this.getDayClickHandler = (date, isDisabled) => {
482
- return isDisabled ? undefined : () => this.handleDateSelection(date);
483
- };
484
- /**
485
- * Handles shortcut selection
486
- * @param {Object} shortcut - Shortcut to handle
487
- * @param {string | Date} shortcut.singleValue - Selected date value
488
- * @param {Object} shortcut.rangeValue - Start and end date values
489
- * @param {string | Date} shortcut.rangeValue.start - Start date value
490
- * @param {string | Date} shortcut.rangeValue.end - End date value
491
- * @param {string} shortcut.label - Label
492
- * @returns {Function} Shortcut selection handler
493
- */
494
- this.getShortcutHandler = (shortcut) => {
495
- return () => this.applyShortcut(shortcut);
496
- };
497
- /**
498
- * Handles week selection
499
- * @param {Date[]} dates - Dates to handle
500
- * @param {number} index - Calendar index
501
- * @returns {Function} Week selection handler
502
- */
503
- this.getWeekSelectionHandler = (dates, index) => {
504
- return () => {
505
- if (this.selectionType === 'range') {
506
- this.handleWeekSelection(dates, index);
507
- }
508
- };
509
545
  };
510
546
  /**
511
547
  * Resets the current selection
@@ -513,14 +549,22 @@ export class NvCalendar {
513
549
  this.resetSelection = () => {
514
550
  if (this.selectionType === 'single') {
515
551
  this.selectedDate = null;
552
+ // eslint-disable-next-line @stencil-community/strict-mutable
516
553
  this.singleValue = null;
554
+ // eslint-disable-next-line @stencil-community/strict-mutable
555
+ this.value = '';
517
556
  this.singleDateChange.emit('');
557
+ this.valueChanged.emit('');
518
558
  }
519
559
  else {
520
560
  this.startDate = null;
521
561
  this.endDate = null;
562
+ // eslint-disable-next-line @stencil-community/strict-mutable
522
563
  this.rangeValue = null;
564
+ // eslint-disable-next-line @stencil-community/strict-mutable
565
+ this.value = '';
523
566
  this.rangeDateChange.emit({ start: '', end: '' });
567
+ this.valueChanged.emit('');
524
568
  }
525
569
  };
526
570
  /**
@@ -532,6 +576,7 @@ export class NvCalendar {
532
576
  dateFormat: this.dateFormat,
533
577
  });
534
578
  this.singleDateChange.emit(dateStr);
579
+ // eslint-disable-next-line @stencil-community/strict-mutable
535
580
  this.singleValue = dateStr;
536
581
  const event = new CustomEvent('closePopover', {
537
582
  bubbles: true,
@@ -546,6 +591,7 @@ export class NvCalendar {
546
591
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
547
592
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
548
593
  });
594
+ // eslint-disable-next-line @stencil-community/strict-mutable
549
595
  this.rangeValue = {
550
596
  start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
551
597
  end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
@@ -568,8 +614,7 @@ export class NvCalendar {
568
614
  * @description Renders the header of the calendar
569
615
  */
570
616
  this.renderHeader = (offset, index) => {
571
- 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() +
572
- 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" }))));
617
+ 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 }));
573
618
  };
574
619
  /**
575
620
  * Renders the week numbers
@@ -583,42 +628,7 @@ export class NvCalendar {
583
628
  weeks,
584
629
  /** Calendar index */
585
630
  index) => {
586
- return (h("div", { class: "week-numbers" }, h("div", { class: "week-header" }, this.getLocalizedWeekText()), weeks.map((week, weekIndex) => {
587
- var _a;
588
- const dates = week.map(d => d.date);
589
- 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())));
590
- })));
591
- };
592
- this.renderDaysGrid = (
593
- /** Days to render */
594
- days) => {
595
- return (h("div", { class: "days-grid" }, days.map(day => {
596
- const date = day.date;
597
- if (!date)
598
- return null;
599
- const isSelected = this.selectionType === 'single' &&
600
- isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });
601
- const isInRange = this.isDateInRange(date);
602
- const isStart = isSameDate(date, this.startDate, {
603
- isUTCMode: this.isUTCMode,
604
- });
605
- const isEnd = isSameDate(date, this.endDate, {
606
- isUTCMode: this.isUTCMode,
607
- });
608
- const isToday = this.isToday(date);
609
- const isOutsideMonth = !day.isCurrentMonth;
610
- const dayClasses = [
611
- 'day',
612
- isSelected ? 'selected' : '',
613
- isStart ? 'range-start' : '',
614
- isEnd ? 'range-end' : '',
615
- isInRange ? 'in-range' : '',
616
- day.isDisabled ? 'disabled' : '',
617
- isOutsideMonth ? 'outside-month' : '',
618
- isToday ? 'is-today' : '',
619
- ];
620
- return (h("div", { class: dayClasses.filter(Boolean).join(' '), onClick: this.getDayClickHandler(date, day.isDisabled), "aria-disabled": day.isDisabled, key: `day-${date.toISOString()}` }, day.dayOfMonth));
621
- })));
631
+ return (h(WeekNumbers, { weeks: weeks, localizedWeekText: this.getLocalizedWeekText(), selectionType: this.selectionType, onWeekSelect: this.handleWeekSelection, calendarIndex: index }));
622
632
  };
623
633
  /**
624
634
  * Renders the calendar
@@ -637,7 +647,7 @@ export class NvCalendar {
637
647
  for (let i = 0; i < days.length; i += 7) {
638
648
  weeks.push(days.slice(i, i + 7));
639
649
  }
640
- 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" }))));
650
+ 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" }))));
641
651
  };
642
652
  /**
643
653
  * Renders the shortcuts
@@ -648,7 +658,7 @@ export class NvCalendar {
648
658
  if (!this.hasShortcuts) {
649
659
  return null;
650
660
  }
651
- 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)))));
661
+ return (h(CalendarShortcuts, { shortcuts: this.shortcuts, placement: this.shortcutsPlacement, onShortcutClick: this.applyShortcut }));
652
662
  };
653
663
  /**
654
664
  * Renders the actions
@@ -657,7 +667,7 @@ export class NvCalendar {
657
667
  * @slot actions - Child content of the component.
658
668
  */
659
669
  this.renderActions = () => {
660
- 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"))));
670
+ return (h("div", { class: "datepicker-actions" }, h("slot", { name: "actions" }, h(CalendarActions, { onReset: this.resetSelection, onConfirm: this.confirmSelection, useSlot: false }))));
661
671
  };
662
672
  }
663
673
  //#endregion EVENTS
@@ -685,7 +695,11 @@ export class NvCalendar {
685
695
  const { startDate, endDate } = this.validateDateRange(newValue.start, newValue.end);
686
696
  this.startDate = startDate;
687
697
  this.endDate = endDate;
688
- this.currentDate = startDate;
698
+ // Do not navigate to the start date if data-prevent-navigation attribute is present
699
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
700
+ if (!preventNavigation) {
701
+ this.currentDate = startDate;
702
+ }
689
703
  }
690
704
  catch (error) {
691
705
  console.error('Invalid rangeValue:', error);
@@ -709,16 +723,34 @@ export class NvCalendar {
709
723
  const parsedDate = parseDate(newValue, this.dateFormat);
710
724
  if (parsedDate) {
711
725
  this.selectedDate = parsedDate;
712
- this.currentDate = parsedDate;
726
+ // Do not navigate to the selected date if data-prevent-navigation attribute is present
727
+ const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
728
+ if (!preventNavigation) {
729
+ this.currentDate = parsedDate;
730
+ }
713
731
  }
714
732
  }
715
733
  }
734
+ /**
735
+ * Watches the changes of the unified value prop
736
+ * @param {string} newValue - New value
737
+ * @param {string} oldValue - Old value
738
+ */
739
+ onValueChange(newValue, oldValue) {
740
+ if (newValue !== oldValue) {
741
+ this.parseUnifiedValue(newValue);
742
+ }
743
+ }
716
744
  //#endregion WATCHERS
717
745
  /****************************************************************************/
718
746
  //#region LIFECYCLE
719
747
  componentWillLoad() {
720
748
  this.parseDisabledDates();
721
- if (this.selectionType === 'single' && this.singleValue) {
749
+ // Initialize from unified value prop if provided
750
+ if (this.value) {
751
+ this.parseUnifiedValue(this.value);
752
+ }
753
+ else if (this.selectionType === 'single' && this.singleValue) {
722
754
  this.selectedDate = parseDate(this.singleValue, this.dateFormat);
723
755
  this.currentDate = this.selectedDate;
724
756
  }
@@ -731,6 +763,7 @@ export class NvCalendar {
731
763
  this.currentDate = startDate;
732
764
  if (swapped) {
733
765
  // If dates were swapped, update the rangeValue property
766
+ // eslint-disable-next-line @stencil-community/strict-mutable
734
767
  this.rangeValue = {
735
768
  start: formatDate(startDate, { dateFormat: this.dateFormat }),
736
769
  end: formatDate(endDate, { dateFormat: this.dateFormat }),
@@ -742,7 +775,8 @@ export class NvCalendar {
742
775
  console.error('Invalid rangeValue:', error);
743
776
  }
744
777
  }
745
- else {
778
+ // Ensure currentDate is always initialized
779
+ if (!this.currentDate) {
746
780
  this.currentDate = new Date();
747
781
  }
748
782
  this.initializeMonths();
@@ -812,8 +846,8 @@ export class NvCalendar {
812
846
  * @slot default - Child content of the component.
813
847
  */
814
848
  render() {
815
- 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') ||
816
- this.hasActions) && (h("div", { key: '91c21c945ab53acda631a8c50fb1437665fce030', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), h("slot", { key: '3799c412c842e406715c235d3288022c2a734ed2' })));
849
+ 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') ||
850
+ this.hasActions) && (h("div", { key: '1765334bf15564bc9886b210c54bddba64c7042e', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), h("slot", { key: '0ac3446394b8c23b859e5f0065370b95b6fd05d2' })));
817
851
  }
818
852
  static get is() { return "nv-calendar"; }
819
853
  static get originalStyleUrls() {
@@ -841,7 +875,7 @@ export class NvCalendar {
841
875
  "docs": {
842
876
  "tags": [{
843
877
  "name": "default",
844
- "text": "0"
878
+ "text": "1"
845
879
  }],
846
880
  "text": "First day of the week (0 = Sunday, 1 = Monday, etc.)"
847
881
  },
@@ -849,7 +883,7 @@ export class NvCalendar {
849
883
  "setter": false,
850
884
  "attribute": "first-day-of-week",
851
885
  "reflect": true,
852
- "defaultValue": "0"
886
+ "defaultValue": "1"
853
887
  },
854
888
  "numberOfCalendars": {
855
889
  "type": "number",
@@ -874,6 +908,29 @@ export class NvCalendar {
874
908
  "reflect": true,
875
909
  "defaultValue": "1"
876
910
  },
911
+ "value": {
912
+ "type": "string",
913
+ "mutable": true,
914
+ "complexType": {
915
+ "original": "string",
916
+ "resolved": "string",
917
+ "references": {}
918
+ },
919
+ "required": false,
920
+ "optional": false,
921
+ "docs": {
922
+ "tags": [{
923
+ "name": "default",
924
+ "text": "\"\""
925
+ }],
926
+ "text": "Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.\nExamples:\n- Single: \"2025-03-15\"\n- Range: \"2025-03-15,2025-03-20\""
927
+ },
928
+ "getter": false,
929
+ "setter": false,
930
+ "attribute": "value",
931
+ "reflect": true,
932
+ "defaultValue": "''"
933
+ },
877
934
  "singleValue": {
878
935
  "type": "string",
879
936
  "mutable": true,
@@ -1176,6 +1233,24 @@ export class NvCalendar {
1176
1233
  }
1177
1234
  }
1178
1235
  }
1236
+ }, {
1237
+ "method": "valueChanged",
1238
+ "name": "valueChanged",
1239
+ "bubbles": true,
1240
+ "cancelable": true,
1241
+ "composed": true,
1242
+ "docs": {
1243
+ "tags": [{
1244
+ "name": "bind",
1245
+ "text": "value"
1246
+ }],
1247
+ "text": "Emitted when the unified value changes"
1248
+ },
1249
+ "complexType": {
1250
+ "original": "string",
1251
+ "resolved": "string",
1252
+ "references": {}
1253
+ }
1179
1254
  }];
1180
1255
  }
1181
1256
  static get elementRef() { return "el"; }
@@ -1192,6 +1267,9 @@ export class NvCalendar {
1192
1267
  }, {
1193
1268
  "propName": "singleValue",
1194
1269
  "methodName": "onSingleValueChange"
1270
+ }, {
1271
+ "propName": "value",
1272
+ "methodName": "onValueChange"
1195
1273
  }];
1196
1274
  }
1197
1275
  }