@nova-design-system/nova-webcomponents 3.0.0-beta.35 → 3.0.0-beta.37

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 (584) hide show
  1. package/dist/blazor-docs.json +6242 -4908
  2. package/dist/cjs/{app-globals-6b0931bc.js → app-globals-bd4d701e.js} +2 -2
  3. package/dist/cjs/{app-globals-6b0931bc.js.map → app-globals-bd4d701e.js.map} +1 -1
  4. package/dist/cjs/{constants-9525a915.js → constants-69b40456.js} +15 -8
  5. package/dist/cjs/constants-69b40456.js.map +1 -0
  6. package/dist/cjs/events.utils-52846a7d.js +32 -0
  7. package/dist/cjs/events.utils-52846a7d.js.map +1 -0
  8. package/dist/cjs/{grow.animation-46e7ae4b.js → grow.animation-a1f0bc22.js} +1 -29
  9. package/dist/cjs/grow.animation-a1f0bc22.js.map +1 -0
  10. package/dist/cjs/{index-ddc37f87.js → index-5910ba06.js} +75 -18
  11. package/dist/{native/p-9b093b92.js.map → cjs/index-5910ba06.js.map} +1 -1
  12. package/dist/cjs/index.cjs.js +6 -3
  13. package/dist/cjs/index.cjs.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +3 -3
  15. package/dist/cjs/native.cjs.js +3 -3
  16. package/dist/cjs/nv-alert.cjs.entry.js +3 -3
  17. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +3 -3
  20. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-breadcrumb.cjs.entry.js +4 -3
  23. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +3 -3
  25. package/dist/cjs/nv-breadcrumbs.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-button.cjs.entry.js +24 -4
  27. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nv-col.cjs.entry.js +2 -2
  29. package/dist/cjs/nv-datagrid.cjs.entry.js +3 -3
  30. package/dist/cjs/nv-datagridbody.cjs.entry.js +2 -2
  31. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +2 -2
  33. package/dist/cjs/nv-datagridhead.cjs.entry.js +2 -2
  34. package/dist/cjs/nv-datagridrow.cjs.entry.js +2 -2
  35. package/dist/cjs/nv-dialog.cjs.entry.js +758 -0
  36. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -0
  37. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +132 -0
  38. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -0
  39. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +34 -25
  40. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fielddropdown.cjs.entry.js +52 -15
  42. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -2
  44. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +6 -3
  45. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldnumber.cjs.entry.js +12 -12
  47. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldpassword.cjs.entry.js +4 -4
  49. package/dist/cjs/nv-fieldradio.cjs.entry.js +5 -5
  50. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-fieldselect.cjs.entry.js +49 -18
  52. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js +8 -5
  54. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +13 -13
  56. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js +994 -0
  58. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -0
  59. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  60. package/dist/cjs/nv-iconbutton.cjs.entry.js +125 -0
  61. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +1 -0
  62. package/dist/cjs/nv-loader.cjs.entry.js +35 -0
  63. package/dist/cjs/nv-loader.cjs.entry.js.map +1 -0
  64. package/dist/cjs/nv-menu.cjs.entry.js +66 -7
  65. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  67. package/dist/cjs/nv-popover.cjs.entry.js +11 -22
  68. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  70. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  71. package/dist/cjs/nv-table.cjs.entry.js +3 -3
  72. package/dist/cjs/nv-tablebody.cjs.entry.js +2 -2
  73. package/dist/cjs/nv-tablecolumn.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-tabledatacell.cjs.entry.js +2 -2
  75. package/dist/cjs/nv-tablehead.cjs.entry.js +2 -2
  76. package/dist/cjs/nv-tablerow.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-toggle.cjs.entry.js +82 -0
  78. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -0
  79. package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
  80. package/dist/cjs/string.utils-9c581350.js +25 -0
  81. package/dist/cjs/string.utils-9c581350.js.map +1 -0
  82. package/dist/collection/collection-manifest.json +5 -1
  83. package/dist/collection/components/nv-alert/nv-alert.css +5 -5
  84. package/dist/collection/components/nv-badge/nv-badge.css +10 -10
  85. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +57 -4
  86. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +2 -2
  87. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js.map +1 -1
  88. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.css +1 -1
  89. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +4 -14
  90. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
  91. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  92. package/dist/collection/components/nv-button/nv-button.docs.js +6 -1
  93. package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
  94. package/dist/collection/components/nv-button/nv-button.js +56 -1
  95. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  96. package/dist/collection/components/nv-button/styles/nv-button.css +50 -10
  97. package/dist/collection/components/nv-col/nv-col.js +1 -1
  98. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +1 -0
  99. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  100. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  101. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +1 -1
  102. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  103. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +1 -1
  104. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +1 -1
  105. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +1 -1
  106. package/dist/collection/components/nv-dialog/nv-dialog.css +43 -0
  107. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +79 -0
  108. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -0
  109. package/dist/collection/components/nv-dialog/nv-dialog.js +510 -0
  110. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -0
  111. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.css +8 -0
  112. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js +6 -0
  113. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js.map +1 -0
  114. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +267 -0
  115. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js.map +1 -0
  116. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +25 -0
  117. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js +6 -0
  118. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js.map +1 -0
  119. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +87 -0
  120. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js.map +1 -0
  121. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -1
  122. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +45 -30
  123. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  124. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +28 -0
  125. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +87 -22
  127. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  128. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  129. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  130. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +7 -1
  131. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  132. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +15 -6
  133. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  134. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +15 -14
  135. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  136. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +13 -13
  137. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  138. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +1 -0
  139. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  140. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  141. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -1
  142. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +6 -6
  143. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  144. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +30 -0
  145. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  146. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +72 -19
  147. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  148. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +10 -7
  149. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  150. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +14 -14
  151. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  152. package/dist/collection/components/nv-fieldtime/nv-fieldtime.css +261 -0
  153. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +110 -0
  154. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -0
  155. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +1366 -0
  156. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -0
  157. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  158. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
  159. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  160. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  161. package/dist/collection/components/nv-menu/nv-menu.docs.js +61 -0
  162. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  163. package/dist/collection/components/nv-menu/nv-menu.js +92 -6
  164. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  165. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  166. package/dist/collection/components/nv-popover/nv-popover.docs.js +9 -9
  167. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  168. package/dist/collection/components/nv-popover/nv-popover.js +2 -14
  169. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  170. package/dist/collection/components/nv-row/nv-row.js +1 -1
  171. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  172. package/dist/collection/components/nv-table/nv-table.docs.js +1 -0
  173. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  174. package/dist/collection/components/nv-table/nv-table.js +2 -2
  175. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  176. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +1 -1
  177. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +1 -1
  178. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  179. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  180. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.css → nv-toggle/nv-toggle.css} +22 -22
  181. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.docs.js → nv-toggle/nv-toggle.docs.js} +14 -14
  182. package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -0
  183. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.js → nv-toggle/nv-toggle.js} +11 -10
  184. package/dist/collection/components/nv-toggle/nv-toggle.js.map +1 -0
  185. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  186. package/dist/collection/dev/dev-components.js +1 -1
  187. package/dist/collection/dev/dev-components.js.map +1 -1
  188. package/dist/collection/index.js +2 -0
  189. package/dist/collection/index.js.map +1 -1
  190. package/dist/collection/templates/navigation.docs.js +12 -2
  191. package/dist/collection/templates/navigation.docs.js.map +1 -1
  192. package/dist/collection/utils/constants.js +11 -5
  193. package/dist/collection/utils/constants.js.map +1 -1
  194. package/dist/collection/utils/string.utils.js +14 -0
  195. package/dist/collection/utils/string.utils.js.map +1 -0
  196. package/dist/components/index.js +5 -4
  197. package/dist/components/index.js.map +1 -1
  198. package/dist/components/nv-alert.js +4 -4
  199. package/dist/components/nv-alert.js.map +1 -1
  200. package/dist/components/nv-avatar.js +3 -3
  201. package/dist/components/nv-badge.js +1 -1
  202. package/dist/components/nv-base.js +1 -1
  203. package/dist/components/nv-breadcrumb.js +7 -12
  204. package/dist/components/nv-breadcrumb.js.map +1 -1
  205. package/dist/components/nv-breadcrumbs.js +3 -3
  206. package/dist/components/nv-breadcrumbs.js.map +1 -1
  207. package/dist/components/nv-button.js +1 -141
  208. package/dist/components/nv-button.js.map +1 -1
  209. package/dist/components/nv-col.js +2 -2
  210. package/dist/components/nv-datagrid.js +3 -3
  211. package/dist/components/nv-datagridbody.js +2 -2
  212. package/dist/components/nv-datagridcolumn.js +2 -2
  213. package/dist/components/nv-datagriddatacell.js +2 -2
  214. package/dist/components/nv-datagridhead.js +2 -2
  215. package/dist/components/nv-datagridrow.js +2 -2
  216. package/dist/components/{nv-fieldtoggle.d.ts → nv-dialog.d.ts} +4 -4
  217. package/dist/components/nv-dialog.js +816 -0
  218. package/dist/components/nv-dialog.js.map +1 -0
  219. package/dist/components/nv-dialogfooter.d.ts +11 -0
  220. package/dist/components/nv-dialogfooter.js +8 -0
  221. package/dist/components/nv-dialogfooter.js.map +1 -0
  222. package/dist/components/nv-dialogheader.d.ts +11 -0
  223. package/dist/components/nv-dialogheader.js +8 -0
  224. package/dist/components/nv-dialogheader.js.map +1 -0
  225. package/dist/components/nv-fieldcheckbox.js +1 -1
  226. package/dist/components/nv-fielddropdown.js +61 -21
  227. package/dist/components/nv-fielddropdown.js.map +1 -1
  228. package/dist/components/nv-fielddropdownitem.js +1 -1
  229. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  230. package/dist/components/nv-fieldmultiselect.js +14 -11
  231. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  232. package/dist/components/nv-fieldnumber.js +13 -13
  233. package/dist/components/nv-fieldnumber.js.map +1 -1
  234. package/dist/components/nv-fieldpassword.js +7 -7
  235. package/dist/components/nv-fieldradio.js +5 -5
  236. package/dist/components/nv-fieldradio.js.map +1 -1
  237. package/dist/components/nv-fieldselect.js +55 -21
  238. package/dist/components/nv-fieldselect.js.map +1 -1
  239. package/dist/components/nv-fieldtext.js +9 -6
  240. package/dist/components/nv-fieldtext.js.map +1 -1
  241. package/dist/components/nv-fieldtextarea.js +13 -13
  242. package/dist/components/nv-fieldtextarea.js.map +1 -1
  243. package/dist/components/nv-fieldtime.d.ts +11 -0
  244. package/dist/components/nv-fieldtime.js +1054 -0
  245. package/dist/components/nv-fieldtime.js.map +1 -0
  246. package/dist/components/nv-icon.js +1 -1
  247. package/dist/components/nv-iconbutton.js +1 -1
  248. package/dist/components/nv-loader.js +1 -1
  249. package/dist/components/nv-menu.js +90 -10
  250. package/dist/components/nv-menu.js.map +1 -1
  251. package/dist/components/nv-menuitem.js +1 -80
  252. package/dist/components/nv-menuitem.js.map +1 -1
  253. package/dist/components/nv-popover.js +1 -1
  254. package/dist/components/nv-row.js +2 -2
  255. package/dist/components/nv-stack.js +2 -2
  256. package/dist/components/nv-table.js +3 -3
  257. package/dist/components/nv-tablebody.js +2 -2
  258. package/dist/components/nv-tablecolumn.js +2 -2
  259. package/dist/components/nv-tabledatacell.js +2 -2
  260. package/dist/components/nv-tablehead.js +2 -2
  261. package/dist/components/nv-tablerow.js +2 -2
  262. package/dist/components/nv-toggle.d.ts +11 -0
  263. package/dist/components/nv-toggle.js +109 -0
  264. package/dist/components/nv-toggle.js.map +1 -0
  265. package/dist/components/nv-tooltip.js +1 -1
  266. package/dist/components/{p-7a19fef7.js → p-11fcdad9.js} +4 -4
  267. package/dist/components/{p-7a19fef7.js.map → p-11fcdad9.js.map} +1 -1
  268. package/dist/components/{p-7c0db67e.js → p-16badb3b.js} +4 -4
  269. package/dist/components/{p-7c0db67e.js.map → p-16badb3b.js.map} +1 -1
  270. package/dist/components/{p-3a65a05e.js → p-17714233.js} +40 -28
  271. package/dist/components/p-17714233.js.map +1 -0
  272. package/dist/components/{p-0b30dd1b.js → p-18d221e3.js} +3 -3
  273. package/dist/components/{p-0b30dd1b.js.map → p-18d221e3.js.map} +1 -1
  274. package/dist/components/p-2768d2c0.js +57 -0
  275. package/dist/components/p-2768d2c0.js.map +1 -0
  276. package/dist/components/p-2baea6ba.js +84 -0
  277. package/dist/components/p-2baea6ba.js.map +1 -0
  278. package/dist/components/{p-63afc71f.js → p-3859dc5c.js} +4 -4
  279. package/dist/components/{p-63afc71f.js.map → p-3859dc5c.js.map} +1 -1
  280. package/dist/components/{p-2abfadb8.js → p-4938572a.js} +4 -4
  281. package/dist/components/{p-2abfadb8.js.map → p-4938572a.js.map} +1 -1
  282. package/dist/components/{p-74407727.js → p-56f71851.js} +16 -9
  283. package/dist/components/p-56f71851.js.map +1 -0
  284. package/dist/components/{p-3b209e94.js → p-77d0fedc.js} +43 -3
  285. package/dist/components/p-77d0fedc.js.map +1 -0
  286. package/dist/components/p-91bf0cb6.js +166 -0
  287. package/dist/components/p-91bf0cb6.js.map +1 -0
  288. package/dist/components/{p-afa1c98e.js → p-98ff0e5f.js} +37 -28
  289. package/dist/components/p-98ff0e5f.js.map +1 -0
  290. package/dist/components/{p-5b98036c.js → p-a01bdf02.js} +4 -4
  291. package/dist/components/{p-5b98036c.js.map → p-a01bdf02.js.map} +1 -1
  292. package/dist/components/p-a5c8eee9.js +22 -0
  293. package/dist/components/p-a5c8eee9.js.map +1 -0
  294. package/dist/components/{p-78e7c594.js → p-a9a52105.js} +6 -17
  295. package/dist/components/p-a9a52105.js.map +1 -0
  296. package/dist/components/p-d429a343.js +28 -0
  297. package/dist/components/p-d429a343.js.map +1 -0
  298. package/dist/components/p-de8411ee.js +128 -0
  299. package/dist/components/p-de8411ee.js.map +1 -0
  300. package/dist/components/{p-d3b1c116.js → p-e431a0ad.js} +6 -6
  301. package/dist/components/{p-d3b1c116.js.map → p-e431a0ad.js.map} +1 -1
  302. package/dist/docs.json +2211 -911
  303. package/dist/esm/{app-globals-246d6b7c.js → app-globals-0a94217b.js} +2 -2
  304. package/dist/esm/{app-globals-246d6b7c.js.map → app-globals-0a94217b.js.map} +1 -1
  305. package/dist/esm/{constants-7b642e1d.js → constants-0181211f.js} +16 -9
  306. package/dist/esm/constants-0181211f.js.map +1 -0
  307. package/dist/esm/events.utils-fe1d907f.js +28 -0
  308. package/dist/esm/events.utils-fe1d907f.js.map +1 -0
  309. package/dist/esm/{grow.animation-88a8ee8f.js → grow.animation-cac164da.js} +2 -27
  310. package/dist/esm/grow.animation-cac164da.js.map +1 -0
  311. package/dist/esm/{index-cd557d0a.js → index-fac2d5d2.js} +75 -19
  312. package/dist/esm/index-fac2d5d2.js.map +1 -0
  313. package/dist/esm/index.js +4 -3
  314. package/dist/esm/index.js.map +1 -1
  315. package/dist/esm/loader.js +4 -4
  316. package/dist/esm/native.js +4 -4
  317. package/dist/esm/nv-alert.entry.js +3 -3
  318. package/dist/esm/nv-alert.entry.js.map +1 -1
  319. package/dist/esm/nv-avatar.entry.js +2 -2
  320. package/dist/esm/nv-badge_2.entry.js +3 -3
  321. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  322. package/dist/esm/nv-base.entry.js +1 -1
  323. package/dist/esm/nv-breadcrumb.entry.js +4 -3
  324. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  325. package/dist/esm/nv-breadcrumbs.entry.js +3 -3
  326. package/dist/esm/nv-breadcrumbs.entry.js.map +1 -1
  327. package/dist/esm/nv-button.entry.js +24 -4
  328. package/dist/esm/nv-button.entry.js.map +1 -1
  329. package/dist/esm/nv-col.entry.js +2 -2
  330. package/dist/esm/nv-datagrid.entry.js +3 -3
  331. package/dist/esm/nv-datagridbody.entry.js +2 -2
  332. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  333. package/dist/esm/nv-datagriddatacell.entry.js +2 -2
  334. package/dist/esm/nv-datagridhead.entry.js +2 -2
  335. package/dist/esm/nv-datagridrow.entry.js +2 -2
  336. package/dist/esm/nv-dialog.entry.js +754 -0
  337. package/dist/esm/nv-dialog.entry.js.map +1 -0
  338. package/dist/esm/nv-dialogfooter_2.entry.js +127 -0
  339. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -0
  340. package/dist/esm/nv-fieldcheckbox.entry.js +34 -25
  341. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  342. package/dist/esm/nv-fielddropdown.entry.js +52 -15
  343. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  344. package/dist/esm/nv-fielddropdownitem.entry.js +2 -2
  345. package/dist/esm/nv-fieldmultiselect.entry.js +6 -3
  346. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  347. package/dist/esm/nv-fieldnumber.entry.js +12 -12
  348. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  349. package/dist/esm/nv-fieldpassword.entry.js +4 -4
  350. package/dist/esm/nv-fieldradio.entry.js +5 -5
  351. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  352. package/dist/esm/nv-fieldselect.entry.js +49 -18
  353. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  354. package/dist/esm/nv-fieldtext.entry.js +8 -5
  355. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  356. package/dist/esm/nv-fieldtextarea.entry.js +13 -13
  357. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  358. package/dist/esm/nv-fieldtime.entry.js +990 -0
  359. package/dist/esm/nv-fieldtime.entry.js.map +1 -0
  360. package/dist/esm/nv-icon.entry.js +3 -3
  361. package/dist/esm/nv-iconbutton.entry.js +121 -0
  362. package/dist/esm/nv-iconbutton.entry.js.map +1 -0
  363. package/dist/esm/nv-loader.entry.js +31 -0
  364. package/dist/esm/nv-loader.entry.js.map +1 -0
  365. package/dist/esm/nv-menu.entry.js +66 -7
  366. package/dist/esm/nv-menu.entry.js.map +1 -1
  367. package/dist/esm/nv-menuitem.entry.js +2 -2
  368. package/dist/esm/nv-popover.entry.js +5 -16
  369. package/dist/esm/nv-popover.entry.js.map +1 -1
  370. package/dist/esm/nv-row.entry.js +2 -2
  371. package/dist/esm/nv-stack.entry.js +2 -2
  372. package/dist/esm/nv-table.entry.js +3 -3
  373. package/dist/esm/nv-tablebody.entry.js +2 -2
  374. package/dist/esm/nv-tablecolumn.entry.js +2 -2
  375. package/dist/esm/nv-tabledatacell.entry.js +2 -2
  376. package/dist/esm/nv-tablehead.entry.js +2 -2
  377. package/dist/esm/nv-tablerow.entry.js +2 -2
  378. package/dist/esm/nv-toggle.entry.js +78 -0
  379. package/dist/esm/nv-toggle.entry.js.map +1 -0
  380. package/dist/esm/nv-tooltip.entry.js +2 -2
  381. package/dist/esm/string.utils-16aed4a7.js +22 -0
  382. package/dist/esm/string.utils-16aed4a7.js.map +1 -0
  383. package/dist/native/index.esm.js +1 -1
  384. package/dist/native/index.esm.js.map +1 -1
  385. package/dist/native/native.css +1 -1
  386. package/dist/native/native.esm.js +1 -1
  387. package/dist/native/native.esm.js.map +1 -1
  388. package/dist/native/p-02bb8184.entry.js +2 -0
  389. package/dist/native/p-0bf35abc.entry.js +2 -0
  390. package/dist/native/p-0bf35abc.entry.js.map +1 -0
  391. package/dist/native/p-10ba289c.entry.js +2 -0
  392. package/dist/native/{p-826f1d28.entry.js → p-208accf0.entry.js} +2 -2
  393. package/dist/native/p-208accf0.entry.js.map +1 -0
  394. package/dist/native/p-211f7b19.entry.js +2 -0
  395. package/dist/native/p-211f7b19.entry.js.map +1 -0
  396. package/dist/native/p-2aebf31b.entry.js +2 -0
  397. package/dist/native/p-3a8a9371.entry.js +2 -0
  398. package/dist/native/p-3a8a9371.entry.js.map +1 -0
  399. package/dist/native/{p-6bb2c88f.entry.js → p-3c004551.entry.js} +2 -2
  400. package/dist/native/p-3c004551.entry.js.map +1 -0
  401. package/dist/native/p-46553ffd.entry.js +2 -0
  402. package/dist/native/p-46553ffd.entry.js.map +1 -0
  403. package/dist/native/{p-f7db0785.entry.js → p-4d0caf4a.entry.js} +3 -3
  404. package/dist/native/p-4f11286d.entry.js +2 -0
  405. package/dist/native/{p-40f4828a.entry.js.map → p-4f11286d.entry.js.map} +1 -1
  406. package/dist/native/p-51ad8bcd.entry.js +2 -0
  407. package/dist/native/p-51ad8bcd.entry.js.map +1 -0
  408. package/dist/native/p-5439afb8.js +3 -0
  409. package/dist/native/p-5439afb8.js.map +1 -0
  410. package/dist/native/{p-74407727.js → p-56f71851.js} +2 -2
  411. package/dist/native/p-56f71851.js.map +1 -0
  412. package/dist/native/p-5f1a7e6e.entry.js +2 -0
  413. package/dist/native/p-5f1a7e6e.entry.js.map +1 -0
  414. package/dist/native/{p-575ea40b.entry.js → p-61d2cb2e.entry.js} +2 -2
  415. package/dist/native/{p-cd251f91.entry.js → p-6d68f133.entry.js} +2 -2
  416. package/dist/native/p-724ed8d7.entry.js +7 -0
  417. package/dist/native/p-724ed8d7.entry.js.map +1 -0
  418. package/dist/native/{p-e5fbe545.entry.js → p-75b1ea9f.entry.js} +2 -2
  419. package/dist/native/p-87083363.entry.js +2 -0
  420. package/dist/native/p-87083363.entry.js.map +1 -0
  421. package/dist/native/p-892052c2.entry.js +2 -0
  422. package/dist/native/p-8c1a6aa6.entry.js +2 -0
  423. package/dist/native/p-8c1a6aa6.entry.js.map +1 -0
  424. package/dist/native/p-8ee30013.entry.js +2 -0
  425. package/dist/native/{p-9341cf9d.entry.js.map → p-8ee30013.entry.js.map} +1 -1
  426. package/dist/native/{p-788712dd.entry.js → p-96902bb3.entry.js} +2 -2
  427. package/dist/native/p-99e7a452.entry.js +2 -0
  428. package/dist/native/p-99e7a452.entry.js.map +1 -0
  429. package/dist/native/p-9ac790b3.entry.js +2 -0
  430. package/dist/native/{p-18b227b5.entry.js.map → p-9ac790b3.entry.js.map} +1 -1
  431. package/dist/native/{p-3283505f.entry.js → p-9fb5db20.entry.js} +2 -2
  432. package/dist/native/p-a5c8eee9.js +2 -0
  433. package/dist/native/p-a5c8eee9.js.map +1 -0
  434. package/dist/native/{p-552e7ea4.entry.js → p-a998f8df.entry.js} +2 -2
  435. package/dist/native/p-aa2834e2.entry.js +2 -0
  436. package/dist/native/p-ab5a8ce5.entry.js +2 -0
  437. package/dist/native/p-beab7cbd.entry.js +2 -0
  438. package/dist/native/p-bfeda21c.entry.js +2 -0
  439. package/dist/native/p-bfeda21c.entry.js.map +1 -0
  440. package/dist/native/p-c1765831.js +2 -0
  441. package/dist/native/p-c1765831.js.map +1 -0
  442. package/dist/native/{p-7dfb4a60.entry.js → p-c51ee6dc.entry.js} +2 -2
  443. package/dist/native/p-c51ee6dc.entry.js.map +1 -0
  444. package/dist/native/{p-2063c768.entry.js → p-d24586ed.entry.js} +2 -2
  445. package/dist/native/p-d429a343.js +2 -0
  446. package/dist/native/p-d429a343.js.map +1 -0
  447. package/dist/native/{p-1e2bd4e3.entry.js → p-d4e56727.entry.js} +2 -2
  448. package/dist/native/p-d67b7502.entry.js +2 -0
  449. package/dist/native/p-d67b7502.entry.js.map +1 -0
  450. package/dist/native/p-d776ed48.entry.js +2 -0
  451. package/dist/native/p-d776ed48.entry.js.map +1 -0
  452. package/dist/native/p-dc9dd5a7.entry.js +2 -0
  453. package/dist/native/p-e192c25c.entry.js +2 -0
  454. package/dist/native/p-e192c25c.entry.js.map +1 -0
  455. package/dist/native/p-e3827605.entry.js +2 -0
  456. package/dist/native/{p-5d0dc7c8.entry.js.map → p-e3827605.entry.js.map} +1 -1
  457. package/dist/native/p-e5a7596b.entry.js +2 -0
  458. package/dist/native/p-e6f45df2.entry.js +2 -0
  459. package/dist/native/p-ed47a702.entry.js +2 -0
  460. package/dist/native/p-f30ce086.entry.js +2 -0
  461. package/dist/native/{p-eda8cd9d.entry.js.map → p-f30ce086.entry.js.map} +1 -1
  462. package/dist/native/p-f3fbdea6.js +2 -0
  463. package/dist/native/{p-f79752ca.entry.js → p-fd2955dd.entry.js} +2 -2
  464. package/dist/native/p-fd2955dd.entry.js.map +1 -0
  465. package/dist/types/components/nv-breadcrumb/nv-breadcrumb.d.ts +0 -1
  466. package/dist/types/components/nv-button/nv-button.d.ts +8 -0
  467. package/dist/types/components/nv-dialog/nv-dialog.d.ts +124 -0
  468. package/dist/types/components/nv-dialog/nv-dialog.docs.d.ts +4 -0
  469. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.d.ts +63 -0
  470. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.docs.d.ts +4 -0
  471. package/dist/types/components/nv-dialogheader/nv-dialogheader.d.ts +20 -0
  472. package/dist/types/components/nv-dialogheader/nv-dialogheader.docs.d.ts +4 -0
  473. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +14 -10
  474. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +34 -10
  475. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +6 -2
  476. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +4 -4
  477. package/dist/types/components/nv-fieldradio/nv-fieldradio.d.ts +2 -2
  478. package/dist/types/components/nv-fieldselect/nv-fieldselect.d.ts +20 -6
  479. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +5 -4
  480. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +3 -3
  481. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +156 -0
  482. package/dist/types/components/nv-fieldtime/nv-fieldtime.docs.d.ts +4 -0
  483. package/dist/types/components/nv-menu/nv-menu.d.ts +20 -0
  484. package/dist/types/components/{nv-fieldtoggle/nv-fieldtoggle.d.ts → nv-toggle/nv-toggle.d.ts} +4 -4
  485. package/dist/types/components/nv-toggle/nv-toggle.docs.d.ts +4 -0
  486. package/dist/types/components.d.ts +519 -98
  487. package/dist/types/index.d.ts +1 -0
  488. package/dist/types/nova-docs.d.ts +19 -0
  489. package/dist/types/utils/constants.d.ts +6 -1
  490. package/dist/types/utils/string.utils.d.ts +9 -0
  491. package/dist/vscode-data.json +230 -34
  492. package/hydrate/index.js +2609 -442
  493. package/hydrate/index.mjs +2609 -442
  494. package/package.json +22 -10
  495. package/dist/cjs/constants-9525a915.js.map +0 -1
  496. package/dist/cjs/grow.animation-46e7ae4b.js.map +0 -1
  497. package/dist/cjs/index-ddc37f87.js.map +0 -1
  498. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +0 -81
  499. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +0 -1
  500. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +0 -151
  501. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +0 -1
  502. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.docs.js.map +0 -1
  503. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +0 -1
  504. package/dist/components/nv-fieldtoggle.js +0 -108
  505. package/dist/components/nv-fieldtoggle.js.map +0 -1
  506. package/dist/components/p-3a65a05e.js.map +0 -1
  507. package/dist/components/p-3b209e94.js.map +0 -1
  508. package/dist/components/p-74407727.js.map +0 -1
  509. package/dist/components/p-78e7c594.js.map +0 -1
  510. package/dist/components/p-afa1c98e.js.map +0 -1
  511. package/dist/esm/constants-7b642e1d.js.map +0 -1
  512. package/dist/esm/grow.animation-88a8ee8f.js.map +0 -1
  513. package/dist/esm/index-cd557d0a.js.map +0 -1
  514. package/dist/esm/nv-fieldtoggle.entry.js +0 -77
  515. package/dist/esm/nv-fieldtoggle.entry.js.map +0 -1
  516. package/dist/esm/nv-iconbutton_2.entry.js +0 -146
  517. package/dist/esm/nv-iconbutton_2.entry.js.map +0 -1
  518. package/dist/native/p-0a9a738c.entry.js +0 -2
  519. package/dist/native/p-0a9a738c.entry.js.map +0 -1
  520. package/dist/native/p-0f9262ed.entry.js +0 -2
  521. package/dist/native/p-18b227b5.entry.js +0 -2
  522. package/dist/native/p-225962f2.entry.js +0 -2
  523. package/dist/native/p-2ac838b8.entry.js +0 -2
  524. package/dist/native/p-38d3eee3.js +0 -2
  525. package/dist/native/p-3adf0c45.entry.js +0 -2
  526. package/dist/native/p-3adf0c45.entry.js.map +0 -1
  527. package/dist/native/p-40f4828a.entry.js +0 -2
  528. package/dist/native/p-44cc8b59.entry.js +0 -2
  529. package/dist/native/p-44cc8b59.entry.js.map +0 -1
  530. package/dist/native/p-4e056cd8.entry.js +0 -2
  531. package/dist/native/p-4e056cd8.entry.js.map +0 -1
  532. package/dist/native/p-4f30312d.entry.js +0 -2
  533. package/dist/native/p-4f30312d.entry.js.map +0 -1
  534. package/dist/native/p-4ffd5c51.entry.js +0 -2
  535. package/dist/native/p-52a7f936.entry.js +0 -2
  536. package/dist/native/p-5d0dc7c8.entry.js +0 -2
  537. package/dist/native/p-5e467b49.entry.js +0 -2
  538. package/dist/native/p-5f160072.entry.js +0 -2
  539. package/dist/native/p-6bb2c88f.entry.js.map +0 -1
  540. package/dist/native/p-6ea62d17.entry.js +0 -2
  541. package/dist/native/p-6ea62d17.entry.js.map +0 -1
  542. package/dist/native/p-74407727.js.map +0 -1
  543. package/dist/native/p-7dfb4a60.entry.js.map +0 -1
  544. package/dist/native/p-826f1d28.entry.js.map +0 -1
  545. package/dist/native/p-87b93cc2.entry.js +0 -2
  546. package/dist/native/p-8ae9aaf1.entry.js +0 -2
  547. package/dist/native/p-8f0984b0.entry.js +0 -2
  548. package/dist/native/p-8f0984b0.entry.js.map +0 -1
  549. package/dist/native/p-9341cf9d.entry.js +0 -2
  550. package/dist/native/p-967f1aee.entry.js +0 -2
  551. package/dist/native/p-967f1aee.entry.js.map +0 -1
  552. package/dist/native/p-9b093b92.js +0 -3
  553. package/dist/native/p-a37c2ac2.js +0 -2
  554. package/dist/native/p-a37c2ac2.js.map +0 -1
  555. package/dist/native/p-e8d181e6.entry.js +0 -2
  556. package/dist/native/p-eade52d4.entry.js +0 -2
  557. package/dist/native/p-eade52d4.entry.js.map +0 -1
  558. package/dist/native/p-ed825c80.entry.js +0 -2
  559. package/dist/native/p-ed825c80.entry.js.map +0 -1
  560. package/dist/native/p-eda8cd9d.entry.js +0 -2
  561. package/dist/native/p-f79752ca.entry.js.map +0 -1
  562. package/dist/native/p-fc8cad13.entry.js +0 -2
  563. package/dist/types/components/nv-fieldtoggle/nv-fieldtoggle.docs.d.ts +0 -4
  564. /package/dist/native/{p-e8d181e6.entry.js.map → p-02bb8184.entry.js.map} +0 -0
  565. /package/dist/native/{p-4ffd5c51.entry.js.map → p-10ba289c.entry.js.map} +0 -0
  566. /package/dist/native/{p-52a7f936.entry.js.map → p-2aebf31b.entry.js.map} +0 -0
  567. /package/dist/native/{p-f7db0785.entry.js.map → p-4d0caf4a.entry.js.map} +0 -0
  568. /package/dist/native/{p-575ea40b.entry.js.map → p-61d2cb2e.entry.js.map} +0 -0
  569. /package/dist/native/{p-cd251f91.entry.js.map → p-6d68f133.entry.js.map} +0 -0
  570. /package/dist/native/{p-e5fbe545.entry.js.map → p-75b1ea9f.entry.js.map} +0 -0
  571. /package/dist/native/{p-fc8cad13.entry.js.map → p-892052c2.entry.js.map} +0 -0
  572. /package/dist/native/{p-788712dd.entry.js.map → p-96902bb3.entry.js.map} +0 -0
  573. /package/dist/native/{p-3283505f.entry.js.map → p-9fb5db20.entry.js.map} +0 -0
  574. /package/dist/native/{p-552e7ea4.entry.js.map → p-a998f8df.entry.js.map} +0 -0
  575. /package/dist/native/{p-5f160072.entry.js.map → p-aa2834e2.entry.js.map} +0 -0
  576. /package/dist/native/{p-225962f2.entry.js.map → p-ab5a8ce5.entry.js.map} +0 -0
  577. /package/dist/native/{p-2ac838b8.entry.js.map → p-beab7cbd.entry.js.map} +0 -0
  578. /package/dist/native/{p-2063c768.entry.js.map → p-d24586ed.entry.js.map} +0 -0
  579. /package/dist/native/{p-1e2bd4e3.entry.js.map → p-d4e56727.entry.js.map} +0 -0
  580. /package/dist/native/{p-5e467b49.entry.js.map → p-dc9dd5a7.entry.js.map} +0 -0
  581. /package/dist/native/{p-0f9262ed.entry.js.map → p-e5a7596b.entry.js.map} +0 -0
  582. /package/dist/native/{p-87b93cc2.entry.js.map → p-e6f45df2.entry.js.map} +0 -0
  583. /package/dist/native/{p-8ae9aaf1.entry.js.map → p-ed47a702.entry.js.map} +0 -0
  584. /package/dist/native/{p-38d3eee3.js.map → p-f3fbdea6.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"file":"nv-iconbutton.entry.js","mappings":";;;AAAA,MAAM,eAAe,GAAG,sqJAAsqJ,CAAC;AAC/rJ,2BAAe,eAAe;;MC4BjB,YAAY;IAPzB;;;;;;;;;;;;;;;;QAoBW,SAAI,GAAoB,IAAI,CAAC;;;;;;QAQ7B,aAAQ,GAAwB,MAAM,CAAC;;;;;;;;QAUhD,YAAO,GAAY,KAAK,CAAC;;;;QAMzB,aAAQ,GAAY,KAAK,CAAC;;;;;QAOjB,WAAM,GAAY,KAAK,CAAC;;;;;;QAgBxB,SAAI,GAAoB,QAAQ,CAAC;;;;QAMjC,UAAK,GAAyB,QAAQ,CAAC;;;;;;;;;;QAYxC,gBAAW,GAAG,CAAC,KAAY;;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,aAAa,EAAE,CAAC;aACvC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,KAAK,EAAE,CAAC;aAC/B;SACF,CAAC;KA6DH;;;;IAtDC,mBAAmB,CAAC,OAAgB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;IAGD,oBAAoB,CAAC,QAAiB;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;KACF;;;;IAMD,iBAAiB;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;KACF;;;;IAMD,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,EAAE,IAAI,CACT,MAAM,EACN,QAAQ,IAAI,CAAC,IAAI,EAAE,EACnB,YAAY,IAAI,CAAC,QAAQ,EAAE,EAC3B,IAAI,CAAC,OAAO,IAAI,SAAS,EACzB,SAAS,IAAI,CAAC,KAAK,EAAE,CACtB,EACD,OAAO,EAAE,IAAI,CAAC,WAAW,IAExB,IAAI,CAAC,OAAO,IAAI,kEAAW,IAAI,EAAE,IAAI,CAAC,IAAI,GAAc,EAExD,CAAC,IAAI,CAAC,OAAO,IAAI,gEAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAE/D,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;","names":[],"sources":["src/components/nv-iconbutton/nv-iconbutton.scss?tag=nv-iconbutton","src/components/nv-iconbutton/nv-iconbutton.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$button-sizes: (\"xs\", \"sm\", \"md\", \"lg\");\n$button-emphasis: (\"high\", \"medium\", \"low\", \"lower\");\n\n/* Define maps for size-related variables */\n$button-icon-button-padding: (\n \"xs\": var(--button-xs-icon-button-padding),\n \"sm\": var(--button-sm-icon-button-padding),\n \"md\": var(--button-md-icon-button-padding),\n \"lg\": var(--button-lg-icon-button-padding)\n);\n\n$button-gap: (\n \"xs\": var(--button-xs-gap),\n \"sm\": var(--button-sm-gap),\n \"md\": var(--button-md-gap),\n \"lg\": var(--button-lg-gap)\n);\n\n$button-border-radius: (\n \"xs\": var(--button-xs-border-radius),\n \"sm\": var(--button-sm-border-radius),\n \"md\": var(--button-md-border-radius),\n \"lg\": var(--button-lg-border-radius)\n);\n\n$button-line-height: (\n \"xs\": var(--button-xs-line-height),\n \"sm\": var(--button-sm-line-height),\n \"md\": var(--button-md-line-height),\n \"lg\": var(--button-lg-line-height)\n);\n\n$button-font-size: (\n \"xs\": var(--button-xs-font-size),\n \"sm\": var(--button-sm-font-size),\n \"md\": var(--button-md-font-size),\n \"lg\": var(--button-lg-font-size)\n);\n\n/* Define maps for emphasis-related variables */\n$components-button-background: (\n \"high\": var(--components-button-high-background),\n \"medium\": var(--components-button-medium-background),\n \"low\": var(--components-button-low-background),\n \"lower\": var(--components-button-lower-background)\n);\n\n$components-button-border: (\n \"high\": var(--components-button-high-border),\n \"medium\": var(--components-button-medium-border),\n \"low\": var(--components-button-low-border),\n \"lower\": var(--components-button-lower-border)\n);\n\n$components-button-text: (\n \"high\": var(--components-button-high-text),\n \"medium\": var(--components-button-medium-text),\n \"low\": var(--components-button-low-text),\n \"lower\": var(--components-button-lower-text)\n);\n\n$components-button-background-hover: (\n \"high\": var(--components-button-high-background-hover),\n \"medium\": var(--components-button-medium-background-hover),\n \"low\": var(--components-button-low-background-hover),\n \"lower\": var(--components-button-lower-background-hover)\n);\n\n$components-button-text-hover: (\n \"high\": var(--components-button-high-text-hover),\n \"medium\": var(--components-button-medium-text-hover),\n \"low\": var(--components-button-low-text-hover),\n \"lower\": var(--components-button-lower-text-hover)\n);\n\n$components-button-icon: (\n \"high\": var(--components-button-high-icon),\n \"medium\": var(--components-button-medium-icon),\n \"low\": var(--components-button-low-icon),\n \"lower\": var(--components-button-lower-icon)\n);\n\n@mixin root-styles() {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: 500;\n font-family: \"TT Norms Pro\", sans-serif;\n transition: background-color 150ms ease-out;\n height: fit-content;\n width: fit-content;\n}\n\n@mixin size-styles($size) {\n padding: map.get($button-icon-button-padding, $size);\n gap: map.get($button-gap, $size);\n border-radius: map.get($button-border-radius, $size);\n line-height: map.get($button-line-height, $size);\n font-size: map.get($button-font-size, $size);\n}\n\n@mixin emphasis-styles($emphasis) {\n background: map.get($components-button-background, $emphasis);\n border: 1px solid map.get($components-button-border, $emphasis);\n color: map.get($components-button-text, $emphasis);\n\n &:hover {\n background: map.get($components-button-background-hover, $emphasis);\n color: map.get($components-button-text-hover, $emphasis);\n }\n\n @include focus-ring();\n\n &:disabled {\n background: map.get($components-button-background, $emphasis);\n color: map.get($components-button-text, $emphasis);\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n }\n\n & nv-icon > svg {\n color: map.get($components-button-icon, $emphasis);\n }\n}\n\nnv-iconbutton {\n &.root {\n @include root-styles();\n }\n\n @each $size in $button-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $emphasis in $button-emphasis {\n &.emphasis-#{$emphasis} {\n @include emphasis-styles($emphasis);\n }\n }\n\n &.loading {\n [slot=\"leading-icon\"] {\n display: none;\n }\n }\n\n &.shape-rounded {\n border-radius: var(--radius-rounded-full);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n AttachInternals,\n Element,\n Watch,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n ButtonSize,\n ButtonEmphasis,\n ButtonType,\n IconButtonShape,\n} from '../../utils/constants';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot default - Content of the button.\n */\n@Component({\n tag: 'nv-iconbutton',\n shadow: false,\n formAssociated: true,\n styleUrl: 'nv-iconbutton.scss',\n scoped: false,\n})\nexport class NvIconbutton {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvIconbuttonElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Determines how large or small the button appears, allowing for\n * customization of the button's dimensions to fit different design\n * specifications and user needs.\n */\n @Prop({ reflect: true })\n readonly size: `${ButtonSize}` = 'md';\n\n /**\n * Adjusts the button’s emphasis to make it more or less visually prominent\n * to users. Use this to draw attention to important actions or reduce focus\n * on less critical ones.\n */\n @Prop({ reflect: true })\n readonly emphasis: `${ButtonEmphasis}` = 'high';\n\n /**\n * Set this to true to show a spinner on the button, letting users know that\n * their action is being processed. It helps improve user experience by\n * indicating ongoing activities. The icon is not displayed when the button\n * is loading. Also, the button is disabled. If you want to disable the\n * button, it is not possible. It is automatically disabled when loading.\n */\n @Prop({ reflect: true, mutable: true })\n loading: boolean = false;\n\n /**\n * Disables the button, preventing user interaction.\n */\n @Prop({ mutable: true, reflect: true })\n disabled: boolean = false;\n\n /**\n * Makes the button look active when it’s within a compatible component\n * like a button group.\n */\n @Prop({ reflect: true })\n readonly active: boolean = false;\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly name: `${IconName}` | string;\n\n /**\n * Sets the button type to control its function in forms. Use 'submit' to send\n * form data, 'reset' to clear the form, or 'button' for a standard button\n * that doesn’t interact with form submission by default.\n */\n @Prop({ reflect: true })\n readonly type: `${ButtonType}` = 'button';\n\n /**\n * Sets the shape of the button. Choose between square and rounded.\n */\n @Prop({ reflect: true })\n readonly shape: `${IconButtonShape}` = 'square';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles form-related actions when the button is clicked.\n * - Submits the form if the button type is 'submit'.\n * - Resets the form if the button type is 'reset'.\n * @param {Event} event - The click event.\n */\n private handleClick = (event: Event) => {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.type === 'submit') {\n this.internals?.form?.requestSubmit();\n }\n if (this.type === 'reset') {\n this.internals?.form?.reset();\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('loading')\n handleLoadingChange(loading: boolean) {\n this.loading = loading;\n this.disabled = loading;\n }\n\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (this.loading) {\n this.disabled = this.loading;\n } else {\n this.disabled = disabled;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.loading) {\n this.disabled = this.loading;\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n role=\"button\"\n type={this.type}\n tabindex=\"0\"\n disabled={this.disabled ? true : undefined}\n class={clsx(\n 'root',\n `size-${this.size}`,\n `emphasis-${this.emphasis}`,\n this.loading && 'loading',\n `shape-${this.shape}`,\n )}\n onClick={this.handleClick}\n >\n {this.loading && <nv-loader size={this.size}></nv-loader>}\n\n {!this.loading && <nv-icon name={this.name} size={this.size} />}\n\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -0,0 +1,31 @@
1
+ import { r as registerInstance, h, a as Host } from './index-fac2d5d2.js';
2
+ import { c as clsx } from './clsx-297c1ffe.js';
3
+
4
+ const nvLoaderCss = "@keyframes rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}nv-loader{display:inline-block;position:relative;aspect-ratio:1/1;border-radius:9999px;color:inherit}nv-loader.size-xs{width:var(--loader-size-xs);height:var(--loader-size-xs)}nv-loader.size-xs::before,nv-loader.size-xs::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xs::before{content:\" \";border:calc(var(--loader-size-xs) / 10) solid;opacity:0.3}nv-loader.size-xs::after{content:\" \";border-top:calc(var(--loader-size-xs) / 10) solid transparent;border-left:calc(var(--loader-size-xs) / 10) solid transparent;border-right:calc(var(--loader-size-xs) / 10) solid transparent;border-bottom:calc(var(--loader-size-xs) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-sm{width:var(--loader-size-sm);height:var(--loader-size-sm)}nv-loader.size-sm::before,nv-loader.size-sm::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-sm::before{content:\" \";border:calc(var(--loader-size-sm) / 10) solid;opacity:0.3}nv-loader.size-sm::after{content:\" \";border-top:calc(var(--loader-size-sm) / 10) solid transparent;border-left:calc(var(--loader-size-sm) / 10) solid transparent;border-right:calc(var(--loader-size-sm) / 10) solid transparent;border-bottom:calc(var(--loader-size-sm) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-md{width:var(--loader-size-md);height:var(--loader-size-md)}nv-loader.size-md::before,nv-loader.size-md::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-md::before{content:\" \";border:calc(var(--loader-size-md) / 10) solid;opacity:0.3}nv-loader.size-md::after{content:\" \";border-top:calc(var(--loader-size-md) / 10) solid transparent;border-left:calc(var(--loader-size-md) / 10) solid transparent;border-right:calc(var(--loader-size-md) / 10) solid transparent;border-bottom:calc(var(--loader-size-md) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-lg{width:var(--loader-size-lg);height:var(--loader-size-lg)}nv-loader.size-lg::before,nv-loader.size-lg::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-lg::before{content:\" \";border:calc(var(--loader-size-lg) / 10) solid;opacity:0.3}nv-loader.size-lg::after{content:\" \";border-top:calc(var(--loader-size-lg) / 10) solid transparent;border-left:calc(var(--loader-size-lg) / 10) solid transparent;border-right:calc(var(--loader-size-lg) / 10) solid transparent;border-bottom:calc(var(--loader-size-lg) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-xl{width:var(--loader-size-xl);height:var(--loader-size-xl)}nv-loader.size-xl::before,nv-loader.size-xl::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xl::before{content:\" \";border:calc(var(--loader-size-xl) / 10) solid;opacity:0.3}nv-loader.size-xl::after{content:\" \";border-top:calc(var(--loader-size-xl) / 10) solid transparent;border-left:calc(var(--loader-size-xl) / 10) solid transparent;border-right:calc(var(--loader-size-xl) / 10) solid transparent;border-bottom:calc(var(--loader-size-xl) / 10) solid;animation:rotation 1s linear infinite}nv-loader.color-brand::before{border-color:var(--components-loader-brand-background);opacity:1}nv-loader.color-brand::after{border-bottom-color:var(--components-loader-brand-foreground)}nv-loader.color-white::before{border-color:var(--components-loader-white-background);opacity:1}nv-loader.color-white::after{border-bottom-color:var(--components-loader-white-foreground)}";
5
+ const NvLoaderStyle0 = nvLoaderCss;
6
+
7
+ const NvLoader = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ /****************************************************************************/
11
+ //#region PROPERTIES
12
+ /**
13
+ * Choose the size of the loader to best fit your application’s needs, whether
14
+ * it’s a small spinner for subtle loading indicators or a large one for more
15
+ * prominent displays.
16
+ */
17
+ this.size = 'md';
18
+ }
19
+ //#endregion PROPERTIES
20
+ /****************************************************************************/
21
+ //#region RENDER
22
+ /* <slot> empty to force rendering change */
23
+ render() {
24
+ return (h(Host, { key: 'ef295983a9b45e05d2ec94310b79e04608ad401e', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
25
+ }
26
+ };
27
+ NvLoader.style = NvLoaderStyle0;
28
+
29
+ export { NvLoader as nv_loader };
30
+
31
+ //# sourceMappingURL=nv-loader.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-loader.entry.js","mappings":";;;AAAA,MAAM,WAAW,GAAG,qoHAAqoH,CAAC;AAC1pH,uBAAe,WAAW;;MCSb,QAAQ;IALrB;;;;;;;;;QAeW,SAAI,GAAuB,IAAI,CAAC;KA2B1C;;;;;IAZC,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CACT,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,EAChC,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE,CACpC,GACK,EACR;KACH;;;;;;","names":[],"sources":["src/components/nv-loader/nv-loader.scss?tag=nv-loader","src/components/nv-loader/nv-loader.tsx"],"sourcesContent":["@use \"sass:map\";\n\n/* Variants */\n$loader-sizes: (\"xs\", \"sm\", \"md\", \"lg\", \"xl\");\n$loader-color: (\"brand\", \"white\");\n\n/* Define maps for color-related variables */\n$components-loader-background: (\n \"brand\": var(--components-loader-brand-background),\n \"white\": var(--components-loader-white-background)\n);\n\n$components-loader-foreground: (\n \"brand\": var(--components-loader-brand-foreground),\n \"white\": var(--components-loader-white-foreground)\n);\n\n/* Define maps for size-related variables */\n$components-loader-size: (\n \"xs\": var(--loader-size-xs),\n \"sm\": var(--loader-size-sm),\n \"md\": var(--loader-size-md),\n \"lg\": var(--loader-size-lg),\n \"xl\": var(--loader-size-xl)\n);\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n aspect-ratio: 1 / 1;\n border-radius: 9999px;\n color: inherit;\n}\n\n@mixin size-styles($size) {\n $loader-size: map.get($components-loader-size, $size);\n $border-size: calc($loader-size / 10);\n\n width: $loader-size;\n height: $loader-size;\n\n &::before,\n &::after {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n\n &::before {\n content: \" \";\n border: $border-size solid;\n opacity: 0.3;\n }\n\n &::after {\n content: \" \";\n border-top: $border-size solid transparent;\n border-left: $border-size solid transparent;\n border-right: $border-size solid transparent;\n border-bottom: $border-size solid;\n animation: rotation 1s linear infinite;\n }\n}\n\n@mixin color-styles($color) {\n &::before {\n border-color: map.get($components-loader-background, $color);\n opacity: 1;\n }\n\n &::after {\n border-bottom-color: map.get($components-loader-foreground, $color);\n }\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\nnv-loader {\n @include root-styles();\n\n @each $size in $loader-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $color in $loader-color {\n &.color-#{$color} {\n @include color-styles($color);\n }\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport clsx from 'clsx';\n\nimport { SemanticSizes, LoaderColors } from '../../utils/constants';\n\n@Component({\n tag: 'nv-loader',\n styleUrl: 'nv-loader.scss',\n shadow: false,\n})\nexport class NvLoader {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Choose the size of the loader to best fit your application’s needs, whether\n * it’s a small spinner for subtle loading indicators or a large one for more\n * prominent displays.\n */\n @Prop({ reflect: true })\n readonly size: `${SemanticSizes}` = 'md';\n\n /**\n * Choose the color of the loader. Options are primary and white to keep the\n * design consistent and ensure the loader stands out or blends in\n * appropriately with your application’s interface.\n */\n @Prop({ reflect: true })\n readonly color: `${LoaderColors}`;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n /* <slot> empty to force rendering change */\n render() {\n return (\n <Host\n class={clsx(\n this.size && `size-${this.size}`,\n this.color && `color-${this.color}`,\n )}\n ></Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-cd557d0a.js';
1
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
2
 
3
3
  const nvMenuCss = "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 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)}";
4
4
  const NvMenuStyle0 = nvMenuCss;
@@ -31,6 +31,25 @@ const NvMenu = class {
31
31
  * position on the axis to fit on the screen, so users can always see it.
32
32
  */
33
33
  this.placement = this.nested ? 'right-start' : 'bottom-end';
34
+ /**
35
+ * Parsed items stored in state.
36
+ */
37
+ this.parsedItems = [];
38
+ }
39
+ /**
40
+ * Watcher to parse the items when the `items` property changes.
41
+ * @param {string} newValue - The new value of the `items` property.
42
+ */
43
+ handleItemsChange(newValue) {
44
+ if (typeof newValue === 'string') {
45
+ try {
46
+ this.parsedItems = JSON.parse(newValue);
47
+ }
48
+ catch (error) {
49
+ console.error('Error parsing menu items:', error);
50
+ this.parsedItems = [];
51
+ }
52
+ }
34
53
  }
35
54
  //#endregion PROPERTIES
36
55
  /****************************************************************************/
@@ -55,8 +74,23 @@ const NvMenu = class {
55
74
  this.open = false;
56
75
  }
57
76
  handleKeydown(event) {
58
- if (!this.open)
77
+ // If the menu is not open, check if the trigger is focused
78
+ // and the user presses Enter or ArrowDown, open the menu
79
+ if (!this.open) {
80
+ if ((event.key === 'Enter' ||
81
+ event.key === 'ArrowDown' ||
82
+ event.key === ' ') &&
83
+ document.activeElement === this.triggerElement) {
84
+ event.preventDefault();
85
+ this.show();
86
+ // Then, put the focus on the first menuitem
87
+ const firstMenuItem = this.popoverElement.querySelector('nv-menuitem');
88
+ if (firstMenuItem) {
89
+ requestAnimationFrame(() => firstMenuItem.focus());
90
+ }
91
+ }
59
92
  return;
93
+ }
60
94
  if (this.isHandlingKeyDown)
61
95
  return;
62
96
  this.isHandlingKeyDown = true;
@@ -95,10 +129,12 @@ const NvMenu = class {
95
129
  nextIndex = (nextIndex + 1) % menuItems.length;
96
130
  }
97
131
  const nextFocusable = menuItems[nextIndex];
98
- if (nextFocusable.matches('nv-menuitem'))
132
+ if (nextFocusable.matches('nv-menuitem')) {
99
133
  nextFocusable.focus();
100
- else if (nextFocusable.matches('nv-menu'))
134
+ }
135
+ else if (nextFocusable.matches('nv-menu')) {
101
136
  nextFocusable.querySelector('nv-menuitem').focus();
137
+ }
102
138
  }
103
139
  if (event.key === 'ArrowUp') {
104
140
  let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;
@@ -106,10 +142,12 @@ const NvMenu = class {
106
142
  prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;
107
143
  }
108
144
  const prevFocusable = menuItems[prevIndex];
109
- if (prevFocusable.matches('nv-menuitem'))
145
+ if (prevFocusable.matches('nv-menuitem')) {
110
146
  prevFocusable.focus();
111
- else if (prevFocusable.matches('nv-menu'))
147
+ }
148
+ else if (prevFocusable.matches('nv-menu')) {
112
149
  prevFocusable.querySelector('nv-menuitem').focus();
150
+ }
113
151
  }
114
152
  if (event.key === 'ArrowRight') {
115
153
  const submenu = menuItems[currentIndex];
@@ -151,14 +189,35 @@ const NvMenu = class {
151
189
  this.triggerElement = Array.from(this.el.children).find(child => {
152
190
  return child.getAttribute('slot') === 'trigger';
153
191
  });
192
+ // If the items attribute is provided, parse its value.
193
+ if (this.items) {
194
+ this.handleItemsChange(this.items);
195
+ }
154
196
  }
155
197
  //#endregion LIFECYCLE
156
198
  /****************************************************************************/
157
199
  //#region RENDER
200
+ /**
201
+ * Generates menu items from the `items` property.
202
+ * @param {MenuItem[]} items - The items to display in the menu.
203
+ * @returns {HTMLElement[]} The rendered items.
204
+ */
205
+ renderMenuItems(items) {
206
+ return items.map(item => {
207
+ var _a;
208
+ if (item.hasSubmenu && ((_a = item.submenuItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
209
+ return (h("nv-menu", { nested: true, placement: "right-start", items: JSON.stringify(item.submenuItems) }, h("nv-menuitem", { slot: "trigger", "has-submenu": true, disabled: item.disabled, icon: item.icon, shortcut: item.shortcut, id: item.value, name: item.label }, item.label)));
210
+ }
211
+ return (h("nv-menuitem", { disabled: item.disabled, icon: item.icon, shortcut: item.shortcut, id: item.value, name: item.label }, item.label));
212
+ });
213
+ }
158
214
  render() {
159
- return (h(Host, { key: 'a28164031ff34af57a3039e7e9077114a84e5ead' }, h("slot", { key: 'b84c1bce094b2039b2f8d6e202752a48ce5967e6', name: "trigger" }), h("nv-popover", { key: '0bf868e671a882d1a0073f0bae321541f9bda10b', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, h("slot", { key: '09d7a81d65214f6b803ca4fb84995aa16e747174', name: "content" }))));
215
+ return (h(Host, { key: '663544f72d6cb125230069285149e6846fb50464' }, h("slot", { key: '281cfa33ab3c86cd3292974d2102da248354d476', name: "trigger" }), h("nv-popover", { key: '63ad66357b5a82f01320071cb7f99d744d2fcbf6', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.parsedItems.length > 0 ? (h("ul", { slot: "content" }, this.renderMenuItems(this.parsedItems))) : (h("slot", { name: "content" })))));
160
216
  }
161
217
  get el() { return getElement(this); }
218
+ static get watchers() { return {
219
+ "items": ["handleItemsChange"]
220
+ }; }
162
221
  };
163
222
  NvMenu.style = NvMenuStyle0;
164
223
 
@@ -1 +1 @@
1
- {"file":"nv-menu.entry.js","mappings":"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","names":[],"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} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport type { MenuitemSelectedEventDetail } from '../nv-menuitem/nv-menuitem';\n\n/**\n * @slot trigger - Button to toggle the menu popover.\n * @slot content - Use an &lt;ul&gt;&lt;/ul&gt; tag for the slot, and place &lt;nv-menuitem&gt; elements inside.\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()\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()\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()\n readonly placement: Placement = this.nested ? 'right-start' : 'bottom-end';\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 //#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<MenuitemSelectedEventDetail>;\n\n @Listen('menuitemSelected')\n handleMenuItemSelect(event: CustomEvent<MenuitemSelectedEventDetail>) {\n if (this.disableCloseOnSelect) return;\n if (event.detail.hasSubmenu) return;\n\n this.open = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n if (!this.open) return;\n if (this.isHandlingKeyDown) return;\n\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')) nextFocusable.focus();\n else if (nextFocusable.matches('nv-menu'))\n nextFocusable.querySelector('nv-menuitem').focus();\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')) prevFocusable.focus();\n else if (prevFocusable.matches('nv-menu'))\n prevFocusable.querySelector('nv-menuitem').focus();\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\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 if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\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 EVENTS\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 render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n\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 <slot name=\"content\"></slot>\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-menu.entry.js","mappings":"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","names":[],"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 State,\n Watch,\n} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport type { MenuitemSelectedEventDetail } from '../nv-menuitem/nv-menuitem';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * Interface to define the structure of a menu item\n */\ninterface MenuItem {\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?: MenuItem[];\n}\n\n/**\n * @slot trigger - Button to toggle the menu popover.\n * @slot content - Use an &lt;ul&gt;&lt;/ul&gt; tag for the slot, and place &lt;nv-menuitem&gt; elements inside.\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()\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()\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()\n readonly placement: Placement = this.nested ? 'right-start' : 'bottom-end';\n\n /**\n * (New feature) Items to display in the menu, provided as a JSON string.\n * Format: [{ label: string, value?: string, disabled?: boolean, hasSubmenu?: boolean, ... }]\n */\n @Prop()\n readonly items?: string;\n\n /**\n * Parsed items stored in state.\n */\n @State()\n private parsedItems: MenuItem[] = [];\n\n /**\n * Watcher to parse the items when the `items` property changes.\n * @param {string} newValue - The new value of the `items` property.\n */\n @Watch('items')\n handleItemsChange(newValue: string) {\n if (typeof newValue === 'string') {\n try {\n this.parsedItems = JSON.parse(newValue);\n } catch (error) {\n console.error('Error parsing menu items:', error);\n this.parsedItems = [];\n }\n }\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 //#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<MenuitemSelectedEventDetail>;\n\n @Listen('menuitemSelected')\n handleMenuItemSelect(event: CustomEvent<MenuitemSelectedEventDetail>) {\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 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 private focusFirstItem() {\n const firstButton = this.popoverElement.querySelector('nv-menuitem');\n if (firstButton) {\n requestAnimationFrame(() => firstButton.focus());\n }\n }\n\n //#endregion EVENTS\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 // If the items attribute is provided, parse its value.\n if (this.items) {\n this.handleItemsChange(this.items);\n }\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(items: MenuItem[]) {\n return items.map(item => {\n if (item.hasSubmenu && item.submenuItems?.length > 0) {\n return (\n <nv-menu\n nested\n placement=\"right-start\"\n items={JSON.stringify(item.submenuItems)}\n >\n <nv-menuitem\n slot=\"trigger\"\n has-submenu\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n >\n {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 >\n {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.parsedItems.length > 0 ? (\n <ul slot=\"content\">{this.renderMenuItems(this.parsedItems)}</ul>\n ) : (\n <slot name=\"content\"></slot>\n )}\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-cd557d0a.js';
1
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
2
 
3
3
  const nvMenuitemCss = "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 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)}";
4
4
  const NvMenuitemStyle0 = nvMenuitemCss;
@@ -46,7 +46,7 @@ const NvMenuitem = class {
46
46
  /****************************************************************************/
47
47
  //#region RENDER
48
48
  render() {
49
- return (h(Host, { key: '31ff42ca3327ad886aa6c7095f70b56013a91bc9', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && h("nv-icon", { key: '27d59e5fb7877401d74915f6176d5d37b441d24b', name: this.icon }), h("span", { key: '9ee13d14d026e8aa9738c29051ea3eddb72973b6', "data-scope": "text" }, h("slot", { key: '09ae4f46f55268113c030b106838ff4f21a81dd2' })), this.shortcut && !this.hasSubmenu && h("kbd", { key: '56336e605425e598f3c9e3384b5a12f84f529e73' }, this.shortcut), this.hasSubmenu && h("nv-icon", { key: '18a8b87eb166189bdebc7fa7a362fec7725257d1', name: "chevron-right" })));
49
+ return (h(Host, { key: 'ce7900804c631ae023960b0af96d84ff992531eb', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && h("nv-icon", { key: 'e5f8f337a9ac7de133bac90b590036e9bd8a5266', name: this.icon }), h("span", { key: '759f492fb615084a980390e1e24f0cb4469c911b', "data-scope": "text" }, h("slot", { key: '6cbc0e4d1859611271673223b4d00b38dbfdfa0c' })), this.shortcut && !this.hasSubmenu && h("kbd", { key: 'f80cb33856e9e294a1a23dd93ff7c426455d827c' }, this.shortcut), this.hasSubmenu && h("nv-icon", { key: 'efe2f7531bfe66e50b7454f0a3815c2908f093cb', name: "chevron-right" })));
50
50
  }
51
51
  get el() { return getElement(this); }
52
52
  };
@@ -1,6 +1,7 @@
1
- import { d as getRenderingRef, f as forceUpdate, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-cd557d0a.js';
1
+ import { d as getRenderingRef, f as forceUpdate, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
2
  import { u as useFade } from './fade.animation-2a077983.js';
3
- import { a as addEventListeners, u as useGrow, r as removeEventListeners } from './grow.animation-88a8ee8f.js';
3
+ import { u as useGrow } from './grow.animation-cac164da.js';
4
+ import { a as addEventListeners, r as removeEventListeners } from './events.utils-fe1d907f.js';
4
5
 
5
6
  /**
6
7
  * Custom positioning reference element.
@@ -2124,19 +2125,7 @@ const NvPopover = class {
2124
2125
  return;
2125
2126
  this.hide();
2126
2127
  };
2127
- this.clickEvents = [
2128
- ['click', this.toggle],
2129
- ['touchstart', this.toggle],
2130
- [
2131
- 'keydown',
2132
- (e) => {
2133
- if (e.key === 'Enter' || e.key === ' ') {
2134
- e.preventDefault();
2135
- this.toggle();
2136
- }
2137
- },
2138
- ],
2139
- ];
2128
+ this.clickEvents = [['click', this.toggle]];
2140
2129
  this.hoverEvents = [
2141
2130
  [
2142
2131
  'focus',
@@ -2359,7 +2348,7 @@ const NvPopover = class {
2359
2348
  /****************************************************************************/
2360
2349
  //#region RENDER
2361
2350
  render() {
2362
- return (h(Host, { key: '1014588b3220a543ba8f51aa82664b933e4ff477' }, h("slot", { key: '5a6d7bb46a32f77a4eab3fe0fd105b268862c2aa', name: "trigger" }), h("div", { key: 'c9043c20aa2667b80bd3668992a017b89da0dbba', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '1ffcc0878409b66d7cecd398e18d1923465d5381', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '814d6cdc6150c66342c35607364bfcf60c85b036', name: "content" }))));
2351
+ return (h(Host, { key: '8dcbb9b96d90e7adbfb40c50be1700d260368d8b' }, h("slot", { key: '9603aa05927c624cfc3fe8e9392f0c60e3749012', name: "trigger" }), h("div", { key: '6c9d7cebbb9db0305e03fd4e8973038df6686b2f', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '24d0857e21228f1976a38f0dffcb8e3a62bc60b7', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: 'd8103c284e4327ec6d81fac88f417c4fcf2c50e4', name: "content" }))));
2363
2352
  }
2364
2353
  get el() { return getElement(this); }
2365
2354
  static get watchers() { return {