@nova-design-system/nova-webcomponents 3.15.0 → 3.16.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 (536) hide show
  1. package/dist/cjs/{index-c56424e5.js → index-93d3b2f8.js} +5 -6
  2. package/dist/cjs/index-93d3b2f8.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +6 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/native.cjs.js +2 -2
  7. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
  10. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  17. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-button.cjs.entry.js +2 -2
  20. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-buttongroup.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +177 -10
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-dialog.cjs.entry.js +32 -29
  28. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
  38. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
  41. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  43. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  45. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
  47. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  49. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-fieldtime.cjs.entry.js +25 -12
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nv-menu.cjs.entry.js +24 -9
  63. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-notification.cjs.entry.js +2 -2
  66. package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  68. package/dist/cjs/nv-popover.cjs.entry.js +67 -61
  69. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  71. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  72. package/dist/cjs/nv-table.cjs.entry.js +216 -310
  73. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  74. package/dist/cjs/nv-toggle.cjs.entry.js +4 -4
  75. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  78. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
  79. package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
  80. package/dist/collection/collection-manifest.json +0 -1
  81. package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
  82. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  83. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  84. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
  85. package/dist/collection/components/nv-alert/nv-alert.css +1 -1
  86. package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
  87. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
  88. package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
  89. package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
  90. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
  91. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
  92. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  93. package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
  94. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  95. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
  96. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +3 -3
  97. package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
  98. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  99. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
  100. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
  101. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  102. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
  103. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
  104. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  105. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
  106. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  107. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
  108. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
  109. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  110. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
  111. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
  112. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
  113. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
  114. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
  115. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
  116. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
  117. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  118. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  119. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
  120. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
  121. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  122. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
  123. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  124. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
  125. package/dist/collection/components/nv-icon/nv-icons.js +6 -1
  126. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  127. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
  128. package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
  129. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  130. package/dist/collection/components/nv-menu/nv-menu.js +26 -8
  131. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  132. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  133. package/dist/collection/components/nv-notification/styles/nv-notification.css +2 -2
  134. package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
  135. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  136. package/dist/collection/components/nv-popover/nv-popover.js +66 -60
  137. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  138. package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
  139. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  140. package/dist/collection/components/nv-table/nv-table.js +68 -496
  141. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  142. package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
  143. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
  144. package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
  145. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
  146. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
  147. package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
  148. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  149. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  150. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
  151. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  152. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
  153. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  154. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  155. package/dist/components/index.js +7 -2
  156. package/dist/components/index.js.map +1 -1
  157. package/dist/components/nv-accordion-item.js +1 -1
  158. package/dist/components/nv-accordion.js +10 -10
  159. package/dist/components/nv-accordion.js.map +1 -1
  160. package/dist/components/nv-alert.js +3 -3
  161. package/dist/components/nv-alert.js.map +1 -1
  162. package/dist/components/nv-avatar.js +3 -3
  163. package/dist/components/nv-avatar.js.map +1 -1
  164. package/dist/components/nv-badge.js +1 -1
  165. package/dist/components/nv-breadcrumb.js +4 -4
  166. package/dist/components/nv-breadcrumb.js.map +1 -1
  167. package/dist/components/nv-breadcrumbs.js +1 -1
  168. package/dist/components/nv-button.js +1 -1
  169. package/dist/components/nv-buttongroup.js +1 -1
  170. package/dist/components/nv-calendar.js +1 -1
  171. package/dist/components/nv-col.js +1 -1
  172. package/dist/components/nv-datagrid.js +174 -7
  173. package/dist/components/nv-datagrid.js.map +1 -1
  174. package/dist/components/nv-datagridcolumn.js +1 -1
  175. package/dist/components/nv-dialog.js +37 -34
  176. package/dist/components/nv-dialog.js.map +1 -1
  177. package/dist/components/nv-dialogfooter.js +1 -1
  178. package/dist/components/nv-dialogheader.js +1 -1
  179. package/dist/components/nv-fieldcheckbox.js +1 -1
  180. package/dist/components/nv-fielddate.js +57 -32
  181. package/dist/components/nv-fielddate.js.map +1 -1
  182. package/dist/components/nv-fielddaterange.js +74 -48
  183. package/dist/components/nv-fielddaterange.js.map +1 -1
  184. package/dist/components/nv-fielddropdown.js +40 -13
  185. package/dist/components/nv-fielddropdown.js.map +1 -1
  186. package/dist/components/nv-fielddropdownitem.js +1 -1
  187. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  188. package/dist/components/nv-fieldmultiselect.js +196 -164
  189. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  190. package/dist/components/nv-fieldnumber.js +1 -1
  191. package/dist/components/nv-fieldpassword.js +5 -5
  192. package/dist/components/nv-fieldpassword.js.map +1 -1
  193. package/dist/components/nv-fieldradio.js +2 -2
  194. package/dist/components/nv-fieldradio.js.map +1 -1
  195. package/dist/components/nv-fieldselect.js +5 -5
  196. package/dist/components/nv-fieldselect.js.map +1 -1
  197. package/dist/components/nv-fieldslider.js +6 -6
  198. package/dist/components/nv-fieldslider.js.map +1 -1
  199. package/dist/components/nv-fieldtext.js +1 -1
  200. package/dist/components/nv-fieldtextarea.js +2 -2
  201. package/dist/components/nv-fieldtextarea.js.map +1 -1
  202. package/dist/components/nv-fieldtime.js +31 -17
  203. package/dist/components/nv-fieldtime.js.map +1 -1
  204. package/dist/components/nv-icon.js +1 -1
  205. package/dist/components/nv-iconbutton.js +1 -1
  206. package/dist/components/nv-loader.js +1 -1
  207. package/dist/components/nv-menu.js +30 -13
  208. package/dist/components/nv-menu.js.map +1 -1
  209. package/dist/components/nv-menuitem.js +1 -1
  210. package/dist/components/nv-notification.js +3 -3
  211. package/dist/components/nv-notification.js.map +1 -1
  212. package/dist/components/nv-notificationcontainer.js +1 -1
  213. package/dist/components/nv-popover.js +1 -1
  214. package/dist/components/nv-row.js +1 -1
  215. package/dist/components/nv-stack.js +1 -1
  216. package/dist/components/nv-table.js +216 -328
  217. package/dist/components/nv-table.js.map +1 -1
  218. package/dist/components/nv-toggle.js +4 -4
  219. package/dist/components/nv-toggle.js.map +1 -1
  220. package/dist/components/nv-togglebutton.js +2 -2
  221. package/dist/components/nv-togglebuttongroup.js +2 -2
  222. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  223. package/dist/components/nv-tooltip.js +1 -1
  224. package/dist/components/{p-00cbf2a1.js → p-0d5ed1d7.js} +3 -3
  225. package/dist/components/p-0d5ed1d7.js.map +1 -0
  226. package/dist/components/{p-54161bad.js → p-0e6f41c7.js} +2 -2
  227. package/dist/components/{p-54161bad.js.map → p-0e6f41c7.js.map} +1 -1
  228. package/dist/components/{p-0c42fafb.js → p-0fd23531.js} +6 -6
  229. package/dist/components/{p-0c42fafb.js.map → p-0fd23531.js.map} +1 -1
  230. package/dist/components/{p-a823b8e9.js → p-1639703f.js} +2 -2
  231. package/dist/components/{p-a823b8e9.js.map → p-1639703f.js.map} +1 -1
  232. package/dist/components/{p-e5c62ea8.js → p-2cc83e0c.js} +3 -3
  233. package/dist/components/{p-e5c62ea8.js.map → p-2cc83e0c.js.map} +1 -1
  234. package/dist/components/p-2d64749f.js +191 -0
  235. package/dist/components/{p-95857e4f.js.map → p-2d64749f.js.map} +1 -1
  236. package/dist/components/{p-3763c9c4.js → p-31478080.js} +3 -3
  237. package/dist/components/{p-3763c9c4.js.map → p-31478080.js.map} +1 -1
  238. package/dist/components/{p-178fa27e.js → p-378e3127.js} +6 -6
  239. package/dist/components/{p-178fa27e.js.map → p-378e3127.js.map} +1 -1
  240. package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
  241. package/dist/components/p-429e01f3.js.map +1 -0
  242. package/dist/components/p-47d499b4.js +88 -0
  243. package/dist/components/p-47d499b4.js.map +1 -0
  244. package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
  245. package/dist/components/p-5829b9f7.js.map +1 -0
  246. package/dist/components/{p-ee8944f3.js → p-63595ea1.js} +68 -62
  247. package/dist/components/p-63595ea1.js.map +1 -0
  248. package/dist/components/{p-4fc01a78.js → p-7112612c.js} +5 -5
  249. package/dist/components/p-7112612c.js.map +1 -0
  250. package/dist/components/{p-7426b20f.js → p-715e5235.js} +3 -3
  251. package/dist/components/{p-7426b20f.js.map → p-715e5235.js.map} +1 -1
  252. package/dist/components/{p-1af3591a.js → p-9707528d.js} +4 -4
  253. package/dist/components/{p-1af3591a.js.map → p-9707528d.js.map} +1 -1
  254. package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
  255. package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
  256. package/dist/components/{p-31e262bd.js → p-a1ef5e37.js} +5 -5
  257. package/dist/components/{p-31e262bd.js.map → p-a1ef5e37.js.map} +1 -1
  258. package/dist/components/{p-75200cc0.js → p-df5d76a5.js} +3 -3
  259. package/dist/components/{p-75200cc0.js.map → p-df5d76a5.js.map} +1 -1
  260. package/dist/components/{p-51459a44.js → p-f2bac2aa.js} +4 -4
  261. package/dist/components/{p-51459a44.js.map → p-f2bac2aa.js.map} +1 -1
  262. package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +5 -6
  263. package/dist/esm/index-dc2723f3.js.map +1 -0
  264. package/dist/esm/index.js +6 -1
  265. package/dist/esm/index.js.map +1 -1
  266. package/dist/esm/loader.js +3 -3
  267. package/dist/esm/native.js +3 -3
  268. package/dist/esm/nv-accordion-item.entry.js +2 -2
  269. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  270. package/dist/esm/nv-accordion.entry.js +6 -6
  271. package/dist/esm/nv-accordion.entry.js.map +1 -1
  272. package/dist/esm/nv-alert.entry.js +2 -2
  273. package/dist/esm/nv-alert.entry.js.map +1 -1
  274. package/dist/esm/nv-avatar.entry.js +2 -2
  275. package/dist/esm/nv-avatar.entry.js.map +1 -1
  276. package/dist/esm/nv-badge_2.entry.js +1 -1
  277. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  278. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  279. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  280. package/dist/esm/nv-button.entry.js +2 -2
  281. package/dist/esm/nv-button.entry.js.map +1 -1
  282. package/dist/esm/nv-buttongroup.entry.js +1 -1
  283. package/dist/esm/nv-calendar.entry.js +1 -1
  284. package/dist/esm/nv-col.entry.js +1 -1
  285. package/dist/esm/nv-datagrid.entry.js +172 -5
  286. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  287. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  288. package/dist/esm/nv-dialog.entry.js +32 -29
  289. package/dist/esm/nv-dialog.entry.js.map +1 -1
  290. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  291. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  292. package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
  293. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  294. package/dist/esm/nv-fielddate.entry.js +51 -26
  295. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  296. package/dist/esm/nv-fielddaterange.entry.js +68 -42
  297. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  298. package/dist/esm/nv-fielddropdown.entry.js +33 -7
  299. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  300. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  301. package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
  302. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  303. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  304. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  305. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  306. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  307. package/dist/esm/nv-fieldradio.entry.js +2 -2
  308. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  309. package/dist/esm/nv-fieldselect.entry.js +2 -2
  310. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  311. package/dist/esm/nv-fieldslider.entry.js +2 -2
  312. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  313. package/dist/esm/nv-fieldtext.entry.js +2 -2
  314. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  315. package/dist/esm/nv-fieldtextarea.entry.js +2 -2
  316. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  317. package/dist/esm/nv-fieldtime.entry.js +25 -12
  318. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  319. package/dist/esm/nv-icon.entry.js +2 -2
  320. package/dist/esm/nv-icon.entry.js.map +1 -1
  321. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  322. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  323. package/dist/esm/nv-menu.entry.js +24 -9
  324. package/dist/esm/nv-menu.entry.js.map +1 -1
  325. package/dist/esm/nv-menuitem.entry.js +1 -1
  326. package/dist/esm/nv-notification.entry.js +2 -2
  327. package/dist/esm/nv-notification.entry.js.map +1 -1
  328. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  329. package/dist/esm/nv-popover.entry.js +67 -61
  330. package/dist/esm/nv-popover.entry.js.map +1 -1
  331. package/dist/esm/nv-row.entry.js +1 -1
  332. package/dist/esm/nv-stack.entry.js +1 -1
  333. package/dist/esm/nv-table.entry.js +216 -310
  334. package/dist/esm/nv-table.entry.js.map +1 -1
  335. package/dist/esm/nv-toggle.entry.js +4 -4
  336. package/dist/esm/nv-toggle.entry.js.map +1 -1
  337. package/dist/esm/nv-togglebutton.entry.js +2 -2
  338. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  339. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  340. package/dist/esm/nv-tooltip.entry.js +2 -2
  341. package/dist/native/index.esm.js +1 -1
  342. package/dist/native/index.esm.js.map +1 -1
  343. package/dist/native/native.css +1 -1
  344. package/dist/native/native.esm.js +1 -1
  345. package/dist/native/native.esm.js.map +1 -1
  346. package/dist/native/{p-d882f417.entry.js → p-075d231e.entry.js} +2 -2
  347. package/dist/native/p-075d231e.entry.js.map +1 -0
  348. package/dist/native/p-107e80c6.entry.js +2 -0
  349. package/dist/native/p-107e80c6.entry.js.map +1 -0
  350. package/dist/native/{p-5c697133.entry.js → p-112d096c.entry.js} +2 -2
  351. package/dist/native/p-217de553.entry.js +2 -0
  352. package/dist/native/p-217de553.entry.js.map +1 -0
  353. package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
  354. package/dist/native/p-23ee0384.entry.js +2 -0
  355. package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
  356. package/dist/native/p-26513cbd.entry.js +2 -0
  357. package/dist/native/p-26513cbd.entry.js.map +1 -0
  358. package/dist/native/p-278613a3.entry.js +2 -0
  359. package/dist/native/{p-6cb6679b.entry.js.map → p-278613a3.entry.js.map} +1 -1
  360. package/dist/native/p-2dfd786f.entry.js +2 -0
  361. package/dist/native/{p-29df974e.entry.js.map → p-2dfd786f.entry.js.map} +1 -1
  362. package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
  363. package/dist/native/p-3060df80.js.map +1 -0
  364. package/dist/native/p-445221dc.entry.js +2 -0
  365. package/dist/native/p-445221dc.entry.js.map +1 -0
  366. package/dist/native/{p-08322093.entry.js → p-44a78545.entry.js} +2 -2
  367. package/dist/native/p-4dc7483d.entry.js +2 -0
  368. package/dist/native/{p-c7b7ffaf.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
  369. package/dist/native/p-4eaf417d.entry.js +13 -0
  370. package/dist/native/p-4eaf417d.entry.js.map +1 -0
  371. package/dist/native/p-5039ceb8.entry.js +2 -0
  372. package/dist/native/p-5039ceb8.entry.js.map +1 -0
  373. package/dist/native/{p-19090193.entry.js → p-647a0765.entry.js} +2 -2
  374. package/dist/native/p-68dc02be.entry.js +2 -0
  375. package/dist/native/p-68dc02be.entry.js.map +1 -0
  376. package/dist/native/p-6d427897.entry.js +2 -0
  377. package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
  378. package/dist/native/{p-1504e28b.entry.js → p-701b48a4.entry.js} +2 -2
  379. package/dist/native/p-7c9bf981.entry.js +2 -0
  380. package/dist/native/p-835abdb9.entry.js +2 -0
  381. package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
  382. package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
  383. package/dist/native/p-88f9fca5.entry.js +2 -0
  384. package/dist/native/p-88f9fca5.entry.js.map +1 -0
  385. package/dist/native/{p-d2c9247b.entry.js → p-8e423742.entry.js} +3 -3
  386. package/dist/native/{p-d2c9247b.entry.js.map → p-8e423742.entry.js.map} +1 -1
  387. package/dist/native/p-95184ea2.entry.js +2 -0
  388. package/dist/native/p-95184ea2.entry.js.map +1 -0
  389. package/dist/native/p-9613087c.entry.js +2 -0
  390. package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
  391. package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
  392. package/dist/native/p-a2f58133.entry.js +2 -0
  393. package/dist/native/p-a2f58133.entry.js.map +1 -0
  394. package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
  395. package/dist/native/p-acada158.entry.js +2 -0
  396. package/dist/native/p-acada158.entry.js.map +1 -0
  397. package/dist/native/{p-e2c99ce2.entry.js → p-b02c896a.entry.js} +2 -2
  398. package/dist/native/p-b06f0e61.entry.js +2 -0
  399. package/dist/native/p-b06f0e61.entry.js.map +1 -0
  400. package/dist/native/p-b4c15f25.entry.js +2 -0
  401. package/dist/native/p-b4c15f25.entry.js.map +1 -0
  402. package/dist/native/{p-74b129e9.entry.js → p-bcf41cd0.entry.js} +2 -2
  403. package/dist/native/p-ce97ce24.entry.js +2 -0
  404. package/dist/native/p-ce97ce24.entry.js.map +1 -0
  405. package/dist/native/p-d0db5e72.entry.js +2 -0
  406. package/dist/native/p-d0db5e72.entry.js.map +1 -0
  407. package/dist/native/p-d45ee8e5.entry.js +2 -0
  408. package/dist/native/{p-6d13a851.entry.js.map → p-d45ee8e5.entry.js.map} +1 -1
  409. package/dist/native/p-d7f444fb.entry.js +2 -0
  410. package/dist/native/p-d7f444fb.entry.js.map +1 -0
  411. package/dist/native/p-d878e90a.entry.js +2 -0
  412. package/dist/native/p-d878e90a.entry.js.map +1 -0
  413. package/dist/native/p-ddc41f1f.entry.js +2 -0
  414. package/dist/native/p-ddc41f1f.entry.js.map +1 -0
  415. package/dist/native/{p-c66565f8.entry.js → p-dfb6b65e.entry.js} +2 -2
  416. package/dist/native/p-f30e0be6.entry.js +2 -0
  417. package/dist/native/p-f30e0be6.entry.js.map +1 -0
  418. package/dist/native/p-f3c73492.entry.js +2 -0
  419. package/dist/native/{p-b32d0a5a.entry.js.map → p-f3c73492.entry.js.map} +1 -1
  420. package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
  421. package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
  422. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
  423. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
  424. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
  425. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
  426. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
  427. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
  428. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  429. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
  430. package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
  431. package/dist/types/components/nv-table/nv-table.d.ts +6 -87
  432. package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
  433. package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
  434. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
  435. package/dist/types/components.d.ts +3 -208
  436. package/dist/vscode-data.json +18 -41
  437. package/hydrate/index.js +800 -783
  438. package/hydrate/index.mjs +800 -783
  439. package/package.json +6 -10
  440. package/dist/cjs/dom.utils-4d43f69a.js +0 -170
  441. package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
  442. package/dist/cjs/index-c56424e5.js.map +0 -1
  443. package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
  444. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
  445. package/dist/collection/components/nv-table/nv-table.css +0 -35
  446. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
  447. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
  448. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
  449. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
  450. package/dist/components/nv-tablecolumn.d.ts +0 -11
  451. package/dist/components/nv-tablecolumn.js +0 -38
  452. package/dist/components/nv-tablecolumn.js.map +0 -1
  453. package/dist/components/p-00cbf2a1.js.map +0 -1
  454. package/dist/components/p-4fc01a78.js.map +0 -1
  455. package/dist/components/p-51876ca1.js.map +0 -1
  456. package/dist/components/p-5d14ba3f.js +0 -88
  457. package/dist/components/p-5d14ba3f.js.map +0 -1
  458. package/dist/components/p-95857e4f.js +0 -191
  459. package/dist/components/p-aff3ed68.js.map +0 -1
  460. package/dist/components/p-cb34aa4f.js +0 -167
  461. package/dist/components/p-cb34aa4f.js.map +0 -1
  462. package/dist/components/p-ee8944f3.js.map +0 -1
  463. package/dist/esm/dom.utils-ac71e0ef.js +0 -167
  464. package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
  465. package/dist/esm/index-a1936cd0.js.map +0 -1
  466. package/dist/esm/nv-tablecolumn.entry.js +0 -17
  467. package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
  468. package/dist/native/p-0a99c6fb.entry.js +0 -2
  469. package/dist/native/p-0a99c6fb.entry.js.map +0 -1
  470. package/dist/native/p-1ad1bff9.entry.js +0 -2
  471. package/dist/native/p-1ad1bff9.entry.js.map +0 -1
  472. package/dist/native/p-1c83f540.entry.js +0 -2
  473. package/dist/native/p-1c83f540.entry.js.map +0 -1
  474. package/dist/native/p-224b1a01.entry.js +0 -2
  475. package/dist/native/p-224b1a01.entry.js.map +0 -1
  476. package/dist/native/p-234cfa2e.entry.js +0 -2
  477. package/dist/native/p-2781637d.entry.js +0 -2
  478. package/dist/native/p-29df974e.entry.js +0 -2
  479. package/dist/native/p-29f68e07.entry.js +0 -2
  480. package/dist/native/p-45506c37.entry.js +0 -2
  481. package/dist/native/p-45506c37.entry.js.map +0 -1
  482. package/dist/native/p-48774d0c.entry.js +0 -13
  483. package/dist/native/p-48774d0c.entry.js.map +0 -1
  484. package/dist/native/p-4ec61dec.entry.js +0 -2
  485. package/dist/native/p-4ec61dec.entry.js.map +0 -1
  486. package/dist/native/p-5f0776cb.entry.js +0 -2
  487. package/dist/native/p-5f0776cb.entry.js.map +0 -1
  488. package/dist/native/p-6c7a9a21.entry.js +0 -2
  489. package/dist/native/p-6c7a9a21.entry.js.map +0 -1
  490. package/dist/native/p-6cb6679b.entry.js +0 -2
  491. package/dist/native/p-6d13a851.entry.js +0 -2
  492. package/dist/native/p-87784622.entry.js +0 -2
  493. package/dist/native/p-87784622.entry.js.map +0 -1
  494. package/dist/native/p-92931ab8.entry.js +0 -2
  495. package/dist/native/p-9a46baa9.entry.js +0 -2
  496. package/dist/native/p-9a46baa9.entry.js.map +0 -1
  497. package/dist/native/p-a34beedf.entry.js +0 -2
  498. package/dist/native/p-a34beedf.entry.js.map +0 -1
  499. package/dist/native/p-a69dbcef.entry.js +0 -2
  500. package/dist/native/p-a69dbcef.entry.js.map +0 -1
  501. package/dist/native/p-b32d0a5a.entry.js +0 -2
  502. package/dist/native/p-bc01787b.entry.js +0 -2
  503. package/dist/native/p-bc01787b.entry.js.map +0 -1
  504. package/dist/native/p-c7b7ffaf.entry.js +0 -2
  505. package/dist/native/p-cb34aa4f.js +0 -2
  506. package/dist/native/p-cb34aa4f.js.map +0 -1
  507. package/dist/native/p-cea942b9.entry.js +0 -2
  508. package/dist/native/p-cea942b9.entry.js.map +0 -1
  509. package/dist/native/p-d0a33e64.js.map +0 -1
  510. package/dist/native/p-d0ef1bbb.entry.js +0 -2
  511. package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
  512. package/dist/native/p-d882f417.entry.js.map +0 -1
  513. package/dist/native/p-dd023fd6.entry.js +0 -2
  514. package/dist/native/p-dd023fd6.entry.js.map +0 -1
  515. package/dist/native/p-e765a624.entry.js +0 -2
  516. package/dist/native/p-e765a624.entry.js.map +0 -1
  517. package/dist/native/p-f0cbfb3d.entry.js +0 -2
  518. package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
  519. package/dist/native/p-f5120223.entry.js +0 -2
  520. package/dist/native/p-fa177c39.entry.js +0 -2
  521. package/dist/native/p-fa177c39.entry.js.map +0 -1
  522. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
  523. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
  524. /package/dist/native/{p-5c697133.entry.js.map → p-112d096c.entry.js.map} +0 -0
  525. /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
  526. /package/dist/native/{p-08322093.entry.js.map → p-44a78545.entry.js.map} +0 -0
  527. /package/dist/native/{p-19090193.entry.js.map → p-647a0765.entry.js.map} +0 -0
  528. /package/dist/native/{p-1504e28b.entry.js.map → p-701b48a4.entry.js.map} +0 -0
  529. /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
  530. /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
  531. /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
  532. /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
  533. /package/dist/native/{p-e2c99ce2.entry.js.map → p-b02c896a.entry.js.map} +0 -0
  534. /package/dist/native/{p-74b129e9.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
  535. /package/dist/native/{p-c66565f8.entry.js.map → p-dfb6b65e.entry.js.map} +0 -0
  536. /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
@@ -12,6 +12,8 @@ import { v4 as uuidv4 } from "uuid";
12
12
  export class NvFieldmultiselect {
13
13
  constructor() {
14
14
  this.isBulkOperation = false;
15
+ // Add the flag to the class
16
+ this.preventBlurClose = false;
15
17
  /**
16
18
  * Sets the ID for the input element and the for attribute of the associated
17
19
  * label. If no ID is provided, a random one will be automatically generated
@@ -117,11 +119,6 @@ export class NvFieldmultiselect {
117
119
  * Controls the visibility of the select all section.
118
120
  */
119
121
  this.isSelectAllSectionVisible = true;
120
- // Add the flag to the class
121
- this.preventBlurClose = false;
122
- this.handleMouseDownPreventBlur = () => {
123
- this.preventBlurClose = true;
124
- };
125
122
  /**
126
123
  * Handle badge close for options mode.
127
124
  */
@@ -165,17 +162,16 @@ export class NvFieldmultiselect {
165
162
  if (this.isHandlingEscape) {
166
163
  return;
167
164
  }
168
- // Reset filter if needed, but preserve the filter text
169
- if (this.filterable) {
170
- this.resetFilter();
171
- }
165
+ // Filter reset is handled in handleOpenChanged; no need to repeat
172
166
  };
173
167
  /**
174
168
  * Clear the filter text
175
169
  */
176
170
  this.clearFilterText = () => {
177
- this.filterText = '';
178
- this.filterTextChanged.emit('');
171
+ if (this.filterText !== '') {
172
+ this.filterText = '';
173
+ this.filterTextChanged.emit('');
174
+ }
179
175
  this.resetFilter();
180
176
  this.hasFilterResults = true;
181
177
  };
@@ -189,11 +185,9 @@ export class NvFieldmultiselect {
189
185
  return; // Don't close the popover
190
186
  }
191
187
  if (!this.el.contains(document.activeElement)) {
192
- // Close the popover without affecting the divider
193
- this.open = false;
194
- // Clear filter text when focus is lost
188
+ this.open = false; // Close the popover on blur
195
189
  if (this.filterable) {
196
- this.clearFilterText();
190
+ this.clearFilterText(); // Clear filter text on blur
197
191
  }
198
192
  }
199
193
  }, 150);
@@ -306,17 +300,14 @@ export class NvFieldmultiselect {
306
300
  */
307
301
  this.handleInputBlurSlots = () => {
308
302
  setTimeout(() => {
309
- // Honor preventBlurClose to avoid closing when interacting inside the popover
310
303
  if (this.preventBlurClose) {
311
304
  this.preventBlurClose = false;
312
305
  return; // Don't close the popover
313
306
  }
314
307
  if (!this.el.contains(document.activeElement)) {
315
- // Close the popover without affecting the divider
316
- this.open = false;
317
- // Clear filter text when focus is lost
308
+ this.open = false; // Close the popover on blur
318
309
  if (this.filterable) {
319
- this.clearFilterText();
310
+ this.clearFilterText(); // Clear filter text on blur
320
311
  }
321
312
  }
322
313
  }, 150);
@@ -443,6 +434,9 @@ export class NvFieldmultiselect {
443
434
  const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
444
435
  this.toggleSelectAllSlots(shouldSelectAll);
445
436
  };
437
+ this.handleMouseDownPreventBlur = () => {
438
+ this.preventBlurClose = true;
439
+ };
446
440
  //#endregion METHODS
447
441
  /****************************************************************************/
448
442
  //#region RENDER
@@ -451,7 +445,8 @@ export class NvFieldmultiselect {
451
445
  * @returns {any} The JSX for options mode
452
446
  */
453
447
  this.renderOptionsMode = () => {
454
- return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect" }, h("slot", { name: "leading-input" }), this.value.length > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
448
+ var _a, _b, _c, _d;
449
+ return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect" }, h("slot", { name: "leading-input" }), (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (((_b = this.value) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0, label: `${((_c = this.value) === null || _c === void 0 ? void 0 : _c.length) || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${((_d = this.value) === null || _d === void 0 ? void 0 : _d.length) || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
455
450
  position: 'absolute',
456
451
  opacity: '0',
457
452
  width: '0',
@@ -460,14 +455,15 @@ export class NvFieldmultiselect {
460
455
  }, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusOptions }), h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, "aria-label": this.label, "aria-controls": `${this.inputId}-listbox`, "data-scope": "focusable", role: "button" }, h("span", null, this.placeholder)))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (h("nv-iconbutton", { "data-scope": "clear-filter", name: "x", size: "md", emphasis: "lower", "aria-label": "Clear filter text", tabindex: "-1", title: "Clear filter text", onMouseDown: this.handleMouseDownPreventBlur, onClick: this.clearFilterText })), h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: this.handleMouseDownPreventBlur, onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {}, onMouseDown: this.handleMouseDownPreventBlur }, this.shouldShowToggleAllOptionsButton() && (h("div", { class: "select-all-container" }, h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateOptions() === 'checked', indeterminate: this.getSelectAllCheckboxStateOptions() ===
461
456
  'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
462
457
  ? this.selectAllLabel
463
- : this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxOptionsClick }))))), h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { role: "option", label: option.label, description: option.description, value: option.value, checked: this.value.includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
458
+ : this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxOptionsClick }))))), h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { role: "option", label: option.label, description: option.description, value: option.value, checked: (this.value || []).includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
464
459
  };
465
460
  /**
466
461
  * Renders the component in slots mode
467
462
  * @returns {any} The JSX for slots mode
468
463
  */
469
464
  this.renderSlotsMode = () => {
470
- return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, h("slot", { name: "leading-input" }), this.value.length > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
465
+ var _a, _b, _c, _d;
466
+ return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, h("slot", { name: "leading-input" }), (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (((_b = this.value) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0, label: `${((_c = this.value) === null || _c === void 0 ? void 0 : _c.length) || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${((_d = this.value) === null || _d === void 0 ? void 0 : _d.length) || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
471
467
  position: 'absolute',
472
468
  opacity: '0',
473
469
  width: '0',
@@ -487,7 +483,7 @@ export class NvFieldmultiselect {
487
483
  return;
488
484
  // If the parent has set a value prop, use it. Otherwise, derive from checked options.
489
485
  // (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
490
- if (this.value === undefined || this.value.length === 0) {
486
+ if (!this.value || this.value.length === 0) {
491
487
  this.value = newValue
492
488
  .filter(option => option.checked)
493
489
  .map(option => option.value);
@@ -495,7 +491,7 @@ export class NvFieldmultiselect {
495
491
  else {
496
492
  // If value is set, ensure checked states in options match value
497
493
  newValue.forEach(option => {
498
- option.checked = this.value.includes(option.value);
494
+ option.checked = (this.value || []).includes(option.value);
499
495
  });
500
496
  }
501
497
  this.reorderOptionsContent();
@@ -512,10 +508,24 @@ export class NvFieldmultiselect {
512
508
  // Also, update options checked state if options exist
513
509
  if (this.options) {
514
510
  this.options.forEach(option => {
515
- option.checked = this.value.includes(option.value);
511
+ option.checked = (this.value || []).includes(option.value);
516
512
  });
517
513
  }
518
514
  }
515
+ handleOpenChange(newOpen) {
516
+ // React to external changes, e.g., reorder or filter
517
+ if (newOpen) {
518
+ if (this.options) {
519
+ this.reorderOptionsContent();
520
+ }
521
+ else {
522
+ this.reorderSlotContent();
523
+ }
524
+ if (this.filterText) {
525
+ this.filterItems();
526
+ }
527
+ }
528
+ }
519
529
  //#endregion WATCHERS
520
530
  /****************************************************************************/
521
531
  //#region LISTENERS
@@ -526,23 +536,33 @@ export class NvFieldmultiselect {
526
536
  handleOpenChanged(event) {
527
537
  // Stop propagation to prevent the event from affecting parent components like dialogs
528
538
  event.stopPropagation();
529
- // Update `open` based on the popover state
530
- this.open = event.detail;
531
- if (this.open) {
532
- // Filter items only if there is filter text
533
- if (this.filterText) {
534
- this.filterItems();
539
+ // Only update if the event comes from our popover
540
+ if (event.target === this.popoverElement) {
541
+ // Only update if open state differs to avoid redundant actions
542
+ if (this.open !== event.detail) {
543
+ this.open = event.detail;
544
+ if (this.open) {
545
+ // Filter items only if there is filter text
546
+ if (this.filterText) {
547
+ this.filterItems();
548
+ }
549
+ }
550
+ else {
551
+ // Clear filter text on close if filterable
552
+ if (this.filterable) {
553
+ this.clearFilterText();
554
+ }
555
+ this.handlePopoverClose();
556
+ }
557
+ // Reorder content as needed
558
+ if (this.options) {
559
+ this.reorderOptionsContent();
560
+ }
561
+ else {
562
+ this.reorderSlotContent();
563
+ }
535
564
  }
536
565
  }
537
- else {
538
- this.handlePopoverClose();
539
- }
540
- if (this.options) {
541
- this.reorderOptionsContent();
542
- }
543
- else {
544
- this.reorderSlotContent();
545
- }
546
566
  }
547
567
  /**
548
568
  * Listen for the `itemChecked` event emitted by child items.
@@ -555,7 +575,7 @@ export class NvFieldmultiselect {
555
575
  }
556
576
  const { value, checked } = event.detail;
557
577
  if (value !== undefined && value !== null) {
558
- const newValue = [...this.value];
578
+ const newValue = [...(this.value || [])];
559
579
  const valueIndex = newValue.indexOf(value);
560
580
  let hasChanged = false;
561
581
  if (checked && valueIndex === -1) {
@@ -592,6 +612,86 @@ export class NvFieldmultiselect {
592
612
  });
593
613
  }
594
614
  }
615
+ /**
616
+ * Handle keyboard events & arrow key navigation.
617
+ * If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
618
+ * If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
619
+ * @param {KeyboardEvent} event - The keyboard event.
620
+ */
621
+ async handleKeyDown(event) {
622
+ if (!this.open) {
623
+ if (event.key === 'ArrowDown') {
624
+ this.open = true;
625
+ // Focus on the first item if the list is not filterable
626
+ if (!this.filterable) {
627
+ requestAnimationFrame(() => {
628
+ this.focusFirstItem();
629
+ });
630
+ }
631
+ event.preventDefault();
632
+ return;
633
+ }
634
+ return;
635
+ }
636
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));
637
+ if (items.length === 0) {
638
+ console.warn('No visible items found to navigate');
639
+ return;
640
+ }
641
+ let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
642
+ if (event.key === 'ArrowDown') {
643
+ event.preventDefault();
644
+ currentIndex =
645
+ currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
646
+ this.updateHighlightedItem(items, currentIndex);
647
+ }
648
+ else if (event.key === 'ArrowUp') {
649
+ event.preventDefault();
650
+ currentIndex =
651
+ currentIndex === -1
652
+ ? items.length - 1
653
+ : (currentIndex - 1 + items.length) % items.length;
654
+ this.updateHighlightedItem(items, currentIndex);
655
+ }
656
+ else if (event.key === 'Enter' && currentIndex >= 0) {
657
+ event.preventDefault();
658
+ const selectedItem = items[currentIndex];
659
+ // Toggle the checked state
660
+ const isCurrentlyChecked = selectedItem.hasAttribute('checked');
661
+ selectedItem.checked = !isCurrentlyChecked;
662
+ // Trigger a click event to ensure proper event handling
663
+ selectedItem.dispatchEvent(new MouseEvent('click', {
664
+ view: window,
665
+ bubbles: true,
666
+ cancelable: true,
667
+ }));
668
+ }
669
+ else if (event.key === 'Escape') {
670
+ event.preventDefault();
671
+ event.stopPropagation(); // Prevent the event from propagating to the popover
672
+ // Do the reorder and wait a bit before closing
673
+ const handleEscape = async () => {
674
+ this.isHandlingEscape = true; // Disable the hide listener
675
+ if (this.options) {
676
+ this.reorderOptionsContent();
677
+ }
678
+ else {
679
+ this.reorderSlotContent();
680
+ }
681
+ // Wait for the reorder to be applied
682
+ await new Promise(resolve => setTimeout(resolve, 100));
683
+ // Reactivate the hide listener after a short delay
684
+ setTimeout(() => {
685
+ this.isHandlingEscape = false;
686
+ this.open = false;
687
+ }, 150);
688
+ if (this.inputElement) {
689
+ this.inputElement.blur();
690
+ }
691
+ };
692
+ await handleEscape();
693
+ }
694
+ }
595
695
  //#endregion LISTENERS
596
696
  /****************************************************************************/
597
697
  //#region LIFECYCLE
@@ -688,8 +788,8 @@ export class NvFieldmultiselect {
688
788
  if (emptyMessage)
689
789
  emptyMessage.remove();
690
790
  // Reorder with divider if needed
691
- const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
692
- const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
791
+ const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
792
+ const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
693
793
  if (selectedItems.length > 0) {
694
794
  this.manageDivider(ul, selectedItems, unselectedItems);
695
795
  }
@@ -774,8 +874,8 @@ export class NvFieldmultiselect {
774
874
  return;
775
875
  }
776
876
  // Separate checked vs unchecked
777
- const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
778
- const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
877
+ const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
878
+ const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
779
879
  // Reinsert CHECKED items FIRST
780
880
  // appendChild() moves the element without recreating it
781
881
  // this is not trigger a re-rendering of the component in the platforms
@@ -801,8 +901,8 @@ export class NvFieldmultiselect {
801
901
  if (!ul)
802
902
  return;
803
903
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
804
- const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
805
- const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
904
+ const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
905
+ const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
806
906
  // Reorder the elements
807
907
  selectedItems.forEach(item => ul.appendChild(item));
808
908
  unselectedItems.forEach(item => ul.appendChild(item));
@@ -838,8 +938,8 @@ export class NvFieldmultiselect {
838
938
  }
839
939
  // Reorder with divider
840
940
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
841
- const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
842
- const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
941
+ const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
942
+ const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
843
943
  this.manageDivider(ul, selectedItems, unselectedItems);
844
944
  return;
845
945
  }
@@ -860,8 +960,8 @@ export class NvFieldmultiselect {
860
960
  });
861
961
  // Manage the divider with the visible items
862
962
  const visibleItems = items.filter(item => item.style.display !== 'none');
863
- const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
864
- const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
963
+ const visibleSelected = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
964
+ const visibleUnselected = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
865
965
  this.manageDivider(ul, visibleSelected, visibleUnselected);
866
966
  }
867
967
  else {
@@ -901,31 +1001,39 @@ export class NvFieldmultiselect {
901
1001
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
902
1002
  // Reset items if the filter text is empty
903
1003
  if (!this.filterText.trim()) {
904
- // Remove the empty message if it exists
905
1004
  this.removeEmptyMessageOption(ul);
906
- items.forEach(item => (item.style.display = ''));
907
- this.reorderOptionsContent(); // Reorder after reset
908
- this.hasFilterResults = true; // Reset filter means we have results
1005
+ items.forEach(item => {
1006
+ item.style.display = '';
1007
+ item.removeAttribute('aria-hidden'); // Ensure accessibility
1008
+ });
1009
+ this.reorderOptionsContent();
1010
+ this.hasFilterResults = true;
909
1011
  return;
910
1012
  }
911
1013
  // Filter the items
912
1014
  items.forEach(item => {
913
- const label = item.getAttribute('label') || '';
914
- const value = item.getAttribute('value') || '';
915
- const matchesFilter = this.normalizeText(label).includes(normalizedFilter) ||
916
- this.normalizeText(value).includes(normalizedFilter);
917
- item.style.display = matchesFilter ? '' : 'none';
918
- if (matchesFilter)
919
- hasVisibleItems = true;
1015
+ const option = this.options.find(opt => opt.value === item.getAttribute('value'));
1016
+ if (option && !option.isDivider) {
1017
+ const matchesFilter = this.normalizeText(option.label).includes(normalizedFilter) ||
1018
+ this.normalizeText(option.value).includes(normalizedFilter);
1019
+ item.style.display = matchesFilter ? '' : 'none';
1020
+ item.setAttribute('aria-hidden', matchesFilter ? 'false' : 'true'); // Update accessibility
1021
+ if (matchesFilter)
1022
+ hasVisibleItems = true;
1023
+ }
1024
+ else {
1025
+ item.style.display = 'none'; // Hide dividers during filtering
1026
+ item.setAttribute('aria-hidden', 'true');
1027
+ }
920
1028
  });
921
1029
  // Update the filter results state
922
1030
  this.hasFilterResults = hasVisibleItems;
923
1031
  // Manage the divider with the visible items
924
1032
  const visibleItems = items.filter(item => item.style.display !== 'none');
925
- const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
926
- const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
1033
+ const visibleSelected = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
1034
+ const visibleUnselected = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
927
1035
  this.manageDivider(ul, visibleSelected, visibleUnselected);
928
- // Add or remove the empty message based on the case
1036
+ // Add or remove the empty message
929
1037
  if (!hasVisibleItems) {
930
1038
  this.addEmptyMessageOption(ul);
931
1039
  }
@@ -974,8 +1082,8 @@ export class NvFieldmultiselect {
974
1082
  this.hasFilterResults = hasVisibleItems;
975
1083
  // Get visible items after filtering
976
1084
  const visibleItems = items.filter(item => item.style.display !== 'none');
977
- const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
978
- this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || '')));
1085
+ const visibleSelectedItems = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
1086
+ this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || '')));
979
1087
  // Add empty message if no items match the filter
980
1088
  if (!hasVisibleItems) {
981
1089
  const emptyMessage = document.createElement('li');
@@ -1016,86 +1124,6 @@ export class NvFieldmultiselect {
1016
1124
  }
1017
1125
  this.open = false;
1018
1126
  }
1019
- /**
1020
- * Handle keyboard events & arrow key navigation.
1021
- * If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
1022
- * If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
1023
- * @param {KeyboardEvent} event - The keyboard event.
1024
- */
1025
- async handleKeyDown(event) {
1026
- if (!this.open) {
1027
- if (event.key === 'ArrowDown') {
1028
- this.open = true;
1029
- // Focus on the first item if the list is not filterable
1030
- if (!this.filterable) {
1031
- requestAnimationFrame(() => {
1032
- this.focusFirstItem();
1033
- });
1034
- }
1035
- event.preventDefault();
1036
- return;
1037
- }
1038
- return;
1039
- }
1040
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));
1041
- if (items.length === 0) {
1042
- console.warn('No visible items found to navigate');
1043
- return;
1044
- }
1045
- let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
1046
- if (event.key === 'ArrowDown') {
1047
- event.preventDefault();
1048
- currentIndex =
1049
- currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
1050
- this.updateHighlightedItem(items, currentIndex);
1051
- }
1052
- else if (event.key === 'ArrowUp') {
1053
- event.preventDefault();
1054
- currentIndex =
1055
- currentIndex === -1
1056
- ? items.length - 1
1057
- : (currentIndex - 1 + items.length) % items.length;
1058
- this.updateHighlightedItem(items, currentIndex);
1059
- }
1060
- else if (event.key === 'Enter' && currentIndex >= 0) {
1061
- event.preventDefault();
1062
- const selectedItem = items[currentIndex];
1063
- // Toggle the checked state
1064
- const isCurrentlyChecked = selectedItem.hasAttribute('checked');
1065
- selectedItem.checked = !isCurrentlyChecked;
1066
- // Trigger a click event to ensure proper event handling
1067
- selectedItem.dispatchEvent(new MouseEvent('click', {
1068
- view: window,
1069
- bubbles: true,
1070
- cancelable: true,
1071
- }));
1072
- }
1073
- else if (event.key === 'Escape') {
1074
- event.preventDefault();
1075
- event.stopPropagation(); // Prevent the event from propagating to the popover
1076
- // Do the reorder and wait a bit before closing
1077
- const handleEscape = async () => {
1078
- this.isHandlingEscape = true; // Disable the hide listener
1079
- if (this.options) {
1080
- this.reorderOptionsContent();
1081
- }
1082
- else {
1083
- this.reorderSlotContent();
1084
- }
1085
- // Wait for the reorder to be applied
1086
- await new Promise(resolve => setTimeout(resolve, 100));
1087
- // Reactivate the hide listener after a short delay
1088
- setTimeout(() => {
1089
- this.isHandlingEscape = false;
1090
- this.open = false;
1091
- }, 150);
1092
- if (this.inputElement) {
1093
- this.inputElement.blur();
1094
- }
1095
- };
1096
- await handleEscape();
1097
- }
1098
- }
1099
1127
  /**
1100
1128
  * Updates the highlighted item in the dropdown list.
1101
1129
  *
@@ -1185,7 +1213,7 @@ export class NvFieldmultiselect {
1185
1213
  items.forEach(item => {
1186
1214
  // Get the effective value: use explicit value if present, otherwise use label
1187
1215
  const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
1188
- const shouldBeChecked = this.value.includes(itemValue);
1216
+ const shouldBeChecked = (this.value || []).includes(itemValue);
1189
1217
  // Only update if the checked state differs to avoid triggering unnecessary events
1190
1218
  if (item.checked !== shouldBeChecked) {
1191
1219
  // Set attribute and property, but avoid triggering itemChecked during bulk
@@ -1225,8 +1253,10 @@ export class NvFieldmultiselect {
1225
1253
  getVisibleEnabledOptionItems() {
1226
1254
  const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
1227
1255
  const visibleItems = allItems.filter(item => {
1228
- const isHidden = item.style.display === 'none';
1229
- const isDisabled = item.hasAttribute('disabled');
1256
+ const isHidden = item.style.display === 'none' ||
1257
+ item.getAttribute('aria-hidden') === 'true';
1258
+ const isDisabled = item.hasAttribute('disabled') ||
1259
+ item.getAttribute('disabled') === 'true';
1230
1260
  return !isHidden && !isDisabled;
1231
1261
  });
1232
1262
  return visibleItems
@@ -1253,7 +1283,7 @@ export class NvFieldmultiselect {
1253
1283
  const visibleOptionValues = this.getVisibleEnabledOptionItems();
1254
1284
  if (visibleOptionValues.length === 0)
1255
1285
  return 'unchecked';
1256
- const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
1286
+ const selectedVisibleOptions = visibleOptionValues.filter(value => (this.value || []).includes(value));
1257
1287
  if (selectedVisibleOptions.length === 0)
1258
1288
  return 'unchecked';
1259
1289
  if (selectedVisibleOptions.length === visibleOptionValues.length)
@@ -1273,7 +1303,7 @@ export class NvFieldmultiselect {
1273
1303
  return 'unchecked';
1274
1304
  const selectedItems = items.filter(item => {
1275
1305
  const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
1276
- return itemValue !== '' && this.value.includes(itemValue);
1306
+ return itemValue !== '' && (this.value || []).includes(itemValue);
1277
1307
  });
1278
1308
  if (selectedItems.length === 0)
1279
1309
  return 'unchecked';
@@ -2021,6 +2051,9 @@ export class NvFieldmultiselect {
2021
2051
  }, {
2022
2052
  "propName": "value",
2023
2053
  "methodName": "watchValueHandler"
2054
+ }, {
2055
+ "propName": "open",
2056
+ "methodName": "handleOpenChange"
2024
2057
  }];
2025
2058
  }
2026
2059
  static get listeners() {