@nova-design-system/nova-webcomponents 3.0.0-beta.36 → 3.0.0-beta.38

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 (624) hide show
  1. package/dist/blazor-docs.json +6458 -5022
  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 +27 -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 +4 -4
  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-datagrid.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-datagridbody.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  33. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +2 -2
  34. package/dist/cjs/nv-datagridhead.cjs.entry.js +2 -2
  35. package/dist/cjs/nv-datagridrow.cjs.entry.js +2 -2
  36. package/dist/cjs/nv-dialog.cjs.entry.js +771 -0
  37. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -0
  38. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +132 -0
  39. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -0
  40. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +34 -25
  41. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fielddropdown.cjs.entry.js +53 -16
  43. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +3 -3
  45. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +7 -4
  47. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldnumber.cjs.entry.js +13 -13
  49. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldpassword.cjs.entry.js +5 -5
  51. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldradio.cjs.entry.js +5 -5
  53. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-fieldselect.cjs.entry.js +49 -18
  55. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-fieldtext.cjs.entry.js +9 -6
  57. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +13 -13
  59. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-fieldtime.cjs.entry.js +994 -0
  61. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -0
  62. package/dist/cjs/nv-icon.cjs.entry.js +4 -4
  63. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-iconbutton.cjs.entry.js +125 -0
  65. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +1 -0
  66. package/dist/cjs/nv-loader.cjs.entry.js +35 -0
  67. package/dist/cjs/nv-loader.cjs.entry.js.map +1 -0
  68. package/dist/cjs/nv-menu.cjs.entry.js +66 -7
  69. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  71. package/dist/cjs/nv-popover.cjs.entry.js +11 -22
  72. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  75. package/dist/cjs/nv-table.cjs.entry.js +3 -3
  76. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  77. package/dist/cjs/nv-tablebody.cjs.entry.js +2 -2
  78. package/dist/cjs/nv-tablecolumn.cjs.entry.js +2 -2
  79. package/dist/cjs/nv-tabledatacell.cjs.entry.js +2 -2
  80. package/dist/cjs/nv-tablehead.cjs.entry.js +2 -2
  81. package/dist/cjs/nv-tablerow.cjs.entry.js +2 -2
  82. package/dist/cjs/nv-toggle.cjs.entry.js +82 -0
  83. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -0
  84. package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
  85. package/dist/cjs/string.utils-9c581350.js +25 -0
  86. package/dist/cjs/string.utils-9c581350.js.map +1 -0
  87. package/dist/collection/collection-manifest.json +5 -1
  88. package/dist/collection/components/nv-alert/nv-alert.css +5 -5
  89. package/dist/collection/components/nv-badge/nv-badge.css +10 -10
  90. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +57 -4
  91. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +2 -2
  92. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js.map +1 -1
  93. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.css +1 -1
  94. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +5 -14
  95. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
  96. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  97. package/dist/collection/components/nv-button/nv-button.docs.js +6 -1
  98. package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
  99. package/dist/collection/components/nv-button/nv-button.js +56 -1
  100. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  101. package/dist/collection/components/nv-button/styles/nv-button.css +50 -10
  102. package/dist/collection/components/nv-col/nv-col.js +1 -1
  103. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +1 -0
  104. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  105. package/dist/collection/components/nv-datagrid/nv-datagrid.js +5 -2
  106. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  107. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +1 -1
  108. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  109. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +1 -1
  110. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +1 -1
  111. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +1 -1
  112. package/dist/collection/components/nv-dialog/nv-dialog.css +43 -0
  113. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +79 -0
  114. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -0
  115. package/dist/collection/components/nv-dialog/nv-dialog.js +523 -0
  116. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -0
  117. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.css +8 -0
  118. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js +6 -0
  119. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js.map +1 -0
  120. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +267 -0
  121. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js.map +1 -0
  122. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +25 -0
  123. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js +6 -0
  124. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js.map +1 -0
  125. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +87 -0
  126. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js.map +1 -0
  127. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -1
  128. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +45 -30
  129. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  130. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.css +13 -28
  131. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +28 -0
  132. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  133. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +87 -22
  134. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  135. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.css +7 -6
  136. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  137. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +7 -7
  138. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  139. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +36 -17
  140. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +7 -1
  141. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  142. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +15 -6
  143. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  144. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +2 -2
  145. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +15 -14
  146. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  147. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +13 -13
  148. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  149. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +2 -2
  150. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +1 -0
  151. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  152. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  153. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -1
  154. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +6 -6
  155. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  156. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +30 -0
  157. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  158. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +72 -19
  159. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  160. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +2 -2
  161. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +10 -7
  162. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  163. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +14 -14
  164. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  165. package/dist/collection/components/nv-fieldtime/nv-fieldtime.css +261 -0
  166. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +111 -0
  167. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -0
  168. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +1366 -0
  169. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -0
  170. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  171. package/dist/collection/components/nv-icon/nv-icons.js +21 -0
  172. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  173. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
  174. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  175. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  176. package/dist/collection/components/nv-menu/nv-menu.docs.js +61 -0
  177. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  178. package/dist/collection/components/nv-menu/nv-menu.js +92 -6
  179. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  180. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  181. package/dist/collection/components/nv-popover/nv-popover.docs.js +9 -9
  182. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  183. package/dist/collection/components/nv-popover/nv-popover.js +2 -14
  184. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  185. package/dist/collection/components/nv-row/nv-row.js +1 -1
  186. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  187. package/dist/collection/components/nv-table/nv-table.docs.js +1 -0
  188. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  189. package/dist/collection/components/nv-table/nv-table.js +5 -2
  190. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  191. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  192. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +1 -1
  193. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +1 -1
  194. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  195. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  196. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.css → nv-toggle/nv-toggle.css} +22 -22
  197. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.docs.js → nv-toggle/nv-toggle.docs.js} +14 -14
  198. package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -0
  199. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.js → nv-toggle/nv-toggle.js} +11 -10
  200. package/dist/collection/components/nv-toggle/nv-toggle.js.map +1 -0
  201. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  202. package/dist/collection/dev/dev-components.js +1 -1
  203. package/dist/collection/dev/dev-components.js.map +1 -1
  204. package/dist/collection/index.js +2 -0
  205. package/dist/collection/index.js.map +1 -1
  206. package/dist/collection/templates/navigation.docs.js +13 -2
  207. package/dist/collection/templates/navigation.docs.js.map +1 -1
  208. package/dist/collection/utils/constants.js +11 -5
  209. package/dist/collection/utils/constants.js.map +1 -1
  210. package/dist/collection/utils/string.utils.js +14 -0
  211. package/dist/collection/utils/string.utils.js.map +1 -0
  212. package/dist/components/index.js +26 -4
  213. package/dist/components/index.js.map +1 -1
  214. package/dist/components/nv-alert.js +4 -4
  215. package/dist/components/nv-alert.js.map +1 -1
  216. package/dist/components/nv-avatar.js +3 -3
  217. package/dist/components/nv-badge.js +1 -1
  218. package/dist/components/nv-base.js +1 -1
  219. package/dist/components/nv-breadcrumb.js +7 -12
  220. package/dist/components/nv-breadcrumb.js.map +1 -1
  221. package/dist/components/nv-breadcrumbs.js +3 -3
  222. package/dist/components/nv-breadcrumbs.js.map +1 -1
  223. package/dist/components/nv-button.js +1 -141
  224. package/dist/components/nv-button.js.map +1 -1
  225. package/dist/components/nv-col.js +2 -2
  226. package/dist/components/nv-datagrid.js +3 -3
  227. package/dist/components/nv-datagrid.js.map +1 -1
  228. package/dist/components/nv-datagridbody.js +2 -2
  229. package/dist/components/nv-datagridcolumn.js +2 -2
  230. package/dist/components/nv-datagriddatacell.js +2 -2
  231. package/dist/components/nv-datagridhead.js +2 -2
  232. package/dist/components/nv-datagridrow.js +2 -2
  233. package/dist/components/{nv-fieldtoggle.d.ts → nv-dialog.d.ts} +4 -4
  234. package/dist/components/nv-dialog.js +829 -0
  235. package/dist/components/nv-dialog.js.map +1 -0
  236. package/dist/components/nv-dialogfooter.d.ts +11 -0
  237. package/dist/components/nv-dialogfooter.js +8 -0
  238. package/dist/components/nv-dialogfooter.js.map +1 -0
  239. package/dist/components/nv-dialogheader.d.ts +11 -0
  240. package/dist/components/nv-dialogheader.js +8 -0
  241. package/dist/components/nv-dialogheader.js.map +1 -0
  242. package/dist/components/nv-fieldcheckbox.js +1 -1
  243. package/dist/components/nv-fielddropdown.js +62 -22
  244. package/dist/components/nv-fielddropdown.js.map +1 -1
  245. package/dist/components/nv-fielddropdownitem.js +1 -1
  246. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  247. package/dist/components/nv-fieldmultiselect.js +15 -12
  248. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  249. package/dist/components/nv-fieldnumber.js +14 -14
  250. package/dist/components/nv-fieldnumber.js.map +1 -1
  251. package/dist/components/nv-fieldpassword.js +8 -8
  252. package/dist/components/nv-fieldpassword.js.map +1 -1
  253. package/dist/components/nv-fieldradio.js +5 -5
  254. package/dist/components/nv-fieldradio.js.map +1 -1
  255. package/dist/components/nv-fieldselect.js +55 -21
  256. package/dist/components/nv-fieldselect.js.map +1 -1
  257. package/dist/components/nv-fieldtext.js +10 -7
  258. package/dist/components/nv-fieldtext.js.map +1 -1
  259. package/dist/components/nv-fieldtextarea.js +13 -13
  260. package/dist/components/nv-fieldtextarea.js.map +1 -1
  261. package/dist/components/nv-fieldtime.d.ts +11 -0
  262. package/dist/components/nv-fieldtime.js +1054 -0
  263. package/dist/components/nv-fieldtime.js.map +1 -0
  264. package/dist/components/nv-icon.js +1 -1
  265. package/dist/components/nv-iconbutton.js +1 -1
  266. package/dist/components/nv-loader.js +1 -1
  267. package/dist/components/nv-menu.js +90 -10
  268. package/dist/components/nv-menu.js.map +1 -1
  269. package/dist/components/nv-menuitem.js +1 -80
  270. package/dist/components/nv-menuitem.js.map +1 -1
  271. package/dist/components/nv-popover.js +1 -1
  272. package/dist/components/nv-row.js +2 -2
  273. package/dist/components/nv-stack.js +2 -2
  274. package/dist/components/nv-table.js +3 -3
  275. package/dist/components/nv-table.js.map +1 -1
  276. package/dist/components/nv-tablebody.js +2 -2
  277. package/dist/components/nv-tablecolumn.js +2 -2
  278. package/dist/components/nv-tabledatacell.js +2 -2
  279. package/dist/components/nv-tablehead.js +2 -2
  280. package/dist/components/nv-tablerow.js +2 -2
  281. package/dist/components/nv-toggle.d.ts +11 -0
  282. package/dist/components/nv-toggle.js +109 -0
  283. package/dist/components/nv-toggle.js.map +1 -0
  284. package/dist/components/nv-tooltip.js +1 -1
  285. package/dist/components/{p-7c0db67e.js → p-16badb3b.js} +4 -4
  286. package/dist/components/{p-7c0db67e.js.map → p-16badb3b.js.map} +1 -1
  287. package/dist/components/{p-3a65a05e.js → p-17714233.js} +40 -28
  288. package/dist/components/p-17714233.js.map +1 -0
  289. package/dist/components/{p-0b30dd1b.js → p-18d221e3.js} +3 -3
  290. package/dist/components/{p-0b30dd1b.js.map → p-18d221e3.js.map} +1 -1
  291. package/dist/components/{p-d3b1c116.js → p-1c83f303.js} +6 -6
  292. package/dist/components/{p-d3b1c116.js.map → p-1c83f303.js.map} +1 -1
  293. package/dist/components/p-2768d2c0.js +57 -0
  294. package/dist/components/p-2768d2c0.js.map +1 -0
  295. package/dist/components/{p-74407727.js → p-56f71851.js} +16 -9
  296. package/dist/components/p-56f71851.js.map +1 -0
  297. package/dist/components/{p-3b209e94.js → p-77d0fedc.js} +43 -3
  298. package/dist/components/p-77d0fedc.js.map +1 -0
  299. package/dist/components/{p-2abfadb8.js → p-79bf6acb.js} +4 -4
  300. package/dist/components/{p-2abfadb8.js.map → p-79bf6acb.js.map} +1 -1
  301. package/dist/components/p-802c9204.js +128 -0
  302. package/dist/components/p-802c9204.js.map +1 -0
  303. package/dist/components/p-91bf0cb6.js +166 -0
  304. package/dist/components/p-91bf0cb6.js.map +1 -0
  305. package/dist/components/{p-afa1c98e.js → p-98ff0e5f.js} +37 -28
  306. package/dist/components/p-98ff0e5f.js.map +1 -0
  307. package/dist/components/p-a5c8eee9.js +22 -0
  308. package/dist/components/p-a5c8eee9.js.map +1 -0
  309. package/dist/components/{p-78e7c594.js → p-a9a52105.js} +6 -17
  310. package/dist/components/p-a9a52105.js.map +1 -0
  311. package/dist/components/p-ab87be7f.js +84 -0
  312. package/dist/components/p-ab87be7f.js.map +1 -0
  313. package/dist/components/{p-63afc71f.js → p-b877a150.js} +5 -5
  314. package/dist/components/p-b877a150.js.map +1 -0
  315. package/dist/components/p-d20958c4.js +82 -0
  316. package/dist/components/p-d20958c4.js.map +1 -0
  317. package/dist/components/p-d429a343.js +28 -0
  318. package/dist/components/p-d429a343.js.map +1 -0
  319. package/dist/components/{p-7a19fef7.js → p-dd34b97d.js} +5 -5
  320. package/dist/components/p-dd34b97d.js.map +1 -0
  321. package/dist/docs.json +2160 -758
  322. package/dist/esm/{app-globals-246d6b7c.js → app-globals-0a94217b.js} +2 -2
  323. package/dist/esm/{app-globals-246d6b7c.js.map → app-globals-0a94217b.js.map} +1 -1
  324. package/dist/esm/{constants-7b642e1d.js → constants-0181211f.js} +16 -9
  325. package/dist/esm/constants-0181211f.js.map +1 -0
  326. package/dist/esm/events.utils-fe1d907f.js +28 -0
  327. package/dist/esm/events.utils-fe1d907f.js.map +1 -0
  328. package/dist/esm/{grow.animation-88a8ee8f.js → grow.animation-cac164da.js} +2 -27
  329. package/dist/esm/grow.animation-cac164da.js.map +1 -0
  330. package/dist/esm/{index-cd557d0a.js → index-fac2d5d2.js} +75 -19
  331. package/dist/esm/index-fac2d5d2.js.map +1 -0
  332. package/dist/esm/index.js +25 -3
  333. package/dist/esm/index.js.map +1 -1
  334. package/dist/esm/loader.js +4 -4
  335. package/dist/esm/native.js +4 -4
  336. package/dist/esm/nv-alert.entry.js +3 -3
  337. package/dist/esm/nv-alert.entry.js.map +1 -1
  338. package/dist/esm/nv-avatar.entry.js +2 -2
  339. package/dist/esm/nv-badge_2.entry.js +4 -4
  340. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  341. package/dist/esm/nv-base.entry.js +1 -1
  342. package/dist/esm/nv-breadcrumb.entry.js +4 -3
  343. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  344. package/dist/esm/nv-breadcrumbs.entry.js +3 -3
  345. package/dist/esm/nv-breadcrumbs.entry.js.map +1 -1
  346. package/dist/esm/nv-button.entry.js +24 -4
  347. package/dist/esm/nv-button.entry.js.map +1 -1
  348. package/dist/esm/nv-col.entry.js +2 -2
  349. package/dist/esm/nv-datagrid.entry.js +3 -3
  350. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  351. package/dist/esm/nv-datagridbody.entry.js +2 -2
  352. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  353. package/dist/esm/nv-datagriddatacell.entry.js +2 -2
  354. package/dist/esm/nv-datagridhead.entry.js +2 -2
  355. package/dist/esm/nv-datagridrow.entry.js +2 -2
  356. package/dist/esm/nv-dialog.entry.js +767 -0
  357. package/dist/esm/nv-dialog.entry.js.map +1 -0
  358. package/dist/esm/nv-dialogfooter_2.entry.js +127 -0
  359. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -0
  360. package/dist/esm/nv-fieldcheckbox.entry.js +34 -25
  361. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  362. package/dist/esm/nv-fielddropdown.entry.js +53 -16
  363. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  364. package/dist/esm/nv-fielddropdownitem.entry.js +3 -3
  365. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  366. package/dist/esm/nv-fieldmultiselect.entry.js +7 -4
  367. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  368. package/dist/esm/nv-fieldnumber.entry.js +13 -13
  369. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  370. package/dist/esm/nv-fieldpassword.entry.js +5 -5
  371. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  372. package/dist/esm/nv-fieldradio.entry.js +5 -5
  373. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  374. package/dist/esm/nv-fieldselect.entry.js +49 -18
  375. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  376. package/dist/esm/nv-fieldtext.entry.js +9 -6
  377. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  378. package/dist/esm/nv-fieldtextarea.entry.js +13 -13
  379. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  380. package/dist/esm/nv-fieldtime.entry.js +990 -0
  381. package/dist/esm/nv-fieldtime.entry.js.map +1 -0
  382. package/dist/esm/nv-icon.entry.js +4 -4
  383. package/dist/esm/nv-icon.entry.js.map +1 -1
  384. package/dist/esm/nv-iconbutton.entry.js +121 -0
  385. package/dist/esm/nv-iconbutton.entry.js.map +1 -0
  386. package/dist/esm/nv-loader.entry.js +31 -0
  387. package/dist/esm/nv-loader.entry.js.map +1 -0
  388. package/dist/esm/nv-menu.entry.js +66 -7
  389. package/dist/esm/nv-menu.entry.js.map +1 -1
  390. package/dist/esm/nv-menuitem.entry.js +2 -2
  391. package/dist/esm/nv-popover.entry.js +5 -16
  392. package/dist/esm/nv-popover.entry.js.map +1 -1
  393. package/dist/esm/nv-row.entry.js +2 -2
  394. package/dist/esm/nv-stack.entry.js +2 -2
  395. package/dist/esm/nv-table.entry.js +3 -3
  396. package/dist/esm/nv-table.entry.js.map +1 -1
  397. package/dist/esm/nv-tablebody.entry.js +2 -2
  398. package/dist/esm/nv-tablecolumn.entry.js +2 -2
  399. package/dist/esm/nv-tabledatacell.entry.js +2 -2
  400. package/dist/esm/nv-tablehead.entry.js +2 -2
  401. package/dist/esm/nv-tablerow.entry.js +2 -2
  402. package/dist/esm/nv-toggle.entry.js +78 -0
  403. package/dist/esm/nv-toggle.entry.js.map +1 -0
  404. package/dist/esm/nv-tooltip.entry.js +2 -2
  405. package/dist/esm/string.utils-16aed4a7.js +22 -0
  406. package/dist/esm/string.utils-16aed4a7.js.map +1 -0
  407. package/dist/native/index.esm.js +1 -1
  408. package/dist/native/index.esm.js.map +1 -1
  409. package/dist/native/native.css +1 -1
  410. package/dist/native/native.esm.js +1 -1
  411. package/dist/native/native.esm.js.map +1 -1
  412. package/dist/native/p-02bb8184.entry.js +2 -0
  413. package/dist/native/p-09850aa9.entry.js +2 -0
  414. package/dist/native/p-09850aa9.entry.js.map +1 -0
  415. package/dist/native/p-0bf35abc.entry.js +2 -0
  416. package/dist/native/p-0bf35abc.entry.js.map +1 -0
  417. package/dist/native/p-10ba289c.entry.js +2 -0
  418. package/dist/native/p-1208abf2.entry.js +2 -0
  419. package/dist/native/p-1208abf2.entry.js.map +1 -0
  420. package/dist/native/p-130f6c47.entry.js +2 -0
  421. package/dist/native/{p-3283505f.entry.js.map → p-130f6c47.entry.js.map} +1 -1
  422. package/dist/native/p-180c45ff.entry.js +2 -0
  423. package/dist/native/p-180c45ff.entry.js.map +1 -0
  424. package/dist/native/p-1bb5a6bd.entry.js +2 -0
  425. package/dist/native/p-1bb5a6bd.entry.js.map +1 -0
  426. package/dist/native/p-211f7b19.entry.js +2 -0
  427. package/dist/native/p-211f7b19.entry.js.map +1 -0
  428. package/dist/native/p-273d55e5.entry.js +2 -0
  429. package/dist/native/p-273d55e5.entry.js.map +1 -0
  430. package/dist/native/p-2aebf31b.entry.js +2 -0
  431. package/dist/native/{p-cd251f91.entry.js → p-2f62f097.entry.js} +2 -2
  432. package/dist/native/p-2f62f097.entry.js.map +1 -0
  433. package/dist/native/{p-6bb2c88f.entry.js → p-3c004551.entry.js} +2 -2
  434. package/dist/native/p-3c004551.entry.js.map +1 -0
  435. package/dist/native/p-46553ffd.entry.js +2 -0
  436. package/dist/native/p-46553ffd.entry.js.map +1 -0
  437. package/dist/native/p-4f11286d.entry.js +2 -0
  438. package/dist/native/{p-40f4828a.entry.js.map → p-4f11286d.entry.js.map} +1 -1
  439. package/dist/native/p-51ad8bcd.entry.js +2 -0
  440. package/dist/native/p-51ad8bcd.entry.js.map +1 -0
  441. package/dist/native/p-5439afb8.js +3 -0
  442. package/dist/native/p-5439afb8.js.map +1 -0
  443. package/dist/native/p-54df2174.entry.js +2 -0
  444. package/dist/native/p-54df2174.entry.js.map +1 -0
  445. package/dist/native/{p-74407727.js → p-56f71851.js} +2 -2
  446. package/dist/native/p-56f71851.js.map +1 -0
  447. package/dist/native/p-5f1a7e6e.entry.js +2 -0
  448. package/dist/native/p-5f1a7e6e.entry.js.map +1 -0
  449. package/dist/native/{p-575ea40b.entry.js → p-61d2cb2e.entry.js} +2 -2
  450. package/dist/native/p-87083363.entry.js +2 -0
  451. package/dist/native/p-87083363.entry.js.map +1 -0
  452. package/dist/native/p-892052c2.entry.js +2 -0
  453. package/dist/native/p-8c1a6aa6.entry.js +2 -0
  454. package/dist/native/p-8c1a6aa6.entry.js.map +1 -0
  455. package/dist/native/p-8ee30013.entry.js +2 -0
  456. package/dist/native/{p-9341cf9d.entry.js.map → p-8ee30013.entry.js.map} +1 -1
  457. package/dist/native/{p-f7db0785.entry.js → p-8f4788b9.entry.js} +3 -3
  458. package/dist/native/{p-f7db0785.entry.js.map → p-8f4788b9.entry.js.map} +1 -1
  459. package/dist/native/{p-788712dd.entry.js → p-96902bb3.entry.js} +2 -2
  460. package/dist/native/p-99e7a452.entry.js +2 -0
  461. package/dist/native/p-99e7a452.entry.js.map +1 -0
  462. package/dist/native/p-a06bafad.entry.js +2 -0
  463. package/dist/native/{p-18b227b5.entry.js.map → p-a06bafad.entry.js.map} +1 -1
  464. package/dist/native/p-a5c8eee9.js +2 -0
  465. package/dist/native/p-a5c8eee9.js.map +1 -0
  466. package/dist/native/{p-552e7ea4.entry.js → p-a998f8df.entry.js} +2 -2
  467. package/dist/native/p-aa2834e2.entry.js +2 -0
  468. package/dist/native/p-ab5a8ce5.entry.js +2 -0
  469. package/dist/native/p-bd6d9237.entry.js +7 -0
  470. package/dist/native/p-bd6d9237.entry.js.map +1 -0
  471. package/dist/native/p-beab7cbd.entry.js +2 -0
  472. package/dist/native/p-c1765831.js +2 -0
  473. package/dist/native/p-c1765831.js.map +1 -0
  474. package/dist/native/p-c398cdb4.entry.js +2 -0
  475. package/dist/native/p-c398cdb4.entry.js.map +1 -0
  476. package/dist/native/{p-2063c768.entry.js → p-d24586ed.entry.js} +2 -2
  477. package/dist/native/p-d429a343.js +2 -0
  478. package/dist/native/p-d429a343.js.map +1 -0
  479. package/dist/native/p-d67b7502.entry.js +2 -0
  480. package/dist/native/p-d67b7502.entry.js.map +1 -0
  481. package/dist/native/p-d776ed48.entry.js +2 -0
  482. package/dist/native/p-d776ed48.entry.js.map +1 -0
  483. package/dist/native/p-dc9dd5a7.entry.js +2 -0
  484. package/dist/native/p-e192c25c.entry.js +2 -0
  485. package/dist/native/p-e192c25c.entry.js.map +1 -0
  486. package/dist/native/p-e3827605.entry.js +2 -0
  487. package/dist/native/{p-5d0dc7c8.entry.js.map → p-e3827605.entry.js.map} +1 -1
  488. package/dist/native/p-e5a7596b.entry.js +2 -0
  489. package/dist/native/p-e6f45df2.entry.js +2 -0
  490. package/dist/native/p-ed47a702.entry.js +2 -0
  491. package/dist/native/p-f30ce086.entry.js +2 -0
  492. package/dist/native/{p-eda8cd9d.entry.js.map → p-f30ce086.entry.js.map} +1 -1
  493. package/dist/native/p-f3fbdea6.js +2 -0
  494. package/dist/types/components/nv-breadcrumb/nv-breadcrumb.d.ts +0 -1
  495. package/dist/types/components/nv-button/nv-button.d.ts +8 -0
  496. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +3 -0
  497. package/dist/types/components/nv-dialog/nv-dialog.d.ts +132 -0
  498. package/dist/types/components/nv-dialog/nv-dialog.docs.d.ts +4 -0
  499. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.d.ts +63 -0
  500. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.docs.d.ts +4 -0
  501. package/dist/types/components/nv-dialogheader/nv-dialogheader.d.ts +20 -0
  502. package/dist/types/components/nv-dialogheader/nv-dialogheader.docs.d.ts +4 -0
  503. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +14 -10
  504. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +34 -10
  505. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +6 -2
  506. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +4 -4
  507. package/dist/types/components/nv-fieldradio/nv-fieldradio.d.ts +2 -2
  508. package/dist/types/components/nv-fieldselect/nv-fieldselect.d.ts +20 -6
  509. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +5 -4
  510. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +3 -3
  511. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +156 -0
  512. package/dist/types/components/nv-fieldtime/nv-fieldtime.docs.d.ts +4 -0
  513. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  514. package/dist/types/components/nv-menu/nv-menu.d.ts +20 -0
  515. package/dist/types/components/nv-table/nv-table.d.ts +3 -0
  516. package/dist/types/components/{nv-fieldtoggle/nv-fieldtoggle.d.ts → nv-toggle/nv-toggle.d.ts} +4 -4
  517. package/dist/types/components/nv-toggle/nv-toggle.docs.d.ts +4 -0
  518. package/dist/types/components.d.ts +543 -98
  519. package/dist/types/index.d.ts +1 -0
  520. package/dist/types/nova-docs.d.ts +20 -0
  521. package/dist/types/utils/constants.d.ts +6 -1
  522. package/dist/types/utils/string.utils.d.ts +9 -0
  523. package/dist/vscode-data.json +293 -34
  524. package/hydrate/index.js +2631 -445
  525. package/hydrate/index.mjs +2631 -445
  526. package/package.json +25 -9
  527. package/dist/cjs/constants-9525a915.js.map +0 -1
  528. package/dist/cjs/grow.animation-46e7ae4b.js.map +0 -1
  529. package/dist/cjs/index-ddc37f87.js.map +0 -1
  530. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +0 -81
  531. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +0 -1
  532. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +0 -151
  533. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +0 -1
  534. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.docs.js.map +0 -1
  535. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +0 -1
  536. package/dist/components/nv-fieldtoggle.js +0 -108
  537. package/dist/components/nv-fieldtoggle.js.map +0 -1
  538. package/dist/components/p-3a65a05e.js.map +0 -1
  539. package/dist/components/p-3b209e94.js.map +0 -1
  540. package/dist/components/p-5b98036c.js +0 -82
  541. package/dist/components/p-5b98036c.js.map +0 -1
  542. package/dist/components/p-63afc71f.js.map +0 -1
  543. package/dist/components/p-74407727.js.map +0 -1
  544. package/dist/components/p-78e7c594.js.map +0 -1
  545. package/dist/components/p-7a19fef7.js.map +0 -1
  546. package/dist/components/p-afa1c98e.js.map +0 -1
  547. package/dist/esm/constants-7b642e1d.js.map +0 -1
  548. package/dist/esm/grow.animation-88a8ee8f.js.map +0 -1
  549. package/dist/esm/index-cd557d0a.js.map +0 -1
  550. package/dist/esm/nv-fieldtoggle.entry.js +0 -77
  551. package/dist/esm/nv-fieldtoggle.entry.js.map +0 -1
  552. package/dist/esm/nv-iconbutton_2.entry.js +0 -146
  553. package/dist/esm/nv-iconbutton_2.entry.js.map +0 -1
  554. package/dist/native/p-0a9a738c.entry.js +0 -2
  555. package/dist/native/p-0a9a738c.entry.js.map +0 -1
  556. package/dist/native/p-0f9262ed.entry.js +0 -2
  557. package/dist/native/p-18b227b5.entry.js +0 -2
  558. package/dist/native/p-1e2bd4e3.entry.js +0 -2
  559. package/dist/native/p-1e2bd4e3.entry.js.map +0 -1
  560. package/dist/native/p-225962f2.entry.js +0 -2
  561. package/dist/native/p-2ac838b8.entry.js +0 -2
  562. package/dist/native/p-3283505f.entry.js +0 -2
  563. package/dist/native/p-38d3eee3.js +0 -2
  564. package/dist/native/p-3adf0c45.entry.js +0 -2
  565. package/dist/native/p-3adf0c45.entry.js.map +0 -1
  566. package/dist/native/p-40f4828a.entry.js +0 -2
  567. package/dist/native/p-44cc8b59.entry.js +0 -2
  568. package/dist/native/p-44cc8b59.entry.js.map +0 -1
  569. package/dist/native/p-4e056cd8.entry.js +0 -2
  570. package/dist/native/p-4e056cd8.entry.js.map +0 -1
  571. package/dist/native/p-4f30312d.entry.js +0 -2
  572. package/dist/native/p-4f30312d.entry.js.map +0 -1
  573. package/dist/native/p-4ffd5c51.entry.js +0 -2
  574. package/dist/native/p-52a7f936.entry.js +0 -2
  575. package/dist/native/p-5d0dc7c8.entry.js +0 -2
  576. package/dist/native/p-5e467b49.entry.js +0 -2
  577. package/dist/native/p-5f160072.entry.js +0 -2
  578. package/dist/native/p-6bb2c88f.entry.js.map +0 -1
  579. package/dist/native/p-6ea62d17.entry.js +0 -2
  580. package/dist/native/p-6ea62d17.entry.js.map +0 -1
  581. package/dist/native/p-74407727.js.map +0 -1
  582. package/dist/native/p-7dfb4a60.entry.js +0 -2
  583. package/dist/native/p-7dfb4a60.entry.js.map +0 -1
  584. package/dist/native/p-826f1d28.entry.js +0 -2
  585. package/dist/native/p-826f1d28.entry.js.map +0 -1
  586. package/dist/native/p-87b93cc2.entry.js +0 -2
  587. package/dist/native/p-8ae9aaf1.entry.js +0 -2
  588. package/dist/native/p-8f0984b0.entry.js +0 -2
  589. package/dist/native/p-8f0984b0.entry.js.map +0 -1
  590. package/dist/native/p-9341cf9d.entry.js +0 -2
  591. package/dist/native/p-967f1aee.entry.js +0 -2
  592. package/dist/native/p-967f1aee.entry.js.map +0 -1
  593. package/dist/native/p-9b093b92.js +0 -3
  594. package/dist/native/p-a37c2ac2.js +0 -2
  595. package/dist/native/p-a37c2ac2.js.map +0 -1
  596. package/dist/native/p-cd251f91.entry.js.map +0 -1
  597. package/dist/native/p-e5fbe545.entry.js +0 -2
  598. package/dist/native/p-e5fbe545.entry.js.map +0 -1
  599. package/dist/native/p-e8d181e6.entry.js +0 -2
  600. package/dist/native/p-eade52d4.entry.js +0 -2
  601. package/dist/native/p-eade52d4.entry.js.map +0 -1
  602. package/dist/native/p-ed825c80.entry.js +0 -2
  603. package/dist/native/p-ed825c80.entry.js.map +0 -1
  604. package/dist/native/p-eda8cd9d.entry.js +0 -2
  605. package/dist/native/p-f79752ca.entry.js +0 -2
  606. package/dist/native/p-f79752ca.entry.js.map +0 -1
  607. package/dist/native/p-fc8cad13.entry.js +0 -2
  608. package/dist/types/components/nv-fieldtoggle/nv-fieldtoggle.docs.d.ts +0 -4
  609. /package/dist/native/{p-e8d181e6.entry.js.map → p-02bb8184.entry.js.map} +0 -0
  610. /package/dist/native/{p-4ffd5c51.entry.js.map → p-10ba289c.entry.js.map} +0 -0
  611. /package/dist/native/{p-52a7f936.entry.js.map → p-2aebf31b.entry.js.map} +0 -0
  612. /package/dist/native/{p-575ea40b.entry.js.map → p-61d2cb2e.entry.js.map} +0 -0
  613. /package/dist/native/{p-fc8cad13.entry.js.map → p-892052c2.entry.js.map} +0 -0
  614. /package/dist/native/{p-788712dd.entry.js.map → p-96902bb3.entry.js.map} +0 -0
  615. /package/dist/native/{p-552e7ea4.entry.js.map → p-a998f8df.entry.js.map} +0 -0
  616. /package/dist/native/{p-5f160072.entry.js.map → p-aa2834e2.entry.js.map} +0 -0
  617. /package/dist/native/{p-225962f2.entry.js.map → p-ab5a8ce5.entry.js.map} +0 -0
  618. /package/dist/native/{p-2ac838b8.entry.js.map → p-beab7cbd.entry.js.map} +0 -0
  619. /package/dist/native/{p-2063c768.entry.js.map → p-d24586ed.entry.js.map} +0 -0
  620. /package/dist/native/{p-5e467b49.entry.js.map → p-dc9dd5a7.entry.js.map} +0 -0
  621. /package/dist/native/{p-0f9262ed.entry.js.map → p-e5a7596b.entry.js.map} +0 -0
  622. /package/dist/native/{p-87b93cc2.entry.js.map → p-e6f45df2.entry.js.map} +0 -0
  623. /package/dist/native/{p-8ae9aaf1.entry.js.map → p-ed47a702.entry.js.map} +0 -0
  624. /package/dist/native/{p-38d3eee3.js.map → p-f3fbdea6.js.map} +0 -0
@@ -0,0 +1,121 @@
1
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
+ import { c as clsx } from './clsx-297c1ffe.js';
3
+
4
+ const nvIconbuttonCss = "nv-iconbutton.root{display:inline-flex;justify-content:center;align-items:center;font-style:normal;font-weight:500;font-family:\"TT Norms Pro\", sans-serif;transition:background-color 150ms ease-out;height:fit-content;width:fit-content}nv-iconbutton.size-xs{padding:var(--button-xs-icon-button-padding);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)}nv-iconbutton.size-sm{padding:var(--button-sm-icon-button-padding);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)}nv-iconbutton.size-md{padding:var(--button-md-icon-button-padding);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)}nv-iconbutton.size-lg{padding:var(--button-lg-icon-button-padding);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)}nv-iconbutton.emphasis-high{background:var(--components-button-high-background);border:1px solid var(--components-button-high-border);color:var(--components-button-high-text)}nv-iconbutton.emphasis-high:hover{background:var(--components-button-high-background-hover);color:var(--components-button-high-text-hover)}nv-iconbutton.emphasis-high:focus,nv-iconbutton.emphasis-high:focus-within{outline:none}nv-iconbutton.emphasis-high:focus-visible,nv-iconbutton.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-iconbutton.emphasis-high:disabled{background:var(--components-button-high-background);color:var(--components-button-high-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-high nv-icon>svg{color:var(--components-button-high-icon)}nv-iconbutton.emphasis-medium{background:var(--components-button-medium-background);border:1px solid var(--components-button-medium-border);color:var(--components-button-medium-text)}nv-iconbutton.emphasis-medium:hover{background:var(--components-button-medium-background-hover);color:var(--components-button-medium-text-hover)}nv-iconbutton.emphasis-medium:focus,nv-iconbutton.emphasis-medium:focus-within{outline:none}nv-iconbutton.emphasis-medium:focus-visible,nv-iconbutton.emphasis-medium:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-medium:disabled{background:var(--components-button-medium-background);color:var(--components-button-medium-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-medium nv-icon>svg{color:var(--components-button-medium-icon)}nv-iconbutton.emphasis-low{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-iconbutton.emphasis-low:hover{background:var(--components-button-low-background-hover);color:var(--components-button-low-text-hover)}nv-iconbutton.emphasis-low:focus,nv-iconbutton.emphasis-low:focus-within{outline:none}nv-iconbutton.emphasis-low:focus-visible,nv-iconbutton.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-iconbutton.emphasis-low:disabled{background:var(--components-button-low-background);color:var(--components-button-low-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-low nv-icon>svg{color:var(--components-button-low-icon)}nv-iconbutton.emphasis-lower{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-iconbutton.emphasis-lower:hover{background:var(--components-button-lower-background-hover);color:var(--components-button-lower-text-hover)}nv-iconbutton.emphasis-lower:focus,nv-iconbutton.emphasis-lower:focus-within{outline:none}nv-iconbutton.emphasis-lower:focus-visible,nv-iconbutton.emphasis-lower:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-lower:disabled{background:var(--components-button-lower-background);color:var(--components-button-lower-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-lower nv-icon>svg{color:var(--components-button-lower-icon)}nv-iconbutton.loading [slot=leading-icon]{display:none}nv-iconbutton.shape-rounded{border-radius:var(--radius-rounded-full)}";
5
+ const NvIconbuttonStyle0 = nvIconbuttonCss;
6
+
7
+ const NvIconbutton = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ if (hostRef.$hostElement$["s-ei"]) {
11
+ this.internals = hostRef.$hostElement$["s-ei"];
12
+ }
13
+ else {
14
+ this.internals = hostRef.$hostElement$.attachInternals();
15
+ hostRef.$hostElement$["s-ei"] = this.internals;
16
+ }
17
+ /****************************************************************************/
18
+ //#region PROPERTIES
19
+ /**
20
+ * Determines how large or small the button appears, allowing for
21
+ * customization of the button's dimensions to fit different design
22
+ * specifications and user needs.
23
+ */
24
+ this.size = 'md';
25
+ /**
26
+ * Adjusts the button’s emphasis to make it more or less visually prominent
27
+ * to users. Use this to draw attention to important actions or reduce focus
28
+ * on less critical ones.
29
+ */
30
+ this.emphasis = 'high';
31
+ /**
32
+ * Set this to true to show a spinner on the button, letting users know that
33
+ * their action is being processed. It helps improve user experience by
34
+ * indicating ongoing activities. The icon is not displayed when the button
35
+ * is loading. Also, the button is disabled. If you want to disable the
36
+ * button, it is not possible. It is automatically disabled when loading.
37
+ */
38
+ this.loading = false;
39
+ /**
40
+ * Disables the button, preventing user interaction.
41
+ */
42
+ this.disabled = false;
43
+ /**
44
+ * Makes the button look active when it’s within a compatible component
45
+ * like a button group.
46
+ */
47
+ this.active = false;
48
+ /**
49
+ * Sets the button type to control its function in forms. Use 'submit' to send
50
+ * form data, 'reset' to clear the form, or 'button' for a standard button
51
+ * that doesn’t interact with form submission by default.
52
+ */
53
+ this.type = 'button';
54
+ /**
55
+ * Sets the shape of the button. Choose between square and rounded.
56
+ */
57
+ this.shape = 'square';
58
+ //#endregion PROPERTIES
59
+ /****************************************************************************/
60
+ //#region METHODS
61
+ /**
62
+ * Handles form-related actions when the button is clicked.
63
+ * - Submits the form if the button type is 'submit'.
64
+ * - Resets the form if the button type is 'reset'.
65
+ * @param {Event} event - The click event.
66
+ */
67
+ this.handleClick = (event) => {
68
+ var _a, _b, _c, _d;
69
+ if (this.disabled) {
70
+ event.preventDefault();
71
+ return;
72
+ }
73
+ if (this.type === 'submit') {
74
+ (_b = (_a = this.internals) === null || _a === void 0 ? void 0 : _a.form) === null || _b === void 0 ? void 0 : _b.requestSubmit();
75
+ }
76
+ if (this.type === 'reset') {
77
+ (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
78
+ }
79
+ };
80
+ }
81
+ //#endregion METHODS
82
+ /****************************************************************************/
83
+ //#region WATCHERS
84
+ handleLoadingChange(loading) {
85
+ this.loading = loading;
86
+ this.disabled = loading;
87
+ }
88
+ handleDisabledChange(disabled) {
89
+ if (this.loading) {
90
+ this.disabled = this.loading;
91
+ }
92
+ else {
93
+ this.disabled = disabled;
94
+ }
95
+ }
96
+ //#endregion WATCHERS
97
+ /****************************************************************************/
98
+ //#region LIFECYCLE
99
+ componentWillLoad() {
100
+ if (this.loading) {
101
+ this.disabled = this.loading;
102
+ }
103
+ }
104
+ //#endregion LIFECYCLE
105
+ /****************************************************************************/
106
+ //#region RENDER
107
+ render() {
108
+ return (h(Host, { key: '1a3545bbe5f6b93f6caa60c2cd21716775406690', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && h("nv-loader", { key: 'e209ec5c84eb52be65348eb2ce0e37d90b285a99', size: this.size }), !this.loading && h("nv-icon", { key: 'c887eb9cae5b21fb2bc5de1588aac2aec4bb233b', name: this.name, size: this.size }), h("slot", { key: '3d75b5fc607fde251700f115cfd48113642a26d5' })));
109
+ }
110
+ static get formAssociated() { return true; }
111
+ get el() { return getElement(this); }
112
+ static get watchers() { return {
113
+ "loading": ["handleLoadingChange"],
114
+ "disabled": ["handleDisabledChange"]
115
+ }; }
116
+ };
117
+ NvIconbutton.style = NvIconbuttonStyle0;
118
+
119
+ export { NvIconbutton as nv_iconbutton };
120
+
121
+ //# sourceMappingURL=nv-iconbutton.entry.js.map
@@ -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 {