@nova-design-system/nova-webcomponents 3.15.0 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/dist/cjs/{index-c56424e5.js → index-93d3b2f8.js} +9 -6
  2. package/dist/cjs/index-93d3b2f8.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +6 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/native.cjs.js +2 -2
  7. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
  10. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  17. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-button.cjs.entry.js +3 -9
  20. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-buttongroup.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +177 -10
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-dialog.cjs.entry.js +32 -29
  28. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
  38. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
  41. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  43. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  45. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
  47. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  49. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-fieldtime.cjs.entry.js +25 -12
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nv-menu.cjs.entry.js +24 -9
  63. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-notification.cjs.entry.js +2 -2
  66. package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  68. package/dist/cjs/nv-popover.cjs.entry.js +67 -61
  69. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  71. package/dist/cjs/nv-split.cjs.entry.js +339 -0
  72. package/dist/cjs/nv-split.cjs.entry.js.map +1 -0
  73. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-table.cjs.entry.js +216 -310
  75. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  78. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  79. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  80. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
  81. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  82. package/dist/collection/collection-manifest.json +1 -1
  83. package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
  84. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  85. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  86. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
  87. package/dist/collection/components/nv-alert/nv-alert.css +1 -1
  88. package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
  89. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
  90. package/dist/collection/components/nv-button/nv-button.js +1 -13
  91. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  92. package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
  93. package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
  94. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
  95. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
  96. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  97. package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
  98. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  99. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
  100. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +3 -3
  101. package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  103. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
  104. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
  105. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  106. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
  107. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
  108. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  109. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
  110. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  111. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  114. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
  116. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
  117. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
  118. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
  119. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
  120. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
  121. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  122. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  123. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
  124. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
  125. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
  127. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  128. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
  129. package/dist/collection/components/nv-icon/nv-icons.js +6 -1
  130. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  131. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
  132. package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
  133. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  134. package/dist/collection/components/nv-menu/nv-menu.js +26 -8
  135. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  136. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  137. package/dist/collection/components/nv-notification/styles/nv-notification.css +2 -2
  138. package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
  139. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  140. package/dist/collection/components/nv-popover/nv-popover.js +66 -60
  141. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  142. package/dist/collection/components/nv-split/nv-split.docs.js +41 -0
  143. package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -0
  144. package/dist/collection/components/nv-split/nv-split.js +549 -0
  145. package/dist/collection/components/nv-split/nv-split.js.map +1 -0
  146. package/dist/collection/components/nv-split/styles/nv-split.css +96 -0
  147. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  148. package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
  149. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  150. package/dist/collection/components/nv-table/nv-table.js +68 -496
  151. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  152. package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
  153. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
  154. package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
  155. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
  156. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
  157. package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
  158. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
  159. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  160. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
  161. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  162. package/dist/components/index.js +7 -2
  163. package/dist/components/index.js.map +1 -1
  164. package/dist/components/nv-accordion-item.js +1 -1
  165. package/dist/components/nv-accordion.js +10 -10
  166. package/dist/components/nv-accordion.js.map +1 -1
  167. package/dist/components/nv-alert.js +3 -3
  168. package/dist/components/nv-alert.js.map +1 -1
  169. package/dist/components/nv-avatar.js +3 -3
  170. package/dist/components/nv-avatar.js.map +1 -1
  171. package/dist/components/nv-badge.js +1 -1
  172. package/dist/components/nv-breadcrumb.js +4 -4
  173. package/dist/components/nv-breadcrumb.js.map +1 -1
  174. package/dist/components/nv-breadcrumbs.js +1 -1
  175. package/dist/components/nv-button.js +1 -1
  176. package/dist/components/nv-buttongroup.js +1 -1
  177. package/dist/components/nv-calendar.js +1 -1
  178. package/dist/components/nv-col.js +1 -1
  179. package/dist/components/nv-datagrid.js +174 -7
  180. package/dist/components/nv-datagrid.js.map +1 -1
  181. package/dist/components/nv-datagridcolumn.js +1 -1
  182. package/dist/components/nv-dialog.js +37 -34
  183. package/dist/components/nv-dialog.js.map +1 -1
  184. package/dist/components/nv-dialogfooter.js +1 -1
  185. package/dist/components/nv-dialogheader.js +1 -1
  186. package/dist/components/nv-fieldcheckbox.js +1 -1
  187. package/dist/components/nv-fielddate.js +57 -32
  188. package/dist/components/nv-fielddate.js.map +1 -1
  189. package/dist/components/nv-fielddaterange.js +74 -48
  190. package/dist/components/nv-fielddaterange.js.map +1 -1
  191. package/dist/components/nv-fielddropdown.js +40 -13
  192. package/dist/components/nv-fielddropdown.js.map +1 -1
  193. package/dist/components/nv-fielddropdownitem.js +1 -1
  194. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  195. package/dist/components/nv-fieldmultiselect.js +196 -164
  196. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  197. package/dist/components/nv-fieldnumber.js +1 -1
  198. package/dist/components/nv-fieldpassword.js +5 -5
  199. package/dist/components/nv-fieldpassword.js.map +1 -1
  200. package/dist/components/nv-fieldradio.js +2 -2
  201. package/dist/components/nv-fieldradio.js.map +1 -1
  202. package/dist/components/nv-fieldselect.js +5 -5
  203. package/dist/components/nv-fieldselect.js.map +1 -1
  204. package/dist/components/nv-fieldslider.js +6 -6
  205. package/dist/components/nv-fieldslider.js.map +1 -1
  206. package/dist/components/nv-fieldtext.js +1 -1
  207. package/dist/components/nv-fieldtextarea.js +2 -2
  208. package/dist/components/nv-fieldtextarea.js.map +1 -1
  209. package/dist/components/nv-fieldtime.js +31 -17
  210. package/dist/components/nv-fieldtime.js.map +1 -1
  211. package/dist/components/nv-icon.js +1 -1
  212. package/dist/components/nv-iconbutton.js +1 -1
  213. package/dist/components/nv-loader.js +1 -1
  214. package/dist/components/nv-menu.js +30 -13
  215. package/dist/components/nv-menu.js.map +1 -1
  216. package/dist/components/nv-menuitem.js +1 -1
  217. package/dist/components/nv-notification.js +3 -3
  218. package/dist/components/nv-notification.js.map +1 -1
  219. package/dist/components/nv-notificationcontainer.js +1 -1
  220. package/dist/components/nv-popover.js +1 -1
  221. package/dist/components/nv-row.js +1 -1
  222. package/dist/components/{nv-tablecolumn.d.ts → nv-split.d.ts} +4 -4
  223. package/dist/components/nv-split.js +366 -0
  224. package/dist/components/nv-split.js.map +1 -0
  225. package/dist/components/nv-stack.js +2 -2
  226. package/dist/components/nv-table.js +216 -328
  227. package/dist/components/nv-table.js.map +1 -1
  228. package/dist/components/nv-toggle.js +2 -2
  229. package/dist/components/nv-toggle.js.map +1 -1
  230. package/dist/components/nv-togglebutton.js +1 -1
  231. package/dist/components/nv-togglebuttongroup.js +2 -2
  232. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  233. package/dist/components/nv-tooltip.js +1 -1
  234. package/dist/components/{p-00cbf2a1.js → p-0d5ed1d7.js} +3 -3
  235. package/dist/components/p-0d5ed1d7.js.map +1 -0
  236. package/dist/components/{p-54161bad.js → p-0e6f41c7.js} +2 -2
  237. package/dist/components/{p-54161bad.js.map → p-0e6f41c7.js.map} +1 -1
  238. package/dist/components/{p-0c42fafb.js → p-0fd23531.js} +6 -6
  239. package/dist/components/{p-0c42fafb.js.map → p-0fd23531.js.map} +1 -1
  240. package/dist/components/{p-a823b8e9.js → p-1639703f.js} +2 -2
  241. package/dist/components/{p-a823b8e9.js.map → p-1639703f.js.map} +1 -1
  242. package/dist/components/{p-e5c62ea8.js → p-2cc83e0c.js} +3 -3
  243. package/dist/components/{p-e5c62ea8.js.map → p-2cc83e0c.js.map} +1 -1
  244. package/dist/components/{p-3763c9c4.js → p-31478080.js} +3 -3
  245. package/dist/components/{p-3763c9c4.js.map → p-31478080.js.map} +1 -1
  246. package/dist/components/{p-178fa27e.js → p-378e3127.js} +6 -6
  247. package/dist/components/{p-178fa27e.js.map → p-378e3127.js.map} +1 -1
  248. package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
  249. package/dist/components/p-429e01f3.js.map +1 -0
  250. package/dist/components/p-47d499b4.js +88 -0
  251. package/dist/components/p-47d499b4.js.map +1 -0
  252. package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
  253. package/dist/components/p-5829b9f7.js.map +1 -0
  254. package/dist/components/{p-ee8944f3.js → p-63595ea1.js} +68 -62
  255. package/dist/components/p-63595ea1.js.map +1 -0
  256. package/dist/components/{p-1af3591a.js → p-6f2b257e.js} +3 -3
  257. package/dist/components/{p-1af3591a.js.map → p-6f2b257e.js.map} +1 -1
  258. package/dist/components/{p-4fc01a78.js → p-7112612c.js} +5 -5
  259. package/dist/components/p-7112612c.js.map +1 -0
  260. package/dist/components/{p-7426b20f.js → p-715e5235.js} +3 -3
  261. package/dist/components/{p-7426b20f.js.map → p-715e5235.js.map} +1 -1
  262. package/dist/components/{p-31e262bd.js → p-7b5102c8.js} +5 -5
  263. package/dist/components/{p-31e262bd.js.map → p-7b5102c8.js.map} +1 -1
  264. package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
  265. package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
  266. package/dist/components/p-9e7468e3.js +185 -0
  267. package/dist/components/p-9e7468e3.js.map +1 -0
  268. package/dist/components/{p-75200cc0.js → p-df5d76a5.js} +3 -3
  269. package/dist/components/{p-75200cc0.js.map → p-df5d76a5.js.map} +1 -1
  270. package/dist/components/{p-51459a44.js → p-f2bac2aa.js} +4 -4
  271. package/dist/components/{p-51459a44.js.map → p-f2bac2aa.js.map} +1 -1
  272. package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +9 -6
  273. package/dist/esm/index-dc2723f3.js.map +1 -0
  274. package/dist/esm/index.js +6 -1
  275. package/dist/esm/index.js.map +1 -1
  276. package/dist/esm/loader.js +3 -3
  277. package/dist/esm/native.js +3 -3
  278. package/dist/esm/nv-accordion-item.entry.js +2 -2
  279. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  280. package/dist/esm/nv-accordion.entry.js +6 -6
  281. package/dist/esm/nv-accordion.entry.js.map +1 -1
  282. package/dist/esm/nv-alert.entry.js +2 -2
  283. package/dist/esm/nv-alert.entry.js.map +1 -1
  284. package/dist/esm/nv-avatar.entry.js +2 -2
  285. package/dist/esm/nv-avatar.entry.js.map +1 -1
  286. package/dist/esm/nv-badge_2.entry.js +1 -1
  287. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  288. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  289. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  290. package/dist/esm/nv-button.entry.js +3 -9
  291. package/dist/esm/nv-button.entry.js.map +1 -1
  292. package/dist/esm/nv-buttongroup.entry.js +1 -1
  293. package/dist/esm/nv-calendar.entry.js +1 -1
  294. package/dist/esm/nv-col.entry.js +1 -1
  295. package/dist/esm/nv-datagrid.entry.js +172 -5
  296. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  297. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  298. package/dist/esm/nv-dialog.entry.js +32 -29
  299. package/dist/esm/nv-dialog.entry.js.map +1 -1
  300. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  301. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  302. package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
  303. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  304. package/dist/esm/nv-fielddate.entry.js +51 -26
  305. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  306. package/dist/esm/nv-fielddaterange.entry.js +68 -42
  307. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  308. package/dist/esm/nv-fielddropdown.entry.js +33 -7
  309. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  310. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  311. package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
  312. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  313. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  314. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  315. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  316. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  317. package/dist/esm/nv-fieldradio.entry.js +2 -2
  318. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  319. package/dist/esm/nv-fieldselect.entry.js +2 -2
  320. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  321. package/dist/esm/nv-fieldslider.entry.js +2 -2
  322. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  323. package/dist/esm/nv-fieldtext.entry.js +2 -2
  324. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  325. package/dist/esm/nv-fieldtextarea.entry.js +2 -2
  326. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  327. package/dist/esm/nv-fieldtime.entry.js +25 -12
  328. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  329. package/dist/esm/nv-icon.entry.js +2 -2
  330. package/dist/esm/nv-icon.entry.js.map +1 -1
  331. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  332. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  333. package/dist/esm/nv-menu.entry.js +24 -9
  334. package/dist/esm/nv-menu.entry.js.map +1 -1
  335. package/dist/esm/nv-menuitem.entry.js +1 -1
  336. package/dist/esm/nv-notification.entry.js +2 -2
  337. package/dist/esm/nv-notification.entry.js.map +1 -1
  338. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  339. package/dist/esm/nv-popover.entry.js +67 -61
  340. package/dist/esm/nv-popover.entry.js.map +1 -1
  341. package/dist/esm/nv-row.entry.js +1 -1
  342. package/dist/esm/nv-split.entry.js +335 -0
  343. package/dist/esm/nv-split.entry.js.map +1 -0
  344. package/dist/esm/nv-stack.entry.js +2 -2
  345. package/dist/esm/nv-table.entry.js +216 -310
  346. package/dist/esm/nv-table.entry.js.map +1 -1
  347. package/dist/esm/nv-toggle.entry.js +2 -2
  348. package/dist/esm/nv-toggle.entry.js.map +1 -1
  349. package/dist/esm/nv-togglebutton.entry.js +1 -1
  350. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  351. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  352. package/dist/esm/nv-tooltip.entry.js +1 -1
  353. package/dist/native/index.esm.js +1 -1
  354. package/dist/native/index.esm.js.map +1 -1
  355. package/dist/native/native.css +1 -1
  356. package/dist/native/native.esm.js +1 -1
  357. package/dist/native/native.esm.js.map +1 -1
  358. package/dist/native/p-107e80c6.entry.js +2 -0
  359. package/dist/native/p-107e80c6.entry.js.map +1 -0
  360. package/dist/native/{p-5c697133.entry.js → p-112d096c.entry.js} +2 -2
  361. package/dist/native/p-14e622e1.entry.js +2 -0
  362. package/dist/native/p-14e622e1.entry.js.map +1 -0
  363. package/dist/native/p-217de553.entry.js +2 -0
  364. package/dist/native/p-217de553.entry.js.map +1 -0
  365. package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
  366. package/dist/native/p-2364aefa.entry.js +2 -0
  367. package/dist/native/p-2364aefa.entry.js.map +1 -0
  368. package/dist/native/p-23ee0384.entry.js +2 -0
  369. package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
  370. package/dist/native/p-26513cbd.entry.js +2 -0
  371. package/dist/native/p-26513cbd.entry.js.map +1 -0
  372. package/dist/native/p-278613a3.entry.js +2 -0
  373. package/dist/native/{p-6cb6679b.entry.js.map → p-278613a3.entry.js.map} +1 -1
  374. package/dist/native/p-2dfd786f.entry.js +2 -0
  375. package/dist/native/{p-29df974e.entry.js.map → p-2dfd786f.entry.js.map} +1 -1
  376. package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
  377. package/dist/native/p-3060df80.js.map +1 -0
  378. package/dist/native/p-4dc7483d.entry.js +2 -0
  379. package/dist/native/{p-c7b7ffaf.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
  380. package/dist/native/p-4eaf417d.entry.js +13 -0
  381. package/dist/native/p-4eaf417d.entry.js.map +1 -0
  382. package/dist/native/p-5039ceb8.entry.js +2 -0
  383. package/dist/native/p-5039ceb8.entry.js.map +1 -0
  384. package/dist/native/{p-08322093.entry.js → p-52d2c0ae.entry.js} +2 -2
  385. package/dist/native/p-638967bf.entry.js +2 -0
  386. package/dist/native/p-638967bf.entry.js.map +1 -0
  387. package/dist/native/{p-19090193.entry.js → p-647a0765.entry.js} +2 -2
  388. package/dist/native/p-68dc02be.entry.js +2 -0
  389. package/dist/native/p-68dc02be.entry.js.map +1 -0
  390. package/dist/native/p-6d427897.entry.js +2 -0
  391. package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
  392. package/dist/native/{p-1504e28b.entry.js → p-701b48a4.entry.js} +2 -2
  393. package/dist/native/p-7c9bf981.entry.js +2 -0
  394. package/dist/native/p-835abdb9.entry.js +2 -0
  395. package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
  396. package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
  397. package/dist/native/p-88f9fca5.entry.js +2 -0
  398. package/dist/native/p-88f9fca5.entry.js.map +1 -0
  399. package/dist/native/{p-d2c9247b.entry.js → p-8e423742.entry.js} +3 -3
  400. package/dist/native/{p-d2c9247b.entry.js.map → p-8e423742.entry.js.map} +1 -1
  401. package/dist/native/{p-d882f417.entry.js → p-91fab6c2.entry.js} +2 -2
  402. package/dist/native/p-91fab6c2.entry.js.map +1 -0
  403. package/dist/native/p-95184ea2.entry.js +2 -0
  404. package/dist/native/p-95184ea2.entry.js.map +1 -0
  405. package/dist/native/p-9613087c.entry.js +2 -0
  406. package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
  407. package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
  408. package/dist/native/p-a6fc987a.entry.js +2 -0
  409. package/dist/native/p-a6fc987a.entry.js.map +1 -0
  410. package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
  411. package/dist/native/p-acada158.entry.js +2 -0
  412. package/dist/native/p-acada158.entry.js.map +1 -0
  413. package/dist/native/p-b06f0e61.entry.js +2 -0
  414. package/dist/native/p-b06f0e61.entry.js.map +1 -0
  415. package/dist/native/p-b4c15f25.entry.js +2 -0
  416. package/dist/native/p-b4c15f25.entry.js.map +1 -0
  417. package/dist/native/{p-74b129e9.entry.js → p-bcf41cd0.entry.js} +2 -2
  418. package/dist/native/{p-c66565f8.entry.js → p-cb0293ec.entry.js} +2 -2
  419. package/dist/native/p-ce97ce24.entry.js +2 -0
  420. package/dist/native/p-ce97ce24.entry.js.map +1 -0
  421. package/dist/native/p-d0db5e72.entry.js +2 -0
  422. package/dist/native/p-d0db5e72.entry.js.map +1 -0
  423. package/dist/native/p-d7f444fb.entry.js +2 -0
  424. package/dist/native/p-d7f444fb.entry.js.map +1 -0
  425. package/dist/native/p-d878e90a.entry.js +2 -0
  426. package/dist/native/p-d878e90a.entry.js.map +1 -0
  427. package/dist/native/{p-e2c99ce2.entry.js → p-d94bf052.entry.js} +2 -2
  428. package/dist/native/p-ddc41f1f.entry.js +2 -0
  429. package/dist/native/p-ddc41f1f.entry.js.map +1 -0
  430. package/dist/native/p-f30e0be6.entry.js +2 -0
  431. package/dist/native/p-f30e0be6.entry.js.map +1 -0
  432. package/dist/native/p-f3c73492.entry.js +2 -0
  433. package/dist/native/{p-b32d0a5a.entry.js.map → p-f3c73492.entry.js.map} +1 -1
  434. package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
  435. package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
  436. package/dist/types/components/nv-button/nv-button.d.ts +0 -1
  437. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
  438. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
  439. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
  440. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
  441. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
  442. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
  443. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  444. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
  445. package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
  446. package/dist/types/components/nv-split/nv-split.d.ts +128 -0
  447. package/dist/types/components/nv-split/nv-split.docs.d.ts +4 -0
  448. package/dist/types/components/nv-table/nv-table.d.ts +6 -87
  449. package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
  450. package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
  451. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
  452. package/dist/types/components.d.ts +102 -200
  453. package/dist/vscode-data.json +43 -41
  454. package/hydrate/index.js +1148 -783
  455. package/hydrate/index.mjs +1148 -783
  456. package/package.json +10 -10
  457. package/dist/cjs/dom.utils-4d43f69a.js +0 -170
  458. package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
  459. package/dist/cjs/index-c56424e5.js.map +0 -1
  460. package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
  461. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
  462. package/dist/collection/components/nv-table/nv-table.css +0 -35
  463. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
  464. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
  465. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
  466. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
  467. package/dist/components/nv-tablecolumn.js +0 -38
  468. package/dist/components/nv-tablecolumn.js.map +0 -1
  469. package/dist/components/p-00cbf2a1.js.map +0 -1
  470. package/dist/components/p-4fc01a78.js.map +0 -1
  471. package/dist/components/p-51876ca1.js.map +0 -1
  472. package/dist/components/p-5d14ba3f.js +0 -88
  473. package/dist/components/p-5d14ba3f.js.map +0 -1
  474. package/dist/components/p-95857e4f.js +0 -191
  475. package/dist/components/p-95857e4f.js.map +0 -1
  476. package/dist/components/p-aff3ed68.js.map +0 -1
  477. package/dist/components/p-cb34aa4f.js +0 -167
  478. package/dist/components/p-cb34aa4f.js.map +0 -1
  479. package/dist/components/p-ee8944f3.js.map +0 -1
  480. package/dist/esm/dom.utils-ac71e0ef.js +0 -167
  481. package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
  482. package/dist/esm/index-a1936cd0.js.map +0 -1
  483. package/dist/esm/nv-tablecolumn.entry.js +0 -17
  484. package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
  485. package/dist/native/p-0a99c6fb.entry.js +0 -2
  486. package/dist/native/p-0a99c6fb.entry.js.map +0 -1
  487. package/dist/native/p-1ad1bff9.entry.js +0 -2
  488. package/dist/native/p-1ad1bff9.entry.js.map +0 -1
  489. package/dist/native/p-1c83f540.entry.js +0 -2
  490. package/dist/native/p-1c83f540.entry.js.map +0 -1
  491. package/dist/native/p-224b1a01.entry.js +0 -2
  492. package/dist/native/p-224b1a01.entry.js.map +0 -1
  493. package/dist/native/p-234cfa2e.entry.js +0 -2
  494. package/dist/native/p-2781637d.entry.js +0 -2
  495. package/dist/native/p-29df974e.entry.js +0 -2
  496. package/dist/native/p-29f68e07.entry.js +0 -2
  497. package/dist/native/p-45506c37.entry.js +0 -2
  498. package/dist/native/p-45506c37.entry.js.map +0 -1
  499. package/dist/native/p-48774d0c.entry.js +0 -13
  500. package/dist/native/p-48774d0c.entry.js.map +0 -1
  501. package/dist/native/p-4ec61dec.entry.js +0 -2
  502. package/dist/native/p-4ec61dec.entry.js.map +0 -1
  503. package/dist/native/p-5f0776cb.entry.js +0 -2
  504. package/dist/native/p-5f0776cb.entry.js.map +0 -1
  505. package/dist/native/p-6c7a9a21.entry.js +0 -2
  506. package/dist/native/p-6c7a9a21.entry.js.map +0 -1
  507. package/dist/native/p-6cb6679b.entry.js +0 -2
  508. package/dist/native/p-6d13a851.entry.js +0 -2
  509. package/dist/native/p-6d13a851.entry.js.map +0 -1
  510. package/dist/native/p-87784622.entry.js +0 -2
  511. package/dist/native/p-87784622.entry.js.map +0 -1
  512. package/dist/native/p-92931ab8.entry.js +0 -2
  513. package/dist/native/p-9a46baa9.entry.js +0 -2
  514. package/dist/native/p-9a46baa9.entry.js.map +0 -1
  515. package/dist/native/p-a34beedf.entry.js +0 -2
  516. package/dist/native/p-a34beedf.entry.js.map +0 -1
  517. package/dist/native/p-a69dbcef.entry.js +0 -2
  518. package/dist/native/p-a69dbcef.entry.js.map +0 -1
  519. package/dist/native/p-b32d0a5a.entry.js +0 -2
  520. package/dist/native/p-bc01787b.entry.js +0 -2
  521. package/dist/native/p-bc01787b.entry.js.map +0 -1
  522. package/dist/native/p-c7b7ffaf.entry.js +0 -2
  523. package/dist/native/p-cb34aa4f.js +0 -2
  524. package/dist/native/p-cb34aa4f.js.map +0 -1
  525. package/dist/native/p-cea942b9.entry.js +0 -2
  526. package/dist/native/p-cea942b9.entry.js.map +0 -1
  527. package/dist/native/p-d0a33e64.js.map +0 -1
  528. package/dist/native/p-d0ef1bbb.entry.js +0 -2
  529. package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
  530. package/dist/native/p-d882f417.entry.js.map +0 -1
  531. package/dist/native/p-dd023fd6.entry.js +0 -2
  532. package/dist/native/p-dd023fd6.entry.js.map +0 -1
  533. package/dist/native/p-e765a624.entry.js +0 -2
  534. package/dist/native/p-e765a624.entry.js.map +0 -1
  535. package/dist/native/p-f0cbfb3d.entry.js +0 -2
  536. package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
  537. package/dist/native/p-f5120223.entry.js +0 -2
  538. package/dist/native/p-fa177c39.entry.js +0 -2
  539. package/dist/native/p-fa177c39.entry.js.map +0 -1
  540. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
  541. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
  542. /package/dist/native/{p-5c697133.entry.js.map → p-112d096c.entry.js.map} +0 -0
  543. /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
  544. /package/dist/native/{p-08322093.entry.js.map → p-52d2c0ae.entry.js.map} +0 -0
  545. /package/dist/native/{p-19090193.entry.js.map → p-647a0765.entry.js.map} +0 -0
  546. /package/dist/native/{p-1504e28b.entry.js.map → p-701b48a4.entry.js.map} +0 -0
  547. /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
  548. /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
  549. /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
  550. /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
  551. /package/dist/native/{p-74b129e9.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
  552. /package/dist/native/{p-c66565f8.entry.js.map → p-cb0293ec.entry.js.map} +0 -0
  553. /package/dist/native/{p-e2c99ce2.entry.js.map → p-d94bf052.entry.js.map} +0 -0
  554. /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
@@ -6,8 +6,8 @@ nv-iconbutton.root {
6
6
  justify-content: center;
7
7
  align-items: center;
8
8
  font-style: normal;
9
- font-weight: 500;
10
- font-family: "TT Norms Pro", sans-serif;
9
+ font-weight: var(--font-weight-medium-emphasis);
10
+ font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;
11
11
  transition: background-color 150ms ease-out;
12
12
  height: fit-content;
13
13
  width: fit-content;
@@ -5,10 +5,12 @@ const NvMenuDocs = {
5
5
  subcomponents: ['nv-menuitem', 'nv-iconbutton'],
6
6
  composedComponents: ['nv-menuitem'],
7
7
  stories: [
8
+ // Default
8
9
  {
9
10
  name: 'Default',
10
11
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "pb-20" }, h("nv-iconbutton", { slot: "trigger", name: "menu", shape: "rounded" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "user", shortcut: "\u2318K", id: "user-settings", label: "User settings" }), h("nv-menuitem", { icon: "bulb", shortcut: "\u2318F", id: "find-all-items", label: "Find all items" })))),
11
12
  },
13
+ // Open
12
14
  {
13
15
  name: nameof(x => x.open),
14
16
  args: {
@@ -16,10 +18,12 @@ const NvMenuDocs = {
16
18
  },
17
19
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "pb-20" }, h("nv-iconbutton", { slot: "trigger", name: "menu", shape: "rounded" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "user", shortcut: "\u2318K", id: "user-settings", label: "User settings" }), h("nv-menuitem", { icon: "bulb", shortcut: "\u2318F", id: "find-all-items", label: "Find all items" })))),
18
20
  },
21
+ // Nested
19
22
  {
20
23
  name: nameof(x => x.nested),
21
24
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "pb-20" }, h("nv-iconbutton", { name: "menu", slot: "trigger", shape: "rounded" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "adjustments-up", shortcut: "\u2318U", id: "up", disabled: true, label: "This is disabled" }), h("nv-menu", { nested: true, placement: "right-start" }, h("nv-menuitem", { slot: "trigger", "has-submenu": true, icon: "cloud", label: "Cloud Functions" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "upload", id: "upload", label: "Upload" }), h("nv-menuitem", { icon: "download", id: "download", label: "Download" }), h("nv-menu", { nested: true, placement: "right-start" }, h("nv-menuitem", { slot: "trigger", "has-submenu": true, icon: "engine", label: "Even more functions?" }), h("ul", { slot: "content" }, h("nv-menuitem", { id: "deep", label: "Deeply nested" }), h("nv-menuitem", { id: "nav", label: "Have you tried keyboard navigation?" })))))))),
22
25
  },
26
+ // DisableCloseOnSelect
23
27
  {
24
28
  name: nameof(x => x.disableCloseOnSelect),
25
29
  args: {
@@ -27,6 +31,7 @@ const NvMenuDocs = {
27
31
  },
28
32
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "pb-20" }, h("nv-iconbutton", { name: "menu", slot: "trigger", shape: "rounded" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "adjustments-up", id: "no-close", label: "Select Me, I won't close" }), h("nv-menuitem", { icon: "activity", id: "no-close-either", label: "Me neither" })))),
29
33
  },
34
+ // Placement
30
35
  {
31
36
  name: nameof(x => x.placement),
32
37
  args: {
@@ -34,6 +39,7 @@ const NvMenuDocs = {
34
39
  },
35
40
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "p-20 flex justify-center" }, h("nv-iconbutton", { name: "menu", slot: "trigger", shape: "rounded" }), h("ul", { slot: "content" }, h("nv-menuitem", { icon: "help", id: "help", label: "Where am I?" })))),
36
41
  },
42
+ // Items
37
43
  {
38
44
  name: nameof(x => x.items),
39
45
  args: {
@@ -90,6 +96,7 @@ const NvMenuDocs = {
90
96
  },
91
97
  template: (h("nv-menu", { "data-storybook-args": true, "data-class": "pb-20" }, h("nv-iconbutton", { slot: "trigger", name: "menu", shape: "rounded" }))),
92
98
  },
99
+ // Separator
93
100
  {
94
101
  name: 'Separator',
95
102
  description: 'Use an hr element to create a separator between menu items.',
@@ -1 +1 @@
1
- {"version":3,"file":"nv-menu.docs.js","sourceRoot":"","sources":["../../../src/components/nv-menu/nv-menu.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvMenuDocs: NovaDocs<Components.NvMenu> = {\n component: 'nv-menu',\n subcomponents: ['nv-menuitem', 'nv-iconbutton'],\n composedComponents: ['nv-menuitem'],\n stories: [\n {\n name: 'Default',\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"user\"\n shortcut=\"&#8984;K\"\n id=\"user-settings\"\n label=\"User settings\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n {\n name: nameof<Components.NvMenu>(x => x.open),\n args: {\n open: true,\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"user\"\n shortcut=\"&#8984;K\"\n id=\"user-settings\"\n label=\"User settings\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n {\n name: nameof<Components.NvMenu>(x => x.nested),\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"adjustments-up\"\n shortcut=\"&#8984;U\"\n id=\"up\"\n disabled\n label=\"This is disabled\"\n ></nv-menuitem>\n <nv-menu nested placement=\"right-start\">\n <nv-menuitem\n slot=\"trigger\"\n has-submenu\n icon=\"cloud\"\n label=\"Cloud Functions\"\n ></nv-menuitem>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"upload\"\n id=\"upload\"\n label=\"Upload\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"download\"\n id=\"download\"\n label=\"Download\"\n ></nv-menuitem>\n <nv-menu nested placement=\"right-start\">\n <nv-menuitem\n slot=\"trigger\"\n has-submenu\n icon=\"engine\"\n label=\"Even more functions?\"\n ></nv-menuitem>\n <ul slot=\"content\">\n <nv-menuitem id=\"deep\" label=\"Deeply nested\"></nv-menuitem>\n <nv-menuitem\n id=\"nav\"\n label=\"Have you tried keyboard navigation?\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n </ul>\n </nv-menu>\n </ul>\n </nv-menu>\n ),\n },\n {\n name: nameof<Components.NvMenu>(x => x.disableCloseOnSelect),\n args: {\n disableCloseOnSelect: true,\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"adjustments-up\"\n id=\"no-close\"\n label=\"Select Me, I won't close\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"activity\"\n id=\"no-close-either\"\n label=\"Me neither\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n {\n name: nameof<Components.NvMenu>(x => x.placement),\n args: {\n placement: 'top-start',\n },\n template: (\n <nv-menu data-storybook-args data-class=\"p-20 flex justify-center\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"help\"\n id=\"help\"\n label=\"Where am I?\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n {\n name: nameof<Components.NvMenu>(x => x.items),\n args: {\n items: [\n {\n label: 'Paramètres',\n icon: 'settings',\n shortcut: '⌘S',\n value: 'settings',\n },\n {\n label: 'Options avancées',\n icon: 'adjustments',\n hasSubmenu: true,\n value: 'advanced',\n submenuItems: [\n {\n label: 'Configuration',\n icon: 'settings',\n value: 'config',\n },\n {\n label: 'Sécurité',\n icon: 'shield',\n hasSubmenu: true,\n value: 'security',\n submenuItems: [\n {\n label: 'Permissions',\n icon: 'lock',\n value: 'permissions',\n },\n {\n label: 'Authentification',\n icon: 'user',\n value: 'authentication',\n },\n ],\n },\n ],\n },\n {\n label: 'Profil',\n icon: 'user',\n value: 'profile',\n disabled: true,\n },\n {\n label: 'Déconnexion',\n icon: 'logout',\n value: 'logout',\n },\n ],\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n </nv-menu>\n ),\n },\n {\n name: 'Separator',\n description:\n 'Use an hr element to create a separator between menu items.',\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem icon=\"upload\" id=\"upload\" label=\"Upload\"></nv-menuitem>\n <nv-menuitem\n icon=\"download\"\n id=\"download\"\n label=\"Download\"\n ></nv-menuitem>\n <hr />\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n ],\n};\n\nexport default NvMenuDocs;\n"]}
1
+ {"version":3,"file":"nv-menu.docs.js","sourceRoot":"","sources":["../../../src/components/nv-menu/nv-menu.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvMenuDocs: NovaDocs<Components.NvMenu> = {\n component: 'nv-menu',\n subcomponents: ['nv-menuitem', 'nv-iconbutton'],\n composedComponents: ['nv-menuitem'],\n stories: [\n // Default\n {\n name: 'Default',\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"user\"\n shortcut=\"&#8984;K\"\n id=\"user-settings\"\n label=\"User settings\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n // Open\n {\n name: nameof<Components.NvMenu>(x => x.open),\n args: {\n open: true,\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"user\"\n shortcut=\"&#8984;K\"\n id=\"user-settings\"\n label=\"User settings\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n // Nested\n {\n name: nameof<Components.NvMenu>(x => x.nested),\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"adjustments-up\"\n shortcut=\"&#8984;U\"\n id=\"up\"\n disabled\n label=\"This is disabled\"\n ></nv-menuitem>\n <nv-menu nested placement=\"right-start\">\n <nv-menuitem\n slot=\"trigger\"\n has-submenu\n icon=\"cloud\"\n label=\"Cloud Functions\"\n ></nv-menuitem>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"upload\"\n id=\"upload\"\n label=\"Upload\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"download\"\n id=\"download\"\n label=\"Download\"\n ></nv-menuitem>\n <nv-menu nested placement=\"right-start\">\n <nv-menuitem\n slot=\"trigger\"\n has-submenu\n icon=\"engine\"\n label=\"Even more functions?\"\n ></nv-menuitem>\n <ul slot=\"content\">\n <nv-menuitem id=\"deep\" label=\"Deeply nested\"></nv-menuitem>\n <nv-menuitem\n id=\"nav\"\n label=\"Have you tried keyboard navigation?\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n </ul>\n </nv-menu>\n </ul>\n </nv-menu>\n ),\n },\n // DisableCloseOnSelect\n {\n name: nameof<Components.NvMenu>(x => x.disableCloseOnSelect),\n args: {\n disableCloseOnSelect: true,\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"adjustments-up\"\n id=\"no-close\"\n label=\"Select Me, I won't close\"\n ></nv-menuitem>\n <nv-menuitem\n icon=\"activity\"\n id=\"no-close-either\"\n label=\"Me neither\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n // Placement\n {\n name: nameof<Components.NvMenu>(x => x.placement),\n args: {\n placement: 'top-start',\n },\n template: (\n <nv-menu data-storybook-args data-class=\"p-20 flex justify-center\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem\n icon=\"help\"\n id=\"help\"\n label=\"Where am I?\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n // Items\n {\n name: nameof<Components.NvMenu>(x => x.items),\n args: {\n items: [\n {\n label: 'Paramètres',\n icon: 'settings',\n shortcut: '⌘S',\n value: 'settings',\n },\n {\n label: 'Options avancées',\n icon: 'adjustments',\n hasSubmenu: true,\n value: 'advanced',\n submenuItems: [\n {\n label: 'Configuration',\n icon: 'settings',\n value: 'config',\n },\n {\n label: 'Sécurité',\n icon: 'shield',\n hasSubmenu: true,\n value: 'security',\n submenuItems: [\n {\n label: 'Permissions',\n icon: 'lock',\n value: 'permissions',\n },\n {\n label: 'Authentification',\n icon: 'user',\n value: 'authentication',\n },\n ],\n },\n ],\n },\n {\n label: 'Profil',\n icon: 'user',\n value: 'profile',\n disabled: true,\n },\n {\n label: 'Déconnexion',\n icon: 'logout',\n value: 'logout',\n },\n ],\n },\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n slot=\"trigger\"\n name=\"menu\"\n shape=\"rounded\"\n ></nv-iconbutton>\n </nv-menu>\n ),\n },\n // Separator\n {\n name: 'Separator',\n description:\n 'Use an hr element to create a separator between menu items.',\n template: (\n <nv-menu data-storybook-args data-class=\"pb-20\">\n <nv-iconbutton\n name=\"menu\"\n slot=\"trigger\"\n shape=\"rounded\"\n ></nv-iconbutton>\n <ul slot=\"content\">\n <nv-menuitem icon=\"upload\" id=\"upload\" label=\"Upload\"></nv-menuitem>\n <nv-menuitem\n icon=\"download\"\n id=\"download\"\n label=\"Download\"\n ></nv-menuitem>\n <hr />\n <nv-menuitem\n icon=\"bulb\"\n shortcut=\"&#8984;F\"\n id=\"find-all-items\"\n label=\"Find all items\"\n ></nv-menuitem>\n </ul>\n </nv-menu>\n ),\n },\n ],\n};\n\nexport default NvMenuDocs;\n"]}
@@ -62,6 +62,24 @@ export class NvMenu {
62
62
  async close() {
63
63
  this.open = false;
64
64
  }
65
+ focusFirstItem() {
66
+ const firstButton = this.popoverElement.querySelector('nv-menuitem');
67
+ if (firstButton) {
68
+ requestAnimationFrame(() => firstButton.focus());
69
+ }
70
+ }
71
+ //#endregion EVENTS
72
+ /****************************************************************************/
73
+ //#region WATCHERS
74
+ handleOpenChange(newOpen) {
75
+ // React to external changes, e.g., focus first item if opened externally
76
+ if (newOpen) {
77
+ this.focusFirstItem();
78
+ }
79
+ }
80
+ //#endregion WATCHERS
81
+ /****************************************************************************/
82
+ //#region LISTENERS
65
83
  handleMenuItemSelect(event) {
66
84
  if (this.disableCloseOnSelect)
67
85
  return;
@@ -174,13 +192,7 @@ export class NvMenu {
174
192
  if (triggerHasFocus && triggerHasFocusVisible)
175
193
  this.focusFirstItem();
176
194
  }
177
- focusFirstItem() {
178
- const firstButton = this.popoverElement.querySelector('nv-menuitem');
179
- if (firstButton) {
180
- requestAnimationFrame(() => firstButton.focus());
181
- }
182
- }
183
- //#endregion EVENTS
195
+ //#endregion LISTENERS
184
196
  /****************************************************************************/
185
197
  //#region LIFECYCLE
186
198
  componentWillLoad() {
@@ -189,7 +201,7 @@ export class NvMenu {
189
201
  });
190
202
  }
191
203
  render() {
192
- return (h(Host, { key: '163c25a3424503f4c32e5c47647d685882f6dd57' }, h("slot", { key: '64c7fe175a04a174f92d4fe62026ab03db6f16a9', name: "trigger" }), h("nv-popover", { key: 'bd8e058010e53b1f68cbefcba6871ee7a02f0e9a', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.items ? (h("ul", { slot: "content" }, this.renderMenuItems())) : (h("slot", { name: "content" })))));
204
+ return (h(Host, { key: '9c580e2085804dead07f60f3ce4494bed123a58e' }, h("slot", { key: '87740cf4b003379eb7a4d011b2b80640e9d7c24f', name: "trigger" }), h("nv-popover", { key: '102ebedefdc1b6ac5f10900a82c904b12e4cddb1', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.items ? (h("ul", { slot: "content" }, this.renderMenuItems())) : (h("slot", { name: "content" })))));
193
205
  }
194
206
  static get is() { return "nv-menu"; }
195
207
  static get originalStyleUrls() {
@@ -379,6 +391,12 @@ export class NvMenu {
379
391
  };
380
392
  }
381
393
  static get elementRef() { return "el"; }
394
+ static get watchers() {
395
+ return [{
396
+ "propName": "open",
397
+ "methodName": "handleOpenChange"
398
+ }];
399
+ }
382
400
  static get listeners() {
383
401
  return [{
384
402
  "name": "menuitemSelected",
@@ -1 +1 @@
1
- {"version":3,"file":"nv-menu.js","sourceRoot":"","sources":["../../../src/components/nv-menu/nv-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["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 { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot trigger - The button element that toggles the menu popover\n * @slot content - The content of the menu, should be wrapped in a ul element containing nv-menuitem elements\n */\n@Component({\n tag: 'nv-menu',\n styleUrl: 'nv-menu.scss',\n shadow: false,\n})\nexport class NvMenu {\n @Element() el: HTMLNvMenuElement;\n private triggerElement!: HTMLElement;\n private popoverElement!: HTMLNvPopoverElement;\n private isHandlingKeyDown: boolean = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Use this to toggle the initial visibility of the menu, by default the menu\n * is hidden.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * Use this if the menu is nested inside another menu. This will prevent the\n * parent menu from closing when the child menu is opened.\n */\n @Prop({ reflect: true })\n readonly nested: boolean = false;\n\n /**\n * Use this to disable the menu from closing automatically when a menu item is\n * selected.\n */\n @Prop({ reflect: true })\n readonly disableCloseOnSelect: boolean = false;\n\n /**\n * Decides where the menu shows up next to the button it's linked to (above,\n * below, to the sides). If there isn't enough room, it will adjust its\n * position on the axis to fit on the screen, so users can always see it.\n */\n @Prop({ reflect: true })\n readonly placement: Placement = 'bottom-end';\n\n /**\n * List of items used to automatically generate dropdown items. This\n * provides an alternative to using the slot manually.\n *\n * @example\n * items = [{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\",\n * }]\n */\n @Prop({ reflect: true })\n readonly items?: {\n /**\n * The label of the menu item.\n */\n label: string;\n /**\n * The value of the menu item.\n */\n value?: string;\n /**\n * Whether the menu item is disabled.\n */\n disabled?: boolean;\n /**\n * Whether the menu item has a submenu.\n */\n hasSubmenu?: boolean;\n /**\n * The icon of the menu item.\n */\n icon?: string;\n /**\n * The shortcut of the menu item.\n */\n shortcut?: string;\n /**\n * Whether the menu item is nested.\n */\n nested?: boolean;\n /**\n * The submenu items of the menu item.\n */\n submenuItems?: InstanceType<typeof NvMenu>['items'];\n }[];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens the menu.\n */\n @Method()\n async show() {\n this.open = true;\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close() {\n this.open = false;\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted from nv-menuitem elements with the corresponding id and name when\n * selected (via click or keyboard). This event listener can be attached to\n * either the nv-menu or the nv-menuitem element.\n */\n @Event()\n menuitemSelected: EventEmitter<\n HTMLNvMenuitemElementEventMap['menuitemSelected']\n >;\n\n @Listen('menuitemSelected')\n handleMenuItemSelect(\n event: CustomEvent<HTMLNvMenuitemElementEventMap['menuitemSelected']>,\n ) {\n if (this.disableCloseOnSelect) return;\n if (event.detail.hasSubmenu) return;\n this.open = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n // If the menu is not open, check if the trigger is focused\n // and the user presses Enter or ArrowDown, open the menu\n if (!this.open) {\n if (\n (event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === ' ') &&\n document.activeElement === this.triggerElement\n ) {\n event.preventDefault();\n this.show();\n // Then, put the focus on the first menuitem\n const firstMenuItem = this.popoverElement.querySelector('nv-menuitem');\n if (firstMenuItem) {\n requestAnimationFrame(() => (firstMenuItem as HTMLElement).focus());\n }\n }\n return;\n }\n\n if (this.isHandlingKeyDown) return;\n this.isHandlingKeyDown = true;\n\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'Escape'\n ) {\n event.preventDefault();\n }\n\n if (event.key === 'Escape' && !this.nested) {\n this.close();\n this.triggerElement.focus();\n this.isHandlingKeyDown = false;\n return;\n }\n\n const menuContent = this.el.querySelector('[slot=\"content\"]');\n const menuItems = (\n Array.from(menuContent.childNodes) as Array<\n HTMLNvMenuitemElement | HTMLNvMenuElement\n >\n ).filter(item => item.matches?.('nv-menuitem, nv-menu'));\n\n let currentIndex = menuItems.indexOf(\n document.activeElement as HTMLNvMenuitemElement,\n );\n if (currentIndex === -1)\n currentIndex = menuItems.indexOf(\n document.activeElement.parentElement as HTMLNvMenuitemElement,\n );\n if (\n currentIndex === -1 &&\n menuItems.find(item => item.matches('nv-menu[open]'))\n ) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n menuItems.forEach(item => {\n if (item.matches('nv-menu')) (item as HTMLNvMenuElement).close();\n });\n }\n\n if (event.key === 'ArrowDown') {\n let nextIndex = (currentIndex + 1) % menuItems.length;\n while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {\n nextIndex = (nextIndex + 1) % menuItems.length;\n }\n const nextFocusable = menuItems[nextIndex];\n if (nextFocusable.matches('nv-menuitem')) {\n nextFocusable.focus();\n } else if (nextFocusable.matches('nv-menu')) {\n nextFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowUp') {\n let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;\n while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {\n prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;\n }\n const prevFocusable = menuItems[prevIndex];\n if (prevFocusable.matches('nv-menuitem')) {\n prevFocusable.focus();\n } else if (prevFocusable.matches('nv-menu')) {\n prevFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowRight') {\n const submenu = menuItems[currentIndex];\n if (!submenu.matches('nv-menu')) {\n this.isHandlingKeyDown = false;\n return;\n }\n (submenu as HTMLNvMenuElement).show();\n }\n\n if (event.key === 'ArrowLeft' && this.nested) {\n if (menuItems.find(item => item.matches('nv-menu[open]'))) {\n this.isHandlingKeyDown = false;\n return;\n }\n this.close();\n this.triggerElement.focus();\n }\n\n this.isHandlingKeyDown = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\n }\n\n 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 /**\n * Generates menu items from the `items` property.\n * @param {MenuItem[]} items - The items to display in the menu.\n * @returns {HTMLElement[]} The rendered items.\n */\n private renderMenuItems = () => {\n return this.items.map(item => {\n if (item.hasSubmenu && item.submenuItems?.length > 0) {\n return (\n <nv-menu nested placement=\"right-start\" items={item.submenuItems}>\n <nv-menuitem\n slot=\"trigger\"\n hasSubmenu\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n </nv-menu>\n );\n }\n return (\n <nv-menuitem\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n );\n });\n };\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"click\"\n triggerElement={this.triggerElement}\n placement={this.placement}\n nested={this.nested}\n open={this.open}\n >\n {this.items ? (\n <ul slot=\"content\">{this.renderMenuItems()}</ul>\n ) : (\n <slot name=\"content\"></slot>\n )}\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
1
+ {"version":3,"file":"nv-menu.js","sourceRoot":"","sources":["../../../src/components/nv-menu/nv-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Listen,\n Event,\n EventEmitter,\n Method,\n Watch,\n} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot trigger - The button element that toggles the menu popover\n * @slot content - The content of the menu, should be wrapped in a ul element containing nv-menuitem elements\n */\n@Component({\n tag: 'nv-menu',\n styleUrl: 'nv-menu.scss',\n shadow: false,\n})\nexport class NvMenu {\n @Element() el: HTMLNvMenuElement;\n private triggerElement!: HTMLElement;\n private popoverElement!: HTMLNvPopoverElement;\n private isHandlingKeyDown: boolean = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Use this to toggle the initial visibility of the menu, by default the menu\n * is hidden.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * Use this if the menu is nested inside another menu. This will prevent the\n * parent menu from closing when the child menu is opened.\n */\n @Prop({ reflect: true })\n readonly nested: boolean = false;\n\n /**\n * Use this to disable the menu from closing automatically when a menu item is\n * selected.\n */\n @Prop({ reflect: true })\n readonly disableCloseOnSelect: boolean = false;\n\n /**\n * Decides where the menu shows up next to the button it's linked to (above,\n * below, to the sides). If there isn't enough room, it will adjust its\n * position on the axis to fit on the screen, so users can always see it.\n */\n @Prop({ reflect: true })\n readonly placement: Placement = 'bottom-end';\n\n /**\n * List of items used to automatically generate dropdown items. This\n * provides an alternative to using the slot manually.\n *\n * @example\n * items = [{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\",\n * }]\n */\n @Prop({ reflect: true })\n readonly items?: {\n /**\n * The label of the menu item.\n */\n label: string;\n /**\n * The value of the menu item.\n */\n value?: string;\n /**\n * Whether the menu item is disabled.\n */\n disabled?: boolean;\n /**\n * Whether the menu item has a submenu.\n */\n hasSubmenu?: boolean;\n /**\n * The icon of the menu item.\n */\n icon?: string;\n /**\n * The shortcut of the menu item.\n */\n shortcut?: string;\n /**\n * Whether the menu item is nested.\n */\n nested?: boolean;\n /**\n * The submenu items of the menu item.\n */\n submenuItems?: InstanceType<typeof NvMenu>['items'];\n }[];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens the menu.\n */\n @Method()\n async show() {\n this.open = true;\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close() {\n this.open = false;\n }\n\n private focusFirstItem() {\n const firstButton = this.popoverElement.querySelector('nv-menuitem');\n if (firstButton) {\n requestAnimationFrame(() => firstButton.focus());\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted from nv-menuitem elements with the corresponding id and name when\n * selected (via click or keyboard). This event listener can be attached to\n * either the nv-menu or the nv-menuitem element.\n */\n @Event()\n menuitemSelected: EventEmitter<\n HTMLNvMenuitemElementEventMap['menuitemSelected']\n >;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('open')\n handleOpenChange(newOpen: boolean) {\n // React to external changes, e.g., focus first item if opened externally\n if (newOpen) {\n this.focusFirstItem();\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('menuitemSelected')\n handleMenuItemSelect(\n event: CustomEvent<HTMLNvMenuitemElementEventMap['menuitemSelected']>,\n ) {\n if (this.disableCloseOnSelect) return;\n if (event.detail.hasSubmenu) return;\n this.open = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n // If the menu is not open, check if the trigger is focused\n // and the user presses Enter or ArrowDown, open the menu\n if (!this.open) {\n if (\n (event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === ' ') &&\n document.activeElement === this.triggerElement\n ) {\n event.preventDefault();\n this.show();\n // Then, put the focus on the first menuitem\n const firstMenuItem = this.popoverElement.querySelector('nv-menuitem');\n if (firstMenuItem) {\n requestAnimationFrame(() => (firstMenuItem as HTMLElement).focus());\n }\n }\n return;\n }\n\n if (this.isHandlingKeyDown) return;\n this.isHandlingKeyDown = true;\n\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'Escape'\n ) {\n event.preventDefault();\n }\n\n if (event.key === 'Escape' && !this.nested) {\n this.close();\n this.triggerElement.focus();\n this.isHandlingKeyDown = false;\n return;\n }\n\n const menuContent = this.el.querySelector('[slot=\"content\"]');\n const menuItems = (\n Array.from(menuContent.childNodes) as Array<\n HTMLNvMenuitemElement | HTMLNvMenuElement\n >\n ).filter(item => item.matches?.('nv-menuitem, nv-menu'));\n\n let currentIndex = menuItems.indexOf(\n document.activeElement as HTMLNvMenuitemElement,\n );\n if (currentIndex === -1)\n currentIndex = menuItems.indexOf(\n document.activeElement.parentElement as HTMLNvMenuitemElement,\n );\n if (\n currentIndex === -1 &&\n menuItems.find(item => item.matches('nv-menu[open]'))\n ) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n menuItems.forEach(item => {\n if (item.matches('nv-menu')) (item as HTMLNvMenuElement).close();\n });\n }\n\n if (event.key === 'ArrowDown') {\n let nextIndex = (currentIndex + 1) % menuItems.length;\n while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {\n nextIndex = (nextIndex + 1) % menuItems.length;\n }\n const nextFocusable = menuItems[nextIndex];\n if (nextFocusable.matches('nv-menuitem')) {\n nextFocusable.focus();\n } else if (nextFocusable.matches('nv-menu')) {\n nextFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowUp') {\n let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;\n while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {\n prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;\n }\n const prevFocusable = menuItems[prevIndex];\n if (prevFocusable.matches('nv-menuitem')) {\n prevFocusable.focus();\n } else if (prevFocusable.matches('nv-menu')) {\n prevFocusable.querySelector('nv-menuitem').focus();\n }\n }\n\n if (event.key === 'ArrowRight') {\n const submenu = menuItems[currentIndex];\n if (!submenu.matches('nv-menu')) {\n this.isHandlingKeyDown = false;\n return;\n }\n (submenu as HTMLNvMenuElement).show();\n }\n\n if (event.key === 'ArrowLeft' && this.nested) {\n if (menuItems.find(item => item.matches('nv-menu[open]'))) {\n this.isHandlingKeyDown = false;\n return;\n }\n this.close();\n this.triggerElement.focus();\n }\n\n this.isHandlingKeyDown = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.triggerElement = Array.from(this.el.children).find(child => {\n return child.getAttribute('slot') === 'trigger';\n }) as HTMLElement;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Generates menu items from the `items` property.\n * @param {MenuItem[]} items - The items to display in the menu.\n * @returns {HTMLElement[]} The rendered items.\n */\n private renderMenuItems = () => {\n return this.items.map(item => {\n if (item.hasSubmenu && item.submenuItems?.length > 0) {\n return (\n <nv-menu nested placement=\"right-start\" items={item.submenuItems}>\n <nv-menuitem\n slot=\"trigger\"\n hasSubmenu\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n </nv-menu>\n );\n }\n return (\n <nv-menuitem\n disabled={item.disabled}\n icon={item.icon as IconName}\n shortcut={item.shortcut}\n id={item.value}\n name={item.label}\n label={item.label}\n ></nv-menuitem>\n );\n });\n };\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"click\"\n triggerElement={this.triggerElement}\n placement={this.placement}\n nested={this.nested}\n open={this.open}\n >\n {this.items ? (\n <ul slot=\"content\">{this.renderMenuItems()}</ul>\n ) : (\n <slot name=\"content\"></slot>\n )}\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
@@ -82,7 +82,7 @@ export class NvMenuitem {
82
82
  "mutable": false,
83
83
  "complexType": {
84
84
  "original": "`${IconName}`",
85
- "resolved": "\"home\" | \"photo\" | \"access-point-off\" | \"access-point\" | \"accessible\" | \"activity\" | \"address-book\" | \"adjustments-horizontal\" | \"adjustments-up\" | \"adjustments\" | \"affiliate\" | \"air-conditioning\" | \"alert-circle\" | \"alert-triangle\" | \"align-center\" | \"align-left\" | \"align-right\" | \"app-window\" | \"apps\" | \"archive\" | \"areas\" | \"arrow-back-up\" | \"arrow-back\" | \"arrow-down-left\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-forward-up\" | \"arrow-forward\" | \"arrow-left\" | \"arrow-right\" | \"arrow-up-left\" | \"arrow-up-right\" | \"arrow-up\" | \"arrows-diagonal\" | \"arrows-exchange\" | \"arrows-maximize\" | \"arrows-minimize\" | \"arrows-move\" | \"aspect-ratio\" | \"atom\" | \"ban\" | \"basket\" | \"battery-1\" | \"battery-2\" | \"battery-3\" | \"battery-4\" | \"battery-automotive\" | \"battery-charging\" | \"battery-eco\" | \"battery-off\" | \"battery\" | \"bell-off\" | \"bell-ringing\" | \"bell\" | \"bike\" | \"bluetooth-connected\" | \"bluetooth-off\" | \"bluetooth\" | \"bolt-off\" | \"bolt\" | \"book\" | \"bookmark-off\" | \"bookmark\" | \"bookmarks\" | \"box-align-top\" | \"box-multiple\" | \"brand-facebook\" | \"brand-instagram\" | \"brand-linkedin\" | \"brand-x\" | \"brand-youtube\" | \"briefcase\" | \"brightness-down\" | \"brightness-up\" | \"browser-check\" | \"browser-plus\" | \"browser-x\" | \"browser\" | \"brush\" | \"building-bank\" | \"building-factory\" | \"building-lighthouse\" | \"building-store\" | \"building\" | \"bulb-off\" | \"bulb\" | \"cake\" | \"calendar-time\" | \"calendar\" | \"camera-off\" | \"camera\" | \"car-crane\" | \"car\" | \"caravan\" | \"cash-banknote\" | \"cash\" | \"cast\" | \"cell\" | \"charging-pile\" | \"chart-arcs\" | \"chart-area-line\" | \"chart-area\" | \"chart-arrows-vertical\" | \"chart-arrows\" | \"chart-bar\" | \"chart-bubble\" | \"chart-circles\" | \"chart-donut\" | \"chart-dots\" | \"chart-line\" | \"chart-pie\" | \"chart-radar\" | \"check\" | \"checkbox\" | \"checklist\" | \"checks\" | \"chevron-down\" | \"chevron-left\" | \"chevron-right\" | \"chevron-top\" | \"chevrons-left\" | \"chevrons-right\" | \"circle-caret-right\" | \"circle-check\" | \"circle-x\" | \"circuit-alternate\" | \"circuit-ground-digital\" | \"clipboard-check\" | \"clipboard-list\" | \"clipboard-plus\" | \"clipboard-text\" | \"clipboard-x\" | \"clipboard\" | \"clock-edit\" | \"clock\" | \"cloud-data-connection\" | \"cloud-download\" | \"cloud-rain\" | \"cloud-snow\" | \"cloud-upload\" | \"cloud\" | \"color-picker\" | \"color-swatch\" | \"columns-1\" | \"columns-2\" | \"columns-3\" | \"compass\" | \"contract\" | \"cookie\" | \"copy\" | \"cpu\" | \"crane\" | \"credit-card\" | \"crop\" | \"cross\" | \"crown\" | \"currency-bitcoin\" | \"currency-dollar\" | \"currency-ethereum\" | \"currency-euro\" | \"cut\" | \"dashboard\" | \"database\" | \"device-desktop\" | \"device-floppy\" | \"device-gamepad\" | \"device-laptop\" | \"device-mobile-rotated\" | \"device-mobile\" | \"device-tablet\" | \"device-watch\" | \"devices\" | \"dialpad\" | \"direction-horizontal\" | \"direction-sign\" | \"direction\" | \"discount\" | \"door-enter\" | \"door-exit\" | \"door-off\" | \"dots-vertical\" | \"dots\" | \"download\" | \"drone\" | \"droplet-filled\" | \"droplet-half\" | \"droplet\" | \"droplets\" | \"edit\" | \"empty\" | \"engine\" | \"equal-not\" | \"eraser-off\" | \"eraser\" | \"external-link\" | \"eye-off\" | \"eye\" | \"face-id\" | \"feather\" | \"file-alert\" | \"file-analytics\" | \"file-check\" | \"file-code\" | \"file-download\" | \"file-export\" | \"file-horizontal\" | \"file-import\" | \"file-plus\" | \"file-search\" | \"file-text-bookmark\" | \"file-text\" | \"file-type-bmp\" | \"file-type-css\" | \"file-type-csv\" | \"file-type-doc\" | \"file-type-html\" | \"file-type-jpg\" | \"file-type-js\" | \"file-type-pdf\" | \"file-type-png\" | \"file-type-ppt\" | \"file-type-xls\" | \"file-type-xml\" | \"file-type-zip\" | \"file-upload\" | \"file-x\" | \"file-zip\" | \"file\" | \"files-off\" | \"files\" | \"filter-off\" | \"filter-sort\" | \"filter\" | \"fingerprint\" | \"fire-extinguisher\" | \"flag\" | \"flame\" | \"flip-horizontal\" | \"flip-vertical\" | \"folder-minus\" | \"folder-off\" | \"folder-plus\" | \"folder-x\" | \"folder\" | \"folders\" | \"frame\" | \"gas-station\" | \"gauge-off\" | \"gauge\" | \"gift\" | \"git-branch\" | \"gps\" | \"grid-dots\" | \"grip-horizontal\" | \"grip-vertical\" | \"hand-stop\" | \"hand-waving\" | \"hash\" | \"haze\" | \"headphones-off\" | \"headphones\" | \"headset\" | \"heart-off\" | \"heart\" | \"heartbeat\" | \"helicopter\" | \"helmet-swopp\" | \"helmet\" | \"help\" | \"history\" | \"hourglass-empty\" | \"hourglass-high\" | \"hourglass-low\" | \"hourglass-off\" | \"hourglass\" | \"inbox\" | \"info-circle\" | \"keyboard-hide\" | \"keyboard-show\" | \"keyboard\" | \"layout-board-split\" | \"layout-dashboard\" | \"layout-grid\" | \"layout-sidebar-left-collapse\" | \"layout-sidebar-left-expand\" | \"layout-sidebar-right-collapse\" | \"layout-sidebar-right-expand\" | \"layout\" | \"leaf\" | \"lifebuoy\" | \"link\" | \"list-search\" | \"list\" | \"loader\" | \"location\" | \"lock-off\" | \"lock-open\" | \"lock\" | \"login\" | \"logout\" | \"mail-forward\" | \"mail-opened\" | \"mail\" | \"map-pin-2\" | \"map-pin-off\" | \"map-pin\" | \"map\" | \"menu\" | \"message-dots\" | \"message-off\" | \"message\" | \"messages\" | \"microphone-off\" | \"microphone\" | \"minus\" | \"mist\" | \"moon\" | \"motorbike\" | \"mouse\" | \"movie\" | \"network\" | \"news\" | \"note\" | \"notebook\" | \"notes\" | \"offshore-station\" | \"package\" | \"palette\" | \"paperclip\" | \"pencil\" | \"phone-call\" | \"phone-calling\" | \"phone-check\" | \"phone-incoming\" | \"phone-off\" | \"phone-outgoing\" | \"phone\" | \"photo-off\" | \"pig\" | \"pin\" | \"pinned-off\" | \"pinned\" | \"plane-off\" | \"plane\" | \"plant\" | \"player-pause\" | \"player-play\" | \"player-skip-back\" | \"player-skip-forward\" | \"player-stop\" | \"player-track-next\" | \"player-track-prev\" | \"plug-connected\" | \"plug\" | \"plus\" | \"power-ac\" | \"power-dc\" | \"power\" | \"presentation-analytics\" | \"presentation\" | \"printer\" | \"propeller\" | \"published\" | \"puzzle-2\" | \"puzzle\" | \"pylon\" | \"qrcode\" | \"radar\" | \"radio\" | \"radioactive\" | \"receipt-dollar\" | \"receipt-euro\" | \"receipt\" | \"recharging\" | \"recycle\" | \"refresh-alert\" | \"refresh-off\" | \"refresh\" | \"repeat-once\" | \"repeat\" | \"replace\" | \"report-analytics\" | \"report-medical\" | \"report-search\" | \"report\" | \"ripple-off\" | \"ripple\" | \"rocket\" | \"rotate-2\" | \"rotate-clockwise-2\" | \"rotate-clockwise\" | \"rotate-dot\" | \"rotate\" | \"router\" | \"ruler-measure\" | \"sailboat\" | \"satellite\" | \"scale\" | \"school\" | \"scissors\" | \"scooter-electric\" | \"screenshot\" | \"search\" | \"seeding\" | \"select\" | \"selector\" | \"send\" | \"server\" | \"settings\" | \"shape\" | \"share-2\" | \"share\" | \"shield-check\" | \"shield-lock\" | \"shield-off\" | \"shield-x\" | \"shield\" | \"ship-off\" | \"ship\" | \"shopping-cart\" | \"slash\" | \"smart-home\" | \"snowflake\" | \"solar-panel\" | \"sort-ascending-letters\" | \"sort-ascending-numbers\" | \"sort-descending-letters\" | \"sort-descending-numbers\" | \"spacing-horizontal\" | \"spacing-vertical\" | \"speakerphone\" | \"stack\" | \"stairs\" | \"star\" | \"sun\" | \"sunrise\" | \"sunset\" | \"switch-horizontal\" | \"switch-vertical\" | \"table\" | \"tag\" | \"tank-empty-fill\" | \"tank-full-fill\" | \"tank-medium-fill\" | \"temperature-off\" | \"temperature\" | \"template\" | \"terminal\" | \"text-size\" | \"text\" | \"thumb-down\" | \"thumb-up\" | \"ticket\" | \"timeline\" | \"tir\" | \"tool\" | \"tools\" | \"train\" | \"trash-off\" | \"trash\" | \"tree\" | \"trees\" | \"truck-delivery\" | \"truck\" | \"umbrella\" | \"unlink\" | \"upload\" | \"user-circle\" | \"user-exclamation\" | \"user-minus\" | \"user-off\" | \"user-plus\" | \"user-worker\" | \"user\" | \"users\" | \"versions\" | \"video-minus\" | \"video-off\" | \"video-plus\" | \"video\" | \"volume-2\" | \"volume-3\" | \"volume\" | \"wand\" | \"wave\" | \"waves\" | \"wifi-off\" | \"wifi\" | \"wind-direction\" | \"wind\" | \"windmill\" | \"wood\" | \"world-code\" | \"world\" | \"writing\" | \"x\" | \"zoom-reset\"",
85
+ "resolved": "\"home\" | \"photo\" | \"access-point-off\" | \"access-point\" | \"accessible\" | \"activity\" | \"address-book\" | \"adjustments-horizontal\" | \"adjustments-up\" | \"adjustments\" | \"affiliate\" | \"air-conditioning\" | \"alert-circle\" | \"alert-triangle\" | \"align-center\" | \"align-left\" | \"align-right\" | \"app-window\" | \"apps\" | \"archive\" | \"areas\" | \"arrow-back-up\" | \"arrow-back\" | \"arrow-down-left\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-forward-up\" | \"arrow-forward\" | \"arrow-left\" | \"arrow-right\" | \"arrow-up-left\" | \"arrow-up-right\" | \"arrow-up\" | \"arrows-diagonal\" | \"arrows-exchange\" | \"arrows-maximize\" | \"arrows-minimize\" | \"arrows-move\" | \"aspect-ratio\" | \"atom\" | \"ban\" | \"basket\" | \"battery-1\" | \"battery-2\" | \"battery-3\" | \"battery-4\" | \"battery-automotive\" | \"battery-charging\" | \"battery-eco\" | \"battery-off\" | \"battery\" | \"bell-off\" | \"bell-ringing\" | \"bell\" | \"bike\" | \"bluetooth-connected\" | \"bluetooth-off\" | \"bluetooth\" | \"bolt-off\" | \"bolt\" | \"book\" | \"bookmark-off\" | \"bookmark\" | \"bookmarks\" | \"box-align-top\" | \"box-multiple\" | \"brand-facebook\" | \"brand-instagram\" | \"brand-linkedin\" | \"brand-x\" | \"brand-youtube\" | \"briefcase\" | \"brightness-down\" | \"brightness-up\" | \"browser-check\" | \"browser-plus\" | \"browser-x\" | \"browser\" | \"brush\" | \"building-bank\" | \"building-factory\" | \"building-lighthouse\" | \"building-store\" | \"building\" | \"bulb-off\" | \"bulb\" | \"cake\" | \"calendar-time\" | \"calendar\" | \"camera-off\" | \"camera\" | \"car-crane\" | \"car\" | \"caravan\" | \"cash-banknote\" | \"cash\" | \"cast\" | \"cell\" | \"charging-pile\" | \"chart-arcs\" | \"chart-area-line\" | \"chart-area\" | \"chart-arrows-vertical\" | \"chart-arrows\" | \"chart-bar\" | \"chart-bubble\" | \"chart-circles\" | \"chart-donut\" | \"chart-dots\" | \"chart-line\" | \"chart-pie\" | \"chart-radar\" | \"check\" | \"checkbox\" | \"checklist\" | \"checks\" | \"chevron-down\" | \"chevron-left\" | \"chevron-right\" | \"chevron-top\" | \"chevrons-left\" | \"chevrons-right\" | \"circle-caret-right\" | \"circle-check\" | \"circle-x\" | \"circuit-alternate\" | \"circuit-ground-digital\" | \"clipboard-check\" | \"clipboard-list\" | \"clipboard-plus\" | \"clipboard-text\" | \"clipboard-x\" | \"clipboard\" | \"clock-edit\" | \"clock\" | \"cloud-data-connection\" | \"cloud-download\" | \"cloud-rain\" | \"cloud-snow\" | \"cloud-upload\" | \"cloud\" | \"color-picker\" | \"color-swatch\" | \"columns-1\" | \"columns-2\" | \"columns-3\" | \"compass\" | \"contract\" | \"cookie\" | \"copy\" | \"cpu\" | \"crane\" | \"credit-card\" | \"crop\" | \"cross\" | \"crown\" | \"currency-bitcoin\" | \"currency-dollar\" | \"currency-ethereum\" | \"currency-euro\" | \"cut\" | \"dashboard\" | \"database\" | \"device-desktop\" | \"device-floppy\" | \"device-gamepad\" | \"device-laptop\" | \"device-mobile-rotated\" | \"device-mobile\" | \"device-tablet\" | \"device-watch\" | \"devices\" | \"dialpad\" | \"direction-horizontal\" | \"direction-sign\" | \"direction\" | \"discount\" | \"door-enter\" | \"door-exit\" | \"door-off\" | \"dots-vertical\" | \"dots\" | \"download\" | \"drone\" | \"droplet-filled\" | \"droplet-half\" | \"droplet\" | \"droplets\" | \"edit\" | \"empty\" | \"engine\" | \"equal-not\" | \"eraser-off\" | \"eraser\" | \"external-link\" | \"eye-off\" | \"eye\" | \"face-id\" | \"feather\" | \"file-alert\" | \"file-analytics\" | \"file-check\" | \"file-code\" | \"file-download\" | \"file-export\" | \"file-horizontal\" | \"file-import\" | \"file-plus\" | \"file-search\" | \"file-text-bookmark\" | \"file-text\" | \"file-type-bmp\" | \"file-type-css\" | \"file-type-csv\" | \"file-type-doc\" | \"file-type-html\" | \"file-type-jpg\" | \"file-type-js\" | \"file-type-pdf\" | \"file-type-png\" | \"file-type-ppt\" | \"file-type-xls\" | \"file-type-xml\" | \"file-type-zip\" | \"file-upload\" | \"file-x\" | \"file-zip\" | \"file\" | \"files-off\" | \"files\" | \"filter-off\" | \"filter-sort\" | \"filter\" | \"fingerprint\" | \"fire-extinguisher\" | \"flag\" | \"flame\" | \"flip-horizontal\" | \"flip-vertical\" | \"folder-minus\" | \"folder-off\" | \"folder-plus\" | \"folder-x\" | \"folder\" | \"folders\" | \"frame\" | \"gas-station\" | \"gauge-off\" | \"gauge\" | \"gift\" | \"git-branch\" | \"git-compare\" | \"gps\" | \"grid-dots\" | \"grip-horizontal\" | \"grip-vertical\" | \"hand-stop\" | \"hand-waving\" | \"hash\" | \"haze\" | \"headphones-off\" | \"headphones\" | \"headset\" | \"heart-off\" | \"heart\" | \"heartbeat\" | \"helicopter\" | \"helmet-swopp\" | \"helmet\" | \"help\" | \"history\" | \"hourglass-empty\" | \"hourglass-high\" | \"hourglass-low\" | \"hourglass-off\" | \"hourglass\" | \"inbox\" | \"info-circle\" | \"keyboard-hide\" | \"keyboard-show\" | \"keyboard\" | \"layout-board-split\" | \"layout-dashboard\" | \"layout-grid\" | \"layout-sidebar-left-collapse\" | \"layout-sidebar-left-expand\" | \"layout-sidebar-right-collapse\" | \"layout-sidebar-right-expand\" | \"layout\" | \"leaf\" | \"lifebuoy\" | \"link\" | \"list-search\" | \"list\" | \"loader\" | \"location\" | \"lock-off\" | \"lock-open\" | \"lock\" | \"login\" | \"logout\" | \"mail-forward\" | \"mail-opened\" | \"mail\" | \"map-pin-2\" | \"map-pin-off\" | \"map-pin\" | \"map\" | \"master-data\" | \"menu\" | \"message-dots\" | \"message-off\" | \"message\" | \"messages\" | \"microphone-off\" | \"microphone\" | \"minus\" | \"mist\" | \"moon\" | \"motorbike\" | \"mouse\" | \"movie\" | \"network\" | \"news\" | \"note\" | \"notebook\" | \"notes\" | \"offshore-station\" | \"package\" | \"palette\" | \"paperclip\" | \"pencil\" | \"phone-call\" | \"phone-calling\" | \"phone-check\" | \"phone-incoming\" | \"phone-off\" | \"phone-outgoing\" | \"phone\" | \"photo-off\" | \"pig\" | \"pin\" | \"pinned-off\" | \"pinned\" | \"plane-off\" | \"plane\" | \"plant\" | \"player-pause\" | \"player-play\" | \"player-skip-back\" | \"player-skip-forward\" | \"player-stop\" | \"player-track-next\" | \"player-track-prev\" | \"plug-connected\" | \"plug\" | \"plus\" | \"power-ac\" | \"power-dc\" | \"power\" | \"presentation-analytics\" | \"presentation\" | \"printer\" | \"propeller\" | \"published\" | \"puzzle-2\" | \"puzzle\" | \"pylon\" | \"qrcode\" | \"quotes-open\" | \"quotes\" | \"radar\" | \"radio\" | \"radioactive\" | \"receipt-dollar\" | \"receipt-euro\" | \"receipt\" | \"recharging\" | \"recycle\" | \"refresh-alert\" | \"refresh-off\" | \"refresh\" | \"repeat-once\" | \"repeat\" | \"replace\" | \"report-analytics\" | \"report-medical\" | \"report-search\" | \"report\" | \"ripple-off\" | \"ripple\" | \"rocket\" | \"rotate-2\" | \"rotate-clockwise-2\" | \"rotate-clockwise\" | \"rotate-dot\" | \"rotate\" | \"router\" | \"ruler-measure\" | \"sailboat\" | \"satellite\" | \"scale\" | \"school\" | \"scissors\" | \"scooter-electric\" | \"screenshot\" | \"search\" | \"seeding\" | \"select\" | \"selector\" | \"send\" | \"server\" | \"settings\" | \"shape\" | \"share-2\" | \"share\" | \"shield-check\" | \"shield-lock\" | \"shield-off\" | \"shield-x\" | \"shield\" | \"ship-off\" | \"ship\" | \"shopping-cart\" | \"slash\" | \"smart-home\" | \"snowflake\" | \"solar-panel\" | \"sort-ascending-letters\" | \"sort-ascending-numbers\" | \"sort-descending-letters\" | \"sort-descending-numbers\" | \"spacing-horizontal\" | \"spacing-vertical\" | \"sparkles\" | \"speakerphone\" | \"stack\" | \"stairs\" | \"star\" | \"sun\" | \"sunrise\" | \"sunset\" | \"switch-horizontal\" | \"switch-vertical\" | \"table\" | \"tag\" | \"tank-empty-fill\" | \"tank-full-fill\" | \"tank-medium-fill\" | \"temperature-off\" | \"temperature\" | \"template\" | \"terminal\" | \"text-size\" | \"text\" | \"thumb-down\" | \"thumb-up\" | \"ticket\" | \"timeline\" | \"tir\" | \"tool\" | \"tools\" | \"train\" | \"trash-off\" | \"trash\" | \"tree\" | \"trees\" | \"truck-delivery\" | \"truck\" | \"umbrella\" | \"unlink\" | \"upload\" | \"user-circle\" | \"user-exclamation\" | \"user-minus\" | \"user-off\" | \"user-plus\" | \"user-worker\" | \"user\" | \"users\" | \"versions\" | \"video-minus\" | \"video-off\" | \"video-plus\" | \"video\" | \"volume-2\" | \"volume-3\" | \"wallet\" | \"wand\" | \"wave\" | \"waves\" | \"wifi-off\" | \"wifi\" | \"wind-direction\" | \"wind\" | \"windmill\" | \"wood\" | \"world-code\" | \"world\" | \"writing\" | \"x\" | \"zoom-reset\"",
86
86
  "references": {
87
87
  "IconName": {
88
88
  "location": "import",
@@ -49,7 +49,7 @@ nv-notification [data-scope=container] [data-scope=content] [data-scope=heading]
49
49
  color: var(--components-notification-content-title);
50
50
  font-size: var(--notification-title-font-size);
51
51
  font-style: normal;
52
- font-weight: 500;
52
+ font-weight: var(--font-weight-medium-emphasis);
53
53
  line-height: 20px; /* 142.857% */
54
54
  }
55
55
  nv-notification [data-scope=container] [data-scope=content] [data-scope=message] {
@@ -62,7 +62,7 @@ nv-notification [data-scope=container] [data-scope=content] [data-scope=message]
62
62
  font-variant-numeric: lining-nums tabular-nums slashed-zero;
63
63
  font-size: var(--font-size-sm, 14px);
64
64
  font-style: normal;
65
- font-weight: 400;
65
+ font-weight: var(--font-weight-low-emphasis);
66
66
  line-height: var(--line-height-sm, 20px);
67
67
  }
68
68
  nv-notification [data-scope=container] [data-scope=content] [data-scope=actions] {
@@ -4,19 +4,23 @@ const NvPopoverDocs = {
4
4
  component: 'nv-popover',
5
5
  subcomponents: ['nv-button'],
6
6
  stories: [
7
+ // Default
7
8
  {
8
9
  name: 'Default',
9
10
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Click Me"), h("p", { slot: "content" }, "This is a Click popover."))),
10
11
  },
12
+ // Open
11
13
  {
12
14
  name: nameof(x => x.open),
13
15
  args: { open: true },
14
16
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Click Me"), h("p", { slot: "content" }, "This is a pre opened popover."))),
15
17
  },
18
+ // TriggerMode
16
19
  {
17
20
  name: nameof(x => x.triggerMode),
18
21
  template: (h("div", { "data-class": "flex gap-4 items-start" }, h("nv-popover", { "data-storybook-args": true, "trigger-mode": "hover" }, h("nv-button", { slot: "trigger" }, "Hover Me"), h("p", { slot: "content" }, "This is a Hover popover.")), h("nv-popover", { "data-storybook-args": true, "trigger-mode": "click" }, h("nv-button", { slot: "trigger" }, "Click Me"), h("p", { slot: "content" }, "This is a Click popover.")), h("nv-popover", { "data-storybook-args": true, "trigger-mode": "controlled", open: true }, h("nv-button", { slot: "trigger" }, "Controlled"), h("p", { slot: "content" }, "This is a Controlled popover.")))),
19
22
  },
23
+ // Placement
20
24
  {
21
25
  name: nameof(x => x.placement),
22
26
  args: {
@@ -24,6 +28,7 @@ const NvPopoverDocs = {
24
28
  },
25
29
  template: (h("div", { "data-class": "flex gap-4 items-start" }, h("nv-popover", { "data-storybook-args": true, placement: "top", "data-class": "py-6" }, h("nv-button", { slot: "trigger" }, "Top"), h("p", { slot: "content" }, "This is a Top popover.")), h("nv-popover", { "data-storybook-args": true, placement: "bottom" }, h("nv-button", { slot: "trigger" }, "Bottom"), h("p", { slot: "content" }, "This is a Bottom popover.")), h("nv-popover", { "data-storybook-args": true, placement: "left" }, h("nv-button", { slot: "trigger" }, "Left"), h("p", { slot: "content" }, "This is a Left popover.")), h("nv-popover", { "data-storybook-args": true, placement: "right" }, h("nv-button", { slot: "trigger" }, "Right"), h("p", { slot: "content" }, "This is a Right popover.")))),
26
30
  },
31
+ // GroupName
27
32
  {
28
33
  name: nameof(x => x.groupName),
29
34
  args: {
@@ -31,6 +36,7 @@ const NvPopoverDocs = {
31
36
  },
32
37
  template: (h("div", { "data-class": "flex gap-4 items-start" }, h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Popover 1"), h("p", { slot: "content" }, "This is a popover.")), h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Popover 2"), h("p", { slot: "content" }, "This is a popover.")), h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Popover 3"), h("p", { slot: "content" }, "This is a popover.")))),
33
38
  },
39
+ // Offset
34
40
  {
35
41
  name: nameof(x => x.offset),
36
42
  args: {
@@ -39,6 +45,7 @@ const NvPopoverDocs = {
39
45
  },
40
46
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Offset"), h("p", { slot: "content" }, "This is a popover with 30px offset."))),
41
47
  },
48
+ // HasArrow
42
49
  {
43
50
  name: nameof(x => x.hasArrow),
44
51
  args: {
@@ -46,6 +53,7 @@ const NvPopoverDocs = {
46
53
  },
47
54
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Arrow"), h("p", { slot: "content" }, "This is a popover with an arrow."))),
48
55
  },
56
+ // DisableFlip
49
57
  {
50
58
  name: nameof(x => x.disableFlip),
51
59
  args: {
@@ -53,6 +61,7 @@ const NvPopoverDocs = {
53
61
  },
54
62
  template: (h("div", { "data-class": "flex gap-4 items-start" }, h("nv-popover", { "data-storybook-args": true, "disable-flip": true, placement: "bottom", "data-class": "py-6" }, h("nv-button", { slot: "trigger" }, "Flip Off Placement Bottom"), h("p", { slot: "content" }, "This will always stay to the bottom.")), h("nv-popover", { "data-storybook-args": true, placement: "top", "data-class": "py-6" }, h("nv-button", { slot: "trigger" }, "Flip On Placement Top"), h("p", { slot: "content" }, "This could flip to the bottom.")), h("nv-popover", { "data-storybook-args": true, placement: "bottom", "data-class": "py-6" }, h("nv-button", { slot: "trigger" }, "Flip On Placement Bottom"), h("p", { slot: "content" }, "This could flip to the top.")))),
55
63
  },
64
+ // ShiftPadding
56
65
  {
57
66
  name: nameof(x => x.shiftPadding),
58
67
  args: {
@@ -60,6 +69,7 @@ const NvPopoverDocs = {
60
69
  },
61
70
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Shift Padding"), h("p", { slot: "content" }, "This is a popover with 40px padding."))),
62
71
  },
72
+ // EnterDelay
63
73
  {
64
74
  name: nameof(x => x.enterDelay),
65
75
  args: {
@@ -68,6 +78,7 @@ const NvPopoverDocs = {
68
78
  },
69
79
  template: (h("nv-popover", { "data-storybook-args": true }, h("nv-button", { slot: "trigger" }, "Hover me and wait 1s"), h("p", { slot: "content" }, "This is a popover with a 1s enter delay."))),
70
80
  },
81
+ // Strategy
71
82
  {
72
83
  name: nameof(x => x.strategy),
73
84
  template: (h("div", { "data-class": "flex gap-8 items-start" }, h("div", { "data-class": "relative" }, h("h4", { "data-class": "mb-2 text-sm font-medium" }, "Absolute Strategy (Default)"), h("div", { "data-class": "w-48 h-32 overflow-hidden border border-gray-300 rounded p-4" }, h("p", { "data-class": "mb-2 text-xs" }, "Scroll container with overflow hidden"), h("nv-popover", { "data-storybook-args": true, strategy: "absolute", placement: "right" }, h("nv-button", { slot: "trigger" }, "Absolute"), h("p", { slot: "content" }, "This popover uses absolute positioning and may be clipped by overflow containers.")))), h("div", { "data-class": "relative" }, h("h4", { "data-class": "mb-2 text-sm font-medium" }, "Fixed Strategy"), h("div", { "data-class": "w-48 h-32 overflow-hidden border border-gray-300 rounded p-4" }, h("p", { "data-class": "mb-2 text-xs" }, "Scroll container with overflow hidden"), h("nv-popover", { "data-storybook-args": true, strategy: "fixed", placement: "right" }, h("nv-button", { slot: "trigger" }, "Fixed"), h("p", { slot: "content" }, "This popover uses fixed positioning and breaks out of overflow containers.")))))),
@@ -1 +1 @@
1
- {"version":3,"file":"nv-popover.docs.js","sourceRoot":"","sources":["../../../src/components/nv-popover/nv-popover.docs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,aAAa,GAAmC;IACpD,SAAS,EAAE,YAAY;IACvB,aAAa,EAAE,CAAC,WAAW,CAAC;IAC5B,OAAO,EAAE;QACP;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,eAAqB;gBAC9C,SAAG,IAAI,EAAC,SAAS,+BAA6B,CACnC,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACpB,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,eAAqB;gBAC9C,SAAG,IAAI,EAAC,SAAS,oCAAkC,CACxC,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACtD,QAAQ,EAAE,CACR,yBAAgB,wBAAwB;gBACtC,+DAA6C,OAAO;oBAClD,iBAAW,IAAI,EAAC,SAAS,eAAqB;oBAC9C,SAAG,IAAI,EAAC,SAAS,+BAA6B,CACnC;gBACb,+DAA6C,OAAO;oBAClD,iBAAW,IAAI,EAAC,SAAS,eAAqB;oBAC9C,SAAG,IAAI,EAAC,SAAS,+BAA6B,CACnC;gBACb,+DAA6C,YAAY,EAAC,IAAI;oBAC5D,iBAAW,IAAI,EAAC,SAAS,iBAAuB;oBAChD,SAAG,IAAI,EAAC,SAAS,oCAAkC,CACxC,CACT,CACP;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE,CACR,yBAAgB,wBAAwB;gBACtC,+CAAgC,SAAS,EAAC,KAAK,gBAAY,MAAM;oBAC/D,iBAAW,IAAI,EAAC,SAAS,UAAgB;oBACzC,SAAG,IAAI,EAAC,SAAS,6BAA2B,CACjC;gBACb,+CAAgC,SAAS,EAAC,QAAQ;oBAChD,iBAAW,IAAI,EAAC,SAAS,aAAmB;oBAC5C,SAAG,IAAI,EAAC,SAAS,gCAA8B,CACpC;gBACb,+CAAgC,SAAS,EAAC,MAAM;oBAC9C,iBAAW,IAAI,EAAC,SAAS,WAAiB;oBAC1C,SAAG,IAAI,EAAC,SAAS,8BAA4B,CAClC;gBACb,+CAAgC,SAAS,EAAC,OAAO;oBAC/C,iBAAW,IAAI,EAAC,SAAS,YAAkB;oBAC3C,SAAG,IAAI,EAAC,SAAS,+BAA6B,CACnC,CACT,CACP;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,EAAE;gBACJ,SAAS,EAAE,iBAAiB;aAC7B;YACD,QAAQ,EAAE,CACR,yBAAgB,wBAAwB;gBACtC;oBACE,iBAAW,IAAI,EAAC,SAAS,gBAAsB;oBAC/C,SAAG,IAAI,EAAC,SAAS,yBAAuB,CAC7B;gBACb;oBACE,iBAAW,IAAI,EAAC,SAAS,gBAAsB;oBAC/C,SAAG,IAAI,EAAC,SAAS,yBAAuB,CAC7B;gBACb;oBACE,iBAAW,IAAI,EAAC,SAAS,gBAAsB;oBAC/C,SAAG,IAAI,EAAC,SAAS,yBAAuB,CAC7B,CACT,CACP;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACjD,IAAI,EAAE;gBACJ,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,OAAO;aACnB;YACD,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,aAAmB;gBAC5C,SAAG,IAAI,EAAC,SAAS,0CAAwC,CAC9C,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,YAAkB;gBAC3C,SAAG,IAAI,EAAC,SAAS,uCAAqC,CAC3C,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACtD,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI;aACX;YACD,QAAQ,EAAE,CACR,yBAAgB,wBAAwB;gBACtC,qEAGE,SAAS,EAAC,QAAQ,gBACP,MAAM;oBAEjB,iBAAW,IAAI,EAAC,SAAS,gCAAsC;oBAC/D,SAAG,IAAI,EAAC,SAAS,2CAAyC,CAC/C;gBACb,+CAAgC,SAAS,EAAC,KAAK,gBAAY,MAAM;oBAC/D,iBAAW,IAAI,EAAC,SAAS,4BAAkC;oBAC3D,SAAG,IAAI,EAAC,SAAS,qCAAmC,CACzC;gBACb,+CAAgC,SAAS,EAAC,QAAQ,gBAAY,MAAM;oBAClE,iBAAW,IAAI,EAAC,SAAS,+BAAqC;oBAC9D,SAAG,IAAI,EAAC,SAAS,kCAAgC,CACtC,CACT,CACP;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACvD,IAAI,EAAE;gBACJ,YAAY,EAAE,EAAE;aACjB;YACD,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,oBAA0B;gBACnD,SAAG,IAAI,EAAC,SAAS,2CAAyC,CAC/C,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACrD,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,OAAO;aACrB;YACD,QAAQ,EAAE,CACR;gBACE,iBAAW,IAAI,EAAC,SAAS,2BAAiC;gBAC1D,SAAG,IAAI,EAAC,SAAS,+CAA6C,CACnD,CACd;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnD,QAAQ,EAAE,CACR,yBAAgB,wBAAwB;gBACtC,yBAAgB,UAAU;oBACxB,wBAAe,0BAA0B,kCAEpC;oBACL,yBAAgB,8DAA8D;wBAC5E,uBAAc,cAAc,4CAExB;wBACJ,+CAEE,QAAQ,EAAC,UAAU,EACnB,SAAS,EAAC,OAAO;4BAEjB,iBAAW,IAAI,EAAC,SAAS,eAAqB;4BAC9C,SAAG,IAAI,EAAC,SAAS,wFAGb,CACO,CACT,CACF;gBACN,yBAAgB,UAAU;oBACxB,wBAAe,0BAA0B,qBAAoB;oBAC7D,yBAAgB,8DAA8D;wBAC5E,uBAAc,cAAc,4CAExB;wBACJ,+CAEE,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAC,OAAO;4BAEjB,iBAAW,IAAI,EAAC,SAAS,YAAkB;4BAC3C,SAAG,IAAI,EAAC,SAAS,iFAGb,CACO,CACT,CACF,CACF,CACP;SACF;KACF;CACF,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvPopoverDocs: NovaDocs<Components.NvPopover> = {\n component: 'nv-popover',\n subcomponents: ['nv-button'],\n stories: [\n {\n name: 'Default',\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a Click popover.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.open),\n args: { open: true },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a pre opened popover.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.triggerMode),\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args trigger-mode=\"hover\">\n <nv-button slot=\"trigger\">Hover Me</nv-button>\n <p slot=\"content\">This is a Hover popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args trigger-mode=\"click\">\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a Click popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args trigger-mode=\"controlled\" open>\n <nv-button slot=\"trigger\">Controlled</nv-button>\n <p slot=\"content\">This is a Controlled popover.</p>\n </nv-popover>\n </div>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.placement),\n args: {\n hasArrow: true,\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args placement=\"top\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Top</nv-button>\n <p slot=\"content\">This is a Top popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"bottom\">\n <nv-button slot=\"trigger\">Bottom</nv-button>\n <p slot=\"content\">This is a Bottom popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"left\">\n <nv-button slot=\"trigger\">Left</nv-button>\n <p slot=\"content\">This is a Left popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"right\">\n <nv-button slot=\"trigger\">Right</nv-button>\n <p slot=\"content\">This is a Right popover.</p>\n </nv-popover>\n </div>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.groupName),\n args: {\n groupName: 'popover-group-1',\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 1</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 2</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 3</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n </div>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.offset),\n args: {\n offset: 30,\n placement: 'right',\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Offset</nv-button>\n <p slot=\"content\">This is a popover with 30px offset.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.hasArrow),\n args: {\n hasArrow: true,\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Arrow</nv-button>\n <p slot=\"content\">This is a popover with an arrow.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.disableFlip),\n args: {\n open: true,\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover\n data-storybook-args\n disable-flip\n placement=\"bottom\"\n data-class=\"py-6\"\n >\n <nv-button slot=\"trigger\">Flip Off Placement Bottom</nv-button>\n <p slot=\"content\">This will always stay to the bottom.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"top\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Flip On Placement Top</nv-button>\n <p slot=\"content\">This could flip to the bottom.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"bottom\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Flip On Placement Bottom</nv-button>\n <p slot=\"content\">This could flip to the top.</p>\n </nv-popover>\n </div>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.shiftPadding),\n args: {\n shiftPadding: 40,\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Shift Padding</nv-button>\n <p slot=\"content\">This is a popover with 40px padding.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.enterDelay),\n args: {\n enterDelay: 1000,\n triggerMode: 'hover',\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Hover me and wait 1s</nv-button>\n <p slot=\"content\">This is a popover with a 1s enter delay.</p>\n </nv-popover>\n ),\n },\n {\n name: nameof<Components.NvPopover>(x => x.strategy),\n template: (\n <div data-class=\"flex gap-8 items-start\">\n <div data-class=\"relative\">\n <h4 data-class=\"mb-2 text-sm font-medium\">\n Absolute Strategy (Default)\n </h4>\n <div data-class=\"w-48 h-32 overflow-hidden border border-gray-300 rounded p-4\">\n <p data-class=\"mb-2 text-xs\">\n Scroll container with overflow hidden\n </p>\n <nv-popover\n data-storybook-args\n strategy=\"absolute\"\n placement=\"right\"\n >\n <nv-button slot=\"trigger\">Absolute</nv-button>\n <p slot=\"content\">\n This popover uses absolute positioning and may be clipped by\n overflow containers.\n </p>\n </nv-popover>\n </div>\n </div>\n <div data-class=\"relative\">\n <h4 data-class=\"mb-2 text-sm font-medium\">Fixed Strategy</h4>\n <div data-class=\"w-48 h-32 overflow-hidden border border-gray-300 rounded p-4\">\n <p data-class=\"mb-2 text-xs\">\n Scroll container with overflow hidden\n </p>\n <nv-popover\n data-storybook-args\n strategy=\"fixed\"\n placement=\"right\"\n >\n <nv-button slot=\"trigger\">Fixed</nv-button>\n <p slot=\"content\">\n This popover uses fixed positioning and breaks out of overflow\n containers.\n </p>\n </nv-popover>\n </div>\n </div>\n </div>\n ),\n },\n ],\n};\n\nexport default NvPopoverDocs;\n"]}
1
+ {"version":3,"file":"nv-popover.docs.js","sourceRoot":"","sources":["../../../src/components/nv-popover/nv-popover.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvPopoverDocs: NovaDocs<Components.NvPopover> = {\n component: 'nv-popover',\n subcomponents: ['nv-button'],\n stories: [\n // Default\n {\n name: 'Default',\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a Click popover.</p>\n </nv-popover>\n ),\n },\n // Open\n {\n name: nameof<Components.NvPopover>(x => x.open),\n args: { open: true },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a pre opened popover.</p>\n </nv-popover>\n ),\n },\n // TriggerMode\n {\n name: nameof<Components.NvPopover>(x => x.triggerMode),\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args trigger-mode=\"hover\">\n <nv-button slot=\"trigger\">Hover Me</nv-button>\n <p slot=\"content\">This is a Hover popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args trigger-mode=\"click\">\n <nv-button slot=\"trigger\">Click Me</nv-button>\n <p slot=\"content\">This is a Click popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args trigger-mode=\"controlled\" open>\n <nv-button slot=\"trigger\">Controlled</nv-button>\n <p slot=\"content\">This is a Controlled popover.</p>\n </nv-popover>\n </div>\n ),\n },\n // Placement\n {\n name: nameof<Components.NvPopover>(x => x.placement),\n args: {\n hasArrow: true,\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args placement=\"top\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Top</nv-button>\n <p slot=\"content\">This is a Top popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"bottom\">\n <nv-button slot=\"trigger\">Bottom</nv-button>\n <p slot=\"content\">This is a Bottom popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"left\">\n <nv-button slot=\"trigger\">Left</nv-button>\n <p slot=\"content\">This is a Left popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"right\">\n <nv-button slot=\"trigger\">Right</nv-button>\n <p slot=\"content\">This is a Right popover.</p>\n </nv-popover>\n </div>\n ),\n },\n // GroupName\n {\n name: nameof<Components.NvPopover>(x => x.groupName),\n args: {\n groupName: 'popover-group-1',\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 1</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 2</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Popover 3</nv-button>\n <p slot=\"content\">This is a popover.</p>\n </nv-popover>\n </div>\n ),\n },\n // Offset\n {\n name: nameof<Components.NvPopover>(x => x.offset),\n args: {\n offset: 30,\n placement: 'right',\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Offset</nv-button>\n <p slot=\"content\">This is a popover with 30px offset.</p>\n </nv-popover>\n ),\n },\n // HasArrow\n {\n name: nameof<Components.NvPopover>(x => x.hasArrow),\n args: {\n hasArrow: true,\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Arrow</nv-button>\n <p slot=\"content\">This is a popover with an arrow.</p>\n </nv-popover>\n ),\n },\n // DisableFlip\n {\n name: nameof<Components.NvPopover>(x => x.disableFlip),\n args: {\n open: true,\n },\n template: (\n <div data-class=\"flex gap-4 items-start\">\n <nv-popover\n data-storybook-args\n disable-flip\n placement=\"bottom\"\n data-class=\"py-6\"\n >\n <nv-button slot=\"trigger\">Flip Off Placement Bottom</nv-button>\n <p slot=\"content\">This will always stay to the bottom.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"top\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Flip On Placement Top</nv-button>\n <p slot=\"content\">This could flip to the bottom.</p>\n </nv-popover>\n <nv-popover data-storybook-args placement=\"bottom\" data-class=\"py-6\">\n <nv-button slot=\"trigger\">Flip On Placement Bottom</nv-button>\n <p slot=\"content\">This could flip to the top.</p>\n </nv-popover>\n </div>\n ),\n },\n // ShiftPadding\n {\n name: nameof<Components.NvPopover>(x => x.shiftPadding),\n args: {\n shiftPadding: 40,\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Shift Padding</nv-button>\n <p slot=\"content\">This is a popover with 40px padding.</p>\n </nv-popover>\n ),\n },\n // EnterDelay\n {\n name: nameof<Components.NvPopover>(x => x.enterDelay),\n args: {\n enterDelay: 1000,\n triggerMode: 'hover',\n },\n template: (\n <nv-popover data-storybook-args>\n <nv-button slot=\"trigger\">Hover me and wait 1s</nv-button>\n <p slot=\"content\">This is a popover with a 1s enter delay.</p>\n </nv-popover>\n ),\n },\n // Strategy\n {\n name: nameof<Components.NvPopover>(x => x.strategy),\n template: (\n <div data-class=\"flex gap-8 items-start\">\n <div data-class=\"relative\">\n <h4 data-class=\"mb-2 text-sm font-medium\">\n Absolute Strategy (Default)\n </h4>\n <div data-class=\"w-48 h-32 overflow-hidden border border-gray-300 rounded p-4\">\n <p data-class=\"mb-2 text-xs\">\n Scroll container with overflow hidden\n </p>\n <nv-popover\n data-storybook-args\n strategy=\"absolute\"\n placement=\"right\"\n >\n <nv-button slot=\"trigger\">Absolute</nv-button>\n <p slot=\"content\">\n This popover uses absolute positioning and may be clipped by\n overflow containers.\n </p>\n </nv-popover>\n </div>\n </div>\n <div data-class=\"relative\">\n <h4 data-class=\"mb-2 text-sm font-medium\">Fixed Strategy</h4>\n <div data-class=\"w-48 h-32 overflow-hidden border border-gray-300 rounded p-4\">\n <p data-class=\"mb-2 text-xs\">\n Scroll container with overflow hidden\n </p>\n <nv-popover\n data-storybook-args\n strategy=\"fixed\"\n placement=\"right\"\n >\n <nv-button slot=\"trigger\">Fixed</nv-button>\n <p slot=\"content\">\n This popover uses fixed positioning and breaks out of overflow\n containers.\n </p>\n </nv-popover>\n </div>\n </div>\n </div>\n ),\n },\n ],\n};\n\nexport default NvPopoverDocs;\n"]}