@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
@@ -8,6 +8,8 @@ const NvFielddropdown = class {
8
8
  constructor(hostRef) {
9
9
  registerInstance(this, hostRef);
10
10
  this.valueChanged = createEvent(this, "valueChanged", 7);
11
+ this.filterTextChanged = createEvent(this, "filterTextChanged", 7);
12
+ this.openChanged = createEvent(this, "openChanged", 7);
11
13
  this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
12
14
  /****************************************************************************/
13
15
  //#region PROPERTIES
@@ -52,10 +54,6 @@ const NvFielddropdown = class {
52
54
  * Defines the maximum height of the multiselect list when open.
53
55
  */
54
56
  this.maxHeight = '';
55
- /**
56
- * State of the dropdown popover.
57
- */
58
- this.open = false;
59
57
  /**
60
58
  * The text to display when no items match the filter.
61
59
  */
@@ -65,7 +63,21 @@ const NvFielddropdown = class {
65
63
  */
66
64
  this.filterable = false;
67
65
  /**
68
- * Delay in milliseconds before the search is triggered when typing in the filter input.
66
+ * When an item is selected by the user, the dropdown will continue to stay
67
+ * open.
68
+ */
69
+ this.openOnSelect = false;
70
+ /**
71
+ * Determines if the component’s filtering behavior is managed externally.
72
+ * When set to true and filterable is enabled, the component won’t
73
+ * automatically filter items. Instead, you must implement your own filtering
74
+ * logic (e.g., server-side search or custom matching) using the
75
+ * filterTextChanged event.
76
+ */
77
+ this.controlledFilter = false;
78
+ /**
79
+ * Delay in milliseconds before the search is triggered when typing in the
80
+ * filter input.
69
81
  * @default 300
70
82
  */
71
83
  this.debounceDelay = 300;
@@ -87,132 +99,75 @@ const NvFielddropdown = class {
87
99
  */
88
100
  this.filterText = '';
89
101
  this.selectedValues = new Set();
90
- this.handleInputContainerClick = (event) => {
91
- if (this.disabled || this.readonly) {
102
+ this.open = false;
103
+ /**
104
+ * Closes the popover when a click is detected outside the component.
105
+ * @param {MouseEvent} event - The click event.
106
+ */
107
+ this.handleClickOutside = (event) => {
108
+ var _a;
109
+ if (!(event.target instanceof Node))
92
110
  return;
93
- }
94
- const target = event.target;
95
- if (target.tagName === 'P' || target.tagName === 'SPAN') {
96
- this.open = true;
97
- // Simulate focus to trigger "focus-within" style
98
- const inputContainer = this.el.querySelector('.input-container');
99
- if (inputContainer) {
100
- inputContainer.classList.add('focus-within');
101
- // Remove the "focus-within" class after a delay or when the popover is closed
102
- const removeFocusWithin = () => {
103
- inputContainer.classList.remove('focus-within');
104
- };
105
- // Or remove the class when the popover is closed
106
- this.popoverElement.addEventListener('hide', removeFocusWithin);
107
- }
108
- }
111
+ if (!((_a = this.el) === null || _a === void 0 ? void 0 : _a.contains(event.target)))
112
+ this.open = false;
109
113
  };
110
- this.handleInput = (event) => {
111
- if (!this.filterable)
112
- return;
113
- if (this.disabled || this.readonly) {
114
- return;
115
- }
116
- const input = event.target;
114
+ this.handleFilterInput = () => {
117
115
  this.open = true;
118
- // Clear any existing timer
119
- if (this.debounceTimer) {
120
- window.clearTimeout(this.debounceTimer);
121
- }
122
- // Set a new timer for filtering
116
+ this.filterText = this.inputElement.value;
117
+ this.filterTextChanged.emit(this.inputElement.value);
118
+ clearTimeout(this.debounceTimer);
123
119
  this.debounceTimer = window.setTimeout(() => {
124
- this.filterText = input.value.toLowerCase();
125
120
  this.filterItems();
126
121
  }, this.debounceDelay);
127
122
  };
128
- this.handleInputFocus = () => {
129
- if (this.disabled || this.readonly)
130
- return;
131
- this.open = true;
132
- };
133
- this.togglePopover = () => {
134
- if (this.disabled || this.readonly)
135
- return;
136
- this.open = !this.open;
137
- };
138
123
  this.getSelectedLabel = () => {
139
- var _a, _b, _c, _d, _e, _f;
124
+ var _a, _b, _c, _d, _e, _f, _g;
140
125
  if (!this.value)
141
126
  return '';
142
- if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 1) {
127
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length)
128
+ return this.filterText;
129
+ if (((_b = this.options) === null || _b === void 0 ? void 0 : _b.length) > 1) {
143
130
  const matchingItem = this.options.find(option => option.value === this.value);
144
- 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;
131
+ 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;
145
132
  }
146
133
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
147
134
  const matchingItem = items.find(item => item.value === this.value);
148
135
  const selectedLabel = matchingItem
149
- ? (_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
136
+ ? (_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
150
137
  : '';
151
138
  return selectedLabel;
152
139
  };
153
- this.clearFilter = () => {
154
- if (!this.filterable)
155
- return;
156
- this.filterText = '';
157
- this.inputElement.value = this.getSelectedLabel();
158
- this.inputElement.focus();
159
- this.filterItems();
160
- };
161
- this.handleBlurInput = (event) => {
162
- var _a;
163
- const relatedTarget = event.relatedTarget;
164
- if (!this.el.contains(relatedTarget) &&
165
- !((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget))) {
166
- this.open = false;
167
- if (this.filterable) {
168
- this.clearFilter(); // Resets input to selected label, clears filterText
169
- }
170
- }
171
- };
172
140
  }
173
141
  //#endregion EVENTS
174
142
  /****************************************************************************/
175
143
  //#region WATCHERS
176
- handleOptionsChange(newValue) {
177
- var _a;
178
- if (!newValue)
179
- return;
180
- if (!this.value) {
181
- const defaultValue = newValue.find(option => option.selected);
182
- this.value = (_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value) !== null && _a !== void 0 ? _a : '';
183
- this.updateSelectedItem(this.value);
144
+ handleOpenChange(newOpen) {
145
+ if (newOpen === false) {
146
+ clearTimeout(this.debounceTimer);
147
+ setTimeout(() => {
148
+ this.clearFilter();
149
+ }, 100);
184
150
  }
185
151
  }
186
- watchValueHandler(newValue) {
187
- this.valueChanged.emit(newValue);
152
+ handleValueChange() {
153
+ this.updateSelectedItem();
154
+ if (!this.open || !this.filterText)
155
+ this.setFilterInputToSelectedValue();
188
156
  }
189
- handleOpenChange(newOpen) {
190
- // React to external changes, e.g., clear filter or refilter on open
191
- if (newOpen && this.filterable) {
192
- this.filterItems(); // Ensure items are filtered if filterText exists
193
- }
194
- else if (!newOpen) {
195
- this.clearFilter(); // Clear on external close
196
- }
157
+ handleOptionsChange() {
158
+ this.updateSelectedItem();
197
159
  }
198
160
  //#endregion WATCHERS
199
161
  /****************************************************************************/
200
162
  //#region LISTENERS
201
- handleOpenChanged(event) {
202
- // Stop propagation to prevent the event from affecting parent components like dialogs
203
- event.stopPropagation();
204
- // Update `open` based on the popover state
205
- if (event.target === this.popoverElement) {
206
- this.open = event.detail;
207
- }
208
- if (!event.detail && this.filterable) {
209
- this.clearFilter();
210
- }
211
- }
212
163
  handleDropdownItemSelected(event) {
213
164
  if (this.disabled || this.readonly)
214
165
  return;
215
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
166
+ if (!this.openOnSelect)
167
+ this.open = false;
168
+ if (event.detail.detached)
169
+ return;
170
+ const items = this.getAllItems();
216
171
  items.forEach(item => {
217
172
  if (item !== event.target) {
218
173
  item.removeAttribute('selected');
@@ -221,102 +176,147 @@ const NvFielddropdown = class {
221
176
  item.setAttribute('selected', 'true');
222
177
  }
223
178
  });
224
- this.clearFilter();
225
179
  this.value = event.detail.value;
226
- this.open = false;
180
+ this.setFilterInputToSelectedValue();
181
+ this.valueChanged.emit(event.detail.value);
227
182
  }
228
- handleBlur(event) {
229
- const target = event.relatedTarget;
230
- if (!(target instanceof Node) || !this.el.contains(target)) {
231
- this.open = false;
232
- if (this.inputElement) {
233
- this.filterText = '';
234
- this.inputElement.value = this.getSelectedLabel();
235
- setTimeout(() => {
236
- this.filterItems();
237
- }, 200);
238
- }
183
+ handleFocus(event) {
184
+ if (event.relatedTarget instanceof HTMLElement &&
185
+ event.relatedTarget.tagName.includes('NV-FIELDDROPDOWNITEM')) {
186
+ return;
239
187
  }
188
+ if (event.target != this.toggleElement)
189
+ this.open = true;
190
+ }
191
+ handleFocusOut(event) {
192
+ if (!(event.relatedTarget instanceof Node))
193
+ return;
194
+ if (this.el.contains(event.relatedTarget))
195
+ return;
196
+ this.open = false;
240
197
  }
241
198
  handleKeyDown(event) {
242
- if (!this.el)
199
+ if (event.key === 'Escape') {
200
+ this.focusField();
201
+ this.open = false;
243
202
  return;
244
- if (!this.open) {
245
- if (event.key === 'ArrowDown') {
203
+ }
204
+ if (event.key === ' ') {
205
+ if (event.target == this.selectElement) {
206
+ event.preventDefault(); // Prevent scrolling down
246
207
  this.open = true;
247
- event.preventDefault();
248
- return;
249
208
  }
250
209
  return;
251
210
  }
252
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
253
- let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
211
+ const items = this.getNavigableItems();
212
+ const highlightedItem = this.getHighlightedItemIndex(items);
254
213
  if (event.key === 'ArrowDown') {
255
- event.preventDefault();
256
- currentIndex = (currentIndex + 1) % items.length;
257
- this.updateHighlightedItem(items, currentIndex);
258
- }
259
- else if (event.key === 'ArrowUp') {
260
- event.preventDefault();
261
- currentIndex = (currentIndex - 1 + items.length) % items.length;
262
- this.updateHighlightedItem(items, currentIndex);
214
+ event.preventDefault(); // Prevent scrolling down
215
+ this.open = true;
216
+ const nextIndex = highlightedItem + 1;
217
+ this.updateHighlightedItem(items, nextIndex >= items.length ? 0 : nextIndex);
263
218
  }
264
- else if (event.key === 'Escape') {
265
- event.preventDefault();
266
- this.open = false;
219
+ if (event.key === 'ArrowUp') {
220
+ event.preventDefault(); // Prevent scrolling up
221
+ this.open = true;
222
+ const nextIndex = highlightedItem - 1;
223
+ this.updateHighlightedItem(items, nextIndex < 0 ? items.length - 1 : nextIndex);
267
224
  }
268
225
  }
226
+ handleDocumentClick(event) {
227
+ this.handleClickOutside(event);
228
+ }
269
229
  //#endregion LISTENERS
270
230
  /****************************************************************************/
271
- //#region LIFECYCLE
272
- componentWillLoad() {
273
- this.resetFilter();
274
- if (this.filterable && this.filterText) {
275
- this.filterItems();
276
- }
277
- if (this.options) {
278
- this.handleOptionsChange(this.options);
231
+ //#region METHODS
232
+ /** Clears the filter text */
233
+ async clearFilter() {
234
+ var _a;
235
+ if (!this.filterable)
236
+ return;
237
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length) {
238
+ this.filterText = '';
239
+ this.filterTextChanged.emit(this.filterText);
279
240
  }
241
+ this.filterItems();
242
+ // Wait for wrapper lifecycle to finish
243
+ setTimeout(() => {
244
+ this.setFilterInputToSelectedValue();
245
+ }, 0);
280
246
  }
281
- componentDidLoad() {
282
- if (this.value) {
283
- this.updateSelectedItem(this.value);
247
+ /**
248
+ * Toggles the dropdown popover open state
249
+ * @param {boolean} open - The open state to set, if null, toggles the state
250
+ */
251
+ async toggleDropdown(open) {
252
+ if (open !== undefined) {
253
+ setTimeout(() => {
254
+ this.open = open;
255
+ }, 0);
284
256
  }
285
- if (this.inputElement) {
286
- this.inputElement.value = this.getSelectedLabel();
257
+ else {
258
+ setTimeout(() => {
259
+ this.open = !this.open;
260
+ }, 0);
287
261
  }
288
262
  }
289
- //#endregion LIFECYCLE
290
- /****************************************************************************/
291
- //#region METHODS
292
- /**
293
- * Retrieves the current filter text entered by the user.
294
- * @returns {string} The filter text.
295
- */
296
- async getFilterText() {
297
- return this.filterText;
263
+ syncToggleDropdown() {
264
+ this.open = !this.open;
265
+ }
266
+ setFilterInputToSelectedValue() {
267
+ if (!this.filterable)
268
+ return;
269
+ if (!this.value)
270
+ return (this.inputElement.value = '');
271
+ this.inputElement.value = this.getSelectedLabel();
272
+ }
273
+ // Will exclude detached items and data-empty
274
+ getFilterableItems() {
275
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty]):not([detached])'));
276
+ }
277
+ getNavigableItems() {
278
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
279
+ }
280
+ getAllItems() {
281
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
282
+ }
283
+ getHighlightedItemIndex(items) {
284
+ return items.findIndex(item => item.classList.contains('highlighted'));
285
+ }
286
+ updateHighlightedItem(items, index) {
287
+ items.forEach((item, i) => {
288
+ item.classList.remove('highlighted');
289
+ if (i === index) {
290
+ item.classList.add('highlighted');
291
+ item.focus();
292
+ item.scrollIntoView({ block: 'nearest' });
293
+ }
294
+ });
295
+ }
296
+ focusField() {
297
+ const focusableItem = this.el.querySelector('[data-scope="focusable"]');
298
+ focusableItem === null || focusableItem === void 0 ? void 0 : focusableItem.focus();
298
299
  }
299
300
  /**
300
301
  * Filter dropdown items based on the text entered by the user.
301
302
  * If no items are found, display a message indicating no results.
302
303
  */
303
304
  filterItems() {
304
- var _a;
305
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
306
- // Remove the "no results found" item if it exists
307
- const existingEmptyItem = this.el.querySelector('nv-fielddropdownitem[data-empty]');
308
- if (existingEmptyItem) {
309
- existingEmptyItem.remove();
310
- }
305
+ var _a, _b;
306
+ if (this.controlledFilter)
307
+ return;
311
308
  let hasVisibleItems = false;
312
- // Iterate over all items and adjust their visibility
309
+ const items = this.getFilterableItems();
310
+ // Remove the "no results found" item if it exists
311
+ (_a = this.el
312
+ .querySelector('nv-fielddropdownitem[data-empty]')) === null || _a === void 0 ? void 0 : _a.remove();
313
313
  items.forEach(item => {
314
314
  var _a, _b;
315
- const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || ''; // Get the textual content of the slot
316
- const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || ''; // Get the value of the `value` attribute
317
- // Check if the filtered text is present either in the value or in the textual content
318
- const shouldShow = value.includes(this.filterText) ||
319
- textContent.includes(this.filterText);
315
+ const filterText = this.filterText.toLowerCase();
316
+ const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
317
+ const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
318
+ // Either in the value or in the textual content
319
+ const shouldShow = value.includes(filterText) || textContent.includes(filterText);
320
320
  if (shouldShow)
321
321
  item.removeAttribute('hidden');
322
322
  else
@@ -331,63 +331,47 @@ const NvFielddropdown = class {
331
331
  emptyItem.setAttribute('data-empty', 'true');
332
332
  emptyItem.setAttribute('disabled', 'true');
333
333
  emptyItem.textContent = this.emptyResult;
334
- (_a = this.el.querySelector('ul[slot="content"]')) === null || _a === void 0 ? void 0 : _a.appendChild(emptyItem);
334
+ (_b = this.el.querySelector('div[slot="content"] ul')) === null || _b === void 0 ? void 0 : _b.prepend(emptyItem);
335
335
  }
336
336
  }
337
- /** Reset the filter and make all items visible. */
338
- resetFilter() {
339
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
340
- items.forEach(item => {
341
- item.style.display = '';
342
- });
337
+ async updateSelectedItem() {
338
+ const items = this.getAllItems();
339
+ if (this.value) {
340
+ items.forEach(item => {
341
+ if (item.value === this.value) {
342
+ item.selected = true;
343
+ }
344
+ else {
345
+ item.selected = false;
346
+ }
347
+ });
348
+ }
343
349
  }
344
- updateHighlightedItem(items, index) {
345
- items.forEach((item, i) => {
346
- if (i === index) {
347
- item.classList.add('highlighted');
348
- item.focus();
349
- item.scrollIntoView({ block: 'nearest' });
350
- }
351
- else {
352
- item.classList.remove('highlighted');
353
- }
354
- });
350
+ //#endregion METHODS
351
+ /****************************************************************************/
352
+ //#region LIFECYCLE
353
+ componentDidLoad() {
354
+ this.updateSelectedItem();
355
+ this.setFilterInputToSelectedValue();
355
356
  }
356
- updateSelectedItem(value) {
357
- if (!value)
358
- return;
359
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
360
- const matchingItem = items.find(item => {
361
- var _a;
362
- const itemLabel = item.getAttribute('label');
363
- const itemValue = item.getAttribute('value');
364
- const itemText = (_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim();
365
- return itemLabel === value || itemValue === value || itemText === value;
366
- });
367
- items.forEach(item => {
368
- if (item === matchingItem) {
369
- item.setAttribute('selected', '');
370
- }
371
- else {
372
- item.removeAttribute('selected');
373
- }
374
- });
357
+ disconnectedCallback() {
358
+ clearTimeout(this.debounceTimer);
375
359
  }
376
- //#endregion METHODS
360
+ //#endregion LIFECYCLE
377
361
  /****************************************************************************/
378
362
  //#region RENDER
379
363
  render() {
380
364
  var _a;
381
- return (h(Host, { key: '1d5a87b2a5e9d9ca0be659ba5706b1db068d1d2d', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'b07ca241c89f45292e479de79de618c6444a9c42', htmlFor: this.inputId }, h("slot", { key: '0dd6ac2799e187e7233a5a5651ef18d59e4507e8', name: "label" }, this.label))), h("nv-popover", { key: 'b06d107776724937816dc4b98a035b282ed6c1f3', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: 'ab755801a0f2a732ea895e04d6c3a85261422f17', class: "input-wrapper", slot: "trigger" }, h("slot", { key: 'b78c41d4064cf067d69fa20ae583c1be29d1f620', name: "before-input" }), h("div", { key: 'b46f6440660056ff71b9debf503f15ca7046ca02', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '36069ce529fba771c9339a3cb6c9c5c838f441c4', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (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 })) : (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 && (h("nv-iconbutton", { key: '36f76135c0e3e1e6750c95116aae6ddd397eec1f', name: "x", size: "md", emphasis: "lower", class: "clear-button", onClick: this.clearFilter, "aria-label": "Clear input" })), this.error && (h("nv-icon", { key: 'bd73c43ffae11897359adfae69572ee490f0f5c2', name: "alert-circle", class: "validation", size: "md" })), 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 })), h("slot", { key: '66d2b27cfcf7ef97df493accaa333e0694234344', name: "after-input" })), h("div", { key: 'de6d7e18d676788cf0c7bfebd25f22b5cd2067ce', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0 ? (h("ul", null, this.options.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 ||
382
- this.el.querySelector('[slot="description"]')) && (h("div", { key: 'ea889c8ecdcfad160010374541b73f548322a0ad', class: "description" }, h("slot", { key: 'b69f67d3a03bf1839edd912ea369cfd87395ae51', name: "description" }, this.description))), (this.errorDescription ||
383
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '6ecd397cb41aab81173992c90e42f593f1227730', hidden: !this.error, class: "error-description" }, h("slot", { key: '3dff83b119d3cbbf2d00bc8641882326d08f939d', name: "error-description" }, this.errorDescription)))));
365
+ return (h(Host, { key: '428dd85337710d430ac04cf8cbc9021a93307bfe', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'a527c33d31152a90f8641e27fbaf91cf73eb06b6', htmlFor: this.inputId, onClick: this.syncToggleDropdown.bind(this) }, h("slot", { key: 'e4cf96c38db69080228666e4b924367a0c3a9d72', name: "label" }, this.label))), h("nv-popover", { key: '41723f7ec67e4e5680381e217eba45a1d73b47fc', triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: 'd4af00d5171b09923c36df9fd44853e1399e584f', class: "input-wrapper", slot: "trigger" }, h("slot", { key: 'bb6e53746c70fcc8172acd9a7ef8cbf72ae70698', name: "before-input" }), h("div", { key: 'ef3dc9ac5d0d895384653a17f8e61f616a7cbba9', class: "input-container" }, h("slot", { key: '7621b8cb7222330e73a426282877df2e0040714c', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (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 })) : (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 && (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 && (h("nv-icon", { key: '6f826edb19430ce535dc8742dfbd77b05d673f4d', name: "alert-circle", class: "validation", size: "md" })), 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 })), h("slot", { key: '18d16b6c1d3c1ab910f8a45a339ae750e2277542', name: "after-input" })), h("div", { key: '53624675adac2c6c9345b64e634cbbad4f009a82', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("ul", { key: '3dfd5e914176bab898fd7872eb4ea0206d12b80a' }, this.options.map(option => (h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value }))))), h("slot", { key: 'e1c9151e125d0fe6f129b879b0adf1ae91b94bc4', name: "content" }))), (this.description ||
366
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '13247930760480ec767ce75c61385036126cd2f3', class: "description" }, h("slot", { key: '09c3f2fa0a1be5bcbe69b757a68a8327fef29ec1', name: "description" }, this.description))), (this.errorDescription ||
367
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '9b43e41b6b38242b21c750d2d442c78e0930b9bc', hidden: !this.error, class: "error-description" }, h("slot", { key: '44f7756522adbc54b8d85a211dace24a37073fc6', name: "error-description" }, this.errorDescription)))));
384
368
  }
385
369
  static get formAssociated() { return true; }
386
370
  get el() { return getElement(this); }
387
371
  static get watchers() { return {
388
- "options": ["handleOptionsChange"],
389
- "value": ["watchValueHandler"],
390
- "open": ["handleOpenChange"]
372
+ "open": ["handleOpenChange"],
373
+ "value": ["handleValueChange"],
374
+ "options": ["handleOptionsChange"]
391
375
  }; }
392
376
  };
393
377
  NvFielddropdown.style = NvFielddropdownStyle0;