@nova-design-system/nova-webcomponents 3.4.0 → 3.6.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 (459) hide show
  1. package/dist/cjs/{timeline.animation-dbb9c5ea.js → collapse.animation-a129dc3f.js} +5 -26
  2. package/dist/cjs/collapse.animation-a129dc3f.js.map +1 -0
  3. package/dist/cjs/fade.animation-644b5c4d.js +70 -0
  4. package/dist/cjs/fade.animation-644b5c4d.js.map +1 -0
  5. package/dist/cjs/{grow.animation-a1f0bc22.js → grow.animation-6d003803.js} +5 -5
  6. package/dist/cjs/{grow.animation-a1f0bc22.js.map → grow.animation-6d003803.js.map} +1 -1
  7. package/dist/cjs/index-c56424e5.js +8 -0
  8. package/dist/cjs/index.cjs.js +9 -4
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/native.cjs.js +1 -1
  12. package/dist/cjs/nv-accordion-item.cjs.entry.js +181 -0
  13. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -0
  14. package/dist/cjs/nv-accordion.cjs.entry.js +194 -0
  15. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -0
  16. package/dist/cjs/nv-alert.cjs.entry.js +6 -4
  17. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +9 -7
  20. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-calendar.cjs.entry.js +59 -50
  25. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-datagrid.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  29. package/dist/cjs/nv-dialog.cjs.entry.js +19 -6
  30. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +100 -35
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +6 -6
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  38. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  39. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +85 -100
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  42. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  43. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  44. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  45. package/dist/cjs/nv-fieldslider.cjs.entry.js +53 -9
  46. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  48. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-fieldtime.cjs.entry.js +9 -9
  50. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  54. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  55. package/dist/cjs/nv-popover.cjs.entry.js +4 -3
  56. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  58. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  59. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  60. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -2
  62. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  63. package/dist/cjs/{fade.animation-0d33d198.js → stylefire.es-717e022a.js} +1 -65
  64. package/dist/cjs/stylefire.es-717e022a.js.map +1 -0
  65. package/dist/cjs/timeline.animation-155e8839.js +25 -0
  66. package/dist/cjs/timeline.animation-155e8839.js.map +1 -0
  67. package/dist/collection/collection-manifest.json +2 -0
  68. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +146 -0
  69. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -0
  70. package/dist/collection/components/nv-accordion/nv-accordion.js +342 -0
  71. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -0
  72. package/dist/collection/components/nv-accordion/styles/nv-accordion.css +15 -0
  73. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js +6 -0
  74. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js.map +1 -0
  75. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +353 -0
  76. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -0
  77. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +66 -0
  78. package/dist/collection/components/nv-alert/nv-alert.js +1 -1
  79. package/dist/collection/components/nv-avatar/nv-avatar.js +1 -1
  80. package/dist/collection/components/nv-badge/nv-badge.js +2 -2
  81. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  82. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  83. package/dist/collection/components/nv-button/nv-button.js +1 -1
  84. package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
  85. package/dist/collection/components/nv-calendar/nv-calendar.js +55 -27
  86. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  87. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +0 -20
  88. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  89. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -2
  90. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  91. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +5 -31
  92. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
  93. package/dist/collection/components/nv-col/nv-col.js +1 -1
  94. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  95. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  96. package/dist/collection/components/nv-dialog/nv-dialog.css +1 -1
  97. package/dist/collection/components/nv-dialog/nv-dialog.js +38 -5
  98. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  99. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  100. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  101. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js +102 -34
  103. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  104. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +2 -0
  105. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +5 -5
  106. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  107. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +18 -2
  108. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  109. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  110. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  111. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +36 -26
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +117 -115
  114. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  116. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  117. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  118. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  119. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  120. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -1
  121. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +45 -1
  122. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +1 -1
  123. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +4 -4
  124. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +1 -1
  125. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +3 -3
  126. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +1 -1
  127. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +42 -1
  128. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +1 -1
  129. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  130. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  131. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  132. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  133. package/dist/collection/components/nv-icon/nv-icons.js +3 -0
  134. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  135. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  136. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  137. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  138. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  139. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  140. package/dist/collection/components/nv-row/nv-row.js +1 -1
  141. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  142. package/dist/collection/components/nv-table/nv-table.js +2 -2
  143. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  144. package/dist/collection/components/nv-tooltip/nv-tooltip.js +21 -3
  145. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  146. package/dist/components/index.js +7 -3
  147. package/dist/components/index.js.map +1 -1
  148. package/dist/components/nv-accordion-item.d.ts +11 -0
  149. package/dist/components/nv-accordion-item.js +8 -0
  150. package/dist/components/nv-accordion-item.js.map +1 -0
  151. package/dist/components/nv-accordion.d.ts +11 -0
  152. package/dist/components/nv-accordion.js +242 -0
  153. package/dist/components/nv-accordion.js.map +1 -0
  154. package/dist/components/nv-alert.js +6 -4
  155. package/dist/components/nv-alert.js.map +1 -1
  156. package/dist/components/nv-avatar.js +2 -2
  157. package/dist/components/nv-badge.js +1 -1
  158. package/dist/components/nv-breadcrumb.js +3 -3
  159. package/dist/components/nv-breadcrumbs.js +1 -1
  160. package/dist/components/nv-button.js +1 -1
  161. package/dist/components/nv-calendar.js +1 -1
  162. package/dist/components/nv-col.js +1 -1
  163. package/dist/components/nv-datagrid.js +4 -4
  164. package/dist/components/nv-datagridcolumn.js +1 -1
  165. package/dist/components/nv-dialog.js +25 -11
  166. package/dist/components/nv-dialog.js.map +1 -1
  167. package/dist/components/nv-dialogfooter.js +1 -1
  168. package/dist/components/nv-dialogheader.js +1 -1
  169. package/dist/components/nv-fieldcheckbox.js +1 -1
  170. package/dist/components/nv-fielddate.js +107 -41
  171. package/dist/components/nv-fielddate.js.map +1 -1
  172. package/dist/components/nv-fielddaterange.js +12 -12
  173. package/dist/components/nv-fielddaterange.js.map +1 -1
  174. package/dist/components/nv-fielddropdown.js +8 -8
  175. package/dist/components/nv-fielddropdownitem.js +1 -1
  176. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  177. package/dist/components/nv-fieldmultiselect.js +94 -110
  178. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  179. package/dist/components/nv-fieldnumber.js +1 -1
  180. package/dist/components/nv-fieldpassword.js +6 -6
  181. package/dist/components/nv-fieldradio.js +3 -3
  182. package/dist/components/nv-fieldselect.js +8 -8
  183. package/dist/components/nv-fieldslider.js +57 -13
  184. package/dist/components/nv-fieldslider.js.map +1 -1
  185. package/dist/components/nv-fieldtext.js +1 -1
  186. package/dist/components/nv-fieldtextarea.js +3 -3
  187. package/dist/components/nv-fieldtime.js +13 -13
  188. package/dist/components/nv-icon.js +1 -1
  189. package/dist/components/nv-iconbutton.js +1 -1
  190. package/dist/components/nv-loader.js +1 -1
  191. package/dist/components/nv-menu.js +4 -4
  192. package/dist/components/nv-menuitem.js +1 -1
  193. package/dist/components/nv-popover.js +1 -1
  194. package/dist/components/nv-row.js +1 -1
  195. package/dist/components/nv-stack.js +1 -1
  196. package/dist/components/nv-table.js +2 -2
  197. package/dist/components/nv-toggle.js +2 -2
  198. package/dist/components/nv-tooltip.js +1 -1
  199. package/dist/components/{p-1daca48a.js → p-09cdd71f.js} +2 -65
  200. package/dist/components/p-09cdd71f.js.map +1 -0
  201. package/dist/components/p-15aeab4d.js +23 -0
  202. package/dist/components/p-15aeab4d.js.map +1 -0
  203. package/dist/components/{p-c07c32d2.js → p-190c8f60.js} +3 -3
  204. package/dist/components/{p-c07c32d2.js.map → p-190c8f60.js.map} +1 -1
  205. package/dist/components/p-1cbacdba.js +68 -0
  206. package/dist/components/p-1cbacdba.js.map +1 -0
  207. package/dist/components/p-230ad6c5.js +223 -0
  208. package/dist/components/p-230ad6c5.js.map +1 -0
  209. package/dist/components/{p-a189d074.js → p-316ae8e3.js} +4 -4
  210. package/dist/components/{p-a189d074.js.map → p-316ae8e3.js.map} +1 -1
  211. package/dist/components/{p-953d8b4d.js → p-4069966e.js} +8 -6
  212. package/dist/components/p-4069966e.js.map +1 -0
  213. package/dist/components/{p-f7c7a406.js → p-436a0f99.js} +6 -5
  214. package/dist/components/p-436a0f99.js.map +1 -0
  215. package/dist/components/{p-dec6fc68.js → p-4864a690.js} +2 -2
  216. package/dist/components/{p-dec6fc68.js.map → p-4864a690.js.map} +1 -1
  217. package/dist/components/{p-a29a9396.js → p-5e89eb9d.js} +7 -7
  218. package/dist/components/{p-a29a9396.js.map → p-5e89eb9d.js.map} +1 -1
  219. package/dist/components/{p-131e5140.js → p-618ae85a.js} +5 -4
  220. package/dist/components/p-618ae85a.js.map +1 -0
  221. package/dist/components/{p-df465ef2.js → p-79b38dfb.js} +3 -3
  222. package/dist/components/{p-df465ef2.js.map → p-79b38dfb.js.map} +1 -1
  223. package/dist/components/{p-a0d7e0cd.js → p-840858ed.js} +60 -51
  224. package/dist/components/p-840858ed.js.map +1 -0
  225. package/dist/components/{p-dcaf9010.js → p-8a5b0f74.js} +3 -3
  226. package/dist/components/{p-dcaf9010.js.map → p-8a5b0f74.js.map} +1 -1
  227. package/dist/components/{p-c1765831.js → p-8d45dbfe.js} +2 -2
  228. package/dist/components/{p-c1765831.js.map → p-8d45dbfe.js.map} +1 -1
  229. package/dist/components/{p-42301d8f.js → p-9a263d0e.js} +3 -23
  230. package/dist/components/p-9a263d0e.js.map +1 -0
  231. package/dist/components/{p-9f1e8ef3.js → p-9cff2fd1.js} +2 -2
  232. package/dist/components/{p-9f1e8ef3.js.map → p-9cff2fd1.js.map} +1 -1
  233. package/dist/components/{p-9e6e26cb.js → p-9ed7a440.js} +5 -5
  234. package/dist/components/{p-9e6e26cb.js.map → p-9ed7a440.js.map} +1 -1
  235. package/dist/components/{p-3f567fde.js → p-ac76a11c.js} +5 -5
  236. package/dist/components/{p-3f567fde.js.map → p-ac76a11c.js.map} +1 -1
  237. package/dist/components/{p-6277f746.js → p-ca130ad2.js} +2 -2
  238. package/dist/components/{p-6277f746.js.map → p-ca130ad2.js.map} +1 -1
  239. package/dist/components/{p-a1438b39.js → p-d2b4441a.js} +3 -3
  240. package/dist/components/{p-a1438b39.js.map → p-d2b4441a.js.map} +1 -1
  241. package/dist/components/p-f1bbb9e8.js +88 -0
  242. package/dist/components/p-f1bbb9e8.js.map +1 -0
  243. package/dist/components/{p-3f58525b.js → p-f266b533.js} +5 -5
  244. package/dist/components/{p-3f58525b.js.map → p-f266b533.js.map} +1 -1
  245. package/dist/esm/{timeline.animation-1b88f052.js → collapse.animation-16e3af45.js} +3 -23
  246. package/dist/esm/collapse.animation-16e3af45.js.map +1 -0
  247. package/dist/esm/fade.animation-71e8e34c.js +68 -0
  248. package/dist/esm/fade.animation-71e8e34c.js.map +1 -0
  249. package/dist/esm/{grow.animation-cac164da.js → grow.animation-f7b26024.js} +2 -2
  250. package/dist/esm/{grow.animation-cac164da.js.map → grow.animation-f7b26024.js.map} +1 -1
  251. package/dist/esm/index-a1936cd0.js +8 -0
  252. package/dist/esm/index.js +8 -3
  253. package/dist/esm/index.js.map +1 -1
  254. package/dist/esm/loader.js +1 -1
  255. package/dist/esm/native.js +1 -1
  256. package/dist/esm/nv-accordion-item.entry.js +177 -0
  257. package/dist/esm/nv-accordion-item.entry.js.map +1 -0
  258. package/dist/esm/nv-accordion.entry.js +190 -0
  259. package/dist/esm/nv-accordion.entry.js.map +1 -0
  260. package/dist/esm/nv-alert.entry.js +5 -3
  261. package/dist/esm/nv-alert.entry.js.map +1 -1
  262. package/dist/esm/nv-avatar.entry.js +1 -1
  263. package/dist/esm/nv-badge_2.entry.js +7 -5
  264. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  265. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  266. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  267. package/dist/esm/nv-button.entry.js +1 -1
  268. package/dist/esm/nv-calendar.entry.js +59 -50
  269. package/dist/esm/nv-calendar.entry.js.map +1 -1
  270. package/dist/esm/nv-col.entry.js +1 -1
  271. package/dist/esm/nv-datagrid.entry.js +2 -2
  272. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  273. package/dist/esm/nv-dialog.entry.js +19 -6
  274. package/dist/esm/nv-dialog.entry.js.map +1 -1
  275. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  276. package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
  277. package/dist/esm/nv-fielddate.entry.js +100 -35
  278. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  279. package/dist/esm/nv-fielddaterange.entry.js +6 -6
  280. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  281. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  282. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  283. package/dist/esm/nv-fieldmultiselect.entry.js +85 -100
  284. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  285. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  286. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  287. package/dist/esm/nv-fieldradio.entry.js +3 -3
  288. package/dist/esm/nv-fieldselect.entry.js +5 -5
  289. package/dist/esm/nv-fieldslider.entry.js +53 -9
  290. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  291. package/dist/esm/nv-fieldtext.entry.js +3 -3
  292. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  293. package/dist/esm/nv-fieldtime.entry.js +9 -9
  294. package/dist/esm/nv-icon.entry.js +2 -2
  295. package/dist/esm/nv-icon.entry.js.map +1 -1
  296. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  297. package/dist/esm/nv-menu.entry.js +1 -1
  298. package/dist/esm/nv-menuitem.entry.js +1 -1
  299. package/dist/esm/nv-popover.entry.js +4 -3
  300. package/dist/esm/nv-popover.entry.js.map +1 -1
  301. package/dist/esm/nv-row.entry.js +1 -1
  302. package/dist/esm/nv-stack.entry.js +1 -1
  303. package/dist/esm/nv-table.entry.js +2 -2
  304. package/dist/esm/nv-toggle.entry.js +2 -2
  305. package/dist/esm/nv-tooltip.entry.js +4 -3
  306. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  307. package/dist/esm/{fade.animation-2a077983.js → stylefire.es-74da334a.js} +2 -65
  308. package/dist/esm/stylefire.es-74da334a.js.map +1 -0
  309. package/dist/esm/timeline.animation-adf35ecb.js +23 -0
  310. package/dist/esm/timeline.animation-adf35ecb.js.map +1 -0
  311. package/dist/native/index.esm.js +1 -1
  312. package/dist/native/index.esm.js.map +1 -1
  313. package/dist/native/native.css +1 -1
  314. package/dist/native/native.esm.js +1 -1
  315. package/dist/native/native.esm.js.map +1 -1
  316. package/dist/native/{p-a0505695.entry.js → p-08452012.entry.js} +2 -2
  317. package/dist/native/p-09cdd71f.js +16 -0
  318. package/dist/native/p-09cdd71f.js.map +1 -0
  319. package/dist/native/p-0ac03708.entry.js +2 -0
  320. package/dist/native/p-0ac03708.entry.js.map +1 -0
  321. package/dist/native/p-0ada0382.entry.js +2 -0
  322. package/dist/native/p-0ada0382.entry.js.map +1 -0
  323. package/dist/native/p-1235c007.entry.js +2 -0
  324. package/dist/native/p-12963ae4.entry.js +2 -0
  325. package/dist/native/p-12963ae4.entry.js.map +1 -0
  326. package/dist/native/p-15aeab4d.js +2 -0
  327. package/dist/native/p-15aeab4d.js.map +1 -0
  328. package/dist/native/{p-b5b9190a.entry.js → p-18831490.entry.js} +2 -2
  329. package/dist/native/{p-1d98477d.entry.js → p-1ad1bff9.entry.js} +2 -2
  330. package/dist/native/p-1cbacdba.js +2 -0
  331. package/dist/native/p-1cbacdba.js.map +1 -0
  332. package/dist/native/p-1cce9b24.entry.js +2 -0
  333. package/dist/native/p-1cce9b24.entry.js.map +1 -0
  334. package/dist/native/{p-914da1e1.entry.js → p-1f932a4b.entry.js} +2 -2
  335. package/dist/native/{p-01164e86.entry.js → p-2576c1a0.entry.js} +2 -2
  336. package/dist/native/{p-2bc7d66a.entry.js → p-2d23fcea.entry.js} +2 -2
  337. package/dist/native/{p-1c1ecd38.entry.js → p-31e72603.entry.js} +2 -2
  338. package/dist/native/p-33e5037d.entry.js +2 -0
  339. package/dist/native/{p-ff0f3794.entry.js → p-4cf00884.entry.js} +2 -2
  340. package/dist/native/p-5172f17a.entry.js +2 -0
  341. package/dist/native/{p-08ca678c.entry.js → p-51a57a3a.entry.js} +2 -2
  342. package/dist/native/p-5eca22c7.entry.js +2 -0
  343. package/dist/native/{p-2006f5d4.entry.js.map → p-5eca22c7.entry.js.map} +1 -1
  344. package/dist/native/{p-c7b8b7ba.entry.js → p-609b3822.entry.js} +2 -2
  345. package/dist/native/{p-55df8bf9.entry.js → p-625be06b.entry.js} +2 -2
  346. package/dist/native/{p-9850c1d7.entry.js → p-8030c16b.entry.js} +2 -2
  347. package/dist/native/{p-6029e51b.entry.js → p-85a54ef2.entry.js} +2 -2
  348. package/dist/native/p-8d45dbfe.js +2 -0
  349. package/dist/native/p-9a263d0e.js +2 -0
  350. package/dist/native/p-9a263d0e.js.map +1 -0
  351. package/dist/native/{p-1a5d3b87.entry.js → p-9dc1c3e7.entry.js} +2 -2
  352. package/dist/native/p-a36dc25a.entry.js +2 -0
  353. package/dist/native/{p-ad128108.entry.js.map → p-a36dc25a.entry.js.map} +1 -1
  354. package/dist/native/p-a6dc9b59.entry.js +2 -0
  355. package/dist/native/p-a6dc9b59.entry.js.map +1 -0
  356. package/dist/native/{p-0410facd.entry.js → p-b829383a.entry.js} +2 -2
  357. package/dist/native/{p-abbe5d69.entry.js → p-bab6d0a5.entry.js} +2 -2
  358. package/dist/native/p-baddee4c.entry.js +7 -0
  359. package/dist/native/p-baddee4c.entry.js.map +1 -0
  360. package/dist/native/p-be67545e.entry.js +2 -0
  361. package/dist/native/p-be67545e.entry.js.map +1 -0
  362. package/dist/native/p-c2826f22.entry.js +2 -0
  363. package/dist/native/p-c2826f22.entry.js.map +1 -0
  364. package/dist/native/p-c9cde996.entry.js +2 -0
  365. package/dist/native/{p-0ec2d430.entry.js.map → p-c9cde996.entry.js.map} +1 -1
  366. package/dist/native/{p-a30206c1.entry.js → p-cf468c67.entry.js} +2 -2
  367. package/dist/native/{p-24659a85.entry.js → p-ddb0b9f6.entry.js} +2 -2
  368. package/dist/native/{p-ec87200a.entry.js → p-e19a8885.entry.js} +2 -2
  369. package/dist/native/{p-7ba03c5d.entry.js → p-e802fbb8.entry.js} +2 -2
  370. package/dist/native/p-ec92ee7a.entry.js +2 -0
  371. package/dist/native/{p-f377b285.entry.js → p-f9aa4900.entry.js} +2 -2
  372. package/dist/native/p-fca3e27d.entry.js +2 -0
  373. package/dist/native/p-fca3e27d.entry.js.map +1 -0
  374. package/dist/native/p-fe4e516b.entry.js +2 -0
  375. package/dist/native/p-fe4e516b.entry.js.map +1 -0
  376. package/dist/types/components/nv-accordion/nv-accordion.d.ts +115 -0
  377. package/dist/types/components/nv-accordion/nv-accordion.docs.d.ts +4 -0
  378. package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +79 -0
  379. package/dist/types/components/nv-accordion-item/nv-accordion-item.docs.d.ts +4 -0
  380. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +4 -2
  381. package/dist/types/components/nv-dialog/nv-dialog.d.ts +7 -0
  382. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +22 -2
  383. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +13 -16
  384. package/dist/types/components/nv-fieldslider/nv-fieldslider.utils.d.ts +13 -0
  385. package/dist/types/components/nv-fieldslider/partials/range-thumb.d.ts +2 -0
  386. package/dist/types/components/nv-fieldslider/partials/single-thumb.d.ts +2 -0
  387. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  388. package/dist/types/components/nv-tooltip/nv-tooltip.d.ts +7 -0
  389. package/dist/types/components.d.ts +241 -10
  390. package/dist/vscode-data.json +84 -5
  391. package/hydrate/index.js +1116 -595
  392. package/hydrate/index.mjs +1116 -595
  393. package/package.json +7 -3
  394. package/dist/cjs/fade.animation-0d33d198.js.map +0 -1
  395. package/dist/cjs/timeline.animation-dbb9c5ea.js.map +0 -1
  396. package/dist/components/p-131e5140.js.map +0 -1
  397. package/dist/components/p-1daca48a.js.map +0 -1
  398. package/dist/components/p-42301d8f.js.map +0 -1
  399. package/dist/components/p-953d8b4d.js.map +0 -1
  400. package/dist/components/p-a0d7e0cd.js.map +0 -1
  401. package/dist/components/p-b207be02.js +0 -88
  402. package/dist/components/p-b207be02.js.map +0 -1
  403. package/dist/components/p-f7c7a406.js.map +0 -1
  404. package/dist/esm/fade.animation-2a077983.js.map +0 -1
  405. package/dist/esm/timeline.animation-1b88f052.js.map +0 -1
  406. package/dist/native/p-0ec2d430.entry.js +0 -2
  407. package/dist/native/p-14895e84.entry.js +0 -2
  408. package/dist/native/p-14895e84.entry.js.map +0 -1
  409. package/dist/native/p-1daca48a.js +0 -16
  410. package/dist/native/p-1daca48a.js.map +0 -1
  411. package/dist/native/p-2006f5d4.entry.js +0 -2
  412. package/dist/native/p-2b1e7675.entry.js +0 -2
  413. package/dist/native/p-2b1e7675.entry.js.map +0 -1
  414. package/dist/native/p-2c3fb8cc.entry.js +0 -2
  415. package/dist/native/p-2c3fb8cc.entry.js.map +0 -1
  416. package/dist/native/p-42301d8f.js +0 -2
  417. package/dist/native/p-42301d8f.js.map +0 -1
  418. package/dist/native/p-45cbe6e4.entry.js +0 -2
  419. package/dist/native/p-46428304.entry.js +0 -2
  420. package/dist/native/p-46428304.entry.js.map +0 -1
  421. package/dist/native/p-59b07b36.entry.js +0 -2
  422. package/dist/native/p-59b07b36.entry.js.map +0 -1
  423. package/dist/native/p-82c4bf56.entry.js +0 -2
  424. package/dist/native/p-82c4bf56.entry.js.map +0 -1
  425. package/dist/native/p-86ab23ea.entry.js +0 -2
  426. package/dist/native/p-ad128108.entry.js +0 -2
  427. package/dist/native/p-c1765831.js +0 -2
  428. package/dist/native/p-c92d55f9.entry.js +0 -2
  429. package/dist/native/p-c9d3de9c.entry.js +0 -2
  430. package/dist/native/p-c9d3de9c.entry.js.map +0 -1
  431. package/dist/native/p-cbca9326.entry.js +0 -2
  432. package/dist/native/p-d21b2da2.entry.js +0 -7
  433. package/dist/native/p-d21b2da2.entry.js.map +0 -1
  434. /package/dist/native/{p-a0505695.entry.js.map → p-08452012.entry.js.map} +0 -0
  435. /package/dist/native/{p-86ab23ea.entry.js.map → p-1235c007.entry.js.map} +0 -0
  436. /package/dist/native/{p-b5b9190a.entry.js.map → p-18831490.entry.js.map} +0 -0
  437. /package/dist/native/{p-1d98477d.entry.js.map → p-1ad1bff9.entry.js.map} +0 -0
  438. /package/dist/native/{p-914da1e1.entry.js.map → p-1f932a4b.entry.js.map} +0 -0
  439. /package/dist/native/{p-01164e86.entry.js.map → p-2576c1a0.entry.js.map} +0 -0
  440. /package/dist/native/{p-2bc7d66a.entry.js.map → p-2d23fcea.entry.js.map} +0 -0
  441. /package/dist/native/{p-1c1ecd38.entry.js.map → p-31e72603.entry.js.map} +0 -0
  442. /package/dist/native/{p-cbca9326.entry.js.map → p-33e5037d.entry.js.map} +0 -0
  443. /package/dist/native/{p-ff0f3794.entry.js.map → p-4cf00884.entry.js.map} +0 -0
  444. /package/dist/native/{p-c92d55f9.entry.js.map → p-5172f17a.entry.js.map} +0 -0
  445. /package/dist/native/{p-08ca678c.entry.js.map → p-51a57a3a.entry.js.map} +0 -0
  446. /package/dist/native/{p-c7b8b7ba.entry.js.map → p-609b3822.entry.js.map} +0 -0
  447. /package/dist/native/{p-55df8bf9.entry.js.map → p-625be06b.entry.js.map} +0 -0
  448. /package/dist/native/{p-9850c1d7.entry.js.map → p-8030c16b.entry.js.map} +0 -0
  449. /package/dist/native/{p-6029e51b.entry.js.map → p-85a54ef2.entry.js.map} +0 -0
  450. /package/dist/native/{p-c1765831.js.map → p-8d45dbfe.js.map} +0 -0
  451. /package/dist/native/{p-1a5d3b87.entry.js.map → p-9dc1c3e7.entry.js.map} +0 -0
  452. /package/dist/native/{p-0410facd.entry.js.map → p-b829383a.entry.js.map} +0 -0
  453. /package/dist/native/{p-abbe5d69.entry.js.map → p-bab6d0a5.entry.js.map} +0 -0
  454. /package/dist/native/{p-a30206c1.entry.js.map → p-cf468c67.entry.js.map} +0 -0
  455. /package/dist/native/{p-24659a85.entry.js.map → p-ddb0b9f6.entry.js.map} +0 -0
  456. /package/dist/native/{p-ec87200a.entry.js.map → p-e19a8885.entry.js.map} +0 -0
  457. /package/dist/native/{p-7ba03c5d.entry.js.map → p-e802fbb8.entry.js.map} +0 -0
  458. /package/dist/native/{p-45cbe6e4.entry.js.map → p-ec92ee7a.entry.js.map} +0 -0
  459. /package/dist/native/{p-f377b285.entry.js.map → p-f9aa4900.entry.js.map} +0 -0
@@ -27,6 +27,11 @@ export class NvFieldmultiselect {
27
27
  * always type in fresh data.
28
28
  */
29
29
  this.autocomplete = 'off';
30
+ /**
31
+ * Specifies the selected values of the multiselect field.
32
+ * This is the canonical value for the component and is used for form submission.
33
+ */
34
+ this.value = [];
30
35
  /**
31
36
  * Marks the input field as required.
32
37
  */
@@ -80,17 +85,13 @@ export class NvFieldmultiselect {
80
85
  * Text for the badge showing the number of selected items.
81
86
  */
82
87
  this.badgeLabel = '';
83
- //#endregion PROPERTIES
84
- /****************************************************************************/
85
- //#region STATE
86
88
  /**
87
89
  * The text entered by the user for filtering multiselect items.
88
90
  */
89
91
  this.filterText = '';
90
- /**
91
- * List of selected values in the multiselect.
92
- */
93
- this.selectedValues = [];
92
+ //#endregion PROPERTIES
93
+ /****************************************************************************/
94
+ //#region STATE
94
95
  /**
95
96
  * Sorted options for display.
96
97
  */
@@ -100,8 +101,8 @@ export class NvFieldmultiselect {
100
101
  * Handle badge close for options mode.
101
102
  */
102
103
  this.handleBadgeCloseOptions = () => {
103
- this.selectedValues = [];
104
- this.multiselectChange.emit(this.selectedValues);
104
+ this.value = [];
105
+ this.valueChanged.emit(this.value);
105
106
  // Uncheck all elements
106
107
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
107
108
  items.forEach(item => {
@@ -117,8 +118,8 @@ export class NvFieldmultiselect {
117
118
  * Handle badge close for slots mode.
118
119
  */
119
120
  this.handleBadgeCloseSlots = () => {
120
- this.selectedValues = [];
121
- this.multiselectChange.emit(this.selectedValues);
121
+ this.value = [];
122
+ this.valueChanged.emit(this.value);
122
123
  // Uncheck all elements
123
124
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
124
125
  items.forEach(item => {
@@ -136,8 +137,7 @@ export class NvFieldmultiselect {
136
137
  if (this.isHandlingEscape) {
137
138
  return;
138
139
  }
139
- this.filterText = '';
140
- // Reset filter if needed
140
+ // Reset filter if needed, but preserve the filter text
141
141
  if (this.filterable) {
142
142
  this.resetFilter();
143
143
  }
@@ -150,9 +150,8 @@ export class NvFieldmultiselect {
150
150
  if (!this.el.contains(document.activeElement)) {
151
151
  // Close the popover without affecting the divider
152
152
  this.open = false;
153
- // Reset filter if needed
153
+ // Reset filter if needed, but preserve the filter text
154
154
  if (this.filterable) {
155
- this.filterText = '';
156
155
  this.resetFilter();
157
156
  }
158
157
  }
@@ -211,15 +210,14 @@ export class NvFieldmultiselect {
211
210
  return;
212
211
  }
213
212
  const input = event.target;
214
- this.value = input.value;
215
- this.valueChanged.emit(this.value);
213
+ this.filterText = input.value;
214
+ this.filterTextChanged.emit(this.filterText);
216
215
  // Clear any existing timer
217
216
  if (this.debounceTimer) {
218
217
  window.clearTimeout(this.debounceTimer);
219
218
  }
220
219
  // Set a new timer for filtering
221
220
  this.debounceTimer = window.setTimeout(() => {
222
- this.filterText = input.value.toLowerCase();
223
221
  this.filterItemsOption();
224
222
  }, this.debounceDelay);
225
223
  };
@@ -233,15 +231,14 @@ export class NvFieldmultiselect {
233
231
  if (this.disabled || this.readonly)
234
232
  return;
235
233
  const input = event.target;
236
- this.value = input.value;
237
- this.valueChanged.emit(this.value);
234
+ this.filterText = input.value;
235
+ this.filterTextChanged.emit(this.filterText);
238
236
  // Clear any existing timer
239
237
  if (this.debounceTimer) {
240
238
  window.clearTimeout(this.debounceTimer);
241
239
  }
242
240
  // Set a new timer for filtering
243
241
  this.debounceTimer = window.setTimeout(() => {
244
- this.filterText = input.value.toLowerCase();
245
242
  this.filterSlotsItems();
246
243
  }, this.debounceDelay);
247
244
  };
@@ -271,9 +268,8 @@ export class NvFieldmultiselect {
271
268
  if (!this.el.contains(document.activeElement)) {
272
269
  // Close the popover without affecting the divider
273
270
  this.open = false;
274
- // Reset filter if needed
271
+ // Reset filter if needed, but preserve the filter text
275
272
  if (this.filterable) {
276
- this.filterText = '';
277
273
  this.resetFilter();
278
274
  }
279
275
  }
@@ -305,14 +301,14 @@ export class NvFieldmultiselect {
305
301
  * @returns {any} The JSX for options mode
306
302
  */
307
303
  this.renderOptionsMode = () => {
308
- return (h(Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (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.selectedValues.length > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.selectedValues.length > 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.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.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable" })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, h("span", null, this.value || this.placeholder))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), 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', "aria-pressed": this.open.toString(), onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, h("ul", { role: "content" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.selectedValues.includes(option.value), disabled: option.disabled }))), h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
304
+ return (h(Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (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" })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, h("span", null, this.placeholder))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), 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', "aria-pressed": this.open.toString(), onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, h("ul", { role: "content" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.value.includes(option.value), disabled: option.disabled }))), h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
309
305
  };
310
306
  /**
311
307
  * Renders the component in slots mode
312
308
  * @returns {any} The JSX for slots mode
313
309
  */
314
310
  this.renderSlotsMode = () => {
315
- return (h(Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (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.selectedValues.length > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.selectedValues.length > 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.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.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable" })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusSlots, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, h("span", null, this.value || this.placeholder))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), 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', "aria-pressed": this.open.toString(), onClick: this.togglePopoverSlots })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, h("slot", { name: "content" }))), this.renderDescriptions()));
311
+ return (h(Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (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" })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusSlots, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, h("span", null, this.placeholder))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), 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', "aria-pressed": this.open.toString(), onClick: this.togglePopoverSlots })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, h("slot", { name: "content" }))), this.renderDescriptions()));
316
312
  };
317
313
  }
318
314
  //#endregion EVENTS
@@ -321,7 +317,7 @@ export class NvFieldmultiselect {
321
317
  handleOptionsChange(newValue) {
322
318
  if (!newValue)
323
319
  return;
324
- this.selectedValues = newValue
320
+ this.value = newValue
325
321
  .filter(option => option.checked)
326
322
  .map(option => option.value);
327
323
  this.reorderOptionsContent();
@@ -330,8 +326,10 @@ export class NvFieldmultiselect {
330
326
  * Emitted when the value changes.
331
327
  */
332
328
  watchValueHandler() {
333
- // Handle value change and update the corresponding multiselect item if it exists
334
- this.setInitialSelection();
329
+ // Synchronize child components when value changes programmatically
330
+ if (this.el && this.el.isConnected) {
331
+ this.syncChildComponents();
332
+ }
335
333
  }
336
334
  //#endregion WATCHERS
337
335
  /****************************************************************************/
@@ -371,22 +369,23 @@ export class NvFieldmultiselect {
371
369
  }
372
370
  const { value, checked } = event.detail;
373
371
  if (value !== undefined && value !== null) {
374
- const newSelectedValues = [...this.selectedValues];
375
- const valueIndex = newSelectedValues.indexOf(value);
372
+ const newValue = [...this.value];
373
+ const valueIndex = newValue.indexOf(value);
376
374
  if (checked && valueIndex === -1) {
377
- newSelectedValues.push(value);
375
+ newValue.push(value);
378
376
  }
379
377
  else if (!checked && valueIndex > -1) {
380
- newSelectedValues.splice(valueIndex, 1);
378
+ newValue.splice(valueIndex, 1);
381
379
  }
382
- // Update the state and emit the event only if the selection has changed
383
- if (JSON.stringify(this.selectedValues) !==
384
- JSON.stringify(newSelectedValues)) {
385
- this.selectedValues = newSelectedValues;
386
- // Use requestAnimationFrame to ensure the state is updated before emitting the event
387
- requestAnimationFrame(() => {
388
- this.multiselectChange.emit(this.selectedValues);
389
- });
380
+ // Always update the state and emit the event when an item is checked/unchecked
381
+ this.value = newValue;
382
+ this.valueChanged.emit(this.value);
383
+ // Update the checked state of all items to ensure consistency
384
+ this.syncChildComponents();
385
+ // Preserve the filter text in the input
386
+ if (this.filterable && this.inputElement) {
387
+ // Keep the current filter text in the input
388
+ this.inputElement.value = this.filterText;
390
389
  }
391
390
  }
392
391
  else {
@@ -425,12 +424,10 @@ export class NvFieldmultiselect {
425
424
  }
426
425
  // Specific initialization for slots mode
427
426
  if (!this.options) {
427
+ // Use a microtask to ensure DOM is ready
428
428
  Promise.resolve().then(() => {
429
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
430
- // Initialize selectedValues with checked items
431
- this.selectedValues = items
432
- .filter(item => item.hasAttribute('checked'))
433
- .map(item => item.getAttribute('value') || '');
429
+ // Synchronize child components
430
+ this.syncChildComponents();
434
431
  // Force a reorder after initialization
435
432
  requestAnimationFrame(() => {
436
433
  this.reorderSlotContent();
@@ -441,13 +438,8 @@ export class NvFieldmultiselect {
441
438
  if (this.options) {
442
439
  this.sortedOptions = [...((_a = this.options) !== null && _a !== void 0 ? _a : [])];
443
440
  }
444
- // Apply filtering if the multiselect is filterable and there is a value
445
- if (this.filterable && this.value) {
446
- this.filterText = String(this.value).toLocaleLowerCase();
447
- this.filterItems();
448
- }
449
- else {
450
- // Reset visibility state of all dropdown items
441
+ // Reset filter if needed
442
+ if (!this.filterText) {
451
443
  this.resetFilter();
452
444
  }
453
445
  }
@@ -458,6 +450,8 @@ export class NvFieldmultiselect {
458
450
  if (this.options) {
459
451
  this.handleOptionsChange(this.options);
460
452
  }
453
+ // Final synchronization of child components after everything is loaded
454
+ this.syncChildComponents();
461
455
  }
462
456
  /**
463
457
  * Unsubscribe from click outside event.
@@ -475,38 +469,6 @@ export class NvFieldmultiselect {
475
469
  async getFilterText() {
476
470
  return this.filterText;
477
471
  }
478
- /**
479
- * Set the initial selection based on the current value and update the inputElement value.
480
- */
481
- setInitialSelection() {
482
- var _a;
483
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
484
- const selectedItem = items.find(item => {
485
- var _a;
486
- return item.getAttribute('label') === this.value ||
487
- item.getAttribute('value') === this.value ||
488
- ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === this.value;
489
- });
490
- // Remove 'selected' from all items first to reset the state
491
- items.forEach(item => {
492
- item.removeAttribute('selected');
493
- item.classList.remove('selected');
494
- });
495
- if (selectedItem) {
496
- // Add the `selected` attribute and `selected` class for visual styling
497
- selectedItem.setAttribute('selected', 'true');
498
- selectedItem.classList.add('selected');
499
- // Update the value and inputElement value to reflect the pre-selected item
500
- this.value =
501
- selectedItem.getAttribute('label') ||
502
- selectedItem.getAttribute('value') ||
503
- ((_a = selectedItem.textContent) === null || _a === void 0 ? void 0 : _a.trim()) ||
504
- '';
505
- if (this.inputElement) {
506
- this.inputElement.value = this.value;
507
- }
508
- }
509
- }
510
472
  /**
511
473
  * Reset the filter and make all items visible.
512
474
  */
@@ -523,8 +485,8 @@ export class NvFieldmultiselect {
523
485
  if (emptyMessage)
524
486
  emptyMessage.remove();
525
487
  // Reorder with divider if needed
526
- const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
527
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
488
+ const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
489
+ const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
528
490
  if (selectedItems.length > 0) {
529
491
  this.manageDivider(ul, selectedItems, unselectedItems);
530
492
  }
@@ -535,7 +497,7 @@ export class NvFieldmultiselect {
535
497
  * @returns {string[]} The selected values.
536
498
  */
537
499
  async getSelectedValues() {
538
- return this.selectedValues;
500
+ return this.value;
539
501
  }
540
502
  /**
541
503
  * Reorder the content of the slot.
@@ -557,8 +519,8 @@ export class NvFieldmultiselect {
557
519
  return;
558
520
  }
559
521
  // Separate checked vs unchecked
560
- const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
561
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
522
+ const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
523
+ const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
562
524
  // Reinsert CHECKED items FIRST
563
525
  // appendChild() moves the element without recreating it
564
526
  // this is not trigger a re-rendering of the component in the platforms
@@ -584,8 +546,8 @@ export class NvFieldmultiselect {
584
546
  if (!ul)
585
547
  return;
586
548
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
587
- const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
588
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
549
+ const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
550
+ const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
589
551
  // Reorder the elements
590
552
  selectedItems.forEach(item => ul.appendChild(item));
591
553
  unselectedItems.forEach(item => ul.appendChild(item));
@@ -621,8 +583,8 @@ export class NvFieldmultiselect {
621
583
  }
622
584
  // Reorder with divider
623
585
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
624
- const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
625
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
586
+ const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
587
+ const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
626
588
  this.manageDivider(ul, selectedItems, unselectedItems);
627
589
  return;
628
590
  }
@@ -643,8 +605,8 @@ export class NvFieldmultiselect {
643
605
  });
644
606
  // Manage the divider with the visible items
645
607
  const visibleItems = items.filter(item => item.style.display !== 'none');
646
- const visibleSelected = visibleItems.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
647
- const visibleUnselected = visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
608
+ const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
609
+ const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
648
610
  this.manageDivider(ul, visibleSelected, visibleUnselected);
649
611
  }
650
612
  else {
@@ -702,8 +664,8 @@ export class NvFieldmultiselect {
702
664
  });
703
665
  // Manage the divider with the visible items
704
666
  const visibleItems = items.filter(item => item.style.display !== 'none');
705
- const visibleSelected = visibleItems.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
706
- const visibleUnselected = visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
667
+ const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
668
+ const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
707
669
  this.manageDivider(ul, visibleSelected, visibleUnselected);
708
670
  // Add or remove the empty message based on the case
709
671
  if (!hasVisibleItems) {
@@ -751,8 +713,8 @@ export class NvFieldmultiselect {
751
713
  });
752
714
  // Get visible items after filtering
753
715
  const visibleItems = items.filter(item => item.style.display !== 'none');
754
- const visibleSelectedItems = visibleItems.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
755
- this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || '')));
716
+ const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
717
+ this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || '')));
756
718
  // Add empty message if no items match the filter
757
719
  if (!hasVisibleItems) {
758
720
  const emptyMessage = document.createElement('li');
@@ -949,6 +911,29 @@ export class NvFieldmultiselect {
949
911
  divider.style.display = 'none';
950
912
  }
951
913
  }
914
+ /**
915
+ * Synchronizes the checked state of all child nv-fielddropdownitemcheck components
916
+ * with the current selectedValues state.
917
+ */
918
+ syncChildComponents() {
919
+ // Early return if element is not ready
920
+ if (!this.el || !this.el.isConnected) {
921
+ return;
922
+ }
923
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
924
+ items.forEach(item => {
925
+ // Get the effective value: use explicit value if present, otherwise use label
926
+ const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
927
+ if (this.value.includes(itemValue)) {
928
+ item.setAttribute('checked', '');
929
+ item.checked = true;
930
+ }
931
+ else {
932
+ item.removeAttribute('checked');
933
+ item.checked = false;
934
+ }
935
+ });
936
+ }
952
937
  /**
953
938
  * Renders description and error description sections
954
939
  * @returns {any} The JSX for descriptions
@@ -1104,23 +1089,22 @@ export class NvFieldmultiselect {
1104
1089
  "defaultValue": "'off'"
1105
1090
  },
1106
1091
  "value": {
1107
- "type": "string",
1092
+ "type": "unknown",
1108
1093
  "mutable": true,
1109
1094
  "complexType": {
1110
- "original": "string",
1111
- "resolved": "string",
1095
+ "original": "string[]",
1096
+ "resolved": "string[]",
1112
1097
  "references": {}
1113
1098
  },
1114
1099
  "required": false,
1115
1100
  "optional": false,
1116
1101
  "docs": {
1117
1102
  "tags": [],
1118
- "text": "Specifies the value of the input field."
1103
+ "text": "Specifies the selected values of the multiselect field.\nThis is the canonical value for the component and is used for form submission."
1119
1104
  },
1120
1105
  "getter": false,
1121
1106
  "setter": false,
1122
- "attribute": "value",
1123
- "reflect": true
1107
+ "defaultValue": "[]"
1124
1108
  },
1125
1109
  "required": {
1126
1110
  "type": "boolean",
@@ -1409,13 +1393,31 @@ export class NvFieldmultiselect {
1409
1393
  "attribute": "badge-label",
1410
1394
  "reflect": true,
1411
1395
  "defaultValue": "''"
1396
+ },
1397
+ "filterText": {
1398
+ "type": "string",
1399
+ "mutable": true,
1400
+ "complexType": {
1401
+ "original": "string",
1402
+ "resolved": "string",
1403
+ "references": {}
1404
+ },
1405
+ "required": false,
1406
+ "optional": false,
1407
+ "docs": {
1408
+ "tags": [],
1409
+ "text": "The text entered by the user for filtering multiselect items."
1410
+ },
1411
+ "getter": false,
1412
+ "setter": false,
1413
+ "attribute": "filter-text",
1414
+ "reflect": true,
1415
+ "defaultValue": "''"
1412
1416
  }
1413
1417
  };
1414
1418
  }
1415
1419
  static get states() {
1416
1420
  return {
1417
- "filterText": {},
1418
- "selectedValues": {},
1419
1421
  "sortedOptions": {},
1420
1422
  "isHandlingEscape": {}
1421
1423
  };
@@ -1432,26 +1434,26 @@ export class NvFieldmultiselect {
1432
1434
  "name": "bind",
1433
1435
  "text": "value"
1434
1436
  }],
1435
- "text": "Emitted when the input value changes."
1437
+ "text": "Emitted when the selected values change."
1436
1438
  },
1437
1439
  "complexType": {
1438
- "original": "string",
1439
- "resolved": "string",
1440
+ "original": "string[]",
1441
+ "resolved": "string[]",
1440
1442
  "references": {}
1441
1443
  }
1442
1444
  }, {
1443
- "method": "multiselectChange",
1444
- "name": "multiselectChange",
1445
+ "method": "filterTextChanged",
1446
+ "name": "filterTextChanged",
1445
1447
  "bubbles": true,
1446
1448
  "cancelable": true,
1447
1449
  "composed": true,
1448
1450
  "docs": {
1449
1451
  "tags": [],
1450
- "text": "Event emitted when the selection changes in the multiselect.\nEmits the current list of selected values."
1452
+ "text": "Emitted when the filter text changes."
1451
1453
  },
1452
1454
  "complexType": {
1453
- "original": "string[]",
1454
- "resolved": "string[]",
1455
+ "original": "string",
1456
+ "resolved": "string",
1455
1457
  "references": {}
1456
1458
  }
1457
1459
  }];