@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
@@ -1,9 +1,9 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-5829b9f7.js';
2
- import { d as defineCustomElement$6 } from './p-5e315239.js';
3
- import { d as defineCustomElement$5 } from './p-ed43bcec.js';
4
- import { d as defineCustomElement$4 } from './p-6ca3d847.js';
5
- import { d as defineCustomElement$3 } from './p-c981bb48.js';
6
- import { d as defineCustomElement$2 } from './p-ebfecbaa.js';
2
+ import { d as defineCustomElement$6 } from './p-45a3cf85.js';
3
+ import { d as defineCustomElement$5 } from './p-946a047c.js';
4
+ import { d as defineCustomElement$4 } from './p-5a5db065.js';
5
+ import { d as defineCustomElement$3 } from './p-222136c2.js';
6
+ import { d as defineCustomElement$2 } from './p-4799b6c3.js';
7
7
  import { v as v4 } from './p-f5ff676c.js';
8
8
 
9
9
  const nvFielddropdownCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fielddropdown{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fielddropdown[fluid]:not([fluid=false]){max-width:unset}nv-fielddropdown[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fielddropdown[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fielddropdown[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:var(--font-weight-high-emphasis)}nv-fielddropdown[hidden]:not([hidden=false]) label{display:none}nv-fielddropdown label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-fielddropdown nv-popover{width:100%;display:block}nv-fielddropdown nv-popover [data-scope=popover]{width:100%;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fielddropdown nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fielddropdown nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fielddropdown nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fielddropdown .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fielddropdown .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;width:100%;min-height:40px}nv-fielddropdown .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fielddropdown .input-container:focus-within,nv-fielddropdown .input-container:focus-within:hover,nv-fielddropdown .input-container:focus,nv-fielddropdown .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fielddropdown .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fielddropdown .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fielddropdown .input-container input[type=search]::-webkit-search-decoration,nv-fielddropdown .input-container input[type=search]::-webkit-search-cancel-button,nv-fielddropdown .input-container input[type=search]::-webkit-search-results-button,nv-fielddropdown .input-container input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}nv-fielddropdown .input-container input,nv-fielddropdown .input-container p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);width:100%;}nv-fielddropdown .input-container input:focus,nv-fielddropdown .input-container p.non-filterable-text:focus{outline:none}nv-fielddropdown .input-container input::placeholder,nv-fielddropdown .input-container p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--form-field-line-height)}nv-fielddropdown .input-container input[type=password]::-ms-clear,nv-fielddropdown .input-container input[type=password]::-ms-reveal,nv-fielddropdown .input-container p.non-filterable-text[type=password]::-ms-clear,nv-fielddropdown .input-container p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fielddropdown .input-container>nv-iconbutton{border:0px;border-radius:0px}nv-fielddropdown .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fielddropdown .input-container>nv-iconbutton:last-of-type{border-top-right-radius:var(--form-field-radius);border-bottom-right-radius:var(--form-field-radius)}nv-fielddropdown .input-container nv-icon.validation{color:var(--nv-field-border-default)}nv-fielddropdown .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fielddropdown .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fielddropdown .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fielddropdown .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}";
@@ -14,6 +14,8 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
14
14
  super();
15
15
  this.__registerHost();
16
16
  this.valueChanged = createEvent(this, "valueChanged", 7);
17
+ this.filterTextChanged = createEvent(this, "filterTextChanged", 7);
18
+ this.openChanged = createEvent(this, "openChanged", 7);
17
19
  this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
18
20
  /****************************************************************************/
19
21
  //#region PROPERTIES
@@ -58,10 +60,6 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
58
60
  * Defines the maximum height of the multiselect list when open.
59
61
  */
60
62
  this.maxHeight = '';
61
- /**
62
- * State of the dropdown popover.
63
- */
64
- this.open = false;
65
63
  /**
66
64
  * The text to display when no items match the filter.
67
65
  */
@@ -71,7 +69,21 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
71
69
  */
72
70
  this.filterable = false;
73
71
  /**
74
- * Delay in milliseconds before the search is triggered when typing in the filter input.
72
+ * When an item is selected by the user, the dropdown will continue to stay
73
+ * open.
74
+ */
75
+ this.openOnSelect = false;
76
+ /**
77
+ * Determines if the component’s filtering behavior is managed externally.
78
+ * When set to true and filterable is enabled, the component won’t
79
+ * automatically filter items. Instead, you must implement your own filtering
80
+ * logic (e.g., server-side search or custom matching) using the
81
+ * filterTextChanged event.
82
+ */
83
+ this.controlledFilter = false;
84
+ /**
85
+ * Delay in milliseconds before the search is triggered when typing in the
86
+ * filter input.
75
87
  * @default 300
76
88
  */
77
89
  this.debounceDelay = 300;
@@ -93,132 +105,75 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
93
105
  */
94
106
  this.filterText = '';
95
107
  this.selectedValues = new Set();
96
- this.handleInputContainerClick = (event) => {
97
- if (this.disabled || this.readonly) {
108
+ this.open = false;
109
+ /**
110
+ * Closes the popover when a click is detected outside the component.
111
+ * @param {MouseEvent} event - The click event.
112
+ */
113
+ this.handleClickOutside = (event) => {
114
+ var _a;
115
+ if (!(event.target instanceof Node))
98
116
  return;
99
- }
100
- const target = event.target;
101
- if (target.tagName === 'P' || target.tagName === 'SPAN') {
102
- this.open = true;
103
- // Simulate focus to trigger "focus-within" style
104
- const inputContainer = this.el.querySelector('.input-container');
105
- if (inputContainer) {
106
- inputContainer.classList.add('focus-within');
107
- // Remove the "focus-within" class after a delay or when the popover is closed
108
- const removeFocusWithin = () => {
109
- inputContainer.classList.remove('focus-within');
110
- };
111
- // Or remove the class when the popover is closed
112
- this.popoverElement.addEventListener('hide', removeFocusWithin);
113
- }
114
- }
117
+ if (!((_a = this.el) === null || _a === void 0 ? void 0 : _a.contains(event.target)))
118
+ this.open = false;
115
119
  };
116
- this.handleInput = (event) => {
117
- if (!this.filterable)
118
- return;
119
- if (this.disabled || this.readonly) {
120
- return;
121
- }
122
- const input = event.target;
120
+ this.handleFilterInput = () => {
123
121
  this.open = true;
124
- // Clear any existing timer
125
- if (this.debounceTimer) {
126
- window.clearTimeout(this.debounceTimer);
127
- }
128
- // Set a new timer for filtering
122
+ this.filterText = this.inputElement.value;
123
+ this.filterTextChanged.emit(this.inputElement.value);
124
+ clearTimeout(this.debounceTimer);
129
125
  this.debounceTimer = window.setTimeout(() => {
130
- this.filterText = input.value.toLowerCase();
131
126
  this.filterItems();
132
127
  }, this.debounceDelay);
133
128
  };
134
- this.handleInputFocus = () => {
135
- if (this.disabled || this.readonly)
136
- return;
137
- this.open = true;
138
- };
139
- this.togglePopover = () => {
140
- if (this.disabled || this.readonly)
141
- return;
142
- this.open = !this.open;
143
- };
144
129
  this.getSelectedLabel = () => {
145
- var _a, _b, _c, _d, _e, _f;
130
+ var _a, _b, _c, _d, _e, _f, _g;
146
131
  if (!this.value)
147
132
  return '';
148
- if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 1) {
133
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length)
134
+ return this.filterText;
135
+ if (((_b = this.options) === null || _b === void 0 ? void 0 : _b.length) > 1) {
149
136
  const matchingItem = this.options.find(option => option.value === this.value);
150
- 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;
137
+ 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;
151
138
  }
152
139
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
153
140
  const matchingItem = items.find(item => item.value === this.value);
154
141
  const selectedLabel = matchingItem
155
- ? (_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
142
+ ? (_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
156
143
  : '';
157
144
  return selectedLabel;
158
145
  };
159
- this.clearFilter = () => {
160
- if (!this.filterable)
161
- return;
162
- this.filterText = '';
163
- this.inputElement.value = this.getSelectedLabel();
164
- this.inputElement.focus();
165
- this.filterItems();
166
- };
167
- this.handleBlurInput = (event) => {
168
- var _a;
169
- const relatedTarget = event.relatedTarget;
170
- if (!this.el.contains(relatedTarget) &&
171
- !((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget))) {
172
- this.open = false;
173
- if (this.filterable) {
174
- this.clearFilter(); // Resets input to selected label, clears filterText
175
- }
176
- }
177
- };
178
146
  }
179
147
  //#endregion EVENTS
180
148
  /****************************************************************************/
181
149
  //#region WATCHERS
182
- handleOptionsChange(newValue) {
183
- var _a;
184
- if (!newValue)
185
- return;
186
- if (!this.value) {
187
- const defaultValue = newValue.find(option => option.selected);
188
- this.value = (_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value) !== null && _a !== void 0 ? _a : '';
189
- this.updateSelectedItem(this.value);
150
+ handleOpenChange(newOpen) {
151
+ if (newOpen === false) {
152
+ clearTimeout(this.debounceTimer);
153
+ setTimeout(() => {
154
+ this.clearFilter();
155
+ }, 100);
190
156
  }
191
157
  }
192
- watchValueHandler(newValue) {
193
- this.valueChanged.emit(newValue);
158
+ handleValueChange() {
159
+ this.updateSelectedItem();
160
+ if (!this.open || !this.filterText)
161
+ this.setFilterInputToSelectedValue();
194
162
  }
195
- handleOpenChange(newOpen) {
196
- // React to external changes, e.g., clear filter or refilter on open
197
- if (newOpen && this.filterable) {
198
- this.filterItems(); // Ensure items are filtered if filterText exists
199
- }
200
- else if (!newOpen) {
201
- this.clearFilter(); // Clear on external close
202
- }
163
+ handleOptionsChange() {
164
+ this.updateSelectedItem();
203
165
  }
204
166
  //#endregion WATCHERS
205
167
  /****************************************************************************/
206
168
  //#region LISTENERS
207
- handleOpenChanged(event) {
208
- // Stop propagation to prevent the event from affecting parent components like dialogs
209
- event.stopPropagation();
210
- // Update `open` based on the popover state
211
- if (event.target === this.popoverElement) {
212
- this.open = event.detail;
213
- }
214
- if (!event.detail && this.filterable) {
215
- this.clearFilter();
216
- }
217
- }
218
169
  handleDropdownItemSelected(event) {
219
170
  if (this.disabled || this.readonly)
220
171
  return;
221
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
172
+ if (!this.openOnSelect)
173
+ this.open = false;
174
+ if (event.detail.detached)
175
+ return;
176
+ const items = this.getAllItems();
222
177
  items.forEach(item => {
223
178
  if (item !== event.target) {
224
179
  item.removeAttribute('selected');
@@ -227,102 +182,147 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
227
182
  item.setAttribute('selected', 'true');
228
183
  }
229
184
  });
230
- this.clearFilter();
231
185
  this.value = event.detail.value;
232
- this.open = false;
186
+ this.setFilterInputToSelectedValue();
187
+ this.valueChanged.emit(event.detail.value);
233
188
  }
234
- handleBlur(event) {
235
- const target = event.relatedTarget;
236
- if (!(target instanceof Node) || !this.el.contains(target)) {
237
- this.open = false;
238
- if (this.inputElement) {
239
- this.filterText = '';
240
- this.inputElement.value = this.getSelectedLabel();
241
- setTimeout(() => {
242
- this.filterItems();
243
- }, 200);
244
- }
189
+ handleFocus(event) {
190
+ if (event.relatedTarget instanceof H &&
191
+ event.relatedTarget.tagName.includes('NV-FIELDDROPDOWNITEM')) {
192
+ return;
245
193
  }
194
+ if (event.target != this.toggleElement)
195
+ this.open = true;
196
+ }
197
+ handleFocusOut(event) {
198
+ if (!(event.relatedTarget instanceof Node))
199
+ return;
200
+ if (this.el.contains(event.relatedTarget))
201
+ return;
202
+ this.open = false;
246
203
  }
247
204
  handleKeyDown(event) {
248
- if (!this.el)
205
+ if (event.key === 'Escape') {
206
+ this.focusField();
207
+ this.open = false;
249
208
  return;
250
- if (!this.open) {
251
- if (event.key === 'ArrowDown') {
209
+ }
210
+ if (event.key === ' ') {
211
+ if (event.target == this.selectElement) {
212
+ event.preventDefault(); // Prevent scrolling down
252
213
  this.open = true;
253
- event.preventDefault();
254
- return;
255
214
  }
256
215
  return;
257
216
  }
258
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
259
- let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
217
+ const items = this.getNavigableItems();
218
+ const highlightedItem = this.getHighlightedItemIndex(items);
260
219
  if (event.key === 'ArrowDown') {
261
- event.preventDefault();
262
- currentIndex = (currentIndex + 1) % items.length;
263
- this.updateHighlightedItem(items, currentIndex);
264
- }
265
- else if (event.key === 'ArrowUp') {
266
- event.preventDefault();
267
- currentIndex = (currentIndex - 1 + items.length) % items.length;
268
- this.updateHighlightedItem(items, currentIndex);
220
+ event.preventDefault(); // Prevent scrolling down
221
+ this.open = true;
222
+ const nextIndex = highlightedItem + 1;
223
+ this.updateHighlightedItem(items, nextIndex >= items.length ? 0 : nextIndex);
269
224
  }
270
- else if (event.key === 'Escape') {
271
- event.preventDefault();
272
- this.open = false;
225
+ if (event.key === 'ArrowUp') {
226
+ event.preventDefault(); // Prevent scrolling up
227
+ this.open = true;
228
+ const nextIndex = highlightedItem - 1;
229
+ this.updateHighlightedItem(items, nextIndex < 0 ? items.length - 1 : nextIndex);
273
230
  }
274
231
  }
232
+ handleDocumentClick(event) {
233
+ this.handleClickOutside(event);
234
+ }
275
235
  //#endregion LISTENERS
276
236
  /****************************************************************************/
277
- //#region LIFECYCLE
278
- componentWillLoad() {
279
- this.resetFilter();
280
- if (this.filterable && this.filterText) {
281
- this.filterItems();
282
- }
283
- if (this.options) {
284
- this.handleOptionsChange(this.options);
237
+ //#region METHODS
238
+ /** Clears the filter text */
239
+ async clearFilter() {
240
+ var _a;
241
+ if (!this.filterable)
242
+ return;
243
+ if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length) {
244
+ this.filterText = '';
245
+ this.filterTextChanged.emit(this.filterText);
285
246
  }
247
+ this.filterItems();
248
+ // Wait for wrapper lifecycle to finish
249
+ setTimeout(() => {
250
+ this.setFilterInputToSelectedValue();
251
+ }, 0);
286
252
  }
287
- componentDidLoad() {
288
- if (this.value) {
289
- this.updateSelectedItem(this.value);
253
+ /**
254
+ * Toggles the dropdown popover open state
255
+ * @param {boolean} open - The open state to set, if null, toggles the state
256
+ */
257
+ async toggleDropdown(open) {
258
+ if (open !== undefined) {
259
+ setTimeout(() => {
260
+ this.open = open;
261
+ }, 0);
290
262
  }
291
- if (this.inputElement) {
292
- this.inputElement.value = this.getSelectedLabel();
263
+ else {
264
+ setTimeout(() => {
265
+ this.open = !this.open;
266
+ }, 0);
293
267
  }
294
268
  }
295
- //#endregion LIFECYCLE
296
- /****************************************************************************/
297
- //#region METHODS
298
- /**
299
- * Retrieves the current filter text entered by the user.
300
- * @returns {string} The filter text.
301
- */
302
- async getFilterText() {
303
- return this.filterText;
269
+ syncToggleDropdown() {
270
+ this.open = !this.open;
271
+ }
272
+ setFilterInputToSelectedValue() {
273
+ if (!this.filterable)
274
+ return;
275
+ if (!this.value)
276
+ return (this.inputElement.value = '');
277
+ this.inputElement.value = this.getSelectedLabel();
278
+ }
279
+ // Will exclude detached items and data-empty
280
+ getFilterableItems() {
281
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty]):not([detached])'));
282
+ }
283
+ getNavigableItems() {
284
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
285
+ }
286
+ getAllItems() {
287
+ return Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
288
+ }
289
+ getHighlightedItemIndex(items) {
290
+ return items.findIndex(item => item.classList.contains('highlighted'));
291
+ }
292
+ updateHighlightedItem(items, index) {
293
+ items.forEach((item, i) => {
294
+ item.classList.remove('highlighted');
295
+ if (i === index) {
296
+ item.classList.add('highlighted');
297
+ item.focus();
298
+ item.scrollIntoView({ block: 'nearest' });
299
+ }
300
+ });
301
+ }
302
+ focusField() {
303
+ const focusableItem = this.el.querySelector('[data-scope="focusable"]');
304
+ focusableItem === null || focusableItem === void 0 ? void 0 : focusableItem.focus();
304
305
  }
305
306
  /**
306
307
  * Filter dropdown items based on the text entered by the user.
307
308
  * If no items are found, display a message indicating no results.
308
309
  */
309
310
  filterItems() {
310
- var _a;
311
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
312
- // Remove the "no results found" item if it exists
313
- const existingEmptyItem = this.el.querySelector('nv-fielddropdownitem[data-empty]');
314
- if (existingEmptyItem) {
315
- existingEmptyItem.remove();
316
- }
311
+ var _a, _b;
312
+ if (this.controlledFilter)
313
+ return;
317
314
  let hasVisibleItems = false;
318
- // Iterate over all items and adjust their visibility
315
+ const items = this.getFilterableItems();
316
+ // Remove the "no results found" item if it exists
317
+ (_a = this.el
318
+ .querySelector('nv-fielddropdownitem[data-empty]')) === null || _a === void 0 ? void 0 : _a.remove();
319
319
  items.forEach(item => {
320
320
  var _a, _b;
321
- const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || ''; // Get the textual content of the slot
322
- const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || ''; // Get the value of the `value` attribute
323
- // Check if the filtered text is present either in the value or in the textual content
324
- const shouldShow = value.includes(this.filterText) ||
325
- textContent.includes(this.filterText);
321
+ const filterText = this.filterText.toLowerCase();
322
+ const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
323
+ const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
324
+ // Either in the value or in the textual content
325
+ const shouldShow = value.includes(filterText) || textContent.includes(filterText);
326
326
  if (shouldShow)
327
327
  item.removeAttribute('hidden');
328
328
  else
@@ -337,63 +337,47 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
337
337
  emptyItem.setAttribute('data-empty', 'true');
338
338
  emptyItem.setAttribute('disabled', 'true');
339
339
  emptyItem.textContent = this.emptyResult;
340
- (_a = this.el.querySelector('ul[slot="content"]')) === null || _a === void 0 ? void 0 : _a.appendChild(emptyItem);
340
+ (_b = this.el.querySelector('div[slot="content"] ul')) === null || _b === void 0 ? void 0 : _b.prepend(emptyItem);
341
341
  }
342
342
  }
343
- /** Reset the filter and make all items visible. */
344
- resetFilter() {
345
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
346
- items.forEach(item => {
347
- item.style.display = '';
348
- });
343
+ async updateSelectedItem() {
344
+ const items = this.getAllItems();
345
+ if (this.value) {
346
+ items.forEach(item => {
347
+ if (item.value === this.value) {
348
+ item.selected = true;
349
+ }
350
+ else {
351
+ item.selected = false;
352
+ }
353
+ });
354
+ }
349
355
  }
350
- updateHighlightedItem(items, index) {
351
- items.forEach((item, i) => {
352
- if (i === index) {
353
- item.classList.add('highlighted');
354
- item.focus();
355
- item.scrollIntoView({ block: 'nearest' });
356
- }
357
- else {
358
- item.classList.remove('highlighted');
359
- }
360
- });
356
+ //#endregion METHODS
357
+ /****************************************************************************/
358
+ //#region LIFECYCLE
359
+ componentDidLoad() {
360
+ this.updateSelectedItem();
361
+ this.setFilterInputToSelectedValue();
361
362
  }
362
- updateSelectedItem(value) {
363
- if (!value)
364
- return;
365
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
366
- const matchingItem = items.find(item => {
367
- var _a;
368
- const itemLabel = item.getAttribute('label');
369
- const itemValue = item.getAttribute('value');
370
- const itemText = (_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim();
371
- return itemLabel === value || itemValue === value || itemText === value;
372
- });
373
- items.forEach(item => {
374
- if (item === matchingItem) {
375
- item.setAttribute('selected', '');
376
- }
377
- else {
378
- item.removeAttribute('selected');
379
- }
380
- });
363
+ disconnectedCallback() {
364
+ clearTimeout(this.debounceTimer);
381
365
  }
382
- //#endregion METHODS
366
+ //#endregion LIFECYCLE
383
367
  /****************************************************************************/
384
368
  //#region RENDER
385
369
  render() {
386
370
  var _a;
387
- 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 ||
388
- this.el.querySelector('[slot="description"]')) && (h("div", { key: 'ea889c8ecdcfad160010374541b73f548322a0ad', class: "description" }, h("slot", { key: 'b69f67d3a03bf1839edd912ea369cfd87395ae51', name: "description" }, this.description))), (this.errorDescription ||
389
- 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)))));
371
+ 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 ||
372
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '13247930760480ec767ce75c61385036126cd2f3', class: "description" }, h("slot", { key: '09c3f2fa0a1be5bcbe69b757a68a8327fef29ec1', name: "description" }, this.description))), (this.errorDescription ||
373
+ 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)))));
390
374
  }
391
375
  static get formAssociated() { return true; }
392
376
  get el() { return this; }
393
377
  static get watchers() { return {
394
- "options": ["handleOptionsChange"],
395
- "value": ["watchValueHandler"],
396
- "open": ["handleOpenChange"]
378
+ "open": ["handleOpenChange"],
379
+ "value": ["handleValueChange"],
380
+ "options": ["handleOptionsChange"]
397
381
  }; }
398
382
  static get style() { return NvFielddropdownStyle0; }
399
383
  }, [68, "nv-fielddropdown", {
@@ -410,20 +394,23 @@ const NvFielddropdown$1 = /*@__PURE__*/ proxyCustomElement(class NvFielddropdown
410
394
  "error": [516],
411
395
  "errorDescription": [513, "error-description"],
412
396
  "maxHeight": [513, "max-height"],
413
- "open": [1540],
414
397
  "emptyResult": [513, "empty-result"],
415
398
  "filterable": [516],
399
+ "openOnSelect": [516, "open-on-select"],
400
+ "controlledFilter": [516, "controlled-filter"],
416
401
  "options": [16],
417
402
  "debounceDelay": [514, "debounce-delay"],
418
403
  "autofocus": [516],
419
404
  "fluid": [516],
420
405
  "filterText": [32],
421
406
  "selectedValues": [32],
422
- "getFilterText": [64]
423
- }, [[0, "openChanged", "handleOpenChanged"], [0, "dropdownItemSelected", "handleDropdownItemSelected"], [2, "blur", "handleBlur"], [0, "keydown", "handleKeyDown"]], {
424
- "options": ["handleOptionsChange"],
425
- "value": ["watchValueHandler"],
426
- "open": ["handleOpenChange"]
407
+ "open": [32],
408
+ "clearFilter": [64],
409
+ "toggleDropdown": [64]
410
+ }, [[0, "dropdownItemSelected", "handleDropdownItemSelected"], [3, "focus", "handleFocus"], [3, "focusout", "handleFocusOut"], [0, "keydown", "handleKeyDown"], [4, "click", "handleDocumentClick"]], {
411
+ "open": ["handleOpenChange"],
412
+ "value": ["handleValueChange"],
413
+ "options": ["handleOptionsChange"]
427
414
  }]);
428
415
  function defineCustomElement$1() {
429
416
  if (typeof customElements === "undefined") {