@nova-design-system/nova-webcomponents 3.23.0 → 3.24.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 (792) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -1
  2. package/dist/cjs/events.utils-BE6R5q9C.js +33 -0
  3. package/dist/cjs/events.utils-BE6R5q9C.js.map +1 -0
  4. package/dist/cjs/{grow.animation-BrWzyoUA.js → grow.animation-ynu_HmA_.js} +2 -30
  5. package/dist/cjs/grow.animation-ynu_HmA_.js.map +1 -0
  6. package/dist/cjs/{i18n.utils-BizoXo6c.js → i18n.utils-ku0bScip.js} +16 -20
  7. package/dist/cjs/{i18n.utils-BizoXo6c.js.map → i18n.utils-ku0bScip.js.map} +1 -1
  8. package/dist/cjs/index-B1na8x6M.js +12 -4
  9. package/dist/cjs/index.cjs.js +5 -2
  10. package/dist/cjs/index.cjs.js.map +1 -1
  11. package/dist/cjs/index.esm-CG1TVKfu.js +540 -0
  12. package/dist/cjs/index.esm-CG1TVKfu.js.map +1 -0
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/cjs/native.cjs.js +1 -1
  15. package/dist/cjs/nv-accordion.cjs.entry.js +2 -7
  16. package/dist/cjs/nv-accordion.entry.cjs.js.map +1 -1
  17. package/dist/cjs/nv-alert.cjs.entry.js +1 -2
  18. package/dist/cjs/nv-alert.entry.cjs.js.map +1 -1
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  20. package/dist/cjs/nv-button.cjs.entry.js +3 -5
  21. package/dist/cjs/nv-button.entry.cjs.js.map +1 -1
  22. package/dist/cjs/nv-calendar.cjs.entry.js +14 -24
  23. package/dist/cjs/nv-calendar.entry.cjs.js.map +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +67 -72
  25. package/dist/cjs/nv-datagrid.entry.cjs.js.map +1 -1
  26. package/dist/cjs/nv-dialog.cjs.entry.js +6 -538
  27. package/dist/cjs/nv-dialog.entry.cjs.js.map +1 -1
  28. package/dist/cjs/nv-drawer.cjs.entry.js +443 -0
  29. package/dist/cjs/nv-drawer.entry.cjs.js.map +1 -0
  30. package/dist/cjs/nv-drawerfooter.nv-drawerheader.entry.cjs.js.map +1 -0
  31. package/dist/cjs/nv-drawerfooter_2.cjs.entry.js +144 -0
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +6 -6
  33. package/dist/cjs/nv-fieldcheckbox.entry.cjs.js.map +1 -1
  34. package/dist/cjs/nv-fielddate.cjs.entry.js +12 -15
  35. package/dist/cjs/nv-fielddate.entry.cjs.js.map +1 -1
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js +12 -13
  37. package/dist/cjs/nv-fielddaterange.entry.cjs.js.map +1 -1
  38. package/dist/cjs/nv-fielddropdown.cjs.entry.js +24 -33
  39. package/dist/cjs/nv-fielddropdown.entry.cjs.js.map +1 -1
  40. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -3
  41. package/dist/cjs/nv-fielddropdownitem.entry.cjs.js.map +1 -1
  42. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +19 -27
  43. package/dist/cjs/nv-fieldmultiselect.entry.cjs.js.map +1 -1
  44. package/dist/cjs/nv-fieldnumber.cjs.entry.js +6 -6
  45. package/dist/cjs/nv-fieldnumber.entry.cjs.js.map +1 -1
  46. package/dist/cjs/nv-fieldpassword.cjs.entry.js +6 -6
  47. package/dist/cjs/nv-fieldpassword.entry.cjs.js.map +1 -1
  48. package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
  49. package/dist/cjs/nv-fieldradio.entry.cjs.js.map +1 -1
  50. package/dist/cjs/nv-fieldselect.cjs.entry.js +8 -8
  51. package/dist/cjs/nv-fieldselect.entry.cjs.js.map +1 -1
  52. package/dist/cjs/nv-fieldslider.cjs.entry.js +5 -5
  53. package/dist/cjs/nv-fieldslider.entry.cjs.js.map +1 -1
  54. package/dist/cjs/nv-fieldtext.cjs.entry.js +6 -6
  55. package/dist/cjs/nv-fieldtext.entry.cjs.js.map +1 -1
  56. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +6 -7
  57. package/dist/cjs/nv-fieldtextarea.entry.cjs.js.map +1 -1
  58. package/dist/cjs/nv-fieldtime.cjs.entry.js +27 -35
  59. package/dist/cjs/nv-fieldtime.entry.cjs.js.map +1 -1
  60. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-icon.entry.cjs.js.map +1 -1
  62. package/dist/cjs/nv-iconbutton.nv-loader.entry.cjs.js.map +1 -1
  63. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +5 -6
  64. package/dist/cjs/nv-menu.cjs.entry.js +3 -4
  65. package/dist/cjs/nv-menu.entry.cjs.js.map +1 -1
  66. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  67. package/dist/cjs/nv-notification-bullet.cjs.entry.js +1 -2
  68. package/dist/cjs/nv-notification-bullet.entry.cjs.js.map +1 -1
  69. package/dist/cjs/nv-notification.cjs.entry.js +6 -9
  70. package/dist/cjs/nv-notification.entry.cjs.js.map +1 -1
  71. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  72. package/dist/cjs/nv-popover.cjs.entry.js +12 -12
  73. package/dist/cjs/nv-popover.entry.cjs.js.map +1 -1
  74. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  75. package/dist/cjs/nv-sidebar.cjs.entry.js +3 -3
  76. package/dist/cjs/nv-sidebar.entry.cjs.js.map +1 -1
  77. package/dist/cjs/nv-sidebarcontent.cjs.entry.js +1 -1
  78. package/dist/cjs/nv-sidebardivider.cjs.entry.js +1 -1
  79. package/dist/cjs/nv-sidebarfooter.cjs.entry.js +1 -1
  80. package/dist/cjs/nv-sidebargroup.cjs.entry.js +1 -1
  81. package/dist/cjs/nv-sidebarheader.cjs.entry.js +1 -1
  82. package/dist/cjs/nv-sidebarlogo.cjs.entry.js +1 -1
  83. package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +4 -5
  84. package/dist/cjs/nv-sidebarnavitem.entry.cjs.js.map +1 -1
  85. package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +1 -1
  86. package/dist/cjs/nv-split.cjs.entry.js +43 -41
  87. package/dist/cjs/nv-split.entry.cjs.js.map +1 -1
  88. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  89. package/dist/cjs/nv-table.cjs.entry.js +6 -8
  90. package/dist/cjs/nv-table.entry.cjs.js.map +1 -1
  91. package/dist/cjs/nv-tableheader.cjs.entry.js +2 -2
  92. package/dist/cjs/nv-tableheader.entry.cjs.js.map +1 -1
  93. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  94. package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
  95. package/dist/cjs/nv-togglebutton.entry.cjs.js.map +1 -1
  96. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +3 -4
  97. package/dist/cjs/nv-togglebuttongroup.entry.cjs.js.map +1 -1
  98. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  99. package/dist/collection/collection-manifest.json +3 -0
  100. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +66 -40
  101. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
  102. package/dist/collection/components/nv-accordion/nv-accordion.js +2 -7
  103. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  104. package/dist/collection/components/nv-alert/nv-alert.docs.js +18 -1
  105. package/dist/collection/components/nv-alert/nv-alert.docs.js.map +1 -1
  106. package/dist/collection/components/nv-alert/nv-alert.js +1 -2
  107. package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
  108. package/dist/collection/components/nv-avatar/nv-avatar.docs.js +56 -0
  109. package/dist/collection/components/nv-avatar/nv-avatar.docs.js.map +1 -1
  110. package/dist/collection/components/nv-badge/nv-badge.docs.js +64 -15
  111. package/dist/collection/components/nv-badge/nv-badge.docs.js.map +1 -1
  112. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +10 -1
  113. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
  114. package/dist/collection/components/nv-button/nv-button.docs.js +38 -4
  115. package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
  116. package/dist/collection/components/nv-button/nv-button.js +3 -5
  117. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  118. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +22 -0
  119. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -1
  120. package/dist/collection/components/nv-calendar/nv-calendar.docs.js +269 -14
  121. package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -1
  122. package/dist/collection/components/nv-calendar/nv-calendar.js +13 -22
  123. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  124. package/dist/collection/components/nv-calendar/partials/week-numbers.js +1 -2
  125. package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +1 -1
  126. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +11 -11
  127. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
  128. package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +2 -2
  129. package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +1 -1
  130. package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +6 -5
  131. package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +1 -1
  132. package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +10 -1
  133. package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +1 -1
  134. package/dist/collection/components/nv-col/nv-col.docs.js +8 -0
  135. package/dist/collection/components/nv-col/nv-col.docs.js.map +1 -1
  136. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +290 -286
  137. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  138. package/dist/collection/components/nv-datagrid/nv-datagrid.js +67 -72
  139. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  140. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +64 -13
  141. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  142. package/dist/collection/components/nv-drawer/nv-drawer.css +114 -0
  143. package/dist/collection/components/nv-drawer/nv-drawer.docs.js +145 -0
  144. package/dist/collection/components/nv-drawer/nv-drawer.docs.js.map +1 -0
  145. package/dist/collection/components/nv-drawer/nv-drawer.js +719 -0
  146. package/dist/collection/components/nv-drawer/nv-drawer.js.map +1 -0
  147. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.css +8 -0
  148. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js +6 -0
  149. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js.map +1 -0
  150. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js +325 -0
  151. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js.map +1 -0
  152. package/dist/collection/components/nv-drawerheader/nv-drawerheader.css +32 -0
  153. package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js +6 -0
  154. package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js.map +1 -0
  155. package/dist/collection/components/nv-drawerheader/nv-drawerheader.js +92 -0
  156. package/dist/collection/components/nv-drawerheader/nv-drawerheader.js.map +1 -0
  157. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +186 -136
  158. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +1 -1
  159. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -6
  160. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  161. package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js +300 -109
  162. package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js.map +1 -1
  163. package/dist/collection/components/nv-fielddate/nv-fielddate.js +11 -14
  164. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  165. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +1 -1
  166. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +406 -1
  167. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +1 -1
  168. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +11 -12
  169. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  170. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +1 -1
  171. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +210 -118
  172. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  173. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +22 -31
  174. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  175. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +1 -1
  176. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +2 -3
  177. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  178. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  179. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +462 -322
  180. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  181. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +17 -25
  182. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  183. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +1 -1
  184. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +1 -1
  185. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +70 -7
  186. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  187. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +5 -5
  188. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  189. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +1 -1
  190. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +79 -6
  191. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  192. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +5 -5
  193. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  194. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +58 -6
  195. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +1 -1
  196. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +4 -4
  197. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  198. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +138 -30
  199. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  200. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +7 -7
  201. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  202. package/dist/collection/components/nv-fieldselect/styles/nv-fieldselect.css +1 -1
  203. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +138 -30
  204. package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -1
  205. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  206. package/dist/collection/components/nv-fieldslider/partials/field-input.js +1 -1
  207. package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -1
  208. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +1 -1
  209. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +1 -1
  210. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +92 -16
  211. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  212. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +5 -5
  213. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  214. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +64 -3
  215. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +1 -1
  216. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +6 -7
  217. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  218. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +41 -22
  219. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  220. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +25 -33
  221. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  222. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +1 -1
  223. package/dist/collection/components/nv-fieldtime/utils/format-utils.js +1 -1
  224. package/dist/collection/components/nv-fieldtime/utils/format-utils.js.map +1 -1
  225. package/dist/collection/components/nv-icon/nv-icon.docs.js +46 -0
  226. package/dist/collection/components/nv-icon/nv-icon.docs.js.map +1 -1
  227. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  228. package/dist/collection/components/nv-icon/nv-icons.js +2 -0
  229. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  230. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
  231. package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js +18 -1
  232. package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js.map +1 -1
  233. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +3 -4
  234. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
  235. package/dist/collection/components/nv-loader/nv-loader.docs.js +8 -4
  236. package/dist/collection/components/nv-loader/nv-loader.docs.js.map +1 -1
  237. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  238. package/dist/collection/components/nv-menu/nv-menu.docs.js +17 -5
  239. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  240. package/dist/collection/components/nv-menu/nv-menu.js +3 -4
  241. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  242. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  243. package/dist/collection/components/nv-notification/nv-notification.docs.js +34 -3
  244. package/dist/collection/components/nv-notification/nv-notification.docs.js.map +1 -1
  245. package/dist/collection/components/nv-notification/nv-notification.js +6 -9
  246. package/dist/collection/components/nv-notification/nv-notification.js.map +1 -1
  247. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js +60 -0
  248. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js.map +1 -1
  249. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js +1 -2
  250. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js.map +1 -1
  251. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
  252. package/dist/collection/components/nv-popover/nv-popover.docs.js +35 -10
  253. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  254. package/dist/collection/components/nv-popover/nv-popover.js +2 -3
  255. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  256. package/dist/collection/components/nv-row/nv-row.docs.js +7 -0
  257. package/dist/collection/components/nv-row/nv-row.docs.js.map +1 -1
  258. package/dist/collection/components/nv-row/nv-row.js +1 -1
  259. package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js +39 -0
  260. package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js.map +1 -1
  261. package/dist/collection/components/nv-sidebar/nv-sidebar.js +3 -3
  262. package/dist/collection/components/nv-sidebar/nv-sidebar.js.map +1 -1
  263. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +1 -1
  264. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +1 -1
  265. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +1 -1
  266. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +1 -1
  267. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +1 -1
  268. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +1 -1
  269. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +5 -6
  270. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js.map +1 -1
  271. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +1 -1
  272. package/dist/collection/components/nv-split/nv-split.docs.js +38 -2
  273. package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -1
  274. package/dist/collection/components/nv-split/nv-split.js +44 -42
  275. package/dist/collection/components/nv-split/nv-split.js.map +1 -1
  276. package/dist/collection/components/nv-split/styles/nv-split.css +2 -0
  277. package/dist/collection/components/nv-stack/nv-stack.docs.js +13 -0
  278. package/dist/collection/components/nv-stack/nv-stack.docs.js.map +1 -1
  279. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  280. package/dist/collection/components/nv-table/nv-table.docs.js +12 -0
  281. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  282. package/dist/collection/components/nv-table/nv-table.js +1 -1
  283. package/dist/collection/components/nv-table/nv-table.utils.js +5 -7
  284. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -1
  285. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +4 -5
  286. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -1
  287. package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js +29 -1
  288. package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js.map +1 -1
  289. package/dist/collection/components/nv-tableheader/nv-tableheader.js +2 -2
  290. package/dist/collection/components/nv-tableheader/nv-tableheader.js.map +1 -1
  291. package/dist/collection/components/nv-toggle/nv-toggle.docs.js +31 -0
  292. package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -1
  293. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  294. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  295. package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +16 -12
  296. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +20 -7
  297. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  298. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +2 -3
  299. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  300. package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +4 -12
  301. package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js +33 -6
  302. package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js.map +1 -1
  303. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  304. package/dist/collection/templates/navigation.docs.js +1 -1
  305. package/dist/collection/templates/navigation.docs.js.map +1 -1
  306. package/dist/collection/utils/i18n.utils.js +1 -2
  307. package/dist/collection/utils/i18n.utils.js.map +1 -1
  308. package/dist/collection/utils/search-engine/strategies/fuzzy.js +2 -2
  309. package/dist/collection/utils/search-engine/strategies/fuzzy.js.map +1 -1
  310. package/dist/collection/utils/search-engine/strategies/smart.js +2 -2
  311. package/dist/collection/utils/search-engine/strategies/smart.js.map +1 -1
  312. package/dist/collection/utils/search-engine/strategies/strict.js +2 -2
  313. package/dist/collection/utils/search-engine/strategies/strict.js.map +1 -1
  314. package/dist/collection/utils/search-engine/worker/worker-client.js +7 -10
  315. package/dist/collection/utils/search-engine/worker/worker-client.js.map +1 -1
  316. package/dist/components/index.js +4 -2
  317. package/dist/components/index.js.map +1 -1
  318. package/dist/components/nv-accordion-item.js +1 -1
  319. package/dist/components/nv-accordion.js +6 -11
  320. package/dist/components/nv-accordion.js.map +1 -1
  321. package/dist/components/nv-alert.js +2 -3
  322. package/dist/components/nv-alert.js.map +1 -1
  323. package/dist/components/nv-avatar.js +1 -1
  324. package/dist/components/nv-badge.js +1 -1
  325. package/dist/components/nv-breadcrumb.js +2 -2
  326. package/dist/components/nv-button.js +1 -1
  327. package/dist/components/nv-calendar.js +1 -1
  328. package/dist/components/nv-datagrid.js +69 -74
  329. package/dist/components/nv-datagrid.js.map +1 -1
  330. package/dist/components/nv-dialog.js +7 -539
  331. package/dist/components/nv-dialog.js.map +1 -1
  332. package/dist/components/nv-dialogfooter.js +1 -1
  333. package/dist/components/nv-drawer.d.ts +11 -0
  334. package/dist/components/nv-drawer.js +507 -0
  335. package/dist/components/nv-drawer.js.map +1 -0
  336. package/dist/components/nv-drawerfooter.d.ts +11 -0
  337. package/dist/components/nv-drawerfooter.js +9 -0
  338. package/dist/components/nv-drawerfooter.js.map +1 -0
  339. package/dist/components/nv-drawerheader.d.ts +11 -0
  340. package/dist/components/nv-drawerheader.js +9 -0
  341. package/dist/components/nv-drawerheader.js.map +1 -0
  342. package/dist/components/nv-fieldcheckbox.js +1 -1
  343. package/dist/components/nv-fielddate.js +18 -21
  344. package/dist/components/nv-fielddate.js.map +1 -1
  345. package/dist/components/nv-fielddaterange.js +18 -19
  346. package/dist/components/nv-fielddaterange.js.map +1 -1
  347. package/dist/components/nv-fielddropdown.js +29 -38
  348. package/dist/components/nv-fielddropdown.js.map +1 -1
  349. package/dist/components/nv-fielddropdownitem.js +1 -1
  350. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  351. package/dist/components/nv-fieldmultiselect.js +26 -34
  352. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  353. package/dist/components/nv-fieldnumber.js +1 -1
  354. package/dist/components/nv-fieldpassword.js +9 -9
  355. package/dist/components/nv-fieldpassword.js.map +1 -1
  356. package/dist/components/nv-fieldradio.js +4 -4
  357. package/dist/components/nv-fieldradio.js.map +1 -1
  358. package/dist/components/nv-fieldselect.js +11 -11
  359. package/dist/components/nv-fieldselect.js.map +1 -1
  360. package/dist/components/nv-fieldslider.js +9 -9
  361. package/dist/components/nv-fieldslider.js.map +1 -1
  362. package/dist/components/nv-fieldtext.js +1 -1
  363. package/dist/components/nv-fieldtextarea.js +6 -7
  364. package/dist/components/nv-fieldtextarea.js.map +1 -1
  365. package/dist/components/nv-fieldtime.js +31 -39
  366. package/dist/components/nv-fieldtime.js.map +1 -1
  367. package/dist/components/nv-icon.js +1 -1
  368. package/dist/components/nv-iconbutton.js +1 -1
  369. package/dist/components/nv-loader.js +1 -1
  370. package/dist/components/nv-menu.js +6 -7
  371. package/dist/components/nv-menu.js.map +1 -1
  372. package/dist/components/nv-menuitem.js +1 -1
  373. package/dist/components/nv-notification-bullet.js +1 -1
  374. package/dist/components/nv-notification.js +7 -10
  375. package/dist/components/nv-notification.js.map +1 -1
  376. package/dist/components/nv-notificationcontainer.js +1 -1
  377. package/dist/components/nv-popover.js +1 -1
  378. package/dist/components/nv-row.js +1 -1
  379. package/dist/components/nv-sidebar.js +4 -4
  380. package/dist/components/nv-sidebar.js.map +1 -1
  381. package/dist/components/nv-sidebarcontent.js +1 -1
  382. package/dist/components/nv-sidebardivider.js +1 -1
  383. package/dist/components/nv-sidebarfooter.js +1 -1
  384. package/dist/components/nv-sidebargroup.js +1 -1
  385. package/dist/components/nv-sidebarheader.js +1 -1
  386. package/dist/components/nv-sidebarlogo.js +1 -1
  387. package/dist/components/nv-sidebarnavitem.js +6 -7
  388. package/dist/components/nv-sidebarnavitem.js.map +1 -1
  389. package/dist/components/nv-sidebarnavsubitem.js +1 -1
  390. package/dist/components/nv-split.js +43 -41
  391. package/dist/components/nv-split.js.map +1 -1
  392. package/dist/components/nv-stack.js +1 -1
  393. package/dist/components/nv-table.js +6 -8
  394. package/dist/components/nv-table.js.map +1 -1
  395. package/dist/components/nv-tableheader.js +5 -5
  396. package/dist/components/nv-tableheader.js.map +1 -1
  397. package/dist/components/nv-toggle.js +2 -2
  398. package/dist/components/nv-togglebutton.js +2 -2
  399. package/dist/components/nv-togglebutton.js.map +1 -1
  400. package/dist/components/nv-togglebuttongroup.js +3 -4
  401. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  402. package/dist/components/nv-tooltip.js +1 -1
  403. package/dist/components/{p-D1i2OAGe.js → p-B45HbBWe.js} +6 -8
  404. package/dist/components/p-B45HbBWe.js.map +1 -0
  405. package/dist/components/p-B6GgGra-.js +29 -0
  406. package/dist/components/p-B6GgGra-.js.map +1 -0
  407. package/dist/components/{p-Dk8ekxr_.js → p-B7VlEQVW.js} +16 -26
  408. package/dist/components/p-B7VlEQVW.js.map +1 -0
  409. package/dist/components/{p-B-3kAnun.js → p-B9i3m6rk.js} +6 -6
  410. package/dist/components/p-B9i3m6rk.js.map +1 -0
  411. package/dist/components/{p-BQo7AMPX.js → p-BILd3Ta-.js} +9 -9
  412. package/dist/components/p-BILd3Ta-.js.map +1 -0
  413. package/dist/components/{p-Dc_0pr83.js → p-BISctfud.js} +8 -8
  414. package/dist/components/p-BISctfud.js.map +1 -0
  415. package/dist/components/{p-CIyQBhTX.js → p-BVOv1zgq.js} +4 -4
  416. package/dist/components/{p-CIyQBhTX.js.map → p-BVOv1zgq.js.map} +1 -1
  417. package/dist/components/{p-B6EYOx_n.js → p-Bg_l3jn1.js} +3 -3
  418. package/dist/components/{p-B6EYOx_n.js.map → p-Bg_l3jn1.js.map} +1 -1
  419. package/dist/components/{p-CBvZjfqs.js → p-C2QAWGhf.js} +4 -4
  420. package/dist/components/{p-CBvZjfqs.js.map → p-C2QAWGhf.js.map} +1 -1
  421. package/dist/components/{p-DzUXTCUy.js → p-COnt5ux_.js} +3 -3
  422. package/dist/components/{p-DzUXTCUy.js.map → p-COnt5ux_.js.map} +1 -1
  423. package/dist/components/{p-KUIQrV3D.js → p-Cc7XnqPp.js} +5 -5
  424. package/dist/components/{p-KUIQrV3D.js.map → p-Cc7XnqPp.js.map} +1 -1
  425. package/dist/components/{p-CmwaW0q4.js → p-D02w_Ru6.js} +3 -28
  426. package/dist/components/p-D02w_Ru6.js.map +1 -0
  427. package/dist/components/p-D3eWMME9.js +538 -0
  428. package/dist/components/p-D3eWMME9.js.map +1 -0
  429. package/dist/components/{p--iYGZN4R.js → p-D6APFL6N.js} +11 -11
  430. package/dist/components/p-D6APFL6N.js.map +1 -0
  431. package/dist/components/{p-DstpaOhw.js → p-DZJHk4fr.js} +3 -3
  432. package/dist/components/{p-DstpaOhw.js.map → p-DZJHk4fr.js.map} +1 -1
  433. package/dist/components/{p-Da9WgE5U.js → p-DiUP3TzF.js} +5 -5
  434. package/dist/components/{p-Da9WgE5U.js.map → p-DiUP3TzF.js.map} +1 -1
  435. package/dist/components/{p-DWG6az-u.js → p-DpDooigg.js} +5 -6
  436. package/dist/components/p-DpDooigg.js.map +1 -0
  437. package/dist/components/{p-BKfPh2in.js → p-Dr-67WvG.js} +4 -4
  438. package/dist/components/{p-BKfPh2in.js.map → p-Dr-67WvG.js.map} +1 -1
  439. package/dist/components/{p-DaiLIZ8f.js → p-DvapDVBj.js} +8 -9
  440. package/dist/components/p-DvapDVBj.js.map +1 -0
  441. package/dist/components/{p-DOZbXX2L.js → p-IlwlcG9l.js} +16 -20
  442. package/dist/components/p-IlwlcG9l.js.map +1 -0
  443. package/dist/components/p-W6vOfMC9.js +63 -0
  444. package/dist/components/p-W6vOfMC9.js.map +1 -0
  445. package/dist/components/{p-CBOuqJTb.js → p-nfYynlVq.js} +4 -4
  446. package/dist/components/{p-CBOuqJTb.js.map → p-nfYynlVq.js.map} +1 -1
  447. package/dist/components/{p-CBF8V1L7.js → p-tyaJ-nGV.js} +3 -4
  448. package/dist/components/p-tyaJ-nGV.js.map +1 -0
  449. package/dist/components/p-u-maNLLs.js +145 -0
  450. package/dist/components/p-u-maNLLs.js.map +1 -0
  451. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -1
  452. package/dist/esm/events.utils-B6GgGra-.js +29 -0
  453. package/dist/esm/events.utils-B6GgGra-.js.map +1 -0
  454. package/dist/esm/{grow.animation-CvHGHBL4.js → grow.animation-D7ep_aVl.js} +3 -28
  455. package/dist/esm/grow.animation-D7ep_aVl.js.map +1 -0
  456. package/dist/esm/{i18n.utils-DOZbXX2L.js → i18n.utils-IlwlcG9l.js} +16 -20
  457. package/dist/esm/{i18n.utils-DOZbXX2L.js.map → i18n.utils-IlwlcG9l.js.map} +1 -1
  458. package/dist/esm/index-CasQushP.js +12 -4
  459. package/dist/esm/index.esm-D3eWMME9.js +538 -0
  460. package/dist/esm/index.esm-D3eWMME9.js.map +1 -0
  461. package/dist/esm/index.js +4 -2
  462. package/dist/esm/index.js.map +1 -1
  463. package/dist/esm/loader.js +1 -1
  464. package/dist/esm/native.js +1 -1
  465. package/dist/esm/nv-accordion.entry.js +2 -7
  466. package/dist/esm/nv-accordion.entry.js.map +1 -1
  467. package/dist/esm/nv-alert.entry.js +1 -2
  468. package/dist/esm/nv-alert.entry.js.map +1 -1
  469. package/dist/esm/nv-badge_2.entry.js +1 -1
  470. package/dist/esm/nv-button.entry.js +3 -5
  471. package/dist/esm/nv-button.entry.js.map +1 -1
  472. package/dist/esm/nv-calendar.entry.js +14 -24
  473. package/dist/esm/nv-calendar.entry.js.map +1 -1
  474. package/dist/esm/nv-datagrid.entry.js +67 -72
  475. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  476. package/dist/esm/nv-dialog.entry.js +3 -535
  477. package/dist/esm/nv-dialog.entry.js.map +1 -1
  478. package/dist/esm/nv-drawer.entry.js +441 -0
  479. package/dist/esm/nv-drawer.entry.js.map +1 -0
  480. package/dist/esm/nv-drawerfooter.nv-drawerheader.entry.js.map +1 -0
  481. package/dist/esm/nv-drawerfooter_2.entry.js +141 -0
  482. package/dist/esm/nv-fieldcheckbox.entry.js +6 -6
  483. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  484. package/dist/esm/nv-fielddate.entry.js +12 -15
  485. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  486. package/dist/esm/nv-fielddaterange.entry.js +12 -13
  487. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  488. package/dist/esm/nv-fielddropdown.entry.js +24 -33
  489. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  490. package/dist/esm/nv-fielddropdownitem.entry.js +2 -3
  491. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  492. package/dist/esm/nv-fieldmultiselect.entry.js +19 -27
  493. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  494. package/dist/esm/nv-fieldnumber.entry.js +6 -6
  495. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  496. package/dist/esm/nv-fieldpassword.entry.js +6 -6
  497. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  498. package/dist/esm/nv-fieldradio.entry.js +4 -4
  499. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  500. package/dist/esm/nv-fieldselect.entry.js +8 -8
  501. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  502. package/dist/esm/nv-fieldslider.entry.js +5 -5
  503. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  504. package/dist/esm/nv-fieldtext.entry.js +6 -6
  505. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  506. package/dist/esm/nv-fieldtextarea.entry.js +6 -7
  507. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  508. package/dist/esm/nv-fieldtime.entry.js +27 -35
  509. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  510. package/dist/esm/nv-icon.entry.js +2 -2
  511. package/dist/esm/nv-icon.entry.js.map +1 -1
  512. package/dist/esm/nv-iconbutton.nv-loader.entry.js.map +1 -1
  513. package/dist/esm/nv-iconbutton_2.entry.js +5 -6
  514. package/dist/esm/nv-menu.entry.js +3 -4
  515. package/dist/esm/nv-menu.entry.js.map +1 -1
  516. package/dist/esm/nv-menuitem.entry.js +1 -1
  517. package/dist/esm/nv-notification-bullet.entry.js +1 -2
  518. package/dist/esm/nv-notification-bullet.entry.js.map +1 -1
  519. package/dist/esm/nv-notification.entry.js +6 -9
  520. package/dist/esm/nv-notification.entry.js.map +1 -1
  521. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  522. package/dist/esm/nv-popover.entry.js +4 -4
  523. package/dist/esm/nv-popover.entry.js.map +1 -1
  524. package/dist/esm/nv-row.entry.js +1 -1
  525. package/dist/esm/nv-sidebar.entry.js +3 -3
  526. package/dist/esm/nv-sidebar.entry.js.map +1 -1
  527. package/dist/esm/nv-sidebarcontent.entry.js +1 -1
  528. package/dist/esm/nv-sidebardivider.entry.js +1 -1
  529. package/dist/esm/nv-sidebarfooter.entry.js +1 -1
  530. package/dist/esm/nv-sidebargroup.entry.js +1 -1
  531. package/dist/esm/nv-sidebarheader.entry.js +1 -1
  532. package/dist/esm/nv-sidebarlogo.entry.js +1 -1
  533. package/dist/esm/nv-sidebarnavitem.entry.js +4 -5
  534. package/dist/esm/nv-sidebarnavitem.entry.js.map +1 -1
  535. package/dist/esm/nv-sidebarnavsubitem.entry.js +1 -1
  536. package/dist/esm/nv-split.entry.js +43 -41
  537. package/dist/esm/nv-split.entry.js.map +1 -1
  538. package/dist/esm/nv-stack.entry.js +1 -1
  539. package/dist/esm/nv-table.entry.js +6 -8
  540. package/dist/esm/nv-table.entry.js.map +1 -1
  541. package/dist/esm/nv-tableheader.entry.js +2 -2
  542. package/dist/esm/nv-tableheader.entry.js.map +1 -1
  543. package/dist/esm/nv-toggle.entry.js +2 -2
  544. package/dist/esm/nv-togglebutton.entry.js +2 -2
  545. package/dist/esm/nv-togglebutton.entry.js.map +1 -1
  546. package/dist/esm/nv-togglebuttongroup.entry.js +3 -4
  547. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  548. package/dist/esm/nv-tooltip.entry.js +1 -1
  549. package/dist/lib/generators/angular-output.js +9 -7
  550. package/dist/lib/generators/angular-output.js.map +1 -1
  551. package/dist/lib/generators/docs-blazor.js +32 -14
  552. package/dist/lib/generators/docs-blazor.js.map +1 -1
  553. package/dist/lib/generators/vue-output.js +10 -11
  554. package/dist/lib/generators/vue-output.js.map +1 -1
  555. package/dist/lib/utils/componentBinding.js +9 -10
  556. package/dist/lib/utils/componentBinding.js.map +1 -1
  557. package/dist/lib/utils/parseToCSharpTypes.js +3 -16
  558. package/dist/lib/utils/parseToCSharpTypes.js.map +1 -1
  559. package/dist/lib/utils/spread.js +3 -4
  560. package/dist/lib/utils/spread.js.map +1 -1
  561. package/dist/native/index.esm.js +1 -1
  562. package/dist/native/index.esm.js.map +1 -1
  563. package/dist/native/native.css +1 -1
  564. package/dist/native/native.esm.js +1 -1
  565. package/dist/native/nv-accordion.entry.esm.js.map +1 -1
  566. package/dist/native/nv-alert.entry.esm.js.map +1 -1
  567. package/dist/native/nv-button.entry.esm.js.map +1 -1
  568. package/dist/native/nv-calendar.entry.esm.js.map +1 -1
  569. package/dist/native/nv-datagrid.entry.esm.js.map +1 -1
  570. package/dist/native/nv-dialog.entry.esm.js.map +1 -1
  571. package/dist/native/nv-drawer.entry.esm.js.map +1 -0
  572. package/dist/native/nv-drawerfooter.nv-drawerheader.entry.esm.js.map +1 -0
  573. package/dist/native/nv-fieldcheckbox.entry.esm.js.map +1 -1
  574. package/dist/native/nv-fielddate.entry.esm.js.map +1 -1
  575. package/dist/native/nv-fielddaterange.entry.esm.js.map +1 -1
  576. package/dist/native/nv-fielddropdown.entry.esm.js.map +1 -1
  577. package/dist/native/nv-fielddropdownitem.entry.esm.js.map +1 -1
  578. package/dist/native/nv-fieldmultiselect.entry.esm.js.map +1 -1
  579. package/dist/native/nv-fieldnumber.entry.esm.js.map +1 -1
  580. package/dist/native/nv-fieldpassword.entry.esm.js.map +1 -1
  581. package/dist/native/nv-fieldradio.entry.esm.js.map +1 -1
  582. package/dist/native/nv-fieldselect.entry.esm.js.map +1 -1
  583. package/dist/native/nv-fieldslider.entry.esm.js.map +1 -1
  584. package/dist/native/nv-fieldtext.entry.esm.js.map +1 -1
  585. package/dist/native/nv-fieldtextarea.entry.esm.js.map +1 -1
  586. package/dist/native/nv-fieldtime.entry.esm.js.map +1 -1
  587. package/dist/native/nv-icon.entry.esm.js.map +1 -1
  588. package/dist/native/nv-iconbutton.nv-loader.entry.esm.js.map +1 -1
  589. package/dist/native/nv-menu.entry.esm.js.map +1 -1
  590. package/dist/native/nv-notification-bullet.entry.esm.js.map +1 -1
  591. package/dist/native/nv-notification.entry.esm.js.map +1 -1
  592. package/dist/native/nv-popover.entry.esm.js.map +1 -1
  593. package/dist/native/nv-sidebar.entry.esm.js.map +1 -1
  594. package/dist/native/nv-sidebarnavitem.entry.esm.js.map +1 -1
  595. package/dist/native/nv-split.entry.esm.js.map +1 -1
  596. package/dist/native/nv-table.entry.esm.js.map +1 -1
  597. package/dist/native/nv-tableheader.entry.esm.js.map +1 -1
  598. package/dist/native/nv-togglebutton.entry.esm.js.map +1 -1
  599. package/dist/native/nv-togglebuttongroup.entry.esm.js.map +1 -1
  600. package/dist/native/{p-b21e38a3.entry.js → p-04a2fe7f.entry.js} +2 -2
  601. package/dist/native/p-08204da4.entry.js +2 -0
  602. package/dist/native/{p-bd6ae5f3.entry.js.map → p-08204da4.entry.js.map} +1 -1
  603. package/dist/native/{p-e0adb05d.entry.js → p-0e07b91b.entry.js} +2 -2
  604. package/dist/native/p-0e07b91b.entry.js.map +1 -0
  605. package/dist/native/p-136dfb3e.entry.js +2 -0
  606. package/dist/native/p-136dfb3e.entry.js.map +1 -0
  607. package/dist/native/p-1f2dd37f.entry.js +2 -0
  608. package/dist/native/p-1f2dd37f.entry.js.map +1 -0
  609. package/dist/native/p-255a0482.entry.js +2 -0
  610. package/dist/native/p-255a0482.entry.js.map +1 -0
  611. package/dist/native/{p-f73e9752.entry.js → p-3305a7e6.entry.js} +2 -2
  612. package/dist/native/p-3305a7e6.entry.js.map +1 -0
  613. package/dist/native/p-36b0a6f0.entry.js +2 -0
  614. package/dist/native/p-36b0a6f0.entry.js.map +1 -0
  615. package/dist/native/p-434bc910.entry.js +2 -0
  616. package/dist/native/p-434bc910.entry.js.map +1 -0
  617. package/dist/native/{p-ea98ba7a.entry.js → p-436029a5.entry.js} +2 -2
  618. package/dist/native/p-460fdf02.entry.js +2 -0
  619. package/dist/native/p-460fdf02.entry.js.map +1 -0
  620. package/dist/native/p-477e02cf.entry.js +2 -0
  621. package/dist/native/p-477e02cf.entry.js.map +1 -0
  622. package/dist/native/{p-28afb852.entry.js → p-4efb582b.entry.js} +2 -2
  623. package/dist/native/p-4efb582b.entry.js.map +1 -0
  624. package/dist/native/p-4f1dfa32.entry.js +2 -0
  625. package/dist/native/p-4f1dfa32.entry.js.map +1 -0
  626. package/dist/native/p-51b7de55.entry.js +13 -0
  627. package/dist/native/p-51b7de55.entry.js.map +1 -0
  628. package/dist/native/{p-37c6d559.entry.js → p-5dd120dc.entry.js} +2 -2
  629. package/dist/native/p-5dd120dc.entry.js.map +1 -0
  630. package/dist/native/{p-5acf105e.entry.js → p-67181258.entry.js} +2 -2
  631. package/dist/native/p-6a81884b.entry.js +2 -0
  632. package/dist/native/p-6a81884b.entry.js.map +1 -0
  633. package/dist/native/p-6aa483de.entry.js +2 -0
  634. package/dist/native/{p-b1a917c7.entry.js → p-6fc79712.entry.js} +2 -2
  635. package/dist/native/{p-ee04ea09.entry.js → p-729589cb.entry.js} +2 -2
  636. package/dist/native/p-729589cb.entry.js.map +1 -0
  637. package/dist/native/p-78bf7650.entry.js +2 -0
  638. package/dist/native/p-7e6e9ea2.entry.js +2 -0
  639. package/dist/native/p-8f1cd9e2.entry.js +2 -0
  640. package/dist/native/p-8f1cd9e2.entry.js.map +1 -0
  641. package/dist/native/{p-4cf47e1a.entry.js → p-910cd685.entry.js} +2 -2
  642. package/dist/native/p-91eaf02e.entry.js +2 -0
  643. package/dist/native/p-91eaf02e.entry.js.map +1 -0
  644. package/dist/native/p-93e35975.entry.js +2 -0
  645. package/dist/native/p-93e35975.entry.js.map +1 -0
  646. package/dist/native/{p-9d8257dc.entry.js → p-96c45604.entry.js} +2 -2
  647. package/dist/native/{p-6f456ae4.entry.js → p-9b6ad782.entry.js} +2 -2
  648. package/dist/native/{p-6f456ae4.entry.js.map → p-9b6ad782.entry.js.map} +1 -1
  649. package/dist/native/{p-fd872d54.entry.js → p-9f32c3ea.entry.js} +2 -2
  650. package/dist/native/p-B6GgGra-.js +2 -0
  651. package/dist/native/p-B6GgGra-.js.map +1 -0
  652. package/dist/native/p-Blc6XEY7.js +2 -0
  653. package/dist/native/p-Blc6XEY7.js.map +1 -0
  654. package/dist/native/p-D3eWMME9.js +6 -0
  655. package/dist/native/p-D3eWMME9.js.map +1 -0
  656. package/dist/native/p-DQuL1Twl.js.map +1 -1
  657. package/dist/native/p-IlwlcG9l.js +2 -0
  658. package/dist/native/{p-DOZbXX2L.js.map → p-IlwlcG9l.js.map} +1 -1
  659. package/dist/native/{p-b0935c49.entry.js → p-a6fea322.entry.js} +2 -2
  660. package/dist/native/p-ae279ae9.entry.js +2 -0
  661. package/dist/native/p-ae279ae9.entry.js.map +1 -0
  662. package/dist/native/p-ba1286aa.entry.js +2 -0
  663. package/dist/native/p-ba1286aa.entry.js.map +1 -0
  664. package/dist/native/p-bb52a5a9.entry.js +2 -0
  665. package/dist/native/p-bb52a5a9.entry.js.map +1 -0
  666. package/dist/native/p-bc90247e.entry.js +2 -0
  667. package/dist/native/p-bc90247e.entry.js.map +1 -0
  668. package/dist/native/{p-0493fb6d.entry.js → p-c2a73a5a.entry.js} +2 -2
  669. package/dist/native/p-c4c11549.entry.js +2 -0
  670. package/dist/native/{p-3c54e422.entry.js → p-c5ecdc49.entry.js} +2 -2
  671. package/dist/native/p-c5ecdc49.entry.js.map +1 -0
  672. package/dist/native/{p-527e9b56.entry.js → p-cb1b9edb.entry.js} +2 -2
  673. package/dist/native/p-cb1b9edb.entry.js.map +1 -0
  674. package/dist/native/p-cdaf54b0.entry.js +2 -0
  675. package/dist/native/p-cdaf54b0.entry.js.map +1 -0
  676. package/dist/native/{p-e7dc36d9.entry.js → p-ceb8fe8a.entry.js} +2 -2
  677. package/dist/native/p-daf7541b.entry.js +2 -0
  678. package/dist/native/p-daf7541b.entry.js.map +1 -0
  679. package/dist/native/{p-da893df2.entry.js → p-ded4be77.entry.js} +2 -2
  680. package/dist/native/p-ded4be77.entry.js.map +1 -0
  681. package/dist/native/p-e1fc5f8c.entry.js +2 -0
  682. package/dist/native/p-e1fc5f8c.entry.js.map +1 -0
  683. package/dist/native/{p-d4f95c86.entry.js → p-e6c69f7d.entry.js} +2 -2
  684. package/dist/native/p-e6c69f7d.entry.js.map +1 -0
  685. package/dist/native/p-e83603f1.entry.js +2 -0
  686. package/dist/native/p-e83603f1.entry.js.map +1 -0
  687. package/dist/native/p-ec217581.entry.js +2 -0
  688. package/dist/native/p-ec217581.entry.js.map +1 -0
  689. package/dist/native/p-ee694832.entry.js +2 -0
  690. package/dist/native/p-ee694832.entry.js.map +1 -0
  691. package/dist/native/{p-b1ef2f25.entry.js → p-f7e0146e.entry.js} +2 -2
  692. package/dist/native/p-f7e0146e.entry.js.map +1 -0
  693. package/dist/types/components/nv-drawer/nv-drawer.d.ts +161 -0
  694. package/dist/types/components/nv-drawer/nv-drawer.docs.d.ts +4 -0
  695. package/dist/types/components/nv-drawerfooter/nv-drawerfooter.d.ts +76 -0
  696. package/dist/types/components/nv-drawerfooter/nv-drawerfooter.docs.d.ts +4 -0
  697. package/dist/types/components/nv-drawerheader/nv-drawerheader.d.ts +20 -0
  698. package/dist/types/components/nv-drawerheader/nv-drawerheader.docs.d.ts +4 -0
  699. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  700. package/dist/types/components/nv-split/nv-split.d.ts +4 -4
  701. package/dist/types/components.d.ts +292 -5
  702. package/dist/vscode-data.json +153 -1
  703. package/hydrate/index.js +969 -408
  704. package/hydrate/index.mjs +969 -408
  705. package/package.json +13 -1
  706. package/dist/cjs/grow.animation-BrWzyoUA.js.map +0 -1
  707. package/dist/components/p--iYGZN4R.js.map +0 -1
  708. package/dist/components/p-B-3kAnun.js.map +0 -1
  709. package/dist/components/p-BQo7AMPX.js.map +0 -1
  710. package/dist/components/p-CBF8V1L7.js.map +0 -1
  711. package/dist/components/p-CmwaW0q4.js.map +0 -1
  712. package/dist/components/p-D1i2OAGe.js.map +0 -1
  713. package/dist/components/p-DOZbXX2L.js.map +0 -1
  714. package/dist/components/p-DWG6az-u.js.map +0 -1
  715. package/dist/components/p-DaiLIZ8f.js.map +0 -1
  716. package/dist/components/p-Dc_0pr83.js.map +0 -1
  717. package/dist/components/p-Dk8ekxr_.js.map +0 -1
  718. package/dist/esm/grow.animation-CvHGHBL4.js.map +0 -1
  719. package/dist/native/p-02df60a5.entry.js +0 -2
  720. package/dist/native/p-02df60a5.entry.js.map +0 -1
  721. package/dist/native/p-0b8d6777.entry.js +0 -13
  722. package/dist/native/p-0b8d6777.entry.js.map +0 -1
  723. package/dist/native/p-0e7e693f.entry.js +0 -2
  724. package/dist/native/p-0e7e693f.entry.js.map +0 -1
  725. package/dist/native/p-0fe60a9d.entry.js +0 -2
  726. package/dist/native/p-0fe60a9d.entry.js.map +0 -1
  727. package/dist/native/p-14b0bf14.entry.js +0 -2
  728. package/dist/native/p-14b0bf14.entry.js.map +0 -1
  729. package/dist/native/p-28afb852.entry.js.map +0 -1
  730. package/dist/native/p-2cf77850.entry.js +0 -2
  731. package/dist/native/p-2cf77850.entry.js.map +0 -1
  732. package/dist/native/p-31a12d8a.entry.js +0 -2
  733. package/dist/native/p-31a12d8a.entry.js.map +0 -1
  734. package/dist/native/p-37c6d559.entry.js.map +0 -1
  735. package/dist/native/p-3c54e422.entry.js.map +0 -1
  736. package/dist/native/p-3c9b22ff.entry.js +0 -2
  737. package/dist/native/p-3c9b22ff.entry.js.map +0 -1
  738. package/dist/native/p-4a71f223.entry.js +0 -2
  739. package/dist/native/p-4a71f223.entry.js.map +0 -1
  740. package/dist/native/p-527e9b56.entry.js.map +0 -1
  741. package/dist/native/p-5bce524d.entry.js +0 -2
  742. package/dist/native/p-5bce524d.entry.js.map +0 -1
  743. package/dist/native/p-63bc0a05.entry.js +0 -2
  744. package/dist/native/p-63bc0a05.entry.js.map +0 -1
  745. package/dist/native/p-63bf86de.entry.js +0 -2
  746. package/dist/native/p-6a3c1413.entry.js +0 -2
  747. package/dist/native/p-7e274db7.entry.js +0 -7
  748. package/dist/native/p-7e274db7.entry.js.map +0 -1
  749. package/dist/native/p-86b2b071.entry.js +0 -2
  750. package/dist/native/p-86b2b071.entry.js.map +0 -1
  751. package/dist/native/p-8b278fce.entry.js +0 -2
  752. package/dist/native/p-8b278fce.entry.js.map +0 -1
  753. package/dist/native/p-9c543ab2.entry.js +0 -2
  754. package/dist/native/p-9c543ab2.entry.js.map +0 -1
  755. package/dist/native/p-DOZbXX2L.js +0 -2
  756. package/dist/native/p-DS5GOtQ3.js +0 -2
  757. package/dist/native/p-DS5GOtQ3.js.map +0 -1
  758. package/dist/native/p-a2aa6872.entry.js +0 -2
  759. package/dist/native/p-b1ef2f25.entry.js.map +0 -1
  760. package/dist/native/p-b2ed6d34.entry.js +0 -2
  761. package/dist/native/p-b2ed6d34.entry.js.map +0 -1
  762. package/dist/native/p-bd6ae5f3.entry.js +0 -2
  763. package/dist/native/p-c98b9ce4.entry.js +0 -2
  764. package/dist/native/p-c98b9ce4.entry.js.map +0 -1
  765. package/dist/native/p-cc305619.entry.js +0 -2
  766. package/dist/native/p-cc305619.entry.js.map +0 -1
  767. package/dist/native/p-d1cfdc3e.entry.js +0 -2
  768. package/dist/native/p-d1cfdc3e.entry.js.map +0 -1
  769. package/dist/native/p-d3b1bd81.entry.js +0 -2
  770. package/dist/native/p-d424b9aa.entry.js +0 -2
  771. package/dist/native/p-d424b9aa.entry.js.map +0 -1
  772. package/dist/native/p-d4f95c86.entry.js.map +0 -1
  773. package/dist/native/p-da893df2.entry.js.map +0 -1
  774. package/dist/native/p-e0adb05d.entry.js.map +0 -1
  775. package/dist/native/p-e6a37207.entry.js +0 -2
  776. package/dist/native/p-e6a37207.entry.js.map +0 -1
  777. package/dist/native/p-ee04ea09.entry.js.map +0 -1
  778. package/dist/native/p-f73e9752.entry.js.map +0 -1
  779. /package/dist/native/{p-b21e38a3.entry.js.map → p-04a2fe7f.entry.js.map} +0 -0
  780. /package/dist/native/{p-ea98ba7a.entry.js.map → p-436029a5.entry.js.map} +0 -0
  781. /package/dist/native/{p-5acf105e.entry.js.map → p-67181258.entry.js.map} +0 -0
  782. /package/dist/native/{p-63bf86de.entry.js.map → p-6aa483de.entry.js.map} +0 -0
  783. /package/dist/native/{p-b1a917c7.entry.js.map → p-6fc79712.entry.js.map} +0 -0
  784. /package/dist/native/{p-d3b1bd81.entry.js.map → p-78bf7650.entry.js.map} +0 -0
  785. /package/dist/native/{p-a2aa6872.entry.js.map → p-7e6e9ea2.entry.js.map} +0 -0
  786. /package/dist/native/{p-4cf47e1a.entry.js.map → p-910cd685.entry.js.map} +0 -0
  787. /package/dist/native/{p-9d8257dc.entry.js.map → p-96c45604.entry.js.map} +0 -0
  788. /package/dist/native/{p-fd872d54.entry.js.map → p-9f32c3ea.entry.js.map} +0 -0
  789. /package/dist/native/{p-b0935c49.entry.js.map → p-a6fea322.entry.js.map} +0 -0
  790. /package/dist/native/{p-0493fb6d.entry.js.map → p-c2a73a5a.entry.js.map} +0 -0
  791. /package/dist/native/{p-6a3c1413.entry.js.map → p-c4c11549.entry.js.map} +0 -0
  792. /package/dist/native/{p-e7dc36d9.entry.js.map → p-ceb8fe8a.entry.js.map} +0 -0
@@ -4,26 +4,31 @@ const NvTableDocs = {
4
4
  subcomponents: ['nv-tableheader'],
5
5
  composedComponents: ['nv-tableheader'],
6
6
  stories: [
7
+ // Default
7
8
  {
8
9
  name: 'Default',
9
10
  description: 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',
10
11
  template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Name"), h("th", null, "Age"), h("th", null, "Email"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25"), h("td", null, "alice.johnson@example.com")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30"), h("td", null, "bob.smith@example.com")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35"), h("td", null, "charlie.brown@example.com")))))),
11
12
  },
13
+ // TableWithTableheader
12
14
  {
13
15
  name: 'TableWithTableheader',
14
16
  description: 'Use the nv-tableheader component to add a header with additional features row to the table.',
15
17
  template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, h("nv-tableheader", { sortable: true }, "Name")), h("th", null, h("nv-tableheader", { sortable: true }, "Age")))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35")))))),
16
18
  },
19
+ // ColumnResizingWidthClasses
17
20
  {
18
21
  name: 'ColumnResizingWidthClasses',
19
22
  description: 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',
20
23
  template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", { "data-class": "w-10" }, "Name"), h("th", { "data-class": "w-10" }, "Age"), h("th", { "data-no-resize": true }, "Email (grows to fill space)"), h("th", { "data-class": "w-10", "data-no-resize": true }, "Actions"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25"), h("td", null, "alice.johnson@company.example.com"), h("td", null, "Edit")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30"), h("td", null, "bob.smith@company.example.com"), h("td", null, "Edit")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35"), h("td", null, "charlie.brown@company.example.com"), h("td", null, "Edit")))))),
21
24
  },
25
+ // RowSelection
22
26
  {
23
27
  name: 'RowSelection',
24
28
  description: 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',
25
29
  template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Name"), h("th", null, "Department"), h("th", null, "Status"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "Engineering"), h("td", null, "Active")), h("tr", { "data-selected": true }, h("td", null, "Bob Smith"), h("td", null, "Design"), h("td", null, "Active")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "Product"), h("td", null, "Inactive")))))),
26
30
  },
31
+ // StickyHeader
27
32
  {
28
33
  name: 'StickyHeader',
29
34
  description: 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',
@@ -31,11 +36,18 @@ const NvTableDocs = {
31
36
  .fill(0)
32
37
  .map((_, index) => (h("tr", { key: index }, h("td", null, "Employee ", index + 1), h("td", null, "Developer"), h("td", null, "Engineering"))))))))),
33
38
  },
39
+ // StickyColumnsHorizontalScroll
34
40
  {
35
41
  name: 'StickyColumnsHorizontalScroll',
36
42
  description: 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',
37
43
  template: (h("div", { "data-class": "overflow-x-auto" }, h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", { "data-sticky-left": true }, "Name"), h("th", null, "Position"), h("th", null, "Department"), h("th", null, "Email"), h("th", null, "Phone"), h("th", null, "Address"), h("th", null, "Start Date"), h("th", null, "Salary"), h("th", null, "Manager"), h("th", null, "Skills"), h("th", null, "Notes"), h("th", null, "Website"), h("th", { "data-sticky-right": true }, "Actions"))), h("tbody", null, h("tr", null, h("td", { "data-sticky-left": true }, "John Doe"), h("td", null, "Senior Developer"), h("td", null, "Engineering"), h("td", null, "john.doe@company.com"), h("td", null, "+1-555-0123"), h("td", null, "123 Main St, NY 10001"), h("td", null, "2022-03-10"), h("td", null, "$95,000"), h("td", null, "Sarah Wilson"), h("td", null, "React, TypeScript, Node.js"), h("td", null, "Team lead with React expertise"), h("td", null, "johndoe.dev"), h("td", { "data-sticky-right": true }, "Edit | Delete")), h("tr", null, h("td", { "data-sticky-left": true }, "Jane Smith"), h("td", null, "UX Designer"), h("td", null, "Design"), h("td", null, "jane.smith@company.com"), h("td", null, "+1-555-0456"), h("td", null, "456 Oak Ave, LA 90210"), h("td", null, "2021-09-15"), h("td", null, "$87,000"), h("td", null, "Tom Anderson"), h("td", null, "Figma, Adobe CC, User Research"), h("td", null, "Creative designer with 8 years experience"), h("td", null, "janesmith.design"), h("td", { "data-sticky-right": true }, "Edit | Delete")), h("tr", null, h("td", { "data-sticky-left": true }, "Mike Johnson"), h("td", null, "Product Manager"), h("td", null, "Product"), h("td", null, "mike.johnson@company.com"), h("td", null, "+1-555-0789"), h("td", null, "789 Pine St, Chicago 60601"), h("td", null, "2020-01-08"), h("td", null, "$110,000"), h("td", null, "Lisa Chen"), h("td", null, "Agile, Scrum, Product Strategy"), h("td", null, "Experienced project manager and strategist"), h("td", null, "mikejohnson.biz"), h("td", { "data-sticky-right": true }, "Edit | Delete"))))))),
38
44
  },
45
+ // SlotDefault
46
+ {
47
+ name: 'SlotDefault',
48
+ description: 'Default slot for table content. Use standard HTML table elements (table, thead, tbody, tfoot, tr, th, td) as children.',
49
+ template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Column 1"), h("th", null, "Column 2"))), h("tbody", null, h("tr", null, h("td", null, "Data 1"), h("td", null, "Data 2")))))),
50
+ },
39
51
  ],
40
52
  };
41
53
  export default NvTableDocs;
@@ -1 +1 @@
1
- {"version":3,"file":"nv-table.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvTableDocs: NovaDocs<Components.NvTable> = {\n component: 'nv-table',\n subcomponents: ['nv-tableheader'],\n composedComponents: ['nv-tableheader'],\n stories: [\n {\n name: 'Default',\n description:\n 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Age</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@example.com</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@example.com</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@example.com</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'TableWithTableheader',\n description:\n 'Use the nv-tableheader component to add a header with additional features row to the table.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>\n <nv-tableheader sortable>Name</nv-tableheader>\n </th>\n <th>\n <nv-tableheader sortable>Age</nv-tableheader>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'ColumnResizingWidthClasses',\n description:\n 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-class=\"w-10\">Name</th>\n <th data-class=\"w-10\">Age</th>\n <th data-no-resize>Email (grows to fill space)</th>\n <th data-class=\"w-10\" data-no-resize>\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@company.example.com</td>\n <td>Edit</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'RowSelection',\n description:\n 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Department</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>Engineering</td>\n <td>Active</td>\n </tr>\n <tr data-selected>\n <td>Bob Smith</td>\n <td>Design</td>\n <td>Active</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>Product</td>\n <td>Inactive</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'StickyHeader',\n description:\n 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',\n template: (\n <div data-class=\"h-40 overflow-y-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead data-sticky-top>\n <tr>\n <th>Name</th>\n <th>Position</th>\n <th>Department</th>\n </tr>\n </thead>\n <tbody>\n {Array(10)\n .fill(0)\n .map((_, index) => (\n <tr key={index}>\n <td>Employee {index + 1}</td>\n <td>Developer</td>\n <td>Engineering</td>\n </tr>\n ))}\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n {\n name: 'StickyColumnsHorizontalScroll',\n description:\n 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',\n template: (\n <div data-class=\"overflow-x-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-sticky-left>Name</th>\n <th>Position</th>\n <th>Department</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Address</th>\n <th>Start Date</th>\n <th>Salary</th>\n <th>Manager</th>\n <th>Skills</th>\n <th>Notes</th>\n <th>Website</th>\n <th data-sticky-right>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td data-sticky-left>John Doe</td>\n <td>Senior Developer</td>\n <td>Engineering</td>\n <td>john.doe@company.com</td>\n <td>+1-555-0123</td>\n <td>123 Main St, NY 10001</td>\n <td>2022-03-10</td>\n <td>$95,000</td>\n <td>Sarah Wilson</td>\n <td>React, TypeScript, Node.js</td>\n <td>Team lead with React expertise</td>\n <td>johndoe.dev</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Jane Smith</td>\n <td>UX Designer</td>\n <td>Design</td>\n <td>jane.smith@company.com</td>\n <td>+1-555-0456</td>\n <td>456 Oak Ave, LA 90210</td>\n <td>2021-09-15</td>\n <td>$87,000</td>\n <td>Tom Anderson</td>\n <td>Figma, Adobe CC, User Research</td>\n <td>Creative designer with 8 years experience</td>\n <td>janesmith.design</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Mike Johnson</td>\n <td>Product Manager</td>\n <td>Product</td>\n <td>mike.johnson@company.com</td>\n <td>+1-555-0789</td>\n <td>789 Pine St, Chicago 60601</td>\n <td>2020-01-08</td>\n <td>$110,000</td>\n <td>Lisa Chen</td>\n <td>Agile, Scrum, Product Strategy</td>\n <td>Experienced project manager and strategist</td>\n <td>mikejohnson.biz</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n ],\n};\n\nexport default NvTableDocs;\n"]}
1
+ {"version":3,"file":"nv-table.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvTableDocs: NovaDocs<Components.NvTable> = {\n component: 'nv-table',\n subcomponents: ['nv-tableheader'],\n composedComponents: ['nv-tableheader'],\n stories: [\n // Default\n {\n name: 'Default',\n description:\n 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Age</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@example.com</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@example.com</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@example.com</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // TableWithTableheader\n {\n name: 'TableWithTableheader',\n description:\n 'Use the nv-tableheader component to add a header with additional features row to the table.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>\n <nv-tableheader sortable>Name</nv-tableheader>\n </th>\n <th>\n <nv-tableheader sortable>Age</nv-tableheader>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // ColumnResizingWidthClasses\n {\n name: 'ColumnResizingWidthClasses',\n description:\n 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-class=\"w-10\">Name</th>\n <th data-class=\"w-10\">Age</th>\n <th data-no-resize>Email (grows to fill space)</th>\n <th data-class=\"w-10\" data-no-resize>\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@company.example.com</td>\n <td>Edit</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // RowSelection\n {\n name: 'RowSelection',\n description:\n 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Department</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>Engineering</td>\n <td>Active</td>\n </tr>\n <tr data-selected>\n <td>Bob Smith</td>\n <td>Design</td>\n <td>Active</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>Product</td>\n <td>Inactive</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // StickyHeader\n {\n name: 'StickyHeader',\n description:\n 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',\n template: (\n <div data-class=\"h-40 overflow-y-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead data-sticky-top>\n <tr>\n <th>Name</th>\n <th>Position</th>\n <th>Department</th>\n </tr>\n </thead>\n <tbody>\n {Array(10)\n .fill(0)\n .map((_, index) => (\n <tr key={index}>\n <td>Employee {index + 1}</td>\n <td>Developer</td>\n <td>Engineering</td>\n </tr>\n ))}\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n // StickyColumnsHorizontalScroll\n {\n name: 'StickyColumnsHorizontalScroll',\n description:\n 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',\n template: (\n <div data-class=\"overflow-x-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-sticky-left>Name</th>\n <th>Position</th>\n <th>Department</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Address</th>\n <th>Start Date</th>\n <th>Salary</th>\n <th>Manager</th>\n <th>Skills</th>\n <th>Notes</th>\n <th>Website</th>\n <th data-sticky-right>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td data-sticky-left>John Doe</td>\n <td>Senior Developer</td>\n <td>Engineering</td>\n <td>john.doe@company.com</td>\n <td>+1-555-0123</td>\n <td>123 Main St, NY 10001</td>\n <td>2022-03-10</td>\n <td>$95,000</td>\n <td>Sarah Wilson</td>\n <td>React, TypeScript, Node.js</td>\n <td>Team lead with React expertise</td>\n <td>johndoe.dev</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Jane Smith</td>\n <td>UX Designer</td>\n <td>Design</td>\n <td>jane.smith@company.com</td>\n <td>+1-555-0456</td>\n <td>456 Oak Ave, LA 90210</td>\n <td>2021-09-15</td>\n <td>$87,000</td>\n <td>Tom Anderson</td>\n <td>Figma, Adobe CC, User Research</td>\n <td>Creative designer with 8 years experience</td>\n <td>janesmith.design</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Mike Johnson</td>\n <td>Product Manager</td>\n <td>Product</td>\n <td>mike.johnson@company.com</td>\n <td>+1-555-0789</td>\n <td>789 Pine St, Chicago 60601</td>\n <td>2020-01-08</td>\n <td>$110,000</td>\n <td>Lisa Chen</td>\n <td>Agile, Scrum, Product Strategy</td>\n <td>Experienced project manager and strategist</td>\n <td>mikejohnson.biz</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n // SlotDefault\n {\n name: 'SlotDefault',\n description:\n 'Default slot for table content. Use standard HTML table elements (table, thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Column 1</th>\n <th>Column 2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Data 1</td>\n <td>Data 2</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n ],\n};\n\nexport default NvTableDocs;\n"]}
@@ -59,7 +59,7 @@ export class NvTable {
59
59
  /****************************************************************************/
60
60
  //#region RENDER
61
61
  render() {
62
- return (h(Host, { key: 'ec194bed7ec58642be9f6b52a737e2f9375a152e' }, h("slot", { key: '009ce0f20491156ca93141c85683f0be499a9938' })));
62
+ return (h(Host, { key: '6d13efcd059cca60b2f6bc092b75b65e36738913' }, h("slot", { key: '33c715acec9e561586c9059f20e77b403307c134' })));
63
63
  }
64
64
  static get is() { return "nv-table"; }
65
65
  static get originalStyleUrls() {
@@ -61,7 +61,7 @@ export function calculateNewWidth(startWidth, delta, minWidth = TABLE_CONSTANTS.
61
61
  * @returns {element is HTMLTableCellElement} Type guard for table cell elements
62
62
  */
63
63
  export function isValidTableCell(element) {
64
- return (element === null || element === void 0 ? void 0 : element.tagName) === 'TH' || (element === null || element === void 0 ? void 0 : element.tagName) === 'TD';
64
+ return element?.tagName === 'TH' || element?.tagName === 'TD';
65
65
  }
66
66
  /**
67
67
  * Finds the closest table cell element from an event target
@@ -81,12 +81,11 @@ export function getClosestTableCell(target) {
81
81
  * @returns {boolean} True if capture was successfully set
82
82
  */
83
83
  export function setPointerCapture(cell, pointerId) {
84
- var _a;
85
84
  try {
86
- (_a = cell.setPointerCapture) === null || _a === void 0 ? void 0 : _a.call(cell, pointerId);
85
+ cell.setPointerCapture?.(pointerId);
87
86
  return true;
88
87
  }
89
- catch (_b) {
88
+ catch {
90
89
  return false;
91
90
  }
92
91
  }
@@ -97,12 +96,11 @@ export function setPointerCapture(cell, pointerId) {
97
96
  * @returns {boolean} True if release was successful
98
97
  */
99
98
  export function releasePointerCapture(cell, pointerId) {
100
- var _a;
101
99
  try {
102
- (_a = cell.releasePointerCapture) === null || _a === void 0 ? void 0 : _a.call(cell, pointerId);
100
+ cell.releasePointerCapture?.(pointerId);
103
101
  return true;
104
102
  }
105
- catch (_b) {
103
+ catch {
106
104
  return false;
107
105
  }
108
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nv-table.utils.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,uDAAuD;IACvD,QAAQ,EAAE,EAAE;IACZ,yDAAyD;IACzD,cAAc,EAAE,EAAE;IAClB,qCAAqC;IACrC,KAAK,EAAE,EAAE;CACD,CAAC,CAAC;AAEZ;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAC7C,qEAAqE;IACrE,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO;QAC5C,CAAC,CAAC,eAAe,CAAC,cAAc;QAChC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC1C,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,SAAiB,EACjB,WAAmB;IAEnB,OAAO,OAAO,IAAI,SAAS,GAAG,WAAW,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,KAAa,EACb,WAAmB,eAAe,CAAC,KAAK;IAExC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA2B;IAE3B,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA0B;IAE1B,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAgC,CAAC;IACrE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA0B,EAC1B,SAAiB;;IAEjB,IAAI,CAAC;QACH,MAAA,IAAI,CAAC,iBAAiB,qDAAG,SAAS,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAA0B,EAC1B,SAAiB;;IAEjB,IAAI,CAAC;QACH,MAAA,IAAI,CAAC,qBAAqB,qDAAG,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B;IACrD,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B,EAAE,KAAa;IACpE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAAc;IAEd,OAAO,QAAQ,GAAG,MAAM,CAAC;AAC3B,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA0B,EAC1B,KAAmB;IAEnB,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAyB,EACzB,KAAmB;IAEnB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAkB,EAClB,KAAmB,EACnB,WAAmB,eAAe,CAAC,KAAK;IAExC,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["/**\n * Table utility functions and constants for nv-table component\n *\n * This module contains pure utility functions for table column resizing logic,\n * pointer event handling calculations, and related helper functions.\n */\n\n/**\n * Constants for table column resizing behavior\n */\nexport const TABLE_CONSTANTS = Object.freeze({\n /** Handle width for fine pointers (mouse) in pixels */\n HANDLE_W: 12,\n /** Handle width for coarse pointers (touch) in pixels */\n HANDLE_W_TOUCH: 24,\n /** Minimum column width in pixels */\n MIN_W: 40,\n} as const);\n\n/**\n * Determines the appropriate handle width based on the current pointer type\n * @returns {number} Handle width in pixels (10px for fine pointers, 24px for coarse/touch)\n */\nexport function getHandleWidthForCurrentPointer(): number {\n // Match the CSS media query: wider handle on coarse pointers (touch)\n return matchMedia('(pointer: coarse)').matches\n ? TABLE_CONSTANTS.HANDLE_W_TOUCH\n : TABLE_CONSTANTS.HANDLE_W;\n}\n\n/**\n * Calculates the pointer's horizontal offset within a table cell\n * @param {PointerEvent} event - The pointer event\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The horizontal offset from the left edge of the cell\n */\nexport function getPointerOffsetInCell(\n event: PointerEvent,\n cell: HTMLTableCellElement,\n): number {\n const rect = cell.getBoundingClientRect();\n return event.clientX - rect.left;\n}\n\n/**\n * Determines if the pointer is within the resize handle area of a table cell\n * @param {number} offsetX - Horizontal offset within the cell\n * @param {number} cellWidth - Total width of the cell\n * @param {number} handleWidth - Width of the resize handle area\n * @returns {boolean} True if the pointer is in the resize handle area\n */\nexport function isInResizeHandle(\n offsetX: number,\n cellWidth: number,\n handleWidth: number,\n): boolean {\n return offsetX >= cellWidth - handleWidth;\n}\n\n/**\n * Calculates the new column width based on resize delta and constraints\n * @param {number} startWidth - Original width of the column\n * @param {number} delta - Change in pixels from the start position\n * @param {number} minWidth - Minimum allowed width for the column\n * @returns {number} The calculated new width, constrained by minimum\n */\nexport function calculateNewWidth(\n startWidth: number,\n delta: number,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): number {\n return Math.max(minWidth, startWidth + delta);\n}\n\n/**\n * Validates that a table cell element is suitable for resizing\n * @param {HTMLElement | null} element - The element to check\n * @returns {element is HTMLTableCellElement} Type guard for table cell elements\n */\nexport function isValidTableCell(\n element: HTMLElement | null,\n): element is HTMLTableCellElement {\n return element?.tagName === 'TH' || element?.tagName === 'TD';\n}\n\n/**\n * Finds the closest table cell element from an event target\n * @param {EventTarget | null} target - The event target\n * @returns {HTMLTableCellElement | null} The closest table cell or null\n */\nexport function getClosestTableCell(\n target: EventTarget | null,\n): HTMLTableCellElement | null {\n if (!(target instanceof HTMLElement)) return null;\n\n const cell = target.closest('th, td') as HTMLTableCellElement | null;\n return isValidTableCell(cell) ? cell : null;\n}\n\n/**\n * Sets up pointer capture for consistent drag behavior across browsers\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if capture was successfully set\n */\nexport function setPointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.setPointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Releases pointer capture\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if release was successful\n */\nexport function releasePointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.releasePointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Prevents text selection during drag operations\n * @param {boolean} prevent - Whether to prevent selection\n */\nexport function setUserSelectPrevention(prevent: boolean): void {\n document.body.style.userSelect = prevent ? 'none' : '';\n}\n\n/**\n * Gets the current width of a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The current width in pixels\n */\nexport function getCellWidth(cell: HTMLTableCellElement): number {\n return cell.offsetWidth;\n}\n\n/**\n * Applies a width to a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} width - The width to apply in pixels\n */\nexport function setCellWidth(cell: HTMLTableCellElement, width: number): void {\n cell.style.width = `${width}px`;\n}\n\n/**\n * Calculates the delta (change) in horizontal position between two pointer events\n * @param {number} currentX - Current clientX position\n * @param {number} startX - Starting clientX position\n * @returns {number} The horizontal delta\n */\nexport function calculatePointerDelta(\n currentX: number,\n startX: number,\n): number {\n return currentX - startX;\n}\n\n/**\n * Interface for resize operation state\n */\nexport interface ResizeState {\n /** The table cell being resized */\n resizingCell: HTMLTableCellElement;\n /** The pointer ID for this resize operation */\n pointerId: number;\n /** Starting X coordinate */\n startX: number;\n /** Starting width of the cell */\n startWidth: number;\n}\n\n/**\n * Creates a new resize state object\n * @param {HTMLTableCellElement} cell - The cell being resized\n * @param {PointerEvent} event - The initiating pointer event\n * @returns {ResizeState} A new resize state object\n */\nexport function createResizeState(\n cell: HTMLTableCellElement,\n event: PointerEvent,\n): ResizeState {\n return {\n resizingCell: cell,\n pointerId: event.pointerId,\n startX: event.clientX,\n startWidth: getCellWidth(cell),\n };\n}\n\n/**\n * Validates that a resize state is active and matches the given pointer event\n * @param {ResizeState | null} state - The current resize state\n * @param {PointerEvent} event - The pointer event to validate against\n * @returns {boolean} True if the state is valid for this event\n */\nexport function isValidResizeState(\n state: ResizeState | null,\n event: PointerEvent,\n): boolean {\n return state !== null && state.pointerId === event.pointerId;\n}\n\n/**\n * Updates the width of a cell during a resize operation\n * @param {ResizeState} state - The current resize state\n * @param {PointerEvent} event - The current pointer event\n * @param {number} minWidth - Minimum width constraint\n */\nexport function updateCellWidthFromResize(\n state: ResizeState,\n event: PointerEvent,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): void {\n const delta = calculatePointerDelta(event.clientX, state.startX);\n const newWidth = calculateNewWidth(state.startWidth, delta, minWidth);\n setCellWidth(state.resizingCell, newWidth);\n}\n"]}
1
+ {"version":3,"file":"nv-table.utils.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Table utility functions and constants for nv-table component\n *\n * This module contains pure utility functions for table column resizing logic,\n * pointer event handling calculations, and related helper functions.\n */\n\n/**\n * Constants for table column resizing behavior\n */\nexport const TABLE_CONSTANTS = Object.freeze({\n /** Handle width for fine pointers (mouse) in pixels */\n HANDLE_W: 12,\n /** Handle width for coarse pointers (touch) in pixels */\n HANDLE_W_TOUCH: 24,\n /** Minimum column width in pixels */\n MIN_W: 40,\n} as const);\n\n/**\n * Determines the appropriate handle width based on the current pointer type\n * @returns {number} Handle width in pixels (10px for fine pointers, 24px for coarse/touch)\n */\nexport function getHandleWidthForCurrentPointer(): number {\n // Match the CSS media query: wider handle on coarse pointers (touch)\n return matchMedia('(pointer: coarse)').matches\n ? TABLE_CONSTANTS.HANDLE_W_TOUCH\n : TABLE_CONSTANTS.HANDLE_W;\n}\n\n/**\n * Calculates the pointer's horizontal offset within a table cell\n * @param {PointerEvent} event - The pointer event\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The horizontal offset from the left edge of the cell\n */\nexport function getPointerOffsetInCell(\n event: PointerEvent,\n cell: HTMLTableCellElement,\n): number {\n const rect = cell.getBoundingClientRect();\n return event.clientX - rect.left;\n}\n\n/**\n * Determines if the pointer is within the resize handle area of a table cell\n * @param {number} offsetX - Horizontal offset within the cell\n * @param {number} cellWidth - Total width of the cell\n * @param {number} handleWidth - Width of the resize handle area\n * @returns {boolean} True if the pointer is in the resize handle area\n */\nexport function isInResizeHandle(\n offsetX: number,\n cellWidth: number,\n handleWidth: number,\n): boolean {\n return offsetX >= cellWidth - handleWidth;\n}\n\n/**\n * Calculates the new column width based on resize delta and constraints\n * @param {number} startWidth - Original width of the column\n * @param {number} delta - Change in pixels from the start position\n * @param {number} minWidth - Minimum allowed width for the column\n * @returns {number} The calculated new width, constrained by minimum\n */\nexport function calculateNewWidth(\n startWidth: number,\n delta: number,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): number {\n return Math.max(minWidth, startWidth + delta);\n}\n\n/**\n * Validates that a table cell element is suitable for resizing\n * @param {HTMLElement | null} element - The element to check\n * @returns {element is HTMLTableCellElement} Type guard for table cell elements\n */\nexport function isValidTableCell(\n element: HTMLElement | null,\n): element is HTMLTableCellElement {\n return element?.tagName === 'TH' || element?.tagName === 'TD';\n}\n\n/**\n * Finds the closest table cell element from an event target\n * @param {EventTarget | null} target - The event target\n * @returns {HTMLTableCellElement | null} The closest table cell or null\n */\nexport function getClosestTableCell(\n target: EventTarget | null,\n): HTMLTableCellElement | null {\n if (!(target instanceof HTMLElement)) return null;\n\n const cell = target.closest('th, td') as HTMLTableCellElement | null;\n return isValidTableCell(cell) ? cell : null;\n}\n\n/**\n * Sets up pointer capture for consistent drag behavior across browsers\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if capture was successfully set\n */\nexport function setPointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.setPointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Releases pointer capture\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if release was successful\n */\nexport function releasePointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.releasePointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Prevents text selection during drag operations\n * @param {boolean} prevent - Whether to prevent selection\n */\nexport function setUserSelectPrevention(prevent: boolean): void {\n document.body.style.userSelect = prevent ? 'none' : '';\n}\n\n/**\n * Gets the current width of a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The current width in pixels\n */\nexport function getCellWidth(cell: HTMLTableCellElement): number {\n return cell.offsetWidth;\n}\n\n/**\n * Applies a width to a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} width - The width to apply in pixels\n */\nexport function setCellWidth(cell: HTMLTableCellElement, width: number): void {\n cell.style.width = `${width}px`;\n}\n\n/**\n * Calculates the delta (change) in horizontal position between two pointer events\n * @param {number} currentX - Current clientX position\n * @param {number} startX - Starting clientX position\n * @returns {number} The horizontal delta\n */\nexport function calculatePointerDelta(\n currentX: number,\n startX: number,\n): number {\n return currentX - startX;\n}\n\n/**\n * Interface for resize operation state\n */\nexport interface ResizeState {\n /** The table cell being resized */\n resizingCell: HTMLTableCellElement;\n /** The pointer ID for this resize operation */\n pointerId: number;\n /** Starting X coordinate */\n startX: number;\n /** Starting width of the cell */\n startWidth: number;\n}\n\n/**\n * Creates a new resize state object\n * @param {HTMLTableCellElement} cell - The cell being resized\n * @param {PointerEvent} event - The initiating pointer event\n * @returns {ResizeState} A new resize state object\n */\nexport function createResizeState(\n cell: HTMLTableCellElement,\n event: PointerEvent,\n): ResizeState {\n return {\n resizingCell: cell,\n pointerId: event.pointerId,\n startX: event.clientX,\n startWidth: getCellWidth(cell),\n };\n}\n\n/**\n * Validates that a resize state is active and matches the given pointer event\n * @param {ResizeState | null} state - The current resize state\n * @param {PointerEvent} event - The pointer event to validate against\n * @returns {boolean} True if the state is valid for this event\n */\nexport function isValidResizeState(\n state: ResizeState | null,\n event: PointerEvent,\n): boolean {\n return state !== null && state.pointerId === event.pointerId;\n}\n\n/**\n * Updates the width of a cell during a resize operation\n * @param {ResizeState} state - The current resize state\n * @param {PointerEvent} event - The current pointer event\n * @param {number} minWidth - Minimum width constraint\n */\nexport function updateCellWidthFromResize(\n state: ResizeState,\n event: PointerEvent,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): void {\n const delta = calculatePointerDelta(event.clientX, state.startX);\n const newWidth = calculateNewWidth(state.startWidth, delta, minWidth);\n setCellWidth(state.resizingCell, newWidth);\n}\n"]}
@@ -80,7 +80,7 @@ describe('nv-table.utils - Comprehensive Tests', () => {
80
80
  try {
81
81
  TABLE_CONSTANTS.HANDLE_W = 20;
82
82
  }
83
- catch (_a) {
83
+ catch {
84
84
  // Ignored - assignment may or may not throw depending on strict mode
85
85
  }
86
86
  expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);
@@ -422,7 +422,7 @@ describe('nv-table.utils - Comprehensive Tests', () => {
422
422
  expect(result).toBe(false);
423
423
  });
424
424
  it('should handle edge case pointer IDs', () => {
425
- const zeroIdState = Object.assign(Object.assign({}, mockState), { pointerId: 0 });
425
+ const zeroIdState = { ...mockState, pointerId: 0 };
426
426
  const event = { pointerId: 0 };
427
427
  const result = isValidResizeState(zeroIdState, event);
428
428
  expect(result).toBe(true);
@@ -571,15 +571,14 @@ describe('nv-table.utils - Comprehensive Tests', () => {
571
571
  });
572
572
  describe('Performance and Memory', () => {
573
573
  it('should not create unnecessary objects in hot paths', () => {
574
- var _a, _b;
575
- const startMemory = ((_a = performance.memory) === null || _a === void 0 ? void 0 : _a.usedJSHeapSize) || 0;
574
+ const startMemory = performance.memory?.usedJSHeapSize || 0;
576
575
  // Run calculations that should not allocate much memory
577
576
  for (let i = 0; i < 1000; i++) {
578
577
  calculateNewWidth(100 + i, (i % 20) - 10);
579
578
  calculatePointerDelta(i + 50, i);
580
579
  isInResizeHandle(i % 100, 100, 10);
581
580
  }
582
- const endMemory = ((_b = performance.memory) === null || _b === void 0 ? void 0 : _b.usedJSHeapSize) || 0;
581
+ const endMemory = performance.memory?.usedJSHeapSize || 0;
583
582
  const memoryIncrease = endMemory - startMemory;
584
583
  // This is a loose check - mainly ensuring we don't have massive memory leaks
585
584
  expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase
@@ -1 +1 @@
1
- {"version":3,"file":"nv-table.utils.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-table/test/nv-table.utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nimport {\n TABLE_CONSTANTS,\n getHandleWidthForCurrentPointer,\n getPointerOffsetInCell,\n isInResizeHandle,\n calculateNewWidth,\n isValidTableCell,\n getClosestTableCell,\n setPointerCapture,\n releasePointerCapture,\n setUserSelectPrevention,\n getCellWidth,\n setCellWidth,\n calculatePointerDelta,\n createResizeState,\n isValidResizeState,\n updateCellWidthFromResize,\n} from '../nv-table.utils';\n\n// Mock browser globals\nconst mockMatchMedia = vi.fn();\nconst mockDocumentBody = {\n style: { userSelect: '' },\n};\n\nvi.stubGlobal('matchMedia', mockMatchMedia);\nvi.stubGlobal('document', { body: mockDocumentBody });\nvi.stubGlobal('HTMLElement', class MockHTMLElement {});\n\n/**\n * Comprehensive tests for nv-table utilities\n *\n * These tests validate all utility functions:\n * - Constants and configuration values\n * - Pointer event calculations and handling\n * - Column resize logic and constraints\n * - DOM element validation and manipulation\n * - Resize state management\n * - Edge cases and error conditions\n */\n\ndescribe('nv-table.utils - Comprehensive Tests', () => {\n // Mock DOM elements and browser APIs\n let mockCell: HTMLTableCellElement;\n let mockPointerEvent: PointerEvent;\n\n beforeEach(() => {\n // Reset mocks\n vi.clearAllMocks();\n\n // Setup matchMedia mock for each test\n mockMatchMedia.mockImplementation(query => ({\n matches: query.includes('coarse') ? false : true,\n media: query,\n }));\n\n // Reset document body style\n mockDocumentBody.style.userSelect = '';\n\n // Mock HTMLTableCellElement with mutable offsetWidth\n const mockCellProps = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: vi.fn().mockReturnValue({\n left: 10,\n top: 10,\n width: 100,\n height: 30,\n }),\n closest: vi.fn().mockReturnValue(null),\n setPointerCapture: vi.fn(),\n releasePointerCapture: vi.fn(),\n };\n\n // Make offsetWidth mutable for testing\n Object.defineProperty(mockCellProps, 'offsetWidth', {\n writable: true,\n value: 100,\n });\n\n mockCell = mockCellProps as unknown as HTMLTableCellElement;\n\n // Mock PointerEvent\n mockPointerEvent = {\n pointerId: 1,\n clientX: 50,\n clientY: 20,\n target: mockCell,\n } as unknown as PointerEvent;\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe('TABLE_CONSTANTS', () => {\n it('should have correct constant values', () => {\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(12);\n expect(TABLE_CONSTANTS.HANDLE_W_TOUCH).toBe(24);\n expect(TABLE_CONSTANTS.MIN_W).toBe(40);\n });\n\n it('should be immutable', () => {\n // Object.freeze prevents modification in strict mode\n const originalValue = TABLE_CONSTANTS.HANDLE_W;\n try {\n (TABLE_CONSTANTS as any).HANDLE_W = 20;\n } catch {\n // Ignored - assignment may or may not throw depending on strict mode\n }\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);\n });\n });\n\n describe('getHandleWidthForCurrentPointer', () => {\n it('should return fine pointer width for mouse input', () => {\n mockMatchMedia.mockReturnValue({ matches: false });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should return touch width for coarse pointer input', () => {\n mockMatchMedia.mockReturnValue({ matches: true });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W_TOUCH);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should handle matchMedia errors gracefully', () => {\n mockMatchMedia.mockImplementation(() => {\n throw new Error('matchMedia not supported');\n });\n\n expect(() => getHandleWidthForCurrentPointer()).toThrow();\n });\n });\n\n describe('getPointerOffsetInCell', () => {\n it('should calculate correct offset within cell', () => {\n const event = { clientX: 60 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(50); // 60 - 10\n expect(mockCell.getBoundingClientRect).toHaveBeenCalled();\n });\n\n it('should handle zero offset', () => {\n const event = { clientX: 10 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle negative offset', () => {\n const event = { clientX: 5 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(-5);\n });\n\n it('should handle fractional coordinates', () => {\n const event = { clientX: 15.7 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10.3 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBeCloseTo(5.4, 1);\n });\n });\n\n describe('isInResizeHandle', () => {\n it('should return true when pointer is in handle area', () => {\n const result = isInResizeHandle(95, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return true when pointer is exactly at handle boundary', () => {\n const result = isInResizeHandle(90, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return false when pointer is outside handle area', () => {\n const result = isInResizeHandle(89, 100, 10);\n expect(result).toBe(false);\n });\n\n it('should handle edge cases with zero dimensions', () => {\n expect(isInResizeHandle(0, 0, 10)).toBe(true); // 0 >= 0 - 10 = -10 (true)\n expect(isInResizeHandle(0, 10, 0)).toBe(false); // 0 >= 10 - 0 = 10 (false)\n });\n\n it('should handle large handle areas', () => {\n const result = isInResizeHandle(50, 100, 60);\n expect(result).toBe(true); // 50 >= 100 - 60 = 40\n });\n\n it('should handle fractional values', () => {\n const result = isInResizeHandle(85.5, 100.2, 10.7);\n expect(result).toBe(false); // 85.5 < 100.2 - 10.7 = 89.5\n });\n });\n\n describe('calculateNewWidth', () => {\n it('should calculate width with positive delta', () => {\n const result = calculateNewWidth(100, 20);\n expect(result).toBe(120);\n });\n\n it('should calculate width with negative delta', () => {\n const result = calculateNewWidth(100, -20);\n expect(result).toBe(80);\n });\n\n it('should enforce minimum width constraint', () => {\n const result = calculateNewWidth(50, -30, 40);\n expect(result).toBe(40); // Math.max(40, 50 - 30 = 20)\n });\n\n it('should use default minimum width when not provided', () => {\n const result = calculateNewWidth(50, -30);\n expect(result).toBe(TABLE_CONSTANTS.MIN_W);\n });\n\n it('should handle zero delta', () => {\n const result = calculateNewWidth(100, 0);\n expect(result).toBe(100);\n });\n\n it('should handle fractional values', () => {\n const result = calculateNewWidth(100.5, 20.3, 30.7);\n expect(result).toBeCloseTo(120.8, 1);\n });\n\n it('should handle extreme negative delta', () => {\n const result = calculateNewWidth(100, -200, 40);\n expect(result).toBe(40);\n });\n });\n\n describe('isValidTableCell', () => {\n it('should return true for TH elements', () => {\n const th = { tagName: 'TH' } as HTMLTableCellElement;\n expect(isValidTableCell(th)).toBe(true);\n });\n\n it('should return true for TD elements', () => {\n const td = { tagName: 'TD' } as HTMLTableCellElement;\n expect(isValidTableCell(td)).toBe(true);\n });\n\n it('should return false for other elements', () => {\n const div = { tagName: 'DIV' } as HTMLElement;\n expect(isValidTableCell(div)).toBe(false);\n });\n\n it('should return false for null', () => {\n expect(isValidTableCell(null)).toBe(false);\n });\n\n it('should return false for undefined', () => {\n expect(isValidTableCell(undefined as any)).toBe(false);\n });\n\n it('should handle case sensitivity', () => {\n const th = { tagName: 'th' } as any;\n expect(isValidTableCell(th)).toBe(false); // tagName is always uppercase in real DOM\n });\n });\n\n describe('getClosestTableCell', () => {\n it('should return closest table cell element', () => {\n const mockElement = Object.create(HTMLElement.prototype);\n mockElement.closest = vi.fn().mockReturnValue(mockCell);\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBe(mockCell);\n expect(mockElement.closest).toHaveBeenCalledWith('th, td');\n });\n\n it('should return null for non-HTMLElement targets', () => {\n const result = getClosestTableCell('not an element' as any);\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns null', () => {\n const mockElement = {\n closest: vi.fn().mockReturnValue(null),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns invalid element', () => {\n const invalidElement = { tagName: 'DIV' } as HTMLElement;\n const mockElement = {\n closest: vi.fn().mockReturnValue(invalidElement),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should handle null target', () => {\n const result = getClosestTableCell(null);\n expect(result).toBeNull();\n });\n });\n\n describe('setPointerCapture', () => {\n it('should successfully set pointer capture', () => {\n mockCell.setPointerCapture = vi.fn();\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing setPointerCapture method', () => {\n const cellWithoutCapture = { setPointerCapture: undefined } as any;\n\n const result = setPointerCapture(cellWithoutCapture, 123);\n\n expect(result).toBe(true); // Method doesn't exist but doesn't throw\n });\n\n it('should handle setPointerCapture exceptions', () => {\n mockCell.setPointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Capture failed');\n });\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n\n it('should handle different pointer IDs', () => {\n mockCell.setPointerCapture = vi.fn();\n\n setPointerCapture(mockCell, 999);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(999);\n });\n });\n\n describe('releasePointerCapture', () => {\n it('should successfully release pointer capture', () => {\n mockCell.releasePointerCapture = vi.fn();\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing releasePointerCapture method', () => {\n const cellWithoutRelease = { releasePointerCapture: undefined } as any;\n\n const result = releasePointerCapture(cellWithoutRelease, 123);\n\n expect(result).toBe(true);\n });\n\n it('should handle releasePointerCapture exceptions', () => {\n mockCell.releasePointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Release failed');\n });\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n });\n\n describe('setUserSelectPrevention', () => {\n it('should prevent user selection', () => {\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n });\n\n it('should restore user selection', () => {\n document.body.style.userSelect = 'none';\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should handle multiple calls', () => {\n setUserSelectPrevention(true);\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n });\n\n describe('getCellWidth', () => {\n it('should return cell offset width', () => {\n (mockCell as any).offsetWidth = 150;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(150);\n });\n\n it('should handle zero width', () => {\n (mockCell as any).offsetWidth = 0;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle fractional width (rounded by browser)', () => {\n (mockCell as any).offsetWidth = 100; // Browser rounds fractional offset values\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(100);\n });\n });\n\n describe('setCellWidth', () => {\n it('should set cell width in pixels', () => {\n setCellWidth(mockCell, 150);\n expect(mockCell.style.width).toBe('150px');\n });\n\n it('should handle zero width', () => {\n setCellWidth(mockCell, 0);\n expect(mockCell.style.width).toBe('0px');\n });\n\n it('should handle fractional width', () => {\n setCellWidth(mockCell, 150.5);\n expect(mockCell.style.width).toBe('150.5px');\n });\n\n it('should overwrite previous width', () => {\n mockCell.style.width = '100px';\n setCellWidth(mockCell, 200);\n expect(mockCell.style.width).toBe('200px');\n });\n });\n\n describe('calculatePointerDelta', () => {\n it('should calculate positive delta', () => {\n const result = calculatePointerDelta(150, 100);\n expect(result).toBe(50);\n });\n\n it('should calculate negative delta', () => {\n const result = calculatePointerDelta(80, 100);\n expect(result).toBe(-20);\n });\n\n it('should calculate zero delta', () => {\n const result = calculatePointerDelta(100, 100);\n expect(result).toBe(0);\n });\n\n it('should handle fractional coordinates', () => {\n const result = calculatePointerDelta(150.7, 100.3);\n expect(result).toBeCloseTo(50.4, 1);\n });\n\n it('should handle large deltas', () => {\n const result = calculatePointerDelta(1000, 100);\n expect(result).toBe(900);\n });\n });\n\n describe('createResizeState', () => {\n it('should create valid resize state', () => {\n const event = {\n pointerId: 42,\n clientX: 200,\n } as PointerEvent;\n (mockCell as any).offsetWidth = 120;\n\n const result = createResizeState(mockCell, event);\n\n expect(result).toEqual({\n resizingCell: mockCell,\n pointerId: 42,\n startX: 200,\n startWidth: 120,\n });\n });\n\n it('should handle different pointer IDs', () => {\n const event = {\n pointerId: 999,\n clientX: 300,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.pointerId).toBe(999);\n });\n\n it('should capture current cell width at time of creation', () => {\n (mockCell as any).offsetWidth = 75;\n const event = {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.startWidth).toBe(75);\n });\n });\n\n describe('isValidResizeState', () => {\n const mockState = {\n resizingCell: mockCell,\n pointerId: 42,\n startX: 100,\n startWidth: 120,\n };\n\n it('should return true for matching pointer event', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(true);\n });\n\n it('should return false for non-matching pointer ID', () => {\n const event = { pointerId: 43 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(false);\n });\n\n it('should return false for null state', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(null, event);\n\n expect(result).toBe(false);\n });\n\n it('should handle edge case pointer IDs', () => {\n const zeroIdState = { ...mockState, pointerId: 0 };\n const event = { pointerId: 0 } as PointerEvent;\n\n const result = isValidResizeState(zeroIdState, event);\n\n expect(result).toBe(true);\n });\n });\n\n describe('updateCellWidthFromResize', () => {\n it('should update cell width during resize', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 130 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('150px'); // 120 + (130 - 100) = 150\n });\n\n it('should enforce minimum width constraint', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 60,\n };\n const event = { clientX: 50 } as PointerEvent;\n\n updateCellWidthFromResize(state, event, 40);\n\n expect(mockCell.style.width).toBe('40px'); // Constrained to minimum\n });\n\n it('should use default minimum width', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 50,\n };\n const event = { clientX: 40 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle negative deltas', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 80 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('100px'); // 120 + (80 - 100) = 100\n });\n });\n\n describe('Integration Scenarios', () => {\n it('should handle complete resize workflow', () => {\n // Setup initial state\n const initialEvent = {\n pointerId: 1,\n clientX: 100,\n target: mockCell,\n } as unknown as PointerEvent;\n\n // Create resize state\n const state = createResizeState(mockCell, initialEvent);\n expect(isValidResizeState(state, initialEvent)).toBe(true);\n\n // Simulate pointer move\n const moveEvent = { pointerId: 1, clientX: 130 } as PointerEvent;\n expect(isValidResizeState(state, moveEvent)).toBe(true);\n updateCellWidthFromResize(state, moveEvent);\n\n // Verify width was updated\n expect(mockCell.style.width).toContain('px');\n });\n\n it('should handle pointer capture workflow', () => {\n mockCell.setPointerCapture = vi.fn();\n mockCell.releasePointerCapture = vi.fn();\n\n // Set capture\n const setCaptureResult = setPointerCapture(mockCell, 123);\n expect(setCaptureResult).toBe(true);\n\n // Release capture\n const releaseCaptureResult = releasePointerCapture(mockCell, 123);\n expect(releaseCaptureResult).toBe(true);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle user selection prevention workflow', () => {\n // Start resize - prevent selection\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n // End resize - restore selection\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should validate resize handle detection', () => {\n const event = { clientX: 95 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n (mockCell as any).offsetWidth = 100;\n\n const offsetX = getPointerOffsetInCell(event, mockCell);\n const cellWidth = getCellWidth(mockCell);\n const handleWidth = getHandleWidthForCurrentPointer();\n const inHandle = isInResizeHandle(offsetX, cellWidth, handleWidth);\n\n expect(offsetX).toBe(95);\n expect(cellWidth).toBe(100);\n expect(inHandle).toBe(true); // 95 >= 100 - handleWidth\n });\n });\n\n describe('Edge Cases and Error Handling', () => {\n it('should handle extreme coordinate values', () => {\n const extremeEvent = { clientX: Number.MAX_SAFE_INTEGER } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n\n const offset = getPointerOffsetInCell(extremeEvent, mockCell);\n expect(typeof offset).toBe('number');\n expect(isFinite(offset)).toBe(true);\n });\n\n it('should handle zero-sized cells', () => {\n (mockCell as any).offsetWidth = 0;\n const state = createResizeState(mockCell, mockPointerEvent);\n\n expect(state.startWidth).toBe(0);\n\n const moveEvent = { pointerId: 1, clientX: 50 } as PointerEvent;\n updateCellWidthFromResize(state, moveEvent);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle rapid pointer ID changes', () => {\n const state1 = createResizeState(mockCell, {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent);\n const state2 = createResizeState(mockCell, {\n pointerId: 2,\n clientX: 100,\n } as PointerEvent);\n\n const event1 = { pointerId: 1 } as PointerEvent;\n const event2 = { pointerId: 2 } as PointerEvent;\n\n expect(isValidResizeState(state1, event1)).toBe(true);\n expect(isValidResizeState(state1, event2)).toBe(false);\n expect(isValidResizeState(state2, event1)).toBe(false);\n expect(isValidResizeState(state2, event2)).toBe(true);\n });\n\n it('should handle missing DOM methods gracefully', () => {\n const incompleteCell = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: undefined,\n } as unknown as HTMLTableCellElement;\n\n expect(() => {\n getPointerOffsetInCell(mockPointerEvent, incompleteCell);\n }).toThrow();\n });\n });\n\n describe('Performance and Memory', () => {\n it('should not create unnecessary objects in hot paths', () => {\n const startMemory = (performance as any).memory?.usedJSHeapSize || 0;\n\n // Run calculations that should not allocate much memory\n for (let i = 0; i < 1000; i++) {\n calculateNewWidth(100 + i, (i % 20) - 10);\n calculatePointerDelta(i + 50, i);\n isInResizeHandle(i % 100, 100, 10);\n }\n\n const endMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const memoryIncrease = endMemory - startMemory;\n\n // This is a loose check - mainly ensuring we don't have massive memory leaks\n expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase\n });\n\n it('should handle high-frequency resize updates', () => {\n const state = createResizeState(mockCell, mockPointerEvent);\n const startTime = performance.now();\n\n // Simulate high-frequency updates\n for (let i = 0; i < 100; i++) {\n const event = { pointerId: 1, clientX: 100 + i } as PointerEvent;\n if (isValidResizeState(state, event)) {\n updateCellWidthFromResize(state, event);\n }\n }\n\n const endTime = performance.now();\n const duration = endTime - startTime;\n\n // Should complete quickly\n expect(duration).toBeLessThan(100); // Less than 100ms for 100 updates\n });\n });\n});\n"]}
1
+ {"version":3,"file":"nv-table.utils.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-table/test/nv-table.utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nimport {\n TABLE_CONSTANTS,\n getHandleWidthForCurrentPointer,\n getPointerOffsetInCell,\n isInResizeHandle,\n calculateNewWidth,\n isValidTableCell,\n getClosestTableCell,\n setPointerCapture,\n releasePointerCapture,\n setUserSelectPrevention,\n getCellWidth,\n setCellWidth,\n calculatePointerDelta,\n createResizeState,\n isValidResizeState,\n updateCellWidthFromResize,\n} from '../nv-table.utils';\n\n// Mock browser globals\nconst mockMatchMedia = vi.fn();\nconst mockDocumentBody = {\n style: { userSelect: '' },\n};\n\nvi.stubGlobal('matchMedia', mockMatchMedia);\nvi.stubGlobal('document', { body: mockDocumentBody });\nvi.stubGlobal('HTMLElement', class MockHTMLElement {});\n\n/**\n * Comprehensive tests for nv-table utilities\n *\n * These tests validate all utility functions:\n * - Constants and configuration values\n * - Pointer event calculations and handling\n * - Column resize logic and constraints\n * - DOM element validation and manipulation\n * - Resize state management\n * - Edge cases and error conditions\n */\n\ndescribe('nv-table.utils - Comprehensive Tests', () => {\n // Mock DOM elements and browser APIs\n let mockCell: HTMLTableCellElement;\n let mockPointerEvent: PointerEvent;\n\n beforeEach(() => {\n // Reset mocks\n vi.clearAllMocks();\n\n // Setup matchMedia mock for each test\n mockMatchMedia.mockImplementation(query => ({\n matches: query.includes('coarse') ? false : true,\n media: query,\n }));\n\n // Reset document body style\n mockDocumentBody.style.userSelect = '';\n\n // Mock HTMLTableCellElement with mutable offsetWidth\n const mockCellProps = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: vi.fn().mockReturnValue({\n left: 10,\n top: 10,\n width: 100,\n height: 30,\n }),\n closest: vi.fn().mockReturnValue(null),\n setPointerCapture: vi.fn(),\n releasePointerCapture: vi.fn(),\n };\n\n // Make offsetWidth mutable for testing\n Object.defineProperty(mockCellProps, 'offsetWidth', {\n writable: true,\n value: 100,\n });\n\n mockCell = mockCellProps as unknown as HTMLTableCellElement;\n\n // Mock PointerEvent\n mockPointerEvent = {\n pointerId: 1,\n clientX: 50,\n clientY: 20,\n target: mockCell,\n } as unknown as PointerEvent;\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe('TABLE_CONSTANTS', () => {\n it('should have correct constant values', () => {\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(12);\n expect(TABLE_CONSTANTS.HANDLE_W_TOUCH).toBe(24);\n expect(TABLE_CONSTANTS.MIN_W).toBe(40);\n });\n\n it('should be immutable', () => {\n // Object.freeze prevents modification in strict mode\n const originalValue = TABLE_CONSTANTS.HANDLE_W;\n try {\n (TABLE_CONSTANTS as any).HANDLE_W = 20;\n } catch {\n // Ignored - assignment may or may not throw depending on strict mode\n }\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);\n });\n });\n\n describe('getHandleWidthForCurrentPointer', () => {\n it('should return fine pointer width for mouse input', () => {\n mockMatchMedia.mockReturnValue({ matches: false });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should return touch width for coarse pointer input', () => {\n mockMatchMedia.mockReturnValue({ matches: true });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W_TOUCH);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should handle matchMedia errors gracefully', () => {\n mockMatchMedia.mockImplementation(() => {\n throw new Error('matchMedia not supported');\n });\n\n expect(() => getHandleWidthForCurrentPointer()).toThrow();\n });\n });\n\n describe('getPointerOffsetInCell', () => {\n it('should calculate correct offset within cell', () => {\n const event = { clientX: 60 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(50); // 60 - 10\n expect(mockCell.getBoundingClientRect).toHaveBeenCalled();\n });\n\n it('should handle zero offset', () => {\n const event = { clientX: 10 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle negative offset', () => {\n const event = { clientX: 5 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(-5);\n });\n\n it('should handle fractional coordinates', () => {\n const event = { clientX: 15.7 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10.3 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBeCloseTo(5.4, 1);\n });\n });\n\n describe('isInResizeHandle', () => {\n it('should return true when pointer is in handle area', () => {\n const result = isInResizeHandle(95, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return true when pointer is exactly at handle boundary', () => {\n const result = isInResizeHandle(90, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return false when pointer is outside handle area', () => {\n const result = isInResizeHandle(89, 100, 10);\n expect(result).toBe(false);\n });\n\n it('should handle edge cases with zero dimensions', () => {\n expect(isInResizeHandle(0, 0, 10)).toBe(true); // 0 >= 0 - 10 = -10 (true)\n expect(isInResizeHandle(0, 10, 0)).toBe(false); // 0 >= 10 - 0 = 10 (false)\n });\n\n it('should handle large handle areas', () => {\n const result = isInResizeHandle(50, 100, 60);\n expect(result).toBe(true); // 50 >= 100 - 60 = 40\n });\n\n it('should handle fractional values', () => {\n const result = isInResizeHandle(85.5, 100.2, 10.7);\n expect(result).toBe(false); // 85.5 < 100.2 - 10.7 = 89.5\n });\n });\n\n describe('calculateNewWidth', () => {\n it('should calculate width with positive delta', () => {\n const result = calculateNewWidth(100, 20);\n expect(result).toBe(120);\n });\n\n it('should calculate width with negative delta', () => {\n const result = calculateNewWidth(100, -20);\n expect(result).toBe(80);\n });\n\n it('should enforce minimum width constraint', () => {\n const result = calculateNewWidth(50, -30, 40);\n expect(result).toBe(40); // Math.max(40, 50 - 30 = 20)\n });\n\n it('should use default minimum width when not provided', () => {\n const result = calculateNewWidth(50, -30);\n expect(result).toBe(TABLE_CONSTANTS.MIN_W);\n });\n\n it('should handle zero delta', () => {\n const result = calculateNewWidth(100, 0);\n expect(result).toBe(100);\n });\n\n it('should handle fractional values', () => {\n const result = calculateNewWidth(100.5, 20.3, 30.7);\n expect(result).toBeCloseTo(120.8, 1);\n });\n\n it('should handle extreme negative delta', () => {\n const result = calculateNewWidth(100, -200, 40);\n expect(result).toBe(40);\n });\n });\n\n describe('isValidTableCell', () => {\n it('should return true for TH elements', () => {\n const th = { tagName: 'TH' } as HTMLTableCellElement;\n expect(isValidTableCell(th)).toBe(true);\n });\n\n it('should return true for TD elements', () => {\n const td = { tagName: 'TD' } as HTMLTableCellElement;\n expect(isValidTableCell(td)).toBe(true);\n });\n\n it('should return false for other elements', () => {\n const div = { tagName: 'DIV' } as HTMLElement;\n expect(isValidTableCell(div)).toBe(false);\n });\n\n it('should return false for null', () => {\n expect(isValidTableCell(null)).toBe(false);\n });\n\n it('should return false for undefined', () => {\n expect(isValidTableCell(undefined as any)).toBe(false);\n });\n\n it('should handle case sensitivity', () => {\n const th = { tagName: 'th' } as any;\n expect(isValidTableCell(th)).toBe(false); // tagName is always uppercase in real DOM\n });\n });\n\n describe('getClosestTableCell', () => {\n it('should return closest table cell element', () => {\n const mockElement = Object.create(HTMLElement.prototype);\n mockElement.closest = vi.fn().mockReturnValue(mockCell);\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBe(mockCell);\n expect(mockElement.closest).toHaveBeenCalledWith('th, td');\n });\n\n it('should return null for non-HTMLElement targets', () => {\n const result = getClosestTableCell('not an element' as any);\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns null', () => {\n const mockElement = {\n closest: vi.fn().mockReturnValue(null),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns invalid element', () => {\n const invalidElement = { tagName: 'DIV' } as HTMLElement;\n const mockElement = {\n closest: vi.fn().mockReturnValue(invalidElement),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should handle null target', () => {\n const result = getClosestTableCell(null);\n expect(result).toBeNull();\n });\n });\n\n describe('setPointerCapture', () => {\n it('should successfully set pointer capture', () => {\n mockCell.setPointerCapture = vi.fn();\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing setPointerCapture method', () => {\n const cellWithoutCapture = { setPointerCapture: undefined } as any;\n\n const result = setPointerCapture(cellWithoutCapture, 123);\n\n expect(result).toBe(true); // Method doesn't exist but doesn't throw\n });\n\n it('should handle setPointerCapture exceptions', () => {\n mockCell.setPointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Capture failed');\n });\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n\n it('should handle different pointer IDs', () => {\n mockCell.setPointerCapture = vi.fn();\n\n setPointerCapture(mockCell, 999);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(999);\n });\n });\n\n describe('releasePointerCapture', () => {\n it('should successfully release pointer capture', () => {\n mockCell.releasePointerCapture = vi.fn();\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing releasePointerCapture method', () => {\n const cellWithoutRelease = { releasePointerCapture: undefined } as any;\n\n const result = releasePointerCapture(cellWithoutRelease, 123);\n\n expect(result).toBe(true);\n });\n\n it('should handle releasePointerCapture exceptions', () => {\n mockCell.releasePointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Release failed');\n });\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n });\n\n describe('setUserSelectPrevention', () => {\n it('should prevent user selection', () => {\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n });\n\n it('should restore user selection', () => {\n document.body.style.userSelect = 'none';\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should handle multiple calls', () => {\n setUserSelectPrevention(true);\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n });\n\n describe('getCellWidth', () => {\n it('should return cell offset width', () => {\n (mockCell as any).offsetWidth = 150;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(150);\n });\n\n it('should handle zero width', () => {\n (mockCell as any).offsetWidth = 0;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle fractional width (rounded by browser)', () => {\n (mockCell as any).offsetWidth = 100; // Browser rounds fractional offset values\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(100);\n });\n });\n\n describe('setCellWidth', () => {\n it('should set cell width in pixels', () => {\n setCellWidth(mockCell, 150);\n expect(mockCell.style.width).toBe('150px');\n });\n\n it('should handle zero width', () => {\n setCellWidth(mockCell, 0);\n expect(mockCell.style.width).toBe('0px');\n });\n\n it('should handle fractional width', () => {\n setCellWidth(mockCell, 150.5);\n expect(mockCell.style.width).toBe('150.5px');\n });\n\n it('should overwrite previous width', () => {\n mockCell.style.width = '100px';\n setCellWidth(mockCell, 200);\n expect(mockCell.style.width).toBe('200px');\n });\n });\n\n describe('calculatePointerDelta', () => {\n it('should calculate positive delta', () => {\n const result = calculatePointerDelta(150, 100);\n expect(result).toBe(50);\n });\n\n it('should calculate negative delta', () => {\n const result = calculatePointerDelta(80, 100);\n expect(result).toBe(-20);\n });\n\n it('should calculate zero delta', () => {\n const result = calculatePointerDelta(100, 100);\n expect(result).toBe(0);\n });\n\n it('should handle fractional coordinates', () => {\n const result = calculatePointerDelta(150.7, 100.3);\n expect(result).toBeCloseTo(50.4, 1);\n });\n\n it('should handle large deltas', () => {\n const result = calculatePointerDelta(1000, 100);\n expect(result).toBe(900);\n });\n });\n\n describe('createResizeState', () => {\n it('should create valid resize state', () => {\n const event = {\n pointerId: 42,\n clientX: 200,\n } as PointerEvent;\n (mockCell as any).offsetWidth = 120;\n\n const result = createResizeState(mockCell, event);\n\n expect(result).toEqual({\n resizingCell: mockCell,\n pointerId: 42,\n startX: 200,\n startWidth: 120,\n });\n });\n\n it('should handle different pointer IDs', () => {\n const event = {\n pointerId: 999,\n clientX: 300,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.pointerId).toBe(999);\n });\n\n it('should capture current cell width at time of creation', () => {\n (mockCell as any).offsetWidth = 75;\n const event = {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.startWidth).toBe(75);\n });\n });\n\n describe('isValidResizeState', () => {\n const mockState = {\n resizingCell: mockCell,\n pointerId: 42,\n startX: 100,\n startWidth: 120,\n };\n\n it('should return true for matching pointer event', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(true);\n });\n\n it('should return false for non-matching pointer ID', () => {\n const event = { pointerId: 43 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(false);\n });\n\n it('should return false for null state', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(null, event);\n\n expect(result).toBe(false);\n });\n\n it('should handle edge case pointer IDs', () => {\n const zeroIdState = { ...mockState, pointerId: 0 };\n const event = { pointerId: 0 } as PointerEvent;\n\n const result = isValidResizeState(zeroIdState, event);\n\n expect(result).toBe(true);\n });\n });\n\n describe('updateCellWidthFromResize', () => {\n it('should update cell width during resize', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 130 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('150px'); // 120 + (130 - 100) = 150\n });\n\n it('should enforce minimum width constraint', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 60,\n };\n const event = { clientX: 50 } as PointerEvent;\n\n updateCellWidthFromResize(state, event, 40);\n\n expect(mockCell.style.width).toBe('40px'); // Constrained to minimum\n });\n\n it('should use default minimum width', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 50,\n };\n const event = { clientX: 40 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle negative deltas', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 80 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('100px'); // 120 + (80 - 100) = 100\n });\n });\n\n describe('Integration Scenarios', () => {\n it('should handle complete resize workflow', () => {\n // Setup initial state\n const initialEvent = {\n pointerId: 1,\n clientX: 100,\n target: mockCell,\n } as unknown as PointerEvent;\n\n // Create resize state\n const state = createResizeState(mockCell, initialEvent);\n expect(isValidResizeState(state, initialEvent)).toBe(true);\n\n // Simulate pointer move\n const moveEvent = { pointerId: 1, clientX: 130 } as PointerEvent;\n expect(isValidResizeState(state, moveEvent)).toBe(true);\n updateCellWidthFromResize(state, moveEvent);\n\n // Verify width was updated\n expect(mockCell.style.width).toContain('px');\n });\n\n it('should handle pointer capture workflow', () => {\n mockCell.setPointerCapture = vi.fn();\n mockCell.releasePointerCapture = vi.fn();\n\n // Set capture\n const setCaptureResult = setPointerCapture(mockCell, 123);\n expect(setCaptureResult).toBe(true);\n\n // Release capture\n const releaseCaptureResult = releasePointerCapture(mockCell, 123);\n expect(releaseCaptureResult).toBe(true);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle user selection prevention workflow', () => {\n // Start resize - prevent selection\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n // End resize - restore selection\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should validate resize handle detection', () => {\n const event = { clientX: 95 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n (mockCell as any).offsetWidth = 100;\n\n const offsetX = getPointerOffsetInCell(event, mockCell);\n const cellWidth = getCellWidth(mockCell);\n const handleWidth = getHandleWidthForCurrentPointer();\n const inHandle = isInResizeHandle(offsetX, cellWidth, handleWidth);\n\n expect(offsetX).toBe(95);\n expect(cellWidth).toBe(100);\n expect(inHandle).toBe(true); // 95 >= 100 - handleWidth\n });\n });\n\n describe('Edge Cases and Error Handling', () => {\n it('should handle extreme coordinate values', () => {\n const extremeEvent = { clientX: Number.MAX_SAFE_INTEGER } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n\n const offset = getPointerOffsetInCell(extremeEvent, mockCell);\n expect(typeof offset).toBe('number');\n expect(isFinite(offset)).toBe(true);\n });\n\n it('should handle zero-sized cells', () => {\n (mockCell as any).offsetWidth = 0;\n const state = createResizeState(mockCell, mockPointerEvent);\n\n expect(state.startWidth).toBe(0);\n\n const moveEvent = { pointerId: 1, clientX: 50 } as PointerEvent;\n updateCellWidthFromResize(state, moveEvent);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle rapid pointer ID changes', () => {\n const state1 = createResizeState(mockCell, {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent);\n const state2 = createResizeState(mockCell, {\n pointerId: 2,\n clientX: 100,\n } as PointerEvent);\n\n const event1 = { pointerId: 1 } as PointerEvent;\n const event2 = { pointerId: 2 } as PointerEvent;\n\n expect(isValidResizeState(state1, event1)).toBe(true);\n expect(isValidResizeState(state1, event2)).toBe(false);\n expect(isValidResizeState(state2, event1)).toBe(false);\n expect(isValidResizeState(state2, event2)).toBe(true);\n });\n\n it('should handle missing DOM methods gracefully', () => {\n const incompleteCell = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: undefined,\n } as unknown as HTMLTableCellElement;\n\n expect(() => {\n getPointerOffsetInCell(mockPointerEvent, incompleteCell);\n }).toThrow();\n });\n });\n\n describe('Performance and Memory', () => {\n it('should not create unnecessary objects in hot paths', () => {\n const startMemory = (performance as any).memory?.usedJSHeapSize || 0;\n\n // Run calculations that should not allocate much memory\n for (let i = 0; i < 1000; i++) {\n calculateNewWidth(100 + i, (i % 20) - 10);\n calculatePointerDelta(i + 50, i);\n isInResizeHandle(i % 100, 100, 10);\n }\n\n const endMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const memoryIncrease = endMemory - startMemory;\n\n // This is a loose check - mainly ensuring we don't have massive memory leaks\n expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase\n });\n\n it('should handle high-frequency resize updates', () => {\n const state = createResizeState(mockCell, mockPointerEvent);\n const startTime = performance.now();\n\n // Simulate high-frequency updates\n for (let i = 0; i < 100; i++) {\n const event = { pointerId: 1, clientX: 100 + i } as PointerEvent;\n if (isValidResizeState(state, event)) {\n updateCellWidthFromResize(state, event);\n }\n }\n\n const endTime = performance.now();\n const duration = endTime - startTime;\n\n // Should complete quickly\n expect(duration).toBeLessThan(100); // Less than 100ms for 100 updates\n });\n });\n});\n"]}
@@ -1,6 +1,34 @@
1
+ import { h } from "@stencil/core";
2
+ import { nameof } from "../../utils/class.utils";
1
3
  const NvTableheaderDocs = {
2
4
  component: 'nv-tableheader',
3
- skip: true,
5
+ badge: 'beta',
6
+ stories: [
7
+ // Default
8
+ {
9
+ name: 'Default',
10
+ template: (h("nv-tableheader", { "data-storybook-args": true }, "Child Content")),
11
+ },
12
+ // sortable
13
+ {
14
+ name: nameof(x => x.sortable),
15
+ description: 'Renders the header as sortable with an icon button, allowing sorting via click or keyboard navigation.',
16
+ args: { sortable: true },
17
+ template: (h("nv-tableheader", { "data-storybook-args": true }, "Sortable Header")),
18
+ },
19
+ // sortDirection
20
+ {
21
+ name: nameof(x => x.sortDirection),
22
+ description: 'The current sort direction of the header: none, asc, or desc.',
23
+ template: (h("div", { "data-class": "flex gap-4" }, h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "none" }, "None"), h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "asc" }, "Ascending"), h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "desc" }, "Descending"))),
24
+ },
25
+ // SlotDefault
26
+ {
27
+ name: 'SlotDefault',
28
+ description: 'Default slot for the header content.',
29
+ template: (h("nv-tableheader", { "data-storybook-args": true }, "Custom Header Content")),
30
+ },
31
+ ],
4
32
  };
5
33
  export default NvTableheaderDocs;
6
34
  //# sourceMappingURL=nv-tableheader.docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nv-tableheader.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-tableheader/nv-tableheader.docs.tsx"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAuC;IAC5D,SAAS,EAAE,gBAAgB;IAC3B,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvTableheaderDocs: NovaDocs<Components.NvTableheader> = {\n component: 'nv-tableheader',\n skip: true,\n};\n\nexport default NvTableheaderDocs;\n"]}
1
+ {"version":3,"file":"nv-tableheader.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-tableheader/nv-tableheader.docs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,iBAAiB,GAAuC;IAC5D,SAAS,EAAE,gBAAgB;IAC3B,KAAK,EAAE,MAAM;IACb,OAAO,EAAE;QACP,UAAU;QACV;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CACR,qEAAkE,CACnE;SACF;QACD,WAAW;QACX;YACE,IAAI,EAAE,MAAM,CAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvD,WAAW,EACT,wGAAwG;YAC1G,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxB,QAAQ,EAAE,CACR,uEAAoE,CACrE;SACF;QACD,gBAAgB;QAChB;YACE,IAAI,EAAE,MAAM,CAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YAC5D,WAAW,EACT,+DAA+D;YACjE,QAAQ,EAAE,CACR,yBAAgB,YAAY;gBAC1B,mDAAoC,QAAQ,QAAC,aAAa,EAAC,MAAM,WAEhD;gBACjB,mDAAoC,QAAQ,QAAC,aAAa,EAAC,KAAK,gBAE/C;gBACjB,mDAAoC,QAAQ,QAAC,aAAa,EAAC,MAAM,iBAEhD,CACb,CACP;SACF;QACD,cAAc;QACd;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,CACR,6EAEiB,CAClB;SACF;KACF;CACF,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvTableheaderDocs: NovaDocs<Components.NvTableheader> = {\n component: 'nv-tableheader',\n badge: 'beta',\n stories: [\n // Default\n {\n name: 'Default',\n template: (\n <nv-tableheader data-storybook-args>Child Content</nv-tableheader>\n ),\n },\n // sortable\n {\n name: nameof<Components.NvTableheader>(x => x.sortable),\n description:\n 'Renders the header as sortable with an icon button, allowing sorting via click or keyboard navigation.',\n args: { sortable: true },\n template: (\n <nv-tableheader data-storybook-args>Sortable Header</nv-tableheader>\n ),\n },\n // sortDirection\n {\n name: nameof<Components.NvTableheader>(x => x.sortDirection),\n description:\n 'The current sort direction of the header: none, asc, or desc.',\n template: (\n <div data-class=\"flex gap-4\">\n <nv-tableheader data-storybook-args sortable sortDirection=\"none\">\n None\n </nv-tableheader>\n <nv-tableheader data-storybook-args sortable sortDirection=\"asc\">\n Ascending\n </nv-tableheader>\n <nv-tableheader data-storybook-args sortable sortDirection=\"desc\">\n Descending\n </nv-tableheader>\n </div>\n ),\n },\n // SlotDefault\n {\n name: 'SlotDefault',\n description: 'Default slot for the header content.',\n template: (\n <nv-tableheader data-storybook-args>\n Custom Header Content\n </nv-tableheader>\n ),\n },\n ],\n};\n\nexport default NvTableheaderDocs;\n"]}
@@ -24,7 +24,7 @@ export class NvTableheader {
24
24
  cycleSortDirection(e) {
25
25
  if (!this.sortable)
26
26
  return;
27
- e === null || e === void 0 ? void 0 : e.preventDefault();
27
+ e?.preventDefault();
28
28
  const next = {
29
29
  none: 'asc',
30
30
  asc: 'desc',
@@ -55,7 +55,7 @@ export class NvTableheader {
55
55
  /****************************************************************************/
56
56
  //#region RENDER
57
57
  render() {
58
- return (h(Host, { key: '89ea12419a6f07d3b945a2dec3ca40a169d1bf85', role: "columnheader", "aria-sort": this.ariaSort, tabindex: this.sortable ? 0 : undefined, onKeyDown: this.handleKeyDown.bind(this), onClick: this.cycleSortDirection.bind(this) }, h("slot", { key: '447c9f44b779cb7003209c3965127433e33f1ea9' }), this.sortable && (h("span", { key: 'bb4d1545d83b5fd2ce0b6860cdabbe22fe0f8ed0', class: "sort-icon-wrap", "aria-hidden": "true" }, h("nv-iconbutton", { key: '03b14162d5a1f2e8cccc5fa2e49af9cdd247d4e7', disableTabindex: true, name: "arrow-up", size: "xs", emphasis: this.sortDirection === 'none' ? 'lower' : 'low',
58
+ return (h(Host, { key: 'ae56ba389e554b3b555a1f29dba6a2c434e4a0ea', role: "columnheader", "aria-sort": this.ariaSort, tabindex: this.sortable ? 0 : undefined, onKeyDown: this.handleKeyDown.bind(this), onClick: this.cycleSortDirection.bind(this) }, h("slot", { key: '55efe6331ebcbde6b9b37f7d8dec610e444dc4b1' }), this.sortable && (h("span", { key: 'ecde17447218e6d462504cb10bdc8b95266ce402', class: "sort-icon-wrap", "aria-hidden": "true" }, h("nv-iconbutton", { key: 'c6e18e4149d2805cb16d5a79ec29db85a656b42c', disableTabindex: true, name: "arrow-up", size: "xs", emphasis: this.sortDirection === 'none' ? 'lower' : 'low',
59
59
  // prevent mousedown from selecting text
60
60
  onMouseDown: (e) => e.preventDefault(), class: {
61
61
  'is-none': this.sortDirection === 'none',