@nova-design-system/nova-webcomponents 3.6.0 → 3.7.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 (291) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/native.cjs.js +1 -1
  3. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  4. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  5. package/dist/cjs/nv-accordion.cjs.entry.js +16 -43
  6. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  8. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-calendar.cjs.entry.js +96 -75
  10. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
  12. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-fielddate.cjs.entry.js +26 -5
  14. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-fielddaterange.cjs.entry.js +32 -4
  16. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  18. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +14 -6
  20. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  22. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  23. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  24. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  25. package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
  26. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  27. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  28. package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
  29. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  31. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  33. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  34. package/dist/cjs/nv-popover.cjs.entry.js +1 -1
  35. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  36. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  37. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  38. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  39. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  40. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +17 -10
  41. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
  42. package/dist/collection/components/nv-accordion/nv-accordion.js +23 -55
  43. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  44. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +5 -5
  45. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  46. package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
  47. package/dist/collection/components/nv-calendar/nv-calendar.js +113 -74
  48. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  49. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -0
  50. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  51. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -4
  52. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  53. package/dist/collection/components/nv-fielddate/nv-fielddate.js +51 -5
  54. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  55. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +61 -4
  56. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  57. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  58. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  59. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +7 -1
  60. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
  61. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +8 -8
  62. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  63. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +14 -6
  64. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  65. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  66. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  67. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  68. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  69. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  70. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  71. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  72. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  73. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  74. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +11 -13
  75. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  76. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  77. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  78. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  79. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  80. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  81. package/dist/collection/components/nv-row/nv-row.js +1 -1
  82. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  83. package/dist/collection/components/nv-table/nv-table.js +2 -2
  84. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  85. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  86. package/dist/components/nv-accordion-item.js +1 -1
  87. package/dist/components/nv-accordion.js +22 -52
  88. package/dist/components/nv-accordion.js.map +1 -1
  89. package/dist/components/nv-alert.js +1 -1
  90. package/dist/components/nv-avatar.js +1 -1
  91. package/dist/components/nv-badge.js +1 -1
  92. package/dist/components/nv-breadcrumb.js +2 -2
  93. package/dist/components/nv-button.js +1 -1
  94. package/dist/components/nv-calendar.js +1 -1
  95. package/dist/components/nv-datagrid.js +2 -2
  96. package/dist/components/nv-dialog.js +4 -4
  97. package/dist/components/nv-dialogfooter.js +1 -1
  98. package/dist/components/nv-fieldcheckbox.js +1 -1
  99. package/dist/components/nv-fielddate.js +34 -12
  100. package/dist/components/nv-fielddate.js.map +1 -1
  101. package/dist/components/nv-fielddaterange.js +40 -11
  102. package/dist/components/nv-fielddaterange.js.map +1 -1
  103. package/dist/components/nv-fielddropdown.js +8 -8
  104. package/dist/components/nv-fielddropdownitem.js +1 -1
  105. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  106. package/dist/components/nv-fieldmultiselect.js +21 -13
  107. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  108. package/dist/components/nv-fieldnumber.js +1 -1
  109. package/dist/components/nv-fieldpassword.js +6 -6
  110. package/dist/components/nv-fieldradio.js +3 -3
  111. package/dist/components/nv-fieldselect.js +8 -8
  112. package/dist/components/nv-fieldslider.js +7 -7
  113. package/dist/components/nv-fieldtext.js +1 -1
  114. package/dist/components/nv-fieldtextarea.js +3 -3
  115. package/dist/components/nv-fieldtime.js +14 -14
  116. package/dist/components/nv-fieldtime.js.map +1 -1
  117. package/dist/components/nv-icon.js +1 -1
  118. package/dist/components/nv-iconbutton.js +1 -1
  119. package/dist/components/nv-loader.js +1 -1
  120. package/dist/components/nv-menu.js +4 -4
  121. package/dist/components/nv-menuitem.js +1 -1
  122. package/dist/components/nv-popover.js +1 -1
  123. package/dist/components/nv-row.js +1 -1
  124. package/dist/components/nv-stack.js +1 -1
  125. package/dist/components/nv-table.js +2 -2
  126. package/dist/components/nv-toggle.js +2 -2
  127. package/dist/components/nv-tooltip.js +1 -1
  128. package/dist/components/{p-9ed7a440.js → p-0143cee0.js} +5 -5
  129. package/dist/components/p-0143cee0.js.map +1 -0
  130. package/dist/components/{p-d2b4441a.js → p-07550eac.js} +3 -3
  131. package/dist/components/{p-d2b4441a.js.map → p-07550eac.js.map} +1 -1
  132. package/dist/components/{p-f266b533.js → p-12258eef.js} +5 -5
  133. package/dist/components/{p-f266b533.js.map → p-12258eef.js.map} +1 -1
  134. package/dist/components/{p-316ae8e3.js → p-144e80f0.js} +4 -4
  135. package/dist/components/{p-316ae8e3.js.map → p-144e80f0.js.map} +1 -1
  136. package/dist/components/{p-230ad6c5.js → p-44df0d22.js} +7 -7
  137. package/dist/components/p-44df0d22.js.map +1 -0
  138. package/dist/components/{p-8a5b0f74.js → p-5d5668f0.js} +2 -2
  139. package/dist/components/{p-8a5b0f74.js.map → p-5d5668f0.js.map} +1 -1
  140. package/dist/components/{p-618ae85a.js → p-8067d283.js} +2 -2
  141. package/dist/components/{p-618ae85a.js.map → p-8067d283.js.map} +1 -1
  142. package/dist/components/{p-5e89eb9d.js → p-8b82a6f4.js} +7 -7
  143. package/dist/components/{p-5e89eb9d.js.map → p-8b82a6f4.js.map} +1 -1
  144. package/dist/components/{p-9cff2fd1.js → p-91a558eb.js} +2 -2
  145. package/dist/components/{p-9cff2fd1.js.map → p-91a558eb.js.map} +1 -1
  146. package/dist/components/{p-436a0f99.js → p-ba87d9d5.js} +3 -3
  147. package/dist/components/{p-436a0f99.js.map → p-ba87d9d5.js.map} +1 -1
  148. package/dist/components/{p-840858ed.js → p-d32b75ac.js} +99 -77
  149. package/dist/components/p-d32b75ac.js.map +1 -0
  150. package/dist/components/{p-ac76a11c.js → p-d576d64f.js} +4 -4
  151. package/dist/components/{p-ac76a11c.js.map → p-d576d64f.js.map} +1 -1
  152. package/dist/components/{p-f1bbb9e8.js → p-dd7ff995.js} +2 -2
  153. package/dist/components/{p-f1bbb9e8.js.map → p-dd7ff995.js.map} +1 -1
  154. package/dist/components/{p-4864a690.js → p-dfd2d4f0.js} +2 -2
  155. package/dist/components/{p-4864a690.js.map → p-dfd2d4f0.js.map} +1 -1
  156. package/dist/components/{p-190c8f60.js → p-e104c58a.js} +4 -4
  157. package/dist/components/p-e104c58a.js.map +1 -0
  158. package/dist/components/{p-4069966e.js → p-e8e6f88a.js} +2 -2
  159. package/dist/components/{p-4069966e.js.map → p-e8e6f88a.js.map} +1 -1
  160. package/dist/components/{p-79b38dfb.js → p-f97d1cb1.js} +3 -3
  161. package/dist/components/{p-79b38dfb.js.map → p-f97d1cb1.js.map} +1 -1
  162. package/dist/esm/loader.js +1 -1
  163. package/dist/esm/native.js +1 -1
  164. package/dist/esm/nv-accordion-item.entry.js +2 -2
  165. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  166. package/dist/esm/nv-accordion.entry.js +16 -43
  167. package/dist/esm/nv-accordion.entry.js.map +1 -1
  168. package/dist/esm/nv-badge_2.entry.js +1 -1
  169. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  170. package/dist/esm/nv-calendar.entry.js +96 -75
  171. package/dist/esm/nv-calendar.entry.js.map +1 -1
  172. package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
  173. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  174. package/dist/esm/nv-fielddate.entry.js +26 -5
  175. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  176. package/dist/esm/nv-fielddaterange.entry.js +32 -4
  177. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  178. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  179. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  180. package/dist/esm/nv-fieldmultiselect.entry.js +14 -6
  181. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  182. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  183. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  184. package/dist/esm/nv-fieldradio.entry.js +3 -3
  185. package/dist/esm/nv-fieldselect.entry.js +5 -5
  186. package/dist/esm/nv-fieldslider.entry.js +3 -3
  187. package/dist/esm/nv-fieldtext.entry.js +3 -3
  188. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  189. package/dist/esm/nv-fieldtime.entry.js +10 -10
  190. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  191. package/dist/esm/nv-icon.entry.js +1 -1
  192. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  193. package/dist/esm/nv-menu.entry.js +1 -1
  194. package/dist/esm/nv-menuitem.entry.js +1 -1
  195. package/dist/esm/nv-popover.entry.js +1 -1
  196. package/dist/esm/nv-row.entry.js +1 -1
  197. package/dist/esm/nv-stack.entry.js +1 -1
  198. package/dist/esm/nv-table.entry.js +2 -2
  199. package/dist/esm/nv-toggle.entry.js +2 -2
  200. package/dist/esm/nv-tooltip.entry.js +1 -1
  201. package/dist/native/native.css +1 -1
  202. package/dist/native/native.esm.js +1 -1
  203. package/dist/native/native.esm.js.map +1 -1
  204. package/dist/native/p-051db87c.entry.js +2 -0
  205. package/dist/native/p-051db87c.entry.js.map +1 -0
  206. package/dist/native/{p-c9cde996.entry.js → p-0e005d95.entry.js} +2 -2
  207. package/dist/native/{p-33e5037d.entry.js → p-10ce53ea.entry.js} +2 -2
  208. package/dist/native/{p-cf468c67.entry.js → p-12039da4.entry.js} +2 -2
  209. package/dist/native/{p-b829383a.entry.js → p-16ef7dd4.entry.js} +2 -2
  210. package/dist/native/{p-0ada0382.entry.js → p-2a6783ca.entry.js} +2 -2
  211. package/dist/native/p-2a6783ca.entry.js.map +1 -0
  212. package/dist/native/{p-ddb0b9f6.entry.js → p-34bf336f.entry.js} +2 -2
  213. package/dist/native/{p-625be06b.entry.js → p-3f139780.entry.js} +2 -2
  214. package/dist/native/{p-c2826f22.entry.js → p-40fa3328.entry.js} +2 -2
  215. package/dist/native/{p-8030c16b.entry.js → p-4b15cff3.entry.js} +2 -2
  216. package/dist/native/{p-0ac03708.entry.js → p-516da423.entry.js} +2 -2
  217. package/dist/native/p-516da423.entry.js.map +1 -0
  218. package/dist/native/{p-f9aa4900.entry.js → p-64cb38e6.entry.js} +2 -2
  219. package/dist/native/{p-bab6d0a5.entry.js → p-67c34b8c.entry.js} +2 -2
  220. package/dist/native/{p-31e72603.entry.js → p-68edb2e8.entry.js} +2 -2
  221. package/dist/native/p-73c08f3b.entry.js +2 -0
  222. package/dist/native/p-73c08f3b.entry.js.map +1 -0
  223. package/dist/native/p-7703c736.entry.js +2 -0
  224. package/dist/native/p-7703c736.entry.js.map +1 -0
  225. package/dist/native/{p-1cce9b24.entry.js → p-916acbd3.entry.js} +2 -2
  226. package/dist/native/p-a50f3850.entry.js +2 -0
  227. package/dist/native/{p-2d23fcea.entry.js → p-a73fa60a.entry.js} +2 -2
  228. package/dist/native/{p-5eca22c7.entry.js → p-b3f9db23.entry.js} +2 -2
  229. package/dist/native/{p-5eca22c7.entry.js.map → p-b3f9db23.entry.js.map} +1 -1
  230. package/dist/native/{p-be67545e.entry.js → p-bba5cc9b.entry.js} +2 -2
  231. package/dist/native/{p-e802fbb8.entry.js → p-bee62b2b.entry.js} +2 -2
  232. package/dist/native/p-dc34da69.entry.js +2 -0
  233. package/dist/native/p-dc34da69.entry.js.map +1 -0
  234. package/dist/native/{p-2576c1a0.entry.js → p-f00a4552.entry.js} +2 -2
  235. package/dist/native/{p-609b3822.entry.js → p-f540db71.entry.js} +2 -2
  236. package/dist/native/{p-fca3e27d.entry.js → p-f687e05c.entry.js} +2 -2
  237. package/dist/native/p-f687e05c.entry.js.map +1 -0
  238. package/dist/native/{p-18831490.entry.js → p-fa81b77f.entry.js} +2 -2
  239. package/dist/native/p-fa81b77f.entry.js.map +1 -0
  240. package/dist/native/{p-e19a8885.entry.js → p-fcd52432.entry.js} +2 -2
  241. package/dist/types/components/nv-accordion/nv-accordion.d.ts +16 -49
  242. package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +2 -2
  243. package/dist/types/components/nv-calendar/nv-calendar.d.ts +7 -1
  244. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +2 -0
  245. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +2 -0
  246. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +5 -0
  247. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -0
  248. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +6 -0
  249. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +4 -0
  250. package/dist/types/components.d.ts +56 -10
  251. package/dist/vscode-data.json +1 -5
  252. package/hydrate/index.js +261 -200
  253. package/hydrate/index.mjs +261 -200
  254. package/package.json +1 -1
  255. package/readme.md +6 -0
  256. package/dist/components/p-190c8f60.js.map +0 -1
  257. package/dist/components/p-230ad6c5.js.map +0 -1
  258. package/dist/components/p-840858ed.js.map +0 -1
  259. package/dist/components/p-9ed7a440.js.map +0 -1
  260. package/dist/native/p-0ac03708.entry.js.map +0 -1
  261. package/dist/native/p-0ada0382.entry.js.map +0 -1
  262. package/dist/native/p-12963ae4.entry.js +0 -2
  263. package/dist/native/p-12963ae4.entry.js.map +0 -1
  264. package/dist/native/p-18831490.entry.js.map +0 -1
  265. package/dist/native/p-4cf00884.entry.js +0 -2
  266. package/dist/native/p-4cf00884.entry.js.map +0 -1
  267. package/dist/native/p-5172f17a.entry.js +0 -2
  268. package/dist/native/p-a6dc9b59.entry.js +0 -2
  269. package/dist/native/p-a6dc9b59.entry.js.map +0 -1
  270. package/dist/native/p-fca3e27d.entry.js.map +0 -1
  271. package/dist/native/p-fe4e516b.entry.js +0 -2
  272. package/dist/native/p-fe4e516b.entry.js.map +0 -1
  273. /package/dist/native/{p-c9cde996.entry.js.map → p-0e005d95.entry.js.map} +0 -0
  274. /package/dist/native/{p-33e5037d.entry.js.map → p-10ce53ea.entry.js.map} +0 -0
  275. /package/dist/native/{p-cf468c67.entry.js.map → p-12039da4.entry.js.map} +0 -0
  276. /package/dist/native/{p-b829383a.entry.js.map → p-16ef7dd4.entry.js.map} +0 -0
  277. /package/dist/native/{p-ddb0b9f6.entry.js.map → p-34bf336f.entry.js.map} +0 -0
  278. /package/dist/native/{p-625be06b.entry.js.map → p-3f139780.entry.js.map} +0 -0
  279. /package/dist/native/{p-c2826f22.entry.js.map → p-40fa3328.entry.js.map} +0 -0
  280. /package/dist/native/{p-8030c16b.entry.js.map → p-4b15cff3.entry.js.map} +0 -0
  281. /package/dist/native/{p-f9aa4900.entry.js.map → p-64cb38e6.entry.js.map} +0 -0
  282. /package/dist/native/{p-bab6d0a5.entry.js.map → p-67c34b8c.entry.js.map} +0 -0
  283. /package/dist/native/{p-31e72603.entry.js.map → p-68edb2e8.entry.js.map} +0 -0
  284. /package/dist/native/{p-1cce9b24.entry.js.map → p-916acbd3.entry.js.map} +0 -0
  285. /package/dist/native/{p-5172f17a.entry.js.map → p-a50f3850.entry.js.map} +0 -0
  286. /package/dist/native/{p-2d23fcea.entry.js.map → p-a73fa60a.entry.js.map} +0 -0
  287. /package/dist/native/{p-be67545e.entry.js.map → p-bba5cc9b.entry.js.map} +0 -0
  288. /package/dist/native/{p-e802fbb8.entry.js.map → p-bee62b2b.entry.js.map} +0 -0
  289. /package/dist/native/{p-2576c1a0.entry.js.map → p-f00a4552.entry.js.map} +0 -0
  290. /package/dist/native/{p-609b3822.entry.js.map → p-f540db71.entry.js.map} +0 -0
  291. /package/dist/native/{p-e19a8885.entry.js.map → p-fcd52432.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nv-fieldmultiselect.js","sourceRoot":"","sources":["../../../src/components/nv-fieldmultiselect/nv-fieldmultiselect.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { TextInputAutocomplete } from '../../utils/constants';\n\n/**\n * @slot content - The content of the list.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n@Component({\n tag: 'nv-fieldmultiselect',\n styleUrl: 'styles/nv-fieldmultiselect.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldmultiselect {\n @Element() el: HTMLNvFieldmultiselectElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n /**\n * Timer for debouncing input events.\n * Private property preferred over @State as it:\n * - Doesn't need to trigger re-renders\n * - Is purely for internal logic\n * - Improves performance by avoiding Stencil's reactivity system\n */\n private debounceTimer: number;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It's a crucial element for making forms clear and user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they've used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the selected values of the multiselect field.\n * This is the canonical value for the component and is used for form submission.\n */\n @Prop({ reflect: false, mutable: true })\n value: string[] = [];\n\n /**\n * Marks the input field as required.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Display the input field's content without allowing users to change it.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * Disables the input field.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the multiselect\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Defines the maximum height of the multiselect list when open.\n */\n @Prop({ reflect: true })\n readonly maxHeight: string = '';\n\n /**\n * State of the multiselect popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyResult: string = 'No results found';\n\n /**\n * Enables or disables the filtering feature for the multiselect items.\n */\n @Prop({ reflect: true })\n readonly filterable: boolean = false;\n\n /**\n * List of options used to automatically generate dropdown items. This\n * provides an alternative to using the slot manually.\n *\n * @example\n * options=[{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\",\n * }]\n */\n @Prop({ reflect: false, mutable: true })\n options?: {\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is a divider */\n isDivider?: boolean;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Additional description for the option */\n description?: string;\n /** Whether this option is pre-checked */\n checked?: boolean;\n }[];\n\n /**\n * Delay in milliseconds before the search is triggered when typing in the filter input.\n * @default 300\n */\n @Prop({ reflect: true })\n readonly debounceDelay: number = 300;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n /**\n * Allows the field to stretch and fill the entire width of its container.\n */\n @Prop({ reflect: true })\n readonly fluid: boolean = false;\n\n /**\n * Text for the badge showing the number of selected items.\n */\n @Prop({ reflect: true })\n readonly badgeLabel: string = '';\n\n /**\n * The text entered by the user for filtering multiselect items.\n */\n @Prop({ reflect: true, mutable: true })\n filterText: string = '';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n /**\n * Sorted options for display.\n */\n @State()\n sortedOptions: Array<{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is a divider */\n isDivider?: boolean;\n }> = [];\n\n @State()\n private isHandlingEscape: boolean = false;\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the selected values change.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string[]>;\n\n /**\n * Emitted when the filter text changes.\n */\n @Event()\n filterTextChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('options')\n handleOptionsChange(newValue: typeof this.options) {\n if (!newValue) return;\n\n this.value = newValue\n .filter(option => option.checked)\n .map(option => option.value);\n\n this.reorderOptionsContent();\n }\n\n /**\n * Emitted when the value changes.\n */\n @Watch('value')\n watchValueHandler() {\n // Synchronize child components when value changes programmatically\n if (this.el && this.el.isConnected) {\n this.syncChildComponents();\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LISTENERS\n\n /**\n * Emitted when the input loses focus.\n * @param {CustomEvent<boolean>} event - The event object containing the focus state.\n */\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n // Update `open` based on the popover state\n this.open = event.detail;\n\n if (this.open) {\n // Filter items only if there is filter text\n if (this.filterText) {\n this.filterItems();\n }\n } else {\n this.handlePopoverClose();\n }\n\n if (this.options) {\n this.reorderOptionsContent();\n } else {\n this.reorderSlotContent();\n }\n }\n\n /**\n * Listen for the `itemChecked` event emitted by child items.\n * @param {CustomEvent} event - The event object containing the selected value and its checked state.\n */\n @Listen('itemChecked')\n handleItemChecked(\n event: CustomEvent<{\n /** Value associated with the option */\n value: string;\n /** Whether this option is checked */\n checked: boolean;\n }>,\n ) {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const { value, checked } = event.detail;\n\n if (value !== undefined && value !== null) {\n const newValue = [...this.value];\n const valueIndex = newValue.indexOf(value);\n\n if (checked && valueIndex === -1) {\n newValue.push(value);\n } else if (!checked && valueIndex > -1) {\n newValue.splice(valueIndex, 1);\n }\n\n // Always update the state and emit the event when an item is checked/unchecked\n this.value = newValue;\n this.valueChanged.emit(this.value);\n\n // Update the checked state of all items to ensure consistency\n this.syncChildComponents();\n\n // Preserve the filter text in the input\n if (this.filterable && this.inputElement) {\n // Keep the current filter text in the input\n this.inputElement.value = this.filterText;\n }\n } else {\n console.warn('Received itemChecked event with undefined or null value'); // Warning log\n }\n }\n\n // Add a listener for the slot content\n @Listen('slotchange')\n handleSlotChange(event: Event) {\n // Check: we only want to reorder if it's the \"content\" slot\n const slot = event.target as HTMLSlotElement;\n if (slot && slot.name === 'content') {\n // To give other platforms (VueJS, React, etc.) time to insert all their items,\n // we place the reorder in a requestAnimationFrame\n requestAnimationFrame(() => {\n this.reorderSlotContent();\n });\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Set the mode state and handle options change.\n */\n componentWillLoad() {\n // Don't call handleOptionsChange if we are in slots mode\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n // Specific initialization for slots mode\n if (!this.options) {\n // Use a microtask to ensure DOM is ready\n Promise.resolve().then(() => {\n // Synchronize child components\n this.syncChildComponents();\n\n // Force a reorder after initialization\n requestAnimationFrame(() => {\n this.reorderSlotContent();\n });\n });\n }\n\n // Initialize the sorted options array with the parsed options for initial rendering\n if (this.options) {\n this.sortedOptions = [...(this.options ?? [])];\n }\n\n // Reset filter if needed\n if (!this.filterText) {\n this.resetFilter();\n }\n }\n\n /**\n * Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch\n */\n componentDidLoad() {\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n // Final synchronization of child components after everything is loaded\n this.syncChildComponents();\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n @Method()\n async resetFilter(): Promise<void> {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n // Reset visibility state of all dropdown items\n items.forEach(item => {\n item.style.display = '';\n });\n\n // Clean up filter-related UI elements\n const ul = this.el.querySelector('ul');\n if (ul) {\n const emptyMessage = ul.querySelector('[data-empty]');\n if (emptyMessage) emptyMessage.remove();\n\n // Reorder with divider if needed\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n if (selectedItems.length > 0) {\n this.manageDivider(ul as HTMLElement, selectedItems, unselectedItems);\n }\n }\n }\n\n /**\n * Returns the list of selected values.\n * @returns {string[]} The selected values.\n */\n @Method()\n async getSelectedValues(): Promise<string[]> {\n return this.value;\n }\n\n /**\n * Reorder the content of the slot.\n */\n private reorderSlotContent() {\n if (this.options) return;\n\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove all existing <hr class=\"multiselect-divider\">\n ul.querySelectorAll('hr.multiselect-divider').forEach(divider =>\n divider.remove(),\n );\n\n // Retrieve all items (not hidden)\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n ).filter(item => item.style.display !== 'none');\n\n // If you possibly have a \"No results\" message:\n const hasEmptyMessage = ul.querySelector('[data-empty]');\n if (hasEmptyMessage) {\n // if there is a \"No results found\" message, do not reorder\n return;\n }\n\n // Separate checked vs unchecked\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n // Reinsert CHECKED items FIRST\n // appendChild() moves the element without recreating it\n // this is not trigger a re-rendering of the component in the platforms\n selectedItems.forEach(item => {\n ul.appendChild(item); // <-- The <li> (or <nv-fielddropdownitemcheck>) is just \"moved\" to the end of the list\n });\n\n // Add a divider if needed\n if (selectedItems.length > 0 && unselectedItems.length > 0) {\n const divider = document.createElement('hr');\n divider.className = 'multiselect-divider';\n ul.appendChild(divider);\n }\n\n // Reinsert UNCHECKED items at the end\n unselectedItems.forEach(item => {\n ul.appendChild(item);\n });\n }\n\n /**\n * Reorder the content for options mode with async handling\n */\n private reorderOptionsContent() {\n const ul = this.el.querySelector('ul[role=\"content\"]') as HTMLElement;\n if (!ul) return;\n\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n ).filter(item => item.style.display !== 'none');\n\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n // Reorder the elements\n selectedItems.forEach(item => ul.appendChild(item));\n unselectedItems.forEach(item => ul.appendChild(item));\n\n // Manage the divider after the reordering\n this.manageDivider(ul, selectedItems, unselectedItems);\n }\n\n /**\n * Filter multiselect items based on the text entered by the user.\n */\n private filterItems() {\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove existing empty message if any\n const existingEmptyMessage = ul.querySelector('[data-empty]');\n if (existingEmptyMessage) {\n existingEmptyMessage.remove();\n }\n\n if (!this.filterText.trim()) {\n if (this.options && this.options.length > 0) {\n // Reset options display\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n items.forEach(item => {\n item.style.display = '';\n });\n } else {\n // Reset slot items display\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n // Reorder with divider\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n this.manageDivider(ul, selectedItems, unselectedItems);\n return;\n }\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n if (this.options && this.options.length > 0) {\n // Filter options mode\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n const option = this.options.find(\n opt => opt.value === item.getAttribute('value'),\n );\n if (option && !option.isDivider) {\n const matchesFilter =\n this.normalizeText(option.label).includes(normalizedFilter) ||\n this.normalizeText(option.value).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n }\n });\n\n // Manage the divider with the visible items\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelected = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const visibleUnselected = visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n this.manageDivider(ul, visibleSelected, visibleUnselected);\n } else {\n // Filter slot items mode\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n const textContent = item.textContent || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter) ||\n this.normalizeText(textContent).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n }\n\n // Add empty message if no items match the filter\n if (!hasVisibleItems) {\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n\n this.reorderSlotContent();\n }\n\n /**\n * Filter multiselect items in options mode.\n */\n private filterItemsOption() {\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));\n\n // Reset items if the filter text is empty\n if (!this.filterText.trim()) {\n // Remove the empty message if it exists\n this.removeEmptyMessageOption(ul);\n items.forEach(item => (item.style.display = ''));\n this.reorderOptionsContent(); // Reorder after reset\n return;\n }\n\n // Filter the items\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n\n // Manage the divider with the visible items\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelected = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const visibleUnselected = visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n this.manageDivider(ul, visibleSelected, visibleUnselected);\n\n // Add or remove the empty message based on the case\n if (!hasVisibleItems) {\n this.addEmptyMessageOption(ul);\n } else {\n this.removeEmptyMessageOption(ul);\n }\n }\n\n /**\n * Filter multiselect items in slots mode\n */\n private filterSlotsItems() {\n if (this.options) return;\n\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove existing empty message if any\n const existingEmptyMessage = ul.querySelector('[data-empty]');\n if (existingEmptyMessage) {\n existingEmptyMessage.remove();\n }\n\n // If filter text is empty, reset all items visibility\n if (!this.filterText.trim()) {\n this.resetFilter();\n return;\n }\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n // Get all items and preserve them in the DOM\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n // Instead of removing/reordering, just hide/show items\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n const textContent = item.textContent?.trim() || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter) ||\n this.normalizeText(textContent).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n\n // Get visible items after filtering\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelectedItems = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n\n this.manageDivider(\n ul,\n visibleSelectedItems,\n visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n ),\n );\n\n // Add empty message if no items match the filter\n if (!hasVisibleItems) {\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n }\n\n /**\n * Handle badge close for options mode.\n */\n private handleBadgeCloseOptions = (): void => {\n this.value = [];\n this.valueChanged.emit(this.value);\n\n // Uncheck all elements\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n item.checked = false;\n item.style.display = '';\n });\n\n // Reorder options without the divider since there are no selected elements\n this.options = this.options.filter(option => !option.isDivider);\n\n // Reorder options without the divider since there are no selected elements\n this.reorderOptionsContent();\n };\n\n /**\n * Handle badge close for slots mode.\n */\n private handleBadgeCloseSlots = (): void => {\n this.value = [];\n this.valueChanged.emit(this.value);\n\n // Uncheck all elements\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n item.checked = false;\n item.style.display = '';\n });\n\n // Reorder slot content\n this.reorderSlotContent();\n };\n\n /**\n * Normalizes text by removing accents and converting to lowercase\n * @param {string} text - The text to normalize\n * @returns {string} The normalized text\n *\n * @example\n * normalizeText(\"Café Latte\") => \"cafe latte\"\n *\n * @description\n * This function performs text normalization in three steps:\n * 1. Decomposes characters into their base form and combining characters (NFD)\n * 2. Removes all diacritical marks (accents, umlauts, etc.)\n * 3. Converts to lowercase and trims whitespace\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize} - MDN documentation on String.normalize()\n * @see {@link https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms} - More info about Unicode normalization forms\n */\n private normalizeText(text: string): string {\n return text\n .normalize('NFD') // Decompose characters into base + combining characters (e.g., é => e + ´)\n .replace(/[\\u0300-\\u036f]/g, '') // Remove all diacritical marks (Unicode range for combining characters)\n .toLowerCase() // Convert to lowercase\n .trim(); // Remove leading and trailing whitespace\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n this.open = false;\n }\n\n /**\n * Handle popover close\n */\n private handlePopoverClose = () => {\n // If we are handling Escape, ignore this event\n if (this.isHandlingEscape) {\n return;\n }\n\n // Reset filter if needed, but preserve the filter text\n if (this.filterable) {\n this.resetFilter();\n }\n };\n\n /**\n * Handle input blur for options mode.\n */\n private handleInputBlurOptions = () => {\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n // Close the popover without affecting the divider\n this.open = false;\n\n // Reset filter if needed, but preserve the filter text\n if (this.filterable) {\n this.resetFilter();\n }\n }\n }, 150);\n };\n\n /**\n * Handle keyboard events & arrow key navigation.\n * If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.\n * If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.\n * @param {KeyboardEvent} event - The keyboard event.\n */\n @Listen('keydown', { passive: false })\n async handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n // Focus on the first item if the list is not filterable\n if (!this.filterable) {\n requestAnimationFrame(() => {\n this.focusFirstItem();\n });\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll(\n 'nv-fielddropdownitemcheck:not([style*=\"display: none\"])',\n ),\n ) as HTMLNvFielddropdownitemcheckElement[];\n\n if (items.length === 0) {\n console.warn('No visible items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex =\n currentIndex === -1\n ? items.length - 1\n : (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n const selectedItem = items[currentIndex];\n\n // Toggle the checked state\n const isCurrentlyChecked = selectedItem.hasAttribute('checked');\n selectedItem.checked = !isCurrentlyChecked;\n\n // Trigger a click event to ensure proper event handling\n selectedItem.dispatchEvent(\n new MouseEvent('click', {\n view: window,\n bubbles: true,\n cancelable: true,\n }),\n );\n } else if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation(); // Prevent the event from propagating to the popover\n\n // Do the reorder and wait a bit before closing\n const handleEscape = async () => {\n this.isHandlingEscape = true; // Disable the hide listener\n\n if (this.options) {\n this.reorderOptionsContent();\n } else {\n this.reorderSlotContent();\n }\n\n // Wait for the reorder to be applied\n await new Promise(resolve => setTimeout(resolve, 100));\n\n // Reactivate the hide listener after a short delay\n setTimeout(() => {\n this.isHandlingEscape = false;\n this.open = false;\n }, 150);\n\n if (this.inputElement) {\n this.inputElement.blur();\n }\n };\n\n await handleEscape();\n }\n }\n\n /**\n * Updates the highlighted item in the dropdown list.\n *\n * @param {(HTMLNvFielddropdownitemElement | HTMLNvFielddropdownitemcheckElement)[]} items - The items to update.\n * @param {number} index - The index of the item to highlight.\n */\n private updateHighlightedItem(\n items: (\n | HTMLNvFielddropdownitemElement\n | HTMLNvFielddropdownitemcheckElement\n )[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.scrollIntoView({ block: 'nearest' });\n // Focus on the nv-fieldcheckbox inside\n const checkbox = item.querySelector('nv-fieldcheckbox');\n if (checkbox) {\n (checkbox as HTMLElement).focus();\n }\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n /**\n * Focus on the first item in the dropdown list.\n */\n private focusFirstItem() {\n const firstItem = this.el.querySelector(\n 'nv-fielddropdownitemcheck:not([style*=\"display: none\"])',\n ) as HTMLNvFielddropdownitemcheckElement;\n\n if (firstItem) {\n firstItem.setAttribute('tabindex', '0');\n firstItem.classList.add('highlighted');\n firstItem.scrollIntoView({ block: 'nearest' });\n // Focus on the nv-fieldcheckbox inside\n const checkbox = firstItem.querySelector('nv-fieldcheckbox');\n if (checkbox) {\n (checkbox as HTMLElement).focus();\n }\n } else {\n console.warn('No visible first item found to focus');\n }\n }\n\n /**\n * Handle click on the input container for options mode.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClickOptions = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle click on the input container for slots mode.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClickSlots = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change for options mode.\n * @param {Event} event - The input event.\n */\n private readonly handleInputOptions = (event: Event) => {\n if (!this.filterable) return;\n if (this.disabled || this.readonly) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.filterText = input.value;\n this.filterTextChanged.emit(this.filterText);\n\n // Clear any existing timer\n if (this.debounceTimer) {\n window.clearTimeout(this.debounceTimer);\n }\n\n // Set a new timer for filtering\n this.debounceTimer = window.setTimeout(() => {\n this.filterItemsOption();\n }, this.debounceDelay);\n };\n\n private addEmptyMessageOption(ul: HTMLElement) {\n const existingMessage = ul.querySelector('[data-empty]');\n if (existingMessage) return;\n\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n\n private removeEmptyMessageOption(ul: HTMLElement) {\n const existingMessage = ul.querySelector('[data-empty]');\n if (existingMessage) existingMessage.remove();\n }\n\n /**\n * Handle input change for slots mode\n * @param {Event} event - The input event.\n */\n private readonly handleInputSlots = (event: Event) => {\n if (!this.filterable) return;\n if (this.disabled || this.readonly) return;\n\n const input = event.target as HTMLInputElement;\n this.filterText = input.value;\n this.filterTextChanged.emit(this.filterText);\n\n // Clear any existing timer\n if (this.debounceTimer) {\n window.clearTimeout(this.debounceTimer);\n }\n\n // Set a new timer for filtering\n this.debounceTimer = window.setTimeout(() => {\n this.filterSlotsItems();\n }, this.debounceDelay);\n };\n\n /**\n * Handle input focus for options mode.\n */\n private handleInputFocusOptions = () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.open = true;\n };\n\n /**\n * Handle input focus for slots mode.\n */\n private handleInputFocusSlots = () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.open = true;\n };\n\n /**\n * Handle input blur for slots mode.\n */\n private handleInputBlurSlots = () => {\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n // Close the popover without affecting the divider\n this.open = false;\n\n // Reset filter if needed, but preserve the filter text\n if (this.filterable) {\n this.resetFilter();\n }\n }\n }, 150);\n };\n\n /**\n * Toggle the multiselect popover for options mode.\n */\n private togglePopoverOptions = (): void => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.open = !this.open;\n };\n\n /**\n * Toggle the multiselect popover for slots mode.\n */\n private togglePopoverSlots = (): void => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.open = !this.open;\n };\n\n private manageDivider(\n ul: HTMLElement,\n selectedItems: Element[],\n unselectedItems: Element[],\n ) {\n let divider = ul.querySelector('hr.multiselect-divider') as HTMLElement;\n if (!divider) {\n divider = document.createElement('hr');\n divider.className = 'multiselect-divider';\n ul.appendChild(divider);\n }\n\n const shouldShowDivider =\n selectedItems.length > 0 && unselectedItems.length > 0;\n\n if (shouldShowDivider) {\n // Place the divider after the last selected item\n const lastSelectedItem = selectedItems[selectedItems.length - 1];\n lastSelectedItem.after(divider);\n divider.style.display = '';\n } else {\n divider.style.display = 'none';\n }\n }\n\n /**\n * Synchronizes the checked state of all child nv-fielddropdownitemcheck components\n * with the current selectedValues state.\n */\n private syncChildComponents() {\n // Early return if element is not ready\n if (!this.el || !this.el.isConnected) {\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n // Get the effective value: use explicit value if present, otherwise use label\n const itemValue =\n item.getAttribute('value') || item.getAttribute('label') || '';\n if (this.value.includes(itemValue)) {\n item.setAttribute('checked', '');\n item.checked = true;\n } else {\n item.removeAttribute('checked');\n item.checked = false;\n }\n });\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Renders the component in options mode\n * @returns {any} The JSX for options mode\n */\n private renderOptionsMode = () => {\n return (\n <Host aria-label={this.label} aria-expanded={this.open.toString()}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper-multiselect\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container-multiselect\">\n <slot name=\"leading-input\"></slot>\n\n {this.value.length > 0 && (\n <nv-badge\n slot=\"leading-input\"\n prevent-auto-close\n color=\"10\"\n dismissible={this.value.length > 0}\n label={`${this.value.length} ${this.badgeLabel}`}\n aria-label={`Clear all ${this.value.length} ${this.badgeLabel} items`}\n onCloseClicked={this.handleBadgeCloseOptions}\n ></nv-badge>\n )}\n\n {this.filterable || this.disabled || this.readonly ? (\n <input\n type=\"text\"\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n autofocus={this.autofocus}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.filterText}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInputOptions}\n onFocus={this.handleInputFocusOptions}\n onBlur={this.handleInputBlurOptions}\n onKeyDown={this.handleKeyDown}\n data-scope=\"focusable\"\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClickOptions}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleInputFocusOptions}\n role=\"combobox\"\n aria-expanded={this.open}\n data-scope=\"focusable\"\n >\n <span>{this.placeholder}</span>\n </p>\n )}\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n\n <nv-iconbutton\n data-scope=\"toggle-dropdown\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopoverOptions}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div\n slot=\"content\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={this.maxHeight ? { maxHeight: this.maxHeight } : {}}\n >\n <ul role=\"content\">\n {this.options.map(option => (\n <nv-fielddropdownitemcheck\n label={option.label}\n description={option.description}\n value={option.value}\n checked={this.value.includes(option.value)}\n disabled={option.disabled}\n ></nv-fielddropdownitemcheck>\n ))}\n <hr class=\"multiselect-divider\" style={{ display: 'none' }} />\n </ul>\n </div>\n </nv-popover>\n\n {this.renderDescriptions()}\n </Host>\n );\n };\n\n /**\n * Renders the component in slots mode\n * @returns {any} The JSX for slots mode\n */\n private renderSlotsMode = () => {\n return (\n <Host aria-label={this.label} aria-expanded={this.open.toString()}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper-multiselect\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container-multiselect\"\n onClick={this.handleInputContainerClickSlots}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.value.length > 0 && (\n <nv-badge\n slot=\"leading-input\"\n prevent-auto-close\n color=\"10\"\n dismissible={this.value.length > 0}\n label={`${this.value.length} ${this.badgeLabel}`}\n aria-label={`Clear all ${this.value.length} ${this.badgeLabel} items`}\n onCloseClicked={this.handleBadgeCloseSlots}\n ></nv-badge>\n )}\n\n {this.filterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.filterText}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInputSlots}\n onFocus={this.handleInputFocusSlots}\n onBlur={this.handleInputBlurSlots}\n onKeyDown={this.handleKeyDown}\n data-scope=\"focusable\"\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClickSlots}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleInputFocusSlots}\n role=\"combobox\"\n aria-expanded={this.open}\n data-scope=\"focusable\"\n >\n <span>{this.placeholder}</span>\n </p>\n )}\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n\n <nv-iconbutton\n data-scope=\"toggle-dropdown\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopoverSlots}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div\n slot=\"content\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={this.maxHeight ? { maxHeight: this.maxHeight } : {}}\n >\n <slot name=\"content\"></slot>\n </div>\n </nv-popover>\n\n {this.renderDescriptions()}\n </Host>\n );\n };\n\n /**\n * Renders description and error description sections\n * @returns {any} The JSX for descriptions\n */\n private renderDescriptions() {\n return [\n (this.description || this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n ),\n (this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n ),\n ];\n }\n\n /**\n * Main render method that decides which mode to render\n * @returns {any} The JSX for the component\n */\n render() {\n return this.options ? this.renderOptionsMode() : this.renderSlotsMode();\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
1
+ {"version":3,"file":"nv-fieldmultiselect.js","sourceRoot":"","sources":["../../../src/components/nv-fieldmultiselect/nv-fieldmultiselect.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { TextInputAutocomplete } from '../../utils/constants';\n\n/**\n * @slot content - The content of the list.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n@Component({\n tag: 'nv-fieldmultiselect',\n styleUrl: 'styles/nv-fieldmultiselect.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldmultiselect {\n @Element() el: HTMLNvFieldmultiselectElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n /**\n * Timer for debouncing input events.\n * Private property preferred over @State as it:\n * - Doesn't need to trigger re-renders\n * - Is purely for internal logic\n * - Improves performance by avoiding Stencil's reactivity system\n */\n private debounceTimer: number;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It's a crucial element for making forms clear and user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they've used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the selected values of the multiselect field.\n * This is the canonical value for the component and is used for form submission.\n */\n @Prop({ reflect: false, mutable: true })\n value: string[] = [];\n\n /**\n * Marks the input field as required.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Display the input field's content without allowing users to change it.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * Disables the input field.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the multiselect\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Defines the maximum height of the multiselect list when open.\n */\n @Prop({ reflect: true })\n readonly maxHeight: string = '';\n\n /**\n * State of the multiselect popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyResult: string = 'No results found';\n\n /**\n * Enables or disables the filtering feature for the multiselect items.\n */\n @Prop({ reflect: true })\n readonly filterable: boolean = false;\n\n /**\n * List of options used to automatically generate dropdown items. This\n * provides an alternative to using the slot manually.\n *\n * @example\n * options=[{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\",\n * }]\n */\n @Prop({ reflect: false, mutable: true })\n options?: {\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is a divider */\n isDivider?: boolean;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Additional description for the option */\n description?: string;\n /** Whether this option is pre-checked */\n checked?: boolean;\n }[];\n\n /**\n * Delay in milliseconds before the search is triggered when typing in the filter input.\n * @default 300\n */\n @Prop({ reflect: true })\n readonly debounceDelay: number = 300;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n /**\n * Allows the field to stretch and fill the entire width of its container.\n */\n @Prop({ reflect: true })\n readonly fluid: boolean = false;\n\n /**\n * Text for the badge showing the number of selected items.\n */\n @Prop({ reflect: true })\n readonly badgeLabel: string = '';\n\n /**\n * The text entered by the user for filtering multiselect items.\n */\n @Prop({ reflect: true, mutable: true })\n filterText: string = '';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n /**\n * Sorted options for display.\n */\n @State()\n sortedOptions: Array<{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is a divider */\n isDivider?: boolean;\n }> = [];\n\n @State()\n private isHandlingEscape: boolean = false;\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the selected values change.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string[]>;\n\n /**\n * Emitted when the filter text changes.\n */\n @Event()\n filterTextChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('options')\n handleOptionsChange(newValue: typeof this.options) {\n if (!newValue) return;\n\n this.value = newValue\n .filter(option => option.checked)\n .map(option => option.value);\n\n this.reorderOptionsContent();\n }\n\n /**\n * Emitted when the value changes.\n */\n @Watch('value')\n watchValueHandler() {\n // Synchronize child components when value changes programmatically\n if (this.el && this.el.isConnected) {\n this.syncChildComponents();\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LISTENERS\n\n /**\n * Emitted when the input loses focus.\n * @param {CustomEvent<boolean>} event - The event object containing the focus state.\n */\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n // Update `open` based on the popover state\n this.open = event.detail;\n\n if (this.open) {\n // Filter items only if there is filter text\n if (this.filterText) {\n this.filterItems();\n }\n } else {\n this.handlePopoverClose();\n }\n\n if (this.options) {\n this.reorderOptionsContent();\n } else {\n this.reorderSlotContent();\n }\n }\n\n /**\n * Listen for the `itemChecked` event emitted by child items.\n * @param {CustomEvent} event - The event object containing the selected value and its checked state.\n */\n @Listen('itemChecked')\n handleItemChecked(\n event: CustomEvent<{\n /** Value associated with the option */\n value: string;\n /** Whether this option is checked */\n checked: boolean;\n }>,\n ) {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const { value, checked } = event.detail;\n\n if (value !== undefined && value !== null) {\n const newValue = [...this.value];\n const valueIndex = newValue.indexOf(value);\n\n if (checked && valueIndex === -1) {\n newValue.push(value);\n } else if (!checked && valueIndex > -1) {\n newValue.splice(valueIndex, 1);\n }\n\n // Always update the state and emit the event when an item is checked/unchecked\n this.value = newValue;\n this.valueChanged.emit(this.value);\n\n // Update the checked state of all items to ensure consistency\n this.syncChildComponents();\n\n // Preserve the filter text in the input\n if (this.filterable && this.inputElement) {\n // Keep the current filter text in the input\n this.inputElement.value = this.filterText;\n }\n } else {\n console.warn('Received itemChecked event with undefined or null value'); // Warning log\n }\n }\n\n // Add a listener for the slot content\n @Listen('slotchange')\n handleSlotChange(event: Event) {\n // Check: we only want to reorder if it's the \"content\" slot\n const slot = event.target as HTMLSlotElement;\n if (slot && slot.name === 'content') {\n // To give other platforms (VueJS, React, etc.) time to insert all their items,\n // we place the reorder in a requestAnimationFrame\n requestAnimationFrame(() => {\n this.reorderSlotContent();\n });\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Set the mode state and handle options change.\n */\n componentWillLoad() {\n // Don't call handleOptionsChange if we are in slots mode\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n // Specific initialization for slots mode\n if (!this.options) {\n // Use a microtask to ensure DOM is ready\n Promise.resolve().then(() => {\n // Synchronize child components\n this.syncChildComponents();\n\n // Force a reorder after initialization\n requestAnimationFrame(() => {\n this.reorderSlotContent();\n });\n });\n }\n\n // Initialize the sorted options array with the parsed options for initial rendering\n if (this.options) {\n this.sortedOptions = [...(this.options ?? [])];\n }\n\n // Reset filter if needed\n if (!this.filterText) {\n this.resetFilter();\n }\n }\n\n /**\n * Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch\n */\n componentDidLoad() {\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n // Final synchronization of child components after everything is loaded\n this.syncChildComponents();\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n @Method()\n async resetFilter(): Promise<void> {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n // Reset visibility state of all dropdown items\n items.forEach(item => {\n item.style.display = '';\n });\n\n // Clean up filter-related UI elements\n const ul = this.el.querySelector('ul');\n if (ul) {\n const emptyMessage = ul.querySelector('[data-empty]');\n if (emptyMessage) emptyMessage.remove();\n\n // Reorder with divider if needed\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n if (selectedItems.length > 0) {\n this.manageDivider(ul as HTMLElement, selectedItems, unselectedItems);\n }\n }\n }\n\n /**\n * Returns the list of selected values.\n * @returns {string[]} The selected values.\n */\n @Method()\n async getSelectedValues(): Promise<string[]> {\n return this.value;\n }\n\n /**\n * Reorder the content of the slot.\n */\n private reorderSlotContent() {\n if (this.options) return;\n\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove all existing <hr class=\"multiselect-divider\">\n ul.querySelectorAll('hr.multiselect-divider').forEach(divider =>\n divider.remove(),\n );\n\n // Retrieve all items (not hidden)\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n ).filter(item => item.style.display !== 'none');\n\n // If you possibly have a \"No results\" message:\n const hasEmptyMessage = ul.querySelector('[data-empty]');\n if (hasEmptyMessage) {\n // if there is a \"No results found\" message, do not reorder\n return;\n }\n\n // Separate checked vs unchecked\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n // Reinsert CHECKED items FIRST\n // appendChild() moves the element without recreating it\n // this is not trigger a re-rendering of the component in the platforms\n selectedItems.forEach(item => {\n ul.appendChild(item); // <-- The <li> (or <nv-fielddropdownitemcheck>) is just \"moved\" to the end of the list\n });\n\n // Add a divider if needed\n if (selectedItems.length > 0 && unselectedItems.length > 0) {\n const divider = document.createElement('hr');\n divider.className = 'multiselect-divider';\n ul.appendChild(divider);\n }\n\n // Reinsert UNCHECKED items at the end\n unselectedItems.forEach(item => {\n ul.appendChild(item);\n });\n }\n\n /**\n * Reorder the content for options mode with async handling\n */\n private reorderOptionsContent() {\n const ul = this.el.querySelector('ul[role=\"content\"]') as HTMLElement;\n if (!ul) return;\n\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n ).filter(item => item.style.display !== 'none');\n\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n // Reorder the elements\n selectedItems.forEach(item => ul.appendChild(item));\n unselectedItems.forEach(item => ul.appendChild(item));\n\n // Manage the divider after the reordering\n this.manageDivider(ul, selectedItems, unselectedItems);\n }\n\n /**\n * Filter multiselect items based on the text entered by the user.\n */\n private filterItems() {\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove existing empty message if any\n const existingEmptyMessage = ul.querySelector('[data-empty]');\n if (existingEmptyMessage) {\n existingEmptyMessage.remove();\n }\n\n if (!this.filterText.trim()) {\n if (this.options && this.options.length > 0) {\n // Reset options display\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n items.forEach(item => {\n item.style.display = '';\n });\n } else {\n // Reset slot items display\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n // Reorder with divider\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n const selectedItems = items.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const unselectedItems = items.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n this.manageDivider(ul, selectedItems, unselectedItems);\n return;\n }\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n if (this.options && this.options.length > 0) {\n // Filter options mode\n const items = Array.from(\n ul.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n const option = this.options.find(\n opt => opt.value === item.getAttribute('value'),\n );\n if (option && !option.isDivider) {\n const matchesFilter =\n this.normalizeText(option.label).includes(normalizedFilter) ||\n this.normalizeText(option.value).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n }\n });\n\n // Manage the divider with the visible items\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelected = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const visibleUnselected = visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n this.manageDivider(ul, visibleSelected, visibleUnselected);\n } else {\n // Filter slot items mode\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n const textContent = item.textContent || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter) ||\n this.normalizeText(textContent).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n }\n\n // Add empty message if no items match the filter\n if (!hasVisibleItems) {\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n\n this.reorderSlotContent();\n }\n\n /**\n * Filter multiselect items in options mode.\n */\n private filterItemsOption() {\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));\n\n // Reset items if the filter text is empty\n if (!this.filterText.trim()) {\n // Remove the empty message if it exists\n this.removeEmptyMessageOption(ul);\n items.forEach(item => (item.style.display = ''));\n this.reorderOptionsContent(); // Reorder after reset\n return;\n }\n\n // Filter the items\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n\n // Manage the divider with the visible items\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelected = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n const visibleUnselected = visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n );\n\n this.manageDivider(ul, visibleSelected, visibleUnselected);\n\n // Add or remove the empty message based on the case\n if (!hasVisibleItems) {\n this.addEmptyMessageOption(ul);\n } else {\n this.removeEmptyMessageOption(ul);\n }\n }\n\n /**\n * Filter multiselect items in slots mode\n */\n private filterSlotsItems() {\n if (this.options) return;\n\n const ul = this.el.querySelector('ul');\n if (!ul) return;\n\n // Remove existing empty message if any\n const existingEmptyMessage = ul.querySelector('[data-empty]');\n if (existingEmptyMessage) {\n existingEmptyMessage.remove();\n }\n\n // If filter text is empty, reset all items visibility\n if (!this.filterText.trim()) {\n this.resetFilter();\n return;\n }\n\n const normalizedFilter = this.normalizeText(this.filterText);\n let hasVisibleItems = false;\n\n // Get all items and preserve them in the DOM\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n // Instead of removing/reordering, just hide/show items\n items.forEach(item => {\n const label = item.getAttribute('label') || '';\n const value = item.getAttribute('value') || '';\n const textContent = item.textContent?.trim() || '';\n\n const matchesFilter =\n this.normalizeText(label).includes(normalizedFilter) ||\n this.normalizeText(value).includes(normalizedFilter) ||\n this.normalizeText(textContent).includes(normalizedFilter);\n\n item.style.display = matchesFilter ? '' : 'none';\n if (matchesFilter) hasVisibleItems = true;\n });\n\n // Get visible items after filtering\n const visibleItems = items.filter(item => item.style.display !== 'none');\n const visibleSelectedItems = visibleItems.filter(item =>\n this.value.includes(item.getAttribute('value') || ''),\n );\n\n this.manageDivider(\n ul,\n visibleSelectedItems,\n visibleItems.filter(\n item => !this.value.includes(item.getAttribute('value') || ''),\n ),\n );\n\n // Add empty message if no items match the filter\n if (!hasVisibleItems) {\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n }\n\n /**\n * Handle badge close for options mode.\n */\n private handleBadgeCloseOptions = (): void => {\n this.value = [];\n this.valueChanged.emit(this.value);\n\n // Uncheck all elements\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n item.checked = false;\n item.style.display = '';\n });\n\n // Reorder options without the divider since there are no selected elements\n this.options = this.options.filter(option => !option.isDivider);\n\n // Reorder options without the divider since there are no selected elements\n this.reorderOptionsContent();\n };\n\n /**\n * Handle badge close for slots mode.\n */\n private handleBadgeCloseSlots = (): void => {\n this.value = [];\n this.valueChanged.emit(this.value);\n\n // Uncheck all elements\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n item.checked = false;\n item.style.display = '';\n });\n\n // Reorder slot content\n this.reorderSlotContent();\n };\n\n /**\n * Normalizes text by removing accents and converting to lowercase\n * @param {string} text - The text to normalize\n * @returns {string} The normalized text\n *\n * @example\n * normalizeText(\"Café Latte\") => \"cafe latte\"\n *\n * @description\n * This function performs text normalization in three steps:\n * 1. Decomposes characters into their base form and combining characters (NFD)\n * 2. Removes all diacritical marks (accents, umlauts, etc.)\n * 3. Converts to lowercase and trims whitespace\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize} - MDN documentation on String.normalize()\n * @see {@link https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms} - More info about Unicode normalization forms\n */\n private normalizeText(text: string): string {\n return text\n .normalize('NFD') // Decompose characters into base + combining characters (e.g., é => e + ´)\n .replace(/[\\u0300-\\u036f]/g, '') // Remove all diacritical marks (Unicode range for combining characters)\n .toLowerCase() // Convert to lowercase\n .trim(); // Remove leading and trailing whitespace\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n this.open = false;\n }\n\n /**\n * Handle popover close\n */\n private handlePopoverClose = () => {\n // If we are handling Escape, ignore this event\n if (this.isHandlingEscape) {\n return;\n }\n\n // Reset filter if needed, but preserve the filter text\n if (this.filterable) {\n this.resetFilter();\n }\n };\n\n /**\n * Clear the filter text\n */\n private clearFilterText = () => {\n this.filterText = '';\n this.filterTextChanged.emit('');\n this.resetFilter();\n };\n\n /**\n * Handle input blur for options mode.\n */\n private handleInputBlurOptions = () => {\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n // Close the popover without affecting the divider\n this.open = false;\n\n // Clear filter text when focus is lost\n if (this.filterable) {\n this.clearFilterText();\n }\n }\n }, 150);\n };\n\n /**\n * Handle keyboard events & arrow key navigation.\n * If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.\n * If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.\n * @param {KeyboardEvent} event - The keyboard event.\n */\n @Listen('keydown', { passive: false })\n async handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n // Focus on the first item if the list is not filterable\n if (!this.filterable) {\n requestAnimationFrame(() => {\n this.focusFirstItem();\n });\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll(\n 'nv-fielddropdownitemcheck:not([style*=\"display: none\"])',\n ),\n ) as HTMLNvFielddropdownitemcheckElement[];\n\n if (items.length === 0) {\n console.warn('No visible items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex =\n currentIndex === -1\n ? items.length - 1\n : (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n const selectedItem = items[currentIndex];\n\n // Toggle the checked state\n const isCurrentlyChecked = selectedItem.hasAttribute('checked');\n selectedItem.checked = !isCurrentlyChecked;\n\n // Trigger a click event to ensure proper event handling\n selectedItem.dispatchEvent(\n new MouseEvent('click', {\n view: window,\n bubbles: true,\n cancelable: true,\n }),\n );\n } else if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation(); // Prevent the event from propagating to the popover\n\n // Do the reorder and wait a bit before closing\n const handleEscape = async () => {\n this.isHandlingEscape = true; // Disable the hide listener\n\n if (this.options) {\n this.reorderOptionsContent();\n } else {\n this.reorderSlotContent();\n }\n\n // Wait for the reorder to be applied\n await new Promise(resolve => setTimeout(resolve, 100));\n\n // Reactivate the hide listener after a short delay\n setTimeout(() => {\n this.isHandlingEscape = false;\n this.open = false;\n }, 150);\n\n if (this.inputElement) {\n this.inputElement.blur();\n }\n };\n\n await handleEscape();\n }\n }\n\n /**\n * Updates the highlighted item in the dropdown list.\n *\n * @param {(HTMLNvFielddropdownitemElement | HTMLNvFielddropdownitemcheckElement)[]} items - The items to update.\n * @param {number} index - The index of the item to highlight.\n */\n private updateHighlightedItem(\n items: (\n | HTMLNvFielddropdownitemElement\n | HTMLNvFielddropdownitemcheckElement\n )[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.scrollIntoView({ block: 'nearest' });\n // Focus on the nv-fieldcheckbox inside\n const checkbox = item.querySelector('nv-fieldcheckbox');\n if (checkbox) {\n (checkbox as HTMLElement).focus();\n }\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n /**\n * Focus on the first item in the dropdown list.\n */\n private focusFirstItem() {\n const firstItem = this.el.querySelector(\n 'nv-fielddropdownitemcheck:not([style*=\"display: none\"])',\n ) as HTMLNvFielddropdownitemcheckElement;\n\n if (firstItem) {\n firstItem.setAttribute('tabindex', '0');\n firstItem.classList.add('highlighted');\n firstItem.scrollIntoView({ block: 'nearest' });\n // Focus on the nv-fieldcheckbox inside\n const checkbox = firstItem.querySelector('nv-fieldcheckbox');\n if (checkbox) {\n (checkbox as HTMLElement).focus();\n }\n } else {\n console.warn('No visible first item found to focus');\n }\n }\n\n /**\n * Handle click on the input container for options mode.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClickOptions = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle click on the input container for slots mode.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClickSlots = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change for options mode.\n * @param {Event} event - The input event.\n */\n private readonly handleInputOptions = (event: Event) => {\n if (!this.filterable) return;\n if (this.disabled || this.readonly) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.filterText = input.value;\n this.filterTextChanged.emit(this.filterText);\n\n // Clear any existing timer\n if (this.debounceTimer) {\n window.clearTimeout(this.debounceTimer);\n }\n\n // Set a new timer for filtering\n this.debounceTimer = window.setTimeout(() => {\n this.filterItemsOption();\n }, this.debounceDelay);\n };\n\n private addEmptyMessageOption(ul: HTMLElement) {\n const existingMessage = ul.querySelector('[data-empty]');\n if (existingMessage) return;\n\n const emptyMessage = document.createElement('li');\n emptyMessage.setAttribute('data-empty', 'true');\n emptyMessage.textContent = this.emptyResult;\n emptyMessage.classList.add('no-results-message');\n ul.appendChild(emptyMessage);\n }\n\n private removeEmptyMessageOption(ul: HTMLElement) {\n const existingMessage = ul.querySelector('[data-empty]');\n if (existingMessage) existingMessage.remove();\n }\n\n /**\n * Handle input change for slots mode\n * @param {Event} event - The input event.\n */\n private readonly handleInputSlots = (event: Event) => {\n if (!this.filterable) return;\n if (this.disabled || this.readonly) return;\n\n const input = event.target as HTMLInputElement;\n this.filterText = input.value;\n this.filterTextChanged.emit(this.filterText);\n\n // Clear any existing timer\n if (this.debounceTimer) {\n window.clearTimeout(this.debounceTimer);\n }\n\n // Set a new timer for filtering\n this.debounceTimer = window.setTimeout(() => {\n this.filterSlotsItems();\n }, this.debounceDelay);\n };\n\n /**\n * Handle input focus for options mode.\n */\n private handleInputFocusOptions = () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.open = true;\n };\n\n /**\n * Handle input focus for slots mode.\n */\n private handleInputFocusSlots = () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.open = true;\n };\n\n /**\n * Handle input blur for slots mode.\n */\n private handleInputBlurSlots = () => {\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n // Close the popover without affecting the divider\n this.open = false;\n\n // Clear filter text when focus is lost\n if (this.filterable) {\n this.clearFilterText();\n }\n }\n }, 150);\n };\n\n /**\n * Toggle the multiselect popover for options mode.\n */\n private togglePopoverOptions = (): void => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.open = !this.open;\n };\n\n /**\n * Toggle the multiselect popover for slots mode.\n */\n private togglePopoverSlots = (): void => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.open = !this.open;\n };\n\n private manageDivider(\n ul: HTMLElement,\n selectedItems: Element[],\n unselectedItems: Element[],\n ) {\n let divider = ul.querySelector('hr.multiselect-divider') as HTMLElement;\n if (!divider) {\n divider = document.createElement('hr');\n divider.className = 'multiselect-divider';\n ul.appendChild(divider);\n }\n\n const shouldShowDivider =\n selectedItems.length > 0 && unselectedItems.length > 0;\n\n if (shouldShowDivider) {\n // Place the divider after the last selected item\n const lastSelectedItem = selectedItems[selectedItems.length - 1];\n lastSelectedItem.after(divider);\n divider.style.display = '';\n } else {\n divider.style.display = 'none';\n }\n }\n\n /**\n * Synchronizes the checked state of all child nv-fielddropdownitemcheck components\n * with the current selectedValues state.\n */\n private syncChildComponents() {\n // Early return if element is not ready\n if (!this.el || !this.el.isConnected) {\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitemcheck'),\n );\n\n items.forEach(item => {\n // Get the effective value: use explicit value if present, otherwise use label\n const itemValue =\n item.getAttribute('value') || item.getAttribute('label') || '';\n if (this.value.includes(itemValue)) {\n item.setAttribute('checked', '');\n item.checked = true;\n } else {\n item.removeAttribute('checked');\n item.checked = false;\n }\n });\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n /**\n * Renders the component in options mode\n * @returns {any} The JSX for options mode\n */\n private renderOptionsMode = () => {\n return (\n <Host aria-label={this.label} aria-expanded={this.open.toString()}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper-multiselect\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container-multiselect\">\n <slot name=\"leading-input\"></slot>\n\n {this.value.length > 0 && (\n <nv-badge\n slot=\"leading-input\"\n prevent-auto-close\n color=\"10\"\n dismissible={this.value.length > 0}\n label={`${this.value.length} ${this.badgeLabel}`}\n aria-label={`Clear all ${this.value.length} ${this.badgeLabel} items`}\n onCloseClicked={this.handleBadgeCloseOptions}\n ></nv-badge>\n )}\n\n {this.filterable || this.disabled || this.readonly ? (\n <input\n type=\"text\"\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n autofocus={this.autofocus}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.filterText}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInputOptions}\n onFocus={this.handleInputFocusOptions}\n onBlur={this.handleInputBlurOptions}\n onKeyDown={this.handleKeyDown}\n data-scope=\"focusable\"\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClickOptions}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleInputFocusOptions}\n role=\"combobox\"\n aria-expanded={this.open}\n data-scope=\"focusable\"\n >\n <span>{this.placeholder}</span>\n </p>\n )}\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n\n {this.filterable && this.filterText.length > 0 && (\n <nv-iconbutton\n data-scope=\"clear-filter\"\n name=\"x\"\n size=\"md\"\n emphasis=\"lower\"\n tabindex=\"-1\"\n onClick={this.clearFilterText}\n aria-label=\"Clear filter text\"\n />\n )}\n\n <nv-iconbutton\n data-scope=\"toggle-dropdown\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopoverOptions}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div\n slot=\"content\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={this.maxHeight ? { maxHeight: this.maxHeight } : {}}\n >\n <ul role=\"content\">\n {this.options.map(option => (\n <nv-fielddropdownitemcheck\n label={option.label}\n description={option.description}\n value={option.value}\n checked={this.value.includes(option.value)}\n disabled={option.disabled}\n ></nv-fielddropdownitemcheck>\n ))}\n <hr class=\"multiselect-divider\" style={{ display: 'none' }} />\n </ul>\n </div>\n </nv-popover>\n\n {this.renderDescriptions()}\n </Host>\n );\n };\n\n /**\n * Renders the component in slots mode\n * @returns {any} The JSX for slots mode\n */\n private renderSlotsMode = () => {\n return (\n <Host aria-label={this.label} aria-expanded={this.open.toString()}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper-multiselect\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container-multiselect\"\n onClick={this.handleInputContainerClickSlots}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.value.length > 0 && (\n <nv-badge\n slot=\"leading-input\"\n prevent-auto-close\n color=\"10\"\n dismissible={this.value.length > 0}\n label={`${this.value.length} ${this.badgeLabel}`}\n aria-label={`Clear all ${this.value.length} ${this.badgeLabel} items`}\n onCloseClicked={this.handleBadgeCloseSlots}\n ></nv-badge>\n )}\n\n {this.filterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.filterText}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInputSlots}\n onFocus={this.handleInputFocusSlots}\n onBlur={this.handleInputBlurSlots}\n onKeyDown={this.handleKeyDown}\n data-scope=\"focusable\"\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClickSlots}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleInputFocusSlots}\n role=\"combobox\"\n aria-expanded={this.open}\n data-scope=\"focusable\"\n >\n <span>{this.placeholder}</span>\n </p>\n )}\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n\n {this.filterable && this.filterText.length > 0 && (\n <nv-iconbutton\n name=\"x\"\n size=\"md\"\n emphasis=\"lower\"\n tabindex=\"-1\"\n onClick={this.clearFilterText}\n aria-label=\"Clear filter text\"\n />\n )}\n\n <nv-iconbutton\n data-scope=\"toggle-dropdown\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopoverSlots}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div\n slot=\"content\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={this.maxHeight ? { maxHeight: this.maxHeight } : {}}\n >\n <slot name=\"content\"></slot>\n </div>\n </nv-popover>\n\n {this.renderDescriptions()}\n </Host>\n );\n };\n\n /**\n * Renders description and error description sections\n * @returns {any} The JSX for descriptions\n */\n private renderDescriptions() {\n return [\n (this.description || this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n ),\n (this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n ),\n ];\n }\n\n /**\n * Main render method that decides which mode to render\n * @returns {any} The JSX for the component\n */\n render() {\n return this.options ? this.renderOptionsMode() : this.renderSlotsMode();\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
@@ -115,9 +115,9 @@ export class NvFieldnumber {
115
115
  /****************************************************************************/
116
116
  //#region RENDER
117
117
  render() {
118
- return (h(Host, { key: '908571e657b876e4bf13d2cd88c74ed56375a4a9' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'd46ff199fa0211227293ebab6159ee98916e4845', htmlFor: this.inputId }, h("slot", { key: '0e825e862bfadb313b723898d0732efb36f001c0', name: "label" }, this.label))), h("div", { key: 'e001c956494a7b3c90cb713540b9300f6482cbb7', class: "input-wrapper" }, h("slot", { key: '07f53c5fafcd308609b4ecfb721b9b0f791d5bf5', name: "before-input" }), h("div", { key: '266fe99cc757c5646aa4bcbf262d7f6eb21fa507', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: 'f80e50ffa553656b26c80be179fd5bda8fd7234e', name: "leading-input" }), h("input", { key: '3fb53e266a44118a464f5fffef5019d900f25668', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: "number", autofocus: this.autofocus, required: this.required, max: this.max, min: this.min, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), h("slot", { key: '9769d9b13676f8022eb7771869876125e7d13ea2', name: "trailing-input" }), this.error && (h("nv-icon", { key: 'feedeb1dfcf9a5b8c3e6f4e355af64db5e108125', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: '6f3819ea3bad57b373e24e5b167887c2175534ce', name: "circle-check", class: "validation", size: "md" })), h("div", { key: 'ab83ad88264a5295f8239b308af7b61c04095b8c', class: "stepper" }, h("nv-iconbutton", { key: '67bf2dc34cab126f8ebb8ad1368d326ce4e448c9', size: "md", name: "minus", emphasis: "lower", onClick: this.handleMinus, disabled: this.isMinValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }), h("nv-iconbutton", { key: '2ae711f4ff770049fb9b9afa4075b02a5d41d881', size: "md", name: "plus", emphasis: "lower", onClick: this.handlePlus, disabled: this.isMaxValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }))), h("slot", { key: 'f59664d1200b6e1e300cac52ceaee03b1be68cea', name: "after-input" })), (this.description ||
119
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '10cefd1d1e86d33456b6800d5d1f3f5c7a10a16c', class: "description" }, h("slot", { key: 'a8544e2917993f7fa45200e51e983277c6f0b393', name: "description" }, this.description))), (this.errorDescription ||
120
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '95ffb42b6014514a51102b0bfa60887ff3394362', hidden: !this.error, class: "error-description" }, h("slot", { key: '47d19a9cf2de2cdd2f23a5cf7a74943f9de8cb7e', name: "error-description" }, this.errorDescription)))));
118
+ return (h(Host, { key: '0fcd74073e1c3f2c8de00c21e1ff782d4ed2fbe8' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'c4dc1dc4efd2150fb897f0602b07ab22643756e6', htmlFor: this.inputId }, h("slot", { key: 'a0aa360dd532e11fd0273c8ba8d5ded3adc45642', name: "label" }, this.label))), h("div", { key: 'c2ffeb70a8e5ffe43ec5061e035add48fd0f09a2', class: "input-wrapper" }, h("slot", { key: '62ef15b0961ae4af93940d3d2dd10fdb6a636d4d', name: "before-input" }), h("div", { key: '07be430ad207b6023ee969b7ad290d4946f4b6fe', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '69978ac5971a25cc8c0515250d741ac8a658c3bd', name: "leading-input" }), h("input", { key: '284f8da710438e470a26541b7cf72f89730ef3ab', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: "number", autofocus: this.autofocus, required: this.required, max: this.max, min: this.min, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), h("slot", { key: 'd028cd632cff77f592429e97a81a1d45aeec621d', name: "trailing-input" }), this.error && (h("nv-icon", { key: '7de629b71971559c647ba4ad4885815124bb63b3', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: '135e609c2e568174db3503633f389c70a2fceaba', name: "circle-check", class: "validation", size: "md" })), h("div", { key: '17a952157f55ff65911d852a4274de5db4241508', class: "stepper" }, h("nv-iconbutton", { key: '33d0412ea6ed883d92b64363b404628d610e2339', size: "md", name: "minus", emphasis: "lower", onClick: this.handleMinus, disabled: this.isMinValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }), h("nv-iconbutton", { key: '68bf536a5fe5bb0b3c2c3bd5508324c050cb8764', size: "md", name: "plus", emphasis: "lower", onClick: this.handlePlus, disabled: this.isMaxValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }))), h("slot", { key: '3922a559b4ca954bee9caea379c940e7b132f65f', name: "after-input" })), (this.description ||
119
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '8844bf48e0251717549d4e0079370fe2f590c616', class: "description" }, h("slot", { key: 'f35c77ffa2f01a66d72ef75a65c5c634b14bbdbc', name: "description" }, this.description))), (this.errorDescription ||
120
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'ce407c77dd30a235c7691727480c911ad6128392', hidden: !this.error, class: "error-description" }, h("slot", { key: '7ffb85e03e5a9a949f022398537c74a812b8a12f', name: "error-description" }, this.errorDescription)))));
121
121
  }
122
122
  static get is() { return "nv-fieldnumber"; }
123
123
  static get formAssociated() { return true; }
@@ -105,9 +105,9 @@ export class NvFieldpassword {
105
105
  /****************************************************************************/
106
106
  //#region RENDER
107
107
  render() {
108
- return (h(Host, { key: 'a14a4df5990def8c1b76e191dc3480c2eee73446' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'b3f8d2a9b98afbd9ba7e932a4fd2639855bce785', htmlFor: this.inputId }, h("slot", { key: 'af896d231a0c0b5b5ce921e24f98b32702fe0058', name: "label" }, this.label))), h("div", { key: '6047dabbbb95967bf4afb01144a5f2af98677caf', class: "input-wrapper" }, h("slot", { key: 'eb36d6c886f7efc91508b97a4cb11c43d7e7809b', name: "before-input" }), h("div", { key: 'f9de2896f8d7a29d700e9c7f586f5190c48b0304', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '3203cc62507460372c3babcede4071cf4a068122', name: "leading-input" }), h("input", { key: 'bef15c1b3da5f949e4a55644dbea6499f398f71a', id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, type: this.showPasswordState ? 'text' : 'password', inputMode: this.mode, value: this.value, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), (this.success || this.error) && (h("nv-icon", { key: 'b23cac5c39ea1a428831583075d2e631eb13c231', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" })), !this.hidePasswordIcon && (h("nv-iconbutton", { key: '9a6a4900981781239b40e7106974e0d520dbf76a', name: this.showPasswordState ? 'eye' : 'eye-off', size: "md", emphasis: "lower", onClick: this.togglePasswordVisibility, "aria-label": this.showPasswordState ? 'Hide password' : 'Show password', "aria-pressed": this.showPasswordState.toString() }))), h("slot", { key: 'e3be0e70cad0f581b7fb0bee13046dcbf3d01791', name: "after-input" })), (this.description ||
109
- this.el.querySelector('[slot="description"]')) && (h("div", { key: 'a0613b0fc5f68e82a3bff9a7943c33fd89fad6c8', class: "description" }, h("slot", { key: '7f74f1207e31772ff485927d3c0334185bb14e77', name: "description" }, this.description))), (this.errorDescription ||
110
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '1fba0209bef041b3582bc36dc3b603c6b3a24088', hidden: !this.error, class: "error-description" }, h("slot", { key: '16c86655cc33bf47d1d4c388bcc4ac6272aa7714', name: "error-description" }, this.errorDescription)))));
108
+ return (h(Host, { key: 'b8d142f5a35087f977437af4d2094783e455d9a0' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'f26d2c14ee03d1ef80fe263a1849c0da03a39a8c', htmlFor: this.inputId }, h("slot", { key: '13dfa9e681e1b5a7244e7debc7d1c1af36bedd37', name: "label" }, this.label))), h("div", { key: '5a01c9cc4573543e0d6633f9b8fadfa1ad6b066a', class: "input-wrapper" }, h("slot", { key: '2ff066ad5da2d3fe0885ccc1a0c97f9817ff4bbe', name: "before-input" }), h("div", { key: '429535a2b55ea4af5374067948f5be1d16898694', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '00d8fa3cd0e8af41f1b9c46cefc256a29187db9d', name: "leading-input" }), h("input", { key: '7aa5db4e17d62e3a9c10e8b5e2dabe224033b2da', id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, type: this.showPasswordState ? 'text' : 'password', inputMode: this.mode, value: this.value, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), (this.success || this.error) && (h("nv-icon", { key: '0c919def4c580387d87a2f500a663f4dba5874cb', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" })), !this.hidePasswordIcon && (h("nv-iconbutton", { key: '2b020de565c3311431c83c68a773731055c1c6c5', name: this.showPasswordState ? 'eye' : 'eye-off', size: "md", emphasis: "lower", onClick: this.togglePasswordVisibility, "aria-label": this.showPasswordState ? 'Hide password' : 'Show password', "aria-pressed": this.showPasswordState.toString() }))), h("slot", { key: '938de4d9c513e3aef3de1e9a108e69558843b466', name: "after-input" })), (this.description ||
109
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '6150e4be7c79bf10a1a2db3b14334c4fd9d2396c', class: "description" }, h("slot", { key: 'de557936e4ed9e0798cbbb95f832fa6a831d63a9', name: "description" }, this.description))), (this.errorDescription ||
110
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '74e43aa5f463f8156d44d261d5641c0aafccc5fc', hidden: !this.error, class: "error-description" }, h("slot", { key: '4956c95a870964a712524fb30d26e9fd500edef8', name: "error-description" }, this.errorDescription)))));
111
111
  }
112
112
  static get is() { return "nv-fieldpassword"; }
113
113
  static get formAssociated() { return true; }
@@ -83,9 +83,9 @@ export class NvFieldradio {
83
83
  /****************************************************************************/
84
84
  //#region RENDER
85
85
  render() {
86
- return (h(Host, { key: 'abfa20ef5921ee52cbe6c3ea92b27bbd4e81a116', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, h("input", { key: 'ffa244c2692f3f4b3781df6ed3916139763d3253', type: "radio", id: this.inputId, name: this.name, autofocus: this.autofocus, autocomplete: "off", value: this.value, checked: this.checked, disabled: this.disabled }), h("div", { key: '661ccebfcd608d3d5a819144c1048b7b612d93ad', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '0764fffd0b6c961d3149130fd92fc3e5be4617d4', htmlFor: this.inputId }, h("slot", { key: '5b5c107074f406864f889187a73c3b6c25b5ad36', name: "label" }, this.label))), (this.description ||
87
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '68bb23249fc70db7346e4deb1924e24fd0e43133', class: "description" }, h("slot", { key: 'fee77e49f6a48f592eba370f8e842cc3c51a9569', name: "description" }, this.description))), (this.errorDescription ||
88
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '0544f59d2446dd3d1137839643222ae1d32236a2', hidden: !this.error, class: "error-description" }, h("slot", { key: '655fbb4ca21e3001425dcfbb6d9188586e0548ca', name: "error-description" }, this.errorDescription))))));
86
+ return (h(Host, { key: '5721fd4ffd6d8b1392e65d0b8eaea4dea241be63', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, h("input", { key: 'c54d8952edb57e34016a85ba2b6b9c7fc2a20a37', type: "radio", id: this.inputId, name: this.name, autofocus: this.autofocus, autocomplete: "off", value: this.value, checked: this.checked, disabled: this.disabled }), h("div", { key: 'e80c6c12fbf461776822185109e05aea5a6c954b', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '0f89b274c7ee7ea7d2e3116a004575176d044b5b', htmlFor: this.inputId }, h("slot", { key: '04b04fbc8ad5a199def48e728c74f13e7230414d', name: "label" }, this.label))), (this.description ||
87
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: 'e5c5048c50d0089393a29f12eb09f0ae26aedcfc', class: "description" }, h("slot", { key: '6902044f273d508a79a66a3f185fc4a9ac48e94f', name: "description" }, this.description))), (this.errorDescription ||
88
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '8d388b64deccd2f398485dfa0b83d70b8c50ae47', hidden: !this.error, class: "error-description" }, h("slot", { key: 'c5237272b97c754d2745eb62a85519f2c14dfb27', name: "error-description" }, this.errorDescription))))));
89
89
  }
90
90
  static get is() { return "nv-fieldradio"; }
91
91
  static get formAssociated() { return true; }
@@ -347,13 +347,13 @@ export class NvFieldselect {
347
347
  * @returns {HTMLStencilElement} The HTML element to render.
348
348
  */
349
349
  render() {
350
- return (h(Host, { key: 'd7c179e0ad3bdc22afa4a4ad8b84cc0d7403e3f9' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '545ba543c78e93bb790fca363325d40052899b53', htmlFor: this.inputId }, h("slot", { key: '5141dc2bda9b312682fe7adcf2ad8ae23a720696', name: "label" }, this.label))), h("div", { key: '791b9ed3213a44b2222613e54e21ec5f7814625f', class: "select-wrapper" }, h("slot", { key: '51590cb6c8152955ffef574caaa5858064652cf8', name: "before-input" }), h("div", { key: '030cfcb568435a8518d2680bee21b6e66c0955eb', class: "select-container", onClick: this.handleSelectContainerClick }, h("slot", { key: '9eb92fb0b383a2b08ef8ba61baf8340f6ecb12a6', name: "leading-input" }), this.internalReadonly && (h("input", { key: 'fe4debae13d4258fe5e6a6d273e7384ef7071f35', id: this.inputId + '-readonly', type: "text", value: this.computedDisplayValue, readonly: true, class: "readonly-input", "aria-readonly": "true", "aria-label": this.label, "aria-describedby": this.error
350
+ return (h(Host, { key: 'ff869c177289342a39ae292a530359af940a5669' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '10815f70059de9b1774ccc26b69d441d250e1833', htmlFor: this.inputId }, h("slot", { key: 'afe78cd3671151060fd1e2a37b77c164767908fa', name: "label" }, this.label))), h("div", { key: '064d8f512bc5f11831096d3a092afb00dcfeb1bc', class: "select-wrapper" }, h("slot", { key: 'c12d375bc5a558d25f1eb34343e2ad5fce784558', name: "before-input" }), h("div", { key: 'ffb39cfc0444edc49a4e2b6318990085009d7598', class: "select-container", onClick: this.handleSelectContainerClick }, h("slot", { key: 'd5fccac0e92fe0553b8478a6f5dc9be4591e8c23', name: "leading-input" }), this.internalReadonly && (h("input", { key: '94dc05d08de8120c78fa140df5eb3adc09ce97da', id: this.inputId + '-readonly', type: "text", value: this.computedDisplayValue, readonly: true, class: "readonly-input", "aria-readonly": "true", "aria-label": this.label, "aria-describedby": this.error
351
351
  ? `${this.inputId}-error`
352
- : `${this.inputId}-description` })), h("select", { key: '767c5c8f1a0f34aa645d49e7b09b0cfb230d5e3c', id: this.inputId, ref: el => (this.selectElement = el), name: this.name, autofocus: this.autofocus, disabled: this.disabled, required: this.required, multiple: this.multiple, onChange: this.handleSelectChange, class: this.internalReadonly ? 'hidden' : '', "aria-label": this.label, "aria-describedby": this.error
352
+ : `${this.inputId}-description` })), h("select", { key: '85ffba58429aaa393cc9178e0866a61f85d92103', id: this.inputId, ref: el => (this.selectElement = el), name: this.name, autofocus: this.autofocus, disabled: this.disabled, required: this.required, multiple: this.multiple, onChange: this.handleSelectChange, class: this.internalReadonly ? 'hidden' : '', "aria-label": this.label, "aria-describedby": this.error
353
353
  ? `${this.inputId}-error`
354
- : `${this.inputId}-description` }, this.parsedOptions.length > 0 ? (this.parsedOptions.map(option => (h("option", { value: option.value, selected: option.selected, disabled: option.disabled }, option.label)))) : (h("slot", null))), h("div", { key: '911644aa7ded450918f6424ebd8ce9dc4b6ed1d6', class: "select-icons" }, this.error && (h("nv-icon", { key: 'd5ae32439983916d17346fdce50d51e73d429c23', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: '783f0d7f1d4a0bbcbd8cff9416e5c3f61408061a', name: "circle-check", class: "validation", size: "md" })), !this.multiple && (h("nv-iconbutton", { key: '252cd65b1e9437aa89161c6342f4f107ad330136', name: "chevron-down", size: "md", emphasis: "lower", tabindex: -1 })))), h("slot", { key: '8e1088c34086ee58b240acb99c25fa113517e76c', name: "after-input" })), (this.description ||
355
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '7c521ab944ec72bec68c32c33400eb3c3a7c32bc', class: "description", id: `${this.inputId}-description` }, h("slot", { key: 'dab0be52dc34f499575775f9131c51c4cd7fd290', name: "description" }, this.description))), (this.errorDescription ||
356
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '00d9ce6b2a5fb946575e54cc3bf2fd83acc83290', class: "error-description", id: `${this.inputId}-error` }, h("slot", { key: '0e1027874f6e2b275ca354e2d64c0289ca961a0c', name: "error-description" }, this.errorDescription)))));
354
+ : `${this.inputId}-description` }, this.parsedOptions.length > 0 ? (this.parsedOptions.map(option => (h("option", { value: option.value, selected: option.selected, disabled: option.disabled }, option.label)))) : (h("slot", null))), h("div", { key: '694b0306ddaf671faea9dd863bb7f2917b567ffb', class: "select-icons" }, this.error && (h("nv-icon", { key: '4f86b0916dcbfefb24af5e5e2c0ca009ece6193b', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: 'f99ba37d4a70b7c352b4abb0be0b5eb85b4cc947', name: "circle-check", class: "validation", size: "md" })), !this.multiple && (h("nv-iconbutton", { key: 'b152a3b110b0f780b29adcf1efb4aadf98cf81be', name: "chevron-down", size: "md", emphasis: "lower", tabindex: -1 })))), h("slot", { key: '63c6076165bae5d36732179c4a761d5b381076b5', name: "after-input" })), (this.description ||
355
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: 'dd3e41b62290c580e050eb5a4742aabc7395cbda', class: "description", id: `${this.inputId}-description` }, h("slot", { key: '87bedab511a8b3d07d6616e4937342b6d272c5f3', name: "description" }, this.description))), (this.errorDescription ||
356
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'd4cf69f5f2446fbbf8ed36910d89c3aa7ac2c826', class: "error-description", id: `${this.inputId}-error` }, h("slot", { key: '2fc8b58658bd406af834dcad378b3b00aca40b22', name: "error-description" }, this.errorDescription)))));
357
357
  }
358
358
  static get is() { return "nv-fieldselect"; }
359
359
  static get formAssociated() { return true; }
@@ -453,11 +453,11 @@ export class NvFieldslider {
453
453
  /****************************************************************************/
454
454
  //#region RENDER
455
455
  render() {
456
- return (h(Host, { key: '5bb5a06e9742f87d098da76260ee269ef4ea06d5' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'dd6e12d6c6379e07c4f9964984b3458a71ce6e6f', htmlFor: this.startInputId }, h("slot", { key: '6229200586d90f4f21604d411f473e6df66527c4', name: "label" }, this.label))), h("div", { key: '44f60b538c83d9074a5d06b5a39c1e62e5aa5c55', class: "slider-container" }, this.range ? (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, index: 0, inputId: this.startInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name, endName: this.endName })) : null, h("div", { key: '4ec60f07b203b6836649a709027fdace39468c41', class: "track-container" }, h("div", { key: '4fcc799c962bf17e582fa5daf51a9c986d2d5901', class: "track", onPointerDown: this.onTrackInteraction }, this.range ? (h(RangeThumb, { rangeValue: this.rangeValueInternal, rawRangePosition: this.rawRangePosition, activeDragThumb: this.activeDragThumb, isDragging: this.isDragging, snap: this.snap, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onKeyDown: this.onKeyDown, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue })) : (h(SingleThumb, { value: this.valueInternal, min: this.min, max: this.max, step: this.step, rawPosition: this.rawPosition, isDragging: this.isDragging, snap: this.snap, disabled: this.disabled, readonly: this.readonly, onKeyDown: this.onKeyDown, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue }))), h(TickMarks, { key: '95b75deb4c7d0142f575af39fafe7b913c315ed5', ticks: this.internalTicks, min: this.min, max: this.max })), this.range ? (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, index: 1, inputId: this.endInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name, endName: this.endName })) : (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, inputId: this.startInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name }))), (this.success ||
456
+ return (h(Host, { key: '688357b41179bb99a662b8ea22f2beb7454b0d8c' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '7628e9ac0f304aa792f7c68f3e0b9b96d84583e0', htmlFor: this.startInputId }, h("slot", { key: 'd876dc0602df8badadcfdf435d68356d382c8b25', name: "label" }, this.label))), h("div", { key: '4aedd7863c3d06e4ad7dec800b14f858568bcb79', class: "slider-container" }, this.range ? (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, index: 0, inputId: this.startInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name, endName: this.endName })) : null, h("div", { key: '74d455d904614092ed51daf34f73425571b7ca24', class: "track-container" }, h("div", { key: 'a53a1e0f1770006fece64a87ca03a511d0e4dd9d', class: "track", onPointerDown: this.onTrackInteraction }, this.range ? (h(RangeThumb, { rangeValue: this.rangeValueInternal, rawRangePosition: this.rawRangePosition, activeDragThumb: this.activeDragThumb, isDragging: this.isDragging, snap: this.snap, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onKeyDown: this.onKeyDown, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue })) : (h(SingleThumb, { value: this.valueInternal, min: this.min, max: this.max, step: this.step, rawPosition: this.rawPosition, isDragging: this.isDragging, snap: this.snap, disabled: this.disabled, readonly: this.readonly, onKeyDown: this.onKeyDown, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue }))), h(TickMarks, { key: 'aafdd02a87071f214d8710d6a0678ee01668609d', ticks: this.internalTicks, min: this.min, max: this.max })), this.range ? (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, index: 1, inputId: this.endInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name, endName: this.endName })) : (h(FieldInput, { range: this.range, hasField: this.hasField, value: this.valueInternal, rangeValue: this.rangeValueInternal, inputId: this.startInputId, min: this.min, max: this.max, step: this.step, disabled: this.disabled, readonly: this.readonly, onInput: this.handleFieldChange, labelBeforeValue: this.labelBeforeValue, labelAfterValue: this.labelAfterValue, name: this.name }))), (this.success ||
457
457
  this.description ||
458
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '4b86941f66df96014d4710e6f1f79523a4f332f3', class: "description" }, this.success && (h("nv-icon", { key: 'b53792e0fe60354cdfb2e34dbf54fd87df10050c', name: "circle-check", class: "validation", size: "md" })), h("slot", { key: '149788e0ce96516b812370b247ddd59de555bf90', name: "description" }, this.description))), (this.error ||
458
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '10eb3eb2f7a903af08419df8476c11e27e9e575e', class: "description" }, this.success && (h("nv-icon", { key: 'ee312f8f0563e6dc920e9cbf886784df8c57e719', name: "circle-check", class: "validation", size: "md" })), h("slot", { key: '4ee31b6914ebae20404acd582c27b38b5ad64700', name: "description" }, this.description))), (this.error ||
459
459
  this.errorDescription ||
460
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '11814ba28092b2ded30f6b15362b0eb9e67c20a0', class: "error-description", hidden: !this.error }, this.error && (h("nv-icon", { key: '86b555aa52f4295932d80947737116c3f6c0ce99', name: "alert-circle", class: "validation", size: "md" })), h("slot", { key: '334739920eb67abc49b2bdb942d0a2f65a925460', name: "error-description" }, this.errorDescription)))));
460
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'e37e44dea94b691cbac98d16fb74c5c5cb280c5e', class: "error-description", hidden: !this.error }, this.error && (h("nv-icon", { key: 'c1b403a4848fdcf0e9f51f37ec7454224562ed5c', name: "alert-circle", class: "validation", size: "md" })), h("slot", { key: '87db18643f9473ae30e936fc1a316de95f06c107', name: "error-description" }, this.errorDescription)))));
461
461
  }
462
462
  static get is() { return "nv-fieldslider"; }
463
463
  static get formAssociated() { return true; }
@@ -111,9 +111,9 @@ export class NvFieldtext {
111
111
  /****************************************************************************/
112
112
  //#region RENDER
113
113
  render() {
114
- return (h(Host, { key: 'aa009c45d11efe9fef7ae0acfb701e25db7d3004' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '90aedd9dc50b1485b76e4bb6df2f5ea017eee9f4', htmlFor: this.inputId }, h("slot", { key: '3d7c37806fd01f1bb4c1d1d67372ce257d1b382d', name: "label" }, this.label))), h("div", { key: 'd399c53383708363c986c8f02f0f0a3b48bb4c39', class: "input-wrapper" }, h("slot", { key: '19b8cb3165c3ff0523c257ad0fc53f0df7413685', name: "before-input" }), h("div", { key: '3564795cf1775f2113c9a35d1865f84358be3144', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: 'b9b0b3b44f8474ba4f0c46552bb9c3a83fa0d7d2', name: "leading-input" }), h("input", { key: '39687f0583e734b03262aac593ab50ffad7957fd', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: this.type, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, autofocus: this.autofocus, autocomplete: this.autocomplete, multiple: this.multiple, value: this.value, onInput: this.handleInput }), h("slot", { key: '0faf9e99190d1d7e4295a454d2b89a31c728a38f', name: "trailing-input" }), this.error && (h("nv-icon", { key: 'fe4646f13b1fba38883f1e03ea6c1ba274c9aa47', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: '1e51b8182acc3b049ad608ddefd8c1631efbef94', name: "circle-check", class: "validation", size: "md" }))), h("slot", { key: '65bf5da97918592f3d8ebc63d134ddc4723188a1', name: "after-input" })), (this.description ||
115
- this.el.querySelector('[slot="description"]')) && (h("div", { key: 'c3f771bc7f641612baead1d82f8bcf8d8586a152', class: "description" }, h("slot", { key: '27df5104927ce680472aff0054e4ae5c3a9727c6', name: "description" }, this.description))), (this.errorDescription ||
116
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '8126a6159a24b68a9fa7f017aa289269f63035d4', hidden: !this.error, class: "error-description" }, h("slot", { key: 'd7cebdf0101cbed1d898c2bcc73581387ddb23b9', name: "error-description" }, this.errorDescription)))));
114
+ return (h(Host, { key: '35382ab52aa48116fbedc7683aff4729f06f5969' }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '6f849db1b7603fc4de4fb23075fd7daa72438dd2', htmlFor: this.inputId }, h("slot", { key: '24bc67fe3a8de24a8601a2cf3c5afd2532e17c4a', name: "label" }, this.label))), h("div", { key: '8ffd2d0f048082c71a76054842fffd22452b9ad2', class: "input-wrapper" }, h("slot", { key: '478020c16e29399dcc6566651f88acc8d88ef36d', name: "before-input" }), h("div", { key: '1aa0bac3947bdff209268619202ccc38da691761', class: "input-container", onClick: this.handleInputContainerClick }, h("slot", { key: '369b5f0a4c4d1d16217ad5de9221273ece41e1f0', name: "leading-input" }), h("input", { key: '91446fe15f48f45693f56b3fd21926b8114c1dca', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: this.type, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, autofocus: this.autofocus, autocomplete: this.autocomplete, multiple: this.multiple, value: this.value, onInput: this.handleInput }), h("slot", { key: '505a9ed004c4492f8daaef9a92bcaf344e2a10fb', name: "trailing-input" }), this.error && (h("nv-icon", { key: 'c1e9ecd4f901862391daa6c9f5c75d3c1b81810f', name: "alert-circle", class: "validation", size: "md" })), this.success && (h("nv-icon", { key: '15a452bdbbb386a51e4fe51370bd09521cc6f47f', name: "circle-check", class: "validation", size: "md" }))), h("slot", { key: '7e7e3969dd6f3d1b80eab00ac966f7ba9f13895c', name: "after-input" })), (this.description ||
115
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: 'b4ca95846a8fdf68e95d602968506bf009f9334f', class: "description" }, h("slot", { key: 'fce329e819b837318b2d9bf9e16a8ef886aa940a', name: "description" }, this.description))), (this.errorDescription ||
116
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'c3800ac457b5f0f87a3bdf9e9e37a36f5905786c', hidden: !this.error, class: "error-description" }, h("slot", { key: 'f77d02598ba261bf2b48b16ecfa3fc15fe221599', name: "error-description" }, this.errorDescription)))));
117
117
  }
118
118
  static get is() { return "nv-fieldtext"; }
119
119
  static get formAssociated() { return true; }