@nova-design-system/nova-webcomponents 3.9.0 → 3.10.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 (444) hide show
  1. package/dist/cjs/{constants-8fb8ccc0.js → constants-3b6beb66.js} +15 -1
  2. package/dist/cjs/constants-3b6beb66.js.map +1 -0
  3. package/dist/cjs/index-c56424e5.js +12 -0
  4. package/dist/cjs/index.cjs.js +7 -1
  5. package/dist/cjs/index.cjs.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/native.cjs.js +1 -1
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  11. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-badge_2.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-button.cjs.entry.js +2 -2
  18. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nv-buttongroup.cjs.entry.js +198 -0
  20. package/dist/cjs/nv-buttongroup.cjs.entry.js.map +1 -0
  21. package/dist/cjs/nv-calendar.cjs.entry.js +121 -38
  22. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +4 -4
  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 +2 -2
  28. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +3 -3
  29. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +5 -5
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddate.cjs.entry.js +62 -94
  32. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddaterange.cjs.entry.js +52 -33
  34. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  36. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  37. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +377 -27
  38. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  40. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  41. package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
  42. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  44. package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
  45. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  46. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  47. package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
  48. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
  51. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  53. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  54. package/dist/cjs/nv-popover.cjs.entry.js +1 -1
  55. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  56. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  57. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  58. package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
  59. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-togglebutton.cjs.entry.js +58 -0
  61. package/dist/cjs/nv-togglebutton.cjs.entry.js.map +1 -0
  62. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +172 -0
  63. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -0
  64. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  65. package/dist/collection/collection-manifest.json +3 -0
  66. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +1 -1
  67. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  68. package/dist/collection/components/nv-alert/nv-alert.css +5 -0
  69. package/dist/collection/components/nv-badge/nv-badge.css +21 -0
  70. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +2 -0
  71. package/dist/collection/components/nv-button/styles/nv-button.css +8 -0
  72. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +43 -0
  73. package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -0
  74. package/dist/collection/components/nv-buttongroup/nv-buttongroup.js +217 -0
  75. package/dist/collection/components/nv-buttongroup/nv-buttongroup.js.map +1 -0
  76. package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js +86 -0
  77. package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js.map +1 -0
  78. package/dist/collection/components/nv-buttongroup/styles/nv-buttongroup.css +73 -0
  79. package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js +312 -0
  80. package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js.map +1 -0
  81. package/dist/collection/components/nv-calendar/nv-calendar.css +9 -0
  82. package/dist/collection/components/nv-calendar/nv-calendar.js +44 -25
  83. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  84. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +68 -0
  85. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  86. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +5 -3
  87. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  88. package/dist/collection/components/nv-calendar/partials/day-cell.js +4 -9
  89. package/dist/collection/components/nv-calendar/partials/day-cell.js.map +1 -1
  90. package/dist/collection/components/nv-col/nv-col.js +1 -1
  91. package/dist/collection/components/nv-datagrid/nv-datagrid.css +1 -0
  92. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  93. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  94. package/dist/collection/components/nv-dialog/nv-dialog.js +1 -1
  95. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  96. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  97. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -0
  98. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  99. package/dist/collection/components/nv-fielddate/nv-fielddate.js +63 -94
  100. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  101. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +52 -33
  102. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  103. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  104. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  105. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  106. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
  107. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +885 -122
  108. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  109. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +561 -89
  110. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  111. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +70 -16
  112. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  113. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  114. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -0
  115. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  116. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  117. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  118. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  119. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  120. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  121. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  122. package/dist/collection/components/nv-icon/nv-icons.js +6 -0
  123. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  124. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -0
  125. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  126. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  127. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  128. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  129. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  130. package/dist/collection/components/nv-row/nv-row.js +1 -1
  131. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  132. package/dist/collection/components/nv-table/nv-table.js +2 -2
  133. package/dist/collection/components/nv-toggle/nv-toggle.css +1 -0
  134. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  135. package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js +6 -0
  136. package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js.map +1 -0
  137. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +191 -0
  138. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js.map +1 -0
  139. package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +135 -0
  140. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +56 -0
  141. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -0
  142. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +324 -0
  143. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -0
  144. package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +45 -0
  145. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  146. package/dist/collection/utils/constants.js +12 -0
  147. package/dist/collection/utils/constants.js.map +1 -1
  148. package/dist/components/index.js +7 -1
  149. package/dist/components/index.js.map +1 -1
  150. package/dist/components/nv-accordion-item.js +1 -1
  151. package/dist/components/nv-accordion.js +4 -4
  152. package/dist/components/nv-alert.js +3 -3
  153. package/dist/components/nv-alert.js.map +1 -1
  154. package/dist/components/nv-avatar.js +2 -2
  155. package/dist/components/nv-badge.js +1 -1
  156. package/dist/components/nv-breadcrumb.js +3 -3
  157. package/dist/components/nv-breadcrumb.js.map +1 -1
  158. package/dist/components/nv-button.js +1 -1
  159. package/dist/components/nv-buttongroup.d.ts +11 -0
  160. package/dist/components/nv-buttongroup.js +221 -0
  161. package/dist/components/nv-buttongroup.js.map +1 -0
  162. package/dist/components/nv-calendar.js +1 -1
  163. package/dist/components/nv-col.js +1 -1
  164. package/dist/components/nv-datagrid.js +6 -6
  165. package/dist/components/nv-datagrid.js.map +1 -1
  166. package/dist/components/nv-datagridcolumn.js +1 -1
  167. package/dist/components/nv-dialog.js +7 -7
  168. package/dist/components/nv-dialogfooter.js +1 -1
  169. package/dist/components/nv-dialogheader.js +1 -1
  170. package/dist/components/nv-fieldcheckbox.js +1 -1
  171. package/dist/components/nv-fielddate.js +70 -102
  172. package/dist/components/nv-fielddate.js.map +1 -1
  173. package/dist/components/nv-fielddaterange.js +58 -39
  174. package/dist/components/nv-fielddaterange.js.map +1 -1
  175. package/dist/components/nv-fielddropdown.js +8 -8
  176. package/dist/components/nv-fielddropdownitem.js +1 -1
  177. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  178. package/dist/components/nv-fieldmultiselect.js +399 -41
  179. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  180. package/dist/components/nv-fieldnumber.js +1 -1
  181. package/dist/components/nv-fieldpassword.js +6 -6
  182. package/dist/components/nv-fieldradio.js +4 -4
  183. package/dist/components/nv-fieldradio.js.map +1 -1
  184. package/dist/components/nv-fieldselect.js +8 -8
  185. package/dist/components/nv-fieldslider.js +7 -7
  186. package/dist/components/nv-fieldtext.js +1 -1
  187. package/dist/components/nv-fieldtextarea.js +3 -3
  188. package/dist/components/nv-fieldtime.js +14 -14
  189. package/dist/components/nv-icon.js +1 -1
  190. package/dist/components/nv-iconbutton.js +1 -1
  191. package/dist/components/nv-loader.js +1 -1
  192. package/dist/components/nv-menu.js +4 -4
  193. package/dist/components/nv-menuitem.js +1 -1
  194. package/dist/components/nv-popover.js +1 -1
  195. package/dist/components/nv-row.js +1 -1
  196. package/dist/components/nv-stack.js +1 -1
  197. package/dist/components/nv-table.js +2 -2
  198. package/dist/components/nv-toggle.js +3 -3
  199. package/dist/components/nv-toggle.js.map +1 -1
  200. package/dist/components/nv-togglebutton.d.ts +11 -0
  201. package/dist/components/nv-togglebutton.js +78 -0
  202. package/dist/components/nv-togglebutton.js.map +1 -0
  203. package/dist/components/nv-togglebuttongroup.d.ts +11 -0
  204. package/dist/components/nv-togglebuttongroup.js +196 -0
  205. package/dist/components/nv-togglebuttongroup.js.map +1 -0
  206. package/dist/components/nv-tooltip.js +1 -1
  207. package/dist/components/{p-68ff562f.js → p-0ffb4785.js} +5 -5
  208. package/dist/components/{p-68ff562f.js.map → p-0ffb4785.js.map} +1 -1
  209. package/dist/components/{p-8067d283.js → p-195f46f3.js} +2 -2
  210. package/dist/components/{p-8067d283.js.map → p-195f46f3.js.map} +1 -1
  211. package/dist/components/{p-e4e1a926.js → p-1bb737fa.js} +3 -3
  212. package/dist/components/{p-e4e1a926.js.map → p-1bb737fa.js.map} +1 -1
  213. package/dist/components/{p-db4ba1d9.js → p-2db5d1ab.js} +7 -7
  214. package/dist/components/{p-db4ba1d9.js.map → p-2db5d1ab.js.map} +1 -1
  215. package/dist/components/{p-ba87d9d5.js → p-2ef4fb88.js} +3 -3
  216. package/dist/components/{p-ba87d9d5.js.map → p-2ef4fb88.js.map} +1 -1
  217. package/dist/components/{p-91a558eb.js → p-32e8e42e.js} +2 -2
  218. package/dist/components/{p-91a558eb.js.map → p-32e8e42e.js.map} +1 -1
  219. package/dist/components/{p-6de6866c.js → p-45a625fb.js} +6 -6
  220. package/dist/components/{p-6de6866c.js.map → p-45a625fb.js.map} +1 -1
  221. package/dist/components/{p-025b8a78.js → p-50d0db7b.js} +5 -5
  222. package/dist/components/{p-025b8a78.js.map → p-50d0db7b.js.map} +1 -1
  223. package/dist/components/{p-ed6686a1.js → p-51876ca1.js} +2 -2
  224. package/dist/components/{p-ed6686a1.js.map → p-51876ca1.js.map} +1 -1
  225. package/dist/components/{p-e104c58a.js → p-51a156ff.js} +3 -3
  226. package/dist/components/p-51a156ff.js.map +1 -0
  227. package/dist/components/p-8011513c.js +189 -0
  228. package/dist/components/{p-60064345.js.map → p-8011513c.js.map} +1 -1
  229. package/dist/components/{p-d32b75ac.js → p-8aee1010.js} +123 -39
  230. package/dist/components/p-8aee1010.js.map +1 -0
  231. package/dist/components/{p-79e6b6a2.js → p-9fdaea9a.js} +5 -5
  232. package/dist/components/p-9fdaea9a.js.map +1 -0
  233. package/dist/components/{p-6460318d.js → p-a1fe0a5d.js} +4 -4
  234. package/dist/components/p-a1fe0a5d.js.map +1 -0
  235. package/dist/components/{p-1f505531.js → p-a3ddec4c.js} +15 -1
  236. package/dist/components/p-a3ddec4c.js.map +1 -0
  237. package/dist/components/{p-0143cee0.js → p-a5002d14.js} +6 -6
  238. package/dist/components/{p-0143cee0.js.map → p-a5002d14.js.map} +1 -1
  239. package/dist/components/{p-30f970c3.js → p-b659b999.js} +3 -3
  240. package/dist/components/{p-30f970c3.js.map → p-b659b999.js.map} +1 -1
  241. package/dist/components/{p-5d5668f0.js → p-cf06032d.js} +4 -4
  242. package/dist/components/{p-5d5668f0.js.map → p-cf06032d.js.map} +1 -1
  243. package/dist/components/{p-dfd2d4f0.js → p-fda58a76.js} +2 -2
  244. package/dist/components/{p-dfd2d4f0.js.map → p-fda58a76.js.map} +1 -1
  245. package/dist/esm/{constants-4faa1fae.js → constants-23aaef7b.js} +15 -1
  246. package/dist/esm/constants-23aaef7b.js.map +1 -0
  247. package/dist/esm/index-a1936cd0.js +12 -0
  248. package/dist/esm/index.js +7 -1
  249. package/dist/esm/index.js.map +1 -1
  250. package/dist/esm/loader.js +1 -1
  251. package/dist/esm/native.js +1 -1
  252. package/dist/esm/nv-accordion-item.entry.js +1 -1
  253. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  254. package/dist/esm/nv-alert.entry.js +2 -2
  255. package/dist/esm/nv-alert.entry.js.map +1 -1
  256. package/dist/esm/nv-avatar.entry.js +1 -1
  257. package/dist/esm/nv-badge_2.entry.js +2 -2
  258. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  259. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  260. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  261. package/dist/esm/nv-button.entry.js +2 -2
  262. package/dist/esm/nv-button.entry.js.map +1 -1
  263. package/dist/esm/nv-buttongroup.entry.js +194 -0
  264. package/dist/esm/nv-buttongroup.entry.js.map +1 -0
  265. package/dist/esm/nv-calendar.entry.js +121 -38
  266. package/dist/esm/nv-calendar.entry.js.map +1 -1
  267. package/dist/esm/nv-col.entry.js +1 -1
  268. package/dist/esm/nv-datagrid.entry.js +4 -4
  269. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  270. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  271. package/dist/esm/nv-dialog.entry.js +2 -2
  272. package/dist/esm/nv-dialogfooter_2.entry.js +3 -3
  273. package/dist/esm/nv-fieldcheckbox.entry.js +5 -5
  274. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  275. package/dist/esm/nv-fielddate.entry.js +62 -94
  276. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  277. package/dist/esm/nv-fielddaterange.entry.js +52 -33
  278. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  279. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  280. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  281. package/dist/esm/nv-fieldmultiselect.entry.js +378 -28
  282. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  283. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  284. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  285. package/dist/esm/nv-fieldradio.entry.js +4 -4
  286. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  287. package/dist/esm/nv-fieldselect.entry.js +5 -5
  288. package/dist/esm/nv-fieldslider.entry.js +3 -3
  289. package/dist/esm/nv-fieldtext.entry.js +3 -3
  290. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  291. package/dist/esm/nv-fieldtime.entry.js +10 -10
  292. package/dist/esm/nv-icon.entry.js +3 -3
  293. package/dist/esm/nv-icon.entry.js.map +1 -1
  294. package/dist/esm/nv-iconbutton_2.entry.js +3 -3
  295. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  296. package/dist/esm/nv-menu.entry.js +1 -1
  297. package/dist/esm/nv-menuitem.entry.js +1 -1
  298. package/dist/esm/nv-popover.entry.js +1 -1
  299. package/dist/esm/nv-row.entry.js +1 -1
  300. package/dist/esm/nv-stack.entry.js +1 -1
  301. package/dist/esm/nv-table.entry.js +2 -2
  302. package/dist/esm/nv-toggle.entry.js +3 -3
  303. package/dist/esm/nv-toggle.entry.js.map +1 -1
  304. package/dist/esm/nv-togglebutton.entry.js +54 -0
  305. package/dist/esm/nv-togglebutton.entry.js.map +1 -0
  306. package/dist/esm/nv-togglebuttongroup.entry.js +168 -0
  307. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -0
  308. package/dist/esm/nv-tooltip.entry.js +1 -1
  309. package/dist/native/index.esm.js +1 -1
  310. package/dist/native/index.esm.js.map +1 -1
  311. package/dist/native/native.css +1 -1
  312. package/dist/native/native.esm.js +1 -1
  313. package/dist/native/native.esm.js.map +1 -1
  314. package/dist/native/{p-2a6783ca.entry.js → p-0da8f0d1.entry.js} +2 -2
  315. package/dist/native/{p-2a6783ca.entry.js.map → p-0da8f0d1.entry.js.map} +1 -1
  316. package/dist/native/p-0ef94dae.entry.js +2 -0
  317. package/dist/native/{p-1ad1bff9.entry.js.map → p-0ef94dae.entry.js.map} +1 -1
  318. package/dist/native/p-13032ec1.entry.js +2 -0
  319. package/dist/native/p-13032ec1.entry.js.map +1 -0
  320. package/dist/native/p-184032cb.entry.js +2 -0
  321. package/dist/native/{p-a73fa60a.entry.js.map → p-184032cb.entry.js.map} +1 -1
  322. package/dist/native/p-2197ffdf.entry.js +2 -0
  323. package/dist/native/{p-fa81b77f.entry.js.map → p-2197ffdf.entry.js.map} +1 -1
  324. package/dist/native/p-234cfa2e.entry.js +2 -0
  325. package/dist/native/p-2a3325fb.entry.js +2 -0
  326. package/dist/native/p-2a3325fb.entry.js.map +1 -0
  327. package/dist/native/{p-3f139780.entry.js → p-2d647761.entry.js} +2 -2
  328. package/dist/native/{p-ff248eb8.entry.js → p-348c6bb4.entry.js} +2 -2
  329. package/dist/native/p-397c0fca.entry.js +2 -0
  330. package/dist/native/{p-51a57a3a.entry.js.map → p-397c0fca.entry.js.map} +1 -1
  331. package/dist/native/{p-f687e05c.entry.js → p-3da64006.entry.js} +2 -2
  332. package/dist/native/p-3da64006.entry.js.map +1 -0
  333. package/dist/native/p-3ed84cd9.entry.js +2 -0
  334. package/dist/native/{p-fcd52432.entry.js.map → p-3ed84cd9.entry.js.map} +1 -1
  335. package/dist/native/{p-3ff7a912.entry.js → p-3fcaac6d.entry.js} +2 -2
  336. package/dist/native/{p-b7ec9a1b.entry.js → p-4302824a.entry.js} +2 -2
  337. package/dist/native/p-43071c3b.entry.js +2 -0
  338. package/dist/native/p-44dd9a4c.entry.js +2 -0
  339. package/dist/native/p-44dd9a4c.entry.js.map +1 -0
  340. package/dist/native/p-464bb197.entry.js +2 -0
  341. package/dist/native/p-464bb197.entry.js.map +1 -0
  342. package/dist/native/{p-916acbd3.entry.js → p-49504fd6.entry.js} +2 -2
  343. package/dist/native/{p-bc77cac1.entry.js → p-553778e6.entry.js} +2 -2
  344. package/dist/native/p-553778e6.entry.js.map +1 -0
  345. package/dist/native/{p-bee62b2b.entry.js → p-5f0776cb.entry.js} +2 -2
  346. package/dist/native/p-62032cd9.entry.js +2 -0
  347. package/dist/native/p-62032cd9.entry.js.map +1 -0
  348. package/dist/native/{p-11012998.entry.js → p-676447d7.entry.js} +3 -3
  349. package/dist/native/{p-16ef7dd4.entry.js → p-681f2bac.entry.js} +2 -2
  350. package/dist/native/{p-4b15cff3.entry.js → p-7f0d576b.entry.js} +2 -2
  351. package/dist/native/{p-68edb2e8.entry.js → p-85f8f11a.entry.js} +2 -2
  352. package/dist/native/{p-0e005d95.entry.js → p-888ad58e.entry.js} +2 -2
  353. package/dist/native/{p-34bf336f.entry.js → p-92931ab8.entry.js} +2 -2
  354. package/dist/native/{p-f00a4552.entry.js → p-94dc9c41.entry.js} +2 -2
  355. package/dist/native/{p-85a54ef2.entry.js → p-9c5d6827.entry.js} +2 -2
  356. package/dist/native/{p-08452012.entry.js → p-9f451b8a.entry.js} +3 -3
  357. package/dist/native/{p-08452012.entry.js.map → p-9f451b8a.entry.js.map} +1 -1
  358. package/dist/native/{p-1f932a4b.entry.js → p-aacd8789.entry.js} +2 -2
  359. package/dist/native/p-ac5496e7.entry.js +2 -0
  360. package/dist/native/{p-516da423.entry.js → p-ad2cc829.entry.js} +2 -2
  361. package/dist/native/p-ad2cc829.entry.js.map +1 -0
  362. package/dist/native/p-b2442d4b.entry.js +2 -0
  363. package/dist/native/{p-a36dc25a.entry.js.map → p-b2442d4b.entry.js.map} +1 -1
  364. package/dist/native/{p-67c34b8c.entry.js → p-b58fb522.entry.js} +2 -2
  365. package/dist/native/p-ba9906b7.entry.js +2 -0
  366. package/dist/native/{p-64cb38e6.entry.js.map → p-ba9906b7.entry.js.map} +1 -1
  367. package/dist/native/{p-f540db71.entry.js → p-dd023fd6.entry.js} +2 -2
  368. package/dist/native/p-f033c4ce.entry.js +2 -0
  369. package/dist/native/p-f033c4ce.entry.js.map +1 -0
  370. package/dist/native/{p-051db87c.entry.js → p-fb672f90.entry.js} +2 -2
  371. package/dist/native/p-fc9564b3.js +2 -0
  372. package/dist/native/p-fc9564b3.js.map +1 -0
  373. package/dist/types/components/nv-buttongroup/nv-buttongroup.d.ts +50 -0
  374. package/dist/types/components/nv-buttongroup/nv-buttongroup.docs.d.ts +4 -0
  375. package/dist/types/components/nv-buttongroup/nv-buttongroup.utils.d.ts +25 -0
  376. package/dist/types/components/nv-buttongroup/test/nv-buttongroup.utils.test.d.ts +1 -0
  377. package/dist/types/components/nv-calendar/nv-calendar.d.ts +11 -1
  378. package/dist/types/components/nv-calendar/nv-calendar.utils.d.ts +31 -0
  379. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +11 -1
  380. package/dist/types/components/nv-calendar/partials/day-cell.d.ts +7 -1
  381. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +4 -19
  382. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +1 -0
  383. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +116 -23
  384. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  385. package/dist/types/components/nv-togglebutton/nv-togglebutton.d.ts +46 -0
  386. package/dist/types/components/nv-togglebutton/nv-togglebutton.docs.d.ts +4 -0
  387. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +80 -0
  388. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.d.ts +4 -0
  389. package/dist/types/components.d.ts +289 -2
  390. package/dist/types/utils/constants.d.ts +10 -0
  391. package/dist/vscode-data.json +189 -0
  392. package/hydrate/index.js +1167 -271
  393. package/hydrate/index.mjs +1167 -271
  394. package/package.json +14 -2
  395. package/dist/cjs/constants-8fb8ccc0.js.map +0 -1
  396. package/dist/components/p-1f505531.js.map +0 -1
  397. package/dist/components/p-60064345.js +0 -189
  398. package/dist/components/p-6460318d.js.map +0 -1
  399. package/dist/components/p-79e6b6a2.js.map +0 -1
  400. package/dist/components/p-d32b75ac.js.map +0 -1
  401. package/dist/components/p-e104c58a.js.map +0 -1
  402. package/dist/esm/constants-4faa1fae.js.map +0 -1
  403. package/dist/native/p-10ce53ea.entry.js +0 -2
  404. package/dist/native/p-1ad1bff9.entry.js +0 -2
  405. package/dist/native/p-516da423.entry.js.map +0 -1
  406. package/dist/native/p-51a57a3a.entry.js +0 -2
  407. package/dist/native/p-64cb38e6.entry.js +0 -2
  408. package/dist/native/p-73c08f3b.entry.js +0 -2
  409. package/dist/native/p-73c08f3b.entry.js.map +0 -1
  410. package/dist/native/p-a36dc25a.entry.js +0 -2
  411. package/dist/native/p-a50f3850.entry.js +0 -2
  412. package/dist/native/p-a73fa60a.entry.js +0 -2
  413. package/dist/native/p-b3f9db23.entry.js +0 -2
  414. package/dist/native/p-b3f9db23.entry.js.map +0 -1
  415. package/dist/native/p-bc77cac1.entry.js.map +0 -1
  416. package/dist/native/p-dc34da69.entry.js +0 -2
  417. package/dist/native/p-dc34da69.entry.js.map +0 -1
  418. package/dist/native/p-e2d0a77d.js +0 -2
  419. package/dist/native/p-e2d0a77d.js.map +0 -1
  420. package/dist/native/p-ec92ee7a.entry.js +0 -2
  421. package/dist/native/p-f687e05c.entry.js.map +0 -1
  422. package/dist/native/p-fa81b77f.entry.js +0 -2
  423. package/dist/native/p-fcd52432.entry.js +0 -2
  424. /package/dist/native/{p-ec92ee7a.entry.js.map → p-234cfa2e.entry.js.map} +0 -0
  425. /package/dist/native/{p-3f139780.entry.js.map → p-2d647761.entry.js.map} +0 -0
  426. /package/dist/native/{p-ff248eb8.entry.js.map → p-348c6bb4.entry.js.map} +0 -0
  427. /package/dist/native/{p-3ff7a912.entry.js.map → p-3fcaac6d.entry.js.map} +0 -0
  428. /package/dist/native/{p-b7ec9a1b.entry.js.map → p-4302824a.entry.js.map} +0 -0
  429. /package/dist/native/{p-10ce53ea.entry.js.map → p-43071c3b.entry.js.map} +0 -0
  430. /package/dist/native/{p-916acbd3.entry.js.map → p-49504fd6.entry.js.map} +0 -0
  431. /package/dist/native/{p-bee62b2b.entry.js.map → p-5f0776cb.entry.js.map} +0 -0
  432. /package/dist/native/{p-11012998.entry.js.map → p-676447d7.entry.js.map} +0 -0
  433. /package/dist/native/{p-16ef7dd4.entry.js.map → p-681f2bac.entry.js.map} +0 -0
  434. /package/dist/native/{p-4b15cff3.entry.js.map → p-7f0d576b.entry.js.map} +0 -0
  435. /package/dist/native/{p-68edb2e8.entry.js.map → p-85f8f11a.entry.js.map} +0 -0
  436. /package/dist/native/{p-0e005d95.entry.js.map → p-888ad58e.entry.js.map} +0 -0
  437. /package/dist/native/{p-34bf336f.entry.js.map → p-92931ab8.entry.js.map} +0 -0
  438. /package/dist/native/{p-f00a4552.entry.js.map → p-94dc9c41.entry.js.map} +0 -0
  439. /package/dist/native/{p-85a54ef2.entry.js.map → p-9c5d6827.entry.js.map} +0 -0
  440. /package/dist/native/{p-1f932a4b.entry.js.map → p-aacd8789.entry.js.map} +0 -0
  441. /package/dist/native/{p-a50f3850.entry.js.map → p-ac5496e7.entry.js.map} +0 -0
  442. /package/dist/native/{p-67c34b8c.entry.js.map → p-b58fb522.entry.js.map} +0 -0
  443. /package/dist/native/{p-f540db71.entry.js.map → p-dd023fd6.entry.js.map} +0 -0
  444. /package/dist/native/{p-051db87c.entry.js.map → p-fb672f90.entry.js.map} +0 -0
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-c56424e5.js');
6
6
  const v4 = require('./v4-7014b8b0.js');
7
7
 
8
- const nvFieldmultiselectCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldmultiselect{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldmultiselect[fluid]:not([fluid=false]){max-width:unset}nv-fieldmultiselect[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldmultiselect[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldmultiselect[required]:not([required=false])>label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fieldmultiselect label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{width:100%;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldmultiselect .input-wrapper-multiselect{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldmultiselect .input-container-multiselect{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;width:100%;min-height:40px;}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect>nv-badge{margin-left:var(--form-field-padding-x)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}nv-fieldmultiselect .input-container-multiselect input:focus,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text:focus{outline:none}nv-fieldmultiselect .input-container-multiselect input::placeholder,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-reveal,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton{border:0px;border-radius:0px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldmultiselect .input-container-multiselect nv-icon.validation{color:var(--nv-field-border-default)}nv-fieldmultiselect .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:500;line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fieldmultiselect .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fieldmultiselect .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldmultiselect .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}.no-results-message{text-align:center;padding:10px;color:var(--components-form-text-description-error)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}";
8
+ const nvFieldmultiselectCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldmultiselect{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldmultiselect[fluid]:not([fluid=false]){max-width:unset}nv-fieldmultiselect[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldmultiselect[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldmultiselect[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fieldmultiselect label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{width:100%;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldmultiselect .input-wrapper-multiselect{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldmultiselect .input-container-multiselect{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;width:100%;min-height:40px}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect>nv-badge{margin-left:var(--form-field-padding-x)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}nv-fieldmultiselect .input-container-multiselect input:focus,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text:focus{outline:none}nv-fieldmultiselect .input-container-multiselect input::placeholder,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-reveal,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton{border:0px;border-radius:0px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldmultiselect .input-container-multiselect nv-icon.validation{color:var(--nv-field-border-default)}nv-fieldmultiselect .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:500;line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fieldmultiselect .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fieldmultiselect .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldmultiselect .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}.no-results-message{cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}.select-all-container{position:sticky;top:0;background-color:var(--components-list-dropdown-background);border-bottom:1px solid var(--components-list-dropdown-separator);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);z-index:10;margin-bottom:0}.select-all-container .select-all-header{display:flex;align-items:center;gap:var(--form-field-gap)}.select-all-container .select-all-header nv-fieldcheckbox{flex:1;margin:0}.select-all-container .select-all-header nv-iconbutton,.select-all-container .select-all-header nv-button{flex-shrink:0;margin-left:auto}.select-all-container .select-all-header nv-button{justify-content:center}";
9
9
  const NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
10
10
 
11
11
  const NvFieldmultiselect = class {
@@ -13,8 +13,6 @@ const NvFieldmultiselect = class {
13
13
  index.registerInstance(this, hostRef);
14
14
  this.valueChanged = index.createEvent(this, "valueChanged", 7);
15
15
  this.filterTextChanged = index.createEvent(this, "filterTextChanged", 7);
16
- /****************************************************************************/
17
- //#region PROPERTIES
18
16
  /**
19
17
  * Sets the ID for the input element and the for attribute of the associated
20
18
  * label. If no ID is provided, a random one will be automatically generated
@@ -29,11 +27,6 @@ const NvFieldmultiselect = class {
29
27
  * always type in fresh data.
30
28
  */
31
29
  this.autocomplete = 'off';
32
- /**
33
- * Specifies the selected values of the multiselect field.
34
- * This is the canonical value for the component and is used for form submission.
35
- */
36
- this.value = [];
37
30
  /**
38
31
  * Marks the input field as required.
39
32
  */
@@ -61,13 +54,22 @@ const NvFieldmultiselect = class {
61
54
  */
62
55
  this.open = false;
63
56
  /**
64
- * The text to display when no items match the filter.
57
+ * Allows the field to stretch and fill the entire width of its container.
65
58
  */
66
- this.emptyResult = 'No results found';
59
+ this.fluid = false;
60
+ /**
61
+ * Specifies the selected values of the multiselect field.
62
+ * This is the canonical value for the component and is used for form submission.
63
+ */
64
+ this.value = [];
67
65
  /**
68
66
  * Enables or disables the filtering feature for the multiselect items.
69
67
  */
70
68
  this.filterable = false;
69
+ /**
70
+ * The text to display when no items match the filter.
71
+ */
72
+ this.emptyResult = 'No results found';
71
73
  /**
72
74
  * Delay in milliseconds before the search is triggered when typing in the filter input.
73
75
  * @default 300
@@ -79,10 +81,6 @@ const NvFieldmultiselect = class {
79
81
  * element.
80
82
  */
81
83
  this.autofocus = false;
82
- /**
83
- * Allows the field to stretch and fill the entire width of its container.
84
- */
85
- this.fluid = false;
86
84
  /**
87
85
  * Text for the badge showing the number of selected items.
88
86
  */
@@ -91,6 +89,18 @@ const NvFieldmultiselect = class {
91
89
  * The text entered by the user for filtering multiselect items.
92
90
  */
93
91
  this.filterText = '';
92
+ /**
93
+ * Enables or disables the "Select All / Deselect All" toggle functionality.
94
+ */
95
+ this.enableSelectAll = false;
96
+ /**
97
+ * Text for the "Select All" button.
98
+ */
99
+ this.selectAllLabel = 'Select/deselect all';
100
+ /**
101
+ * Text for the "Deselect All" button.
102
+ */
103
+ this.deselectAllLabel = 'Select/deselect all';
94
104
  //#endregion PROPERTIES
95
105
  /****************************************************************************/
96
106
  //#region STATE
@@ -99,10 +109,22 @@ const NvFieldmultiselect = class {
99
109
  */
100
110
  this.sortedOptions = [];
101
111
  this.isHandlingEscape = false;
112
+ /**
113
+ * Indicates whether the current filter has visible results.
114
+ * Used to control the visibility of the "Select All" button.
115
+ */
116
+ this.hasFilterResults = true;
117
+ /**
118
+ * Controls the visibility of the select all section.
119
+ */
120
+ this.isSelectAllSectionVisible = true;
121
+ // Add the flag to the class
122
+ this.preventBlurClose = false;
102
123
  /**
103
124
  * Handle badge close for options mode.
104
125
  */
105
126
  this.handleBadgeCloseOptions = () => {
127
+ console.info('handleBadgeCloseOptions:', this.value);
106
128
  this.value = [];
107
129
  this.valueChanged.emit(this.value);
108
130
  // Uncheck all elements
@@ -120,6 +142,7 @@ const NvFieldmultiselect = class {
120
142
  * Handle badge close for slots mode.
121
143
  */
122
144
  this.handleBadgeCloseSlots = () => {
145
+ console.info('handleBadgeCloseSlots:', this.value);
123
146
  this.value = [];
124
147
  this.valueChanged.emit(this.value);
125
148
  // Uncheck all elements
@@ -128,8 +151,11 @@ const NvFieldmultiselect = class {
128
151
  item.checked = false;
129
152
  item.style.display = '';
130
153
  });
131
- // Reorder slot content
132
- this.reorderSlotContent();
154
+ // Force DOM update before reordering
155
+ requestAnimationFrame(() => {
156
+ // Reorder slot content
157
+ this.reorderSlotContent();
158
+ });
133
159
  };
134
160
  /**
135
161
  * Handle popover close
@@ -151,12 +177,17 @@ const NvFieldmultiselect = class {
151
177
  this.filterText = '';
152
178
  this.filterTextChanged.emit('');
153
179
  this.resetFilter();
180
+ this.hasFilterResults = true;
154
181
  };
155
182
  /**
156
183
  * Handle input blur for options mode.
157
184
  */
158
185
  this.handleInputBlurOptions = () => {
159
186
  setTimeout(() => {
187
+ if (this.preventBlurClose) {
188
+ this.preventBlurClose = false;
189
+ return; // Don't close the popover
190
+ }
160
191
  if (!this.el.contains(document.activeElement)) {
161
192
  // Close the popover without affecting the divider
162
193
  this.open = false;
@@ -303,6 +334,102 @@ const NvFieldmultiselect = class {
303
334
  }
304
335
  this.open = !this.open;
305
336
  };
337
+ /**
338
+ * Toggles the selection state of all non-disabled options in options mode.
339
+ * Respects filtering by only selecting/deselecting visible items.
340
+ * @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
341
+ */
342
+ this.toggleSelectAllOptions = (selectAll) => {
343
+ if (!this.options)
344
+ return;
345
+ // Get visible and enabled option values from DOM
346
+ const visibleOptionValues = this.getVisibleEnabledOptionItems();
347
+ console.info('[SelectAll][Options] toggleSelectAllOptions called. selectAll:', selectAll, 'visibleOptionValues:', visibleOptionValues, 'Current value:', this.value);
348
+ if (selectAll) {
349
+ // Select all visible options - merge with existing selections
350
+ this.value = [...new Set([...this.value, ...visibleOptionValues])];
351
+ }
352
+ else {
353
+ // Deselect only the visible options, keep others that might be filtered out
354
+ this.value = this.value.filter(val => !visibleOptionValues.includes(val));
355
+ }
356
+ console.info('[SelectAll][Options] New value after toggle:', this.value);
357
+ // Emit the change event
358
+ this.valueChanged.emit(this.value);
359
+ // Synchronize child components
360
+ this.syncChildComponents();
361
+ // Reorder content to move selected items to top
362
+ this.reorderOptionsContent();
363
+ };
364
+ /**
365
+ * Toggles the selection state of all non-disabled slot items.
366
+ * @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
367
+ */
368
+ this.toggleSelectAllSlots = (selectAll) => {
369
+ if (this.options)
370
+ return; // Only for slots mode
371
+ // Get visible and enabled items
372
+ const items = this.getVisibleEnabledSlotItems();
373
+ console.info('[SelectAll][Slots] toggleSelectAllSlots called. selectAll:', selectAll, 'visible slot items:', items.map(item => item.getAttribute('value') || item.getAttribute('label')), 'Current value:', this.value);
374
+ if (selectAll) {
375
+ // Select all visible items
376
+ const allActiveValues = items
377
+ .map(item => item.getAttribute('value') || item.getAttribute('label') || '')
378
+ .filter(value => value !== '');
379
+ this.value = [...new Set([...this.value, ...allActiveValues])];
380
+ }
381
+ else {
382
+ // Deselect only the visible items, keep others that might be filtered out
383
+ const visibleValues = items
384
+ .map(item => item.getAttribute('value') || item.getAttribute('label') || '')
385
+ .filter(value => value !== '');
386
+ this.value = this.value.filter(val => !visibleValues.includes(val));
387
+ }
388
+ console.info('[SelectAll][Slots] New value after toggle:', this.value);
389
+ // Emit the change event
390
+ this.valueChanged.emit(this.value);
391
+ // Force synchronization with a small delay to ensure DOM is updated
392
+ requestAnimationFrame(() => {
393
+ this.syncChildComponents();
394
+ this.reorderSlotContent();
395
+ });
396
+ };
397
+ /**
398
+ * Handle click on the select all checkbox in options mode.
399
+ * @param {Event} event - The click event.
400
+ */
401
+ this.handleSelectAllCheckboxOptionsClick = (event) => {
402
+ event.stopPropagation();
403
+ event.preventDefault();
404
+ console.info('[handleSelectAllCheckboxOptionsClick] event:', event);
405
+ const currentState = this.getSelectAllCheckboxStateOptions();
406
+ console.info('[SelectAll][Options] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
407
+ // Logic to handle the indeterminate state
408
+ // - unchecked → select all
409
+ // - indeterminate → select all (clicking on indeterminate will change to checked)
410
+ // - checked → deselect all
411
+ const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
412
+ console.info('[SelectAll][Options] shouldSelectAll:', shouldSelectAll);
413
+ this.toggleSelectAllOptions(shouldSelectAll);
414
+ };
415
+ /**
416
+ * Handle click on the select all checkbox in slots mode.
417
+ * @param {Event} event - The click event.
418
+ */
419
+ this.handleSelectAllCheckboxSlotsClick = (event) => {
420
+ event.stopPropagation();
421
+ event.preventDefault();
422
+ console.info('[handleSelectAllCheckboxSlotsClick] event:', event);
423
+ const currentState = this.getSelectAllCheckboxStateSlots();
424
+ console.info('[SelectAll][Slots] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
425
+ // Logic to handle the indeterminate state
426
+ // - unchecked → select all
427
+ // - indeterminate → select all (clicking on indeterminate will change to checked)
428
+ // - checked → deselect all
429
+ const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
430
+ console.info('[SelectAll][Slots] shouldSelectAll:', shouldSelectAll);
431
+ this.toggleSelectAllSlots(shouldSelectAll);
432
+ };
306
433
  //#endregion METHODS
307
434
  /****************************************************************************/
308
435
  //#region RENDER
@@ -311,35 +438,83 @@ const NvFieldmultiselect = class {
311
438
  * @returns {any} The JSX for options mode
312
439
  */
313
440
  this.renderOptionsMode = () => {
314
- return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect" }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.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 ? (index.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" })) : (index.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" }, index.h("span", null, this.placeholder))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.h("nv-iconbutton", { "data-scope": "clear-filter", name: "x", size: "md", emphasis: "lower", tabindex: "-1", onClick: this.clearFilterText, "aria-label": "Clear filter text" })), index.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 })), index.h("slot", { name: "after-input" })), index.h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, index.h("ul", { role: "content" }, this.options.map(option => (index.h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.value.includes(option.value), disabled: option.disabled }))), index.h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
441
+ return (index.h(index.Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect" }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.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 ? (index.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` })) : (index.h(index.Fragment, null, index.h("input", { id: this.inputId, type: "text", style: {
442
+ position: 'absolute',
443
+ opacity: '0',
444
+ width: '0',
445
+ height: '0',
446
+ pointerEvents: 'none',
447
+ }, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusOptions }), index.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" }, index.h("span", null, this.placeholder)))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.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: () => {
448
+ this.preventBlurClose = true;
449
+ }, onClick: this.clearFilterText })), index.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: () => {
450
+ this.preventBlurClose = true;
451
+ }, onClick: this.togglePopoverOptions })), index.h("slot", { name: "after-input" })), index.h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, this.shouldShowToggleAllOptionsButton() && (index.h("div", { class: "select-all-container" }, index.h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (index.h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateOptions() === 'checked', indeterminate: this.getSelectAllCheckboxStateOptions() ===
452
+ 'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
453
+ ? this.selectAllLabel
454
+ : this.deselectAllLabel, onMouseDown: () => {
455
+ this.preventBlurClose = true;
456
+ }, onClick: this.handleSelectAllCheckboxOptionsClick }))))), index.h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (index.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()));
315
457
  };
316
458
  /**
317
459
  * Renders the component in slots mode
318
460
  * @returns {any} The JSX for slots mode
319
461
  */
320
462
  this.renderSlotsMode = () => {
321
- return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.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 ? (index.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" })) : (index.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" }, index.h("span", null, this.placeholder))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.h("nv-iconbutton", { name: "x", size: "md", emphasis: "lower", tabindex: "-1", onClick: this.clearFilterText, "aria-label": "Clear filter text" })), index.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 })), index.h("slot", { name: "after-input" })), index.h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, index.h("slot", { name: "content" }))), this.renderDescriptions()));
463
+ return (index.h(index.Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.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 ? (index.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` })) : (index.h(index.Fragment, null, index.h("input", { id: this.inputId, type: "text", style: {
464
+ position: 'absolute',
465
+ opacity: '0',
466
+ width: '0',
467
+ height: '0',
468
+ pointerEvents: 'none',
469
+ }, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusSlots }), index.h("p", { id: this.inputId, class: "non-filterable-text", "aria-label": this.label, onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusSlots, "aria-controls": `${this.inputId}-listbox`, "data-scope": "focusable", role: "button" }, index.h("span", null, this.placeholder)))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.h("nv-iconbutton", { name: "x", size: "md", emphasis: "lower", tabindex: "-1", onMouseDown: () => {
470
+ this.preventBlurClose = true;
471
+ }, onClick: this.clearFilterText, "aria-label": "Clear filter text" })), index.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: () => {
472
+ this.preventBlurClose = true;
473
+ }, onClick: this.togglePopoverSlots })), index.h("slot", { name: "after-input" })), index.h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, this.shouldShowToggleAllSlotButton() && (index.h("div", { class: "select-all-container" }, index.h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (index.h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateSlots() === 'checked', indeterminate: this.getSelectAllCheckboxStateSlots() ===
474
+ 'indeterminate', label: this.getSelectAllCheckboxStateSlots() === 'unchecked'
475
+ ? this.selectAllLabel
476
+ : this.deselectAllLabel, onMouseDown: () => {
477
+ this.preventBlurClose = true;
478
+ }, onClick: this.handleSelectAllCheckboxSlotsClick }))))), index.h("slot", { name: "content" }))), this.renderDescriptions()));
322
479
  };
323
480
  }
324
481
  //#endregion EVENTS
325
482
  /****************************************************************************/
326
483
  //#region WATCHERS
327
484
  handleOptionsChange(newValue) {
485
+ console.info('[Watch:options] newValue:', newValue);
486
+ console.info('[Watch:options] current value before update:', this.value);
328
487
  if (!newValue)
329
488
  return;
330
- this.value = newValue
331
- .filter(option => option.checked)
332
- .map(option => option.value);
489
+ // If the parent has set a value prop, use it. Otherwise, derive from checked options.
490
+ // (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
491
+ if (this.value === undefined || this.value.length === 0) {
492
+ this.value = newValue
493
+ .filter(option => option.checked)
494
+ .map(option => option.value);
495
+ console.info('[Watch:options] updated value from checked options:', this.value);
496
+ }
497
+ else {
498
+ // If value is set, ensure checked states in options match value
499
+ newValue.forEach(option => {
500
+ option.checked = this.value.includes(option.value);
501
+ });
502
+ console.info('[Watch:options] options checked state synced to value:', newValue);
503
+ }
333
504
  this.reorderOptionsContent();
334
505
  }
335
- /**
336
- * Emitted when the value changes.
337
- */
338
506
  watchValueHandler() {
507
+ console.info('[Watch:value] Value changed:', this.value);
339
508
  // Synchronize child components when value changes programmatically
340
509
  if (this.el && this.el.isConnected) {
341
510
  this.syncChildComponents();
342
511
  }
512
+ // Also, update options checked state if options exist
513
+ if (this.options) {
514
+ this.options.forEach(option => {
515
+ option.checked = this.value.includes(option.value);
516
+ });
517
+ }
343
518
  }
344
519
  //#endregion WATCHERS
345
520
  /****************************************************************************/
@@ -378,6 +553,7 @@ const NvFieldmultiselect = class {
378
553
  return;
379
554
  }
380
555
  const { value, checked } = event.detail;
556
+ console.info('[Event:itemChecked] value:', value, 'checked:', checked, 'current value:', this.value);
381
557
  if (value !== undefined && value !== null) {
382
558
  const newValue = [...this.value];
383
559
  const valueIndex = newValue.indexOf(value);
@@ -387,6 +563,7 @@ const NvFieldmultiselect = class {
387
563
  else if (!checked && valueIndex > -1) {
388
564
  newValue.splice(valueIndex, 1);
389
565
  }
566
+ console.info('[Event:itemChecked] newValue after update:', newValue);
390
567
  // Always update the state and emit the event when an item is checked/unchecked
391
568
  this.value = newValue;
392
569
  this.valueChanged.emit(this.value);
@@ -399,7 +576,7 @@ const NvFieldmultiselect = class {
399
576
  }
400
577
  }
401
578
  else {
402
- console.warn('Received itemChecked event with undefined or null value'); // Warning log
579
+ console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
403
580
  }
404
581
  }
405
582
  // Add a listener for the slot content
@@ -421,6 +598,7 @@ const NvFieldmultiselect = class {
421
598
  * Subscribe to click outside event.
422
599
  */
423
600
  connectedCallback() {
601
+ console.info('[Lifecycle] connectedCallback - value:', this.value);
424
602
  document.addEventListener('click', this.handleClickOutside.bind(this));
425
603
  }
426
604
  /**
@@ -428,12 +606,15 @@ const NvFieldmultiselect = class {
428
606
  */
429
607
  componentWillLoad() {
430
608
  var _a;
609
+ console.info('[Lifecycle] componentWillLoad - value:', this.value, 'options:', this.options);
431
610
  // Don't call handleOptionsChange if we are in slots mode
432
611
  if (this.options) {
433
612
  this.handleOptionsChange(this.options);
434
613
  }
435
614
  // Specific initialization for slots mode
436
615
  if (!this.options) {
616
+ // Initialize value from checked slotted children
617
+ this.initializeValueFromSlots();
437
618
  // Use a microtask to ensure DOM is ready
438
619
  Promise.resolve().then(() => {
439
620
  // Synchronize child components
@@ -452,21 +633,30 @@ const NvFieldmultiselect = class {
452
633
  if (!this.filterText) {
453
634
  this.resetFilter();
454
635
  }
636
+ // Initialize filter results state
637
+ this.hasFilterResults = true;
455
638
  }
456
639
  /**
457
640
  * Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch
458
641
  */
459
642
  componentDidLoad() {
643
+ console.info('[Lifecycle] componentDidLoad - value:', this.value, 'options:', this.options);
460
644
  if (this.options) {
461
645
  this.handleOptionsChange(this.options);
462
646
  }
463
647
  // Final synchronization of child components after everything is loaded
464
648
  this.syncChildComponents();
649
+ // For slots mode, ensure value is initialized from checked children if not already
650
+ if (!this.options) {
651
+ this.initializeValueFromSlots();
652
+ this.syncChildComponents();
653
+ }
465
654
  }
466
655
  /**
467
656
  * Unsubscribe from click outside event.
468
657
  */
469
658
  disconnectedCallback() {
659
+ console.info('[Lifecycle] disconnectedCallback - value:', this.value);
470
660
  document.removeEventListener('click', this.handleClickOutside.bind(this));
471
661
  }
472
662
  //#endregion LIFECYCLE
@@ -501,14 +691,67 @@ const NvFieldmultiselect = class {
501
691
  this.manageDivider(ul, selectedItems, unselectedItems);
502
692
  }
503
693
  }
694
+ // Reset filter results state
695
+ this.hasFilterResults = true;
504
696
  }
505
697
  /**
506
698
  * Returns the list of selected values.
507
699
  * @returns {string[]} The selected values.
508
700
  */
509
701
  async getSelectedValues() {
702
+ console.info('getSelectedValues:', this.value);
510
703
  return this.value;
511
704
  }
705
+ /**
706
+ * Select all visible and enabled items.
707
+ * Works for both options and slots mode.
708
+ * @returns {Promise<void>}
709
+ */
710
+ async selectAll() {
711
+ if (this.disabled || this.readonly)
712
+ return;
713
+ if (this.options) {
714
+ this.toggleSelectAllOptions(true);
715
+ }
716
+ else {
717
+ this.toggleSelectAllSlots(true);
718
+ }
719
+ }
720
+ /**
721
+ * Deselect all visible and enabled items.
722
+ * Works for both options and slots mode.
723
+ * @returns {Promise<void>}
724
+ */
725
+ async deselectAll() {
726
+ if (this.disabled || this.readonly)
727
+ return;
728
+ if (this.options) {
729
+ this.toggleSelectAllOptions(false);
730
+ }
731
+ else {
732
+ this.toggleSelectAllSlots(false);
733
+ }
734
+ }
735
+ /**
736
+ * Toggle selection state of all visible and enabled items.
737
+ * If all items are selected, deselects all. Otherwise, selects all.
738
+ * Works for both options and slots mode.
739
+ * @returns {Promise<void>}
740
+ */
741
+ async toggleSelectAll() {
742
+ if (this.disabled || this.readonly)
743
+ return;
744
+ const currentState = this.options
745
+ ? this.getSelectAllCheckboxStateOptions()
746
+ : this.getSelectAllCheckboxStateSlots();
747
+ const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
748
+ if (this.options) {
749
+ this.toggleSelectAllOptions(shouldSelectAll);
750
+ }
751
+ else {
752
+ this.toggleSelectAllSlots(shouldSelectAll);
753
+ }
754
+ }
512
755
  /**
513
756
  * Reorder the content of the slot.
514
757
  */
@@ -552,7 +795,7 @@ const NvFieldmultiselect = class {
552
795
  * Reorder the content for options mode with async handling
553
796
  */
554
797
  reorderOptionsContent() {
555
- const ul = this.el.querySelector('ul[role="content"]');
798
+ const ul = this.el.querySelector('ul');
556
799
  if (!ul)
557
800
  return;
558
801
  const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
@@ -660,6 +903,7 @@ const NvFieldmultiselect = class {
660
903
  this.removeEmptyMessageOption(ul);
661
904
  items.forEach(item => (item.style.display = ''));
662
905
  this.reorderOptionsContent(); // Reorder after reset
906
+ this.hasFilterResults = true; // Reset filter means we have results
663
907
  return;
664
908
  }
665
909
  // Filter the items
@@ -672,6 +916,8 @@ const NvFieldmultiselect = class {
672
916
  if (matchesFilter)
673
917
  hasVisibleItems = true;
674
918
  });
919
+ // Update the filter results state
920
+ this.hasFilterResults = hasVisibleItems;
675
921
  // Manage the divider with the visible items
676
922
  const visibleItems = items.filter(item => item.style.display !== 'none');
677
923
  const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
@@ -702,6 +948,7 @@ const NvFieldmultiselect = class {
702
948
  // If filter text is empty, reset all items visibility
703
949
  if (!this.filterText.trim()) {
704
950
  this.resetFilter();
951
+ this.hasFilterResults = true; // Reset filter means we have results
705
952
  return;
706
953
  }
707
954
  const normalizedFilter = this.normalizeText(this.filterText);
@@ -721,6 +968,8 @@ const NvFieldmultiselect = class {
721
968
  if (matchesFilter)
722
969
  hasVisibleItems = true;
723
970
  });
971
+ // Update the filter results state
972
+ this.hasFilterResults = hasVisibleItems;
724
973
  // Get visible items after filtering
725
974
  const visibleItems = items.filter(item => item.style.display !== 'none');
726
975
  const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
@@ -931,10 +1180,13 @@ const NvFieldmultiselect = class {
931
1180
  return;
932
1181
  }
933
1182
  const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
1183
+ console.info('[syncChildComponents] value:', this.value);
934
1184
  items.forEach(item => {
935
1185
  // Get the effective value: use explicit value if present, otherwise use label
936
1186
  const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
937
- if (this.value.includes(itemValue)) {
1187
+ const shouldBeChecked = this.value.includes(itemValue);
1188
+ console.info('[syncChildComponents] itemValue:', itemValue, 'shouldBeChecked:', shouldBeChecked, 'item.checked(before):', item.checked);
1189
+ if (shouldBeChecked) {
938
1190
  item.setAttribute('checked', '');
939
1191
  item.checked = true;
940
1192
  }
@@ -942,8 +1194,106 @@ const NvFieldmultiselect = class {
942
1194
  item.removeAttribute('checked');
943
1195
  item.checked = false;
944
1196
  }
1197
+ console.info('[syncChildComponents] itemValue:', itemValue, 'item.checked(after):', item.checked);
1198
+ });
1199
+ }
1200
+ /**
1201
+ * Gets visible and enabled slot items using consistent logic.
1202
+ * @returns {Element[]} Array of visible and enabled items
1203
+ */
1204
+ getVisibleEnabledSlotItems() {
1205
+ const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
1206
+ return allItems.filter(item => {
1207
+ const isHidden = item.style.display === 'none';
1208
+ const isDisabled = item.hasAttribute('disabled');
1209
+ return !isHidden && !isDisabled;
945
1210
  });
946
1211
  }
1212
+ /**
1213
+ * Gets visible and enabled option items by checking DOM elements.
1214
+ * @returns {string[]} Array of visible and enabled option values
1215
+ */
1216
+ getVisibleEnabledOptionItems() {
1217
+ const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
1218
+ const visibleItems = allItems.filter(item => {
1219
+ const isHidden = item.style.display === 'none';
1220
+ const isDisabled = item.hasAttribute('disabled');
1221
+ return !isHidden && !isDisabled;
1222
+ });
1223
+ return visibleItems
1224
+ .map(item => item.getAttribute('value') || '')
1225
+ .filter(value => value !== '');
1226
+ }
1227
+ /**
1228
+ * Determines if the toggle all button should be shown in options mode.
1229
+ * @returns {boolean} True if there are visible items and no "No results found" message
1230
+ */
1231
+ shouldShowToggleAllOptionsButton() {
1232
+ if (!this.options)
1233
+ return false; // Only for options mode
1234
+ return this.enableSelectAll && this.hasFilterResults;
1235
+ }
1236
+ /**
1237
+ * Gets the checkbox state for the select all checkbox in options mode.
1238
+ * @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
1239
+ */
1240
+ getSelectAllCheckboxStateOptions() {
1241
+ if (!this.options)
1242
+ return 'unchecked';
1243
+ // Get visible and enabled option values from DOM
1244
+ const visibleOptionValues = this.getVisibleEnabledOptionItems();
1245
+ if (visibleOptionValues.length === 0)
1246
+ return 'unchecked';
1247
+ const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
1248
+ if (selectedVisibleOptions.length === 0)
1249
+ return 'unchecked';
1250
+ if (selectedVisibleOptions.length === visibleOptionValues.length)
1251
+ return 'checked';
1252
+ return 'indeterminate';
1253
+ }
1254
+ /**
1255
+ * Gets the checkbox state for the select all checkbox in slots mode.
1256
+ * @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
1257
+ */
1258
+ getSelectAllCheckboxStateSlots() {
1259
+ if (this.options)
1260
+ return 'unchecked';
1261
+ // Get all visible and enabled items
1262
+ const items = this.getVisibleEnabledSlotItems();
1263
+ if (items.length === 0)
1264
+ return 'unchecked';
1265
+ const selectedItems = items.filter(item => {
1266
+ const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
1267
+ return itemValue !== '' && this.value.includes(itemValue);
1268
+ });
1269
+ if (selectedItems.length === 0)
1270
+ return 'unchecked';
1271
+ if (selectedItems.length === items.length)
1272
+ return 'checked';
1273
+ return 'indeterminate';
1274
+ }
1275
+ /**
1276
+ * Determines if the toggle all button should be shown in slots mode.
1277
+ * @returns {boolean} True if there are visible items and no "No results found" message
1278
+ */
1279
+ shouldShowToggleAllSlotButton() {
1280
+ if (this.options)
1281
+ return false; // Only for slots mode
1282
+ return this.enableSelectAll && this.hasFilterResults;
1283
+ }
1284
+ /**
1285
+ * Initializes the value array from checked slotted nv-fielddropdownitemcheck elements (slots mode only).
1286
+ */
1287
+ initializeValueFromSlots() {
1288
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
1289
+ // Values from checked slot children
1290
+ const checkedValues = items
1291
+ .filter(item => item.hasAttribute('checked'))
1292
+ .map(item => item.getAttribute('value') || item.getAttribute('label') || '');
1293
+ // Combine with current this.value (set by code), ensuring uniqueness
1294
+ this.value = Array.from(new Set([...(this.value || []), ...checkedValues]));
1295
+ console.info('[initializeValueFromSlots] checkedValues:', checkedValues, 'combined value:', this.value);
1296
+ }
947
1297
  /**
948
1298
  * Renders description and error description sections
949
1299
  * @returns {any} The JSX for descriptions