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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/dist/blazor-docs.json +6242 -4908
  2. package/dist/cjs/{app-globals-6b0931bc.js → app-globals-bd4d701e.js} +2 -2
  3. package/dist/cjs/{app-globals-6b0931bc.js.map → app-globals-bd4d701e.js.map} +1 -1
  4. package/dist/cjs/{constants-9525a915.js → constants-69b40456.js} +15 -8
  5. package/dist/cjs/constants-69b40456.js.map +1 -0
  6. package/dist/cjs/events.utils-52846a7d.js +32 -0
  7. package/dist/cjs/events.utils-52846a7d.js.map +1 -0
  8. package/dist/cjs/{grow.animation-46e7ae4b.js → grow.animation-a1f0bc22.js} +1 -29
  9. package/dist/cjs/grow.animation-a1f0bc22.js.map +1 -0
  10. package/dist/cjs/{index-ddc37f87.js → index-5910ba06.js} +75 -18
  11. package/dist/{native/p-9b093b92.js.map → cjs/index-5910ba06.js.map} +1 -1
  12. package/dist/cjs/index.cjs.js +6 -3
  13. package/dist/cjs/index.cjs.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +3 -3
  15. package/dist/cjs/native.cjs.js +3 -3
  16. package/dist/cjs/nv-alert.cjs.entry.js +3 -3
  17. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +3 -3
  20. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-breadcrumb.cjs.entry.js +4 -3
  23. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +3 -3
  25. package/dist/cjs/nv-breadcrumbs.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-button.cjs.entry.js +24 -4
  27. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nv-col.cjs.entry.js +2 -2
  29. package/dist/cjs/nv-datagrid.cjs.entry.js +3 -3
  30. package/dist/cjs/nv-datagridbody.cjs.entry.js +2 -2
  31. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +2 -2
  33. package/dist/cjs/nv-datagridhead.cjs.entry.js +2 -2
  34. package/dist/cjs/nv-datagridrow.cjs.entry.js +2 -2
  35. package/dist/cjs/nv-dialog.cjs.entry.js +758 -0
  36. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -0
  37. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +132 -0
  38. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -0
  39. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +34 -25
  40. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fielddropdown.cjs.entry.js +52 -15
  42. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -2
  44. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +6 -3
  45. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldnumber.cjs.entry.js +12 -12
  47. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldpassword.cjs.entry.js +4 -4
  49. package/dist/cjs/nv-fieldradio.cjs.entry.js +5 -5
  50. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-fieldselect.cjs.entry.js +49 -18
  52. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js +8 -5
  54. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +13 -13
  56. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js +994 -0
  58. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -0
  59. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  60. package/dist/cjs/nv-iconbutton.cjs.entry.js +125 -0
  61. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +1 -0
  62. package/dist/cjs/nv-loader.cjs.entry.js +35 -0
  63. package/dist/cjs/nv-loader.cjs.entry.js.map +1 -0
  64. package/dist/cjs/nv-menu.cjs.entry.js +66 -7
  65. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  67. package/dist/cjs/nv-popover.cjs.entry.js +11 -22
  68. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  70. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  71. package/dist/cjs/nv-table.cjs.entry.js +3 -3
  72. package/dist/cjs/nv-tablebody.cjs.entry.js +2 -2
  73. package/dist/cjs/nv-tablecolumn.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-tabledatacell.cjs.entry.js +2 -2
  75. package/dist/cjs/nv-tablehead.cjs.entry.js +2 -2
  76. package/dist/cjs/nv-tablerow.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-toggle.cjs.entry.js +82 -0
  78. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -0
  79. package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
  80. package/dist/cjs/string.utils-9c581350.js +25 -0
  81. package/dist/cjs/string.utils-9c581350.js.map +1 -0
  82. package/dist/collection/collection-manifest.json +5 -1
  83. package/dist/collection/components/nv-alert/nv-alert.css +5 -5
  84. package/dist/collection/components/nv-badge/nv-badge.css +10 -10
  85. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +57 -4
  86. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +2 -2
  87. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js.map +1 -1
  88. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.css +1 -1
  89. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +4 -14
  90. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
  91. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  92. package/dist/collection/components/nv-button/nv-button.docs.js +6 -1
  93. package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
  94. package/dist/collection/components/nv-button/nv-button.js +56 -1
  95. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  96. package/dist/collection/components/nv-button/styles/nv-button.css +50 -10
  97. package/dist/collection/components/nv-col/nv-col.js +1 -1
  98. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +1 -0
  99. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  100. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  101. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +1 -1
  102. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  103. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +1 -1
  104. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +1 -1
  105. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +1 -1
  106. package/dist/collection/components/nv-dialog/nv-dialog.css +43 -0
  107. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +79 -0
  108. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -0
  109. package/dist/collection/components/nv-dialog/nv-dialog.js +510 -0
  110. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -0
  111. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.css +8 -0
  112. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js +6 -0
  113. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js.map +1 -0
  114. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +267 -0
  115. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js.map +1 -0
  116. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +25 -0
  117. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js +6 -0
  118. package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js.map +1 -0
  119. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +87 -0
  120. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js.map +1 -0
  121. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -1
  122. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +45 -30
  123. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  124. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +28 -0
  125. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +87 -22
  127. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  128. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  129. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  130. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +7 -1
  131. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  132. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +15 -6
  133. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  134. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +15 -14
  135. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  136. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +13 -13
  137. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  138. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +1 -0
  139. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  140. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  141. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -1
  142. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +6 -6
  143. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  144. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +30 -0
  145. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  146. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +72 -19
  147. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  148. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +10 -7
  149. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  150. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +14 -14
  151. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  152. package/dist/collection/components/nv-fieldtime/nv-fieldtime.css +261 -0
  153. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +110 -0
  154. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -0
  155. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +1366 -0
  156. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -0
  157. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  158. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
  159. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  160. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  161. package/dist/collection/components/nv-menu/nv-menu.docs.js +61 -0
  162. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  163. package/dist/collection/components/nv-menu/nv-menu.js +92 -6
  164. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  165. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  166. package/dist/collection/components/nv-popover/nv-popover.docs.js +9 -9
  167. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  168. package/dist/collection/components/nv-popover/nv-popover.js +2 -14
  169. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  170. package/dist/collection/components/nv-row/nv-row.js +1 -1
  171. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  172. package/dist/collection/components/nv-table/nv-table.docs.js +1 -0
  173. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  174. package/dist/collection/components/nv-table/nv-table.js +2 -2
  175. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  176. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +1 -1
  177. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +1 -1
  178. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  179. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  180. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.css → nv-toggle/nv-toggle.css} +22 -22
  181. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.docs.js → nv-toggle/nv-toggle.docs.js} +14 -14
  182. package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -0
  183. package/dist/collection/components/{nv-fieldtoggle/nv-fieldtoggle.js → nv-toggle/nv-toggle.js} +11 -10
  184. package/dist/collection/components/nv-toggle/nv-toggle.js.map +1 -0
  185. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  186. package/dist/collection/dev/dev-components.js +1 -1
  187. package/dist/collection/dev/dev-components.js.map +1 -1
  188. package/dist/collection/index.js +2 -0
  189. package/dist/collection/index.js.map +1 -1
  190. package/dist/collection/templates/navigation.docs.js +12 -2
  191. package/dist/collection/templates/navigation.docs.js.map +1 -1
  192. package/dist/collection/utils/constants.js +11 -5
  193. package/dist/collection/utils/constants.js.map +1 -1
  194. package/dist/collection/utils/string.utils.js +14 -0
  195. package/dist/collection/utils/string.utils.js.map +1 -0
  196. package/dist/components/index.js +5 -4
  197. package/dist/components/index.js.map +1 -1
  198. package/dist/components/nv-alert.js +4 -4
  199. package/dist/components/nv-alert.js.map +1 -1
  200. package/dist/components/nv-avatar.js +3 -3
  201. package/dist/components/nv-badge.js +1 -1
  202. package/dist/components/nv-base.js +1 -1
  203. package/dist/components/nv-breadcrumb.js +7 -12
  204. package/dist/components/nv-breadcrumb.js.map +1 -1
  205. package/dist/components/nv-breadcrumbs.js +3 -3
  206. package/dist/components/nv-breadcrumbs.js.map +1 -1
  207. package/dist/components/nv-button.js +1 -141
  208. package/dist/components/nv-button.js.map +1 -1
  209. package/dist/components/nv-col.js +2 -2
  210. package/dist/components/nv-datagrid.js +3 -3
  211. package/dist/components/nv-datagridbody.js +2 -2
  212. package/dist/components/nv-datagridcolumn.js +2 -2
  213. package/dist/components/nv-datagriddatacell.js +2 -2
  214. package/dist/components/nv-datagridhead.js +2 -2
  215. package/dist/components/nv-datagridrow.js +2 -2
  216. package/dist/components/{nv-fieldtoggle.d.ts → nv-dialog.d.ts} +4 -4
  217. package/dist/components/nv-dialog.js +816 -0
  218. package/dist/components/nv-dialog.js.map +1 -0
  219. package/dist/components/nv-dialogfooter.d.ts +11 -0
  220. package/dist/components/nv-dialogfooter.js +8 -0
  221. package/dist/components/nv-dialogfooter.js.map +1 -0
  222. package/dist/components/nv-dialogheader.d.ts +11 -0
  223. package/dist/components/nv-dialogheader.js +8 -0
  224. package/dist/components/nv-dialogheader.js.map +1 -0
  225. package/dist/components/nv-fieldcheckbox.js +1 -1
  226. package/dist/components/nv-fielddropdown.js +61 -21
  227. package/dist/components/nv-fielddropdown.js.map +1 -1
  228. package/dist/components/nv-fielddropdownitem.js +1 -1
  229. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  230. package/dist/components/nv-fieldmultiselect.js +14 -11
  231. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  232. package/dist/components/nv-fieldnumber.js +13 -13
  233. package/dist/components/nv-fieldnumber.js.map +1 -1
  234. package/dist/components/nv-fieldpassword.js +7 -7
  235. package/dist/components/nv-fieldradio.js +5 -5
  236. package/dist/components/nv-fieldradio.js.map +1 -1
  237. package/dist/components/nv-fieldselect.js +55 -21
  238. package/dist/components/nv-fieldselect.js.map +1 -1
  239. package/dist/components/nv-fieldtext.js +9 -6
  240. package/dist/components/nv-fieldtext.js.map +1 -1
  241. package/dist/components/nv-fieldtextarea.js +13 -13
  242. package/dist/components/nv-fieldtextarea.js.map +1 -1
  243. package/dist/components/nv-fieldtime.d.ts +11 -0
  244. package/dist/components/nv-fieldtime.js +1054 -0
  245. package/dist/components/nv-fieldtime.js.map +1 -0
  246. package/dist/components/nv-icon.js +1 -1
  247. package/dist/components/nv-iconbutton.js +1 -1
  248. package/dist/components/nv-loader.js +1 -1
  249. package/dist/components/nv-menu.js +90 -10
  250. package/dist/components/nv-menu.js.map +1 -1
  251. package/dist/components/nv-menuitem.js +1 -80
  252. package/dist/components/nv-menuitem.js.map +1 -1
  253. package/dist/components/nv-popover.js +1 -1
  254. package/dist/components/nv-row.js +2 -2
  255. package/dist/components/nv-stack.js +2 -2
  256. package/dist/components/nv-table.js +3 -3
  257. package/dist/components/nv-tablebody.js +2 -2
  258. package/dist/components/nv-tablecolumn.js +2 -2
  259. package/dist/components/nv-tabledatacell.js +2 -2
  260. package/dist/components/nv-tablehead.js +2 -2
  261. package/dist/components/nv-tablerow.js +2 -2
  262. package/dist/components/nv-toggle.d.ts +11 -0
  263. package/dist/components/nv-toggle.js +109 -0
  264. package/dist/components/nv-toggle.js.map +1 -0
  265. package/dist/components/nv-tooltip.js +1 -1
  266. package/dist/components/{p-7a19fef7.js → p-11fcdad9.js} +4 -4
  267. package/dist/components/{p-7a19fef7.js.map → p-11fcdad9.js.map} +1 -1
  268. package/dist/components/{p-7c0db67e.js → p-16badb3b.js} +4 -4
  269. package/dist/components/{p-7c0db67e.js.map → p-16badb3b.js.map} +1 -1
  270. package/dist/components/{p-3a65a05e.js → p-17714233.js} +40 -28
  271. package/dist/components/p-17714233.js.map +1 -0
  272. package/dist/components/{p-0b30dd1b.js → p-18d221e3.js} +3 -3
  273. package/dist/components/{p-0b30dd1b.js.map → p-18d221e3.js.map} +1 -1
  274. package/dist/components/p-2768d2c0.js +57 -0
  275. package/dist/components/p-2768d2c0.js.map +1 -0
  276. package/dist/components/p-2baea6ba.js +84 -0
  277. package/dist/components/p-2baea6ba.js.map +1 -0
  278. package/dist/components/{p-63afc71f.js → p-3859dc5c.js} +4 -4
  279. package/dist/components/{p-63afc71f.js.map → p-3859dc5c.js.map} +1 -1
  280. package/dist/components/{p-2abfadb8.js → p-4938572a.js} +4 -4
  281. package/dist/components/{p-2abfadb8.js.map → p-4938572a.js.map} +1 -1
  282. package/dist/components/{p-74407727.js → p-56f71851.js} +16 -9
  283. package/dist/components/p-56f71851.js.map +1 -0
  284. package/dist/components/{p-3b209e94.js → p-77d0fedc.js} +43 -3
  285. package/dist/components/p-77d0fedc.js.map +1 -0
  286. package/dist/components/p-91bf0cb6.js +166 -0
  287. package/dist/components/p-91bf0cb6.js.map +1 -0
  288. package/dist/components/{p-afa1c98e.js → p-98ff0e5f.js} +37 -28
  289. package/dist/components/p-98ff0e5f.js.map +1 -0
  290. package/dist/components/{p-5b98036c.js → p-a01bdf02.js} +4 -4
  291. package/dist/components/{p-5b98036c.js.map → p-a01bdf02.js.map} +1 -1
  292. package/dist/components/p-a5c8eee9.js +22 -0
  293. package/dist/components/p-a5c8eee9.js.map +1 -0
  294. package/dist/components/{p-78e7c594.js → p-a9a52105.js} +6 -17
  295. package/dist/components/p-a9a52105.js.map +1 -0
  296. package/dist/components/p-d429a343.js +28 -0
  297. package/dist/components/p-d429a343.js.map +1 -0
  298. package/dist/components/p-de8411ee.js +128 -0
  299. package/dist/components/p-de8411ee.js.map +1 -0
  300. package/dist/components/{p-d3b1c116.js → p-e431a0ad.js} +6 -6
  301. package/dist/components/{p-d3b1c116.js.map → p-e431a0ad.js.map} +1 -1
  302. package/dist/docs.json +2211 -911
  303. package/dist/esm/{app-globals-246d6b7c.js → app-globals-0a94217b.js} +2 -2
  304. package/dist/esm/{app-globals-246d6b7c.js.map → app-globals-0a94217b.js.map} +1 -1
  305. package/dist/esm/{constants-7b642e1d.js → constants-0181211f.js} +16 -9
  306. package/dist/esm/constants-0181211f.js.map +1 -0
  307. package/dist/esm/events.utils-fe1d907f.js +28 -0
  308. package/dist/esm/events.utils-fe1d907f.js.map +1 -0
  309. package/dist/esm/{grow.animation-88a8ee8f.js → grow.animation-cac164da.js} +2 -27
  310. package/dist/esm/grow.animation-cac164da.js.map +1 -0
  311. package/dist/esm/{index-cd557d0a.js → index-fac2d5d2.js} +75 -19
  312. package/dist/esm/index-fac2d5d2.js.map +1 -0
  313. package/dist/esm/index.js +4 -3
  314. package/dist/esm/index.js.map +1 -1
  315. package/dist/esm/loader.js +4 -4
  316. package/dist/esm/native.js +4 -4
  317. package/dist/esm/nv-alert.entry.js +3 -3
  318. package/dist/esm/nv-alert.entry.js.map +1 -1
  319. package/dist/esm/nv-avatar.entry.js +2 -2
  320. package/dist/esm/nv-badge_2.entry.js +3 -3
  321. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  322. package/dist/esm/nv-base.entry.js +1 -1
  323. package/dist/esm/nv-breadcrumb.entry.js +4 -3
  324. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  325. package/dist/esm/nv-breadcrumbs.entry.js +3 -3
  326. package/dist/esm/nv-breadcrumbs.entry.js.map +1 -1
  327. package/dist/esm/nv-button.entry.js +24 -4
  328. package/dist/esm/nv-button.entry.js.map +1 -1
  329. package/dist/esm/nv-col.entry.js +2 -2
  330. package/dist/esm/nv-datagrid.entry.js +3 -3
  331. package/dist/esm/nv-datagridbody.entry.js +2 -2
  332. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  333. package/dist/esm/nv-datagriddatacell.entry.js +2 -2
  334. package/dist/esm/nv-datagridhead.entry.js +2 -2
  335. package/dist/esm/nv-datagridrow.entry.js +2 -2
  336. package/dist/esm/nv-dialog.entry.js +754 -0
  337. package/dist/esm/nv-dialog.entry.js.map +1 -0
  338. package/dist/esm/nv-dialogfooter_2.entry.js +127 -0
  339. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -0
  340. package/dist/esm/nv-fieldcheckbox.entry.js +34 -25
  341. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  342. package/dist/esm/nv-fielddropdown.entry.js +52 -15
  343. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  344. package/dist/esm/nv-fielddropdownitem.entry.js +2 -2
  345. package/dist/esm/nv-fieldmultiselect.entry.js +6 -3
  346. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  347. package/dist/esm/nv-fieldnumber.entry.js +12 -12
  348. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  349. package/dist/esm/nv-fieldpassword.entry.js +4 -4
  350. package/dist/esm/nv-fieldradio.entry.js +5 -5
  351. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  352. package/dist/esm/nv-fieldselect.entry.js +49 -18
  353. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  354. package/dist/esm/nv-fieldtext.entry.js +8 -5
  355. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  356. package/dist/esm/nv-fieldtextarea.entry.js +13 -13
  357. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  358. package/dist/esm/nv-fieldtime.entry.js +990 -0
  359. package/dist/esm/nv-fieldtime.entry.js.map +1 -0
  360. package/dist/esm/nv-icon.entry.js +3 -3
  361. package/dist/esm/nv-iconbutton.entry.js +121 -0
  362. package/dist/esm/nv-iconbutton.entry.js.map +1 -0
  363. package/dist/esm/nv-loader.entry.js +31 -0
  364. package/dist/esm/nv-loader.entry.js.map +1 -0
  365. package/dist/esm/nv-menu.entry.js +66 -7
  366. package/dist/esm/nv-menu.entry.js.map +1 -1
  367. package/dist/esm/nv-menuitem.entry.js +2 -2
  368. package/dist/esm/nv-popover.entry.js +5 -16
  369. package/dist/esm/nv-popover.entry.js.map +1 -1
  370. package/dist/esm/nv-row.entry.js +2 -2
  371. package/dist/esm/nv-stack.entry.js +2 -2
  372. package/dist/esm/nv-table.entry.js +3 -3
  373. package/dist/esm/nv-tablebody.entry.js +2 -2
  374. package/dist/esm/nv-tablecolumn.entry.js +2 -2
  375. package/dist/esm/nv-tabledatacell.entry.js +2 -2
  376. package/dist/esm/nv-tablehead.entry.js +2 -2
  377. package/dist/esm/nv-tablerow.entry.js +2 -2
  378. package/dist/esm/nv-toggle.entry.js +78 -0
  379. package/dist/esm/nv-toggle.entry.js.map +1 -0
  380. package/dist/esm/nv-tooltip.entry.js +2 -2
  381. package/dist/esm/string.utils-16aed4a7.js +22 -0
  382. package/dist/esm/string.utils-16aed4a7.js.map +1 -0
  383. package/dist/native/index.esm.js +1 -1
  384. package/dist/native/index.esm.js.map +1 -1
  385. package/dist/native/native.css +1 -1
  386. package/dist/native/native.esm.js +1 -1
  387. package/dist/native/native.esm.js.map +1 -1
  388. package/dist/native/p-02bb8184.entry.js +2 -0
  389. package/dist/native/p-0bf35abc.entry.js +2 -0
  390. package/dist/native/p-0bf35abc.entry.js.map +1 -0
  391. package/dist/native/p-10ba289c.entry.js +2 -0
  392. package/dist/native/{p-826f1d28.entry.js → p-208accf0.entry.js} +2 -2
  393. package/dist/native/p-208accf0.entry.js.map +1 -0
  394. package/dist/native/p-211f7b19.entry.js +2 -0
  395. package/dist/native/p-211f7b19.entry.js.map +1 -0
  396. package/dist/native/p-2aebf31b.entry.js +2 -0
  397. package/dist/native/p-3a8a9371.entry.js +2 -0
  398. package/dist/native/p-3a8a9371.entry.js.map +1 -0
  399. package/dist/native/{p-6bb2c88f.entry.js → p-3c004551.entry.js} +2 -2
  400. package/dist/native/p-3c004551.entry.js.map +1 -0
  401. package/dist/native/p-46553ffd.entry.js +2 -0
  402. package/dist/native/p-46553ffd.entry.js.map +1 -0
  403. package/dist/native/{p-f7db0785.entry.js → p-4d0caf4a.entry.js} +3 -3
  404. package/dist/native/p-4f11286d.entry.js +2 -0
  405. package/dist/native/{p-40f4828a.entry.js.map → p-4f11286d.entry.js.map} +1 -1
  406. package/dist/native/p-51ad8bcd.entry.js +2 -0
  407. package/dist/native/p-51ad8bcd.entry.js.map +1 -0
  408. package/dist/native/p-5439afb8.js +3 -0
  409. package/dist/native/p-5439afb8.js.map +1 -0
  410. package/dist/native/{p-74407727.js → p-56f71851.js} +2 -2
  411. package/dist/native/p-56f71851.js.map +1 -0
  412. package/dist/native/p-5f1a7e6e.entry.js +2 -0
  413. package/dist/native/p-5f1a7e6e.entry.js.map +1 -0
  414. package/dist/native/{p-575ea40b.entry.js → p-61d2cb2e.entry.js} +2 -2
  415. package/dist/native/{p-cd251f91.entry.js → p-6d68f133.entry.js} +2 -2
  416. package/dist/native/p-724ed8d7.entry.js +7 -0
  417. package/dist/native/p-724ed8d7.entry.js.map +1 -0
  418. package/dist/native/{p-e5fbe545.entry.js → p-75b1ea9f.entry.js} +2 -2
  419. package/dist/native/p-87083363.entry.js +2 -0
  420. package/dist/native/p-87083363.entry.js.map +1 -0
  421. package/dist/native/p-892052c2.entry.js +2 -0
  422. package/dist/native/p-8c1a6aa6.entry.js +2 -0
  423. package/dist/native/p-8c1a6aa6.entry.js.map +1 -0
  424. package/dist/native/p-8ee30013.entry.js +2 -0
  425. package/dist/native/{p-9341cf9d.entry.js.map → p-8ee30013.entry.js.map} +1 -1
  426. package/dist/native/{p-788712dd.entry.js → p-96902bb3.entry.js} +2 -2
  427. package/dist/native/p-99e7a452.entry.js +2 -0
  428. package/dist/native/p-99e7a452.entry.js.map +1 -0
  429. package/dist/native/p-9ac790b3.entry.js +2 -0
  430. package/dist/native/{p-18b227b5.entry.js.map → p-9ac790b3.entry.js.map} +1 -1
  431. package/dist/native/{p-3283505f.entry.js → p-9fb5db20.entry.js} +2 -2
  432. package/dist/native/p-a5c8eee9.js +2 -0
  433. package/dist/native/p-a5c8eee9.js.map +1 -0
  434. package/dist/native/{p-552e7ea4.entry.js → p-a998f8df.entry.js} +2 -2
  435. package/dist/native/p-aa2834e2.entry.js +2 -0
  436. package/dist/native/p-ab5a8ce5.entry.js +2 -0
  437. package/dist/native/p-beab7cbd.entry.js +2 -0
  438. package/dist/native/p-bfeda21c.entry.js +2 -0
  439. package/dist/native/p-bfeda21c.entry.js.map +1 -0
  440. package/dist/native/p-c1765831.js +2 -0
  441. package/dist/native/p-c1765831.js.map +1 -0
  442. package/dist/native/{p-7dfb4a60.entry.js → p-c51ee6dc.entry.js} +2 -2
  443. package/dist/native/p-c51ee6dc.entry.js.map +1 -0
  444. package/dist/native/{p-2063c768.entry.js → p-d24586ed.entry.js} +2 -2
  445. package/dist/native/p-d429a343.js +2 -0
  446. package/dist/native/p-d429a343.js.map +1 -0
  447. package/dist/native/{p-1e2bd4e3.entry.js → p-d4e56727.entry.js} +2 -2
  448. package/dist/native/p-d67b7502.entry.js +2 -0
  449. package/dist/native/p-d67b7502.entry.js.map +1 -0
  450. package/dist/native/p-d776ed48.entry.js +2 -0
  451. package/dist/native/p-d776ed48.entry.js.map +1 -0
  452. package/dist/native/p-dc9dd5a7.entry.js +2 -0
  453. package/dist/native/p-e192c25c.entry.js +2 -0
  454. package/dist/native/p-e192c25c.entry.js.map +1 -0
  455. package/dist/native/p-e3827605.entry.js +2 -0
  456. package/dist/native/{p-5d0dc7c8.entry.js.map → p-e3827605.entry.js.map} +1 -1
  457. package/dist/native/p-e5a7596b.entry.js +2 -0
  458. package/dist/native/p-e6f45df2.entry.js +2 -0
  459. package/dist/native/p-ed47a702.entry.js +2 -0
  460. package/dist/native/p-f30ce086.entry.js +2 -0
  461. package/dist/native/{p-eda8cd9d.entry.js.map → p-f30ce086.entry.js.map} +1 -1
  462. package/dist/native/p-f3fbdea6.js +2 -0
  463. package/dist/native/{p-f79752ca.entry.js → p-fd2955dd.entry.js} +2 -2
  464. package/dist/native/p-fd2955dd.entry.js.map +1 -0
  465. package/dist/types/components/nv-breadcrumb/nv-breadcrumb.d.ts +0 -1
  466. package/dist/types/components/nv-button/nv-button.d.ts +8 -0
  467. package/dist/types/components/nv-dialog/nv-dialog.d.ts +124 -0
  468. package/dist/types/components/nv-dialog/nv-dialog.docs.d.ts +4 -0
  469. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.d.ts +63 -0
  470. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.docs.d.ts +4 -0
  471. package/dist/types/components/nv-dialogheader/nv-dialogheader.d.ts +20 -0
  472. package/dist/types/components/nv-dialogheader/nv-dialogheader.docs.d.ts +4 -0
  473. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +14 -10
  474. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +34 -10
  475. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +6 -2
  476. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +4 -4
  477. package/dist/types/components/nv-fieldradio/nv-fieldradio.d.ts +2 -2
  478. package/dist/types/components/nv-fieldselect/nv-fieldselect.d.ts +20 -6
  479. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +5 -4
  480. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +3 -3
  481. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +156 -0
  482. package/dist/types/components/nv-fieldtime/nv-fieldtime.docs.d.ts +4 -0
  483. package/dist/types/components/nv-menu/nv-menu.d.ts +20 -0
  484. package/dist/types/components/{nv-fieldtoggle/nv-fieldtoggle.d.ts → nv-toggle/nv-toggle.d.ts} +4 -4
  485. package/dist/types/components/nv-toggle/nv-toggle.docs.d.ts +4 -0
  486. package/dist/types/components.d.ts +519 -98
  487. package/dist/types/index.d.ts +1 -0
  488. package/dist/types/nova-docs.d.ts +19 -0
  489. package/dist/types/utils/constants.d.ts +6 -1
  490. package/dist/types/utils/string.utils.d.ts +9 -0
  491. package/dist/vscode-data.json +230 -34
  492. package/hydrate/index.js +2609 -442
  493. package/hydrate/index.mjs +2609 -442
  494. package/package.json +22 -10
  495. package/dist/cjs/constants-9525a915.js.map +0 -1
  496. package/dist/cjs/grow.animation-46e7ae4b.js.map +0 -1
  497. package/dist/cjs/index-ddc37f87.js.map +0 -1
  498. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +0 -81
  499. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +0 -1
  500. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +0 -151
  501. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +0 -1
  502. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.docs.js.map +0 -1
  503. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +0 -1
  504. package/dist/components/nv-fieldtoggle.js +0 -108
  505. package/dist/components/nv-fieldtoggle.js.map +0 -1
  506. package/dist/components/p-3a65a05e.js.map +0 -1
  507. package/dist/components/p-3b209e94.js.map +0 -1
  508. package/dist/components/p-74407727.js.map +0 -1
  509. package/dist/components/p-78e7c594.js.map +0 -1
  510. package/dist/components/p-afa1c98e.js.map +0 -1
  511. package/dist/esm/constants-7b642e1d.js.map +0 -1
  512. package/dist/esm/grow.animation-88a8ee8f.js.map +0 -1
  513. package/dist/esm/index-cd557d0a.js.map +0 -1
  514. package/dist/esm/nv-fieldtoggle.entry.js +0 -77
  515. package/dist/esm/nv-fieldtoggle.entry.js.map +0 -1
  516. package/dist/esm/nv-iconbutton_2.entry.js +0 -146
  517. package/dist/esm/nv-iconbutton_2.entry.js.map +0 -1
  518. package/dist/native/p-0a9a738c.entry.js +0 -2
  519. package/dist/native/p-0a9a738c.entry.js.map +0 -1
  520. package/dist/native/p-0f9262ed.entry.js +0 -2
  521. package/dist/native/p-18b227b5.entry.js +0 -2
  522. package/dist/native/p-225962f2.entry.js +0 -2
  523. package/dist/native/p-2ac838b8.entry.js +0 -2
  524. package/dist/native/p-38d3eee3.js +0 -2
  525. package/dist/native/p-3adf0c45.entry.js +0 -2
  526. package/dist/native/p-3adf0c45.entry.js.map +0 -1
  527. package/dist/native/p-40f4828a.entry.js +0 -2
  528. package/dist/native/p-44cc8b59.entry.js +0 -2
  529. package/dist/native/p-44cc8b59.entry.js.map +0 -1
  530. package/dist/native/p-4e056cd8.entry.js +0 -2
  531. package/dist/native/p-4e056cd8.entry.js.map +0 -1
  532. package/dist/native/p-4f30312d.entry.js +0 -2
  533. package/dist/native/p-4f30312d.entry.js.map +0 -1
  534. package/dist/native/p-4ffd5c51.entry.js +0 -2
  535. package/dist/native/p-52a7f936.entry.js +0 -2
  536. package/dist/native/p-5d0dc7c8.entry.js +0 -2
  537. package/dist/native/p-5e467b49.entry.js +0 -2
  538. package/dist/native/p-5f160072.entry.js +0 -2
  539. package/dist/native/p-6bb2c88f.entry.js.map +0 -1
  540. package/dist/native/p-6ea62d17.entry.js +0 -2
  541. package/dist/native/p-6ea62d17.entry.js.map +0 -1
  542. package/dist/native/p-74407727.js.map +0 -1
  543. package/dist/native/p-7dfb4a60.entry.js.map +0 -1
  544. package/dist/native/p-826f1d28.entry.js.map +0 -1
  545. package/dist/native/p-87b93cc2.entry.js +0 -2
  546. package/dist/native/p-8ae9aaf1.entry.js +0 -2
  547. package/dist/native/p-8f0984b0.entry.js +0 -2
  548. package/dist/native/p-8f0984b0.entry.js.map +0 -1
  549. package/dist/native/p-9341cf9d.entry.js +0 -2
  550. package/dist/native/p-967f1aee.entry.js +0 -2
  551. package/dist/native/p-967f1aee.entry.js.map +0 -1
  552. package/dist/native/p-9b093b92.js +0 -3
  553. package/dist/native/p-a37c2ac2.js +0 -2
  554. package/dist/native/p-a37c2ac2.js.map +0 -1
  555. package/dist/native/p-e8d181e6.entry.js +0 -2
  556. package/dist/native/p-eade52d4.entry.js +0 -2
  557. package/dist/native/p-eade52d4.entry.js.map +0 -1
  558. package/dist/native/p-ed825c80.entry.js +0 -2
  559. package/dist/native/p-ed825c80.entry.js.map +0 -1
  560. package/dist/native/p-eda8cd9d.entry.js +0 -2
  561. package/dist/native/p-f79752ca.entry.js.map +0 -1
  562. package/dist/native/p-fc8cad13.entry.js +0 -2
  563. package/dist/types/components/nv-fieldtoggle/nv-fieldtoggle.docs.d.ts +0 -4
  564. /package/dist/native/{p-e8d181e6.entry.js.map → p-02bb8184.entry.js.map} +0 -0
  565. /package/dist/native/{p-4ffd5c51.entry.js.map → p-10ba289c.entry.js.map} +0 -0
  566. /package/dist/native/{p-52a7f936.entry.js.map → p-2aebf31b.entry.js.map} +0 -0
  567. /package/dist/native/{p-f7db0785.entry.js.map → p-4d0caf4a.entry.js.map} +0 -0
  568. /package/dist/native/{p-575ea40b.entry.js.map → p-61d2cb2e.entry.js.map} +0 -0
  569. /package/dist/native/{p-cd251f91.entry.js.map → p-6d68f133.entry.js.map} +0 -0
  570. /package/dist/native/{p-e5fbe545.entry.js.map → p-75b1ea9f.entry.js.map} +0 -0
  571. /package/dist/native/{p-fc8cad13.entry.js.map → p-892052c2.entry.js.map} +0 -0
  572. /package/dist/native/{p-788712dd.entry.js.map → p-96902bb3.entry.js.map} +0 -0
  573. /package/dist/native/{p-3283505f.entry.js.map → p-9fb5db20.entry.js.map} +0 -0
  574. /package/dist/native/{p-552e7ea4.entry.js.map → p-a998f8df.entry.js.map} +0 -0
  575. /package/dist/native/{p-5f160072.entry.js.map → p-aa2834e2.entry.js.map} +0 -0
  576. /package/dist/native/{p-225962f2.entry.js.map → p-ab5a8ce5.entry.js.map} +0 -0
  577. /package/dist/native/{p-2ac838b8.entry.js.map → p-beab7cbd.entry.js.map} +0 -0
  578. /package/dist/native/{p-2063c768.entry.js.map → p-d24586ed.entry.js.map} +0 -0
  579. /package/dist/native/{p-1e2bd4e3.entry.js.map → p-d4e56727.entry.js.map} +0 -0
  580. /package/dist/native/{p-5e467b49.entry.js.map → p-dc9dd5a7.entry.js.map} +0 -0
  581. /package/dist/native/{p-0f9262ed.entry.js.map → p-e5a7596b.entry.js.map} +0 -0
  582. /package/dist/native/{p-87b93cc2.entry.js.map → p-e6f45df2.entry.js.map} +0 -0
  583. /package/dist/native/{p-8ae9aaf1.entry.js.map → p-ed47a702.entry.js.map} +0 -0
  584. /package/dist/native/{p-38d3eee3.js.map → p-f3fbdea6.js.map} +0 -0
@@ -143,6 +143,34 @@ const NvFielddropdownDocs = {
143
143
  },
144
144
  template: (h("nv-fielddropdown", { "data-storybook-args": true }, h("ul", { slot: "content" }, h("nv-fielddropdownitem", { label: "Item 1" })))),
145
145
  },
146
+ {
147
+ name: 'Options JSON',
148
+ args: {
149
+ label: 'Dropdown with JSON Options',
150
+ options: JSON.stringify([
151
+ { label: 'Paris', value: 'paris' },
152
+ { label: 'London', value: 'london' },
153
+ { label: 'New York', value: 'ny' },
154
+ { label: 'Tokyo', value: 'tokyo', disabled: true },
155
+ { label: 'Berlin', value: 'berlin' },
156
+ ]),
157
+ },
158
+ template: h("nv-fielddropdown", { "data-storybook-args": true }),
159
+ },
160
+ {
161
+ name: 'Options JSON Preselected',
162
+ args: {
163
+ label: 'Dropdown with Preselected JSON Option',
164
+ options: JSON.stringify([
165
+ { label: 'Paris', value: 'paris' },
166
+ { label: 'London', value: 'london', selected: true },
167
+ { label: 'New York', value: 'ny' },
168
+ { label: 'Tokyo', value: 'tokyo', disabled: true },
169
+ { label: 'Berlin', value: 'berlin' },
170
+ ]),
171
+ },
172
+ template: h("nv-fielddropdown", { "data-storybook-args": true }),
173
+ },
146
174
  ],
147
175
  };
148
176
  export default NvFielddropdownDocs;
@@ -1 +1 @@
1
- {"version":3,"file":"nv-fielddropdown.docs.js","sourceRoot":"","sources":["../../../src/components/nv-fielddropdown/nv-fielddropdown.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 NvFielddropdownDocs: NovaDocs<Components.NvFielddropdown> = {\n component: 'nv-fielddropdown',\n subcomponents: ['nv-fielddropdownitem', 'nv-avatar', 'nv-icon'],\n stories: [\n {\n name: 'Default',\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.filterable),\n args: {\n label: 'Dropdown Label',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.label),\n args: {\n label: 'filterable Dropdown',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.description),\n args: {\n label: 'Dropdown with Description',\n description: 'Description will show here',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.placeholder),\n args: {\n label: 'Dropdown with Placeholder',\n placeholder: 'Select an option...',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.disabled),\n args: {\n label: 'Disabled Dropdown',\n disabled: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.required),\n args: {\n label: 'Required Dropdown',\n required: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'Dividers',\n args: {\n label: 'Dropdown with dividers',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <hr />\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <hr />\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.error),\n args: {\n label: 'Dropdown with Error',\n error: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.errorDescription),\n args: {\n label: 'Dropdown with Error Description',\n description: 'Ensure you select an option.',\n error: true,\n errorDescription: 'This dropdown has an error.',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'PreSelected',\n args: {\n label: 'Dropdown with Pre-selected Value',\n value: 'Item 2',\n },\n template: (\n <nv-fielddropdown data-storybook-args filterable>\n <ul slot=\"content\">\n <nv-fielddropdownitem\n label=\"Item 1\"\n selected\n ></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'DefaultSlot',\n args: {\n label: 'DefaultSlot Dropdown',\n description: 'This is a DefaultSlot dropdown.',\n placeholder: 'Select an option...',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"AB\">\n <nv-avatar initials=\"AB\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"CD\">\n <nv-avatar initials=\"CD\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"EF\">\n <nv-avatar initials=\"EF\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'DefaultSlotFiltereable',\n args: {\n label: 'Default Slot Filtereable Dropdown',\n description: 'This is a Default Slot Filtereable dropdown.',\n placeholder: 'Select an option...',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"AB\">\n <nv-avatar initials=\"AB\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"CD\">\n <nv-avatar initials=\"CD\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"EF\">\n <nv-avatar initials=\"EF\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.open),\n args: {\n label: 'Dropdown Opened',\n open: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.value),\n args: {\n label: 'Dropdown with Pre-selected Value',\n value: 'Item 2',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.readonly),\n args: {\n label: 'Readonly Dropdown',\n readonly: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.emptyresult),\n args: {\n label: 'Dropdown with Empty Result Text',\n filterable: true,\n open: true,\n value: 'search for a inexistent item',\n emptyresult: 'No items found',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n ],\n};\n\nexport default NvFielddropdownDocs;\n"]}
1
+ {"version":3,"file":"nv-fielddropdown.docs.js","sourceRoot":"","sources":["../../../src/components/nv-fielddropdown/nv-fielddropdown.docs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,mBAAmB,GAAyC;IAChE,SAAS,EAAE,kBAAkB;IAC7B,aAAa,EAAE,CAAC,sBAAsB,EAAE,WAAW,EAAE,SAAS,CAAC;IAC/D,OAAO,EAAE;QACP;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BACE,KAAK,EAAC,eAAe,EACrB,QAAQ,SACc,CACrB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3D,IAAI,EAAE;gBACJ,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,IAAI;aACjB;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BACE,KAAK,EAAC,eAAe,EACrB,QAAQ,SACc,CACrB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACtD,IAAI,EAAE;gBACJ,KAAK,EAAE,qBAAqB;aAC7B;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC5D,IAAI,EAAE;gBACJ,KAAK,EAAE,2BAA2B;gBAClC,WAAW,EAAE,4BAA4B;aAC1C;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC5D,IAAI,EAAE;gBACJ,KAAK,EAAE,2BAA2B;gBAClC,WAAW,EAAE,qBAAqB;aACnC;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzD,IAAI,EAAE;gBACJ,KAAK,EAAE,mBAAmB;gBAC1B,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzD,IAAI,EAAE;gBACJ,KAAK,EAAE,mBAAmB;gBAC1B,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACJ,KAAK,EAAE,wBAAwB;gBAC/B,UAAU,EAAE,IAAI;aACjB;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,aAAM;oBACN,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,aAAM;oBACN,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BACE,KAAK,EAAC,eAAe,EACrB,QAAQ,SACc,CACrB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACtD,IAAI,EAAE;gBACJ,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,IAAI;aACZ;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE;gBACJ,KAAK,EAAE,iCAAiC;gBACxC,WAAW,EAAE,8BAA8B;gBAC3C,KAAK,EAAE,IAAI;gBACX,gBAAgB,EAAE,6BAA6B;aAChD;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE;gBACJ,KAAK,EAAE,kCAAkC;gBACzC,KAAK,EAAE,QAAQ;aAChB;YACD,QAAQ,EAAE,CACR,qDAAsC,UAAU;gBAC9C,UAAI,IAAI,EAAC,SAAS;oBAChB,4BACE,KAAK,EAAC,QAAQ,EACd,QAAQ,SACc;oBACxB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BACE,KAAK,EAAC,eAAe,EACrB,QAAQ,SACc,CACrB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE;gBACJ,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,iCAAiC;gBAC9C,WAAW,EAAE,qBAAqB;aACnC;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR;oBACvB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR;oBACvB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR,CACpB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE;gBACJ,KAAK,EAAE,mCAAmC;gBAC1C,WAAW,EAAE,8CAA8C;gBAC3D,WAAW,EAAE,qBAAqB;gBAClC,UAAU,EAAE,IAAI;aACjB;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR;oBACvB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR;oBACvB,4BAAsB,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,IAAI;wBACjD,iBAAW,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAa;wBAC/C,mCAA6B,CACR,CACpB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,IAAI,EAAE;gBACJ,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,IAAI;aACX;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACtD,IAAI,EAAE;gBACJ,KAAK,EAAE,kCAAkC;gBACzC,KAAK,EAAE,QAAQ;aAChB;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BACE,KAAK,EAAC,eAAe,EACrB,QAAQ,SACc,CACrB,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzD,IAAI,EAAE;gBACJ,KAAK,EAAE,mBAAmB;gBAC1B,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB;oBAC5D,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC5D,IAAI,EAAE;gBACJ,KAAK,EAAE,iCAAiC;gBACxC,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,8BAA8B;gBACrC,WAAW,EAAE,gBAAgB;aAC9B;YACD,QAAQ,EAAE,CACR;gBACE,UAAI,IAAI,EAAC,SAAS;oBAChB,4BAAsB,KAAK,EAAC,QAAQ,GAAwB,CACzD,CACY,CACpB;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE;gBACJ,KAAK,EAAE,4BAA4B;gBACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACpC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;oBAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAClD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACrC,CAAC;aACH;YACD,QAAQ,EAAE,sDAAyD;SACpE;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE;gBACJ,KAAK,EAAE,uCAAuC;gBAC9C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACpD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;oBAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAClD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACrC,CAAC;aACH;YACD,QAAQ,EAAE,sDAAyD;SACpE;KACF;CACF,CAAC;AAEF,eAAe,mBAAmB,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 NvFielddropdownDocs: NovaDocs<Components.NvFielddropdown> = {\n component: 'nv-fielddropdown',\n subcomponents: ['nv-fielddropdownitem', 'nv-avatar', 'nv-icon'],\n stories: [\n {\n name: 'Default',\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.filterable),\n args: {\n label: 'Dropdown Label',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.label),\n args: {\n label: 'filterable Dropdown',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.description),\n args: {\n label: 'Dropdown with Description',\n description: 'Description will show here',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.placeholder),\n args: {\n label: 'Dropdown with Placeholder',\n placeholder: 'Select an option...',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.disabled),\n args: {\n label: 'Disabled Dropdown',\n disabled: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.required),\n args: {\n label: 'Required Dropdown',\n required: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'Dividers',\n args: {\n label: 'Dropdown with dividers',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <hr />\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <hr />\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.error),\n args: {\n label: 'Dropdown with Error',\n error: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.errorDescription),\n args: {\n label: 'Dropdown with Error Description',\n description: 'Ensure you select an option.',\n error: true,\n errorDescription: 'This dropdown has an error.',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'PreSelected',\n args: {\n label: 'Dropdown with Pre-selected Value',\n value: 'Item 2',\n },\n template: (\n <nv-fielddropdown data-storybook-args filterable>\n <ul slot=\"content\">\n <nv-fielddropdownitem\n label=\"Item 1\"\n selected\n ></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'DefaultSlot',\n args: {\n label: 'DefaultSlot Dropdown',\n description: 'This is a DefaultSlot dropdown.',\n placeholder: 'Select an option...',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"AB\">\n <nv-avatar initials=\"AB\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"CD\">\n <nv-avatar initials=\"CD\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"EF\">\n <nv-avatar initials=\"EF\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'DefaultSlotFiltereable',\n args: {\n label: 'Default Slot Filtereable Dropdown',\n description: 'This is a Default Slot Filtereable dropdown.',\n placeholder: 'Select an option...',\n filterable: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"AB\">\n <nv-avatar initials=\"AB\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"CD\">\n <nv-avatar initials=\"CD\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n <nv-fielddropdownitem class=\"flex gap-2\" value=\"EF\">\n <nv-avatar initials=\"EF\" size=\"xs\"></nv-avatar>\n <span>Custom Item Text</span>\n </nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.open),\n args: {\n label: 'Dropdown Opened',\n open: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.value),\n args: {\n label: 'Dropdown with Pre-selected Value',\n value: 'Item 2',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n <nv-fielddropdownitem\n label=\"Item disabled\"\n disabled\n ></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.readonly),\n args: {\n label: 'Readonly Dropdown',\n readonly: true,\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 2\"></nv-fielddropdownitem>\n <nv-fielddropdownitem label=\"Item 3\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: nameof<Components.NvFielddropdown>(x => x.emptyresult),\n args: {\n label: 'Dropdown with Empty Result Text',\n filterable: true,\n open: true,\n value: 'search for a inexistent item',\n emptyresult: 'No items found',\n },\n template: (\n <nv-fielddropdown data-storybook-args>\n <ul slot=\"content\">\n <nv-fielddropdownitem label=\"Item 1\"></nv-fielddropdownitem>\n </ul>\n </nv-fielddropdown>\n ),\n },\n {\n name: 'Options JSON',\n args: {\n label: 'Dropdown with JSON Options',\n options: JSON.stringify([\n { label: 'Paris', value: 'paris' },\n { label: 'London', value: 'london' },\n { label: 'New York', value: 'ny' },\n { label: 'Tokyo', value: 'tokyo', disabled: true },\n { label: 'Berlin', value: 'berlin' },\n ]),\n },\n template: <nv-fielddropdown data-storybook-args></nv-fielddropdown>,\n },\n {\n name: 'Options JSON Preselected',\n args: {\n label: 'Dropdown with Preselected JSON Option',\n options: JSON.stringify([\n { label: 'Paris', value: 'paris' },\n { label: 'London', value: 'london', selected: true },\n { label: 'New York', value: 'ny' },\n { label: 'Tokyo', value: 'tokyo', disabled: true },\n { label: 'Berlin', value: 'berlin' },\n ]),\n },\n template: <nv-fielddropdown data-storybook-args></nv-fielddropdown>,\n },\n ],\n};\n\nexport default NvFielddropdownDocs;\n"]}
@@ -26,7 +26,7 @@ export class NVFieldDropDown {
26
26
  this.open = false;
27
27
  /**
28
28
  * The autocomplete prop helps users fill out the input field faster by
29
- * suggesting entries theyve used before, like their email or address.
29
+ * suggesting entries they've used before, like their email or address.
30
30
  * You can turn it on to make forms more convenient or off to ensure users
31
31
  * always type in fresh data.
32
32
  */
@@ -37,20 +37,20 @@ export class NVFieldDropDown {
37
37
  */
38
38
  this.required = false;
39
39
  /**
40
- * Alters the input fields appearance to indicate an error, helping users
40
+ * Alters the input field's appearance to indicate an error, helping users
41
41
  * identify fields that need correction.
42
42
  * @validator error
43
43
  */
44
44
  this.error = false;
45
45
  /**
46
- * Display the input fields content without allowing users to change it.
47
- * Users can still click on it, select, and copy the text, but they wont be
46
+ * Display the input field's content without allowing users to change it.
47
+ * Users can still click on it, select, and copy the text, but they won't be
48
48
  * able to type or delete anything.
49
49
  */
50
50
  this.readonly = false;
51
51
  /**
52
- * The disabled prop lets you turn off the input field so that users cant
53
- * type in it. When disabled, the field is grayed out and wont respond to
52
+ * The disabled prop lets you turn off the input field so that users can't
53
+ * type in it. When disabled, the field is grayed out and won't respond to
54
54
  * clicks or touches.
55
55
  */
56
56
  this.disabled = false;
@@ -68,6 +68,10 @@ export class NVFieldDropDown {
68
68
  this.filterable = false;
69
69
  this.isFilterable = this.filterable;
70
70
  this.selectedValues = new Set();
71
+ /**
72
+ * Options configuration for the dropdown items.
73
+ */
74
+ this.parsedOptions = [];
71
75
  /**
72
76
  * Handle click on the input container.
73
77
  * @param {MouseEvent} event - The click event.
@@ -142,7 +146,7 @@ export class NVFieldDropDown {
142
146
  this.open = !this.open;
143
147
  if (this.open) {
144
148
  this.popoverElement.show();
145
- // Si le dropdown n'est pas filtrable, focus sur le premier élément
149
+ // If the dropdown is not filterable, focus on the first item
146
150
  if (!this.filterable) {
147
151
  this.focusFirstItem();
148
152
  }
@@ -186,10 +190,42 @@ export class NVFieldDropDown {
186
190
  this.updateSelectedItem(newValue);
187
191
  }
188
192
  }
193
+ /**
194
+ * Watch for changes in the options prop
195
+ * @param {string} newValue - The new value of the options prop
196
+ */
197
+ handleOptionsChange(newValue) {
198
+ if (newValue) {
199
+ try {
200
+ const parsedOpts = JSON.parse(newValue);
201
+ this.parsedOptions = [...parsedOpts];
202
+ // Handle pre-selected option
203
+ const selectedOption = this.parsedOptions.find(opt => opt.selected);
204
+ if (selectedOption) {
205
+ this.value = selectedOption.value;
206
+ // Wait for items to be rendered
207
+ requestAnimationFrame(() => {
208
+ this.updateSelectedItem(selectedOption.value);
209
+ });
210
+ }
211
+ }
212
+ catch (error) {
213
+ console.error('Error parsing options:', error);
214
+ this.parsedOptions = [];
215
+ }
216
+ }
217
+ else {
218
+ this.parsedOptions = [];
219
+ }
220
+ }
189
221
  //#endregion EVENTS
190
222
  /****************************************************************************/
191
223
  //#region METHODS
192
224
  componentWillLoad() {
225
+ // Initialize options if provided
226
+ if (this.options) {
227
+ this.handleOptionsChange(this.options);
228
+ }
193
229
  if (this.value) {
194
230
  // If an initial value exists, set it as selected
195
231
  this.updateSelectedItem(this.value);
@@ -322,7 +358,7 @@ export class NVFieldDropDown {
322
358
  this.open = true;
323
359
  this.popoverElement.show();
324
360
  if (!this.filterable) {
325
- // Focus sur le premier élément si ce n'est pas filtrable
361
+ // Focus on the first item if it is not filterable
326
362
  this.focusFirstItem();
327
363
  }
328
364
  event.preventDefault();
@@ -330,13 +366,13 @@ export class NVFieldDropDown {
330
366
  }
331
367
  return;
332
368
  }
333
- // Vérifiez si le popover est défini avant de chercher les items
369
+ // Verify if the popover is defined before looking for items
334
370
  if (!this.popoverElement) {
335
371
  console.warn('Popover element is not defined');
336
372
  return;
337
373
  }
338
374
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'));
339
- // Vérifiez si les items existent
375
+ // Verify if items exist
340
376
  if (items.length === 0) {
341
377
  console.warn('No dropdown items found to navigate');
342
378
  return;
@@ -425,9 +461,9 @@ export class NVFieldDropDown {
425
461
  /****************************************************************************/
426
462
  //#region RENDER
427
463
  render() {
428
- return (h(Host, { key: '2ff0476929b58734a50c303ebb6ad308f0c41602' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '87756cac62747e76d851813426c4aa560b6a5a4e', htmlFor: this.inputId }, h("slot", { key: 'ae2d7374b524274e86777639cd1ad5cbc5c57404', name: "label" }, this.label))), h("nv-popover", { key: 'ed58d72aab9b23f25cd4ec8359ce7148a43fb22e', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: 'ae3e65b9274c56f012e9798f549ee62063879688', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '1fc77f160aebd9e21c8a79406ec1e829bd3c9265', name: "before-input" }), h("div", { key: '7502dc9df91a3b91bf1bb448e9f3cbee9f356f80', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '50acd86050d4357c8e7af3c8464ad34cb73382ad', name: "leading-input" }), this.isFilterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, type: "search", ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleInputFocus, onBlur: this.handleInputBlur, onKeyDown: this.handleKeyDown })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClick, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocus }, h("span", null, this.value || this.placeholder))), h("nv-iconbutton", { key: '2f8c2773754656835583484e2fa7acc0fabcffb6', class: "toggle-dropdown-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopover })), h("slot", { key: '26d4de108aa80b931f03201adc7b2470dc9ed526', name: "after-input" })), h("slot", { key: 'b9a39773f100d2579b2a9e568c19fabbbabbcefe', name: "content" })), (this.description ||
429
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '220b815bc502ff4f18fe40471139efc808f6a31b', class: "description" }, h("slot", { key: '6d0bfc07e3c5c5329d38e447f0c3a1974663e15b', name: "description" }, this.description))), (this.errorDescription ||
430
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '0cc511a914c00de65ee9f0f2033e292b9123620c', hidden: !this.error, class: "error-description" }, h("slot", { key: 'f442db41fdde383abc0873bafbaabba8be1387b3', name: "error-description" }, this.errorDescription)))));
464
+ return (h(Host, { key: '9e43d5dee909615ce58a1b64e571e661ccdb4110' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '29ffcbf274cb1b0fc8c80e43ffe623f26f3096a3', htmlFor: this.inputId }, h("slot", { key: '8e27c4d52d2ce610f8effcae32a9ee6ade400706', name: "label" }, this.label))), h("nv-popover", { key: '5247b86cd12e74382a9301cac81f861370a8ba98', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: '92d59151fc3400a38971a860f73fc43d8f9b92a0', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '9810c88233a55840334a7a57e6626ab17b48a565', name: "before-input" }), h("div", { key: '2670bb58b928b2fcb98f2da6501b852df83c6790', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: 'a66ce39a54b100c2afd9f90daf3777293e59adbb', name: "leading-input" }), this.isFilterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, type: "search", ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleInputFocus, onBlur: this.handleInputBlur, onKeyDown: this.handleKeyDown })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClick, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocus }, h("span", null, this.value || this.placeholder))), h("nv-iconbutton", { key: '41a66e981d964b0b8492a74a17b242766a67a5e1', class: "toggle-dropdown-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopover })), h("slot", { key: '7555c854f681c5fad08f48d77f64483245804280', name: "after-input" })), h("div", { key: 'cf179ec57b0a51e970e1e763ce63d34e23481f40', slot: "content" }, h("ul", { key: '843c7aeccc847171266f36209808d7b3e9b30f08', slot: "content" }, this.parsedOptions.length > 0 ? (this.parsedOptions.map(option => (h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value })))) : (h("slot", { name: "content" }))))), (this.description ||
465
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '04e05d9f19e2a932c10ffd63762aa4c0218efe2f', class: "description" }, h("slot", { key: '19c66921ebb6e041ffd7324a3e31a3ed76750590', name: "description" }, this.description))), (this.errorDescription ||
466
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'e2d3829e8469d0ae5da3bbe1942de809f17b7ee8', hidden: !this.error, class: "error-description" }, h("slot", { key: 'd4b83f3b8345cc941c1f3058ddee103f36625974', name: "error-description" }, this.errorDescription)))));
431
467
  }
432
468
  static get is() { return "nv-fielddropdown"; }
433
469
  static get formAssociated() { return true; }
@@ -475,7 +511,7 @@ export class NVFieldDropDown {
475
511
  "optional": false,
476
512
  "docs": {
477
513
  "tags": [],
478
- "text": "Lets you define the text that explains what users should enter in the text\ninput field. It\u2019s a crucial element for making forms clear and\nuser-friendly."
514
+ "text": "Lets you define the text that explains what users should enter in the text\ninput field. It's a crucial element for making forms clear and\nuser-friendly."
479
515
  },
480
516
  "getter": false,
481
517
  "setter": false,
@@ -513,7 +549,7 @@ export class NVFieldDropDown {
513
549
  "optional": false,
514
550
  "docs": {
515
551
  "tags": [],
516
- "text": "Display temporary text inside the input field to give users a hint about\nwhat to type. It\u2019s a great way to provide examples or suggestions directly\nin the field before they start typing.\nThe placeholder is displayed only when the filterable option is enabled."
552
+ "text": "Display temporary text inside the input field to give users a hint about\nwhat to type. It's a great way to provide examples or suggestions directly\nin the field before they start typing.\nThe placeholder is displayed only when the filterable option is enabled."
517
553
  },
518
554
  "getter": false,
519
555
  "setter": false,
@@ -532,7 +568,7 @@ export class NVFieldDropDown {
532
568
  "optional": false,
533
569
  "docs": {
534
570
  "tags": [],
535
- "text": "Defines the name attribute of the input field, which is crucial for form\nsubmission. This value is used as the key in the key-value pair sent to\nthe server, representing the input\u2019s data in form submissions. It should be\nunique within the form to avoid conflicts."
571
+ "text": "Defines the name attribute of the input field, which is crucial for form\nsubmission. This value is used as the key in the key-value pair sent to\nthe server, representing the input's data in form submissions. It should be\nunique within the form to avoid conflicts."
536
572
  },
537
573
  "getter": false,
538
574
  "setter": false,
@@ -577,7 +613,7 @@ export class NVFieldDropDown {
577
613
  "optional": false,
578
614
  "docs": {
579
615
  "tags": [],
580
- "text": "The autocomplete prop helps users fill out the input field faster by\nsuggesting entries they\u2019ve used before, like their email or address.\nYou can turn it on to make forms more convenient or off to ensure users\nalways type in fresh data."
616
+ "text": "The autocomplete prop helps users fill out the input field faster by\nsuggesting entries they've used before, like their email or address.\nYou can turn it on to make forms more convenient or off to ensure users\nalways type in fresh data."
581
617
  },
582
618
  "getter": false,
583
619
  "setter": false,
@@ -597,7 +633,7 @@ export class NVFieldDropDown {
597
633
  "optional": false,
598
634
  "docs": {
599
635
  "tags": [],
600
- "text": "Specifies the value of the input field, which determines the text displayed\nwithin the field. This prop is typically used in controlled components\nwhere the input\u2019s value is managed by the component\u2019s state."
636
+ "text": "Specifies the value of the input field, which determines the text displayed\nwithin the field. This prop is typically used in controlled components\nwhere the input's value is managed by the component's state."
601
637
  },
602
638
  "getter": false,
603
639
  "setter": false,
@@ -639,7 +675,7 @@ export class NVFieldDropDown {
639
675
  "name": "validator",
640
676
  "text": "error"
641
677
  }],
642
- "text": "Alters the input field\u2019s appearance to indicate an error, helping users\nidentify fields that need correction."
678
+ "text": "Alters the input field's appearance to indicate an error, helping users\nidentify fields that need correction."
643
679
  },
644
680
  "getter": false,
645
681
  "setter": false,
@@ -681,7 +717,7 @@ export class NVFieldDropDown {
681
717
  "optional": false,
682
718
  "docs": {
683
719
  "tags": [],
684
- "text": "Display the input field\u2019s content without allowing users to change it.\nUsers can still click on it, select, and copy the text, but they won\u2019t be\nable to type or delete anything."
720
+ "text": "Display the input field's content without allowing users to change it.\nUsers can still click on it, select, and copy the text, but they won't be\nable to type or delete anything."
685
721
  },
686
722
  "getter": false,
687
723
  "setter": false,
@@ -701,7 +737,7 @@ export class NVFieldDropDown {
701
737
  "optional": false,
702
738
  "docs": {
703
739
  "tags": [],
704
- "text": "The disabled prop lets you turn off the input field so that users can\u2019t\ntype in it. When disabled, the field is grayed out and won\u2019t respond to\nclicks or touches."
740
+ "text": "The disabled prop lets you turn off the input field so that users can't\ntype in it. When disabled, the field is grayed out and won't respond to\nclicks or touches."
705
741
  },
706
742
  "getter": false,
707
743
  "setter": false,
@@ -748,6 +784,31 @@ export class NVFieldDropDown {
748
784
  "attribute": "filterable",
749
785
  "reflect": true,
750
786
  "defaultValue": "false"
787
+ },
788
+ "options": {
789
+ "type": "string",
790
+ "mutable": false,
791
+ "complexType": {
792
+ "original": "string",
793
+ "resolved": "string",
794
+ "references": {}
795
+ },
796
+ "required": false,
797
+ "optional": true,
798
+ "docs": {
799
+ "tags": [{
800
+ "name": "description",
801
+ "text": "The options are passed as a JSON string."
802
+ }, {
803
+ "name": "example",
804
+ "text": "options='[{\"label\": \"Option 1\", \"value\": \"option1\", \"selected\": true}, {\"label\": \"Option 2\", \"value\": \"option2\"}]'"
805
+ }],
806
+ "text": "List of options available in the dropdown."
807
+ },
808
+ "getter": false,
809
+ "setter": false,
810
+ "attribute": "options",
811
+ "reflect": true
751
812
  }
752
813
  };
753
814
  }
@@ -755,7 +816,8 @@ export class NVFieldDropDown {
755
816
  return {
756
817
  "filterText": {},
757
818
  "isFilterable": {},
758
- "selectedValues": {}
819
+ "selectedValues": {},
820
+ "parsedOptions": {}
759
821
  };
760
822
  }
761
823
  static get events() {
@@ -832,6 +894,9 @@ export class NVFieldDropDown {
832
894
  }, {
833
895
  "propName": "value",
834
896
  "methodName": "watchValueHandler"
897
+ }, {
898
+ "propName": "options",
899
+ "methodName": "handleOptionsChange"
835
900
  }];
836
901
  }
837
902
  static get listeners() {
@@ -1 +1 @@
1
- {"version":3,"file":"nv-fielddropdown.js","sourceRoot":"","sources":["../../../src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { TextInputAutocomplete } from '../../utils/constants';\nimport { DropdownItemSelectedEventDetail } from '../nv-fielddropdownitem/DropdownItemSelectedEventDetail';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NVFieldDropDown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It’s a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It’s a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input’s data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they’ve used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input’s value is managed by the component’s state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Alters the input field’s appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field’s content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won’t be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can’t\n * type in it. When disabled, the field is grayed out and won’t respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyresult: string = 'No results found';\n\n /**\n * The text entered by the user for filtering dropdown items.\n */\n @State()\n filterText: string = '';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n @Listen('itemSelected')\n handleItemSelected(event: CustomEvent<DropdownItemSelectedEventDetail>) {\n if (this.disabled || this.readonly) return;\n\n // Retrieve all nv-fielddropdownitem elements present in the dropdown.\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // For each item, remove the 'selected' attribute and the 'selected' class.\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n }\n });\n\n // Update the value and emit the event with the selected item.\n this.value = event.detail.value;\n (event.target as HTMLNvFielddropdownitemElement).setAttribute(\n 'selected',\n 'true',\n );\n (event.target as HTMLElement).classList.add('selected');\n this.dropdownItemSelected.emit(event.detail);\n\n // Close the popover after selecting.\n if (this.popoverElement) {\n this.popoverElement.hide();\n }\n }\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n if (newValue) {\n this.updateSelectedItem(newValue);\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n componentWillLoad() {\n if (this.value) {\n // If an initial value exists, set it as selected\n this.updateSelectedItem(this.value);\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Check again after complete rendering\n if (this.value) {\n this.updateSelectedItem(this.value);\n }\n }\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // First, reset the filter to ensure all elements are visible\n this.resetFilter();\n\n // Then, handle the pre-selection\n this.setInitialSelection();\n\n // Finally, apply the filter if needed\n if (this.filterable && this.filterText) {\n this.filterItems();\n }\n }\n\n /**\n * Set the initial selection based on the current value and update the inputElement value.\n */\n private setInitialSelection() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item =>\n item.getAttribute('label') === this.value ||\n item.getAttribute('value') === this.value ||\n item.textContent?.trim() === this.value,\n );\n\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n this.value =\n selectedItem.getAttribute('label') ||\n selectedItem.getAttribute('value') ||\n selectedItem.textContent?.trim() ||\n '';\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n } else {\n console.warn('No matching item found for value:', this.value);\n }\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Handle click on the input container.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return; // Do nothing if the dropdown is disabled or read-only\n }\n\n const target = event.target as HTMLElement;\n\n // Check if it is the paragraph or another part of the container\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n this.popoverElement.show();\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change.\n * @param {Event} event - The input event.\n */\n private handleInput = (event: Event) => {\n if (!this.filterable) return; // Do not filter if `filterable` is false\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.value = input.value; // Update the value\n this.valueChanged.emit(input.value); // Emit an event if needed\n this.filterItems(); // Update the visibility of items\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyresult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Handle click outside the component.\n * @param {MouseEvent} event - The click event.\n */\n private handleClickOutside(event: MouseEvent) {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n this.popoverElement.hide();\n }\n\n /**\n * Handle input focus.\n */\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n this.open = true; // Force the popover to open\n };\n\n /**\n * Handle input blur.\n */\n private handleInputBlur = () => {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n this.open = false;\n this.popoverElement.hide(); // Close the popover if the focus is outside the component\n }\n }, 150);\n };\n\n /**\n * Toggle the dropdown popover.\n * @returns {void}\n */\n private togglePopover = (): void => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n this.open = !this.open;\n if (this.open) {\n this.popoverElement.show();\n\n // Si le dropdown n'est pas filtrable, focus sur le premier élément\n if (!this.filterable) {\n this.focusFirstItem();\n }\n } else {\n this.popoverElement.hide();\n }\n };\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n this.popoverElement.show();\n\n if (!this.filterable) {\n // Focus sur le premier élément si ce n'est pas filtrable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Vérifiez si le popover est défini avant de chercher les items\n if (!this.popoverElement) {\n console.warn('Popover element is not defined');\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Vérifiez si les items existent\n if (items.length === 0) {\n console.warn('No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n this.popoverElement.hide();\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('No first item found to focus');\n }\n }\n\n private updateSelectedItem(value: string) {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Reset all items\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n // Find the item matching the value\n const matchingItem = items.find(item => {\n const itemLabel = item.getAttribute('label');\n const itemValue = item.getAttribute('value');\n const itemText = item.textContent?.trim();\n\n return itemLabel === value || itemValue === value || itemText === value;\n });\n\n if (matchingItem) {\n // Mark the item as selected\n matchingItem.setAttribute('selected', 'true');\n matchingItem.classList.add('selected');\n\n // Update the input\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n\n // Emit the selection event\n this.dropdownItemSelected.emit({\n value: value,\n label: matchingItem.getAttribute('label') || value,\n selected: true,\n disabled: matchingItem.hasAttribute('disabled'),\n });\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={0} // Ajout du tabindex pour permettre de le focus\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici également\n onFocus={this.handleInputFocus}\n >\n <span>{this.value || this.placeholder}</span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopover}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <slot name=\"content\"></slot>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n //#endregion RENDER\n}\n"]}
1
+ {"version":3,"file":"nv-fielddropdown.js","sourceRoot":"","sources":["../../../src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { TextInputAutocomplete } from '../../utils/constants';\nimport { DropdownItemSelectedEventDetail } from '../nv-fielddropdownitem/DropdownItemSelectedEventDetail';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NVFieldDropDown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It's a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they've used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input's value is managed by the component's state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * type in it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyresult: string = 'No results found';\n\n /**\n * The text entered by the user for filtering dropdown items.\n */\n @State()\n filterText: string = '';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n /**\n * List of options available in the dropdown.\n * @description The options are passed as a JSON string.\n * @example options='[{\"label\": \"Option 1\", \"value\": \"option1\", \"selected\": true}, {\"label\": \"Option 2\", \"value\": \"option2\"}]'\n */\n @Prop({ reflect: true })\n readonly options?: string;\n\n /**\n * Options configuration for the dropdown items.\n */\n @State()\n parsedOptions: Array<{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Whether this option is pre-selected */\n selected?: boolean;\n }> = [];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n @Listen('itemSelected')\n handleItemSelected(event: CustomEvent<DropdownItemSelectedEventDetail>) {\n if (this.disabled || this.readonly) return;\n\n // Retrieve all nv-fielddropdownitem elements present in the dropdown.\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // For each item, remove the 'selected' attribute and the 'selected' class.\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n }\n });\n\n // Update the value and emit the event with the selected item.\n this.value = event.detail.value;\n (event.target as HTMLNvFielddropdownitemElement).setAttribute(\n 'selected',\n 'true',\n );\n (event.target as HTMLElement).classList.add('selected');\n this.dropdownItemSelected.emit(event.detail);\n\n // Close the popover after selecting.\n if (this.popoverElement) {\n this.popoverElement.hide();\n }\n }\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n if (newValue) {\n this.updateSelectedItem(newValue);\n }\n }\n\n /**\n * Watch for changes in the options prop\n * @param {string} newValue - The new value of the options prop\n */\n @Watch('options')\n handleOptionsChange(newValue: string) {\n if (newValue) {\n try {\n const parsedOpts = JSON.parse(newValue);\n this.parsedOptions = [...parsedOpts];\n\n // Handle pre-selected option\n const selectedOption = this.parsedOptions.find(opt => opt.selected);\n if (selectedOption) {\n this.value = selectedOption.value;\n // Wait for items to be rendered\n requestAnimationFrame(() => {\n this.updateSelectedItem(selectedOption.value);\n });\n }\n } catch (error) {\n console.error('Error parsing options:', error);\n this.parsedOptions = [];\n }\n } else {\n this.parsedOptions = [];\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n componentWillLoad() {\n // Initialize options if provided\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n if (this.value) {\n // If an initial value exists, set it as selected\n this.updateSelectedItem(this.value);\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Check again after complete rendering\n if (this.value) {\n this.updateSelectedItem(this.value);\n }\n }\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // First, reset the filter to ensure all elements are visible\n this.resetFilter();\n\n // Then, handle the pre-selection\n this.setInitialSelection();\n\n // Finally, apply the filter if needed\n if (this.filterable && this.filterText) {\n this.filterItems();\n }\n }\n\n /**\n * Set the initial selection based on the current value and update the inputElement value.\n */\n private setInitialSelection() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item =>\n item.getAttribute('label') === this.value ||\n item.getAttribute('value') === this.value ||\n item.textContent?.trim() === this.value,\n );\n\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n this.value =\n selectedItem.getAttribute('label') ||\n selectedItem.getAttribute('value') ||\n selectedItem.textContent?.trim() ||\n '';\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n } else {\n console.warn('No matching item found for value:', this.value);\n }\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Handle click on the input container.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return; // Do nothing if the dropdown is disabled or read-only\n }\n\n const target = event.target as HTMLElement;\n\n // Check if it is the paragraph or another part of the container\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n this.popoverElement.show();\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change.\n * @param {Event} event - The input event.\n */\n private handleInput = (event: Event) => {\n if (!this.filterable) return; // Do not filter if `filterable` is false\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.value = input.value; // Update the value\n this.valueChanged.emit(input.value); // Emit an event if needed\n this.filterItems(); // Update the visibility of items\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyresult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Handle click outside the component.\n * @param {MouseEvent} event - The click event.\n */\n private handleClickOutside(event: MouseEvent) {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n this.popoverElement.hide();\n }\n\n /**\n * Handle input focus.\n */\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n this.open = true; // Force the popover to open\n };\n\n /**\n * Handle input blur.\n */\n private handleInputBlur = () => {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n this.open = false;\n this.popoverElement.hide(); // Close the popover if the focus is outside the component\n }\n }, 150);\n };\n\n /**\n * Toggle the dropdown popover.\n * @returns {void}\n */\n private togglePopover = (): void => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n this.open = !this.open;\n if (this.open) {\n this.popoverElement.show();\n\n // If the dropdown is not filterable, focus on the first item\n if (!this.filterable) {\n this.focusFirstItem();\n }\n } else {\n this.popoverElement.hide();\n }\n };\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n this.popoverElement.show();\n\n if (!this.filterable) {\n // Focus on the first item if it is not filterable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover is defined before looking for items\n if (!this.popoverElement) {\n console.warn('Popover element is not defined');\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Verify if items exist\n if (items.length === 0) {\n console.warn('No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n this.popoverElement.hide();\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('No first item found to focus');\n }\n }\n\n private updateSelectedItem(value: string) {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Reset all items\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n // Find the item matching the value\n const matchingItem = items.find(item => {\n const itemLabel = item.getAttribute('label');\n const itemValue = item.getAttribute('value');\n const itemText = item.textContent?.trim();\n\n return itemLabel === value || itemValue === value || itemText === value;\n });\n\n if (matchingItem) {\n // Mark the item as selected\n matchingItem.setAttribute('selected', 'true');\n matchingItem.classList.add('selected');\n\n // Update the input\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n\n // Emit the selection event\n this.dropdownItemSelected.emit({\n value: value,\n label: matchingItem.getAttribute('label') || value,\n selected: true,\n disabled: matchingItem.hasAttribute('disabled'),\n });\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleKeyDown} // Handle the arrow keys here\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={0} // Add a tabindex to make it focusable\n onKeyDown={this.handleKeyDown} // Handle the arrow keys here\n onFocus={this.handleInputFocus}\n >\n <span>{this.value || this.placeholder}</span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopover}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n {/* The div with slot=\"content\" is the slot for the nv-popover content */}\n <div slot=\"content\">\n {/* The ul with slot=\"content\" is the slot for the nv-fielddropdown content itself */}\n <ul slot=\"content\">\n {this.parsedOptions.length > 0 ? (\n this.parsedOptions.map(option => (\n <nv-fielddropdownitem\n label={option.label}\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.value}\n />\n ))\n ) : (\n <slot name=\"content\"></slot>\n )}\n </ul>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n //#endregion RENDER\n}\n"]}
@@ -50,7 +50,7 @@ export class NvFielddropdownitem {
50
50
  //#region RENDER
51
51
  render() {
52
52
  const showDefaultLayout = this.isNullOrEmptyOrWhitespace(this.label);
53
- return (h(Host, { key: 'e482a762c7b011389f1f1312b14f1686e38528aa', role: "menuitem", tabindex: this.disabled ? '-1' : '0', onClick: this.handleClick, class: { selected: this.selected } }, showDefaultLayout ? (h("slot", null)) : (h("div", { class: "dropdown-item-text-wrapper" }, h("span", { "data-scope": "text" }, this.label), this.selected && (h("nv-icon", { name: "check", "aria-hidden": "true", class: "selection-icon" }))))));
53
+ return (h(Host, { key: '8125c415bf5e94d054c4a6e36a6d4636e54c719f', role: "menuitem", tabindex: this.disabled ? '-1' : '0', onClick: this.handleClick, class: { selected: this.selected } }, showDefaultLayout ? (h("slot", null)) : (h("div", { class: "dropdown-item-text-wrapper" }, h("span", { "data-scope": "text" }, this.label), this.selected && (h("nv-icon", { name: "check", "aria-hidden": "true", class: "selection-icon" }))))));
54
54
  }
55
55
  static get is() { return "nv-fielddropdownitem"; }
56
56
  static get originalStyleUrls() {
@@ -29,7 +29,7 @@ export class NvFielddropdownitemcheck {
29
29
  };
30
30
  }
31
31
  render() {
32
- return (h(Host, { key: '790fd77fd927ace8081971a16d37896b44fe95f5' }, h("div", { key: '8dbd46bbc2cd9bd83a81117bd66f62bdef3ece88' }, h("nv-fieldcheckbox", { key: '1564df63e41efa0dce2f2b47aefc61d7b41bbffc', checked: this.checked, name: this.label || this.value, label: this.label || this.value, "label-placement": "after", description: this.description, disabled: this.disabled, tabindex: "-1", role: "option", onCheckedChanged: this.onFieldcheckboxChanged }))));
32
+ return (h(Host, { key: '13160bb659ba6784bb179cfaab73760086ac4c86' }, h("div", { key: '9b9d4138a1f6423aee8e68d4402024993e340e97' }, h("nv-fieldcheckbox", { key: 'a9721d01e8eddb29e989527d5410f377e69bc771', checked: this.checked, name: this.label || this.value, label: this.label || this.value, "label-placement": "after", description: this.description, disabled: this.disabled, tabindex: "-1", role: "option", onCheckedChanged: this.onFieldcheckboxChanged }))));
33
33
  }
34
34
  static get is() { return "nv-fielddropdownitemcheck"; }
35
35
  static get originalStyleUrls() {