@nova-design-system/nova-webcomponents 3.18.0 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/cjs/index.cjs.js +13 -0
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/native.cjs.js +1 -1
  5. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  6. package/dist/cjs/nv-fielddate.cjs.entry.js +10 -6
  7. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nv-fielddaterange.cjs.entry.js +11 -7
  9. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nv-fielddropdown.cjs.entry.js +193 -209
  11. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +7 -4
  13. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +4 -0
  15. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nv-fieldnumber.cjs.entry.js +24 -7
  17. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  19. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  20. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  21. package/dist/cjs/nv-fieldslider.cjs.entry.js +6 -4
  22. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  24. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  25. package/dist/cjs/nv-fieldtime.cjs.entry.js +4 -3
  26. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-menu.cjs.entry.js +2 -2
  31. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  33. package/dist/cjs/nv-notification.cjs.entry.js +1 -1
  34. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  35. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  36. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  38. package/dist/cjs/nv-split.cjs.entry.js +1 -1
  39. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  40. package/dist/cjs/nv-table.cjs.entry.js +1 -1
  41. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  42. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  43. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +1 -1
  44. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  45. package/dist/collection/components/nv-fielddate/nv-fielddate.js +10 -6
  46. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  47. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +10 -6
  48. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  49. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +2 -0
  50. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +31 -13
  51. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  52. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +310 -245
  53. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  54. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +29 -6
  55. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  56. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  57. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +4 -0
  58. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  59. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +26 -9
  60. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  61. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  62. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  63. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  64. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  65. package/dist/collection/components/nv-fieldslider/partials/field-input.js +3 -1
  66. package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -1
  67. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  68. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  69. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +4 -3
  70. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  71. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  72. package/dist/collection/components/nv-icon/nv-icons.js +13 -0
  73. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  74. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  75. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  76. package/dist/collection/components/nv-menu/nv-menu.js +3 -3
  77. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  78. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  79. package/dist/collection/components/nv-notification/nv-notification.js +1 -1
  80. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
  81. package/dist/collection/components/nv-popover/nv-popover.js +2 -2
  82. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  83. package/dist/collection/components/nv-row/nv-row.js +1 -1
  84. package/dist/collection/components/nv-split/nv-split.js +1 -1
  85. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  86. package/dist/collection/components/nv-table/nv-table.js +1 -1
  87. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  88. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  89. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -1
  90. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  91. package/dist/components/index.js +13 -0
  92. package/dist/components/index.js.map +1 -1
  93. package/dist/components/nv-accordion-item.js +1 -1
  94. package/dist/components/nv-accordion.js +4 -4
  95. package/dist/components/nv-alert.js +1 -1
  96. package/dist/components/nv-avatar.js +1 -1
  97. package/dist/components/nv-badge.js +1 -1
  98. package/dist/components/nv-breadcrumb.js +2 -2
  99. package/dist/components/nv-button.js +1 -1
  100. package/dist/components/nv-datagrid.js +2 -2
  101. package/dist/components/nv-dialog.js +4 -4
  102. package/dist/components/nv-dialogfooter.js +1 -1
  103. package/dist/components/nv-fielddate.js +14 -10
  104. package/dist/components/nv-fielddate.js.map +1 -1
  105. package/dist/components/nv-fielddaterange.js +15 -11
  106. package/dist/components/nv-fielddaterange.js.map +1 -1
  107. package/dist/components/nv-fielddropdown.js +207 -220
  108. package/dist/components/nv-fielddropdown.js.map +1 -1
  109. package/dist/components/nv-fielddropdownitem.js +1 -1
  110. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  111. package/dist/components/nv-fieldmultiselect.js +10 -6
  112. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  113. package/dist/components/nv-fieldnumber.js +1 -1
  114. package/dist/components/nv-fieldpassword.js +6 -6
  115. package/dist/components/nv-fieldradio.js +3 -3
  116. package/dist/components/nv-fieldselect.js +8 -8
  117. package/dist/components/nv-fieldslider.js +10 -8
  118. package/dist/components/nv-fieldslider.js.map +1 -1
  119. package/dist/components/nv-fieldtext.js +1 -1
  120. package/dist/components/nv-fieldtextarea.js +3 -3
  121. package/dist/components/nv-fieldtime.js +8 -7
  122. package/dist/components/nv-fieldtime.js.map +1 -1
  123. package/dist/components/nv-icon.js +1 -1
  124. package/dist/components/nv-iconbutton.js +1 -1
  125. package/dist/components/nv-loader.js +1 -1
  126. package/dist/components/nv-menu.js +5 -5
  127. package/dist/components/nv-menu.js.map +1 -1
  128. package/dist/components/nv-menuitem.js +1 -1
  129. package/dist/components/nv-notification.js +2 -2
  130. package/dist/components/nv-notificationcontainer.js +1 -1
  131. package/dist/components/nv-popover.js +1 -1
  132. package/dist/components/nv-row.js +1 -1
  133. package/dist/components/nv-split.js +1 -1
  134. package/dist/components/nv-stack.js +1 -1
  135. package/dist/components/nv-table.js +1 -1
  136. package/dist/components/nv-toggle.js +2 -2
  137. package/dist/components/nv-togglebutton.js +1 -1
  138. package/dist/components/nv-togglebuttongroup.js +1 -1
  139. package/dist/components/nv-tooltip.js +1 -1
  140. package/dist/components/{p-015330b8.js → p-18f50d91.js} +2 -2
  141. package/dist/components/{p-015330b8.js.map → p-18f50d91.js.map} +1 -1
  142. package/dist/components/{p-c981bb48.js → p-222136c2.js} +2 -2
  143. package/dist/components/{p-c981bb48.js.map → p-222136c2.js.map} +1 -1
  144. package/dist/components/{p-fca4d85b.js → p-2ac6f42d.js} +3 -3
  145. package/dist/components/{p-fca4d85b.js.map → p-2ac6f42d.js.map} +1 -1
  146. package/dist/components/{p-fabbaf47.js → p-334e19d3.js} +4 -4
  147. package/dist/components/{p-fabbaf47.js.map → p-334e19d3.js.map} +1 -1
  148. package/dist/components/{p-5e315239.js → p-45a3cf85.js} +11 -7
  149. package/dist/components/p-45a3cf85.js.map +1 -0
  150. package/dist/components/{p-ebfecbaa.js → p-4799b6c3.js} +3 -3
  151. package/dist/components/p-4799b6c3.js.map +1 -0
  152. package/dist/components/{p-4cd6f629.js → p-49205084.js} +5 -5
  153. package/dist/components/{p-4cd6f629.js.map → p-49205084.js.map} +1 -1
  154. package/dist/components/{p-6ca3d847.js → p-5a5db065.js} +4 -4
  155. package/dist/components/{p-6ca3d847.js.map → p-5a5db065.js.map} +1 -1
  156. package/dist/components/{p-1bd396b1.js → p-60083982.js} +4 -4
  157. package/dist/components/{p-1bd396b1.js.map → p-60083982.js.map} +1 -1
  158. package/dist/components/{p-ea45f1ab.js → p-81d915ef.js} +3 -3
  159. package/dist/components/{p-ea45f1ab.js.map → p-81d915ef.js.map} +1 -1
  160. package/dist/components/p-946a047c.js +88 -0
  161. package/dist/components/p-946a047c.js.map +1 -0
  162. package/dist/components/{p-715e5235.js → p-a6c29711.js} +2 -2
  163. package/dist/components/{p-715e5235.js.map → p-a6c29711.js.map} +1 -1
  164. package/dist/components/{p-d1b02966.js → p-b67f31af.js} +28 -11
  165. package/dist/components/{p-d1b02966.js.map → p-b67f31af.js.map} +1 -1
  166. package/dist/components/{p-2574f8c2.js → p-e1b2eba2.js} +2 -2
  167. package/dist/components/{p-2574f8c2.js.map → p-e1b2eba2.js.map} +1 -1
  168. package/dist/esm/index.js +13 -0
  169. package/dist/esm/index.js.map +1 -1
  170. package/dist/esm/loader.js +1 -1
  171. package/dist/esm/native.js +1 -1
  172. package/dist/esm/nv-badge_2.entry.js +1 -1
  173. package/dist/esm/nv-fielddate.entry.js +10 -6
  174. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  175. package/dist/esm/nv-fielddaterange.entry.js +11 -7
  176. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  177. package/dist/esm/nv-fielddropdown.entry.js +193 -209
  178. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  179. package/dist/esm/nv-fielddropdownitem.entry.js +7 -4
  180. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  181. package/dist/esm/nv-fieldmultiselect.entry.js +4 -0
  182. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  183. package/dist/esm/nv-fieldnumber.entry.js +24 -7
  184. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  185. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  186. package/dist/esm/nv-fieldradio.entry.js +3 -3
  187. package/dist/esm/nv-fieldselect.entry.js +5 -5
  188. package/dist/esm/nv-fieldslider.entry.js +6 -4
  189. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  190. package/dist/esm/nv-fieldtext.entry.js +3 -3
  191. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  192. package/dist/esm/nv-fieldtime.entry.js +4 -3
  193. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  194. package/dist/esm/nv-icon.entry.js +2 -2
  195. package/dist/esm/nv-icon.entry.js.map +1 -1
  196. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  197. package/dist/esm/nv-menu.entry.js +2 -2
  198. package/dist/esm/nv-menu.entry.js.map +1 -1
  199. package/dist/esm/nv-menuitem.entry.js +1 -1
  200. package/dist/esm/nv-notification.entry.js +1 -1
  201. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  202. package/dist/esm/nv-popover.entry.js +2 -2
  203. package/dist/esm/nv-popover.entry.js.map +1 -1
  204. package/dist/esm/nv-row.entry.js +1 -1
  205. package/dist/esm/nv-split.entry.js +1 -1
  206. package/dist/esm/nv-stack.entry.js +1 -1
  207. package/dist/esm/nv-table.entry.js +1 -1
  208. package/dist/esm/nv-toggle.entry.js +2 -2
  209. package/dist/esm/nv-togglebutton.entry.js +1 -1
  210. package/dist/esm/nv-togglebuttongroup.entry.js +1 -1
  211. package/dist/esm/nv-tooltip.entry.js +1 -1
  212. package/dist/native/index.esm.js +1 -1
  213. package/dist/native/index.esm.js.map +1 -1
  214. package/dist/native/native.esm.js +1 -1
  215. package/dist/native/native.esm.js.map +1 -1
  216. package/dist/native/{p-acada158.entry.js → p-0177409b.entry.js} +2 -2
  217. package/dist/native/{p-14d2f70a.entry.js → p-075d231e.entry.js} +2 -2
  218. package/dist/native/{p-d878e90a.entry.js → p-144d0f8a.entry.js} +2 -2
  219. package/dist/native/p-144d0f8a.entry.js.map +1 -0
  220. package/dist/native/{p-b4c15f25.entry.js → p-17666092.entry.js} +2 -2
  221. package/dist/native/{p-107e80c6.entry.js → p-218135b1.entry.js} +2 -2
  222. package/dist/native/p-218135b1.entry.js.map +1 -0
  223. package/dist/native/p-2a7f80f4.entry.js +2 -0
  224. package/dist/native/p-2a7f80f4.entry.js.map +1 -0
  225. package/dist/native/{p-e5b7ce4e.entry.js → p-445221dc.entry.js} +2 -2
  226. package/dist/native/{p-4e6fb719.entry.js → p-44a78545.entry.js} +2 -2
  227. package/dist/native/p-57420a2f.entry.js +2 -0
  228. package/dist/native/{p-5c678bc7.entry.js → p-587d94f3.entry.js} +2 -2
  229. package/dist/native/{p-95184ea2.entry.js → p-6a418ec4.entry.js} +2 -2
  230. package/dist/native/{p-5039ceb8.entry.js → p-859bf9ad.entry.js} +2 -2
  231. package/dist/native/{p-5039ceb8.entry.js.map → p-859bf9ad.entry.js.map} +1 -1
  232. package/dist/native/{p-ae43eee2.entry.js → p-9950e075.entry.js} +2 -2
  233. package/dist/native/{p-ad029453.entry.js → p-9c432751.entry.js} +2 -2
  234. package/dist/native/{p-8c053954.entry.js → p-a026654f.entry.js} +2 -2
  235. package/dist/native/p-a026654f.entry.js.map +1 -0
  236. package/dist/native/{p-417fba7d.entry.js → p-a2f58133.entry.js} +2 -2
  237. package/dist/native/{p-3464b86a.entry.js → p-b02c896a.entry.js} +2 -2
  238. package/dist/native/{p-9613087c.entry.js → p-b4382c94.entry.js} +2 -2
  239. package/dist/native/{p-23ee0384.entry.js → p-bd9bf6a1.entry.js} +2 -2
  240. package/dist/native/p-bd9bf6a1.entry.js.map +1 -0
  241. package/dist/native/p-c901693d.entry.js +2 -0
  242. package/dist/native/p-c901693d.entry.js.map +1 -0
  243. package/dist/native/{p-5f98d4cd.entry.js → p-c9fea0df.entry.js} +2 -2
  244. package/dist/native/{p-5f98d4cd.entry.js.map → p-c9fea0df.entry.js.map} +1 -1
  245. package/dist/native/{p-ca39f78d.entry.js → p-d62869ff.entry.js} +2 -2
  246. package/dist/native/p-d63689da.entry.js +2 -0
  247. package/dist/native/p-d63689da.entry.js.map +1 -0
  248. package/dist/native/p-d8f3cf92.entry.js +2 -0
  249. package/dist/native/p-d8f3cf92.entry.js.map +1 -0
  250. package/dist/native/{p-539666dd.entry.js → p-dfb6b65e.entry.js} +2 -2
  251. package/dist/native/{p-230af58a.entry.js → p-e6f24210.entry.js} +2 -2
  252. package/dist/native/p-e6f24210.entry.js.map +1 -0
  253. package/dist/native/{p-da2060a5.entry.js → p-eb74feb7.entry.js} +2 -2
  254. package/dist/native/{p-6d427897.entry.js → p-fa3e588e.entry.js} +2 -2
  255. package/dist/native/{p-112d096c.entry.js → p-fffbd3c1.entry.js} +2 -2
  256. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +54 -35
  257. package/dist/types/components/nv-fielddropdownitem/nv-fielddropdownitem.d.ts +7 -0
  258. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +7 -3
  259. package/dist/types/components/nv-fieldslider/partials/field-input.d.ts +1 -1
  260. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  261. package/dist/types/components.d.ts +63 -17
  262. package/dist/vscode-data.json +50 -3
  263. package/hydrate/index.js +307 -284
  264. package/hydrate/index.mjs +307 -284
  265. package/package.json +1 -1
  266. package/dist/components/p-5e315239.js.map +0 -1
  267. package/dist/components/p-ebfecbaa.js.map +0 -1
  268. package/dist/components/p-ed43bcec.js +0 -88
  269. package/dist/components/p-ed43bcec.js.map +0 -1
  270. package/dist/native/p-00d1e5e1.entry.js +0 -2
  271. package/dist/native/p-00d1e5e1.entry.js.map +0 -1
  272. package/dist/native/p-107e80c6.entry.js.map +0 -1
  273. package/dist/native/p-230af58a.entry.js.map +0 -1
  274. package/dist/native/p-23ee0384.entry.js.map +0 -1
  275. package/dist/native/p-5e70f9ce.entry.js +0 -2
  276. package/dist/native/p-835abdb9.entry.js +0 -2
  277. package/dist/native/p-835abdb9.entry.js.map +0 -1
  278. package/dist/native/p-8c053954.entry.js.map +0 -1
  279. package/dist/native/p-b72b5e88.entry.js +0 -2
  280. package/dist/native/p-b72b5e88.entry.js.map +0 -1
  281. package/dist/native/p-d7f444fb.entry.js +0 -2
  282. package/dist/native/p-d7f444fb.entry.js.map +0 -1
  283. package/dist/native/p-d878e90a.entry.js.map +0 -1
  284. /package/dist/native/{p-acada158.entry.js.map → p-0177409b.entry.js.map} +0 -0
  285. /package/dist/native/{p-14d2f70a.entry.js.map → p-075d231e.entry.js.map} +0 -0
  286. /package/dist/native/{p-b4c15f25.entry.js.map → p-17666092.entry.js.map} +0 -0
  287. /package/dist/native/{p-e5b7ce4e.entry.js.map → p-445221dc.entry.js.map} +0 -0
  288. /package/dist/native/{p-4e6fb719.entry.js.map → p-44a78545.entry.js.map} +0 -0
  289. /package/dist/native/{p-5e70f9ce.entry.js.map → p-57420a2f.entry.js.map} +0 -0
  290. /package/dist/native/{p-5c678bc7.entry.js.map → p-587d94f3.entry.js.map} +0 -0
  291. /package/dist/native/{p-95184ea2.entry.js.map → p-6a418ec4.entry.js.map} +0 -0
  292. /package/dist/native/{p-ae43eee2.entry.js.map → p-9950e075.entry.js.map} +0 -0
  293. /package/dist/native/{p-ad029453.entry.js.map → p-9c432751.entry.js.map} +0 -0
  294. /package/dist/native/{p-417fba7d.entry.js.map → p-a2f58133.entry.js.map} +0 -0
  295. /package/dist/native/{p-3464b86a.entry.js.map → p-b02c896a.entry.js.map} +0 -0
  296. /package/dist/native/{p-9613087c.entry.js.map → p-b4382c94.entry.js.map} +0 -0
  297. /package/dist/native/{p-ca39f78d.entry.js.map → p-d62869ff.entry.js.map} +0 -0
  298. /package/dist/native/{p-539666dd.entry.js.map → p-dfb6b65e.entry.js.map} +0 -0
  299. /package/dist/native/{p-da2060a5.entry.js.map → p-eb74feb7.entry.js.map} +0 -0
  300. /package/dist/native/{p-6d427897.entry.js.map → p-fa3e588e.entry.js.map} +0 -0
  301. /package/dist/native/{p-112d096c.entry.js.map → p-fffbd3c1.entry.js.map} +0 -0
@@ -12,6 +12,8 @@ const NvFielddropdown = class {
12
12
  constructor(hostRef) {
13
13
  index.registerInstance(this, hostRef);
14
14
  this.valueChanged = index.createEvent(this, "valueChanged", 7);
15
+ this.filterTextChanged = index.createEvent(this, "filterTextChanged", 7);
16
+ this.openChanged = index.createEvent(this, "openChanged", 7);
15
17
  this.dropdownItemSelected = index.createEvent(this, "dropdownItemSelected", 7);
16
18
  /****************************************************************************/
17
19
  //#region PROPERTIES
@@ -56,10 +58,6 @@ const NvFielddropdown = class {
56
58
  * Defines the maximum height of the multiselect list when open.
57
59
  */
58
60
  this.maxHeight = '';
59
- /**
60
- * State of the dropdown popover.
61
- */
62
- this.open = false;
63
61
  /**
64
62
  * The text to display when no items match the filter.
65
63
  */
@@ -69,7 +67,21 @@ const NvFielddropdown = class {
69
67
  */
70
68
  this.filterable = false;
71
69
  /**
72
- * Delay in milliseconds before the search is triggered when typing in the filter input.
70
+ * When an item is selected by the user, the dropdown will continue to stay
71
+ * open.
72
+ */
73
+ this.openOnSelect = false;
74
+ /**
75
+ * Determines if the component’s filtering behavior is managed externally.
76
+ * When set to true and filterable is enabled, the component won’t
77
+ * automatically filter items. Instead, you must implement your own filtering
78
+ * logic (e.g., server-side search or custom matching) using the
79
+ * filterTextChanged event.
80
+ */
81
+ this.controlledFilter = false;
82
+ /**
83
+ * Delay in milliseconds before the search is triggered when typing in the
84
+ * filter input.
73
85
  * @default 300
74
86
  */
75
87
  this.debounceDelay = 300;
@@ -91,132 +103,75 @@ const NvFielddropdown = class {
91
103
  */
92
104
  this.filterText = '';
93
105
  this.selectedValues = new Set();
94
- this.handleInputContainerClick = (event) => {
95
- if (this.disabled || this.readonly) {
106
+ this.open = false;
107
+ /**
108
+ * Closes the popover when a click is detected outside the component.
109
+ * @param {MouseEvent} event - The click event.
110
+ */
111
+ this.handleClickOutside = (event) => {
112
+ var _a;
113
+ if (!(event.target instanceof Node))
96
114
  return;
97
- }
98
- const target = event.target;
99
- if (target.tagName === 'P' || target.tagName === 'SPAN') {
100
- this.open = true;
101
- // Simulate focus to trigger "focus-within" style
102
- const inputContainer = this.el.querySelector('.input-container');
103
- if (inputContainer) {
104
- inputContainer.classList.add('focus-within');
105
- // Remove the "focus-within" class after a delay or when the popover is closed
106
- const removeFocusWithin = () => {
107
- inputContainer.classList.remove('focus-within');
108
- };
109
- // Or remove the class when the popover is closed
110
- this.popoverElement.addEventListener('hide', removeFocusWithin);
111
- }
112
- }
115
+ if (!((_a = this.el) === null || _a === void 0 ? void 0 : _a.contains(event.target)))
116
+ this.open = false;
113
117
  };
114
- this.handleInput = (event) => {
115
- if (!this.filterable)
116
- return;
117
- if (this.disabled || this.readonly) {
118
- return;
119
- }
120
- const input = event.target;
118
+ this.handleFilterInput = () => {
121
119
  this.open = true;
122
- // Clear any existing timer
123
- if (this.debounceTimer) {
124
- window.clearTimeout(this.debounceTimer);
125
- }
126
- // Set a new timer for filtering
120
+ this.filterText = this.inputElement.value;
121
+ this.filterTextChanged.emit(this.inputElement.value);
122
+ clearTimeout(this.debounceTimer);
127
123
  this.debounceTimer = window.setTimeout(() => {
128
- this.filterText = input.value.toLowerCase();
129
124
  this.filterItems();
130
125
  }, this.debounceDelay);
131
126
  };
132
- this.handleInputFocus = () => {
133
- if (this.disabled || this.readonly)
134
- return;
135
- this.open = true;
136
- };
137
- this.togglePopover = () => {
138
- if (this.disabled || this.readonly)
139
- return;
140
- this.open = !this.open;
141
- };
142
127
  this.getSelectedLabel = () => {
143
- var _a, _b, _c, _d, _e, _f;
128
+ var _a, _b, _c, _d, _e, _f, _g;
144
129
  if (!this.value)
145
130
  return '';
146
- if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 1) {
131
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length)
132
+ return this.filterText;
133
+ if (((_b = this.options) === null || _b === void 0 ? void 0 : _b.length) > 1) {
147
134
  const matchingItem = this.options.find(option => option.value === this.value);
148
- return (_c = (_b = matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.label) !== null && _b !== void 0 ? _b : matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.value) !== null && _c !== void 0 ? _c : this.value;
135
+ return (_d = (_c = matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.label) !== null && _c !== void 0 ? _c : matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.value) !== null && _d !== void 0 ? _d : this.value;
149
136
  }
150
137
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
151
138
  const matchingItem = items.find(item => item.value === this.value);
152
139
  const selectedLabel = matchingItem
153
- ? (_f = (_d = matchingItem.label) !== null && _d !== void 0 ? _d : (_e = matchingItem.textContent) === null || _e === void 0 ? void 0 : _e.trim()) !== null && _f !== void 0 ? _f : matchingItem.value
140
+ ? (_g = (_e = matchingItem.label) !== null && _e !== void 0 ? _e : (_f = matchingItem.textContent) === null || _f === void 0 ? void 0 : _f.trim()) !== null && _g !== void 0 ? _g : matchingItem.value
154
141
  : '';
155
142
  return selectedLabel;
156
143
  };
157
- this.clearFilter = () => {
158
- if (!this.filterable)
159
- return;
160
- this.filterText = '';
161
- this.inputElement.value = this.getSelectedLabel();
162
- this.inputElement.focus();
163
- this.filterItems();
164
- };
165
- this.handleBlurInput = (event) => {
166
- var _a;
167
- const relatedTarget = event.relatedTarget;
168
- if (!this.el.contains(relatedTarget) &&
169
- !((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget))) {
170
- this.open = false;
171
- if (this.filterable) {
172
- this.clearFilter(); // Resets input to selected label, clears filterText
173
- }
174
- }
175
- };
176
144
  }
177
145
  //#endregion EVENTS
178
146
  /****************************************************************************/
179
147
  //#region WATCHERS
180
- handleOptionsChange(newValue) {
181
- var _a;
182
- if (!newValue)
183
- return;
184
- if (!this.value) {
185
- const defaultValue = newValue.find(option => option.selected);
186
- this.value = (_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value) !== null && _a !== void 0 ? _a : '';
187
- this.updateSelectedItem(this.value);
148
+ handleOpenChange(newOpen) {
149
+ if (newOpen === false) {
150
+ clearTimeout(this.debounceTimer);
151
+ setTimeout(() => {
152
+ this.clearFilter();
153
+ }, 100);
188
154
  }
189
155
  }
190
- watchValueHandler(newValue) {
191
- this.valueChanged.emit(newValue);
156
+ handleValueChange() {
157
+ this.updateSelectedItem();
158
+ if (!this.open || !this.filterText)
159
+ this.setFilterInputToSelectedValue();
192
160
  }
193
- handleOpenChange(newOpen) {
194
- // React to external changes, e.g., clear filter or refilter on open
195
- if (newOpen && this.filterable) {
196
- this.filterItems(); // Ensure items are filtered if filterText exists
197
- }
198
- else if (!newOpen) {
199
- this.clearFilter(); // Clear on external close
200
- }
161
+ handleOptionsChange() {
162
+ this.updateSelectedItem();
201
163
  }
202
164
  //#endregion WATCHERS
203
165
  /****************************************************************************/
204
166
  //#region LISTENERS
205
- handleOpenChanged(event) {
206
- // Stop propagation to prevent the event from affecting parent components like dialogs
207
- event.stopPropagation();
208
- // Update `open` based on the popover state
209
- if (event.target === this.popoverElement) {
210
- this.open = event.detail;
211
- }
212
- if (!event.detail && this.filterable) {
213
- this.clearFilter();
214
- }
215
- }
216
167
  handleDropdownItemSelected(event) {
217
168
  if (this.disabled || this.readonly)
218
169
  return;
219
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
170
+ if (!this.openOnSelect)
171
+ this.open = false;
172
+ if (event.detail.detached)
173
+ return;
174
+ const items = this.getAllItems();
220
175
  items.forEach(item => {
221
176
  if (item !== event.target) {
222
177
  item.removeAttribute('selected');
@@ -225,102 +180,147 @@ const NvFielddropdown = class {
225
180
  item.setAttribute('selected', 'true');
226
181
  }
227
182
  });
228
- this.clearFilter();
229
183
  this.value = event.detail.value;
230
- this.open = false;
184
+ this.setFilterInputToSelectedValue();
185
+ this.valueChanged.emit(event.detail.value);
231
186
  }
232
- handleBlur(event) {
233
- const target = event.relatedTarget;
234
- if (!(target instanceof Node) || !this.el.contains(target)) {
235
- this.open = false;
236
- if (this.inputElement) {
237
- this.filterText = '';
238
- this.inputElement.value = this.getSelectedLabel();
239
- setTimeout(() => {
240
- this.filterItems();
241
- }, 200);
242
- }
187
+ handleFocus(event) {
188
+ if (event.relatedTarget instanceof HTMLElement &&
189
+ event.relatedTarget.tagName.includes('NV-FIELDDROPDOWNITEM')) {
190
+ return;
243
191
  }
192
+ if (event.target != this.toggleElement)
193
+ this.open = true;
194
+ }
195
+ handleFocusOut(event) {
196
+ if (!(event.relatedTarget instanceof Node))
197
+ return;
198
+ if (this.el.contains(event.relatedTarget))
199
+ return;
200
+ this.open = false;
244
201
  }
245
202
  handleKeyDown(event) {
246
- if (!this.el)
203
+ if (event.key === 'Escape') {
204
+ this.focusField();
205
+ this.open = false;
247
206
  return;
248
- if (!this.open) {
249
- if (event.key === 'ArrowDown') {
207
+ }
208
+ if (event.key === ' ') {
209
+ if (event.target == this.selectElement) {
210
+ event.preventDefault(); // Prevent scrolling down
250
211
  this.open = true;
251
- event.preventDefault();
252
- return;
253
212
  }
254
213
  return;
255
214
  }
256
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
257
- let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
215
+ const items = this.getNavigableItems();
216
+ const highlightedItem = this.getHighlightedItemIndex(items);
258
217
  if (event.key === 'ArrowDown') {
259
- event.preventDefault();
260
- currentIndex = (currentIndex + 1) % items.length;
261
- this.updateHighlightedItem(items, currentIndex);
262
- }
263
- else if (event.key === 'ArrowUp') {
264
- event.preventDefault();
265
- currentIndex = (currentIndex - 1 + items.length) % items.length;
266
- this.updateHighlightedItem(items, currentIndex);
218
+ event.preventDefault(); // Prevent scrolling down
219
+ this.open = true;
220
+ const nextIndex = highlightedItem + 1;
221
+ this.updateHighlightedItem(items, nextIndex >= items.length ? 0 : nextIndex);
267
222
  }
268
- else if (event.key === 'Escape') {
269
- event.preventDefault();
270
- this.open = false;
223
+ if (event.key === 'ArrowUp') {
224
+ event.preventDefault(); // Prevent scrolling up
225
+ this.open = true;
226
+ const nextIndex = highlightedItem - 1;
227
+ this.updateHighlightedItem(items, nextIndex < 0 ? items.length - 1 : nextIndex);
271
228
  }
272
229
  }
230
+ handleDocumentClick(event) {
231
+ this.handleClickOutside(event);
232
+ }
273
233
  //#endregion LISTENERS
274
234
  /****************************************************************************/
275
- //#region LIFECYCLE
276
- componentWillLoad() {
277
- this.resetFilter();
278
- if (this.filterable && this.filterText) {
279
- this.filterItems();
280
- }
281
- if (this.options) {
282
- this.handleOptionsChange(this.options);
235
+ //#region METHODS
236
+ /** Clears the filter text */
237
+ async clearFilter() {
238
+ var _a;
239
+ if (!this.filterable)
240
+ return;
241
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length) {
242
+ this.filterText = '';
243
+ this.filterTextChanged.emit(this.filterText);
283
244
  }
245
+ this.filterItems();
246
+ // Wait for wrapper lifecycle to finish
247
+ setTimeout(() => {
248
+ this.setFilterInputToSelectedValue();
249
+ }, 0);
284
250
  }
285
- componentDidLoad() {
286
- if (this.value) {
287
- this.updateSelectedItem(this.value);
251
+ /**
252
+ * Toggles the dropdown popover open state
253
+ * @param {boolean} open - The open state to set, if null, toggles the state
254
+ */
255
+ async toggleDropdown(open) {
256
+ if (open !== undefined) {
257
+ setTimeout(() => {
258
+ this.open = open;
259
+ }, 0);
288
260
  }
289
- if (this.inputElement) {
290
- this.inputElement.value = this.getSelectedLabel();
261
+ else {
262
+ setTimeout(() => {
263
+ this.open = !this.open;
264
+ }, 0);
291
265
  }
292
266
  }
293
- //#endregion LIFECYCLE
294
- /****************************************************************************/
295
- //#region METHODS
296
- /**
297
- * Retrieves the current filter text entered by the user.
298
- * @returns {string} The filter text.
299
- */
300
- async getFilterText() {
301
- return this.filterText;
267
+ syncToggleDropdown() {
268
+ this.open = !this.open;
269
+ }
270
+ setFilterInputToSelectedValue() {
271
+ if (!this.filterable)
272
+ return;
273
+ if (!this.value)
274
+ return (this.inputElement.value = '');
275
+ this.inputElement.value = this.getSelectedLabel();
276
+ }
277
+ // Will exclude detached items and data-empty
278
+ getFilterableItems() {
279
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty]):not([detached])'));
280
+ }
281
+ getNavigableItems() {
282
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
283
+ }
284
+ getAllItems() {
285
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
286
+ }
287
+ getHighlightedItemIndex(items) {
288
+ return items.findIndex(item => item.classList.contains('highlighted'));
289
+ }
290
+ updateHighlightedItem(items, index) {
291
+ items.forEach((item, i) => {
292
+ item.classList.remove('highlighted');
293
+ if (i === index) {
294
+ item.classList.add('highlighted');
295
+ item.focus();
296
+ item.scrollIntoView({ block: 'nearest' });
297
+ }
298
+ });
299
+ }
300
+ focusField() {
301
+ const focusableItem = this.el.querySelector('[data-scope="focusable"]');
302
+ focusableItem === null || focusableItem === void 0 ? void 0 : focusableItem.focus();
302
303
  }
303
304
  /**
304
305
  * Filter dropdown items based on the text entered by the user.
305
306
  * If no items are found, display a message indicating no results.
306
307
  */
307
308
  filterItems() {
308
- var _a;
309
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
310
- // Remove the "no results found" item if it exists
311
- const existingEmptyItem = this.el.querySelector('nv-fielddropdownitem[data-empty]');
312
- if (existingEmptyItem) {
313
- existingEmptyItem.remove();
314
- }
309
+ var _a, _b;
310
+ if (this.controlledFilter)
311
+ return;
315
312
  let hasVisibleItems = false;
316
- // Iterate over all items and adjust their visibility
313
+ const items = this.getFilterableItems();
314
+ // Remove the "no results found" item if it exists
315
+ (_a = this.el
316
+ .querySelector('nv-fielddropdownitem[data-empty]')) === null || _a === void 0 ? void 0 : _a.remove();
317
317
  items.forEach(item => {
318
318
  var _a, _b;
319
- const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || ''; // Get the textual content of the slot
320
- const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || ''; // Get the value of the `value` attribute
321
- // Check if the filtered text is present either in the value or in the textual content
322
- const shouldShow = value.includes(this.filterText) ||
323
- textContent.includes(this.filterText);
319
+ const filterText = this.filterText.toLowerCase();
320
+ const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
321
+ const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
322
+ // Either in the value or in the textual content
323
+ const shouldShow = value.includes(filterText) || textContent.includes(filterText);
324
324
  if (shouldShow)
325
325
  item.removeAttribute('hidden');
326
326
  else
@@ -335,63 +335,47 @@ const NvFielddropdown = class {
335
335
  emptyItem.setAttribute('data-empty', 'true');
336
336
  emptyItem.setAttribute('disabled', 'true');
337
337
  emptyItem.textContent = this.emptyResult;
338
- (_a = this.el.querySelector('ul[slot="content"]')) === null || _a === void 0 ? void 0 : _a.appendChild(emptyItem);
338
+ (_b = this.el.querySelector('div[slot="content"] ul')) === null || _b === void 0 ? void 0 : _b.prepend(emptyItem);
339
339
  }
340
340
  }
341
- /** Reset the filter and make all items visible. */
342
- resetFilter() {
343
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
344
- items.forEach(item => {
345
- item.style.display = '';
346
- });
341
+ async updateSelectedItem() {
342
+ const items = this.getAllItems();
343
+ if (this.value) {
344
+ items.forEach(item => {
345
+ if (item.value === this.value) {
346
+ item.selected = true;
347
+ }
348
+ else {
349
+ item.selected = false;
350
+ }
351
+ });
352
+ }
347
353
  }
348
- updateHighlightedItem(items, index) {
349
- items.forEach((item, i) => {
350
- if (i === index) {
351
- item.classList.add('highlighted');
352
- item.focus();
353
- item.scrollIntoView({ block: 'nearest' });
354
- }
355
- else {
356
- item.classList.remove('highlighted');
357
- }
358
- });
354
+ //#endregion METHODS
355
+ /****************************************************************************/
356
+ //#region LIFECYCLE
357
+ componentDidLoad() {
358
+ this.updateSelectedItem();
359
+ this.setFilterInputToSelectedValue();
359
360
  }
360
- updateSelectedItem(value) {
361
- if (!value)
362
- return;
363
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
364
- const matchingItem = items.find(item => {
365
- var _a;
366
- const itemLabel = item.getAttribute('label');
367
- const itemValue = item.getAttribute('value');
368
- const itemText = (_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim();
369
- return itemLabel === value || itemValue === value || itemText === value;
370
- });
371
- items.forEach(item => {
372
- if (item === matchingItem) {
373
- item.setAttribute('selected', '');
374
- }
375
- else {
376
- item.removeAttribute('selected');
377
- }
378
- });
361
+ disconnectedCallback() {
362
+ clearTimeout(this.debounceTimer);
379
363
  }
380
- //#endregion METHODS
364
+ //#endregion LIFECYCLE
381
365
  /****************************************************************************/
382
366
  //#region RENDER
383
367
  render() {
384
368
  var _a;
385
- return (index.h(index.Host, { key: '1d5a87b2a5e9d9ca0be659ba5706b1db068d1d2d', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'b07ca241c89f45292e479de79de618c6444a9c42', htmlFor: this.inputId }, index.h("slot", { key: '0dd6ac2799e187e7233a5a5651ef18d59e4507e8', name: "label" }, this.label))), index.h("nv-popover", { key: 'b06d107776724937816dc4b98a035b282ed6c1f3', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { key: 'ab755801a0f2a732ea895e04d6c3a85261422f17', class: "input-wrapper", slot: "trigger" }, index.h("slot", { key: 'b78c41d4064cf067d69fa20ae583c1be29d1f620', name: "before-input" }), index.h("div", { key: 'b46f6440660056ff71b9debf503f15ca7046ca02', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: '36069ce529fba771c9339a3cb6c9c5c838f441c4', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (index.h("input", { "data-scope": "focusable", id: this.inputId, type: "search", ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.getSelectedLabel(), required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleInputFocus, onClick: this.handleInputFocus, onKeyDown: this.handleKeyDown, onBlur: this.handleBlurInput })) : (index.h("p", { "data-scope": "focusable", id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClick, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocus, onBlur: this.handleBlurInput }, this.getSelectedLabel() || this.value || this.placeholder)), this.filterable && this.filterText && this.open && (index.h("nv-iconbutton", { key: '36f76135c0e3e1e6750c95116aae6ddd397eec1f', name: "x", size: "md", emphasis: "lower", class: "clear-button", onClick: this.clearFilter, "aria-label": "Clear input" })), this.error && (index.h("nv-icon", { key: 'bd73c43ffae11897359adfae69572ee490f0f5c2', name: "alert-circle", class: "validation", size: "md" })), index.h("nv-iconbutton", { key: 'a0f237814e9f58aa9e4d72e73a1747248911ade8', "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', onClick: this.togglePopover, tabIndex: this.disabled ? -1 : 0 })), index.h("slot", { key: '66d2b27cfcf7ef97df493accaa333e0694234344', name: "after-input" })), index.h("div", { key: 'de6d7e18d676788cf0c7bfebd25f22b5cd2067ce', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0 ? (index.h("ul", null, this.options.map(option => (index.h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value }))))) : (index.h("slot", { name: "content" })))), (this.description ||
386
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'ea889c8ecdcfad160010374541b73f548322a0ad', class: "description" }, index.h("slot", { key: 'b69f67d3a03bf1839edd912ea369cfd87395ae51', name: "description" }, this.description))), (this.errorDescription ||
387
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '6ecd397cb41aab81173992c90e42f593f1227730', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '3dff83b119d3cbbf2d00bc8641882326d08f939d', name: "error-description" }, this.errorDescription)))));
369
+ return (index.h(index.Host, { key: '428dd85337710d430ac04cf8cbc9021a93307bfe', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'a527c33d31152a90f8641e27fbaf91cf73eb06b6', htmlFor: this.inputId, onClick: this.syncToggleDropdown.bind(this) }, index.h("slot", { key: 'e4cf96c38db69080228666e4b924367a0c3a9d72', name: "label" }, this.label))), index.h("nv-popover", { key: '41723f7ec67e4e5680381e217eba45a1d73b47fc', triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { key: 'd4af00d5171b09923c36df9fd44853e1399e584f', class: "input-wrapper", slot: "trigger" }, index.h("slot", { key: 'bb6e53746c70fcc8172acd9a7ef8cbf72ae70698', name: "before-input" }), index.h("div", { key: 'ef3dc9ac5d0d895384653a17f8e61f616a7cbba9', class: "input-container" }, index.h("slot", { key: '7621b8cb7222330e73a426282877df2e0040714c', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (index.h("input", { "data-scope": "focusable", id: this.inputId, type: "search", ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleFilterInput })) : (index.h("p", { "data-scope": "focusable", id: this.inputId, ref: el => (this.selectElement = el), class: "non-filterable-text", tabIndex: this.disabled ? -1 : 0 }, this.getSelectedLabel() || this.value || this.placeholder)), this.filterable && this.filterText && (index.h("nv-iconbutton", { key: '3de283e59d0c7811b39e30d98fdd7e400a1b3d49', name: "x", size: "md", emphasis: "lower", class: "clear-button", onClick: this.clearFilter.bind(this), "aria-label": "Clear input" })), this.error && (index.h("nv-icon", { key: '6f826edb19430ce535dc8742dfbd77b05d673f4d', name: "alert-circle", class: "validation", size: "md" })), index.h("nv-iconbutton", { key: '611f8df410c38faeb9fec9a43ac1f7013ce9b32b', "data-scope": "toggle-dropdown", ref: el => (this.toggleElement = el), name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', onClick: this.syncToggleDropdown.bind(this), tabIndex: this.disabled ? -1 : 0 })), index.h("slot", { key: '18d16b6c1d3c1ab910f8a45a339ae750e2277542', name: "after-input" })), index.h("div", { key: '53624675adac2c6c9345b64e634cbbad4f009a82', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0 && (index.h("ul", { key: '3dfd5e914176bab898fd7872eb4ea0206d12b80a' }, this.options.map(option => (index.h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value }))))), index.h("slot", { key: 'e1c9151e125d0fe6f129b879b0adf1ae91b94bc4', name: "content" }))), (this.description ||
370
+ this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '13247930760480ec767ce75c61385036126cd2f3', class: "description" }, index.h("slot", { key: '09c3f2fa0a1be5bcbe69b757a68a8327fef29ec1', name: "description" }, this.description))), (this.errorDescription ||
371
+ this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '9b43e41b6b38242b21c750d2d442c78e0930b9bc', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '44f7756522adbc54b8d85a211dace24a37073fc6', name: "error-description" }, this.errorDescription)))));
388
372
  }
389
373
  static get formAssociated() { return true; }
390
374
  get el() { return index.getElement(this); }
391
375
  static get watchers() { return {
392
- "options": ["handleOptionsChange"],
393
- "value": ["watchValueHandler"],
394
- "open": ["handleOpenChange"]
376
+ "open": ["handleOpenChange"],
377
+ "value": ["handleValueChange"],
378
+ "options": ["handleOptionsChange"]
395
379
  }; }
396
380
  };
397
381
  NvFielddropdown.style = NvFielddropdownStyle0;