@nova-design-system/nova-webcomponents 3.14.0 → 3.16.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 (631) hide show
  1. package/dist/cjs/{collapse.animation-47397763.js → collapse.animation-23b7d61b.js} +5 -2
  2. package/dist/cjs/collapse.animation-23b7d61b.js.map +1 -0
  3. package/dist/cjs/{constants-52f6f8e9.js → constants-f5633903.js} +10 -1
  4. package/dist/cjs/constants-f5633903.js.map +1 -0
  5. package/dist/cjs/{fade.animation-cf6eba0d.js → fade.animation-9294e9ee.js} +3 -3
  6. package/dist/cjs/fade.animation-9294e9ee.js.map +1 -0
  7. package/dist/cjs/{grow.animation-9258ba63.js → grow.animation-f1cef0ad.js} +2 -2
  8. package/dist/cjs/{grow.animation-9258ba63.js.map → grow.animation-f1cef0ad.js.map} +1 -1
  9. package/dist/cjs/{index-c56424e5.js → index-93d3b2f8.js} +9 -6
  10. package/dist/cjs/index-93d3b2f8.js.map +1 -0
  11. package/dist/cjs/index.cjs.js +27 -6
  12. package/dist/cjs/index.cjs.js.map +1 -1
  13. package/dist/cjs/loader.cjs.js +2 -2
  14. package/dist/cjs/native.cjs.js +2 -2
  15. package/dist/cjs/nv-accordion-item.cjs.entry.js +3 -3
  16. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
  18. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nv-alert.cjs.entry.js +5 -5
  20. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-avatar.cjs.entry.js +3 -3
  22. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nv-badge_2.cjs.entry.js +10 -10
  24. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  26. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  28. package/dist/cjs/nv-button.cjs.entry.js +3 -3
  29. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nv-buttongroup.cjs.entry.js +1 -1
  31. package/dist/cjs/nv-calendar.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  33. package/dist/cjs/nv-datagrid.cjs.entry.js +178 -11
  34. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  36. package/dist/cjs/nv-dialog.cjs.entry.js +33 -30
  37. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +3 -3
  39. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
  41. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
  43. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
  45. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
  47. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  49. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
  50. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  52. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  53. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  54. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  55. package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
  56. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  58. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
  60. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  61. package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
  62. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  63. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
  64. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  65. package/dist/cjs/nv-fieldtime.cjs.entry.js +26 -13
  66. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  68. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  70. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nv-menu.cjs.entry.js +24 -9
  72. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  74. package/dist/cjs/nv-notification.cjs.entry.js +71 -10
  75. package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +43 -0
  77. package/dist/cjs/nv-notificationcontainer.cjs.entry.js.map +1 -0
  78. package/dist/cjs/nv-popover.cjs.entry.js +69 -63
  79. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  80. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  81. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  82. package/dist/cjs/nv-table.cjs.entry.js +216 -310
  83. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  84. package/dist/cjs/nv-toggle.cjs.entry.js +4 -4
  85. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  86. package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
  87. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  88. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
  89. package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
  90. package/dist/cjs/slide.animation-8bc27ed6.js +92 -0
  91. package/dist/cjs/slide.animation-8bc27ed6.js.map +1 -0
  92. package/dist/collection/animations/collapse.animation.js +4 -1
  93. package/dist/collection/animations/collapse.animation.js.map +1 -1
  94. package/dist/collection/animations/fade.animation.js +2 -2
  95. package/dist/collection/animations/fade.animation.js.map +1 -1
  96. package/dist/collection/animations/slide.animation.js +51 -29
  97. package/dist/collection/animations/slide.animation.js.map +1 -1
  98. package/dist/collection/collection-manifest.json +1 -1
  99. package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
  100. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  101. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  102. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
  103. package/dist/collection/components/nv-alert/nv-alert.css +1 -1
  104. package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
  105. package/dist/collection/components/nv-badge/nv-badge.js +7 -7
  106. package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
  107. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
  108. package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
  109. package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
  110. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
  111. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
  112. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  113. package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
  114. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  115. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
  116. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +4 -3
  117. package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
  118. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  119. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
  120. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
  121. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  122. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
  123. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
  124. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  125. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
  126. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  127. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
  128. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
  129. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  130. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
  131. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
  132. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
  133. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
  134. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
  135. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
  136. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
  137. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  138. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  139. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
  140. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
  141. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  142. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
  143. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  144. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
  145. package/dist/collection/components/nv-icon/nv-icons.js +16 -1
  146. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  147. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
  148. package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
  149. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  150. package/dist/collection/components/nv-menu/nv-menu.js +26 -8
  151. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  152. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  153. package/dist/collection/components/nv-notification/nv-notification.js +104 -6
  154. package/dist/collection/components/nv-notification/nv-notification.js.map +1 -1
  155. package/dist/collection/components/nv-notification/styles/nv-notification.css +8 -8
  156. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.css +61 -0
  157. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.docs.js +7 -0
  158. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.docs.js.map +1 -0
  159. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +76 -0
  160. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js.map +1 -0
  161. package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
  162. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  163. package/dist/collection/components/nv-popover/nv-popover.js +66 -60
  164. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  165. package/dist/collection/components/nv-row/nv-row.js +1 -1
  166. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  167. package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
  168. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  169. package/dist/collection/components/nv-table/nv-table.js +68 -496
  170. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  171. package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
  172. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
  173. package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
  174. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
  175. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
  176. package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
  177. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  178. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  179. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
  180. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  181. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
  182. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  183. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  184. package/dist/collection/utils/constants.js +9 -0
  185. package/dist/collection/utils/constants.js.map +1 -1
  186. package/dist/components/index.js +22 -7
  187. package/dist/components/index.js.map +1 -1
  188. package/dist/components/nv-accordion-item.js +1 -1
  189. package/dist/components/nv-accordion.js +10 -10
  190. package/dist/components/nv-accordion.js.map +1 -1
  191. package/dist/components/nv-alert.js +6 -6
  192. package/dist/components/nv-alert.js.map +1 -1
  193. package/dist/components/nv-avatar.js +4 -4
  194. package/dist/components/nv-avatar.js.map +1 -1
  195. package/dist/components/nv-badge.js +1 -1
  196. package/dist/components/nv-breadcrumb.js +4 -4
  197. package/dist/components/nv-breadcrumb.js.map +1 -1
  198. package/dist/components/nv-breadcrumbs.js +1 -1
  199. package/dist/components/nv-button.js +1 -1
  200. package/dist/components/nv-buttongroup.js +1 -1
  201. package/dist/components/nv-calendar.js +1 -1
  202. package/dist/components/nv-col.js +1 -1
  203. package/dist/components/nv-datagrid.js +175 -8
  204. package/dist/components/nv-datagrid.js.map +1 -1
  205. package/dist/components/nv-datagridcolumn.js +1 -1
  206. package/dist/components/nv-dialog.js +38 -35
  207. package/dist/components/nv-dialog.js.map +1 -1
  208. package/dist/components/nv-dialogfooter.js +1 -1
  209. package/dist/components/nv-dialogheader.js +1 -1
  210. package/dist/components/nv-fieldcheckbox.js +1 -1
  211. package/dist/components/nv-fielddate.js +57 -32
  212. package/dist/components/nv-fielddate.js.map +1 -1
  213. package/dist/components/nv-fielddaterange.js +74 -48
  214. package/dist/components/nv-fielddaterange.js.map +1 -1
  215. package/dist/components/nv-fielddropdown.js +40 -13
  216. package/dist/components/nv-fielddropdown.js.map +1 -1
  217. package/dist/components/nv-fielddropdownitem.js +1 -1
  218. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  219. package/dist/components/nv-fieldmultiselect.js +196 -164
  220. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  221. package/dist/components/nv-fieldnumber.js +1 -1
  222. package/dist/components/nv-fieldpassword.js +5 -5
  223. package/dist/components/nv-fieldpassword.js.map +1 -1
  224. package/dist/components/nv-fieldradio.js +2 -2
  225. package/dist/components/nv-fieldradio.js.map +1 -1
  226. package/dist/components/nv-fieldselect.js +5 -5
  227. package/dist/components/nv-fieldselect.js.map +1 -1
  228. package/dist/components/nv-fieldslider.js +6 -6
  229. package/dist/components/nv-fieldslider.js.map +1 -1
  230. package/dist/components/nv-fieldtext.js +1 -1
  231. package/dist/components/nv-fieldtextarea.js +2 -2
  232. package/dist/components/nv-fieldtextarea.js.map +1 -1
  233. package/dist/components/nv-fieldtime.js +32 -18
  234. package/dist/components/nv-fieldtime.js.map +1 -1
  235. package/dist/components/nv-icon.js +1 -1
  236. package/dist/components/nv-iconbutton.js +1 -1
  237. package/dist/components/nv-loader.js +1 -1
  238. package/dist/components/nv-menu.js +30 -13
  239. package/dist/components/nv-menu.js.map +1 -1
  240. package/dist/components/nv-menuitem.js +1 -1
  241. package/dist/components/nv-notification.js +75 -12
  242. package/dist/components/nv-notification.js.map +1 -1
  243. package/dist/components/nv-notificationcontainer.d.ts +11 -0
  244. package/dist/components/nv-notificationcontainer.js +59 -0
  245. package/dist/components/nv-notificationcontainer.js.map +1 -0
  246. package/dist/components/nv-popover.js +1 -1
  247. package/dist/components/nv-row.js +2 -2
  248. package/dist/components/nv-stack.js +2 -2
  249. package/dist/components/nv-table.js +216 -328
  250. package/dist/components/nv-table.js.map +1 -1
  251. package/dist/components/nv-toggle.js +4 -4
  252. package/dist/components/nv-toggle.js.map +1 -1
  253. package/dist/components/nv-togglebutton.js +2 -2
  254. package/dist/components/nv-togglebuttongroup.js +2 -2
  255. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  256. package/dist/components/nv-tooltip.js +1 -1
  257. package/dist/components/{p-1172e9bb.js → p-0d5ed1d7.js} +3 -3
  258. package/dist/components/p-0d5ed1d7.js.map +1 -0
  259. package/dist/components/{p-68fa3890.js → p-0e6f41c7.js} +3 -3
  260. package/dist/components/{p-68fa3890.js.map → p-0e6f41c7.js.map} +1 -1
  261. package/dist/components/{p-c59eccf1.js → p-0fd23531.js} +6 -6
  262. package/dist/components/{p-c59eccf1.js.map → p-0fd23531.js.map} +1 -1
  263. package/dist/components/{p-e6c04562.js → p-1639703f.js} +2 -2
  264. package/dist/components/{p-e6c04562.js.map → p-1639703f.js.map} +1 -1
  265. package/dist/components/{p-d4d310dd.js → p-2cc83e0c.js} +3 -3
  266. package/dist/components/{p-d4d310dd.js.map → p-2cc83e0c.js.map} +1 -1
  267. package/dist/components/p-2d64749f.js +191 -0
  268. package/dist/components/{p-2de17259.js.map → p-2d64749f.js.map} +1 -1
  269. package/dist/components/{p-e5dff125.js → p-31478080.js} +12 -12
  270. package/dist/components/{p-e5dff125.js.map → p-31478080.js.map} +1 -1
  271. package/dist/components/{p-85825688.js → p-378e3127.js} +7 -7
  272. package/dist/components/{p-85825688.js.map → p-378e3127.js.map} +1 -1
  273. package/dist/components/{p-31591941.js → p-3cd7a66f.js} +5 -2
  274. package/dist/components/p-3cd7a66f.js.map +1 -0
  275. package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
  276. package/dist/components/p-429e01f3.js.map +1 -0
  277. package/dist/components/{p-fb560fa3.js → p-4697bd56.js} +2 -2
  278. package/dist/components/{p-fb560fa3.js.map → p-4697bd56.js.map} +1 -1
  279. package/dist/components/p-47d499b4.js +88 -0
  280. package/dist/components/p-47d499b4.js.map +1 -0
  281. package/dist/{esm/constants-d0f19e7b.js → components/p-51602221.js} +11 -2
  282. package/dist/components/p-51602221.js.map +1 -0
  283. package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
  284. package/dist/components/p-5829b9f7.js.map +1 -0
  285. package/dist/components/{p-60244646.js → p-63595ea1.js} +70 -64
  286. package/dist/components/p-63595ea1.js.map +1 -0
  287. package/dist/components/{p-8439219d.js → p-7112612c.js} +5 -5
  288. package/dist/components/p-7112612c.js.map +1 -0
  289. package/dist/components/{p-ac91582e.js → p-715e5235.js} +3 -3
  290. package/dist/components/{p-ac91582e.js.map → p-715e5235.js.map} +1 -1
  291. package/dist/components/{p-eb443b26.js → p-9707528d.js} +4 -4
  292. package/dist/components/{p-eb443b26.js.map → p-9707528d.js.map} +1 -1
  293. package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
  294. package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
  295. package/dist/components/{p-930caa42.js → p-a1ef5e37.js} +6 -6
  296. package/dist/components/{p-930caa42.js.map → p-a1ef5e37.js.map} +1 -1
  297. package/dist/components/{p-ee0df37f.js → p-a271e3be.js} +3 -3
  298. package/dist/components/p-a271e3be.js.map +1 -0
  299. package/dist/components/p-c7401a7d.js +90 -0
  300. package/dist/components/p-c7401a7d.js.map +1 -0
  301. package/dist/components/{p-942f6619.js → p-df5d76a5.js} +3 -3
  302. package/dist/components/{p-942f6619.js.map → p-df5d76a5.js.map} +1 -1
  303. package/dist/components/{p-6ffba98c.js → p-f2bac2aa.js} +4 -4
  304. package/dist/components/{p-6ffba98c.js.map → p-f2bac2aa.js.map} +1 -1
  305. package/dist/esm/{collapse.animation-acda1bf5.js → collapse.animation-6e0b08df.js} +5 -2
  306. package/dist/esm/collapse.animation-6e0b08df.js.map +1 -0
  307. package/dist/{components/p-2277cfc8.js → esm/constants-69bafca2.js} +11 -2
  308. package/dist/esm/constants-69bafca2.js.map +1 -0
  309. package/dist/esm/{fade.animation-eb454088.js → fade.animation-9b939939.js} +3 -3
  310. package/dist/esm/{fade.animation-eb454088.js.map → fade.animation-9b939939.js.map} +1 -1
  311. package/dist/esm/{grow.animation-5b2abb3a.js → grow.animation-03fa5c19.js} +2 -2
  312. package/dist/esm/{grow.animation-5b2abb3a.js.map → grow.animation-03fa5c19.js.map} +1 -1
  313. package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +9 -6
  314. package/dist/esm/index-dc2723f3.js.map +1 -0
  315. package/dist/esm/index.js +21 -6
  316. package/dist/esm/index.js.map +1 -1
  317. package/dist/esm/loader.js +3 -3
  318. package/dist/esm/native.js +3 -3
  319. package/dist/esm/nv-accordion-item.entry.js +3 -3
  320. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  321. package/dist/esm/nv-accordion.entry.js +6 -6
  322. package/dist/esm/nv-accordion.entry.js.map +1 -1
  323. package/dist/esm/nv-alert.entry.js +5 -5
  324. package/dist/esm/nv-alert.entry.js.map +1 -1
  325. package/dist/esm/nv-avatar.entry.js +3 -3
  326. package/dist/esm/nv-avatar.entry.js.map +1 -1
  327. package/dist/esm/nv-badge_2.entry.js +10 -10
  328. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  329. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  330. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  331. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  332. package/dist/esm/nv-button.entry.js +3 -3
  333. package/dist/esm/nv-button.entry.js.map +1 -1
  334. package/dist/esm/nv-buttongroup.entry.js +1 -1
  335. package/dist/esm/nv-calendar.entry.js +2 -2
  336. package/dist/esm/nv-col.entry.js +1 -1
  337. package/dist/esm/nv-datagrid.entry.js +173 -6
  338. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  339. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  340. package/dist/esm/nv-dialog.entry.js +33 -30
  341. package/dist/esm/nv-dialog.entry.js.map +1 -1
  342. package/dist/esm/nv-dialogfooter_2.entry.js +3 -3
  343. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  344. package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
  345. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  346. package/dist/esm/nv-fielddate.entry.js +51 -26
  347. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  348. package/dist/esm/nv-fielddaterange.entry.js +68 -42
  349. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  350. package/dist/esm/nv-fielddropdown.entry.js +33 -7
  351. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  352. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  353. package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
  354. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  355. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  356. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  357. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  358. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  359. package/dist/esm/nv-fieldradio.entry.js +2 -2
  360. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  361. package/dist/esm/nv-fieldselect.entry.js +2 -2
  362. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  363. package/dist/esm/nv-fieldslider.entry.js +2 -2
  364. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  365. package/dist/esm/nv-fieldtext.entry.js +2 -2
  366. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  367. package/dist/esm/nv-fieldtextarea.entry.js +2 -2
  368. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  369. package/dist/esm/nv-fieldtime.entry.js +26 -13
  370. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  371. package/dist/esm/nv-icon.entry.js +3 -3
  372. package/dist/esm/nv-icon.entry.js.map +1 -1
  373. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  374. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  375. package/dist/esm/nv-menu.entry.js +24 -9
  376. package/dist/esm/nv-menu.entry.js.map +1 -1
  377. package/dist/esm/nv-menuitem.entry.js +1 -1
  378. package/dist/esm/nv-notification.entry.js +71 -10
  379. package/dist/esm/nv-notification.entry.js.map +1 -1
  380. package/dist/esm/nv-notificationcontainer.entry.js +39 -0
  381. package/dist/esm/nv-notificationcontainer.entry.js.map +1 -0
  382. package/dist/esm/nv-popover.entry.js +69 -63
  383. package/dist/esm/nv-popover.entry.js.map +1 -1
  384. package/dist/esm/nv-row.entry.js +2 -2
  385. package/dist/esm/nv-stack.entry.js +2 -2
  386. package/dist/esm/nv-table.entry.js +216 -310
  387. package/dist/esm/nv-table.entry.js.map +1 -1
  388. package/dist/esm/nv-toggle.entry.js +4 -4
  389. package/dist/esm/nv-toggle.entry.js.map +1 -1
  390. package/dist/esm/nv-togglebutton.entry.js +2 -2
  391. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  392. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  393. package/dist/esm/nv-tooltip.entry.js +2 -2
  394. package/dist/esm/slide.animation-f761030b.js +90 -0
  395. package/dist/esm/slide.animation-f761030b.js.map +1 -0
  396. package/dist/native/index.esm.js +1 -1
  397. package/dist/native/index.esm.js.map +1 -1
  398. package/dist/native/native.css +1 -1
  399. package/dist/native/native.esm.js +1 -1
  400. package/dist/native/native.esm.js.map +1 -1
  401. package/dist/native/{p-7bbcf477.entry.js → p-075d231e.entry.js} +2 -2
  402. package/dist/native/p-075d231e.entry.js.map +1 -0
  403. package/dist/native/p-107e80c6.entry.js +2 -0
  404. package/dist/native/p-107e80c6.entry.js.map +1 -0
  405. package/dist/native/{p-40c4a221.entry.js → p-112d096c.entry.js} +2 -2
  406. package/dist/native/p-112d096c.entry.js.map +1 -0
  407. package/dist/native/p-217de553.entry.js +2 -0
  408. package/dist/native/p-217de553.entry.js.map +1 -0
  409. package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
  410. package/dist/native/p-23ee0384.entry.js +2 -0
  411. package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
  412. package/dist/native/p-26513cbd.entry.js +2 -0
  413. package/dist/native/p-26513cbd.entry.js.map +1 -0
  414. package/dist/native/p-278613a3.entry.js +2 -0
  415. package/dist/native/{p-8c823928.entry.js.map → p-278613a3.entry.js.map} +1 -1
  416. package/dist/native/p-2dfd786f.entry.js +2 -0
  417. package/dist/native/p-2dfd786f.entry.js.map +1 -0
  418. package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
  419. package/dist/native/p-3060df80.js.map +1 -0
  420. package/dist/native/p-3cd7a66f.js +2 -0
  421. package/dist/native/p-3cd7a66f.js.map +1 -0
  422. package/dist/native/p-445221dc.entry.js +2 -0
  423. package/dist/native/p-445221dc.entry.js.map +1 -0
  424. package/dist/native/{p-3f861ddc.entry.js → p-44a78545.entry.js} +2 -2
  425. package/dist/native/p-4697bd56.js +2 -0
  426. package/dist/native/p-4dc7483d.entry.js +2 -0
  427. package/dist/native/{p-cfd5785e.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
  428. package/dist/native/p-4eaf417d.entry.js +13 -0
  429. package/dist/native/p-4eaf417d.entry.js.map +1 -0
  430. package/dist/native/p-5039ceb8.entry.js +2 -0
  431. package/dist/native/p-5039ceb8.entry.js.map +1 -0
  432. package/dist/native/p-51602221.js +2 -0
  433. package/dist/{cjs/constants-52f6f8e9.js.map → native/p-51602221.js.map} +1 -1
  434. package/dist/native/p-647a0765.entry.js +2 -0
  435. package/dist/native/p-647a0765.entry.js.map +1 -0
  436. package/dist/native/p-68dc02be.entry.js +2 -0
  437. package/dist/native/p-68dc02be.entry.js.map +1 -0
  438. package/dist/native/p-6d427897.entry.js +2 -0
  439. package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
  440. package/dist/native/p-701b48a4.entry.js +2 -0
  441. package/dist/native/{p-da2c7d3c.entry.js.map → p-701b48a4.entry.js.map} +1 -1
  442. package/dist/native/p-7c9bf981.entry.js +2 -0
  443. package/dist/native/p-835abdb9.entry.js +2 -0
  444. package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
  445. package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
  446. package/dist/native/p-88f9fca5.entry.js +2 -0
  447. package/dist/native/p-88f9fca5.entry.js.map +1 -0
  448. package/dist/native/{p-788e9ee5.entry.js → p-8e423742.entry.js} +3 -3
  449. package/dist/native/{p-788e9ee5.entry.js.map → p-8e423742.entry.js.map} +1 -1
  450. package/dist/native/p-95184ea2.entry.js +2 -0
  451. package/dist/native/p-95184ea2.entry.js.map +1 -0
  452. package/dist/native/p-9613087c.entry.js +2 -0
  453. package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
  454. package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
  455. package/dist/native/{p-ee0df37f.js → p-a271e3be.js} +2 -2
  456. package/dist/native/{p-ee0df37f.js.map → p-a271e3be.js.map} +1 -1
  457. package/dist/native/p-a2f58133.entry.js +2 -0
  458. package/dist/native/p-a2f58133.entry.js.map +1 -0
  459. package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
  460. package/dist/native/p-acada158.entry.js +2 -0
  461. package/dist/native/p-acada158.entry.js.map +1 -0
  462. package/dist/native/{p-f5eb047e.entry.js → p-b02c896a.entry.js} +2 -2
  463. package/dist/native/p-b06f0e61.entry.js +2 -0
  464. package/dist/native/p-b06f0e61.entry.js.map +1 -0
  465. package/dist/native/p-b4c15f25.entry.js +2 -0
  466. package/dist/native/p-b4c15f25.entry.js.map +1 -0
  467. package/dist/native/p-bcf41cd0.entry.js +2 -0
  468. package/dist/native/p-c7401a7d.js +2 -0
  469. package/dist/native/p-c7401a7d.js.map +1 -0
  470. package/dist/native/p-ce97ce24.entry.js +2 -0
  471. package/dist/native/p-ce97ce24.entry.js.map +1 -0
  472. package/dist/native/p-d0db5e72.entry.js +2 -0
  473. package/dist/native/p-d0db5e72.entry.js.map +1 -0
  474. package/dist/native/p-d45ee8e5.entry.js +2 -0
  475. package/dist/native/{p-52b8c872.entry.js.map → p-d45ee8e5.entry.js.map} +1 -1
  476. package/dist/native/p-d7f444fb.entry.js +2 -0
  477. package/dist/native/p-d7f444fb.entry.js.map +1 -0
  478. package/dist/native/p-d878e90a.entry.js +2 -0
  479. package/dist/native/p-d878e90a.entry.js.map +1 -0
  480. package/dist/native/p-ddc41f1f.entry.js +2 -0
  481. package/dist/native/p-ddc41f1f.entry.js.map +1 -0
  482. package/dist/native/{p-d95ee31e.entry.js → p-dfb6b65e.entry.js} +2 -2
  483. package/dist/native/p-f30e0be6.entry.js +2 -0
  484. package/dist/native/p-f30e0be6.entry.js.map +1 -0
  485. package/dist/native/p-f3c73492.entry.js +2 -0
  486. package/dist/native/{p-ee516944.entry.js.map → p-f3c73492.entry.js.map} +1 -1
  487. package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
  488. package/dist/types/animations/slide.animation.d.ts +15 -4
  489. package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
  490. package/dist/types/components/nv-badge/nv-badge.d.ts +1 -1
  491. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
  492. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
  493. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
  494. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
  495. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
  496. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
  497. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  498. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
  499. package/dist/types/components/nv-notification/nv-notification.d.ts +18 -0
  500. package/dist/types/components/nv-notificationcontainer/nv-notificationcontainer.d.ts +19 -0
  501. package/dist/types/components/nv-notificationcontainer/nv-notificationcontainer.docs.d.ts +4 -0
  502. package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
  503. package/dist/types/components/nv-table/nv-table.d.ts +6 -87
  504. package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
  505. package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
  506. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
  507. package/dist/types/components.d.ts +63 -211
  508. package/dist/types/utils/constants.d.ts +8 -0
  509. package/dist/vscode-data.json +87 -43
  510. package/hydrate/index.js +973 -809
  511. package/hydrate/index.mjs +973 -809
  512. package/package.json +10 -10
  513. package/dist/cjs/collapse.animation-47397763.js.map +0 -1
  514. package/dist/cjs/dom.utils-4d43f69a.js +0 -170
  515. package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
  516. package/dist/cjs/fade.animation-cf6eba0d.js.map +0 -1
  517. package/dist/cjs/index-c56424e5.js.map +0 -1
  518. package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
  519. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
  520. package/dist/cjs/slide.animation-bedfc827.js +0 -70
  521. package/dist/cjs/slide.animation-bedfc827.js.map +0 -1
  522. package/dist/collection/components/nv-table/nv-table.css +0 -35
  523. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
  524. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
  525. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
  526. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
  527. package/dist/components/nv-tablecolumn.d.ts +0 -11
  528. package/dist/components/nv-tablecolumn.js +0 -38
  529. package/dist/components/nv-tablecolumn.js.map +0 -1
  530. package/dist/components/p-1172e9bb.js.map +0 -1
  531. package/dist/components/p-2277cfc8.js.map +0 -1
  532. package/dist/components/p-2de17259.js +0 -191
  533. package/dist/components/p-31591941.js.map +0 -1
  534. package/dist/components/p-51876ca1.js.map +0 -1
  535. package/dist/components/p-60244646.js.map +0 -1
  536. package/dist/components/p-8439219d.js.map +0 -1
  537. package/dist/components/p-aff3ed68.js.map +0 -1
  538. package/dist/components/p-cb34aa4f.js +0 -167
  539. package/dist/components/p-cb34aa4f.js.map +0 -1
  540. package/dist/components/p-e0cd7e3a.js +0 -88
  541. package/dist/components/p-e0cd7e3a.js.map +0 -1
  542. package/dist/components/p-eda2f9f3.js +0 -68
  543. package/dist/components/p-eda2f9f3.js.map +0 -1
  544. package/dist/components/p-ee0df37f.js.map +0 -1
  545. package/dist/esm/collapse.animation-acda1bf5.js.map +0 -1
  546. package/dist/esm/constants-d0f19e7b.js.map +0 -1
  547. package/dist/esm/dom.utils-ac71e0ef.js +0 -167
  548. package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
  549. package/dist/esm/index-a1936cd0.js.map +0 -1
  550. package/dist/esm/nv-tablecolumn.entry.js +0 -17
  551. package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
  552. package/dist/esm/slide.animation-f444aa0b.js +0 -68
  553. package/dist/esm/slide.animation-f444aa0b.js.map +0 -1
  554. package/dist/native/p-08582c21.entry.js +0 -2
  555. package/dist/native/p-08582c21.entry.js.map +0 -1
  556. package/dist/native/p-0a99c6fb.entry.js +0 -2
  557. package/dist/native/p-0a99c6fb.entry.js.map +0 -1
  558. package/dist/native/p-0e488b3d.entry.js +0 -2
  559. package/dist/native/p-0e488b3d.entry.js.map +0 -1
  560. package/dist/native/p-1ad1bff9.entry.js +0 -2
  561. package/dist/native/p-1ad1bff9.entry.js.map +0 -1
  562. package/dist/native/p-1f01fb64.entry.js +0 -2
  563. package/dist/native/p-1f01fb64.entry.js.map +0 -1
  564. package/dist/native/p-225a05bf.entry.js +0 -2
  565. package/dist/native/p-225a05bf.entry.js.map +0 -1
  566. package/dist/native/p-2277cfc8.js +0 -2
  567. package/dist/native/p-2277cfc8.js.map +0 -1
  568. package/dist/native/p-234cfa2e.entry.js +0 -2
  569. package/dist/native/p-25f2ce81.entry.js +0 -2
  570. package/dist/native/p-2781637d.entry.js +0 -2
  571. package/dist/native/p-29f68e07.entry.js +0 -2
  572. package/dist/native/p-31591941.js +0 -2
  573. package/dist/native/p-31591941.js.map +0 -1
  574. package/dist/native/p-3784efdc.entry.js +0 -2
  575. package/dist/native/p-3784efdc.entry.js.map +0 -1
  576. package/dist/native/p-40c4a221.entry.js.map +0 -1
  577. package/dist/native/p-52b8c872.entry.js +0 -2
  578. package/dist/native/p-5a43fe48.entry.js +0 -13
  579. package/dist/native/p-5a43fe48.entry.js.map +0 -1
  580. package/dist/native/p-5f0776cb.entry.js +0 -2
  581. package/dist/native/p-5f0776cb.entry.js.map +0 -1
  582. package/dist/native/p-6290951d.entry.js +0 -2
  583. package/dist/native/p-6290951d.entry.js.map +0 -1
  584. package/dist/native/p-7bbcf477.entry.js.map +0 -1
  585. package/dist/native/p-81952a3c.entry.js +0 -2
  586. package/dist/native/p-81952a3c.entry.js.map +0 -1
  587. package/dist/native/p-87784622.entry.js +0 -2
  588. package/dist/native/p-87784622.entry.js.map +0 -1
  589. package/dist/native/p-8c823928.entry.js +0 -2
  590. package/dist/native/p-92931ab8.entry.js +0 -2
  591. package/dist/native/p-9a46baa9.entry.js +0 -2
  592. package/dist/native/p-9a46baa9.entry.js.map +0 -1
  593. package/dist/native/p-a34beedf.entry.js +0 -2
  594. package/dist/native/p-a34beedf.entry.js.map +0 -1
  595. package/dist/native/p-bc01787b.entry.js +0 -2
  596. package/dist/native/p-bc01787b.entry.js.map +0 -1
  597. package/dist/native/p-cb34aa4f.js +0 -2
  598. package/dist/native/p-cb34aa4f.js.map +0 -1
  599. package/dist/native/p-cea942b9.entry.js +0 -2
  600. package/dist/native/p-cea942b9.entry.js.map +0 -1
  601. package/dist/native/p-cfd5785e.entry.js +0 -2
  602. package/dist/native/p-d0a33e64.js.map +0 -1
  603. package/dist/native/p-d0ef1bbb.entry.js +0 -2
  604. package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
  605. package/dist/native/p-d88c416f.entry.js +0 -2
  606. package/dist/native/p-d88c416f.entry.js.map +0 -1
  607. package/dist/native/p-da2c7d3c.entry.js +0 -2
  608. package/dist/native/p-dd023fd6.entry.js +0 -2
  609. package/dist/native/p-dd023fd6.entry.js.map +0 -1
  610. package/dist/native/p-e765a624.entry.js +0 -2
  611. package/dist/native/p-e765a624.entry.js.map +0 -1
  612. package/dist/native/p-eda2f9f3.js +0 -2
  613. package/dist/native/p-eda2f9f3.js.map +0 -1
  614. package/dist/native/p-ee516944.entry.js +0 -2
  615. package/dist/native/p-f0cbfb3d.entry.js +0 -2
  616. package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
  617. package/dist/native/p-f5120223.entry.js +0 -2
  618. package/dist/native/p-fb560fa3.js +0 -2
  619. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
  620. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
  621. /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
  622. /package/dist/native/{p-3f861ddc.entry.js.map → p-44a78545.entry.js.map} +0 -0
  623. /package/dist/native/{p-fb560fa3.js.map → p-4697bd56.js.map} +0 -0
  624. /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
  625. /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
  626. /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
  627. /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
  628. /package/dist/native/{p-f5eb047e.entry.js.map → p-b02c896a.entry.js.map} +0 -0
  629. /package/dist/native/{p-25f2ce81.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
  630. /package/dist/native/{p-d95ee31e.entry.js.map → p-dfb6b65e.entry.js.map} +0 -0
  631. /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{r as e,c as t,h as i,H as s,g as n}from"./p-3060df80.js";import{a as r}from"./p-a5c8eee9.js";import{g as o}from"./p-51602221.js";import{v as l}from"./p-f5ff676c.js";const a='nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldtime{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldtime[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldtime[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldtime[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fieldtime[required]:not([required=false]) label::after{content:"*";color:var(--components-form-text-required);font-weight:var(--font-weight-high-emphasis)}nv-fieldtime label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-fieldtime nv-popover{width:100%;display:block}nv-fieldtime nv-popover [data-scope=popover]{padding:var(--list-dropdown-padding);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border);width:100%}nv-fieldtime .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldtime .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%;min-height:40px;gap:0;padding-left:var(--form-field-padding-x)}nv-fieldtime .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fieldtime .input-container:focus-within,nv-fieldtime .input-container:focus-within:hover,nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldtime .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldtime .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldtime .input-container input.time-input{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);width:100%;width:100%;min-width:24px;flex:0 0 24px;text-align:center;padding:0;margin:0}nv-fieldtime .input-container input.time-input:focus{outline:none}nv-fieldtime .input-container input.time-input::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--form-field-line-height)}nv-fieldtime .input-container input.time-input[type=password]::-ms-clear,nv-fieldtime .input-container input.time-input[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldtime .input-container input.time-input::-webkit-inner-spin-button,nv-fieldtime .input-container input.time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}nv-fieldtime .input-container span{width:100%;text-align:center;min-width:24px;flex:0 0 24px;padding:0 4px;color:var(--components-form-field-content-text)}nv-fieldtime .input-container>nv-iconbutton{border:0px;border-radius:0px;margin-left:auto}nv-fieldtime .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldtime .input-container>nv-iconbutton:last-of-type{border-top-right-radius:var(--form-field-radius);border-bottom-right-radius:var(--form-field-radius)}nv-fieldtime .input-container nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px;top:50%;transform:translateY(-50%)}nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus-within{border-color:var(--color-focus-brand);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--color-focus-brand)}nv-fieldtime .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldtime .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldtime hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}nv-fieldtime .time-dropdown{width:100%}nv-fieldtime .time-dropdown .time-columns{display:flex;justify-content:flex-start;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column{flex:1;text-align:center;max-height:200px;overflow-y:auto;scroll-behavior:smooth;scrollbar-gutter:stable both-edges;scrollbar-gutter:auto}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar{width:6px;height:6px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column:last-child{border-right:none}nv-fieldtime .time-dropdown .time-columns .time-column .time-option{padding:var(--calendar-padding);text-align:center;cursor:pointer;transition:background-color 0.2s;border-radius:var(--list-dropdown-item-radius);color:var(--components-calendar-cell-text);font-size:var(--font-size-sm);display:flex;justify-content:center;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:hover{background-color:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus,nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus-within{background-color:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.selected{background-color:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.highlighted{background-color:var(--components-calendar-cell-background-hover);color:var(--components-menu-contextual-item-content-hover)}';const d=a;const c=class{constructor(i){e(this,i);this.valueChanged=t(this,"valueChanged",7);this.inputElements={};this.inputZeroAdded={};this.typeFocused=o.Hours;this.hours="00";this.minutes="00";this.seconds="00";this.inputId=l();this.readonly=false;this.disabled=false;this.required=false;this.success=false;this.error=false;this.format="HH:mm:ss";this.open=false;this.step=6e4;this.autofocus=false}handleOpenChanged(e){e.stopPropagation();this.open=e.detail}handleKeyDown(e){var t,i,s,n;if(!this.open){if(e.key==="ArrowDown"){this.open=true;e.preventDefault();return}return}if(!this.popoverElement){console.warn("nv-fieldtime -> Popover element is not defined");return}const r=`.time-column.time-column-${this.typeFocused} div`;const l=Array.from(this.el.querySelectorAll(r));if(l.length===0){console.warn("nv-fieldtime -> No dropdown items found to navigate");return}let a=l.findIndex((e=>e.classList.contains("highlighted")));if(e.key==="ArrowDown"){e.preventDefault();a=(a+1)%l.length;this.updateHighlightedItem(l,a)}else if(e.key==="ArrowUp"){e.preventDefault();a=(a-1+l.length)%l.length;this.updateHighlightedItem(l,a)}else if(e.key==="Enter"&&a>=0){e.preventDefault();l[a].click();if(this.typeFocused===o.Hours){(t=this.inputElements[o.Minutes])===null||t===void 0?void 0:t.focus();(i=this.inputElements[o.Minutes])===null||i===void 0?void 0:i.select()}else if(this.typeFocused===o.Minutes||this.typeFocused===o.Seconds){(s=this.inputElements[o.Seconds])===null||s===void 0?void 0:s.focus();(n=this.inputElements[o.Seconds])===null||n===void 0?void 0:n.select()}}else if(e.key==="Escape"){e.preventDefault();if(this.inputElements[o.Hours]){this.inputElements[o.Hours].blur()}}}handleValueChange(e){this.valueChanged.emit(e)}handleOpenChange(e){if(e){const e=`.time-column.time-column-${o.Hours} div`;this.updateColumnHighlight(e,this.hours);const t=`.time-column.time-column-${o.Minutes} div`;this.updateColumnHighlight(t,this.minutes);const i=`.time-column.time-column-${o.Seconds} div`;this.updateColumnHighlight(i,this.seconds)}}handleInputChange(e,t){const i=e.target;const s=i.value.replace(/[^0-9]/g,"");switch(t){case o.Hours:this.handleHoursChange(s,t);break;case o.Minutes:this.handleMinutesChange(s,t);break;case o.Seconds:this.handleSecondsChange(s,t);break}const n=this.reconstructTime();this.value=n}handleHoursChange(e,t){var i,s,n,r;const l=this.format.startsWith("HH");const a=l?24:12;let d=false;const c=this.parseHour(this.max,this.format)||(this.format.startsWith("hh")?"12":"24");const f=this.parseHour(this.min,this.format)||"00";if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(c&&parseInt(i,10)>parseInt(c,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=a){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(c&&parseInt(i,10)>parseInt(c,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}}else if(e.length>2){if(e.startsWith("00")){this.inputZeroAdded[t]=true;const i=e.slice(1,3).padStart(2,"0");if(c&&parseInt(i,10)>parseInt(c,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}else{const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=a){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f;d=true}else{this.hours="00";d=true}}else{if(c&&i>parseInt(c,10)){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(f&&i<parseInt(f,10)){this.hours=f}else{this.hours=i.toString()}}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=a){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";d=true}}else{if(c&&i>parseInt(c,10)){this.hours="00";d=true}else{if(f&&i<parseInt(f,10)){this.hours=f}else{this.hours=i.toString()}}}}if(this.hours.length===2&&!this.inputZeroAdded[t]&&!d){(i=this.inputElements[o.Minutes])===null||i===void 0?void 0:i.focus();(s=this.inputElements[o.Minutes])===null||s===void 0?void 0:s.select()}else if(d){(n=this.inputElements[o.Hours])===null||n===void 0?void 0:n.focus();(r=this.inputElements[o.Hours])===null||r===void 0?void 0:r.select()}}handleMinutesChange(e,t){var i,s,n,r,l,a;const d=60;let c=false;const f=(i=this.parseMinute(this.min))!==null&&i!==void 0?i:0;const h=(s=this.parseMinute(this.max))!==null&&s!==void 0?s:59;if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(h&&parseInt(i,10)>h){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=d){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(h&&s>h){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(f&&s<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}}else if(e.length>2){if(e.startsWith("00")){this.inputZeroAdded[t]=true;const i=e.slice(1,3).padStart(2,"0");if(h&&parseInt(i,10)>h){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}else{const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=d){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(h&&i>h){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(f&&i<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i.toString()}}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=d){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(h&&i>h){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";c=true}}else{if(f&&i<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i.toString()}}}}if(this.minutes.length===2&&!this.inputZeroAdded[t]&&!c){(n=this.inputElements[o.Seconds])===null||n===void 0?void 0:n.focus();(r=this.inputElements[o.Seconds])===null||r===void 0?void 0:r.select()}else if(c){(l=this.inputElements[o.Minutes])===null||l===void 0?void 0:l.focus();(a=this.inputElements[o.Minutes])===null||a===void 0?void 0:a.select()}}handleSecondsChange(e,t){var i,s,n,r;const l=60;let a=false;const d=(i=this.parseSecond(this.min))!==null&&i!==void 0?i:0;const c=(s=this.parseSecond(this.max))!==null&&s!==void 0?s:59;if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(c&&parseInt(i,10)>c){if(d&&parseInt(i,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(d&&parseInt(i,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=l){if(d&&parseInt(i,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(c&&s>c){if(d&&parseInt(i,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(d&&s<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds=i}}}}else if(e.length>2){const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=l){if(d&&parseInt(t,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(c&&i>c){if(d&&parseInt(t,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(d&&i<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds=i.toString()}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=l){if(d&&parseInt(t,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(c&&i>c){if(d&&parseInt(t,10)<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds="00";a=true}}else{if(d&&i<d){this.seconds=d.toString().padStart(2,"0")}else{this.seconds=i.toString()}}}}if(a){(n=this.inputElements[o.Seconds])===null||n===void 0?void 0:n.focus();(r=this.inputElements[o.Seconds])===null||r===void 0?void 0:r.select()}}parseTime(e){if(!e){return}const t=e.replace(/[^0-9]/g,"").padStart(6,"0");const i=t.slice(0,2);const s=t.slice(2,4);const n=t.slice(4,6);const r=this.parseHour(this.min,this.format)||i;const o=this.parseMinute(this.min)||s;const l=this.parseSecond(this.min)||n;this.hours=r.padStart(2,"0");this.minutes=o.toString().padStart(2,"0");this.seconds=l.toString().padStart(2,"0")}reconstructTime(){if(this.format==="HH"||this.format==="hh"){return this.hours}else if(this.format==="HH:mm"||this.format==="hh:mm"){return`${this.hours}:${this.minutes}`}else if(this.format==="HH:mm:ss"||this.format==="hh:mm:ss"){return`${this.hours}:${this.minutes}:${this.seconds}`}else{return`${this.hours}:${this.minutes}:${this.seconds}`}}handleFocus(e){var t,i,s,n;if(this.readonly||this.disabled){return}if(!this.open){this.open=true}if(((t=this.inputElements[e])===null||t===void 0?void 0:t.value.length)===0||((i=this.inputElements[e])===null||i===void 0?void 0:i.value)==="00"){(s=this.inputElements[e])===null||s===void 0?void 0:s.focus();(n=this.inputElements[e])===null||n===void 0?void 0:n.select()}this.typeFocused=e}HandleDropdownIconClick(){var e,t,i,s,n,r;if(this.disabled||this.readonly){return}if(this.open&&this.inputElements[o.Hours]){this.open=false}else if(this.open&&this.inputElements[o.Minutes]){this.open=false}else if(this.open&&this.inputElements[o.Seconds]){this.open=false}else if(!this.open&&this.inputElements[o.Hours]){(e=this.inputElements[o.Hours])===null||e===void 0?void 0:e.focus();(t=this.inputElements[o.Hours])===null||t===void 0?void 0:t.select()}else if(!this.open&&this.inputElements[o.Minutes]){(i=this.inputElements[o.Minutes])===null||i===void 0?void 0:i.focus();(s=this.inputElements[o.Minutes])===null||s===void 0?void 0:s.select()}else if(!this.open&&this.inputElements[o.Seconds]){(n=this.inputElements[o.Seconds])===null||n===void 0?void 0:n.focus();(r=this.inputElements[o.Seconds])===null||r===void 0?void 0:r.select()}else{console.warn("nv-fieldtime -> No input elements found to focus or to blur")}}updateHighlightedItem(e,t){e.forEach(((e,i)=>{if(i===t){e.classList.add("highlighted");e.setAttribute("tabindex","0");e.focus();e.scrollIntoView({block:"nearest"})}else{e.classList.remove("highlighted");e.setAttribute("tabindex","-1")}}))}handleTimeOptionClick(e,t){const i=parseInt(e.target.textContent||"0",10);if(t===o.Hours){this.hours=i.toString().padStart(2,"0")}else if(t===o.Minutes){this.minutes=i.toString().padStart(2,"0")}else if(t===o.Seconds){this.seconds=i.toString().padStart(2,"0")}const s=this.reconstructTime();this.value=s}handleInputBlur(){setTimeout((()=>{if(!this.el.contains(document.activeElement)){if(this.open){this.open=false}}}),150)}handleClickOutside(e){const t=e.target;if(this.el.contains(t)||Object.values(this.inputElements).some((e=>e.contains(t)))){return}if(this.open){this.open=false}}handleScroll(e,t){const i=e.target;const s=i.scrollTop;const n=i.clientHeight;const r=i.scrollHeight;const o=40;const l=this.generateTimeOptions(t);const a=l.length*o;if(s+n>=r-o||s<=0){i.scrollTop=a}}generateTimeOptions(e){const t=this.step/1e3;if(t===0){return["00"]}switch(e){case o.Hours:return this.generateHourOptions(t);case o.Minutes:return this.generateMinuteOptions(t);case o.Seconds:return this.generateSecondOptions(t);default:return[]}}generateHourOptions(e){const t=Math.max(1,Math.floor(e/3600));const i=this.parseHour(this.max,this.format)||(this.format.startsWith("hh")?"12":"24");const s=this.parseHour(this.min,this.format)||"00";const n=parseInt(i,10);const r=parseInt(s,10);const o=[];for(let e=r;e<n;e+=t){o.push(e.toString().padStart(2,"0"))}return o}parseHour(e,t){if(!e)return null;const[i]=e.split(":");const s=parseInt(i,10);if(isNaN(s))return null;if(t.startsWith("hh"))return s>0&&s<=12?i.padStart(2,"0"):null;return s>=0&&s<=24?i.padStart(2,"0"):null}generateMinuteOptions(e){var t,i;const s=Math.max(1,Math.floor(e%3600/60));const n=(t=this.parseMinute(this.min))!==null&&t!==void 0?t:0;const r=(i=this.parseMinute(this.max))!==null&&i!==void 0?i:59;if(n===0&&r===0)return["00"];const o=[];for(let e=n;e<=r;e+=s){o.push(e.toString().padStart(2,"0"))}return o}parseMinute(e){if(!e)return null;const t=e.split(":");if(t.length<2)return null;const i=parseInt(t[1],10);return isNaN(i)||i<0||i>=60?null:i}generateSecondOptions(e){var t,i;const s=Math.max(1,e%60);const n=(t=this.parseSecond(this.min))!==null&&t!==void 0?t:0;const r=(i=this.parseSecond(this.max))!==null&&i!==void 0?i:59;if(n===0&&r===0)return["00"];const o=[];for(let e=n;e<=r;e+=s){o.push(e.toString().padStart(2,"0"))}return o}parseSecond(e){if(!e)return null;const t=e.split(":");if(t.length<3)return null;const i=parseInt(t[2],10);return isNaN(i)||i<0||i>=60?null:i}generateInfiniteTimeOptions(e){const t=this.generateTimeOptions(e);const i=t.length;const s=Math.ceil(300/i);return Array(s).fill(t).flat()}getCurrentTime(){const e=new Date;return e.toLocaleTimeString()}updateColumnHighlight(e,t){const i=Array.from(this.el.querySelectorAll(e));const s=i.findIndex((e=>e.textContent===t));this.updateHighlightedItem(i,s)}handleHostClick(e){var t,i;if(this.disabled||this.readonly){return}const s=e.target;if(s.closest("nv-iconbutton")){return}if(!this.open){if(this.inputElements){(t=this.inputElements[o.Hours])===null||t===void 0?void 0:t.focus();(i=this.inputElements[o.Hours])===null||i===void 0?void 0:i.select()}e.preventDefault()}}componentWillLoad(){document.addEventListener("click",this.handleClickOutside.bind(this));if(this.value){this.parseTime(this.value)}else{const e=this.parseHour(this.min,this.format)||"00";const t=this.parseMinute(this.min)||0;const i=this.parseSecond(this.min)||0;this.hours=e.padStart(2,"0");this.minutes=t.toString().padStart(2,"0");this.seconds=i.toString().padStart(2,"0")}}connectedCallback(){document.addEventListener("click",this.handleClickOutside.bind(this))}disconnectedCallback(){document.removeEventListener("click",this.handleClickOutside.bind(this))}componentDidLoad(){if(!this.value){const e=this.getCurrentTime();let[t,i,s]=e.split(":");let n,r;if(s.includes(" ")){[n,r]=s.split(" ")}else{n=s}let o=parseInt(t,10);if(r){if(r==="PM"&&o<12){o+=12}else if(r==="AM"&&o===12){o=0}}if(this.format.startsWith("hh")){if(o===0){t="12"}else if(o>12){t=(o-12).toString()}else{t=o.toString()}}else{t=o.toString()}t=t.padStart(2,"0");i=i.padStart(2,"0");n=n.padStart(2,"0");const l=`.time-column.time-column-hours div`;this.updateColumnHighlight(l,t);const a=`.time-column.time-column-minutes div`;this.updateColumnHighlight(a,i);const d=`.time-column.time-column-seconds div`;this.updateColumnHighlight(d,n)}}RenderTimeOptionsColumn(e){return i("div",{class:`time-column time-column-${e}`,onScroll:t=>this.handleScroll(t,e)},this.generateInfiniteTimeOptions(e).map(((t,s)=>i("div",{class:{"time-option":true,selected:e===o.Hours&&t===this.hours||e===o.Minutes&&t===this.minutes||e===o.Seconds&&t===this.seconds},key:`${t}-${s}`,onClick:t=>this.handleTimeOptionClick(t,e)},t))))}render(){return i(s,{key:"ef5f12cdbd62c18033f57ff176775b5ee62ebb85",onclick:e=>this.handleHostClick(e)},(this.label||this.el.querySelector('[slot="label"]'))&&i("label",{key:"64e20904debf287e69e5717f2d28ac4a700b7f15",htmlFor:this.inputId},i("slot",{key:"e0644a80e23854ca06baf8b52b00649a0e6f1ed9",name:"label"},this.label)),i("nv-popover",{key:"98d71eeb73ce93c16c488e80f79bbe269a44ddc3",ref:e=>this.popoverElement=e,triggerMode:"controlled",placement:"bottom-start",open:this.open},i("div",{key:"9a7d256f3c64aed3314338c8306540d92dddaad0",class:"input-wrapper",slot:"trigger"},i("slot",{key:"ac0e04737b86e4767e4c249ee95e4b69a41ea387",name:"before-input"}),i("div",{key:"1f04ff2f539048eb00500b2fbbeaf86ce1698065",class:"input-container"},i("slot",{key:"60ee3a49ea9ca9509224c57dc64f3ccab7f89312",name:"leading-input"}),r(this.format,"HH")&&[i("input",{key:"cb8a979ce6e4d83074e0c9046bbf3a60821e5262",ref:e=>this.inputElements[o.Hours]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.hours,onInput:e=>this.handleInputChange(e,o.Hours),placeholder:this.format.includes("hh")?"hh":"HH",inputMode:"numeric",onFocus:()=>this.handleFocus(o.Hours),name:this.name?`${o.Hours}-${this.name}`:o.Hours,id:this.inputId,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],this.format.includes("mm")&&[i("span",{key:"74f9604ffd54e0c0bbd88996e32fdcb08f2c3645"},":"),i("input",{key:"52f9b637bba804cac6fadff06e8b077bb2f5748a",ref:e=>this.inputElements[o.Minutes]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.minutes,onInput:e=>this.handleInputChange(e,o.Minutes),placeholder:"mm",inputMode:"numeric",onFocus:()=>this.handleFocus(o.Minutes),name:this.name?`${o.Minutes}-${this.name}`:o.Minutes,id:`${this.inputId}-minutes`,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],this.format.includes("ss")&&[i("span",{key:"878bc9ce7557e9cf9471803a86956a9184d0ccb5"},":"),i("input",{key:"b074d4d3ef80f66e7dbe051b6bc53f151661f409",ref:e=>this.inputElements[o.Seconds]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.seconds,onInput:e=>this.handleInputChange(e,o.Seconds),placeholder:"ss",inputMode:"numeric",onFocus:()=>this.handleFocus(o.Seconds),name:this.name?`${o.Seconds}-${this.name}`:o.Seconds,id:`${this.inputId}-seconds`,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],i("nv-iconbutton",{key:"3f5d78116ee60d1874a4629d9cf36a06d52b7df4",name:"clock",size:"md",emphasis:"lower","aria-label":this.open?"Hide time picker":"Show time picker",onClick:()=>this.HandleDropdownIconClick()}),this.error&&i("nv-icon",{key:"4b2356cf95131af213a4e98feede16fc8c4963db",name:"alert-circle",class:"validation",size:"sm"}),this.success&&i("nv-icon",{key:"f9b0e61037049a36ac900d1af9ecc71b211ebd88",name:"circle-check",class:"validation",size:"sm"})),i("slot",{key:"6177abde559c57f2b0586368ead1a61d7b543838",name:"after-input"})),i("div",{key:"f6d5205a5011411550179f9337143163cb547fb1",class:"time-dropdown",slot:"content"},i("div",{key:"9f0b3e1423bef197b269c5b11ce744cabc2bd6c4",class:"time-columns"},r(this.format,"HH")&&this.RenderTimeOptionsColumn(o.Hours),this.format.includes("mm")&&this.RenderTimeOptionsColumn(o.Minutes),this.format.includes("ss")&&this.RenderTimeOptionsColumn(o.Seconds)))),(this.description||this.el.querySelector('[slot="description"]'))&&i("div",{key:"1076ded73b32ff9afbd0f02184febcc82f8d839e",class:"description"},i("slot",{key:"479d09b299d0e380533a6cd689ce7f03aa92ea8e",name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&i("div",{key:"5615246dbd797c300be357be37d3b9d0aee56e31",hidden:!this.error,class:"error-description"},i("slot",{key:"6568ea3f9e0bdf85dd280c645956f8e0bb592e35",name:"error-description"},this.errorDescription)))}static get formAssociated(){return true}get el(){return n(this)}static get watchers(){return{value:["handleValueChange"],open:["handleOpenChange"]}}};c.style=d;export{c as nv_fieldtime};
2
+ //# sourceMappingURL=p-ddc41f1f.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nvFieldtimeCss","NvFieldtimeStyle0","NvFieldtime","constructor","hostRef","this","inputElements","inputZeroAdded","typeFocused","TimeType","Hours","hours","minutes","seconds","inputId","uuidv4","readonly","disabled","required","success","error","format","open","step","autofocus","handleOpenChanged","event","stopPropagation","detail","handleKeyDown","key","preventDefault","popoverElement","console","warn","stringSelector","items","Array","from","el","querySelectorAll","length","currentIndex","findIndex","item","classList","contains","updateHighlightedItem","click","_a","Minutes","focus","_b","select","Seconds","_c","_d","blur","handleValueChange","newValue","valueChanged","emit","handleOpenChange","newOpen","hourSelector","updateColumnHighlight","minutesSelector","secondsSelector","handleInputChange","e","type","inputElement","target","inputValue","value","replace","handleHoursChange","handleMinutesChange","handleSecondsChange","currentValue","reconstructTime","isHHFormat","startsWith","maxHours","reputedToZero","maxHour","parseHour","max","minHour","min","newInputValue","padStart","parseInt","slice","parsedNewInputValue","toString","maxMinutes","minMinute","parseMinute","maxMinute","_e","_f","maxSeconds","minSecond","parseSecond","maxSecond","parseTime","timeString","cleanedTime","hour","minute","second","handleFocus","HandleDropdownIconClick","index","forEach","i","add","setAttribute","scrollIntoView","block","remove","handleTimeOptionClick","option","textContent","handleInputBlur","setTimeout","document","activeElement","handleClickOutside","Object","values","some","input","handleScroll","scrollTop","containerHeight","clientHeight","scrollHeight","itemHeight","options","generateTimeOptions","singleSetHeight","stepInSeconds","generateHourOptions","generateMinuteOptions","generateSecondOptions","hourStep","Math","floor","maxHourValue","minHourValue","push","hourStr","split","isNaN","minuteStep","parts","secondStep","generateInfiniteTimeOptions","totalOptions","repetitions","ceil","fill","flat","getCurrentTime","currentTime","Date","toLocaleTimeString","selector","x","handleHostClick","targetElement","closest","componentWillLoad","addEventListener","bind","connectedCallback","disconnectedCallback","removeEventListener","componentDidLoad","secondAmPm","amPm","includes","parsedHour","minuteSelector","secondSelector","RenderTimeOptionsColumn","h","class","onScroll","map","selected","onClick","render","Host","onclick","label","querySelector","htmlFor","name","ref","triggerMode","placement","slot","startsWithIgnoreCase","pattern","maxlength","onInput","placeholder","inputMode","onFocus","id","onKeyDown","onBlur","size","emphasis","description","errorDescription","hidden"],"sources":["src/components/nv-fieldtime/styles/nv-fieldtime.scss?tag=nv-fieldtime","src/components/nv-fieldtime/nv-fieldtime.tsx"],"sourcesContent":["@use './mixins' as *;\n@import '../../../styles/form-field';\n\nnv-fieldtime {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[success]:not([success='false']) {\n @include form-field-success-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include apply-popover-style;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n @include flex-container(flex-start);\n position: relative;\n width: 100%;\n min-height: 40px;\n gap: 0;\n padding-left: var(--form-field-padding-x);\n\n input.time-input {\n @include form-field-input();\n @include apply-input-styles();\n }\n\n span {\n width: 100%;\n text-align: center;\n min-width: 24px;\n flex: 0 0 24px;\n padding: 0 4px;\n color: var(--components-form-field-content-text);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n margin-left: auto;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n @include icon-position(50px);\n }\n\n &:focus,\n &:focus-within {\n @include apply-focus-styles;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n\n .time-dropdown {\n width: 100%;\n\n .time-columns {\n @include flex-container;\n\n .time-column {\n flex: 1;\n text-align: center;\n @include scrollable(200px);\n scrollbar-gutter: auto; // Prevents scrollbar from shifting content\n\n &:last-child {\n border-right: none;\n }\n\n .time-option {\n padding: var(--calendar-padding);\n text-align: center;\n cursor: pointer;\n transition: background-color 0.2s;\n //height: 40px;\n border-radius: var(--list-dropdown-item-radius);\n color: var(--components-calendar-cell-text);\n font-size: var(--font-size-sm);\n @include flex-container(center);\n\n &:hover {\n background-color: var(\n --components-calendar-cell-background-hover\n );\n color: var(--components-calendar-cell-text-hover);\n }\n\n @include state-focus(\n var(--components-calendar-cell-background-hover),\n var(--components-calendar-cell-text-hover)\n );\n\n &.selected {\n background-color: var(\n --components-calendar-cell-background-selected\n );\n color: var(--components-calendar-cell-text-selected);\n \n }\n\n &.highlighted {\n background-color: var(\n --components-calendar-cell-background-hover\n );\n color: var(--components-menu-contextual-item-content-hover);\n }\n }\n }\n }\n }\n}\n","/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'styles/nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n // Update `open` based on the popover state\n this.open = event.detail;\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n @Watch('open')\n handleOpenChange(newOpen: boolean) {\n // React to external changes, e.g., highlight current time on open\n if (newOpen) {\n // Re-highlight columns based on current value\n const hourSelector = `.time-column.time-column-${TimeType.Hours} div`;\n this.updateColumnHighlight(hourSelector, this.hours);\n const minutesSelector = `.time-column.time-column-${TimeType.Minutes} div`;\n this.updateColumnHighlight(minutesSelector, this.minutes);\n const secondsSelector = `.time-column.time-column-${TimeType.Seconds} div`;\n this.updateColumnHighlight(secondsSelector, this.seconds);\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected':\n (type === TimeType.Hours && option === this.hours) ||\n (type === TimeType.Minutes && option === this.minutes) ||\n (type === TimeType.Seconds && option === this.seconds),\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n name={'clock'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as o,c as t,h as n,H as e}from"./p-d0a33e64.js";const r="nv-togglebutton{display:inline-flex;justify-content:center;align-items:center}nv-togglebutton:focus-visible,nv-togglebutton:has(:focus-visible){z-index:1}nv-togglebutton[size=xs]{padding:var(--button-xs-padding-y) var(--button-xs-padding-x);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);font-size:var(--button-xs-font-size);padding-top:calc(var(--togglegroup-xs-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-xs-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-xs-button-radius));border-width:0}nv-togglebutton[size=xs] nv-icon>svg{width:var(--spacing-3);height:var(--spacing-3);stroke-width:1.2px}nv-togglebutton[size=sm]{padding:var(--button-sm-padding-y) var(--button-sm-padding-x);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);font-size:var(--button-sm-font-size);padding-top:calc(var(--togglegroup-sm-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-sm-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-sm-button-radius));border-width:0}nv-togglebutton[size=sm] nv-icon>svg{width:var(--spacing-4);height:var(--spacing-4);stroke-width:1.5px}nv-togglebutton[size=md]{padding:var(--button-md-padding-y) var(--button-md-padding-x);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);font-size:var(--button-md-font-size);padding-top:calc(var(--togglegroup-md-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-md-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-md-button-radius));border-width:0}nv-togglebutton[size=md] nv-icon>svg{width:var(--spacing-5);height:var(--spacing-5);stroke-width:1.6px}nv-togglebutton[size=lg]{padding:var(--button-lg-padding-y) var(--button-lg-padding-x);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);font-size:var(--button-lg-font-size);padding-top:calc(var(--togglegroup-lg-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-lg-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-lg-button-radius));border-width:0}nv-togglebutton[size=lg] nv-icon>svg{width:var(--spacing-6);height:var(--spacing-6);stroke-width:1.8px}nv-togglebutton[emphasis=high]{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-togglebutton[emphasis=high]:hover{background:var(--components-button-low-background-hover);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text-hover)}nv-togglebutton[emphasis=high]:active{background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=high]:focus,nv-togglebutton[emphasis=high]:focus-within{outline:none}nv-togglebutton[emphasis=high]:focus-visible,nv-togglebutton[emphasis=high]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=high]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=high][active]:not([active=false]){background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=low]{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-togglebutton[emphasis=low]:hover{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-active);border:1px solid var(--components-button-lower-border-active);color:var(--components-button-lower-text-active)}nv-togglebutton[emphasis=low]:focus,nv-togglebutton[emphasis=low]:focus-within{outline:none}nv-togglebutton[emphasis=low]:focus-visible,nv-togglebutton[emphasis=low]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=low]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=low][active]:not([active=false]),nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}";const a=r;const i=class{constructor(n){o(this,n);this.toggled=t(this,"toggled",7);this.size="md";this.disabled=false;this.active=false;this.emphasis="high";this.handleClick=()=>{if(this.disabled)return;this.toggled.emit({value:this.value,active:this.active})}}render(){return n(e,{key:"cb15a84c7e7cc27a80773613f31b98168eee8475",role:"button",tabindex:"0","aria-pressed":String(this.active),onClick:this.handleClick},n("slot",{key:"32d6b9394088d88c4671fb7809ad6aa85b240fff"}))}};i.style=a;export{i as nv_togglebutton};
2
- //# sourceMappingURL=p-d95ee31e.entry.js.map
1
+ import{r as o,c as t,h as n,H as e}from"./p-3060df80.js";const r="nv-togglebutton{display:inline-flex;justify-content:center;align-items:center}nv-togglebutton:focus-visible,nv-togglebutton:has(:focus-visible){z-index:1}nv-togglebutton[size=xs]{padding:var(--button-xs-padding-y) var(--button-xs-padding-x);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);font-size:var(--button-xs-font-size);padding-top:calc(var(--togglegroup-xs-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-xs-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-xs-button-radius));border-width:0}nv-togglebutton[size=xs] nv-icon>svg{width:var(--spacing-3);height:var(--spacing-3);stroke-width:1.2px}nv-togglebutton[size=sm]{padding:var(--button-sm-padding-y) var(--button-sm-padding-x);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);font-size:var(--button-sm-font-size);padding-top:calc(var(--togglegroup-sm-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-sm-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-sm-button-radius));border-width:0}nv-togglebutton[size=sm] nv-icon>svg{width:var(--spacing-4);height:var(--spacing-4);stroke-width:1.5px}nv-togglebutton[size=md]{padding:var(--button-md-padding-y) var(--button-md-padding-x);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);font-size:var(--button-md-font-size);padding-top:calc(var(--togglegroup-md-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-md-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-md-button-radius));border-width:0}nv-togglebutton[size=md] nv-icon>svg{width:var(--spacing-5);height:var(--spacing-5);stroke-width:1.6px}nv-togglebutton[size=lg]{padding:var(--button-lg-padding-y) var(--button-lg-padding-x);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);font-size:var(--button-lg-font-size);padding-top:calc(var(--togglegroup-lg-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-lg-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-lg-button-radius));border-width:0}nv-togglebutton[size=lg] nv-icon>svg{width:var(--spacing-6);height:var(--spacing-6);stroke-width:1.8px}nv-togglebutton[emphasis=high]{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-togglebutton[emphasis=high]:hover{background:var(--components-button-low-background-hover);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text-hover)}nv-togglebutton[emphasis=high]:active{background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=high]:focus,nv-togglebutton[emphasis=high]:focus-within{outline:none}nv-togglebutton[emphasis=high]:focus-visible,nv-togglebutton[emphasis=high]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=high]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=high][active]:not([active=false]){background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=low]{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-togglebutton[emphasis=low]:hover{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-active);border:1px solid var(--components-button-lower-border-active);color:var(--components-button-lower-text-active)}nv-togglebutton[emphasis=low]:focus,nv-togglebutton[emphasis=low]:focus-within{outline:none}nv-togglebutton[emphasis=low]:focus-visible,nv-togglebutton[emphasis=low]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=low]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=low][active]:not([active=false]),nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}";const a=r;const i=class{constructor(n){o(this,n);this.toggled=t(this,"toggled",7);this.size="md";this.disabled=false;this.active=false;this.emphasis="high";this.handleClick=()=>{if(this.disabled)return;this.toggled.emit({value:this.value,active:this.active})}}render(){return n(e,{key:"c4b698b1fb80f0dcca5d7a77bc20d22db1cbf538",role:"button",tabindex:"0","aria-pressed":String(this.active),onClick:this.handleClick},n("slot",{key:"605385f07f32b989685983cfd1a082525741fba4"}))}};i.style=a;export{i as nv_togglebutton};
2
+ //# sourceMappingURL=p-dfb6b65e.entry.js.map
@@ -0,0 +1,2 @@
1
+ import{r as e,c as n,h as t,H as i,g as o}from"./p-3060df80.js";const r="nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem *{pointer-events:none}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-menu{display:inline-block;position:relative}nv-menu:has([fluid]:not([fluid=false])){display:block}nv-menu nv-popover{display:unset}nv-menu nv-popover [data-scope=popover]{background-color:transparent !important;padding:0 !important}nv-menu [slot=content]{padding:var(--menu-contextual-padding-y) var(--menu-contextual-padding-x);border-radius:var(--menu-contextual-radius);gap:var(--menu-contextual-gap-y);background-color:var(--components-menu-contextual-background);border-color:var(--components-menu-contextual-border);display:flex;flex-direction:column}nv-menu nv-menu[open]:not([open=false])>nv-menuitem{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menu hr{display:block;margin:var(--menu-contextual-divider-padding-top) var(--menu-contextual-divider-padding-x) var(--menu-contextual-divider-padding-bottom) var(--menu-contextual-divider-padding-x)}";const a=r;const s=class{constructor(i){e(this,i);this.menuitemSelected=n(this,"menuitemSelected",7);this.isHandlingKeyDown=false;this.open=false;this.nested=false;this.disableCloseOnSelect=false;this.placement="bottom-end";this.renderMenuItems=()=>this.items.map((e=>{var n;if(e.hasSubmenu&&((n=e.submenuItems)===null||n===void 0?void 0:n.length)>0){return t("nv-menu",{nested:true,placement:"right-start",items:e.submenuItems},t("nv-menuitem",{slot:"trigger",hasSubmenu:true,disabled:e.disabled,icon:e.icon,shortcut:e.shortcut,id:e.value,name:e.label,label:e.label}))}return t("nv-menuitem",{disabled:e.disabled,icon:e.icon,shortcut:e.shortcut,id:e.value,name:e.label,label:e.label})}))}async show(){this.open=true}async close(){this.open=false}focusFirstItem(){const e=this.popoverElement.querySelector("nv-menuitem");if(e){requestAnimationFrame((()=>e.focus()))}}handleOpenChange(e){if(e){this.focusFirstItem()}}handleMenuItemSelect(e){if(this.disableCloseOnSelect)return;if(e.detail.hasSubmenu)return;this.open=false}handleKeydown(e){if(!this.open){if((e.key==="Enter"||e.key==="ArrowDown"||e.key===" ")&&document.activeElement===this.triggerElement){e.preventDefault();this.show();const n=this.popoverElement.querySelector("nv-menuitem");if(n){requestAnimationFrame((()=>n.focus()))}}return}if(this.isHandlingKeyDown)return;this.isHandlingKeyDown=true;if(e.key==="ArrowDown"||e.key==="ArrowUp"||e.key==="ArrowLeft"||e.key==="ArrowRight"||e.key==="Escape"){e.preventDefault()}if(e.key==="Escape"&&!this.nested){this.close();this.triggerElement.focus();this.isHandlingKeyDown=false;return}const n=this.el.querySelector('[slot="content"]');const t=Array.from(n.childNodes).filter((e=>{var n;return(n=e.matches)===null||n===void 0?void 0:n.call(e,"nv-menuitem, nv-menu")}));let i=t.indexOf(document.activeElement);if(i===-1)i=t.indexOf(document.activeElement.parentElement);if(i===-1&&t.find((e=>e.matches("nv-menu[open]")))){this.isHandlingKeyDown=false;return}if(e.key==="ArrowDown"||e.key==="ArrowUp"){t.forEach((e=>{if(e.matches("nv-menu"))e.close()}))}if(e.key==="ArrowDown"){let e=(i+1)%t.length;while(t[e].matches("nv-menuitem[disabled]")){e=(e+1)%t.length}const n=t[e];if(n.matches("nv-menuitem")){n.focus()}else if(n.matches("nv-menu")){n.querySelector("nv-menuitem").focus()}}if(e.key==="ArrowUp"){let e=(i-1+t.length)%t.length;while(t[e].matches("nv-menuitem[disabled]")){e=(e-1+t.length)%t.length}const n=t[e];if(n.matches("nv-menuitem")){n.focus()}else if(n.matches("nv-menu")){n.querySelector("nv-menuitem").focus()}}if(e.key==="ArrowRight"){const e=t[i];if(!e.matches("nv-menu")){this.isHandlingKeyDown=false;return}e.show()}if(e.key==="ArrowLeft"&&this.nested){if(t.find((e=>e.matches("nv-menu[open]")))){this.isHandlingKeyDown=false;return}this.close();this.triggerElement.focus()}this.isHandlingKeyDown=false}handleOpenChanged(e){e.stopPropagation();if(e.target===this.el.querySelector("nv-popover")){this.open=e.detail}const n=this.triggerElement===document.activeElement;const t=this.triggerElement.matches(":focus-visible");if(n&&t)this.focusFirstItem()}componentWillLoad(){this.triggerElement=Array.from(this.el.children).find((e=>e.getAttribute("slot")==="trigger"))}render(){return t(i,{key:"9c580e2085804dead07f60f3ce4494bed123a58e"},t("slot",{key:"87740cf4b003379eb7a4d011b2b80640e9d7c24f",name:"trigger"}),t("nv-popover",{key:"102ebedefdc1b6ac5f10900a82c904b12e4cddb1",ref:e=>this.popoverElement=e,triggerMode:"click",triggerElement:this.triggerElement,placement:this.placement,nested:this.nested,open:this.open},this.items?t("ul",{slot:"content"},this.renderMenuItems()):t("slot",{name:"content"})))}get el(){return o(this)}static get watchers(){return{open:["handleOpenChange"]}}};s.style=a;export{s as nv_menu};
2
+ //# sourceMappingURL=p-f30e0be6.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nvMenuCss","NvMenuStyle0","NvMenu","constructor","hostRef","this","isHandlingKeyDown","open","nested","disableCloseOnSelect","placement","renderMenuItems","items","map","item","hasSubmenu","_a","submenuItems","length","h","slot","disabled","icon","shortcut","id","value","name","label","show","close","focusFirstItem","firstButton","popoverElement","querySelector","requestAnimationFrame","focus","handleOpenChange","newOpen","handleMenuItemSelect","event","detail","handleKeydown","key","document","activeElement","triggerElement","preventDefault","firstMenuItem","menuContent","el","menuItems","Array","from","childNodes","filter","matches","call","currentIndex","indexOf","parentElement","find","forEach","nextIndex","nextFocusable","prevIndex","prevFocusable","submenu","handleOpenChanged","stopPropagation","target","triggerHasFocus","triggerHasFocusVisible","componentWillLoad","children","child","getAttribute","render","Host","ref","triggerMode"],"sources":["src/components/nv-menu/nv-menu.scss?tag=nv-menu","src/components/nv-menu/nv-menu.tsx"],"sourcesContent":["@use \"../nv-menuitem/nv-menuitem\" as nv-menuitem;\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n\n &:has([fluid]:not([fluid=\"false\"])) {\n display: block;\n }\n}\n\n@mixin content-styles() {\n padding: var(--menu-contextual-padding-y)\n var(--menu-contextual-padding-x);\n border-radius: var(--menu-contextual-radius);\n gap: var(--menu-contextual-gap-y);\n background-color: var(--components-menu-contextual-background);\n border-color: var(--components-menu-contextual-border);\n display: flex;\n flex-direction: column;\n}\n\n@mixin separator-styles() {\n display: block;\n margin: var(--menu-contextual-divider-padding-top)\n var(--menu-contextual-divider-padding-x)\n var(--menu-contextual-divider-padding-bottom)\n var(--menu-contextual-divider-padding-x) ;\n}\n\nnv-menu {\n @include root-styles();\n\n nv-popover {\n display: unset;\n\n [data-scope=popover]{\n background-color: transparent !important;\n padding: 0 !important;\n }\n }\n\n [slot=\"content\"] {\n @include content-styles();\n }\n\n nv-menu[open]:not([open=\"false\"]) {\n > nv-menuitem {\n @include nv-menuitem.focused-styles();\n }\n }\n\n hr {\n @include separator-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Listen,\n Event,\n EventEmitter,\n Method,\n Watch,\n} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot trigger - The button element that toggles the menu popover\n * @slot content - The content of the menu, should be wrapped in a ul element containing nv-menuitem elements\n */\n@Component({\n tag: 'nv-menu',\n styleUrl: 'nv-menu.scss',\n shadow: false,\n})\nexport class NvMenu {\n @Element() el: HTMLNvMenuElement;\n private triggerElement!: HTMLElement;\n private popoverElement!: HTMLNvPopoverElement;\n private isHandlingKeyDown: boolean = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Use this to toggle the initial visibility of the menu, by default the menu\n * is hidden.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * Use this if the menu is nested inside another menu. This will prevent the\n * parent menu from closing when the child menu is opened.\n */\n @Prop({ reflect: true })\n readonly nested: boolean = false;\n\n /**\n * Use this to disable the menu from closing automatically when a menu item is\n * selected.\n */\n @Prop({ reflect: true })\n readonly disableCloseOnSelect: boolean = false;\n\n /**\n * Decides where the menu shows up next to the button it's linked to (above,\n * below, to the sides). If there isn't enough room, it will adjust its\n * position on the axis to fit on the screen, so users can always see it.\n */\n @Prop({ reflect: true })\n readonly placement: Placement = 'bottom-end';\n\n /**\n * List of items used to automatically generate dropdown items. This\n * provides an alternative to using the slot manually.\n *\n * @example\n * items = [{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\",\n * }]\n */\n @Prop({ reflect: true })\n readonly items?: {\n /**\n * The label of the menu item.\n */\n label: string;\n /**\n * The value of the menu item.\n */\n value?: string;\n /**\n * Whether the menu item is disabled.\n */\n disabled?: boolean;\n /**\n * Whether the menu item has a submenu.\n */\n hasSubmenu?: boolean;\n /**\n * The icon of the menu item.\n */\n icon?: string;\n /**\n * The shortcut of the menu item.\n */\n shortcut?: string;\n /**\n * Whether the menu item is nested.\n */\n nested?: boolean;\n /**\n * The submenu items of the menu item.\n */\n submenuItems?: InstanceType<typeof NvMenu>['items'];\n }[];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens the menu.\n */\n @Method()\n async show() {\n this.open = true;\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close() {\n this.open = false;\n }\n\n private focusFirstItem() {\n const firstButton = this.popoverElement.querySelector('nv-menuitem');\n if (firstButton) {\n requestAnimationFrame(() => firstButton.focus());\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted from nv-menuitem elements with the corresponding id and name when\n * selected (via click or keyboard). This event listener can be attached to\n * either the nv-menu or the nv-menuitem element.\n */\n @Event()\n menuitemSelected: EventEmitter<\n HTMLNvMenuitemElementEventMap['menuitemSelected']\n >;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('open')\n handleOpenChange(newOpen: boolean) {\n // React to external changes, e.g., focus first item if opened externally\n if (newOpen) {\n this.focusFirstItem();\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('menuitemSelected')\n handleMenuItemSelect(\n event: CustomEvent<HTMLNvMenuitemElementEventMap['menuitemSelected']>,\n ) {\n if (this.disableCloseOnSelect) return;\n if (event.detail.hasSubmenu) return;\n this.open = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n // If the menu is not open, check if the trigger is focused\n // and the user presses Enter or ArrowDown, open the menu\n if (!this.open) {\n if (\n (event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === ' ') &&\n document.activeElement === this.triggerElement\n ) {\n event.preventDefault();\n this.show();\n // Then, put the focus on the first menuitem\n const firstMenuItem = this.popoverElement.querySelector('nv-menuitem');\n if (firstMenuItem) {\n requestAnimationFrame(() => (firstMenuItem as HTMLElement).focus());\n }\n }\n return;\n }\n\n if (this.isHandlingKeyDown) return;\n this.isHandlingKeyDown = true;\n\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'Escape'\n ) {\n event.preventDefault();\n }\n\n if (event.key === 'Escape' && !this.nested) {\n this.close();\n this.triggerElement.focus();\n this.isHandlingKeyDown = false;\n return;\n }\n\n const menuContent = this.el.querySelector('[slot=\"content\"]');\n const menuItems = (\n Array.from(menuContent.childNodes) as Array<\n HTMLNvMenuitemElement | HTMLNvMenuElement\n >\n ).filter(item => item.matches?.('nv-menuitem, nv-menu'));\n\n let currentIndex = menuItems.indexOf(\n document.activeElement as HTMLNvMenuitemElement,\n );\n if (currentIndex === -1)\n currentIndex = menuItems.indexOf(\n document.activeElement.parentElement as HTMLNvMenuitemElement,\n );\n if (\n currentIndex === -1 &&\n menuItems.find(item => item.matches('nv-menu[open]'))\n ) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n menuItems.forEach(item => {\n if (item.matches('nv-menu')) (item as HTMLNvMenuElement).close();\n });\n }\n\n if (event.key === 'ArrowDown') {\n let nextIndex = (currentIndex + 1) % menuItems.length;\n while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {\n nextIndex = (nextIndex + 1) % menuItems.length;\n }\n const nextFocusable = menuItems[nextIndex];\n if (nextFocusable.matches('nv-menuitem')) {\n nextFocusable.focus();\n } else if (nextFocusable.matches('nv-menu')) {\n nextFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowUp') {\n let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;\n while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {\n prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;\n }\n const prevFocusable = menuItems[prevIndex];\n if (prevFocusable.matches('nv-menuitem')) {\n prevFocusable.focus();\n } else if (prevFocusable.matches('nv-menu')) {\n prevFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowRight') {\n const submenu = menuItems[currentIndex];\n if (!submenu.matches('nv-menu')) {\n this.isHandlingKeyDown = false;\n return;\n }\n (submenu as HTMLNvMenuElement).show();\n }\n\n if (event.key === 'ArrowLeft' && this.nested) {\n if (menuItems.find(item => item.matches('nv-menu[open]'))) {\n this.isHandlingKeyDown = false;\n return;\n }\n this.close();\n this.triggerElement.focus();\n }\n\n this.isHandlingKeyDown = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.triggerElement = Array.from(this.el.children).find(child => {\n return child.getAttribute('slot') === 'trigger';\n }) as HTMLElement;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Generates menu items from the `items` property.\n * @param {MenuItem[]} items - The items to display in the menu.\n * @returns {HTMLElement[]} The rendered items.\n */\n private renderMenuItems = () => {\n return this.items.map(item => {\n if (item.hasSubmenu && item.submenuItems?.length > 0) {\n return (\n <nv-menu nested placement=\"right-start\" items={item.submenuItems}>\n <nv-menuitem\n slot=\"trigger\"\n hasSubmenu\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n </nv-menu>\n );\n }\n return (\n <nv-menuitem\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n );\n });\n };\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"click\"\n triggerElement={this.triggerElement}\n placement={this.placement}\n nested={this.nested}\n open={this.open}\n >\n {this.items ? (\n <ul slot=\"content\">{this.renderMenuItems()}</ul>\n ) : (\n <slot name=\"content\"></slot>\n )}\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as a,F as s,H as e,g as o}from"./p-3060df80.js";import{b as n}from"./p-51602221.js";const l="nv-dialogfooter{display:flex;padding:var(--dialog-footer-padding-top) var(--dialog-footer-padding-x) var(--dialog-footer-padding-bottom) var(--dialog-footer-padding-x);justify-content:flex-end;align-items:flex-end;gap:var(--dialog-footer-gap-y);align-self:stretch}";const r=l;const h=class{constructor(a){t(this,a);this.dialogCanceled=i(this,"dialogCanceled",7);this.dialogPrimaryClicked=i(this,"dialogPrimaryClicked",7);if(a.$hostElement$["s-ei"]){this.internals=a.$hostElement$["s-ei"]}else{this.internals=a.$hostElement$.attachInternals();a.$hostElement$["s-ei"]=this.internals}this.hasSlot=false;this.disabled=false;this.undismissable=false;this.leadingIcon="";this.trailingIcon="";this.danger=false;this.cancelLabel="Cancel";this.primaryLabel="Primary";this.handlePrimary=t=>{t.stopPropagation();this.dialogPrimaryClicked.emit()};this.handleCancel=t=>{t.stopPropagation();this.dialogCanceled.emit()}}componentWillLoad(){this.hasSlot=Array.from(this.el.childNodes).some((t=>t.nodeType===Node.ELEMENT_NODE&&!t.hasAttribute("slot")))}componentDidLoad(){this.primaryButtonType=this.primaryButtonType||this.form?n.Submit:n.Button}render(){return a(e,{key:"0868c3af73f89219eee7c006b4ddca47c6da29b0"},!this.hasSlot?a(s,null,!this.undismissable&&a("nv-button",{onClick:this.handleCancel,emphasis:"low",size:"sm"},this.cancelLabel),a("nv-button",{onClick:this.handlePrimary,disabled:this.disabled,danger:this.danger,size:"sm",emphasis:"high",form:this.form,type:this.primaryButtonType},this.leadingIcon&&a("nv-icon",{slot:"leading-icon",name:this.leadingIcon,size:"sm"}),this.primaryLabel,this.trailingIcon&&a("nv-icon",{slot:"trailing-icon",name:this.trailingIcon,size:"sm"}))):a("slot",null))}static get formAssociated(){return true}get el(){return o(this)}};h.style=r;const d="nv-dialogheader{padding:var(--dialog-header-padding-top) var(--dialog-header-padding-x) var(--dialog-header-padding-bottom) var(--dialog-header-padding-x);justify-content:space-between;align-items:flex-start;align-self:stretch}nv-dialogheader .heading{color:var(--color-content-high-text);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--font-size-lg);font-style:normal;font-weight:var(--font-weight-medium-emphasis);padding-right:var(--spacing-7);line-height:var(--leading-px-6);letter-spacing:var(--letter-spacing-heading-xs)}nv-dialogheader .subheading{color:var(--color-content-low-text);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--font-size-sm);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--line-height-sm);}";const g=d;const f=class{constructor(i){t(this,i);this.hasSlot=false;this.heading="Dialog Title"}componentWillLoad(){this.hasSlot=Array.from(this.el.childNodes).some((t=>t.nodeType===Node.ELEMENT_NODE&&!t.hasAttribute("slot")))}render(){return a(e,{key:"f91a9aea8aa7116266f52bb356ef2ec493df6354"},!this.hasSlot?a(s,null,a("div",{class:"heading"},this.heading),a("div",{class:"subheading"},this.subheading)):a("slot",null))}get el(){return o(this)}};f.style=g;export{h as nv_dialogfooter,f as nv_dialogheader};
2
+ //# sourceMappingURL=p-f3c73492.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["nvDialogfooterCss","NvDialogfooterStyle0","NvDialogfooter","constructor","hostRef","this","hasSlot","disabled","undismissable","leadingIcon","trailingIcon","danger","cancelLabel","primaryLabel","handlePrimary","event","stopPropagation","dialogPrimaryClicked","emit","handleCancel","dialogCanceled","componentWillLoad","Array","from","el","childNodes","some","node","nodeType","Node","ELEMENT_NODE","hasAttribute","componentDidLoad","primaryButtonType","form","ButtonType","Submit","Button","render","h","Host","key","Fragment","onClick","emphasis","size","type","slot","name","nvDialogheaderCss","NvDialogheaderStyle0","NvDialogheader","heading","class","subheading"],"sources":["src/components/nv-dialogfooter/nv-dialogfooter.scss?tag=nv-dialogfooter","src/components/nv-dialogfooter/nv-dialogfooter.tsx","src/components/nv-dialogheader/nv-dialogheader.scss?tag=nv-dialogheader","src/components/nv-dialogheader/nv-dialogheader.tsx"],"sourcesContent":["nv-dialogfooter {\n display: flex;\n padding: var(--dialog-footer-padding-top) var(--dialog-footer-padding-x)\n var(--dialog-footer-padding-bottom) var(--dialog-footer-padding-x);\n\n justify-content: flex-end;\n align-items: flex-end;\n gap: var(--dialog-footer-gap-y);\n align-self: stretch;\n}\n","import {\n AttachInternals,\n Component,\n h,\n Host,\n Prop,\n Event,\n EventEmitter,\n Fragment,\n Element,\n} from '@stencil/core';\nimport { ButtonType } from '../../utils/constants';\n\n/**\n * @slot default - Custom content for the dialog footer. When provided, the default buttons will not be rendered.\n */\n@Component({\n tag: 'nv-dialogfooter',\n styleUrl: 'nv-dialogfooter.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvDialogfooter {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvDialogfooterElement;\n private hasSlot = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Disables the primary button, preventing user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Controls the visibility of the cancel button. When true, the cancel button is\n * hidden.\n */\n @Prop({ reflect: true })\n readonly undismissable: boolean = false;\n\n /**\n * Sets the leading icon for the primary button.\n */\n @Prop({ reflect: true })\n readonly leadingIcon: string = '';\n\n /**\n * Sets the trailing icon for the primary button.\n */\n @Prop({ reflect: true })\n readonly trailingIcon: string = '';\n\n /**\n * Sets the danger state for the primary button.\n */\n @Prop({ reflect: true })\n readonly danger: boolean = false;\n\n /**\n * Sets the label for the cancel button.\n */\n @Prop({ reflect: true })\n readonly cancelLabel: string = 'Cancel';\n\n /**\n * Sets the label for the primary button.\n */\n @Prop({ reflect: true })\n readonly primaryLabel: string = 'Primary';\n\n /**\n * Sets the type of the primary button. If using a form, this will default to\n * 'submit' if nothing passed.\n */\n @Prop({ reflect: true, mutable: true })\n primaryButtonType: `${ButtonType}`;\n\n /**\n * A form inside the dialog can be submitted through the dialog footer by\n * giving the form an id and passing that id to the form attribute.\n */\n @Prop({ reflect: true })\n readonly form: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the cancel button is clicked. This will close the dialog.\n */\n @Event()\n dialogCanceled: EventEmitter<void>;\n\n /**\n * Emitted when the primary button is clicked. This allows to handle the\n * primary action and potential data capture before closing the dialog.\n */\n @Event()\n dialogPrimaryClicked: EventEmitter<void>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles the primary action when the primary button is clicked.\n * @param {Event} event - The click event.\n */\n\n private handlePrimary = (event: Event) => {\n event.stopPropagation();\n this.dialogPrimaryClicked.emit();\n };\n\n /**\n * Handles the cancel action when the cancel button is clicked. This will close the dialog.\n * @param {Event} event - The click event.\n */\n private handleCancel = (event: Event) => {\n event.stopPropagation();\n this.dialogCanceled.emit();\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n // Check if there are any child elements that don't have a slot attribute\n this.hasSlot = Array.from(this.el.childNodes).some(node => {\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute('slot')\n );\n });\n }\n\n componentDidLoad() {\n // Set the default button type based on the form property\n this.primaryButtonType =\n this.primaryButtonType || this.form\n ? ButtonType.Submit\n : ButtonType.Button;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {!this.hasSlot ? (\n <Fragment>\n {!this.undismissable && (\n <nv-button onClick={this.handleCancel} emphasis=\"low\" size=\"sm\">\n {this.cancelLabel}\n </nv-button>\n )}\n <nv-button\n onClick={this.handlePrimary}\n disabled={this.disabled}\n danger={this.danger}\n size=\"sm\"\n emphasis=\"high\"\n form={this.form}\n type={this.primaryButtonType}\n >\n {this.leadingIcon && (\n <nv-icon\n slot=\"leading-icon\"\n name={this.leadingIcon}\n size=\"sm\"\n />\n )}\n {this.primaryLabel}\n {this.trailingIcon && (\n <nv-icon\n slot=\"trailing-icon\"\n name={this.trailingIcon}\n size=\"sm\"\n />\n )}\n </nv-button>\n </Fragment>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n","nv-dialogheader {\n // calc(var(--dialog-header-padding-x, 24px) + var(--dialog-dismissible-position-right, 12px) + var(--button-sm-icon-size, 16px) + var(--button-sm-icon-button-padding, 8px))\n padding: var(--dialog-header-padding-top)\n var(--dialog-header-padding-x)\n var(--dialog-header-padding-bottom)\n var(--dialog-header-padding-x);\n justify-content: space-between;\n align-items: flex-start;\n align-self: stretch;\n\n .heading {\n color: var(--color-content-high-text);\n\n\n /* heading/xs/medium */\n font-family: 'TT Norms Pro', sans-serif;\n font-size: var(--font-size-lg);\n font-style: normal;\n font-weight: 500;\n padding-right: var(--spacing-7);\n line-height: var(--leading-px-6); /* 133.333% */\n letter-spacing: var(--letter-spacing-heading-xs);\n }\n\n .subheading {\n color: var(--color-content-low-text);\n\n\n /* text/sm/regular */\n font-family: 'TT Norms Pro', sans-serif;\n font-size: var(--font-size-sm);\n font-style: normal;\n font-weight: 400;\n line-height: var(--line-height-sm); /* 142.857% */\n }\n}\n","import { Component, Host, Prop, h, Element, Fragment } from '@stencil/core';\n\n/**\n * @slot default - Custom content for the dialog header. When provided, the default header will not be rendered.\n */\n@Component({\n tag: 'nv-dialogheader',\n styleUrl: 'nv-dialogheader.scss',\n shadow: false,\n})\nexport class NvDialogheader {\n @Element() el: HTMLNvDialogheaderElement;\n private hasSlot = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the heading text for the dialog.\n */\n @Prop({ reflect: true })\n readonly heading: string = 'Dialog Title';\n\n /**\n * Sets the subheading text for the dialog.\n */\n @Prop({ reflect: true })\n readonly subheading: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n // Check if there are any child elements that don't have a slot attribute\n this.hasSlot = Array.from(this.el.childNodes).some(node => {\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute('slot')\n );\n });\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {!this.hasSlot ? (\n <Fragment>\n <div class=\"heading\">{this.heading}</div>\n <div class=\"subheading\">{this.subheading}</div>\n </Fragment>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"2GAAA,MAAMA,EAAoB,2QAC1B,MAAAC,EAAeD,E,MCqBFE,EAAc,MAN3B,WAAAC,CAAAC,G,oRASUC,KAAAC,QAAU,MASTD,KAAAE,SAAoB,MAOpBF,KAAAG,cAAyB,MAMzBH,KAAAI,YAAsB,GAMtBJ,KAAAK,aAAuB,GAMvBL,KAAAM,OAAkB,MAMlBN,KAAAO,YAAsB,SAMtBP,KAAAQ,aAAuB,UA0CxBR,KAAAS,cAAiBC,IACvBA,EAAMC,kBACNX,KAAKY,qBAAqBC,MAAM,EAO1Bb,KAAAc,aAAgBJ,IACtBA,EAAMC,kBACNX,KAAKe,eAAeF,MAAM,C,CAO5B,iBAAAG,GAEEhB,KAAKC,QAAUgB,MAAMC,KAAKlB,KAAKmB,GAAGC,YAAYC,MAAKC,GAE/CA,EAAKC,WAAaC,KAAKC,eACrBH,EAAiBI,aAAa,S,CAKtC,gBAAAC,GAEE3B,KAAK4B,kBACH5B,KAAK4B,mBAAqB5B,KAAK6B,KAC3BC,EAAWC,OACXD,EAAWE,M,CAOnB,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,6CACDpC,KAAKC,QACLiC,EAACG,EAAQ,MACLrC,KAAKG,eACL+B,EAAA,aAAWI,QAAStC,KAAKc,aAAcyB,SAAS,MAAMC,KAAK,MACxDxC,KAAKO,aAGV2B,EAAA,aACEI,QAAStC,KAAKS,cACdP,SAAUF,KAAKE,SACfI,OAAQN,KAAKM,OACbkC,KAAK,KACLD,SAAS,OACTV,KAAM7B,KAAK6B,KACXY,KAAMzC,KAAK4B,mBAEV5B,KAAKI,aACJ8B,EAAA,WACEQ,KAAK,eACLC,KAAM3C,KAAKI,YACXoC,KAAK,OAGRxC,KAAKQ,aACLR,KAAKK,cACJ6B,EAAA,WACEQ,KAAK,gBACLC,KAAM3C,KAAKK,aACXmC,KAAK,SAMbN,EAAA,a,6EC9LV,MAAMU,EAAoB,osBAC1B,MAAAC,EAAeD,E,MCSFE,EAAc,MAL3B,WAAAhD,CAAAC,G,UAOUC,KAAAC,QAAU,MASTD,KAAA+C,QAAkB,c,CAY3B,iBAAA/B,GAEEhB,KAAKC,QAAUgB,MAAMC,KAAKlB,KAAKmB,GAAGC,YAAYC,MAAKC,GAE/CA,EAAKC,WAAaC,KAAKC,eACrBH,EAAiBI,aAAa,S,CAStC,MAAAO,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,6CACDpC,KAAKC,QACLiC,EAACG,EAAQ,KACPH,EAAA,OAAKc,MAAM,WAAWhD,KAAK+C,SAC3Bb,EAAA,OAAKc,MAAM,cAAchD,KAAKiD,aAGhCf,EAAA,a","ignoreList":[]}
1
+ {"version":3,"names":["nvDialogfooterCss","NvDialogfooterStyle0","NvDialogfooter","constructor","hostRef","this","hasSlot","disabled","undismissable","leadingIcon","trailingIcon","danger","cancelLabel","primaryLabel","handlePrimary","event","stopPropagation","dialogPrimaryClicked","emit","handleCancel","dialogCanceled","componentWillLoad","Array","from","el","childNodes","some","node","nodeType","Node","ELEMENT_NODE","hasAttribute","componentDidLoad","primaryButtonType","form","ButtonType","Submit","Button","render","h","Host","key","Fragment","onClick","emphasis","size","type","slot","name","nvDialogheaderCss","NvDialogheaderStyle0","NvDialogheader","heading","class","subheading"],"sources":["src/components/nv-dialogfooter/nv-dialogfooter.scss?tag=nv-dialogfooter","src/components/nv-dialogfooter/nv-dialogfooter.tsx","src/components/nv-dialogheader/nv-dialogheader.scss?tag=nv-dialogheader","src/components/nv-dialogheader/nv-dialogheader.tsx"],"sourcesContent":["nv-dialogfooter {\n display: flex;\n padding: var(--dialog-footer-padding-top) var(--dialog-footer-padding-x)\n var(--dialog-footer-padding-bottom) var(--dialog-footer-padding-x);\n\n justify-content: flex-end;\n align-items: flex-end;\n gap: var(--dialog-footer-gap-y);\n align-self: stretch;\n}\n","import {\n AttachInternals,\n Component,\n h,\n Host,\n Prop,\n Event,\n EventEmitter,\n Fragment,\n Element,\n} from '@stencil/core';\nimport { ButtonType } from '../../utils/constants';\n\n/**\n * @slot default - Custom content for the dialog footer. When provided, the default buttons will not be rendered.\n */\n@Component({\n tag: 'nv-dialogfooter',\n styleUrl: 'nv-dialogfooter.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvDialogfooter {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvDialogfooterElement;\n private hasSlot = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Disables the primary button, preventing user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Controls the visibility of the cancel button. When true, the cancel button is\n * hidden.\n */\n @Prop({ reflect: true })\n readonly undismissable: boolean = false;\n\n /**\n * Sets the leading icon for the primary button.\n */\n @Prop({ reflect: true })\n readonly leadingIcon: string = '';\n\n /**\n * Sets the trailing icon for the primary button.\n */\n @Prop({ reflect: true })\n readonly trailingIcon: string = '';\n\n /**\n * Sets the danger state for the primary button.\n */\n @Prop({ reflect: true })\n readonly danger: boolean = false;\n\n /**\n * Sets the label for the cancel button.\n */\n @Prop({ reflect: true })\n readonly cancelLabel: string = 'Cancel';\n\n /**\n * Sets the label for the primary button.\n */\n @Prop({ reflect: true })\n readonly primaryLabel: string = 'Primary';\n\n /**\n * Sets the type of the primary button. If using a form, this will default to\n * 'submit' if nothing passed.\n */\n @Prop({ reflect: true, mutable: true })\n primaryButtonType: `${ButtonType}`;\n\n /**\n * A form inside the dialog can be submitted through the dialog footer by\n * giving the form an id and passing that id to the form attribute.\n */\n @Prop({ reflect: true })\n readonly form: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the cancel button is clicked. This will close the dialog.\n */\n @Event()\n dialogCanceled: EventEmitter<void>;\n\n /**\n * Emitted when the primary button is clicked. This allows to handle the\n * primary action and potential data capture before closing the dialog.\n */\n @Event()\n dialogPrimaryClicked: EventEmitter<void>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles the primary action when the primary button is clicked.\n * @param {Event} event - The click event.\n */\n\n private handlePrimary = (event: Event) => {\n event.stopPropagation();\n this.dialogPrimaryClicked.emit();\n };\n\n /**\n * Handles the cancel action when the cancel button is clicked. This will close the dialog.\n * @param {Event} event - The click event.\n */\n private handleCancel = (event: Event) => {\n event.stopPropagation();\n this.dialogCanceled.emit();\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n // Check if there are any child elements that don't have a slot attribute\n this.hasSlot = Array.from(this.el.childNodes).some(node => {\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute('slot')\n );\n });\n }\n\n componentDidLoad() {\n // Set the default button type based on the form property\n this.primaryButtonType =\n this.primaryButtonType || this.form\n ? ButtonType.Submit\n : ButtonType.Button;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {!this.hasSlot ? (\n <Fragment>\n {!this.undismissable && (\n <nv-button onClick={this.handleCancel} emphasis=\"low\" size=\"sm\">\n {this.cancelLabel}\n </nv-button>\n )}\n <nv-button\n onClick={this.handlePrimary}\n disabled={this.disabled}\n danger={this.danger}\n size=\"sm\"\n emphasis=\"high\"\n form={this.form}\n type={this.primaryButtonType}\n >\n {this.leadingIcon && (\n <nv-icon\n slot=\"leading-icon\"\n name={this.leadingIcon}\n size=\"sm\"\n />\n )}\n {this.primaryLabel}\n {this.trailingIcon && (\n <nv-icon\n slot=\"trailing-icon\"\n name={this.trailingIcon}\n size=\"sm\"\n />\n )}\n </nv-button>\n </Fragment>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n","nv-dialogheader {\n // calc(var(--dialog-header-padding-x, 24px) + var(--dialog-dismissible-position-right, 12px) + var(--button-sm-icon-size, 16px) + var(--button-sm-icon-button-padding, 8px))\n padding: var(--dialog-header-padding-top)\n var(--dialog-header-padding-x)\n var(--dialog-header-padding-bottom)\n var(--dialog-header-padding-x);\n justify-content: space-between;\n align-items: flex-start;\n align-self: stretch;\n\n .heading {\n color: var(--color-content-high-text);\n\n\n /* heading/xs/medium */\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--font-size-lg);\n font-style: normal;\n font-weight: var(--font-weight-medium-emphasis);\n padding-right: var(--spacing-7);\n line-height: var(--leading-px-6); /* 133.333% */\n letter-spacing: var(--letter-spacing-heading-xs);\n }\n\n .subheading {\n color: var(--color-content-low-text);\n\n /* text/sm/regular */\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--font-size-sm);\n font-style: normal;\n font-weight: var(--font-weight-low-emphasis);\n line-height: var(--line-height-sm); /* 142.857% */\n }\n}\n","import { Component, Host, Prop, h, Element, Fragment } from '@stencil/core';\n\n/**\n * @slot default - Custom content for the dialog header. When provided, the default header will not be rendered.\n */\n@Component({\n tag: 'nv-dialogheader',\n styleUrl: 'nv-dialogheader.scss',\n shadow: false,\n})\nexport class NvDialogheader {\n @Element() el: HTMLNvDialogheaderElement;\n private hasSlot = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the heading text for the dialog.\n */\n @Prop({ reflect: true })\n readonly heading: string = 'Dialog Title';\n\n /**\n * Sets the subheading text for the dialog.\n */\n @Prop({ reflect: true })\n readonly subheading: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n // Check if there are any child elements that don't have a slot attribute\n this.hasSlot = Array.from(this.el.childNodes).some(node => {\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute('slot')\n );\n });\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {!this.hasSlot ? (\n <Fragment>\n <div class=\"heading\">{this.heading}</div>\n <div class=\"subheading\">{this.subheading}</div>\n </Fragment>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"2GAAA,MAAMA,EAAoB,2QAC1B,MAAAC,EAAeD,E,MCqBFE,EAAc,MAN3B,WAAAC,CAAAC,G,oRASUC,KAAAC,QAAU,MASTD,KAAAE,SAAoB,MAOpBF,KAAAG,cAAyB,MAMzBH,KAAAI,YAAsB,GAMtBJ,KAAAK,aAAuB,GAMvBL,KAAAM,OAAkB,MAMlBN,KAAAO,YAAsB,SAMtBP,KAAAQ,aAAuB,UA0CxBR,KAAAS,cAAiBC,IACvBA,EAAMC,kBACNX,KAAKY,qBAAqBC,MAAM,EAO1Bb,KAAAc,aAAgBJ,IACtBA,EAAMC,kBACNX,KAAKe,eAAeF,MAAM,C,CAO5B,iBAAAG,GAEEhB,KAAKC,QAAUgB,MAAMC,KAAKlB,KAAKmB,GAAGC,YAAYC,MAAKC,GAE/CA,EAAKC,WAAaC,KAAKC,eACrBH,EAAiBI,aAAa,S,CAKtC,gBAAAC,GAEE3B,KAAK4B,kBACH5B,KAAK4B,mBAAqB5B,KAAK6B,KAC3BC,EAAWC,OACXD,EAAWE,M,CAOnB,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,6CACDpC,KAAKC,QACLiC,EAACG,EAAQ,MACLrC,KAAKG,eACL+B,EAAA,aAAWI,QAAStC,KAAKc,aAAcyB,SAAS,MAAMC,KAAK,MACxDxC,KAAKO,aAGV2B,EAAA,aACEI,QAAStC,KAAKS,cACdP,SAAUF,KAAKE,SACfI,OAAQN,KAAKM,OACbkC,KAAK,KACLD,SAAS,OACTV,KAAM7B,KAAK6B,KACXY,KAAMzC,KAAK4B,mBAEV5B,KAAKI,aACJ8B,EAAA,WACEQ,KAAK,eACLC,KAAM3C,KAAKI,YACXoC,KAAK,OAGRxC,KAAKQ,aACLR,KAAKK,cACJ6B,EAAA,WACEQ,KAAK,gBACLC,KAAM3C,KAAKK,aACXmC,KAAK,SAMbN,EAAA,a,6EC9LV,MAAMU,EAAoB,i1BAC1B,MAAAC,EAAeD,E,MCSFE,EAAc,MAL3B,WAAAhD,CAAAC,G,UAOUC,KAAAC,QAAU,MASTD,KAAA+C,QAAkB,c,CAY3B,iBAAA/B,GAEEhB,KAAKC,QAAUgB,MAAMC,KAAKlB,KAAKmB,GAAGC,YAAYC,MAAKC,GAE/CA,EAAKC,WAAaC,KAAKC,eACrBH,EAAiBI,aAAa,S,CAStC,MAAAO,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,6CACDpC,KAAKC,QACLiC,EAACG,EAAQ,KACPH,EAAA,OAAKc,MAAM,WAAWhD,KAAK+C,SAC3Bb,EAAA,OAAKc,MAAM,cAAchD,KAAKiD,aAGhCf,EAAA,a","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as c,h as l,H as a}from"./p-d0a33e64.js";import{c as t}from"./p-8a1a6e56.js";const i="nv-col{display:block;flex:1 1 0%;padding-left:calc(var(--spacing-4) / 2);padding-right:calc(var(--spacing-4) / 2)}nv-col[class*=w-]{flex:none}nv-col.w-1\\/12{width:calc(100% * 1 / 12)}nv-col.w-2\\/12{width:calc(100% * 2 / 12)}nv-col.w-3\\/12{width:calc(100% * 3 / 12)}nv-col.w-4\\/12{width:calc(100% * 4 / 12)}nv-col.w-5\\/12{width:calc(100% * 5 / 12)}nv-col.w-6\\/12{width:calc(100% * 6 / 12)}nv-col.w-7\\/12{width:calc(100% * 7 / 12)}nv-col.w-8\\/12{width:calc(100% * 8 / 12)}nv-col.w-9\\/12{width:calc(100% * 9 / 12)}nv-col.w-10\\/12{width:calc(100% * 10 / 12)}nv-col.w-11\\/12{width:calc(100% * 11 / 12)}nv-col.w-12\\/12{width:calc(100% * 12 / 12)}";const n=i;const o=class{constructor(l){c(this,l)}getColSize(){if(this.size){if(this.size<1||this.size>12)return;return`w-${this.size}/12`}}render(){return l(a,{key:"4fe90a1d020de9e85d32a52ccb39c8b6d8c1fc25",class:t(this.getColSize())},l("slot",{key:"5a6ad624fd7c6251b2f555c0e3bc828c0e048761"}))}};o.style=n;export{o as nv_col};
2
- //# sourceMappingURL=p-9c5d6827.entry.js.map
1
+ import{r as c,h as l,H as a}from"./p-3060df80.js";import{c as t}from"./p-8a1a6e56.js";const i="nv-col{display:block;flex:1 1 0%;padding-left:calc(var(--spacing-4) / 2);padding-right:calc(var(--spacing-4) / 2)}nv-col[class*=w-]{flex:none}nv-col.w-1\\/12{width:calc(100% * 1 / 12)}nv-col.w-2\\/12{width:calc(100% * 2 / 12)}nv-col.w-3\\/12{width:calc(100% * 3 / 12)}nv-col.w-4\\/12{width:calc(100% * 4 / 12)}nv-col.w-5\\/12{width:calc(100% * 5 / 12)}nv-col.w-6\\/12{width:calc(100% * 6 / 12)}nv-col.w-7\\/12{width:calc(100% * 7 / 12)}nv-col.w-8\\/12{width:calc(100% * 8 / 12)}nv-col.w-9\\/12{width:calc(100% * 9 / 12)}nv-col.w-10\\/12{width:calc(100% * 10 / 12)}nv-col.w-11\\/12{width:calc(100% * 11 / 12)}nv-col.w-12\\/12{width:calc(100% * 12 / 12)}";const n=i;const o=class{constructor(l){c(this,l)}getColSize(){if(this.size){if(this.size<1||this.size>12)return;return`w-${this.size}/12`}}render(){return l(a,{key:"4fe90a1d020de9e85d32a52ccb39c8b6d8c1fc25",class:t(this.getColSize())},l("slot",{key:"5a6ad624fd7c6251b2f555c0e3bc828c0e048761"}))}};o.style=n;export{o as nv_col};
2
+ //# sourceMappingURL=p-fa78d8eb.entry.js.map
@@ -3,9 +3,20 @@ export type SlideOptions = {
3
3
  duration?: number;
4
4
  };
5
5
  declare const useSlide: (node: HTMLElement, { duration }?: SlideOptions) => {
6
- slideIn: () => Promise<void>;
7
- slideOut: () => Promise<void>;
8
- setSlideOut: () => void;
9
- setSlideIn: () => void;
6
+ slideX: (options?: {
7
+ /** The starting percentage for the translateX property. */
8
+ from: number;
9
+ /** The ending percentage for the translateX property. */
10
+ to: number;
11
+ }) => () => Promise<void>;
12
+ slideY: (options?: {
13
+ /** The starting percentage for the translateY property. */
14
+ from: number;
15
+ /** The ending percentage for the translateY property. */
16
+ to: number;
17
+ }) => () => Promise<void>;
18
+ setSlideX: (amount?: number) => import("stylefire").Styler;
19
+ setSlideY: (amount?: number) => import("stylefire").Styler;
20
+ setSlideReset: () => void;
10
21
  };
11
22
  export { useSlide };
@@ -38,11 +38,9 @@ export declare class NvAccordion {
38
38
  /****************************************************************************/
39
39
  /**
40
40
  * Event emitted when an item's open state changes
41
+ * @bind openIndexes
41
42
  */
42
- openChanged: EventEmitter<{
43
- /** Index of open items */
44
- openIndexes: number[];
45
- }>;
43
+ openIndexesChanged: EventEmitter<number[]>;
46
44
  /****************************************************************************/
47
45
  /**
48
46
  * Opens an item by its index (Public API)
@@ -4,7 +4,7 @@ import { EventEmitter } from '../../stencil-public-runtime';
4
4
  * @slot default - for custom content, for pure text use label instead.
5
5
  */
6
6
  export declare class NvBadge {
7
- ref: HTMLNvBadgeElement;
7
+ el: HTMLNvBadgeElement;
8
8
  /****************************************************************************/
9
9
  /**
10
10
  * Whether the badge is dismissible.
@@ -10,6 +10,7 @@ export declare class NvDialog {
10
10
  private dialogElement;
11
11
  private eventsAttached;
12
12
  private form;
13
+ private triggerClickEvents;
13
14
  /****************************************************************************/
14
15
  /**
15
16
  * @internal
@@ -89,16 +90,20 @@ export declare class NvDialog {
89
90
  * Checks for and sets up form ID if a form is present
90
91
  */
91
92
  private checkForForm;
93
+ /**
94
+ * Handles the native dialog close event.
95
+ */
96
+ private handleDialogClose;
97
+ private handleClickOutside;
92
98
  /****************************************************************************/
93
99
  /**
94
100
  * Emitted when the dialog is closing in order to allow for cleanup, data-capture, etc.
95
101
  * @bind open
96
102
  */
97
103
  openChanged: EventEmitter<boolean>;
98
- /**
99
- * Handles the native dialog close event.
100
- */
101
- private handleDialogClose;
104
+ /****************************************************************************/
105
+ handleDialogOpenChange(isOpen: boolean): Promise<void>;
106
+ /****************************************************************************/
102
107
  /**
103
108
  * Handles the keydown event to optionally prevent the native dialog from closing when the escape key is pressed.
104
109
  * @param {KeyboardEvent} event - The keydown event.
@@ -109,10 +114,6 @@ export declare class NvDialog {
109
114
  * @param {MouseEvent} event - The click event.
110
115
  */
111
116
  handleDocumentClick(event: MouseEvent): void;
112
- private handleClickOutside;
113
- private triggerClickEvents;
114
- /****************************************************************************/
115
- handleDialogOpenChange(isOpen: boolean): Promise<void>;
116
117
  /****************************************************************************/
117
118
  /**
118
119
  * Lifecycle method that runs before the component loads.
@@ -152,7 +152,7 @@ export declare class NvFielddate {
152
152
  private handleInputContainerClick;
153
153
  /**
154
154
  * Handles the input event on the input element.
155
- * Updates the singleValue and emits the valueChanged event if empty.
155
+ * Updates internal state to keep UI in sync - events are only emitted on completion or clear.
156
156
  * @param {Event} event - The input event.
157
157
  */
158
158
  private handleInput;
@@ -178,6 +178,7 @@ export declare class NvFielddate {
178
178
  private setInputRef;
179
179
  /**
180
180
  * Toggles the opening/closing of the popover.
181
+ * @param {MouseEvent} event - The click event.
181
182
  */
182
183
  private toggleCalendar;
183
184
  /**
@@ -198,6 +199,10 @@ export declare class NvFielddate {
198
199
  * @bind value
199
200
  */
200
201
  valueChanged: EventEmitter<string>;
202
+ /****************************************************************************/
203
+ handleValueChange(newValue: string): void;
204
+ handleOpenChange(newOpen: boolean): void;
205
+ /****************************************************************************/
201
206
  /**
202
207
  * Handles the single date selection event from nv-calendar.
203
208
  * Updates the input value and closes the popover.
@@ -206,8 +211,6 @@ export declare class NvFielddate {
206
211
  handleSingleDateChange(event: CustomEvent): void;
207
212
  handleClosePopover(): void;
208
213
  handleKeyDown(event: KeyboardEvent): void;
209
- handleValueChange(newValue: string): void;
210
- handleOpenChange(): void;
211
214
  /****************************************************************************/
212
215
  render(): any;
213
216
  }