@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day-cell.logic.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-calendar/test/partials/day-cell.logic.test.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,SAAS,sBAAsB,CAAC,KAQ/B;IACC,MAAM,EACJ,UAAU,EACV,OAAO,EACP,KAAK,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,OAAO,GACR,GAAG,KAAK,CAAC;IAEV,OAAO;QACL,KAAK;QACL,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC5B,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACxB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC3B,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC5B,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KAC1B;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC1B,UAAmB,EACnB,OAA2C,EAC3C,IAAU;IAEV,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,YAAY,GAAG,sBAAsB,CAAC;gBAC1C,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAG,sBAAsB,CAAC;gBACxC,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,KAAK;gBACrB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,OAAO,GAAG,sBAAsB,CAAC;gBACrC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,KAAK;gBACrB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAExC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAElD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAExC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEjD,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAExC,yBAAyB;YACzB,MAAM,CAAC,GAAG,EAAE;gBACV,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAExC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAElD,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,kDAAkD;YAClD,MAAM,mBAAmB,GAAG;gBAC1B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBACjD,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;gBAChD,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;gBAChD,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3C,CAAC;YAEF,mBAAmB,CAAC,OAAO,CACzB,CAAC,CACC,UAAU,EACV,OAAO,EACP,KAAK,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,OAAO,EACR,EAAE,EAAE;gBACH,MAAM,CAAC,GAAG,EAAE;oBACV,sBAAsB,CAAC;wBACrB,UAAU;wBACV,OAAO;wBACP,KAAK;wBACL,SAAS;wBACT,UAAU;wBACV,cAAc;wBACd,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,0EAA0E;YAC1E,MAAM,SAAS,GAAG;gBAChB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;gBACtD,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACvD,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;aAC1D,CAAC;YAEF,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,sBAAsB,iBACpC,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,EACjB,cAAc,EAAE,IAAI,EACpB,OAAO,EAAE,KAAK,IACX,QAAQ,EACX,CAAC;gBAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { describe, it, expect, vi } from 'vitest';\n\n/**\n * Logic tests for the DayCell partial\n *\n * These tests validate business logic without directly testing JSX.\n * They focus on testable aspects: class generation,\n * conditional logic, and event handling.\n */\n\n/**\n * Utility function that replicates the class generation logic\n * of the DayCell partial to allow unit testing\n * @param {object} props - DayCell state configuration\n * @param {boolean} props.isSelected - If the day is selected\n * @param {boolean} props.isStart - If the day is the start of a range\n * @param {boolean} props.isEnd - If the day is the end of a range\n * @param {boolean} props.isInRange - If the day is in a selected range\n * @param {boolean} props.isDisabled - If the day is disabled\n * @param {boolean} props.isCurrentMonth - If the day belongs to the current month\n * @param {boolean} props.isToday - If the day is today\n * @returns {string} String containing generated CSS classes\n */\nfunction generateDayCellClasses(props: {\n isSelected: boolean;\n isStart: boolean;\n isEnd: boolean;\n isInRange: boolean;\n isDisabled: boolean;\n isCurrentMonth: boolean;\n isToday: boolean;\n}) {\n const {\n isSelected,\n isStart,\n isEnd,\n isInRange,\n isDisabled,\n isCurrentMonth,\n isToday,\n } = props;\n\n return [\n 'day',\n isSelected ? 'selected' : '',\n isStart ? 'range-start' : '',\n isEnd ? 'range-end' : '',\n isInRange ? 'in-range' : '',\n isDisabled ? 'disabled' : '',\n !isCurrentMonth ? 'outside-month' : '',\n isToday ? 'is-today' : '',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/**\n * Utility function that replicates the click handling logic\n * of the DayCell partial\n * @param {boolean} isDisabled - If the day is disabled\n * @param {((date: Date) => void) | undefined} onClick - Callback function to call on click\n * @param {Date} date - Date to pass to the callback\n */\nfunction simulateHandleClick(\n isDisabled: boolean,\n onClick: ((date: Date) => void) | undefined,\n date: Date,\n) {\n if (!isDisabled && onClick) {\n onClick(date);\n }\n}\n\ndescribe('DayCell - Logic Tests', () => {\n describe('CSS Classes Generation Logic', () => {\n it('should generate basic day class', () => {\n const classes = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: false,\n });\n\n expect(classes).toBe('day');\n });\n\n it('should include selected class when isSelected is true', () => {\n const classes = generateDayCellClasses({\n isSelected: true,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: false,\n });\n\n expect(classes).toContain('selected');\n expect(classes).toContain('day');\n });\n\n it('should include range classes for range selection', () => {\n const startClasses = generateDayCellClasses({\n isSelected: false,\n isStart: true,\n isEnd: false,\n isInRange: true,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: false,\n });\n\n expect(startClasses).toContain('range-start');\n expect(startClasses).toContain('in-range');\n expect(startClasses).not.toContain('range-end');\n\n const endClasses = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: true,\n isInRange: true,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: false,\n });\n\n expect(endClasses).toContain('range-end');\n expect(endClasses).toContain('in-range');\n expect(endClasses).not.toContain('range-start');\n });\n\n it('should include disabled class when isDisabled is true', () => {\n const classes = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: true,\n isCurrentMonth: true,\n isToday: false,\n });\n\n expect(classes).toContain('disabled');\n });\n\n it('should include outside-month class when not current month', () => {\n const classes = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: false,\n isToday: false,\n });\n\n expect(classes).toContain('outside-month');\n });\n\n it('should include is-today class when isToday is true', () => {\n const classes = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: true,\n });\n\n expect(classes).toContain('is-today');\n });\n\n it('should combine multiple classes correctly', () => {\n const classes = generateDayCellClasses({\n isSelected: true,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: true,\n });\n\n const classList = classes.split(' ');\n expect(classList).toContain('day');\n expect(classList).toContain('selected');\n expect(classList).toContain('is-today');\n expect(classList).not.toContain('disabled');\n expect(classList).not.toContain('outside-month');\n });\n\n it('should handle all states enabled simultaneously', () => {\n const classes = generateDayCellClasses({\n isSelected: true,\n isStart: true,\n isEnd: true,\n isInRange: true,\n isDisabled: true,\n isCurrentMonth: false,\n isToday: true,\n });\n\n const classList = classes.split(' ');\n expect(classList).toContain('day');\n expect(classList).toContain('selected');\n expect(classList).toContain('range-start');\n expect(classList).toContain('range-end');\n expect(classList).toContain('in-range');\n expect(classList).toContain('disabled');\n expect(classList).toContain('outside-month');\n expect(classList).toContain('is-today');\n });\n });\n\n describe('Click Handler Logic', () => {\n it('should call onClick when not disabled and onClick is provided', () => {\n const mockOnClick = vi.fn();\n const testDate = new Date('2024-01-15');\n\n simulateHandleClick(false, mockOnClick, testDate);\n\n expect(mockOnClick).toHaveBeenCalledWith(testDate);\n expect(mockOnClick).toHaveBeenCalledTimes(1);\n });\n\n it('should not call onClick when disabled', () => {\n const mockOnClick = vi.fn();\n const testDate = new Date('2024-01-15');\n\n simulateHandleClick(true, mockOnClick, testDate);\n\n expect(mockOnClick).not.toHaveBeenCalled();\n });\n\n it('should not call onClick when onClick is undefined', () => {\n const testDate = new Date('2024-01-15');\n\n // Should not throw error\n expect(() => {\n simulateHandleClick(false, undefined, testDate);\n }).not.toThrow();\n });\n\n it('should handle multiple clicks correctly', () => {\n const mockOnClick = vi.fn();\n const testDate = new Date('2024-01-15');\n\n simulateHandleClick(false, mockOnClick, testDate);\n simulateHandleClick(false, mockOnClick, testDate);\n simulateHandleClick(false, mockOnClick, testDate);\n\n expect(mockOnClick).toHaveBeenCalledTimes(3);\n expect(mockOnClick).toHaveBeenCalledWith(testDate);\n });\n });\n\n describe('Edge Cases and Validation', () => {\n it('should handle all boolean combinations without errors', () => {\n // Test all possible combinations of boolean flags\n const booleanCombinations = [\n [false, false, false, false, false, false, false],\n [true, false, false, false, false, false, false],\n [false, true, false, false, false, false, false],\n [false, false, true, false, false, false, false],\n [false, false, false, true, false, false, false],\n [false, false, false, false, true, false, false],\n [false, false, false, false, false, true, false],\n [false, false, false, false, false, false, true],\n [true, true, true, true, true, true, true],\n ];\n\n booleanCombinations.forEach(\n ([\n isSelected,\n isStart,\n isEnd,\n isInRange,\n isDisabled,\n isCurrentMonth,\n isToday,\n ]) => {\n expect(() => {\n generateDayCellClasses({\n isSelected,\n isStart,\n isEnd,\n isInRange,\n isDisabled,\n isCurrentMonth,\n isToday,\n });\n }).not.toThrow();\n },\n );\n });\n\n it('should always include base day class', () => {\n // Test with different combinations that the 'day' class is always present\n const testCases = [\n { isSelected: true, isToday: true, isDisabled: false },\n { isSelected: false, isToday: false, isDisabled: true },\n { isInRange: true, isStart: true, isCurrentMonth: false },\n ];\n\n testCases.forEach(testCase => {\n const classes = generateDayCellClasses({\n isSelected: false,\n isStart: false,\n isEnd: false,\n isInRange: false,\n isDisabled: false,\n isCurrentMonth: true,\n isToday: false,\n ...testCase,\n });\n\n expect(classes).toContain('day');\n });\n });\n });\n});\n"]}
@@ -0,0 +1,217 @@
1
+ /* eslint-disable jsdoc/require-jsdoc */
2
+ import { describe, it, expect } from "vitest";
3
+ /**
4
+ * Logic tests for the WeekNumbers partial
5
+ *
6
+ * These tests validate the week numbers logic:
7
+ * - ISO 8601 week number calculation
8
+ * - Year transition handling
9
+ * - Consistency with calendar grid
10
+ */
11
+ function getWeekNumber(date) {
12
+ // Create a copy of the date to avoid modifying the original
13
+ const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
14
+ // Adjust to the same week Thursday (ISO 8601)
15
+ d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));
16
+ // Calculate the first Thursday of the year
17
+ const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));
18
+ // Calculate the week number
19
+ return (1 +
20
+ Math.round(((d.getTime() - week1.getTime()) / 86400000 -
21
+ 3 +
22
+ ((week1.getUTCDay() + 6) % 7)) /
23
+ 7));
24
+ }
25
+ function generateWeekNumbers(year, month) {
26
+ const firstDay = new Date(year, month, 1);
27
+ const weekNumbers = [];
28
+ // Calculate the first displayed day (may be from previous month)
29
+ const startDate = new Date(firstDay);
30
+ const dayOfWeek = firstDay.getDay();
31
+ const daysToSubtract = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
32
+ startDate.setDate(startDate.getDate() - daysToSubtract);
33
+ // Generate 6 weeks of numbers
34
+ for (let week = 0; week < 6; week++) {
35
+ const weekDate = new Date(startDate);
36
+ weekDate.setDate(startDate.getDate() + week * 7);
37
+ weekNumbers.push(getWeekNumber(weekDate));
38
+ }
39
+ return weekNumbers;
40
+ }
41
+ function isValidWeekNumber(weekNumber) {
42
+ return weekNumber >= 1 && weekNumber <= 53;
43
+ }
44
+ function getWeekYear(date) {
45
+ const d = new Date(date);
46
+ d.setDate(d.getDate() + 3 - ((d.getDay() + 6) % 7));
47
+ return d.getFullYear();
48
+ }
49
+ function shouldShowWeekNumbers(showWeekNumbers) {
50
+ return showWeekNumbers;
51
+ }
52
+ describe('WeekNumbers - Logic Tests', () => {
53
+ describe('ISO 8601 Week Number Calculation', () => {
54
+ it('should calculate correct week numbers for known dates', () => {
55
+ // January 1, 2024 (Monday) = week 1
56
+ expect(getWeekNumber(new Date(2024, 0, 1))).toBe(1);
57
+ // January 1, 2023 (Sunday) = week 52 of 2022
58
+ expect(getWeekNumber(new Date(2023, 0, 1))).toBe(52);
59
+ // January 1, 2022 (Saturday) = week 52 of 2021
60
+ expect(getWeekNumber(new Date(2022, 0, 1))).toBe(52);
61
+ // Mid-year - June 15, 2024 est dans la semaine 24 selon ISO 8601
62
+ expect(getWeekNumber(new Date(2024, 5, 15))).toBe(24);
63
+ });
64
+ it('should handle year transitions correctly', () => {
65
+ // December 31, 2023 (Sunday) = week 52
66
+ expect(getWeekNumber(new Date(2023, 11, 31))).toBe(52);
67
+ // January 1, 2024 (Monday) = week 1
68
+ expect(getWeekNumber(new Date(2024, 0, 1))).toBe(1);
69
+ // January 2, 2024 (Tuesday) = week 1
70
+ expect(getWeekNumber(new Date(2024, 0, 2))).toBe(1);
71
+ });
72
+ it('should handle leap years correctly', () => {
73
+ // Leap year 2024
74
+ expect(getWeekNumber(new Date(2024, 1, 29))).toBe(9); // February 29, 2024
75
+ // Non-leap year 2023
76
+ expect(getWeekNumber(new Date(2023, 1, 28))).toBe(9); // February 28, 2023
77
+ });
78
+ it('should calculate week year correctly', () => {
79
+ // January 1, 2023 belongs to week 52 of 2022
80
+ expect(getWeekYear(new Date(2023, 0, 1))).toBe(2022);
81
+ // January 1, 2024 belongs to week 1 of 2024
82
+ expect(getWeekYear(new Date(2024, 0, 1))).toBe(2024);
83
+ // December 30, 2024 (Monday) belongs to week 1 of 2025
84
+ expect(getWeekYear(new Date(2024, 11, 30))).toBe(2025);
85
+ });
86
+ });
87
+ describe('Week Numbers Generation for Calendar', () => {
88
+ it('should generate 6 week numbers for any month', () => {
89
+ const weekNumbers = generateWeekNumbers(2024, 5); // June 2024
90
+ expect(weekNumbers.length).toBe(6);
91
+ });
92
+ it('should generate valid week numbers', () => {
93
+ const weekNumbers = generateWeekNumbers(2024, 5);
94
+ weekNumbers.forEach(weekNum => {
95
+ expect(isValidWeekNumber(weekNum)).toBe(true);
96
+ });
97
+ });
98
+ it('should handle month with different starting days', () => {
99
+ // January 2024 starts on a Monday
100
+ const januaryWeeks = generateWeekNumbers(2024, 0);
101
+ expect(januaryWeeks[0]).toBe(1);
102
+ // February 2024 starts on a Thursday
103
+ const februaryWeeks = generateWeekNumbers(2024, 1);
104
+ expect(februaryWeeks[0]).toBe(5);
105
+ // March 2024 starts on a Friday
106
+ const marchWeeks = generateWeekNumbers(2024, 2);
107
+ expect(marchWeeks[0]).toBe(9);
108
+ });
109
+ it('should handle year boundaries in week generation', () => {
110
+ // December 2024
111
+ const decemberWeeks = generateWeekNumbers(2024, 11);
112
+ expect(decemberWeeks.length).toBe(6);
113
+ // January 2025
114
+ const januaryWeeks = generateWeekNumbers(2025, 0);
115
+ expect(januaryWeeks.length).toBe(6);
116
+ });
117
+ it('should generate consecutive week numbers within month', () => {
118
+ const weekNumbers = generateWeekNumbers(2024, 5); // June 2024
119
+ for (let i = 1; i < weekNumbers.length; i++) {
120
+ const currentWeek = weekNumbers[i];
121
+ const previousWeek = weekNumbers[i - 1];
122
+ // Week numbers must be consecutive or handle year transition
123
+ const isConsecutive = currentWeek === previousWeek + 1;
124
+ const isYearTransition = previousWeek >= 52 && currentWeek === 1; // Transition to new year
125
+ expect(isConsecutive || isYearTransition).toBe(true);
126
+ }
127
+ });
128
+ });
129
+ describe('Week Number Validation', () => {
130
+ it('should validate correct week number range', () => {
131
+ expect(isValidWeekNumber(1)).toBe(true);
132
+ expect(isValidWeekNumber(26)).toBe(true);
133
+ expect(isValidWeekNumber(52)).toBe(true);
134
+ expect(isValidWeekNumber(53)).toBe(true);
135
+ });
136
+ it('should reject invalid week numbers', () => {
137
+ expect(isValidWeekNumber(0)).toBe(false);
138
+ expect(isValidWeekNumber(-1)).toBe(false);
139
+ expect(isValidWeekNumber(54)).toBe(false);
140
+ expect(isValidWeekNumber(100)).toBe(false);
141
+ });
142
+ });
143
+ describe('Visibility Logic', () => {
144
+ it('should show week numbers when enabled', () => {
145
+ expect(shouldShowWeekNumbers(true)).toBe(true);
146
+ });
147
+ it('should hide week numbers when disabled', () => {
148
+ expect(shouldShowWeekNumbers(false)).toBe(false);
149
+ });
150
+ });
151
+ describe('Edge Cases and Special Scenarios', () => {
152
+ it('should handle week 53 years correctly', () => {
153
+ // 2020 had 53 weeks
154
+ const week53Date = new Date(2020, 11, 28); // December 28, 2020
155
+ expect(getWeekNumber(week53Date)).toBe(53);
156
+ // 2021 started with week 53 of 2020
157
+ const jan1_2021 = new Date(2021, 0, 1); // January 1, 2021
158
+ expect(getWeekNumber(jan1_2021)).toBe(53);
159
+ expect(getWeekYear(jan1_2021)).toBe(2020);
160
+ });
161
+ it('should handle February in leap and non-leap years', () => {
162
+ // February 2024 (leap year)
163
+ const leapFebWeeks = generateWeekNumbers(2024, 1);
164
+ expect(leapFebWeeks.length).toBe(6);
165
+ // February 2023 (normal year)
166
+ const normalFebWeeks = generateWeekNumbers(2023, 1);
167
+ expect(normalFebWeeks.length).toBe(6);
168
+ });
169
+ it('should handle different calendar systems edge cases', () => {
170
+ // Test with dates near week boundaries
171
+ const sundayDate = new Date(2024, 5, 16); // Sunday
172
+ const mondayDate = new Date(2024, 5, 17); // Monday
173
+ const sundayWeek = getWeekNumber(sundayDate);
174
+ const mondayWeek = getWeekNumber(mondayDate);
175
+ expect(mondayWeek).toBe(sundayWeek + 1);
176
+ });
177
+ it('should maintain consistency across month boundaries', () => {
178
+ // End of May / beginning of June 2024
179
+ const endMayWeeks = generateWeekNumbers(2024, 4); // May
180
+ const startJuneWeeks = generateWeekNumbers(2024, 5); // June
181
+ // Last week of May should be consistent with June
182
+ const lastMayWeek = endMayWeeks[endMayWeeks.length - 1];
183
+ const firstJuneWeek = startJuneWeeks[0];
184
+ // Not necessarily equal, but within logical range
185
+ expect(Math.abs(lastMayWeek - firstJuneWeek)).toBeLessThanOrEqual(6);
186
+ });
187
+ });
188
+ describe('Integration with Calendar Grid', () => {
189
+ it('should generate week numbers that align with 6-week calendar grid', () => {
190
+ const months = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
191
+ months.forEach(month => {
192
+ const weekNumbers = generateWeekNumbers(2024, month);
193
+ expect(weekNumbers.length).toBe(6);
194
+ weekNumbers.forEach(weekNum => {
195
+ expect(isValidWeekNumber(weekNum)).toBe(true);
196
+ });
197
+ });
198
+ });
199
+ it('should handle special calendar scenarios', () => {
200
+ // Months where the first week is incomplete
201
+ const specialMonths = [
202
+ { year: 2024, month: 0 }, // January 2024
203
+ { year: 2024, month: 8 }, // September 2024
204
+ { year: 2023, month: 0 }, // January 2023
205
+ ];
206
+ specialMonths.forEach(({ year, month }) => {
207
+ const weekNumbers = generateWeekNumbers(year, month);
208
+ expect(weekNumbers.length).toBe(6);
209
+ // All numbers must be valid
210
+ weekNumbers.forEach(weekNum => {
211
+ expect(isValidWeekNumber(weekNum)).toBe(true);
212
+ });
213
+ });
214
+ });
215
+ });
216
+ });
217
+ //# sourceMappingURL=week-numbers.logic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"week-numbers.logic.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-calendar/test/partials/week-numbers.logic.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { describe, it, expect } from 'vitest';\n\n/**\n * Logic tests for the WeekNumbers partial\n *\n * These tests validate the week numbers logic:\n * - ISO 8601 week number calculation\n * - Year transition handling\n * - Consistency with calendar grid\n */\n\nfunction getWeekNumber(date: Date): number {\n // Create a copy of the date to avoid modifying the original\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n\n // Adjust to the same week Thursday (ISO 8601)\n d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));\n\n // Calculate the first Thursday of the year\n const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));\n\n // Calculate the week number\n return (\n 1 +\n Math.round(\n ((d.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getUTCDay() + 6) % 7)) /\n 7,\n )\n );\n}\n\nfunction generateWeekNumbers(year: number, month: number): number[] {\n const firstDay = new Date(year, month, 1);\n const weekNumbers: number[] = [];\n\n // Calculate the first displayed day (may be from previous month)\n const startDate = new Date(firstDay);\n const dayOfWeek = firstDay.getDay();\n const daysToSubtract = dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n startDate.setDate(startDate.getDate() - daysToSubtract);\n\n // Generate 6 weeks of numbers\n for (let week = 0; week < 6; week++) {\n const weekDate = new Date(startDate);\n weekDate.setDate(startDate.getDate() + week * 7);\n weekNumbers.push(getWeekNumber(weekDate));\n }\n\n return weekNumbers;\n}\n\nfunction isValidWeekNumber(weekNumber: number): boolean {\n return weekNumber >= 1 && weekNumber <= 53;\n}\n\nfunction getWeekYear(date: Date): number {\n const d = new Date(date);\n d.setDate(d.getDate() + 3 - ((d.getDay() + 6) % 7));\n return d.getFullYear();\n}\n\nfunction shouldShowWeekNumbers(showWeekNumbers: boolean): boolean {\n return showWeekNumbers;\n}\n\ndescribe('WeekNumbers - Logic Tests', () => {\n describe('ISO 8601 Week Number Calculation', () => {\n it('should calculate correct week numbers for known dates', () => {\n // January 1, 2024 (Monday) = week 1\n expect(getWeekNumber(new Date(2024, 0, 1))).toBe(1);\n\n // January 1, 2023 (Sunday) = week 52 of 2022\n expect(getWeekNumber(new Date(2023, 0, 1))).toBe(52);\n\n // January 1, 2022 (Saturday) = week 52 of 2021\n expect(getWeekNumber(new Date(2022, 0, 1))).toBe(52);\n\n // Mid-year - June 15, 2024 est dans la semaine 24 selon ISO 8601\n expect(getWeekNumber(new Date(2024, 5, 15))).toBe(24);\n });\n\n it('should handle year transitions correctly', () => {\n // December 31, 2023 (Sunday) = week 52\n expect(getWeekNumber(new Date(2023, 11, 31))).toBe(52);\n\n // January 1, 2024 (Monday) = week 1\n expect(getWeekNumber(new Date(2024, 0, 1))).toBe(1);\n\n // January 2, 2024 (Tuesday) = week 1\n expect(getWeekNumber(new Date(2024, 0, 2))).toBe(1);\n });\n\n it('should handle leap years correctly', () => {\n // Leap year 2024\n expect(getWeekNumber(new Date(2024, 1, 29))).toBe(9); // February 29, 2024\n\n // Non-leap year 2023\n expect(getWeekNumber(new Date(2023, 1, 28))).toBe(9); // February 28, 2023\n });\n\n it('should calculate week year correctly', () => {\n // January 1, 2023 belongs to week 52 of 2022\n expect(getWeekYear(new Date(2023, 0, 1))).toBe(2022);\n\n // January 1, 2024 belongs to week 1 of 2024\n expect(getWeekYear(new Date(2024, 0, 1))).toBe(2024);\n\n // December 30, 2024 (Monday) belongs to week 1 of 2025\n expect(getWeekYear(new Date(2024, 11, 30))).toBe(2025);\n });\n });\n\n describe('Week Numbers Generation for Calendar', () => {\n it('should generate 6 week numbers for any month', () => {\n const weekNumbers = generateWeekNumbers(2024, 5); // June 2024\n expect(weekNumbers.length).toBe(6);\n });\n\n it('should generate valid week numbers', () => {\n const weekNumbers = generateWeekNumbers(2024, 5);\n weekNumbers.forEach(weekNum => {\n expect(isValidWeekNumber(weekNum)).toBe(true);\n });\n });\n\n it('should handle month with different starting days', () => {\n // January 2024 starts on a Monday\n const januaryWeeks = generateWeekNumbers(2024, 0);\n expect(januaryWeeks[0]).toBe(1);\n\n // February 2024 starts on a Thursday\n const februaryWeeks = generateWeekNumbers(2024, 1);\n expect(februaryWeeks[0]).toBe(5);\n\n // March 2024 starts on a Friday\n const marchWeeks = generateWeekNumbers(2024, 2);\n expect(marchWeeks[0]).toBe(9);\n });\n\n it('should handle year boundaries in week generation', () => {\n // December 2024\n const decemberWeeks = generateWeekNumbers(2024, 11);\n expect(decemberWeeks.length).toBe(6);\n\n // January 2025\n const januaryWeeks = generateWeekNumbers(2025, 0);\n expect(januaryWeeks.length).toBe(6);\n });\n\n it('should generate consecutive week numbers within month', () => {\n const weekNumbers = generateWeekNumbers(2024, 5); // June 2024\n\n for (let i = 1; i < weekNumbers.length; i++) {\n const currentWeek = weekNumbers[i];\n const previousWeek = weekNumbers[i - 1];\n\n // Week numbers must be consecutive or handle year transition\n const isConsecutive = currentWeek === previousWeek + 1;\n const isYearTransition = previousWeek >= 52 && currentWeek === 1; // Transition to new year\n\n expect(isConsecutive || isYearTransition).toBe(true);\n }\n });\n });\n\n describe('Week Number Validation', () => {\n it('should validate correct week number range', () => {\n expect(isValidWeekNumber(1)).toBe(true);\n expect(isValidWeekNumber(26)).toBe(true);\n expect(isValidWeekNumber(52)).toBe(true);\n expect(isValidWeekNumber(53)).toBe(true);\n });\n\n it('should reject invalid week numbers', () => {\n expect(isValidWeekNumber(0)).toBe(false);\n expect(isValidWeekNumber(-1)).toBe(false);\n expect(isValidWeekNumber(54)).toBe(false);\n expect(isValidWeekNumber(100)).toBe(false);\n });\n });\n\n describe('Visibility Logic', () => {\n it('should show week numbers when enabled', () => {\n expect(shouldShowWeekNumbers(true)).toBe(true);\n });\n\n it('should hide week numbers when disabled', () => {\n expect(shouldShowWeekNumbers(false)).toBe(false);\n });\n });\n\n describe('Edge Cases and Special Scenarios', () => {\n it('should handle week 53 years correctly', () => {\n // 2020 had 53 weeks\n const week53Date = new Date(2020, 11, 28); // December 28, 2020\n expect(getWeekNumber(week53Date)).toBe(53);\n\n // 2021 started with week 53 of 2020\n const jan1_2021 = new Date(2021, 0, 1); // January 1, 2021\n expect(getWeekNumber(jan1_2021)).toBe(53);\n expect(getWeekYear(jan1_2021)).toBe(2020);\n });\n\n it('should handle February in leap and non-leap years', () => {\n // February 2024 (leap year)\n const leapFebWeeks = generateWeekNumbers(2024, 1);\n expect(leapFebWeeks.length).toBe(6);\n\n // February 2023 (normal year)\n const normalFebWeeks = generateWeekNumbers(2023, 1);\n expect(normalFebWeeks.length).toBe(6);\n });\n\n it('should handle different calendar systems edge cases', () => {\n // Test with dates near week boundaries\n const sundayDate = new Date(2024, 5, 16); // Sunday\n const mondayDate = new Date(2024, 5, 17); // Monday\n\n const sundayWeek = getWeekNumber(sundayDate);\n const mondayWeek = getWeekNumber(mondayDate);\n\n expect(mondayWeek).toBe(sundayWeek + 1);\n });\n\n it('should maintain consistency across month boundaries', () => {\n // End of May / beginning of June 2024\n const endMayWeeks = generateWeekNumbers(2024, 4); // May\n const startJuneWeeks = generateWeekNumbers(2024, 5); // June\n\n // Last week of May should be consistent with June\n const lastMayWeek = endMayWeeks[endMayWeeks.length - 1];\n const firstJuneWeek = startJuneWeeks[0];\n\n // Not necessarily equal, but within logical range\n expect(Math.abs(lastMayWeek - firstJuneWeek)).toBeLessThanOrEqual(6);\n });\n });\n\n describe('Integration with Calendar Grid', () => {\n it('should generate week numbers that align with 6-week calendar grid', () => {\n const months = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\n months.forEach(month => {\n const weekNumbers = generateWeekNumbers(2024, month);\n expect(weekNumbers.length).toBe(6);\n\n weekNumbers.forEach(weekNum => {\n expect(isValidWeekNumber(weekNum)).toBe(true);\n });\n });\n });\n\n it('should handle special calendar scenarios', () => {\n // Months where the first week is incomplete\n const specialMonths = [\n { year: 2024, month: 0 }, // January 2024\n { year: 2024, month: 8 }, // September 2024\n { year: 2023, month: 0 }, // January 2023\n ];\n\n specialMonths.forEach(({ year, month }) => {\n const weekNumbers = generateWeekNumbers(year, month);\n expect(weekNumbers.length).toBe(6);\n\n // All numbers must be valid\n weekNumbers.forEach(weekNum => {\n expect(isValidWeekNumber(weekNum)).toBe(true);\n });\n });\n });\n });\n});\n"]}
@@ -22,18 +22,9 @@ const NvDatagridDocs = {
22
22
  args: {
23
23
  noDataMessage: 'No element available to display.',
24
24
  columns: [
25
- {
26
- header: 'Name',
27
- accessor: 'name',
28
- },
29
- {
30
- header: 'Age',
31
- accessor: 'age',
32
- },
33
- {
34
- header: 'Email',
35
- accessor: 'email',
36
- },
25
+ { header: 'Name', accessor: 'name' },
26
+ { header: 'Age', accessor: 'age' },
27
+ { header: 'Email', accessor: 'email' },
37
28
  ],
38
29
  },
39
30
  template: h("nv-datagrid", { "data-storybook-args": true }),
@@ -50,13 +41,18 @@ const NvDatagridDocs = {
50
41
  template: h("nv-datagrid", { "data-storybook-args": true }),
51
42
  },
52
43
  {
53
- name: nameof(x => x.columnsJson),
44
+ name: 'ColumnGroup',
54
45
  args: {
55
- columnsJson: `[
56
- {"header":"Name","accessor":"name"},
57
- {"header":"Age","accessor":"age"},
58
- {"header":"Email","accessor":"email"}
59
- ]`,
46
+ columns: [
47
+ { header: 'FirstName', accessor: 'firstName', group: 'Name' },
48
+ { header: 'LastName', accessor: 'lastName', group: 'Name' },
49
+ { header: 'Age', accessor: 'age' },
50
+ { header: 'Email', accessor: 'email' },
51
+ { header: 'Street', accessor: 'street', group: 'Address' },
52
+ { header: 'StreetNr', accessor: 'streetNr', group: 'Address' },
53
+ { header: 'ZipCode', accessor: 'zipCode', group: 'Address' },
54
+ { header: 'City', accessor: 'city', group: 'Address' },
55
+ ],
60
56
  },
61
57
  template: h("nv-datagrid", { "data-storybook-args": true }),
62
58
  },
@@ -70,16 +66,6 @@ const NvDatagridDocs = {
70
66
  },
71
67
  template: h("nv-datagrid", { "data-storybook-args": true }),
72
68
  },
73
- {
74
- name: nameof(x => x.dataJson),
75
- args: {
76
- dataJson: `[
77
- { "name": "Alice", "age": "25", "email": "alice@mail.com" },
78
- { "name": "Bob", "age": "30", "email": "bob@mail.com" }
79
- ]`,
80
- },
81
- template: h("nv-datagrid", { "data-storybook-args": true }),
82
- },
83
69
  {
84
70
  name: nameof(x => x.autoGenerateColumns),
85
71
  args: {
@@ -100,7 +86,7 @@ const NvDatagridDocs = {
100
86
  template: h("nv-datagrid", { "data-storybook-args": true }),
101
87
  },
102
88
  {
103
- name: 'ColumnsArrayAndDataArray',
89
+ name: 'ColumnsAndData',
104
90
  args: {
105
91
  columns: [
106
92
  { header: 'Name', accessor: 'name' },
@@ -115,17 +101,40 @@ const NvDatagridDocs = {
115
101
  template: h("nv-datagrid", { "data-storybook-args": true }),
116
102
  },
117
103
  {
118
- name: 'ColumnsJSONAndDataJSON',
104
+ name: 'ColumnGroupAndData',
119
105
  args: {
120
- columnsJson: `[
121
- {"header":"Name","accessor":"name"},
122
- {"header":"Age","accessor":"age"},
123
- {"header":"Email","accessor":"email"}
124
- ]`,
125
- dataJson: `[
126
- { "name": "Alice", "age": "25", "email": "alice@mail.com" },
127
- { "name": "Bob", "age": "30", "email": "bob@mail.com" }
128
- ]`,
106
+ columns: [
107
+ { header: 'FirstName', accessor: 'firstName', group: 'Name' },
108
+ { header: 'LastName', accessor: 'lastName', group: 'Name' },
109
+ { header: 'Age', accessor: 'age' },
110
+ { header: 'Email', accessor: 'email' },
111
+ { header: 'Street', accessor: 'street', group: 'Address' },
112
+ { header: 'StreetNr', accessor: 'streetNr', group: 'Address' },
113
+ { header: 'ZipCode', accessor: 'zipCode', group: 'Address' },
114
+ { header: 'City', accessor: 'city', group: 'Address' },
115
+ ],
116
+ data: [
117
+ {
118
+ firstName: 'Alice',
119
+ lastName: 'Dupont',
120
+ age: '25',
121
+ email: 'alice@mail.com',
122
+ street: 'SomeStreet',
123
+ streetNr: '1',
124
+ zipCode: '1000',
125
+ city: 'Bruxelles',
126
+ },
127
+ {
128
+ firstName: 'Bob',
129
+ lastName: 'Debouwer',
130
+ age: '30',
131
+ email: 'bob@mail.com',
132
+ street: 'AnyStreet',
133
+ streetNr: '203',
134
+ zipCode: '1000',
135
+ city: 'Bruxelles',
136
+ },
137
+ ],
129
138
  },
130
139
  template: h("nv-datagrid", { "data-storybook-args": true }),
131
140
  },
@@ -139,6 +148,36 @@ const NvDatagridDocs = {
139
148
  },
140
149
  template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
141
150
  },
151
+ {
152
+ name: 'WithDataAndTemplateAndColumnGroup',
153
+ args: {
154
+ data: [
155
+ {
156
+ id: 1,
157
+ firstName: 'Alice',
158
+ lastName: 'Dupont',
159
+ age: '25',
160
+ email: 'alice@mail.com',
161
+ street: 'SomeStreet',
162
+ streetNr: '1',
163
+ zipCode: '1000',
164
+ city: 'Bruxelles',
165
+ },
166
+ {
167
+ id: 2,
168
+ firstName: 'Bob',
169
+ lastName: 'Debouwer',
170
+ age: '30',
171
+ email: 'bob@mail.com',
172
+ street: 'AnyStreet',
173
+ streetNr: '203',
174
+ zipCode: '1000',
175
+ city: 'Bruxelles',
176
+ },
177
+ ],
178
+ },
179
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "street", header: "Street", group: "Address" }), h("nv-datagridcolumn", { accessor: "streetNr", header: "Street Number", group: "Address" }), h("nv-datagridcolumn", { accessor: "zipCode", header: "Zip Code", group: "Address" }), h("nv-datagridcolumn", { accessor: "city", header: "City", group: "Address" }), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
180
+ },
142
181
  {
143
182
  name: 'WithDataAndTemplateComplexData',
144
183
  args: {
@@ -179,6 +218,50 @@ const NvDatagridDocs = {
179
218
  },
180
219
  template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
181
220
  },
221
+ {
222
+ name: 'WithDataAndTemplateComplexDataAndColumnGroup',
223
+ args: {
224
+ data: [
225
+ {
226
+ id: 1,
227
+ firstName: 'John',
228
+ lastName: 'Doe',
229
+ age: 25,
230
+ email: 'john.doe@mail.com',
231
+ address: { city: 'New York', country: 'USA' },
232
+ status: { label: 'success', color: '1', icon: 'check' },
233
+ },
234
+ {
235
+ id: 2,
236
+ firstName: 'Jane',
237
+ lastName: 'Doe',
238
+ age: 30,
239
+ email: 'jane.doe@mail.com',
240
+ address: { city: 'Los Angeles', country: 'USA' },
241
+ status: { label: 'warning', color: '2', icon: 'alert-circle' },
242
+ },
243
+ {
244
+ id: 3,
245
+ firstName: 'John',
246
+ lastName: 'Smith',
247
+ age: 35,
248
+ email: 'john.smith@mail.com',
249
+ address: { city: 'London', country: 'UK' },
250
+ status: { label: 'error', color: '3', icon: 'loader' },
251
+ },
252
+ {
253
+ id: 4,
254
+ firstName: 'Jane',
255
+ lastName: 'Smith',
256
+ age: 40,
257
+ email: 'jane.smith@mail.com',
258
+ address: { city: 'Paris', country: 'France' },
259
+ status: { label: 'info', color: '5', icon: 'info-circle' },
260
+ },
261
+ ],
262
+ },
263
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address", group: "Contact" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address", group: "Contact" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
264
+ },
182
265
  {
183
266
  name: nameof(x => x.enableGlobalFilter),
184
267
  args: {
@@ -685,9 +768,9 @@ const NvDatagridDocs = {
685
768
  name: 'SlotBefore',
686
769
  args: {
687
770
  columns: [
688
- { header: 'Name', accessor: 'name' },
689
- { header: 'Age', accessor: 'age' },
690
- { header: 'Email', accessor: 'email' },
771
+ { header: 'Name', accessor: 'name', group: '' },
772
+ { header: 'Age', accessor: 'age', group: '' },
773
+ { header: 'Email', accessor: 'email', group: '' },
691
774
  ],
692
775
  data: [
693
776
  { name: 'Alice', age: '25', email: 'alice@mail.com' },
@@ -700,9 +783,9 @@ const NvDatagridDocs = {
700
783
  name: 'SlotAfter',
701
784
  args: {
702
785
  columns: [
703
- { header: 'Name', accessor: 'name' },
704
- { header: 'Age', accessor: 'age' },
705
- { header: 'Email', accessor: 'email' },
786
+ { header: 'Name', accessor: 'name', group: '' },
787
+ { header: 'Age', accessor: 'age', group: '' },
788
+ { header: 'Email', accessor: 'email', group: '' },
706
789
  ],
707
790
  data: [
708
791
  { name: 'Alice', age: '25', email: 'alice@mail.com' },
@@ -715,9 +798,9 @@ const NvDatagridDocs = {
715
798
  name: 'SlotBeforeAndAfter',
716
799
  args: {
717
800
  columns: [
718
- { header: 'Name', accessor: 'name' },
719
- { header: 'Age', accessor: 'age' },
720
- { header: 'Email', accessor: 'email' },
801
+ { header: 'Name', accessor: 'name', group: '' },
802
+ { header: 'Age', accessor: 'age', group: '' },
803
+ { header: 'Email', accessor: 'email', group: '' },
721
804
  ],
722
805
  data: [
723
806
  { name: 'Alice', age: '25', email: 'alice@mail.com' },