@nova-design-system/nova-webcomponents 3.0.0-beta.29 → 3.0.0-beta.30

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 (464) hide show
  1. package/dist/blazor-docs.json +1598 -933
  2. package/dist/cjs/{app-globals-69764290.js → app-globals-d8cbb987.js} +2 -2
  3. package/dist/cjs/{app-globals-69764290.js.map → app-globals-d8cbb987.js.map} +1 -1
  4. package/dist/cjs/{index-72b8a9ad.js → index-c50face0.js} +504 -863
  5. package/dist/cjs/index-c50face0.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +3 -3
  7. package/dist/cjs/native.cjs.js +4 -4
  8. package/dist/cjs/native.cjs.js.map +1 -1
  9. package/dist/cjs/nv-alert.cjs.entry.js +9 -22
  10. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-avatar.cjs.entry.js +11 -8
  12. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/{nv-badge.cjs.entry.js → nv-badge_2.cjs.entry.js} +52 -38
  14. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -0
  15. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-button.cjs.entry.js +8 -40
  17. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-col.cjs.entry.js +2 -1
  19. package/dist/cjs/nv-col.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nv-datagrid.cjs.entry.js +5 -31
  21. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nv-datagridbody.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +3 -1
  24. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +2 -1
  26. package/dist/cjs/nv-datagriddatacell.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nv-datagridhead.cjs.entry.js +1 -1
  28. package/dist/cjs/nv-datagridrow.cjs.entry.js +1 -1
  29. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +9 -40
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddropdown.cjs.entry.js +19 -58
  32. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +5 -11
  34. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +1038 -0
  36. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -0
  37. package/dist/cjs/nv-fieldnumber.cjs.entry.js +21 -47
  38. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldpassword.cjs.entry.js +24 -65
  40. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldradio.cjs.entry.js +11 -29
  42. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldselect.cjs.entry.js +23 -64
  44. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-fieldtext.cjs.entry.js +25 -55
  46. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +23 -61
  48. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +8 -21
  50. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-icon.cjs.entry.js +10 -5
  52. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  53. package/dist/cjs/{nv-iconbutton.cjs.entry.js → nv-iconbutton_2.cjs.entry.js} +31 -44
  54. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -0
  55. package/dist/cjs/nv-menu.cjs.entry.js +2 -21
  56. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-menuitem.cjs.entry.js +3 -7
  58. package/dist/cjs/nv-menuitem.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nv-popover.cjs.entry.js +13 -49
  60. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  61. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  62. package/dist/cjs/nv-stack.cjs.entry.js +6 -8
  63. package/dist/cjs/nv-stack.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-table.cjs.entry.js +7 -28
  65. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nv-tablebody.cjs.entry.js +2 -2
  67. package/dist/cjs/nv-tablecolumn.cjs.entry.js +5 -16
  68. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-tabledatacell.cjs.entry.js +3 -18
  70. package/dist/cjs/nv-tabledatacell.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nv-tablehead.cjs.entry.js +2 -2
  72. package/dist/cjs/nv-tablerow.cjs.entry.js +2 -2
  73. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -12
  74. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  75. package/dist/collection/collection-manifest.json +3 -1
  76. package/dist/collection/components/nv-alert/nv-alert.js +8 -37
  77. package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
  78. package/dist/collection/components/nv-avatar/nv-avatar.js +10 -31
  79. package/dist/collection/components/nv-avatar/nv-avatar.js.map +1 -1
  80. package/dist/collection/components/nv-badge/nv-badge.js +10 -54
  81. package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
  82. package/dist/collection/components/nv-button/nv-button.js +7 -53
  83. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  84. package/dist/collection/components/nv-col/nv-col.js +3 -2
  85. package/dist/collection/components/nv-col/nv-col.js.map +1 -1
  86. package/dist/collection/components/nv-datagrid/nv-datagrid.js +4 -42
  87. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  88. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +4 -4
  89. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  90. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +3 -2
  91. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js.map +1 -1
  92. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +8 -73
  93. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  94. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +18 -87
  95. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  96. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +4 -18
  97. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  98. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +12 -0
  99. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js +6 -0
  100. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js.map +1 -0
  101. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +171 -0
  102. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -0
  103. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +201 -0
  104. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +257 -0
  105. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -0
  106. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +1578 -0
  107. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -0
  108. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +20 -80
  109. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  110. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +23 -102
  111. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  112. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +10 -52
  113. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  114. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +22 -93
  115. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  116. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +24 -96
  117. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  118. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +22 -98
  119. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  120. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js +7 -40
  121. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +1 -1
  122. package/dist/collection/components/nv-icon/nv-icon.js +9 -20
  123. package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
  124. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +9 -58
  125. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
  126. package/dist/collection/components/nv-loader/nv-loader.js +2 -12
  127. package/dist/collection/components/nv-loader/nv-loader.js.map +1 -1
  128. package/dist/collection/components/nv-menu/nv-menu.js +1 -28
  129. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  130. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -14
  131. package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +1 -1
  132. package/dist/collection/components/nv-popover/nv-popover.js +13 -71
  133. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  134. package/dist/collection/components/nv-row/nv-row.js +1 -1
  135. package/dist/collection/components/nv-stack/nv-stack.js +5 -17
  136. package/dist/collection/components/nv-stack/nv-stack.js.map +1 -1
  137. package/dist/collection/components/nv-table/nv-table.js +6 -39
  138. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  139. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  140. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +4 -25
  141. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +1 -1
  142. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +2 -23
  143. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js.map +1 -1
  144. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  145. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  146. package/dist/collection/components/nv-tooltip/nv-tooltip.js +2 -17
  147. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  148. package/dist/components/index.js +3 -3
  149. package/dist/components/nv-alert.js +10 -23
  150. package/dist/components/nv-alert.js.map +1 -1
  151. package/dist/components/nv-avatar.js +12 -9
  152. package/dist/components/nv-avatar.js.map +1 -1
  153. package/dist/components/nv-badge.js +1 -173
  154. package/dist/components/nv-badge.js.map +1 -1
  155. package/dist/components/nv-base.js +1 -1
  156. package/dist/components/nv-button.js +9 -41
  157. package/dist/components/nv-button.js.map +1 -1
  158. package/dist/components/nv-col.js +2 -1
  159. package/dist/components/nv-col.js.map +1 -1
  160. package/dist/components/nv-datagrid.js +5 -31
  161. package/dist/components/nv-datagrid.js.map +1 -1
  162. package/dist/components/nv-datagridbody.js +1 -1
  163. package/dist/components/nv-datagridcolumn.js +3 -1
  164. package/dist/components/nv-datagridcolumn.js.map +1 -1
  165. package/dist/components/nv-datagriddatacell.js +2 -1
  166. package/dist/components/nv-datagriddatacell.js.map +1 -1
  167. package/dist/components/nv-datagridhead.js +1 -1
  168. package/dist/components/nv-datagridrow.js +1 -1
  169. package/dist/components/nv-fieldcheckbox.js +1 -152
  170. package/dist/components/nv-fieldcheckbox.js.map +1 -1
  171. package/dist/components/nv-fielddropdown.js +24 -63
  172. package/dist/components/nv-fielddropdown.js.map +1 -1
  173. package/dist/components/nv-fielddropdownitem.js +1 -1
  174. package/dist/components/nv-fielddropdownitemcheck.d.ts +11 -0
  175. package/dist/components/nv-fielddropdownitemcheck.js +8 -0
  176. package/dist/components/nv-fielddropdownitemcheck.js.map +1 -0
  177. package/dist/components/nv-fieldmultiselect.d.ts +11 -0
  178. package/dist/components/nv-fieldmultiselect.js +1129 -0
  179. package/dist/components/nv-fieldmultiselect.js.map +1 -0
  180. package/dist/components/nv-fieldnumber.js +22 -48
  181. package/dist/components/nv-fieldnumber.js.map +1 -1
  182. package/dist/components/nv-fieldpassword.js +27 -68
  183. package/dist/components/nv-fieldpassword.js.map +1 -1
  184. package/dist/components/nv-fieldradio.js +11 -29
  185. package/dist/components/nv-fieldradio.js.map +1 -1
  186. package/dist/components/nv-fieldselect.js +24 -65
  187. package/dist/components/nv-fieldselect.js.map +1 -1
  188. package/dist/components/nv-fieldtext.js +26 -56
  189. package/dist/components/nv-fieldtext.js.map +1 -1
  190. package/dist/components/nv-fieldtextarea.js +23 -61
  191. package/dist/components/nv-fieldtextarea.js.map +1 -1
  192. package/dist/components/nv-fieldtoggle.js +8 -21
  193. package/dist/components/nv-fieldtoggle.js.map +1 -1
  194. package/dist/components/nv-icon.js +1 -1
  195. package/dist/components/nv-iconbutton.js +1 -1
  196. package/dist/components/nv-loader.js +1 -1
  197. package/dist/components/nv-menu.js +3 -22
  198. package/dist/components/nv-menu.js.map +1 -1
  199. package/dist/components/nv-menuitem.js +4 -8
  200. package/dist/components/nv-menuitem.js.map +1 -1
  201. package/dist/components/nv-popover.js +1 -1
  202. package/dist/components/nv-row.js +2 -2
  203. package/dist/components/nv-stack.js +6 -8
  204. package/dist/components/nv-stack.js.map +1 -1
  205. package/dist/components/nv-table.js +7 -28
  206. package/dist/components/nv-table.js.map +1 -1
  207. package/dist/components/nv-tablebody.js +2 -2
  208. package/dist/components/nv-tablecolumn.js +5 -16
  209. package/dist/components/nv-tablecolumn.js.map +1 -1
  210. package/dist/components/nv-tabledatacell.js +3 -18
  211. package/dist/components/nv-tabledatacell.js.map +1 -1
  212. package/dist/components/nv-tablehead.js +2 -2
  213. package/dist/components/nv-tablerow.js +2 -2
  214. package/dist/components/nv-tooltip.js +4 -13
  215. package/dist/components/nv-tooltip.js.map +1 -1
  216. package/dist/components/p-5ce661bd.js +125 -0
  217. package/dist/components/p-5ce661bd.js.map +1 -0
  218. package/dist/components/{p-f0d5586a.js → p-8bec002e.js} +13 -46
  219. package/dist/components/p-8bec002e.js.map +1 -0
  220. package/dist/components/{p-3ef4ded9.js → p-a1aa8970.js} +4 -10
  221. package/dist/components/p-a1aa8970.js.map +1 -0
  222. package/dist/{esm/nv-badge.entry.js → components/p-a4802979.js} +58 -48
  223. package/dist/components/p-a4802979.js.map +1 -0
  224. package/dist/components/{p-c08a278d.js → p-ae6a0d80.js} +172 -207
  225. package/dist/components/p-ae6a0d80.js.map +1 -0
  226. package/dist/components/{p-6c1b9782.js → p-b12abc99.js} +7 -13
  227. package/dist/components/p-b12abc99.js.map +1 -0
  228. package/dist/components/{p-0caa4741.js → p-d506ae63.js} +489 -834
  229. package/dist/components/p-d506ae63.js.map +1 -0
  230. package/dist/components/{p-54ea8e62.js → p-d5dd3def.js} +15 -51
  231. package/dist/components/p-d5dd3def.js.map +1 -0
  232. package/dist/components/{p-39e93e5b.js → p-d70df149.js} +11 -6
  233. package/dist/components/p-d70df149.js.map +1 -0
  234. package/dist/components/p-e4641c41.js +72 -0
  235. package/dist/components/p-e4641c41.js.map +1 -0
  236. package/dist/docs.d.ts +0 -8
  237. package/dist/docs.json +1579 -930
  238. package/dist/esm/{app-globals-c5484a00.js → app-globals-eea8674a.js} +2 -2
  239. package/dist/esm/{app-globals-c5484a00.js.map → app-globals-eea8674a.js.map} +1 -1
  240. package/dist/esm/{index-b6f70e4a.js → index-e7b35c14.js} +504 -863
  241. package/dist/esm/index-e7b35c14.js.map +1 -0
  242. package/dist/esm/loader.js +4 -4
  243. package/dist/esm/native.js +5 -5
  244. package/dist/esm/native.js.map +1 -1
  245. package/dist/esm/nv-alert.entry.js +9 -22
  246. package/dist/esm/nv-alert.entry.js.map +1 -1
  247. package/dist/esm/nv-avatar.entry.js +11 -8
  248. package/dist/esm/nv-avatar.entry.js.map +1 -1
  249. package/dist/esm/nv-badge_2.entry.js +154 -0
  250. package/dist/esm/nv-badge_2.entry.js.map +1 -0
  251. package/dist/esm/nv-base.entry.js +1 -1
  252. package/dist/esm/nv-button.entry.js +8 -40
  253. package/dist/esm/nv-button.entry.js.map +1 -1
  254. package/dist/esm/nv-col.entry.js +2 -1
  255. package/dist/esm/nv-col.entry.js.map +1 -1
  256. package/dist/esm/nv-datagrid.entry.js +5 -31
  257. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  258. package/dist/esm/nv-datagridbody.entry.js +1 -1
  259. package/dist/esm/nv-datagridcolumn.entry.js +3 -1
  260. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  261. package/dist/esm/nv-datagriddatacell.entry.js +2 -1
  262. package/dist/esm/nv-datagriddatacell.entry.js.map +1 -1
  263. package/dist/esm/nv-datagridhead.entry.js +1 -1
  264. package/dist/esm/nv-datagridrow.entry.js +1 -1
  265. package/dist/esm/nv-fieldcheckbox.entry.js +9 -40
  266. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  267. package/dist/esm/nv-fielddropdown.entry.js +19 -58
  268. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  269. package/dist/esm/nv-fielddropdownitem.entry.js +5 -11
  270. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  271. package/dist/esm/nv-fieldmultiselect.entry.js +1034 -0
  272. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -0
  273. package/dist/esm/nv-fieldnumber.entry.js +21 -47
  274. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  275. package/dist/esm/nv-fieldpassword.entry.js +24 -65
  276. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  277. package/dist/esm/nv-fieldradio.entry.js +11 -29
  278. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  279. package/dist/esm/nv-fieldselect.entry.js +23 -64
  280. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  281. package/dist/esm/nv-fieldtext.entry.js +25 -55
  282. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  283. package/dist/esm/nv-fieldtextarea.entry.js +23 -61
  284. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  285. package/dist/esm/nv-fieldtoggle.entry.js +8 -21
  286. package/dist/esm/nv-fieldtoggle.entry.js.map +1 -1
  287. package/dist/esm/nv-icon.entry.js +10 -5
  288. package/dist/esm/nv-icon.entry.js.map +1 -1
  289. package/dist/esm/{nv-iconbutton.entry.js → nv-iconbutton_2.entry.js} +31 -45
  290. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -0
  291. package/dist/esm/nv-menu.entry.js +2 -21
  292. package/dist/esm/nv-menu.entry.js.map +1 -1
  293. package/dist/esm/nv-menuitem.entry.js +3 -7
  294. package/dist/esm/nv-menuitem.entry.js.map +1 -1
  295. package/dist/esm/nv-popover.entry.js +13 -49
  296. package/dist/esm/nv-popover.entry.js.map +1 -1
  297. package/dist/esm/nv-row.entry.js +2 -2
  298. package/dist/esm/nv-stack.entry.js +6 -8
  299. package/dist/esm/nv-stack.entry.js.map +1 -1
  300. package/dist/esm/nv-table.entry.js +7 -28
  301. package/dist/esm/nv-table.entry.js.map +1 -1
  302. package/dist/esm/nv-tablebody.entry.js +2 -2
  303. package/dist/esm/nv-tablecolumn.entry.js +5 -16
  304. package/dist/esm/nv-tablecolumn.entry.js.map +1 -1
  305. package/dist/esm/nv-tabledatacell.entry.js +3 -18
  306. package/dist/esm/nv-tabledatacell.entry.js.map +1 -1
  307. package/dist/esm/nv-tablehead.entry.js +2 -2
  308. package/dist/esm/nv-tablerow.entry.js +2 -2
  309. package/dist/esm/nv-tooltip.entry.js +3 -12
  310. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  311. package/dist/native/native.css +1 -1
  312. package/dist/native/native.esm.js +1 -1
  313. package/dist/native/native.esm.js.map +1 -1
  314. package/dist/native/p-0fbb962b.entry.js +2 -0
  315. package/dist/native/p-0fbb962b.entry.js.map +1 -0
  316. package/dist/native/{p-919cf3ec.entry.js → p-12eaebd6.entry.js} +2 -2
  317. package/dist/native/p-12eaebd6.entry.js.map +1 -0
  318. package/dist/native/{p-50c31094.entry.js → p-13070761.entry.js} +2 -2
  319. package/dist/native/p-13070761.entry.js.map +1 -0
  320. package/dist/native/{p-7701e4cc.entry.js → p-1aaee302.entry.js} +2 -2
  321. package/dist/native/p-1aaee302.entry.js.map +1 -0
  322. package/dist/native/p-1c689ec7.entry.js +2 -0
  323. package/dist/native/p-1c689ec7.entry.js.map +1 -0
  324. package/dist/native/{p-6e8bcd5b.entry.js → p-20c7fc4d.entry.js} +2 -2
  325. package/dist/native/p-20c7fc4d.entry.js.map +1 -0
  326. package/dist/native/p-2fca31c0.entry.js +2 -0
  327. package/dist/native/{p-9f89229b.entry.js.map → p-2fca31c0.entry.js.map} +1 -1
  328. package/dist/native/{p-4a64f5b0.entry.js → p-305951e4.entry.js} +2 -2
  329. package/dist/native/p-305951e4.entry.js.map +1 -0
  330. package/dist/native/p-306d1f04.entry.js +2 -0
  331. package/dist/native/p-306d1f04.entry.js.map +1 -0
  332. package/dist/native/{p-e71fc762.entry.js → p-330c929d.entry.js} +2 -2
  333. package/dist/native/{p-c85d031d.entry.js → p-36d5158c.entry.js} +3 -3
  334. package/dist/native/p-36d5158c.entry.js.map +1 -0
  335. package/dist/native/{p-25e410c1.entry.js → p-39dbb15b.entry.js} +2 -2
  336. package/dist/native/p-39dbb15b.entry.js.map +1 -0
  337. package/dist/native/p-3f912745.entry.js +2 -0
  338. package/dist/native/p-3f912745.entry.js.map +1 -0
  339. package/dist/native/p-4e351d8e.entry.js +2 -0
  340. package/dist/native/p-4e351d8e.entry.js.map +1 -0
  341. package/dist/native/p-589eb477.entry.js +2 -0
  342. package/dist/native/{p-d4277c50.entry.js → p-5b4bdbe2.entry.js} +2 -2
  343. package/dist/native/p-5b4bdbe2.entry.js.map +1 -0
  344. package/dist/native/{p-df6c9137.entry.js → p-65ad60eb.entry.js} +2 -2
  345. package/dist/native/p-65ad60eb.entry.js.map +1 -0
  346. package/dist/native/p-671699bf.entry.js +2 -0
  347. package/dist/native/{p-f2e31579.entry.js.map → p-671699bf.entry.js.map} +1 -1
  348. package/dist/native/{p-11faaf31.entry.js → p-69ca8c88.entry.js} +2 -2
  349. package/dist/native/p-69ca8c88.entry.js.map +1 -0
  350. package/dist/native/p-7a7b9b95.entry.js +2 -0
  351. package/dist/native/{p-a89f5542.entry.js → p-7b2d8b8c.entry.js} +2 -2
  352. package/dist/native/p-7b2d8b8c.entry.js.map +1 -0
  353. package/dist/native/{p-c5e7ecc8.entry.js → p-7b3a4cbf.entry.js} +2 -2
  354. package/dist/native/p-7b3a4cbf.entry.js.map +1 -0
  355. package/dist/native/{p-cd75ee63.entry.js → p-91d30cd7.entry.js} +2 -2
  356. package/dist/native/p-91d30cd7.entry.js.map +1 -0
  357. package/dist/native/{p-6eb50254.entry.js → p-92e3e334.entry.js} +2 -2
  358. package/dist/native/p-92e3e334.entry.js.map +1 -0
  359. package/dist/native/p-982e474f.entry.js +2 -0
  360. package/dist/native/{p-86947929.entry.js.map → p-982e474f.entry.js.map} +1 -1
  361. package/dist/native/{p-fa8a8b21.entry.js → p-a03df637.entry.js} +2 -2
  362. package/dist/native/p-a03df637.entry.js.map +1 -0
  363. package/dist/native/p-a5582014.entry.js +2 -0
  364. package/dist/native/p-a5582014.entry.js.map +1 -0
  365. package/dist/native/{p-605f8b3d.entry.js → p-a59ec107.entry.js} +2 -2
  366. package/dist/native/p-a59ec107.entry.js.map +1 -0
  367. package/dist/native/p-a7a3c45f.entry.js +2 -0
  368. package/dist/native/p-a7be7540.entry.js +2 -0
  369. package/dist/native/p-a7be7540.entry.js.map +1 -0
  370. package/dist/native/p-a8c0fefa.entry.js +2 -0
  371. package/dist/native/p-a8c0fefa.entry.js.map +1 -0
  372. package/dist/native/p-b4aea326.js +3 -0
  373. package/dist/native/p-b4aea326.js.map +1 -0
  374. package/dist/native/{p-2a6ca749.entry.js → p-c8f36510.entry.js} +2 -2
  375. package/dist/native/p-c8f36510.entry.js.map +1 -0
  376. package/dist/native/p-d3d682a7.entry.js +2 -0
  377. package/dist/native/p-d4c0a1e0.entry.js +2 -0
  378. package/dist/native/{p-a64baca2.entry.js → p-dbade286.entry.js} +2 -2
  379. package/dist/native/p-dbade286.entry.js.map +1 -0
  380. package/dist/native/p-e842220b.entry.js +2 -0
  381. package/dist/native/{p-93eea6e1.entry.js.map → p-e842220b.entry.js.map} +1 -1
  382. package/dist/native/p-eeb6a3dc.js +2 -0
  383. package/dist/native/p-f7b96c42.entry.js +2 -0
  384. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +52 -0
  385. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.d.ts +4 -0
  386. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +405 -0
  387. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.d.ts +4 -0
  388. package/dist/types/components.d.ts +329 -0
  389. package/dist/vscode-data.json +324 -0
  390. package/hydrate/index.js +2107 -1750
  391. package/hydrate/index.mjs +2107 -1750
  392. package/package.json +1 -1
  393. package/dist/cjs/index-72b8a9ad.js.map +0 -1
  394. package/dist/cjs/nv-badge.cjs.entry.js.map +0 -1
  395. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +0 -1
  396. package/dist/cjs/nv-loader.cjs.entry.js +0 -35
  397. package/dist/cjs/nv-loader.cjs.entry.js.map +0 -1
  398. package/dist/components/p-0caa4741.js.map +0 -1
  399. package/dist/components/p-39e93e5b.js.map +0 -1
  400. package/dist/components/p-3ef4ded9.js.map +0 -1
  401. package/dist/components/p-54ea8e62.js.map +0 -1
  402. package/dist/components/p-6c1b9782.js.map +0 -1
  403. package/dist/components/p-c08a278d.js.map +0 -1
  404. package/dist/components/p-f0d5586a.js.map +0 -1
  405. package/dist/esm/index-b6f70e4a.js.map +0 -1
  406. package/dist/esm/nv-badge.entry.js.map +0 -1
  407. package/dist/esm/nv-iconbutton.entry.js.map +0 -1
  408. package/dist/esm/nv-loader.entry.js +0 -31
  409. package/dist/esm/nv-loader.entry.js.map +0 -1
  410. package/dist/native/p-01262eaf.entry.js +0 -2
  411. package/dist/native/p-01262eaf.entry.js.map +0 -1
  412. package/dist/native/p-0bf2007c.entry.js +0 -2
  413. package/dist/native/p-0bf2007c.entry.js.map +0 -1
  414. package/dist/native/p-11faaf31.entry.js.map +0 -1
  415. package/dist/native/p-17dba26d.entry.js +0 -2
  416. package/dist/native/p-25e410c1.entry.js.map +0 -1
  417. package/dist/native/p-2a6ca749.entry.js.map +0 -1
  418. package/dist/native/p-327fa1a0.entry.js +0 -2
  419. package/dist/native/p-3bc5875e.entry.js +0 -2
  420. package/dist/native/p-3bc5875e.entry.js.map +0 -1
  421. package/dist/native/p-47c78fe4.entry.js +0 -2
  422. package/dist/native/p-47c78fe4.entry.js.map +0 -1
  423. package/dist/native/p-4a64f5b0.entry.js.map +0 -1
  424. package/dist/native/p-50c31094.entry.js.map +0 -1
  425. package/dist/native/p-605f8b3d.entry.js.map +0 -1
  426. package/dist/native/p-64ae9a21.entry.js +0 -2
  427. package/dist/native/p-64ae9a21.entry.js.map +0 -1
  428. package/dist/native/p-6e8bcd5b.entry.js.map +0 -1
  429. package/dist/native/p-6eb50254.entry.js.map +0 -1
  430. package/dist/native/p-6ef216c4.js +0 -3
  431. package/dist/native/p-6ef216c4.js.map +0 -1
  432. package/dist/native/p-7701e4cc.entry.js.map +0 -1
  433. package/dist/native/p-86947929.entry.js +0 -2
  434. package/dist/native/p-8bfdda07.entry.js +0 -2
  435. package/dist/native/p-8bfdda07.entry.js.map +0 -1
  436. package/dist/native/p-8f95f4fa.entry.js +0 -2
  437. package/dist/native/p-8f95f4fa.entry.js.map +0 -1
  438. package/dist/native/p-919cf3ec.entry.js.map +0 -1
  439. package/dist/native/p-93eea6e1.entry.js +0 -2
  440. package/dist/native/p-95714583.js +0 -2
  441. package/dist/native/p-9f89229b.entry.js +0 -2
  442. package/dist/native/p-a64baca2.entry.js.map +0 -1
  443. package/dist/native/p-a89f5542.entry.js.map +0 -1
  444. package/dist/native/p-b3ec71c9.entry.js +0 -2
  445. package/dist/native/p-bbe9a373.entry.js +0 -2
  446. package/dist/native/p-c2dfee1a.entry.js +0 -2
  447. package/dist/native/p-c5e3e234.entry.js +0 -2
  448. package/dist/native/p-c5e3e234.entry.js.map +0 -1
  449. package/dist/native/p-c5e7ecc8.entry.js.map +0 -1
  450. package/dist/native/p-c85d031d.entry.js.map +0 -1
  451. package/dist/native/p-cd75ee63.entry.js.map +0 -1
  452. package/dist/native/p-d4277c50.entry.js.map +0 -1
  453. package/dist/native/p-df6c9137.entry.js.map +0 -1
  454. package/dist/native/p-ef7f605a.entry.js +0 -2
  455. package/dist/native/p-f2e31579.entry.js +0 -2
  456. package/dist/native/p-fa8a8b21.entry.js.map +0 -1
  457. /package/dist/native/{p-e71fc762.entry.js.map → p-330c929d.entry.js.map} +0 -0
  458. /package/dist/native/{p-b3ec71c9.entry.js.map → p-589eb477.entry.js.map} +0 -0
  459. /package/dist/native/{p-bbe9a373.entry.js.map → p-7a7b9b95.entry.js.map} +0 -0
  460. /package/dist/native/{p-17dba26d.entry.js.map → p-a7a3c45f.entry.js.map} +0 -0
  461. /package/dist/native/{p-c2dfee1a.entry.js.map → p-d3d682a7.entry.js.map} +0 -0
  462. /package/dist/native/{p-327fa1a0.entry.js.map → p-d4c0a1e0.entry.js.map} +0 -0
  463. /package/dist/native/{p-95714583.js.map → p-eeb6a3dc.js.map} +0 -0
  464. /package/dist/native/{p-ef7f605a.entry.js.map → p-f7b96c42.entry.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-0caa4741.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-d506ae63.js';
2
2
 
3
3
  const nvDatagridbodyCss = "";
4
4
  const NvDatagridbodyStyle0 = nvDatagridbodyCss;
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-0caa4741.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-d506ae63.js';
2
2
 
3
3
  const nvDatagridcolumnCss = "";
4
4
  const NvDatagridcolumnStyle0 = nvDatagridcolumnCss;
@@ -7,6 +7,8 @@ const NvDatagridcolumn$1 = /*@__PURE__*/ proxyCustomElement(class NvDatagridcolu
7
7
  constructor() {
8
8
  super();
9
9
  this.__registerHost();
10
+ this.header = undefined;
11
+ this.accessor = undefined;
10
12
  }
11
13
  //#endregion PROPERTIES
12
14
  /****************************************************************************/
@@ -1 +1 @@
1
- {"file":"nv-datagridcolumn.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,+BAAe,mBAAmB;;MCSrBA,kBAAgB;;;;;;;;IAoB3B,MAAM;QACJ,QACE,EAAC,IAAI,uDACH,6DACE,8DAAa,CACV,CACA,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["NvDatagridcolumn"],"sources":["src/components/nv-datagridcolumn/nv-datagridcolumn.scss?tag=nv-datagridcolumn","src/components/nv-datagridcolumn/nv-datagridcolumn.tsx"],"sourcesContent":["// No need for the moment\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot default - Use this slot to insert HTML into the data grid column.\n */\n@Component({\n tag: 'nv-datagridcolumn',\n styleUrl: 'nv-datagridcolumn.scss',\n shadow: false,\n})\nexport class NvDatagridcolumn {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Defines the header of the column.\n */\n @Prop()\n readonly header: string;\n\n /**\n * Defines the accessor of the column.\n */\n @Prop()\n readonly accessor: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <th>\n <slot></slot>\n </th>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"],"version":3}
1
+ {"file":"nv-datagridcolumn.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,+BAAe,mBAAmB;;MCSrBA,kBAAgB;;;;;;;;;;IAoB3B,MAAM;QACJ,QACE,EAAC,IAAI,uDACH,6DACE,8DAAa,CACV,CACA,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["NvDatagridcolumn"],"sources":["src/components/nv-datagridcolumn/nv-datagridcolumn.scss?tag=nv-datagridcolumn","src/components/nv-datagridcolumn/nv-datagridcolumn.tsx"],"sourcesContent":["// No need for the moment\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot default - Use this slot to insert HTML into the data grid column.\n */\n@Component({\n tag: 'nv-datagridcolumn',\n styleUrl: 'nv-datagridcolumn.scss',\n shadow: false,\n})\nexport class NvDatagridcolumn {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Defines the header of the column.\n */\n @Prop()\n readonly header: string;\n\n /**\n * Defines the accessor of the column.\n */\n @Prop()\n readonly accessor: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <th>\n <slot></slot>\n </th>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-0caa4741.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-d506ae63.js';
2
2
 
3
3
  const nvDatagriddatacellCss = "";
4
4
  const NvDatagriddatacellStyle0 = nvDatagriddatacellCss;
@@ -7,6 +7,7 @@ const NvDatagriddatacell$1 = /*@__PURE__*/ proxyCustomElement(class NvDatagridda
7
7
  constructor() {
8
8
  super();
9
9
  this.__registerHost();
10
+ this.accessor = undefined;
10
11
  }
11
12
  //#endregion PROPERTIES
12
13
  /****************************************************************************/
@@ -1 +1 @@
1
- {"file":"nv-datagriddatacell.js","mappings":";;AAAA,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,iCAAe,qBAAqB;;MCSvBA,oBAAkB;;;;;;;;IAgB7B,MAAM;QACJ,QACE,EAAC,IAAI,uDACH,6DACE,8DAAa,CACV,CACA,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":["NvDatagriddatacell"],"sources":["src/components/nv-datagriddatacell/nv-datagriddatacell.scss?tag=nv-datagriddatacell","src/components/nv-datagriddatacell/nv-datagriddatacell.tsx"],"sourcesContent":["// No need for the moment\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot default - Use this slot to insert HTML into the data grid data cell.\n */\n@Component({\n tag: 'nv-datagriddatacell',\n styleUrl: 'nv-datagriddatacell.scss',\n shadow: false,\n})\nexport class NvDatagriddatacell {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Contains a string that identifies a cell in a table. It is used with the\n * headers attribute to associate data cells with header cells in complex tables.\n * @example 'col1'\n */\n @Prop()\n readonly accessor: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <td>\n <slot></slot>\n </td>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"],"version":3}
1
+ {"file":"nv-datagriddatacell.js","mappings":";;AAAA,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,iCAAe,qBAAqB;;MCSvBA,oBAAkB;;;;;;;;;IAgB7B,MAAM;QACJ,QACE,EAAC,IAAI,uDACH,6DACE,8DAAa,CACV,CACA,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":["NvDatagriddatacell"],"sources":["src/components/nv-datagriddatacell/nv-datagriddatacell.scss?tag=nv-datagriddatacell","src/components/nv-datagriddatacell/nv-datagriddatacell.tsx"],"sourcesContent":["// No need for the moment\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot default - Use this slot to insert HTML into the data grid data cell.\n */\n@Component({\n tag: 'nv-datagriddatacell',\n styleUrl: 'nv-datagriddatacell.scss',\n shadow: false,\n})\nexport class NvDatagriddatacell {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Contains a string that identifies a cell in a table. It is used with the\n * headers attribute to associate data cells with header cells in complex tables.\n * @example 'col1'\n */\n @Prop()\n readonly accessor: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <td>\n <slot></slot>\n </td>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-0caa4741.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-d506ae63.js';
2
2
 
3
3
  const nvDatagridheadCss = "";
4
4
  const NvDatagridheadStyle0 = nvDatagridheadCss;
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-0caa4741.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-d506ae63.js';
2
2
 
3
3
  const nvDatagridrowCss = "";
4
4
  const NvDatagridrowStyle0 = nvDatagridrowCss;
@@ -1,155 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-0caa4741.js';
2
- import { c as clsx } from './p-8a1a6e56.js';
3
- import { v as v4 } from './p-f5ff676c.js';
4
-
5
- const nvFieldcheckboxCss = "nv-fieldcheckbox{--nv-fieldcheckbox-border-default:var(--components-form-field-border-default);--nv-fieldcheckbox-border-hover:var(--components-form-field-border-hover);--nv-fieldcheckbox-border-focus:var(--components-form-field-border-default);--nv-fieldcheckbox-background-default:var(--components-form-field-background-default);--nv-fieldcheckbox-background-checked:var(--components-form-field-background-checked);--nv-fieldcheckbox-background-disabled:var(--components-form-field-background-disabled);--nv-fieldcheckbox-focus-box-shadow:var(--color-focus-brand);--nv-fieldcheckbox-color-checked:var(--components-form-shape-foreground-default);--nv-fieldcheckbox-color-disabled:var(--components-form-shape-foreground-disabled);--nv-fieldcheckbox-outline-color:var(--color-focus-brand);display:inline-flex;align-items:flex-start;gap:var(--form-gap-x);position:relative}nv-fieldcheckbox:not([disabled],[readonly]) input,nv-fieldcheckbox:not([disabled],[readonly]) label{cursor:pointer}nv-fieldcheckbox.error .input-container{--nv-fieldcheckbox-border-default:var(--components-form-field-border-error);--nv-fieldcheckbox-border-hover:var(--nv-fieldcheckbox-border-default);--nv-fieldcheckbox-border-focus:var(--components-form-field-border-error);--nv-fieldcheckbox-focus-box-shadow:var(--color-focus-destructive);--nv-fieldcheckbox-color-disabled:var(--components-form-shape-foreground-disabled-error);--nv-fieldcheckbox-background-checked:var(--components-form-field-background-error);--nv-fieldcheckbox-outline-color:var(--color-focus-destructive)}nv-fieldcheckbox.label-placement-before{flex-direction:row-reverse}nv-fieldcheckbox[disabled]{opacity:0.5}nv-fieldcheckbox label{align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--form-label-font-weight);line-height:var(--form-label-line-height)}nv-fieldcheckbox .input-container{position:relative;color:var(--nv-fieldcheckbox-color-checked)}nv-fieldcheckbox .input-container input[type=checkbox][readonly]{opacity:0.5}nv-fieldcheckbox .input-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--nv-fieldcheckbox-color-disabled)}nv-fieldcheckbox .input-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-checkbox-size);height:var(--form-checkbox-size);flex-direction:column;align-items:flex-start;border-radius:var(--form-checkbox-radius);border-width:var(--form-checkbox-border-width);border-style:solid;border-color:var(--nv-fieldcheckbox-border-default);background:var(--nv-fieldcheckbox-background-default)}nv-fieldcheckbox .input-container input[type=checkbox]:hover{border-color:var(--nv-fieldcheckbox-border-hover)}nv-fieldcheckbox .input-container input[type=checkbox]:focus{border-color:var(--nv-fieldcheckbox-border-focus)}nv-fieldcheckbox .input-container input[type=checkbox]:focus,nv-fieldcheckbox .input-container input[type=checkbox]:focus-within{outline:none}nv-fieldcheckbox .input-container input[type=checkbox]:focus-visible,nv-fieldcheckbox .input-container input[type=checkbox]:has(:focus-visible){outline:var(--focus-outline-stroke) solid var(--nv-fieldcheckbox-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-fieldcheckbox .input-container input[type=checkbox]:checked,nv-fieldcheckbox .input-container input[type=checkbox]:indeterminate{background:var(--nv-fieldcheckbox-background-checked);border-color:var(--nv-fieldcheckbox-background-checked)}nv-fieldcheckbox .input-container input[type=checkbox]:disabled:not([readonly]){background:var(--nv-fieldcheckbox-background-disabled);border-color:var(--nv-fieldcheckbox-border-default)}nv-fieldcheckbox .input-container input[type=checkbox][readonly]{opacity:0.5}nv-fieldcheckbox .input-container .icon{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}nv-fieldcheckbox .input-container .icon svg{width:var(--form-checkbox-icon-size);height:var(--form-checkbox-icon-size);fill:none;stroke:currentcolor;stroke-width:var(--form-checkbox-icon-stroke);flex-shrink:0}nv-fieldcheckbox .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:var(--form-description-font-weight);line-height:var(--form-description-line-height)}nv-fieldcheckbox .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:var(--form-description-font-weight);line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldcheckbox .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}";
6
- const NvFieldcheckboxStyle0 = nvFieldcheckboxCss;
7
-
8
- const NvFieldcheckbox$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldcheckbox extends H {
9
- constructor() {
10
- super();
11
- this.__registerHost();
12
- this.checkedChanged = createEvent(this, "checkedChanged", 7);
13
- /**
14
- * When true, the label will be placed before the checkbox.
15
- * @deprecated Use `labelPlacement = end` instead.
16
- * */
17
- this.labelBefore = false;
18
- //#endregion DEPRECATED
19
- /****************************************************************************/
20
- //#region PROPERTIES
21
- /**
22
- * Sets the ID for the radio button’s input element and the for attribute of
23
- * the associated label. If no ID is provided, a random one will be
24
- * automatically generated to ensure unique identification, facilitating
25
- * proper label association and accessibility.
26
- */
27
- this.inputId = v4();
28
- /**
29
- * Hides the label visually while still keeping it available for screen
30
- * readers.
31
- */
32
- this.hideLabel = false;
33
- /**
34
- * Signals that there is an error associated with the checkbox, which can
35
- * trigger visual cues.
36
- */
37
- this.error = false;
38
- /**
39
- * Indicates whether the checkbox is checked or not.
40
- */
41
- this.checked = false;
42
- /**
43
- * Indicates whether the checkbox is in an indeterminate state, typically used
44
- * for hierarchical checkboxes.
45
- */
46
- this.indeterminate = false;
47
- /**
48
- * Disables the checkbox, preventing user interaction.
49
- */
50
- this.disabled = false;
51
- /**
52
- * Sets the checkbox to read-only, preventing user changes but still allowing
53
- * focus and selection of text.
54
- */
55
- this.readonly = false;
56
- /**
57
- * Marks the checkbox as required, indicating that it must be checked for
58
- * form submission.
59
- */
60
- this.required = false;
61
- }
62
- componentWillRender() {
63
- if (this.message) {
64
- this.description = this.message;
65
- }
66
- if (this.labelBefore) {
67
- this.labelPlacement = 'before';
68
- }
69
- if (this.validation) {
70
- this.errorDescription = this.validation;
71
- }
72
- }
73
- //#endregion EVENTS
74
- /****************************************************************************/
75
- //#region WATCHERS
76
- /**
77
- * Watches for changes to the checked state and emits the new value.
78
- * @param {boolean} checked - The new value of the checked state.
79
- */
80
- onCheckedChanged(checked) {
81
- this.checkedChanged.emit(checked);
82
- }
83
- /**
84
- * Listens for the change event on the checkbox input element and updates the
85
- * checked state.
86
- * @param {Event} event - The change event.
87
- */
88
- handleChange(event) {
89
- const target = event.target;
90
- if (target.type === 'checkbox' && target.id === this.inputId) {
91
- if (this.readonly || this.disabled) {
92
- event.preventDefault();
93
- return;
94
- }
95
- if (this.indeterminate) {
96
- this.indeterminate = false;
97
- }
98
- this.checked = target.checked;
99
- }
100
- }
101
- //#endregion WATCHERS
102
- /****************************************************************************/
103
- //#region RENDER
104
- render() {
105
- return (h(Host, { key: 'c87c2b3e3a4b81c9d6eb6c3784919a5fcb78e38b', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, h("div", { key: '8e43a91fec01b02dfa6b27408e1c1fd252558014', class: "input-container" }, h("input", { key: 'bffbfc1ac879fb70e1c7b436c3a9845150b78bca', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly && !this.required, required: this.required, indeterminate: this.indeterminate, ref: el => {
106
- if (el) {
107
- el.indeterminate = this.indeterminate;
108
- }
109
- } }), h("span", { key: 'b100feee33694f72c59496f09f5ecbbf9358d7c6', class: "icon" }, this.checked && !this.indeterminate && (h("slot", { key: 'a5f5159aff04c111e4b944123686f00f817ecb1e', name: "checked-icon" }, h("svg", { key: '26a750b600fa0857ec9adf17f9d4dcd9ce0e2aad', xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" }, h("path", { key: 'ddf0155de05297d7ec966bdaf9633ceb1ee413d7', d: "M11.6667 3.5L5.25004 9.91667L2.33337 7", "stroke-linecap": "round", "stroke-linejoin": "round" })))), this.indeterminate && (h("slot", { key: 'e64681ce70326348083402f7996eaf6134aaca3e', name: "indeterminate-icon" }, h("svg", { key: '9cfcd8118bb6f208278614711fd726fe29c9070a', class: "indeterminate-svg", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 14 14", fill: "none" }, h("path", { key: '8d88be8c4bd195982bf0024e4f67f30601ddfb80', d: "M2.9165 7H11.0832", "stroke-linecap": "round", "stroke-linejoin": "round" })))))), h("div", { key: '061d18d589ef2a8efd0fb73f70d5c0a6013c497d', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '129013f8e60d1aaae82b97321c4cc26ab6229bbb', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, h("slot", { key: 'e134c0683e4c4c410c78d45f3537d8ed1491c67e', name: "label" }, this.label))), (this.description ||
110
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '78166f4fb7d1e5dc20f13ce5b4ca567a90862493', class: "description" }, h("slot", { key: '6bced15913e4a22371520818343de5598c5a5e6d', name: "description" }, this.description))), (this.errorDescription ||
111
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '88f4ceaef2412ce5f4bb08b19485fc27d9842792', hidden: !this.error, class: "error-description" }, h("slot", { key: '96a581ce5d0e66416d24bf52219a87d3c39457d8', name: "error-description" }, this.errorDescription))))));
112
- }
113
- get el() { return this; }
114
- static get watchers() { return {
115
- "checked": ["onCheckedChanged"]
116
- }; }
117
- static get style() { return NvFieldcheckboxStyle0; }
118
- }, [4, "nv-fieldcheckbox", {
119
- "message": [1],
120
- "validation": [1],
121
- "labelBefore": [4, "label-before"],
122
- "inputId": [513, "input-id"],
123
- "name": [513],
124
- "value": [513],
125
- "label": [513],
126
- "labelPlacement": [1537, "label-placement"],
127
- "hideLabel": [516, "hide-label"],
128
- "description": [1537],
129
- "error": [516],
130
- "errorDescription": [1537, "error-description"],
131
- "checked": [1540],
132
- "indeterminate": [1540],
133
- "disabled": [516],
134
- "readonly": [516],
135
- "required": [516]
136
- }, [[0, "change", "handleChange"]], {
137
- "checked": ["onCheckedChanged"]
138
- }]);
139
- function defineCustomElement$1() {
140
- if (typeof customElements === "undefined") {
141
- return;
142
- }
143
- const components = ["nv-fieldcheckbox"];
144
- components.forEach(tagName => { switch (tagName) {
145
- case "nv-fieldcheckbox":
146
- if (!customElements.get(tagName)) {
147
- customElements.define(tagName, NvFieldcheckbox$1);
148
- }
149
- break;
150
- } });
151
- }
152
- defineCustomElement$1();
1
+ import { N as NvFieldcheckbox$1, d as defineCustomElement$1 } from './p-5ce661bd.js';
153
2
 
154
3
  const NvFieldcheckbox = NvFieldcheckbox$1;
155
4
  const defineCustomElement = defineCustomElement$1;
@@ -1 +1 @@
1
- {"file":"nv-fieldcheckbox.js","mappings":"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","names":["NvFieldcheckbox","uuidv4"],"sources":["src/components/nv-fieldcheckbox/nv-fieldcheckbox.scss?tag=nv-fieldcheckbox","src/components/nv-fieldcheckbox/nv-fieldcheckbox.tsx"],"sourcesContent":["@import \"../../styles/focus-ring\";\n\n@mixin fieldcheckbox-variables() {\n --nv-fieldcheckbox-border-default: var(--components-form-field-border-default);\n --nv-fieldcheckbox-border-hover: var(--components-form-field-border-hover);\n --nv-fieldcheckbox-border-focus: var(--components-form-field-border-default);\n --nv-fieldcheckbox-background-default: var(--components-form-field-background-default);\n --nv-fieldcheckbox-background-checked: var(--components-form-field-background-checked);\n --nv-fieldcheckbox-background-disabled: var(--components-form-field-background-disabled);\n --nv-fieldcheckbox-focus-box-shadow: var(--color-focus-brand);\n --nv-fieldcheckbox-color-checked: var(--components-form-shape-foreground-default);\n --nv-fieldcheckbox-color-disabled: var(--components-form-shape-foreground-disabled);\n --nv-fieldcheckbox-outline-color: var(--color-focus-brand);\n}\n\n@mixin fieldcheckbox-error-variables() {\n --nv-fieldcheckbox-border-default: var(--components-form-field-border-error);\n --nv-fieldcheckbox-border-hover: var(--nv-fieldcheckbox-border-default);\n --nv-fieldcheckbox-border-focus: var(--components-form-field-border-error);\n --nv-fieldcheckbox-focus-box-shadow: var(--color-focus-destructive);\n --nv-fieldcheckbox-color-disabled: var(--components-form-shape-foreground-disabled-error);\n --nv-fieldcheckbox-background-checked: var(--components-form-field-background-error);\n --nv-fieldcheckbox-outline-color: var(--color-focus-destructive);\n}\n\n@mixin root-styles() {\n display: inline-flex;\n align-items: flex-start;\n gap: var(--form-gap-x);\n position: relative;\n\n &:not([disabled], [readonly]) {\n input,\n label {\n cursor: pointer;\n }\n }\n}\n\n@mixin label-before-styles() {\n flex-direction: row-reverse;\n}\n\n@mixin label-styles() {\n align-self: stretch;\n color: var(--components-form-text-label-default);\n font-family: \"TT Norms Pro\", sans-serif;\n font-size: var(--form-label-font-size);\n font-style: normal;\n font-weight: var(--form-label-font-weight);\n line-height: var(--form-label-line-height);\n}\n\n@mixin description-styles() {\n align-self: stretch;\n color: var(--components-form-text-description-default);\n font-family: \"TT Norms Pro\", sans-serif;\n font-size: var(--form-description-font-size);\n font-style: normal;\n font-weight: var(--form-description-font-weight);\n line-height: var(--form-description-line-height);\n}\n\n@mixin error-description-styles() {\n @include description-styles();\n\n color: var(--components-form-text-description-error);\n}\n\n@mixin text-container-styles() {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1 0 0;\n}\n\n@mixin input-container-styles() {\n position: relative;\n color: var(--nv-fieldcheckbox-color-checked);\n\n input[type=checkbox][readonly] {\n // TODO: Find a way to use the --components-form-opacity-disabled variable properly, right now it outputs a value of 50px instead of 0.5.\n opacity: 0.5;\n }\n\n &:has(input[type=\"checkbox\"]:disabled:not([readonly])) {\n color: var(--nv-fieldcheckbox-color-disabled);\n }\n}\n\n@mixin input-styles() {\n appearance: none;\n position: relative;\n display: flex;\n width: var(--form-checkbox-size);\n height: var(--form-checkbox-size);\n flex-direction: column;\n align-items: flex-start;\n border-radius: var(--form-checkbox-radius);\n border-width: var(--form-checkbox-border-width);\n border-style: solid;\n border-color: var(--nv-fieldcheckbox-border-default);\n background: var(--nv-fieldcheckbox-background-default);\n\n &:hover {\n border-color: var(--nv-fieldcheckbox-border-hover);\n }\n\n &:focus {\n border-color: var(--nv-fieldcheckbox-border-focus);\n }\n\n @include focus-ring(var(--nv-fieldcheckbox-outline-color));\n\n &:checked,\n &:indeterminate {\n background: var(--nv-fieldcheckbox-background-checked);\n border-color: var(--nv-fieldcheckbox-background-checked);\n }\n\n &:disabled:not([readonly]) {\n background: var(--nv-fieldcheckbox-background-disabled);\n border-color: var(--nv-fieldcheckbox-border-default);\n }\n\n &[readonly] {\n // TODO: Find a way to use the --components-form-opacity-disabled variable properly, right now it outputs a value of 50px instead of 0.5.\n opacity: 0.5;\n }\n}\n\n@mixin icon-styles() {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n width: var(--form-checkbox-icon-size);\n height: var(--form-checkbox-icon-size);\n fill: none;\n stroke: currentcolor;\n stroke-width: var(--form-checkbox-icon-stroke);\n flex-shrink: 0;\n }\n}\n\nnv-fieldcheckbox {\n @include fieldcheckbox-variables();\n @include root-styles();\n\n &.error .input-container {\n @include fieldcheckbox-error-variables();\n }\n\n &.label-placement-before {\n @include label-before-styles();\n }\n &[disabled] {\n // TODO: Find a way to use the --components-form-opacity-disabled variable properly, right now it outputs a value of 50px instead of 0.5.\n opacity: 0.5;\n }\n label {\n @include label-styles();\n }\n\n .input-container {\n @include input-container-styles();\n\n input[type=\"checkbox\"] {\n @include input-styles();\n }\n\n .icon {\n @include icon-styles();\n }\n }\n\n .description {\n @include description-styles();\n }\n\n .error-description {\n @include error-description-styles();\n }\n\n .text-container {\n @include text-container-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Watch,\n Event,\n EventEmitter,\n Listen,\n} from '@stencil/core';\nimport clsx from 'clsx';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { type FieldLabelPlacement } from '../../utils/constants';\n\n/**\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 * @slot checked-icon - Content to be placed as the checked icon, will override the checkedIcon prop.\n * @slot indeterminate-icon - Content to be placed as the indeterminate icon, will override the indeterminateIcon prop.\n */\n@Component({\n tag: 'nv-fieldcheckbox',\n styleUrl: 'nv-fieldcheckbox.scss',\n shadow: false,\n})\nexport class NvFieldcheckbox {\n @Element() el!: HTMLNvFieldcheckboxElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Message define a 'hint ' message for the Field.\n * @deprecated Use `description` instead.\n * */\n @Prop()\n readonly message?: string;\n\n /**\n * The text for the validation message.\n * @deprecated Use `errorDescription` instead.\n * */\n @Prop()\n readonly validation?: string;\n\n /**\n * When true, the label will be placed before the checkbox.\n * @deprecated Use `labelPlacement = end` instead.\n * */\n @Prop()\n readonly labelBefore?: boolean = false;\n\n componentWillRender() {\n if (this.message) {\n this.description = this.message;\n }\n\n if (this.labelBefore) {\n this.labelPlacement = 'before';\n }\n\n if (this.validation) {\n this.errorDescription = this.validation;\n }\n }\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the radio button’s input element and the for attribute of\n * the associated label. If no ID is provided, a random one will be\n * automatically generated to ensure unique identification, facilitating\n * proper label association and accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * The name attribute for the checkbox input, used to reference the form data\n * after submission.\n */\n @Prop({ reflect: true })\n readonly name?: string;\n\n /**\n * The value attribute of the checkbox input, representing the value sent on\n * form submission when the checkbox is checked. When the form is submitted,\n * the data will consist of a name=value pair.\n */\n @Prop({ reflect: true })\n readonly value?: string;\n\n /**\n * The label displayed next to the checkbox.\n */\n @Prop({ reflect: true })\n readonly label?: string;\n\n /**\n * Determines the position of the label relative to the checkbox, either\n * 'start' (before) or 'end' (after).\n */\n @Prop({ reflect: true, mutable: true })\n labelPlacement: `${FieldLabelPlacement}`;\n\n /**\n * Hides the label visually while still keeping it available for screen\n * readers.\n */\n @Prop({ reflect: true })\n readonly hideLabel: boolean = false;\n\n /**\n * A description providing additional context or information about the\n * checkbox.\n */\n @Prop({ reflect: true, mutable: true })\n description?: string;\n\n /**\n * Signals that there is an error associated with the checkbox, which can\n * trigger visual cues.\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 checkbox.\n */\n @Prop({ reflect: true, mutable: true })\n errorDescription?: string;\n\n /**\n * Indicates whether the checkbox is checked or not.\n */\n @Prop({ reflect: true, mutable: true })\n checked: boolean = false;\n\n /**\n * Indicates whether the checkbox is in an indeterminate state, typically used\n * for hierarchical checkboxes.\n */\n @Prop({ reflect: true, mutable: true })\n indeterminate: boolean = false;\n\n /**\n * Disables the checkbox, preventing user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Sets the checkbox to read-only, preventing user changes but still allowing\n * focus and selection of text.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * Marks the checkbox as required, indicating that it must be checked for\n * form submission.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the checked state changes.\n * @bind checked\n */\n @Event()\n checkedChanged: EventEmitter<boolean>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Watches for changes to the checked state and emits the new value.\n * @param {boolean} checked - The new value of the checked state.\n */\n @Watch('checked')\n onCheckedChanged(checked: boolean) {\n this.checkedChanged.emit(checked);\n }\n\n /**\n * Listens for the change event on the checkbox input element and updates the\n * checked state.\n * @param {Event} event - The change event.\n */\n @Listen('change')\n handleChange(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (target.type === 'checkbox' && target.id === this.inputId) {\n if (this.readonly || this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.indeterminate) {\n this.indeterminate = false;\n }\n\n this.checked = target.checked;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n class={clsx(\n this.labelPlacement === 'before' && 'label-placement-before',\n this.error && 'error',\n )}\n >\n <div class=\"input-container\">\n <input\n type=\"checkbox\"\n id={this.inputId}\n name={this.name}\n autocomplete=\"off\"\n value={this.value}\n checked={Boolean(this.checked)}\n disabled={this.disabled || this.readonly}\n readonly={this.readonly && !this.required}\n required={this.required}\n indeterminate={this.indeterminate}\n ref={el => {\n if (el) {\n el.indeterminate = this.indeterminate;\n }\n }}\n />\n <span class=\"icon\">\n {this.checked && !this.indeterminate && (\n <slot name=\"checked-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.6667 3.5L5.25004 9.91667L2.33337 7\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </slot>\n )}\n {this.indeterminate && (\n <slot name=\"indeterminate-icon\">\n <svg\n class=\"indeterminate-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M2.9165 7H11.0832\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </slot>\n )}\n </span>\n </div>\n\n <div class=\"text-container\">\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label\n htmlFor={this.inputId}\n class={clsx(this.hideLabel && 'visually-hidden')}\n >\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\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 </div>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-fieldcheckbox.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1,9 +1,9 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-0caa4741.js';
2
- import { d as defineCustomElement$6 } from './p-6c1b9782.js';
3
- import { d as defineCustomElement$5 } from './p-39e93e5b.js';
4
- import { d as defineCustomElement$4 } from './p-f0d5586a.js';
5
- import { d as defineCustomElement$3 } from './p-3ef4ded9.js';
6
- import { d as defineCustomElement$2 } from './p-54ea8e62.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-d506ae63.js';
2
+ import { d as defineCustomElement$6 } from './p-b12abc99.js';
3
+ import { d as defineCustomElement$5 } from './p-d70df149.js';
4
+ import { d as defineCustomElement$4 } from './p-8bec002e.js';
5
+ import { d as defineCustomElement$3 } from './p-a1aa8970.js';
6
+ import { d as defineCustomElement$2 } from './p-d5dd3def.js';
7
7
  import { v as v4 } from './p-f5ff676c.js';
8
8
 
9
9
  const nvFielddropdownCss = "nv-fielddropdown{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box}nv-fielddropdown[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fielddropdown[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive)}nv-fielddropdown[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fielddropdown label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fielddropdown nv-popover{width:100%;display:block}nv-fielddropdown .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fielddropdown .input-container{display:flex;flex-grow:1;padding:calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);justify-content:center;align-items:center;gap:var(--form-field-gap);align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default);background:var(--nv-field-background);transition:all 150ms ease-out;display:flex;align-items:center;position:relative;width:100%;min-height:40px}nv-fielddropdown .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fielddropdown .input-container:focus-within{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fielddropdown .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fielddropdown .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fielddropdown .input-container input,nv-fielddropdown .input-container p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);text-overflow:ellipsis;font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;padding-right:2rem;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}nv-fielddropdown .input-container input:focus,nv-fielddropdown .input-container p.non-filterable-text:focus{outline:none}nv-fielddropdown .input-container input::placeholder,nv-fielddropdown .input-container p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fielddropdown .input-container .toggle-dropdown-icon{position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:2}nv-fielddropdown .input-container nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px}nv-fielddropdown .input-container.focus-within,nv-fielddropdown .input-container:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fielddropdown .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:500;line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fielddropdown .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fielddropdown .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fielddropdown .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fielddropdown hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}.input-container.focus-within,.input-container:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}";
@@ -15,63 +15,6 @@ const NVFieldDropDown = /*@__PURE__*/ proxyCustomElement(class NVFieldDropDown e
15
15
  this.__registerHost();
16
16
  this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
17
17
  this.valueChanged = createEvent(this, "valueChanged", 7);
18
- /****************************************************************************/
19
- //#region PROPERTIES
20
- /**
21
- * Sets the ID for the input element and the for attribute of the associated
22
- * label. If no ID is provided, a random one will be automatically generated
23
- * to ensure unique identification, facilitating proper label association and
24
- * accessibility.
25
- */
26
- this.inputId = v4();
27
- /**
28
- * State of the dropdown popover.
29
- */
30
- this.open = false;
31
- /**
32
- * The autocomplete prop helps users fill out the input field faster by
33
- * suggesting entries they’ve used before, like their email or address.
34
- * You can turn it on to make forms more convenient or off to ensure users
35
- * always type in fresh data.
36
- */
37
- this.autocomplete = 'off';
38
- /**
39
- * Marks the input field as required, ensuring that the user must fill it out
40
- * before submitting the form.
41
- */
42
- this.required = false;
43
- /**
44
- * Alters the input field’s appearance to indicate an error, helping users
45
- * identify fields that need correction.
46
- * @validator error
47
- */
48
- this.error = false;
49
- /**
50
- * Display the input field’s content without allowing users to change it.
51
- * Users can still click on it, select, and copy the text, but they won’t be
52
- * able to type or delete anything.
53
- */
54
- this.readonly = false;
55
- /**
56
- * The disabled prop lets you turn off the input field so that users can’t
57
- * type in it. When disabled, the field is grayed out and won’t respond to
58
- * clicks or touches.
59
- */
60
- this.disabled = false;
61
- /**
62
- * The text to display when no items match the filter.
63
- */
64
- this.emptyresult = 'No results found';
65
- /**
66
- * The text entered by the user for filtering dropdown items.
67
- */
68
- this.filterText = '';
69
- /**
70
- * Enables or disables the filtering feature for the dropdown items.
71
- */
72
- this.filterable = false;
73
- this.isFilterable = this.filterable;
74
- this.selectedValues = new Set();
75
18
  /**
76
19
  * Handle click on the input container.
77
20
  * @param {MouseEvent} event - The click event.
@@ -155,6 +98,24 @@ const NVFieldDropDown = /*@__PURE__*/ proxyCustomElement(class NVFieldDropDown e
155
98
  this.popoverElement.hide();
156
99
  }
157
100
  };
101
+ this.inputId = v4();
102
+ this.label = undefined;
103
+ this.description = undefined;
104
+ this.placeholder = undefined;
105
+ this.name = undefined;
106
+ this.open = false;
107
+ this.autocomplete = 'off';
108
+ this.value = undefined;
109
+ this.required = false;
110
+ this.error = false;
111
+ this.errorDescription = undefined;
112
+ this.readonly = false;
113
+ this.disabled = false;
114
+ this.emptyresult = 'No results found';
115
+ this.filterText = '';
116
+ this.filterable = false;
117
+ this.isFilterable = this.filterable;
118
+ this.selectedValues = new Set();
158
119
  }
159
120
  handleItemSelected(event) {
160
121
  if (this.disabled || this.readonly)
@@ -1 +1 @@
1
- {"file":"nv-fielddropdown.js","mappings":";;;;;;;;AAAA,MAAM,kBAAkB,GAAG,iwLAAiwL,CAAC;AAC7xL,8BAAe,kBAAkB;;MCiCpB,eAAe;IAN5B;;;;;;;;;;;;;QAqBW,YAAO,GAAWA,EAAM,EAAE,CAAC;;;;QAwCpC,SAAI,GAAY,KAAK,CAAC;;;;;;;QASb,iBAAY,GAA+B,KAAK,CAAC;;;;;QAejD,aAAQ,GAAY,KAAK,CAAC;;;;;;QAQ1B,UAAK,GAAY,KAAK,CAAC;;;;;;QAgBvB,aAAQ,GAAY,KAAK,CAAC;;;;;;QAQ1B,aAAQ,GAAY,KAAK,CAAC;;;;QAM1B,gBAAW,GAAW,kBAAkB,CAAC;;;;QAMlD,eAAU,GAAW,EAAE,CAAC;;;;QAMxB,eAAU,GAAY,KAAK,CAAC;QAG5B,iBAAY,GAAY,IAAI,CAAC,UAAU,CAAC;QAGxC,mBAAc,GAAgB,IAAI,GAAG,EAAE,CAAC;;;;;QA4IhC,8BAAyB,GAAG,CAAC,KAAiB;YACpD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,OAAO;aACR;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;YAG3C,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE;gBACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;;gBAG3B,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAC1C,kBAAkB,CACJ,CAAC;gBACjB,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;;oBAG7C,MAAM,iBAAiB,GAAG;wBACxB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;qBACjD,CAAC;;oBAGF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBACjE;aACF;SACF,CAAC;;;;;QAMM,gBAAW,GAAG,CAAC,KAAY;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,OAAO;aACR;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB,CAAC;;;;QAyFM,qBAAgB,GAAG;YACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,OAAO;aACR;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB,CAAC;;;;QAKM,oBAAe,GAAG;;YAExB,UAAU,CAAC;gBACT,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;oBAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;oBAClB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;iBAC5B;aACF,EAAE,GAAG,CAAC,CAAC;SACT,CAAC;;;;;QAMM,kBAAa,GAAG;YACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;;gBAG3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;aACF;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;aAC5B;SACF,CAAC;KA6LH;IAzeC,kBAAkB,CAAC,KAAmD;QACpE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;;QAG3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACb,CAAC;;QAGtC,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aACnC;SACF,CAAC,CAAC;;QAGH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,KAAK,CAAC,MAAyC,CAAC,YAAY,CAC3D,UAAU,EACV,MAAM,CACP,CAAC;QACD,KAAK,CAAC,MAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;QAG7C,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SAC5B;KACF;IAUD,iBAAiB,CAAC,KAA2B;QAC3C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;IAGD,sBAAsB,CAAC,QAAiB;QACtC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC5B;IAGD,iBAAiB;;QAEf,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;;;;;;;IASD,iBAAiB;QACf,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGvE,IAAI,CAAC,mBAAmB,EAAE,CAAC;;QAG3B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;aAAM;;YAEL,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;;;;IAKO,mBAAmB;;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACb,CAAC;QAEtC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI;;YACF,OAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK;gBACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK;gBACzC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,EAAE,MAAK,IAAI,CAAC,KAAK,CAAA;SAAA,CAC1C,CAAC;;QAGF,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,YAAY,EAAE;;YAEhB,YAAY,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9C,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;YAGvC,IAAI,CAAC,KAAK;gBACR,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;oBAClC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;qBAClC,MAAA,YAAY,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA;oBAChC,EAAE,CAAC;YACL,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;aACtC;SACF;KACF;;;;IAKD,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;;;;;IAwDO,WAAW;;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACb,CAAC;;QAGtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAC7C,kCAAkC,CACnC,CAAC;QACF,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,CAAC,MAAM,EAAE,CAAC;SAC5B;QAED,IAAI,eAAe,GAAG,KAAK,CAAC;;QAG5B,KAAK,CAAC,OAAO,CAAC,IAAI;;YAChB,MAAM,WAAW,GAAG,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,EAAE,KAAI,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,KAAI,EAAE,CAAC;;YAG9C,MAAM,UAAU,GACd,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC/B,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAExC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC;YAE9C,IAAI,UAAU,EAAE;gBACd,eAAe,GAAG,IAAI,CAAC;aACxB;SACF,CAAC,CAAC;;QAGH,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YACjE,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC7C,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3C,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACzC,MAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,0CAAE,WAAW,CAAC,SAAS,CAAC,CAAC;SACrE;KACF;;;;IAKO,WAAW;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACb,CAAC;QAEtC,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACzB,CAAC,CAAC;KACJ;;;;;IAOD,MAAM,aAAa;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;;;;IAMO,kBAAkB,CAAC,KAAiB;QAC1C,IACE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;aACrC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,EACvE;;YAEA,OAAO;SACR;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;IAgDD,aAAa,CAAC,KAAoB;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAE3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;oBAEpB,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YACD,OAAO;SACR;;QAGD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC/C,OAAO;SACR;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAC/B,CAAC;;QAGtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACpD,OAAO;SACR;QAED,IAAI,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CACvC,CAAC;QAEF,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YAChE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,IAAI,CAAC,EAAE;YACrD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;SAC7B;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;aAC1B;SACF;KACF;IAEO,qBAAqB,CAC3B,KAAuC,EACvC,KAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;iBACjC;gBAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACrC;SACF,CAAC,CAAC;KACJ;IAEO,cAAc;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAChE,IAAI,SAAS,EAAE;YACZ,SAAyB,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,qBAAqB,CACxB,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACb,EACrC,CAAC,CACF,CAAC;SACH;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC9C;KACF;;;;IAMD,MAAM;QACJ,QACE,EAAC,IAAI,uDACF,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,MACrD,8DAAO,OAAO,EAAE,IAAI,CAAC,OAAO,IAC1B,6DAAM,IAAI,EAAC,OAAO,IAAE,IAAI,CAAC,KAAK,CAAQ,CAChC,CACT,EAED,mEACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAA0B,CAAC,EAC7D,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,cAAc,EACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IAEf,4DAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,IACvC,6DAAM,IAAI,EAAC,cAAc,GAAQ,EAEjC,4DACE,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,IAAI,CAAC,yBAAyB,IAEvC,6DAAM,IAAI,EAAC,eAAe,GAAQ,EAEjC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAClD,aACE,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EACjC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,MAAM,EAAE,IAAI,CAAC,eAAe,EAC5B,SAAS,EAAE,IAAI,CAAC,aAAa,GAC7B,KAEF,SACE,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,KAAK,EAAC,qBAAqB,EAC3B,OAAO,EAAE,IAAI,CAAC,yBAAyB,EACvC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAE9B,gBAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAQ,CAC3C,CACL,EAED,sEACE,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa,GAAG,cAAc,EAChD,IAAI,EAAC,IAAI,EACT,QAAQ,EAAC,OAAO,gBACJ,IAAI,CAAC,IAAI,GAAG,eAAe,GAAG,eAAe,kBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAClC,OAAO,EAAE,IAAI,CAAC,aAAa,GAC3B,CACE,EAEN,6DAAM,IAAI,EAAC,aAAa,GAAQ,CAC5B,EAEN,6DAAM,IAAI,EAAC,SAAS,GAAQ,CACjB,EAEZ,CAAC,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAC7C,4DAAK,KAAK,EAAC,aAAa,IACtB,6DAAM,IAAI,EAAC,aAAa,IAAE,IAAI,CAAC,WAAW,CAAQ,CAC9C,CACP,EAEA,CAAC,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC,MACnD,4DAAK,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,mBAAmB,IACjD,6DAAM,IAAI,EAAC,mBAAmB,IAAE,IAAI,CAAC,gBAAgB,CAAQ,CACzD,CACP,CACI,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["uuidv4"],"sources":["src/components/nv-fielddropdown/nv-fielddropdown.scss?tag=nv-fielddropdown","src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\nnv-fielddropdown {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n width: 100%;\n display: block;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n display: flex;\n align-items: center;\n position: relative;\n width: 100%;\n min-height: 40px;\n input,\n p.non-filterable-text {\n @include form-field-input();\n width: 100%;\n padding-right: 2rem;\n flex-grow: 1;\n margin: 0;\n min-height: 100%;\n box-sizing: border-box;\n }\n\n .toggle-dropdown-icon {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n position: absolute;\n right: 50px;\n }\n\n &.focus-within,\n &:hover {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0px 0px 0px var(--focus-field-stroke)\n var(--nv-field-focus-box-shadow);\n }\n }\n\n .non-filterable-text {\n display: block;\n border-radius: var(--form-field-radius);\n background-color: var(--nv-field-background);\n color: var(--components-form-field-content-text);\n font-size: var(--form-field-font-size);\n font-weight: 500;\n line-height: var(--form-field-line-height);\n box-sizing: border-box;\n cursor: pointer;\n height: 100%;\n min-height: 40px;\n\n span {\n display: inline-block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n}\n\n.input-container.focus-within,\n.input-container:hover {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0px 0px 0px var(--focus-field-stroke)\n var(--nv-field-focus-box-shadow);\n}\n","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';\nimport { DropdownItemSelectedEventDetail } from '../nv-fielddropdownitem/DropdownItemSelectedEventDetail';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\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\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NVFieldDropDown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\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 * 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\n * 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. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It’s a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\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 * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\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 value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input’s value is managed by the component’s state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: 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 dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field’s content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won’t be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can’t\n * type in it. When disabled, the field is grayed out and won’t respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: 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 * The text entered by the user for filtering dropdown items.\n */\n @State()\n filterText: string = '';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n @Listen('itemSelected')\n handleItemSelected(event: CustomEvent<DropdownItemSelectedEventDetail>) {\n if (this.disabled || this.readonly) return;\n\n // Retrieve all nv-fielddropdownitem elements present in the dropdown.\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // For each item, remove the 'selected' attribute and the 'selected' class.\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n }\n });\n\n // Update the value and emit the event with the selected item.\n this.value = event.detail.value;\n (event.target as HTMLNvFielddropdownitemElement).setAttribute(\n 'selected',\n 'true',\n );\n (event.target as HTMLElement).classList.add('selected');\n this.dropdownItemSelected.emit(event.detail);\n\n // Close the popover after selecting.\n if (this.popoverElement) {\n this.popoverElement.hide();\n }\n }\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler() {\n // Handle value change and update the corresponding dropdown item if it exists\n this.setInitialSelection();\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Handle pre-selection during component initialization\n this.setInitialSelection();\n\n // Apply filtering if the dropdown is filterable and there is a value\n if (this.filterable && this.value) {\n this.filterText = this.value.toLowerCase();\n this.filterItems(); // Update the visibility of items\n } else {\n // Ensure all items are visible if no filtering is applied\n this.resetFilter();\n }\n }\n\n /**\n * Set the initial selection based on the current value and update the inputElement value.\n */\n private setInitialSelection() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item =>\n item.getAttribute('label') === this.value ||\n item.getAttribute('value') === this.value ||\n item.textContent?.trim() === this.value,\n );\n\n // Remove 'selected' from all items first to reset the state\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n // Add the `selected` attribute and `selected` class for visual styling\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n\n // Update the value and inputElement value to reflect the pre-selected item\n this.value =\n selectedItem.getAttribute('label') ||\n selectedItem.getAttribute('value') ||\n selectedItem.textContent?.trim() ||\n '';\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n }\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Handle click on the input container.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return; // Do nothing if the dropdown is disabled or read-only\n }\n\n const target = event.target as HTMLElement;\n\n // Check if it is the paragraph or another part of the container\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n this.popoverElement.show();\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change.\n * @param {Event} event - The input event.\n */\n private handleInput = (event: Event) => {\n if (!this.filterable) return; // Do not filter if `filterable` is false\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.value = input.value; // Update the value\n this.valueChanged.emit(input.value); // Emit an event if needed\n this.filterItems(); // Update the visibility of items\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyresult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\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 * Handle click outside the component.\n * @param {MouseEvent} event - The click event.\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 // If the click is inside the component or on the input, do not close the popover\n return;\n }\n\n this.popoverElement.hide(); // Close the popover if the click is outside the component\n }\n\n /**\n * Handle input focus.\n */\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n this.open = true; // Force the popover to open\n };\n\n /**\n * Handle input blur.\n */\n private handleInputBlur = () => {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n this.open = false;\n this.popoverElement.hide(); // Close the popover if the focus is outside the component\n }\n }, 150);\n };\n\n /**\n * Toggle the dropdown popover.\n * @returns {void}\n */\n private togglePopover = (): void => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n this.open = !this.open;\n if (this.open) {\n this.popoverElement.show();\n\n // Si le dropdown n'est pas filtrable, focus sur le premier élément\n if (!this.filterable) {\n this.focusFirstItem();\n }\n } else {\n this.popoverElement.hide();\n }\n };\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n this.popoverElement.show();\n\n if (!this.filterable) {\n // Focus sur le premier élément si ce n'est pas filtrable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Vérifiez si le popover est défini avant de chercher les items\n if (!this.popoverElement) {\n console.warn('Popover element is not defined');\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Vérifiez si les items existent\n if (items.length === 0) {\n console.warn('No dropdown 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 = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n this.popoverElement.hide();\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n if (!item.checkVisibility()) {\n console.log('Item not focused');\n }\n\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('No first item found to focus');\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\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 as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={0} // Ajout du tabindex pour permettre de le focus\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici également\n onFocus={this.handleInputFocus}\n >\n <span>{this.value || this.placeholder}</span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\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.togglePopover}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <slot name=\"content\"></slot>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\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 </Host>\n );\n }\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-fielddropdown.js","mappings":"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","names":["uuidv4"],"sources":["src/components/nv-fielddropdown/nv-fielddropdown.scss?tag=nv-fielddropdown","src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\nnv-fielddropdown {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n width: 100%;\n display: block;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n display: flex;\n align-items: center;\n position: relative;\n width: 100%;\n min-height: 40px;\n input,\n p.non-filterable-text {\n @include form-field-input();\n width: 100%;\n padding-right: 2rem;\n flex-grow: 1;\n margin: 0;\n min-height: 100%;\n box-sizing: border-box;\n }\n\n .toggle-dropdown-icon {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n position: absolute;\n right: 50px;\n }\n\n &.focus-within,\n &:hover {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0px 0px 0px var(--focus-field-stroke)\n var(--nv-field-focus-box-shadow);\n }\n }\n\n .non-filterable-text {\n display: block;\n border-radius: var(--form-field-radius);\n background-color: var(--nv-field-background);\n color: var(--components-form-field-content-text);\n font-size: var(--form-field-font-size);\n font-weight: 500;\n line-height: var(--form-field-line-height);\n box-sizing: border-box;\n cursor: pointer;\n height: 100%;\n min-height: 40px;\n\n span {\n display: inline-block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n}\n\n.input-container.focus-within,\n.input-container:hover {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0px 0px 0px var(--focus-field-stroke)\n var(--nv-field-focus-box-shadow);\n}\n","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';\nimport { DropdownItemSelectedEventDetail } from '../nv-fielddropdownitem/DropdownItemSelectedEventDetail';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\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\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NVFieldDropDown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\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 * 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\n * 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. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It’s a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\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 * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\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 value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input’s value is managed by the component’s state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: 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 dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field’s content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won’t be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can’t\n * type in it. When disabled, the field is grayed out and won’t respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: 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 * The text entered by the user for filtering dropdown items.\n */\n @State()\n filterText: string = '';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n @Listen('itemSelected')\n handleItemSelected(event: CustomEvent<DropdownItemSelectedEventDetail>) {\n if (this.disabled || this.readonly) return;\n\n // Retrieve all nv-fielddropdownitem elements present in the dropdown.\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // For each item, remove the 'selected' attribute and the 'selected' class.\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n }\n });\n\n // Update the value and emit the event with the selected item.\n this.value = event.detail.value;\n (event.target as HTMLNvFielddropdownitemElement).setAttribute(\n 'selected',\n 'true',\n );\n (event.target as HTMLElement).classList.add('selected');\n this.dropdownItemSelected.emit(event.detail);\n\n // Close the popover after selecting.\n if (this.popoverElement) {\n this.popoverElement.hide();\n }\n }\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler() {\n // Handle value change and update the corresponding dropdown item if it exists\n this.setInitialSelection();\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Handle pre-selection during component initialization\n this.setInitialSelection();\n\n // Apply filtering if the dropdown is filterable and there is a value\n if (this.filterable && this.value) {\n this.filterText = this.value.toLowerCase();\n this.filterItems(); // Update the visibility of items\n } else {\n // Ensure all items are visible if no filtering is applied\n this.resetFilter();\n }\n }\n\n /**\n * Set the initial selection based on the current value and update the inputElement value.\n */\n private setInitialSelection() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item =>\n item.getAttribute('label') === this.value ||\n item.getAttribute('value') === this.value ||\n item.textContent?.trim() === this.value,\n );\n\n // Remove 'selected' from all items first to reset the state\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n // Add the `selected` attribute and `selected` class for visual styling\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n\n // Update the value and inputElement value to reflect the pre-selected item\n this.value =\n selectedItem.getAttribute('label') ||\n selectedItem.getAttribute('value') ||\n selectedItem.textContent?.trim() ||\n '';\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n }\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Handle click on the input container.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return; // Do nothing if the dropdown is disabled or read-only\n }\n\n const target = event.target as HTMLElement;\n\n // Check if it is the paragraph or another part of the container\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n this.popoverElement.show();\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change.\n * @param {Event} event - The input event.\n */\n private handleInput = (event: Event) => {\n if (!this.filterable) return; // Do not filter if `filterable` is false\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.value = input.value; // Update the value\n this.valueChanged.emit(input.value); // Emit an event if needed\n this.filterItems(); // Update the visibility of items\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyresult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\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 * Handle click outside the component.\n * @param {MouseEvent} event - The click event.\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 // If the click is inside the component or on the input, do not close the popover\n return;\n }\n\n this.popoverElement.hide(); // Close the popover if the click is outside the component\n }\n\n /**\n * Handle input focus.\n */\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n this.open = true; // Force the popover to open\n };\n\n /**\n * Handle input blur.\n */\n private handleInputBlur = () => {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n this.open = false;\n this.popoverElement.hide(); // Close the popover if the focus is outside the component\n }\n }, 150);\n };\n\n /**\n * Toggle the dropdown popover.\n * @returns {void}\n */\n private togglePopover = (): void => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n this.open = !this.open;\n if (this.open) {\n this.popoverElement.show();\n\n // Si le dropdown n'est pas filtrable, focus sur le premier élément\n if (!this.filterable) {\n this.focusFirstItem();\n }\n } else {\n this.popoverElement.hide();\n }\n };\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n this.popoverElement.show();\n\n if (!this.filterable) {\n // Focus sur le premier élément si ce n'est pas filtrable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Vérifiez si le popover est défini avant de chercher les items\n if (!this.popoverElement) {\n console.warn('Popover element is not defined');\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Vérifiez si les items existent\n if (items.length === 0) {\n console.warn('No dropdown 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 = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n this.popoverElement.hide();\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n if (!item.checkVisibility()) {\n console.log('Item not focused');\n }\n\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('No first item found to focus');\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\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 as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={0} // Ajout du tabindex pour permettre de le focus\n onKeyDown={this.handleKeyDown} // Gérer les touches fléchées ici également\n onFocus={this.handleInputFocus}\n >\n <span>{this.value || this.placeholder}</span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\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.togglePopover}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <slot name=\"content\"></slot>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\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 </Host>\n );\n }\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { N as NvFielddropdownitem$1, d as defineCustomElement$1 } from './p-6c1b9782.js';
1
+ import { N as NvFielddropdownitem$1, d as defineCustomElement$1 } from './p-b12abc99.js';
2
2
 
3
3
  const NvFielddropdownitem = NvFielddropdownitem$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface NvFielddropdownitemcheck extends Components.NvFielddropdownitemcheck, HTMLElement {}
4
+ export const NvFielddropdownitemcheck: {
5
+ prototype: NvFielddropdownitemcheck;
6
+ new (): NvFielddropdownitemcheck;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,8 @@
1
+ import { N as NvFielddropdownitemcheck$1, d as defineCustomElement$1 } from './p-e4641c41.js';
2
+
3
+ const NvFielddropdownitemcheck = NvFielddropdownitemcheck$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { NvFielddropdownitemcheck, defineCustomElement };
7
+
8
+ //# sourceMappingURL=nv-fielddropdownitemcheck.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-fielddropdownitemcheck.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}