@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
package/hydrate/index.js CHANGED
@@ -128,7 +128,7 @@ function hydrateFactory($stencilWindow, $stencilHydrateOpts, $stencilHydrateResu
128
128
 
129
129
 
130
130
  const NAMESPACE = 'native';
131
- const BUILD = /* native */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: false, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: true, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, modernPropertyDecls: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: false, scopedSlotTextContentFix: true, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: false, shadowDomShim: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: false, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: true };
131
+ const BUILD = /* native */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: false, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: true, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: false, scopedSlotTextContentFix: true, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: false, shadowDomShim: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: false, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: true };
132
132
 
133
133
  // Prevents the dev components from being bundled in production as a component
134
134
  if (Build.isDev) {
@@ -136,7 +136,7 @@ if (Build.isDev) {
136
136
  }
137
137
 
138
138
  /*
139
- Stencil Hydrate Platform v4.23.1 | MIT Licensed | https://stenciljs.com
139
+ Stencil Hydrate Platform v4.22.3 | MIT Licensed | https://stenciljs.com
140
140
  */
141
141
  var __defProp = Object.defineProperty;
142
142
  var __export = (target, all) => {
@@ -148,6 +148,9 @@ var __export = (target, all) => {
148
148
  var EMPTY_OBJ = {};
149
149
  var SVG_NS = "http://www.w3.org/2000/svg";
150
150
  var HTML_NS = "http://www.w3.org/1999/xhtml";
151
+
152
+ // src/utils/helpers.ts
153
+ var isDef = (v) => v != null;
151
154
  var isComplexType = (o) => {
152
155
  o = typeof o;
153
156
  return o === "object" || o === "function";
@@ -207,13 +210,26 @@ var unwrapErr = (result) => {
207
210
  throw result.value;
208
211
  }
209
212
  };
213
+ var createTime = (fnName, tagName = "") => {
214
+ {
215
+ return () => {
216
+ return;
217
+ };
218
+ }
219
+ };
220
+ var uniqueTime = (key, measureText) => {
221
+ {
222
+ return () => {
223
+ return;
224
+ };
225
+ }
226
+ };
210
227
 
211
228
  // src/runtime/runtime-constants.ts
212
229
  var CONTENT_REF_ID = "r";
213
230
  var ORG_LOCATION_ID = "o";
214
231
  var SLOT_NODE_ID = "s";
215
232
  var TEXT_NODE_ID = "t";
216
- var COMMENT_NODE_ID = "c";
217
233
  var HYDRATE_ID = "s-id";
218
234
  var HYDRATED_STYLE_ID = "sty-id";
219
235
  var HYDRATE_CHILD_ID = "c-id";
@@ -230,95 +246,6 @@ var FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [
230
246
  "formDisabledCallback",
231
247
  "formStateRestoreCallback"
232
248
  ];
233
- var updateFallbackSlotVisibility = (elm) => {
234
- const childNodes = elm.__childNodes || elm.childNodes;
235
- if (elm.tagName && elm.tagName.includes("-") && elm["s-cr"] && elm.tagName !== "SLOT-FB") {
236
- getHostSlotNodes(childNodes, elm.tagName).forEach((slotNode) => {
237
- var _a;
238
- if (slotNode.nodeType === 1 /* ElementNode */ && slotNode.tagName === "SLOT-FB") {
239
- if ((_a = getHostSlotChildNodes(slotNode, slotNode["s-sn"], false)) == null ? void 0 : _a.length) {
240
- slotNode.hidden = true;
241
- } else {
242
- slotNode.hidden = false;
243
- }
244
- }
245
- });
246
- }
247
- for (const childNode of childNodes) {
248
- if (childNode.nodeType === 1 /* ElementNode */ && (childNode.__childNodes || childNode.childNodes).length) {
249
- updateFallbackSlotVisibility(childNode);
250
- }
251
- }
252
- };
253
- var getHostSlotNodes = (childNodes, hostName, slotName) => {
254
- let i2 = 0;
255
- let slottedNodes = [];
256
- let childNode;
257
- for (; i2 < childNodes.length; i2++) {
258
- childNode = childNodes[i2];
259
- if (childNode["s-sr"] && childNode["s-hn"] === hostName && (!slotName || childNode["s-sn"] === slotName)) {
260
- slottedNodes.push(childNode);
261
- if (typeof slotName !== "undefined") return slottedNodes;
262
- }
263
- slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)];
264
- }
265
- return slottedNodes;
266
- };
267
- var getHostSlotChildNodes = (node, slotName, includeSlot = true) => {
268
- const childNodes = [];
269
- if (includeSlot && node["s-sr"] || !node["s-sr"]) childNodes.push(node);
270
- while ((node = node.nextSibling) && node["s-sn"] === slotName) {
271
- childNodes.push(node);
272
- }
273
- return childNodes;
274
- };
275
- var isNodeLocatedInSlot = (nodeToRelocate, slotName) => {
276
- if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
277
- if (nodeToRelocate.getAttribute("slot") === null && slotName === "") {
278
- return true;
279
- }
280
- if (nodeToRelocate.getAttribute("slot") === slotName) {
281
- return true;
282
- }
283
- return false;
284
- }
285
- if (nodeToRelocate["s-sn"] === slotName) {
286
- return true;
287
- }
288
- return slotName === "";
289
- };
290
- var addSlotRelocateNode = (newChild, slotNode, prepend, position) => {
291
- let slottedNodeLocation;
292
- if (newChild["s-ol"] && newChild["s-ol"].isConnected) {
293
- slottedNodeLocation = newChild["s-ol"];
294
- } else {
295
- slottedNodeLocation = document.createTextNode("");
296
- slottedNodeLocation["s-nr"] = newChild;
297
- }
298
- if (!slotNode["s-cr"] || !slotNode["s-cr"].parentNode) return;
299
- const parent = slotNode["s-cr"].parentNode;
300
- const appendMethod = prepend ? parent.__prepend || parent.prepend : parent.__appendChild || parent.appendChild;
301
- if (typeof position !== "undefined") {
302
- {
303
- slottedNodeLocation["s-oo"] = position;
304
- const childNodes = parent.__childNodes || parent.childNodes;
305
- const slotRelocateNodes = [slottedNodeLocation];
306
- childNodes.forEach((n) => {
307
- if (n["s-nr"]) slotRelocateNodes.push(n);
308
- });
309
- slotRelocateNodes.sort((a, b) => {
310
- if (!a["s-oo"] || a["s-oo"] < b["s-oo"]) return -1;
311
- else if (!b["s-oo"] || b["s-oo"] < a["s-oo"]) return 1;
312
- return 0;
313
- });
314
- slotRelocateNodes.forEach((n) => appendMethod.call(parent, n));
315
- }
316
- } else {
317
- appendMethod.call(parent, slottedNodeLocation);
318
- }
319
- newChild["s-ol"] = slottedNodeLocation;
320
- newChild["s-sh"] = slotNode["s-hn"];
321
- };
322
249
  var h = (nodeName, vnodeData, ...children) => {
323
250
  let child = null;
324
251
  let key = null;
@@ -393,123 +320,392 @@ var newVNode = (tag, text) => {
393
320
  };
394
321
  var Host = {};
395
322
  var isHost = (node) => node && node.$tag$ === Host;
396
- var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
397
- if (oldValue !== newValue) {
398
- let isProp = isMemberInElement(elm, memberName);
399
- let ln = memberName.toLowerCase();
400
- if (memberName === "class") {
401
- const classList = elm.classList;
402
- const oldClasses = parseClassList(oldValue);
403
- let newClasses = parseClassList(newValue);
404
- if (elm["s-si"]) {
405
- newClasses.push(elm["s-si"]);
406
- oldClasses.forEach((c) => {
407
- if (c.startsWith(elm["s-si"])) newClasses.push(c);
408
- });
409
- newClasses = [...new Set(newClasses)];
410
- classList.add(...newClasses);
411
- delete elm["s-si"];
412
- } else {
413
- classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));
414
- classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));
323
+
324
+ // src/runtime/client-hydrate.ts
325
+ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
326
+ const endHydrate = createTime("hydrateClient", tagName);
327
+ const shadowRoot = hostElm.shadowRoot;
328
+ const childRenderNodes = [];
329
+ const slotNodes = [];
330
+ const shadowRootNodes = null;
331
+ const vnode = hostRef.$vnode$ = newVNode(tagName, null);
332
+ if (!plt.$orgLocNodes$) {
333
+ initializeDocumentHydrate(doc.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map());
334
+ }
335
+ hostElm[HYDRATE_ID] = hostId;
336
+ hostElm.removeAttribute(HYDRATE_ID);
337
+ clientHydrate(vnode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, hostElm, hostId);
338
+ childRenderNodes.map((c) => {
339
+ const orgLocationId = c.$hostId$ + "." + c.$nodeId$;
340
+ const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);
341
+ const node = c.$elm$;
342
+ if (orgLocationNode && supportsShadow && orgLocationNode["s-en"] === "") {
343
+ orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);
344
+ }
345
+ if (!shadowRoot) {
346
+ node["s-hn"] = tagName;
347
+ if (orgLocationNode) {
348
+ node["s-ol"] = orgLocationNode;
349
+ node["s-ol"]["s-nr"] = node;
415
350
  }
416
- } else if (memberName === "style") {
417
- {
418
- for (const prop in oldValue) {
419
- if (!newValue || newValue[prop] == null) {
420
- {
421
- elm.style[prop] = "";
422
- }
423
- }
351
+ }
352
+ plt.$orgLocNodes$.delete(orgLocationId);
353
+ });
354
+ endHydrate();
355
+ };
356
+ var clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId) => {
357
+ let childNodeType;
358
+ let childIdSplt;
359
+ let childVNode;
360
+ let i2;
361
+ if (node.nodeType === 1 /* ElementNode */) {
362
+ childNodeType = node.getAttribute(HYDRATE_CHILD_ID);
363
+ if (childNodeType) {
364
+ childIdSplt = childNodeType.split(".");
365
+ if (childIdSplt[0] === hostId || childIdSplt[0] === "0") {
366
+ childVNode = {
367
+ $flags$: 0,
368
+ $hostId$: childIdSplt[0],
369
+ $nodeId$: childIdSplt[1],
370
+ $depth$: childIdSplt[2],
371
+ $index$: childIdSplt[3],
372
+ $tag$: node.tagName.toLowerCase(),
373
+ $elm$: node,
374
+ $attrs$: null,
375
+ $children$: null,
376
+ $key$: null,
377
+ $name$: null,
378
+ $text$: null
379
+ };
380
+ childRenderNodes.push(childVNode);
381
+ node.removeAttribute(HYDRATE_CHILD_ID);
382
+ if (!parentVNode.$children$) {
383
+ parentVNode.$children$ = [];
424
384
  }
425
- }
426
- for (const prop in newValue) {
427
- if (!oldValue || newValue[prop] !== oldValue[prop]) {
428
- {
429
- elm.style[prop] = newValue[prop];
430
- }
385
+ parentVNode.$children$[childVNode.$index$] = childVNode;
386
+ parentVNode = childVNode;
387
+ if (shadowRootNodes && childVNode.$depth$ === "0") {
388
+ shadowRootNodes[childVNode.$index$] = childVNode.$elm$;
431
389
  }
432
390
  }
433
- } else if (memberName === "key") ; else if (memberName === "ref") {
434
- if (newValue) {
435
- newValue(elm);
436
- }
437
- } else if ((!isProp ) && memberName[0] === "o" && memberName[1] === "n") {
438
- if (memberName[2] === "-") {
439
- memberName = memberName.slice(3);
440
- } else if (isMemberInElement(win, ln)) {
441
- memberName = ln.slice(2);
442
- } else {
443
- memberName = ln[2] + memberName.slice(3);
391
+ }
392
+ if (node.shadowRoot) {
393
+ for (i2 = node.shadowRoot.childNodes.length - 1; i2 >= 0; i2--) {
394
+ clientHydrate(
395
+ parentVNode,
396
+ childRenderNodes,
397
+ slotNodes,
398
+ shadowRootNodes,
399
+ hostElm,
400
+ node.shadowRoot.childNodes[i2],
401
+ hostId
402
+ );
444
403
  }
445
- if (oldValue || newValue) {
446
- const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
447
- memberName = memberName.replace(CAPTURE_EVENT_REGEX, "");
448
- if (oldValue) {
449
- plt.rel(elm, memberName, oldValue, capture);
450
- }
451
- if (newValue) {
452
- plt.ael(elm, memberName, newValue, capture);
404
+ }
405
+ for (i2 = node.childNodes.length - 1; i2 >= 0; i2--) {
406
+ clientHydrate(
407
+ parentVNode,
408
+ childRenderNodes,
409
+ slotNodes,
410
+ shadowRootNodes,
411
+ hostElm,
412
+ node.childNodes[i2],
413
+ hostId
414
+ );
415
+ }
416
+ } else if (node.nodeType === 8 /* CommentNode */) {
417
+ childIdSplt = node.nodeValue.split(".");
418
+ if (childIdSplt[1] === hostId || childIdSplt[1] === "0") {
419
+ childNodeType = childIdSplt[0];
420
+ childVNode = {
421
+ $flags$: 0,
422
+ $hostId$: childIdSplt[1],
423
+ $nodeId$: childIdSplt[2],
424
+ $depth$: childIdSplt[3],
425
+ $index$: childIdSplt[4],
426
+ $elm$: node,
427
+ $attrs$: null,
428
+ $children$: null,
429
+ $key$: null,
430
+ $name$: null,
431
+ $tag$: null,
432
+ $text$: null
433
+ };
434
+ if (childNodeType === TEXT_NODE_ID) {
435
+ childVNode.$elm$ = node.nextSibling;
436
+ if (childVNode.$elm$ && childVNode.$elm$.nodeType === 3 /* TextNode */) {
437
+ childVNode.$text$ = childVNode.$elm$.textContent;
438
+ childRenderNodes.push(childVNode);
439
+ node.remove();
440
+ if (!parentVNode.$children$) {
441
+ parentVNode.$children$ = [];
442
+ }
443
+ parentVNode.$children$[childVNode.$index$] = childVNode;
444
+ if (shadowRootNodes && childVNode.$depth$ === "0") {
445
+ shadowRootNodes[childVNode.$index$] = childVNode.$elm$;
446
+ }
453
447
  }
454
- }
455
- } else {
456
- const isComplex = isComplexType(newValue);
457
- if ((isProp || isComplex && newValue !== null) && !isSvg) {
458
- try {
459
- if (!elm.tagName.includes("-")) {
460
- const n = newValue == null ? "" : newValue;
461
- if (memberName === "list") {
462
- isProp = false;
463
- } else if (oldValue == null || elm[memberName] != n) {
464
- if (typeof elm.__lookupSetter__(memberName) === "function") {
465
- elm[memberName] = n;
466
- } else {
467
- elm.setAttribute(memberName, n);
468
- }
469
- }
448
+ } else if (childVNode.$hostId$ === hostId) {
449
+ if (childNodeType === SLOT_NODE_ID) {
450
+ childVNode.$tag$ = "slot";
451
+ if (childIdSplt[5]) {
452
+ node["s-sn"] = childVNode.$name$ = childIdSplt[5];
470
453
  } else {
471
- elm[memberName] = newValue;
454
+ node["s-sn"] = "";
472
455
  }
473
- } catch (e) {
474
- }
475
- }
476
- if (newValue == null || newValue === false) {
477
- if (newValue !== false || elm.getAttribute(memberName) === "") {
456
+ node["s-sr"] = true;
457
+ slotNodes.push(childVNode);
458
+ if (!parentVNode.$children$) {
459
+ parentVNode.$children$ = [];
460
+ }
461
+ parentVNode.$children$[childVNode.$index$] = childVNode;
462
+ } else if (childNodeType === CONTENT_REF_ID) {
478
463
  {
479
- elm.removeAttribute(memberName);
464
+ hostElm["s-cr"] = node;
465
+ node["s-cn"] = true;
480
466
  }
481
467
  }
482
- } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
483
- newValue = newValue === true ? "" : newValue;
484
- {
485
- elm.setAttribute(memberName, newValue);
486
- }
487
468
  }
488
469
  }
470
+ } else if (parentVNode && parentVNode.$tag$ === "style") {
471
+ const vnode = newVNode(null, node.textContent);
472
+ vnode.$elm$ = node;
473
+ vnode.$index$ = "0";
474
+ parentVNode.$children$ = [vnode];
489
475
  }
490
476
  };
491
- var parseClassListRegex = /\s/;
492
- var parseClassList = (value) => {
493
- if (typeof value === "object" && "baseVal" in value) {
494
- value = value.baseVal;
495
- }
496
- if (!value) {
497
- return [];
498
- }
499
- return value.split(parseClassListRegex);
500
- };
501
- var CAPTURE_EVENT_SUFFIX = "Capture";
502
- var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
503
-
504
- // src/runtime/vdom/update-element.ts
505
- var updateElement = (oldVnode, newVnode, isSvgMode2) => {
506
- const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;
507
- const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || EMPTY_OBJ;
508
- const newVnodeAttrs = newVnode.$attrs$ || EMPTY_OBJ;
509
- {
510
- for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {
511
- if (!(memberName in newVnodeAttrs)) {
512
- setAccessor(elm, memberName, oldVnodeAttrs[memberName], void 0, isSvgMode2, newVnode.$flags$);
477
+ var initializeDocumentHydrate = (node, orgLocNodes) => {
478
+ if (node.nodeType === 1 /* ElementNode */) {
479
+ let i2 = 0;
480
+ if (node.shadowRoot) {
481
+ for (; i2 < node.shadowRoot.childNodes.length; i2++) {
482
+ initializeDocumentHydrate(node.shadowRoot.childNodes[i2], orgLocNodes);
483
+ }
484
+ }
485
+ for (i2 = 0; i2 < node.childNodes.length; i2++) {
486
+ initializeDocumentHydrate(node.childNodes[i2], orgLocNodes);
487
+ }
488
+ } else if (node.nodeType === 8 /* CommentNode */) {
489
+ const childIdSplt = node.nodeValue.split(".");
490
+ if (childIdSplt[0] === ORG_LOCATION_ID) {
491
+ orgLocNodes.set(childIdSplt[1] + "." + childIdSplt[2], node);
492
+ node.nodeValue = "";
493
+ node["s-en"] = childIdSplt[3];
494
+ }
495
+ }
496
+ };
497
+ var parsePropertyValue = (propValue, propType) => {
498
+ if (propValue != null && !isComplexType(propValue)) {
499
+ if (propType & 4 /* Boolean */) {
500
+ return propValue === "false" ? false : propValue === "" || !!propValue;
501
+ }
502
+ if (propType & 2 /* Number */) {
503
+ return parseFloat(propValue);
504
+ }
505
+ if (propType & 1 /* String */) {
506
+ return String(propValue);
507
+ }
508
+ return propValue;
509
+ }
510
+ return propValue;
511
+ };
512
+ var getElement = (ref) => getHostRef(ref).$hostElement$ ;
513
+
514
+ // src/runtime/event-emitter.ts
515
+ var createEvent = (ref, name, flags) => {
516
+ const elm = getElement(ref);
517
+ return {
518
+ emit: (detail) => {
519
+ return emitEvent(elm, name, {
520
+ bubbles: !!(flags & 4 /* Bubbles */),
521
+ composed: !!(flags & 2 /* Composed */),
522
+ cancelable: !!(flags & 1 /* Cancellable */),
523
+ detail
524
+ });
525
+ }
526
+ };
527
+ };
528
+ var emitEvent = (elm, name, opts) => {
529
+ const ev = plt.ce(name, opts);
530
+ elm.dispatchEvent(ev);
531
+ return ev;
532
+ };
533
+ var rootAppliedStyles = /* @__PURE__ */ new WeakMap();
534
+ var registerStyle = (scopeId2, cssText, allowCS) => {
535
+ let style = styles.get(scopeId2);
536
+ {
537
+ style = cssText;
538
+ }
539
+ styles.set(scopeId2, style);
540
+ };
541
+ var addStyle = (styleContainerNode, cmpMeta, mode) => {
542
+ var _a;
543
+ const scopeId2 = getScopeId(cmpMeta);
544
+ const style = styles.get(scopeId2);
545
+ styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;
546
+ if (style) {
547
+ if (typeof style === "string") {
548
+ styleContainerNode = styleContainerNode.head || styleContainerNode;
549
+ let appliedStyles = rootAppliedStyles.get(styleContainerNode);
550
+ let styleElm;
551
+ if (!appliedStyles) {
552
+ rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());
553
+ }
554
+ if (!appliedStyles.has(scopeId2)) {
555
+ if (styleContainerNode.host && (styleElm = styleContainerNode.querySelector(`[${HYDRATED_STYLE_ID}="${scopeId2}"]`))) {
556
+ styleElm.innerHTML = style;
557
+ } else {
558
+ styleElm = doc.createElement("style");
559
+ styleElm.innerHTML = style;
560
+ const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);
561
+ if (nonce != null) {
562
+ styleElm.setAttribute("nonce", nonce);
563
+ }
564
+ if (cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {
565
+ styleElm.setAttribute(HYDRATED_STYLE_ID, scopeId2);
566
+ }
567
+ if (!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */)) {
568
+ if (styleContainerNode.nodeName === "HEAD") {
569
+ const preconnectLinks = styleContainerNode.querySelectorAll("link[rel=preconnect]");
570
+ const referenceNode2 = preconnectLinks.length > 0 ? preconnectLinks[preconnectLinks.length - 1].nextSibling : styleContainerNode.querySelector("style");
571
+ styleContainerNode.insertBefore(styleElm, referenceNode2);
572
+ } else if ("host" in styleContainerNode) {
573
+ {
574
+ const existingStyleContainer = styleContainerNode.querySelector("style");
575
+ if (existingStyleContainer) {
576
+ existingStyleContainer.innerHTML = style + existingStyleContainer.innerHTML;
577
+ } else {
578
+ styleContainerNode.prepend(styleElm);
579
+ }
580
+ }
581
+ } else {
582
+ styleContainerNode.append(styleElm);
583
+ }
584
+ }
585
+ if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */ && styleContainerNode.nodeName !== "HEAD") {
586
+ styleContainerNode.insertBefore(styleElm, null);
587
+ }
588
+ }
589
+ if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {
590
+ styleElm.innerHTML += SLOT_FB_CSS;
591
+ }
592
+ if (appliedStyles) {
593
+ appliedStyles.add(scopeId2);
594
+ }
595
+ }
596
+ }
597
+ }
598
+ return scopeId2;
599
+ };
600
+ var attachStyles = (hostRef) => {
601
+ const cmpMeta = hostRef.$cmpMeta$;
602
+ const elm = hostRef.$hostElement$;
603
+ const endAttachStyles = createTime("attachStyles", cmpMeta.$tagName$);
604
+ addStyle(
605
+ elm.getRootNode(),
606
+ cmpMeta);
607
+ endAttachStyles();
608
+ };
609
+ var getScopeId = (cmp, mode) => "sc-" + (cmp.$tagName$);
610
+ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
611
+ if (oldValue !== newValue) {
612
+ let isProp = isMemberInElement(elm, memberName);
613
+ let ln = memberName.toLowerCase();
614
+ if (memberName === "class") {
615
+ const classList = elm.classList;
616
+ const oldClasses = parseClassList(oldValue);
617
+ const newClasses = parseClassList(newValue);
618
+ classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));
619
+ classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));
620
+ } else if (memberName === "style") {
621
+ {
622
+ for (const prop in oldValue) {
623
+ if (!newValue || newValue[prop] == null) {
624
+ {
625
+ elm.style[prop] = "";
626
+ }
627
+ }
628
+ }
629
+ }
630
+ for (const prop in newValue) {
631
+ if (!oldValue || newValue[prop] !== oldValue[prop]) {
632
+ {
633
+ elm.style[prop] = newValue[prop];
634
+ }
635
+ }
636
+ }
637
+ } else if (memberName === "key") ; else if (memberName === "ref") {
638
+ if (newValue) {
639
+ newValue(elm);
640
+ }
641
+ } else if ((!isProp ) && memberName[0] === "o" && memberName[1] === "n") {
642
+ if (memberName[2] === "-") {
643
+ memberName = memberName.slice(3);
644
+ } else if (isMemberInElement(win, ln)) {
645
+ memberName = ln.slice(2);
646
+ } else {
647
+ memberName = ln[2] + memberName.slice(3);
648
+ }
649
+ if (oldValue || newValue) {
650
+ const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
651
+ memberName = memberName.replace(CAPTURE_EVENT_REGEX, "");
652
+ if (oldValue) {
653
+ plt.rel(elm, memberName, oldValue, capture);
654
+ }
655
+ if (newValue) {
656
+ plt.ael(elm, memberName, newValue, capture);
657
+ }
658
+ }
659
+ } else {
660
+ const isComplex = isComplexType(newValue);
661
+ if ((isProp || isComplex && newValue !== null) && !isSvg) {
662
+ try {
663
+ if (!elm.tagName.includes("-")) {
664
+ const n = newValue == null ? "" : newValue;
665
+ if (memberName === "list") {
666
+ isProp = false;
667
+ } else if (oldValue == null || elm[memberName] != n) {
668
+ if (typeof elm.__lookupSetter__(memberName) === "function") {
669
+ elm[memberName] = n;
670
+ } else {
671
+ elm.setAttribute(memberName, n);
672
+ }
673
+ }
674
+ } else {
675
+ elm[memberName] = newValue;
676
+ }
677
+ } catch (e) {
678
+ }
679
+ }
680
+ if (newValue == null || newValue === false) {
681
+ if (newValue !== false || elm.getAttribute(memberName) === "") {
682
+ {
683
+ elm.removeAttribute(memberName);
684
+ }
685
+ }
686
+ } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
687
+ newValue = newValue === true ? "" : newValue;
688
+ {
689
+ elm.setAttribute(memberName, newValue);
690
+ }
691
+ }
692
+ }
693
+ }
694
+ };
695
+ var parseClassListRegex = /\s/;
696
+ var parseClassList = (value) => !value ? [] : value.split(parseClassListRegex);
697
+ var CAPTURE_EVENT_SUFFIX = "Capture";
698
+ var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
699
+
700
+ // src/runtime/vdom/update-element.ts
701
+ var updateElement = (oldVnode, newVnode, isSvgMode2) => {
702
+ const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;
703
+ const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || EMPTY_OBJ;
704
+ const newVnodeAttrs = newVnode.$attrs$ || EMPTY_OBJ;
705
+ {
706
+ for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {
707
+ if (!(memberName in newVnodeAttrs)) {
708
+ setAccessor(elm, memberName, oldVnodeAttrs[memberName], void 0, isSvgMode2, newVnode.$flags$);
513
709
  }
514
710
  }
515
711
  }
@@ -526,13 +722,16 @@ function sortedAttrNames(attrNames) {
526
722
  attrNames
527
723
  );
528
724
  }
725
+
726
+ // src/runtime/vdom/vdom-render.ts
727
+ var scopeId;
529
728
  var contentRef;
530
729
  var hostTagName;
531
730
  var useNativeShadowDom = false;
532
731
  var checkSlotFallbackVisibility = false;
533
732
  var checkSlotRelocate = false;
534
733
  var isSvgMode = false;
535
- var createElm = (oldParentVNode, newParentVNode, childIndex) => {
734
+ var createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
536
735
  var _a;
537
736
  const newVNode2 = newParentVNode.$children$[childIndex];
538
737
  let i2 = 0;
@@ -572,6 +771,11 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
572
771
  {
573
772
  updateElement(null, newVNode2, isSvgMode);
574
773
  }
774
+ const rootNode = elm.getRootNode();
775
+ const isElementWithinShadowRoot = !rootNode.querySelector("body");
776
+ if (!isElementWithinShadowRoot && BUILD.scoped && isDef(scopeId) && elm["s-si"] !== scopeId) {
777
+ elm.classList.add(elm["s-si"] = scopeId);
778
+ }
575
779
  if (newVNode2.$children$) {
576
780
  for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {
577
781
  childNode = createElm(oldParentVNode, newVNode2, i2);
@@ -607,7 +811,7 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
607
811
  };
608
812
  var putBackInOriginalLocation = (parentElm, recursive) => {
609
813
  plt.$flags$ |= 1 /* isTmpDisconnected */;
610
- const oldSlotChildNodes = Array.from(parentElm.__childNodes || parentElm.childNodes);
814
+ const oldSlotChildNodes = Array.from(parentElm.childNodes);
611
815
  if (parentElm["s-sr"] && BUILD.experimentalSlotFixes) {
612
816
  let node = parentElm;
613
817
  while (node = node.nextSibling) {
@@ -619,7 +823,7 @@ var putBackInOriginalLocation = (parentElm, recursive) => {
619
823
  for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {
620
824
  const childNode = oldSlotChildNodes[i2];
621
825
  if (childNode["s-hn"] !== hostTagName && childNode["s-ol"]) {
622
- insertBefore(referenceNode(childNode).parentNode, childNode, referenceNode(childNode));
826
+ insertBefore(parentReferenceNode(childNode), childNode, referenceNode(childNode));
623
827
  childNode["s-ol"].remove();
624
828
  childNode["s-ol"] = void 0;
625
829
  childNode["s-sh"] = void 0;
@@ -736,11 +940,7 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
736
940
  }
737
941
  if (node) {
738
942
  {
739
- insertBefore(
740
- referenceNode(oldStartVnode.$elm$).parentNode,
741
- node,
742
- referenceNode(oldStartVnode.$elm$)
743
- );
943
+ insertBefore(parentReferenceNode(oldStartVnode.$elm$), node, referenceNode(oldStartVnode.$elm$));
744
944
  }
745
945
  }
746
946
  }
@@ -761,19 +961,28 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
761
961
  var isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {
762
962
  if (leftVNode.$tag$ === rightVNode.$tag$) {
763
963
  if (leftVNode.$tag$ === "slot") {
964
+ if (
965
+ // The component gets hydrated and no VDOM has been initialized.
966
+ // Here the comparison can't happen as $name$ property is not set for `leftNode`.
967
+ "$nodeId$" in leftVNode && isInitialRender && // `leftNode` is not from type HTMLComment which would cause many
968
+ // hydration comments to be removed
969
+ leftVNode.$elm$.nodeType !== 8
970
+ ) {
971
+ return false;
972
+ }
764
973
  return leftVNode.$name$ === rightVNode.$name$;
765
974
  }
766
975
  if (!isInitialRender) {
767
976
  return leftVNode.$key$ === rightVNode.$key$;
768
977
  }
769
- if (isInitialRender && !leftVNode.$key$ && rightVNode.$key$) {
770
- leftVNode.$key$ = rightVNode.$key$;
771
- }
772
978
  return true;
773
979
  }
774
980
  return false;
775
981
  };
776
- var referenceNode = (node) => node && node["s-ol"] || node;
982
+ var referenceNode = (node) => {
983
+ return node && node["s-ol"] || node;
984
+ };
985
+ var parentReferenceNode = (node) => (node["s-ol"] ? node["s-ol"] : node).parentNode;
777
986
  var patch = (oldVNode, newVNode2, isInitialRender = false) => {
778
987
  const elm = newVNode2.$elm$ = oldVNode.$elm$;
779
988
  const oldChildren = oldVNode.$children$;
@@ -812,15 +1021,41 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
812
1021
  elm.data = text;
813
1022
  }
814
1023
  };
1024
+ var updateFallbackSlotVisibility = (elm) => {
1025
+ const childNodes = elm.childNodes;
1026
+ for (const childNode of childNodes) {
1027
+ if (childNode.nodeType === 1 /* ElementNode */) {
1028
+ if (childNode["s-sr"]) {
1029
+ const slotName = childNode["s-sn"];
1030
+ childNode.hidden = false;
1031
+ for (const siblingNode of childNodes) {
1032
+ if (siblingNode !== childNode) {
1033
+ if (siblingNode["s-hn"] !== childNode["s-hn"] || slotName !== "") {
1034
+ if (siblingNode.nodeType === 1 /* ElementNode */ && (slotName === siblingNode.getAttribute("slot") || slotName === siblingNode["s-sn"]) || siblingNode.nodeType === 3 /* TextNode */ && slotName === siblingNode["s-sn"]) {
1035
+ childNode.hidden = true;
1036
+ break;
1037
+ }
1038
+ } else {
1039
+ if (siblingNode.nodeType === 1 /* ElementNode */ || siblingNode.nodeType === 3 /* TextNode */ && siblingNode.textContent.trim() !== "") {
1040
+ childNode.hidden = true;
1041
+ break;
1042
+ }
1043
+ }
1044
+ }
1045
+ }
1046
+ }
1047
+ updateFallbackSlotVisibility(childNode);
1048
+ }
1049
+ }
1050
+ };
815
1051
  var relocateNodes = [];
816
1052
  var markSlotContentForRelocation = (elm) => {
817
1053
  let node;
818
1054
  let hostContentNodes;
819
1055
  let j;
820
- const children = elm.__childNodes || elm.childNodes;
821
- for (const childNode of children) {
1056
+ for (const childNode of elm.childNodes) {
822
1057
  if (childNode["s-sr"] && (node = childNode["s-cr"]) && node.parentNode) {
823
- hostContentNodes = node.parentNode.__childNodes || node.parentNode.childNodes;
1058
+ hostContentNodes = node.parentNode.childNodes;
824
1059
  const slotName = childNode["s-sn"];
825
1060
  for (j = hostContentNodes.length - 1; j >= 0; j--) {
826
1061
  node = hostContentNodes[j];
@@ -862,10 +1097,25 @@ var markSlotContentForRelocation = (elm) => {
862
1097
  }
863
1098
  }
864
1099
  };
865
- var nullifyVNodeRefs = (vNode) => {
866
- {
867
- vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
868
- vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
1100
+ var isNodeLocatedInSlot = (nodeToRelocate, slotName) => {
1101
+ if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
1102
+ if (nodeToRelocate.getAttribute("slot") === null && slotName === "") {
1103
+ return true;
1104
+ }
1105
+ if (nodeToRelocate.getAttribute("slot") === slotName) {
1106
+ return true;
1107
+ }
1108
+ return false;
1109
+ }
1110
+ if (nodeToRelocate["s-sn"] === slotName) {
1111
+ return true;
1112
+ }
1113
+ return slotName === "";
1114
+ };
1115
+ var nullifyVNodeRefs = (vNode) => {
1116
+ {
1117
+ vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
1118
+ vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
869
1119
  }
870
1120
  };
871
1121
  var insertBefore = (parent, newNode, reference) => {
@@ -873,7 +1123,7 @@ var insertBefore = (parent, newNode, reference) => {
873
1123
  return inserted;
874
1124
  };
875
1125
  var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
876
- var _c, _d;
1126
+ var _a, _b, _c, _d;
877
1127
  const hostElm = hostRef.$hostElement$;
878
1128
  const cmpMeta = hostRef.$cmpMeta$;
879
1129
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
@@ -920,13 +1170,30 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
920
1170
  if (slotRefNode) {
921
1171
  const parentNodeRef = slotRefNode.parentNode;
922
1172
  let insertBeforeNode = slotRefNode.nextSibling;
1173
+ {
1174
+ let orgLocationNode = (_a = nodeToRelocate["s-ol"]) == null ? void 0 : _a.previousSibling;
1175
+ while (orgLocationNode) {
1176
+ let refNode = (_b = orgLocationNode["s-nr"]) != null ? _b : null;
1177
+ if (refNode && refNode["s-sn"] === nodeToRelocate["s-sn"] && parentNodeRef === refNode.parentNode) {
1178
+ refNode = refNode.nextSibling;
1179
+ while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode["s-sr"])) {
1180
+ refNode = refNode == null ? void 0 : refNode.nextSibling;
1181
+ }
1182
+ if (!refNode || !refNode["s-nr"]) {
1183
+ insertBeforeNode = refNode;
1184
+ break;
1185
+ }
1186
+ }
1187
+ orgLocationNode = orgLocationNode.previousSibling;
1188
+ }
1189
+ }
923
1190
  if (!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode || nodeToRelocate.nextSibling !== insertBeforeNode) {
924
1191
  if (nodeToRelocate !== insertBeforeNode) {
925
1192
  if (!nodeToRelocate["s-hn"] && nodeToRelocate["s-ol"]) {
926
1193
  nodeToRelocate["s-hn"] = nodeToRelocate["s-ol"].parentNode.nodeName;
927
1194
  }
928
1195
  insertBefore(parentNodeRef, nodeToRelocate, insertBeforeNode);
929
- if (nodeToRelocate.nodeType === 1 /* ElementNode */ && nodeToRelocate.tagName !== "SLOT-FB") {
1196
+ if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
930
1197
  nodeToRelocate.hidden = (_c = nodeToRelocate["s-ih"]) != null ? _c : false;
931
1198
  }
932
1199
  }
@@ -956,572 +1223,125 @@ var slotReferenceDebugNode = (slotVNode) => doc.createComment(
956
1223
  var originalLocationDebugNode = (nodeToRelocate) => doc.createComment(
957
1224
  `org-location for ` + (nodeToRelocate.localName ? `<${nodeToRelocate.localName}> (host=${nodeToRelocate["s-hn"]})` : `[${nodeToRelocate.textContent}]`)
958
1225
  );
959
- var createTime = (fnName, tagName = "") => {
960
- {
961
- return () => {
962
- return;
963
- };
1226
+
1227
+ // src/runtime/update-component.ts
1228
+ var attachToAncestor = (hostRef, ancestorComponent) => {
1229
+ if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent["s-p"]) {
1230
+ ancestorComponent["s-p"].push(new Promise((r) => hostRef.$onRenderResolve$ = r));
964
1231
  }
965
1232
  };
966
- var uniqueTime = (key, measureText) => {
1233
+ var scheduleUpdate = (hostRef, isInitialLoad) => {
967
1234
  {
968
- return () => {
969
- return;
970
- };
1235
+ hostRef.$flags$ |= 16 /* isQueuedForUpdate */;
971
1236
  }
1237
+ if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {
1238
+ hostRef.$flags$ |= 512 /* needsRerender */;
1239
+ return;
1240
+ }
1241
+ attachToAncestor(hostRef, hostRef.$ancestorComponent$);
1242
+ const dispatch = () => dispatchHooks(hostRef, isInitialLoad);
1243
+ return writeTask(dispatch) ;
972
1244
  };
973
-
974
- // src/runtime/client-hydrate.ts
975
- var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
976
- const endHydrate = createTime("hydrateClient", tagName);
977
- const shadowRoot = hostElm.shadowRoot;
978
- const childRenderNodes = [];
979
- const slotNodes = [];
980
- const slottedNodes = [];
981
- const shadowRootNodes = null;
982
- const vnode = newVNode(tagName, null);
983
- vnode.$elm$ = hostElm;
984
- if (!plt.$orgLocNodes$) {
985
- initializeDocumentHydrate(doc.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map());
1245
+ var dispatchHooks = (hostRef, isInitialLoad) => {
1246
+ const elm = hostRef.$hostElement$;
1247
+ const endSchedule = createTime("scheduleUpdate", hostRef.$cmpMeta$.$tagName$);
1248
+ const instance = hostRef.$lazyInstance$ ;
1249
+ if (!instance) {
1250
+ throw new Error(
1251
+ `Can't render component <${elm.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`
1252
+ );
986
1253
  }
987
- hostElm[HYDRATE_ID] = hostId;
988
- hostElm.removeAttribute(HYDRATE_ID);
989
- hostRef.$vnode$ = clientHydrate(
990
- vnode,
991
- childRenderNodes,
992
- slotNodes,
993
- shadowRootNodes,
994
- hostElm,
995
- hostElm,
996
- hostId,
997
- slottedNodes
998
- );
999
- let crIndex = 0;
1000
- const crLength = childRenderNodes.length;
1001
- let childRenderNode;
1002
- for (crIndex; crIndex < crLength; crIndex++) {
1003
- childRenderNode = childRenderNodes[crIndex];
1004
- const orgLocationId = childRenderNode.$hostId$ + "." + childRenderNode.$nodeId$;
1005
- const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);
1006
- const node = childRenderNode.$elm$;
1007
- if (!shadowRoot) {
1008
- node["s-hn"] = tagName.toUpperCase();
1009
- if (childRenderNode.$tag$ === "slot") {
1010
- node["s-cr"] = hostElm["s-cr"];
1011
- }
1012
- }
1013
- if (childRenderNode.$tag$ === "slot") {
1014
- if (childRenderNode.$children$) {
1015
- childRenderNode.$flags$ |= 2 /* isSlotFallback */;
1016
- if (!childRenderNode.$elm$.childNodes.length) {
1017
- childRenderNode.$children$.forEach((c) => {
1018
- childRenderNode.$elm$.appendChild(c.$elm$);
1019
- });
1020
- }
1021
- } else {
1022
- childRenderNode.$flags$ |= 1 /* isSlotReference */;
1254
+ let maybePromise;
1255
+ if (isInitialLoad) {
1256
+ {
1257
+ hostRef.$flags$ |= 256 /* isListenReady */;
1258
+ if (hostRef.$queuedListeners$) {
1259
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
1260
+ hostRef.$queuedListeners$ = void 0;
1023
1261
  }
1024
1262
  }
1025
- if (orgLocationNode && orgLocationNode.isConnected) {
1026
- if (shadowRoot && orgLocationNode["s-en"] === "") {
1027
- orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);
1028
- }
1029
- orgLocationNode.parentNode.removeChild(orgLocationNode);
1030
- if (!shadowRoot) {
1031
- node["s-oo"] = parseInt(childRenderNode.$nodeId$);
1032
- }
1263
+ {
1264
+ maybePromise = safeCall(instance, "componentWillLoad");
1033
1265
  }
1034
- plt.$orgLocNodes$.delete(orgLocationId);
1035
1266
  }
1036
- const hosts = [];
1037
- const snLen = slottedNodes.length;
1038
- let snIndex = 0;
1039
- let slotGroup;
1040
- let snGroupIdx;
1041
- let snGroupLen;
1042
- let slottedItem;
1043
- for (snIndex; snIndex < snLen; snIndex++) {
1044
- slotGroup = slottedNodes[snIndex];
1045
- if (!slotGroup || !slotGroup.length) continue;
1046
- snGroupLen = slotGroup.length;
1047
- snGroupIdx = 0;
1048
- for (snGroupIdx; snGroupIdx < snGroupLen; snGroupIdx++) {
1049
- slottedItem = slotGroup[snGroupIdx];
1050
- if (!hosts[slottedItem.hostId]) {
1051
- hosts[slottedItem.hostId] = plt.$orgLocNodes$.get(slottedItem.hostId);
1052
- }
1053
- if (!hosts[slottedItem.hostId]) continue;
1054
- const hostEle = hosts[slottedItem.hostId];
1055
- if (!hostEle.shadowRoot || !shadowRoot) {
1056
- slottedItem.slot["s-cr"] = hostEle["s-cr"];
1057
- if (!slottedItem.slot["s-cr"] && hostEle.shadowRoot) {
1058
- slottedItem.slot["s-cr"] = hostEle;
1059
- } else {
1060
- slottedItem.slot["s-cr"] = (hostEle.__childNodes || hostEle.childNodes)[0];
1061
- }
1062
- addSlotRelocateNode(slottedItem.node, slottedItem.slot, false, slottedItem.node["s-oo"]);
1063
- }
1064
- if (hostEle.shadowRoot && slottedItem.node.parentElement !== hostEle) {
1065
- hostEle.appendChild(slottedItem.node);
1066
- }
1067
- }
1267
+ {
1268
+ maybePromise = enqueue(maybePromise, () => safeCall(instance, "componentWillRender"));
1068
1269
  }
1069
- hostRef.$hostElement$ = hostElm;
1070
- endHydrate();
1270
+ endSchedule();
1271
+ return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));
1071
1272
  };
1072
- var clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId, slottedNodes = []) => {
1073
- let childNodeType;
1074
- let childIdSplt;
1075
- let childVNode;
1076
- let i2;
1077
- if (node.nodeType === 1 /* ElementNode */) {
1078
- childNodeType = node.getAttribute(HYDRATE_CHILD_ID);
1079
- if (childNodeType) {
1080
- childIdSplt = childNodeType.split(".");
1081
- if (childIdSplt[0] === hostId || childIdSplt[0] === "0") {
1082
- childVNode = createSimpleVNode({
1083
- $flags$: 0,
1084
- $hostId$: childIdSplt[0],
1085
- $nodeId$: childIdSplt[1],
1086
- $depth$: childIdSplt[2],
1087
- $index$: childIdSplt[3],
1088
- $tag$: node.tagName.toLowerCase(),
1089
- $elm$: node,
1090
- // If we don't add the initial classes to the VNode, the first `vdom-render.ts` patch
1091
- // won't try to reconcile them. Classes set on the node will be blown away.
1092
- $attrs$: { class: node.className || "" }
1093
- });
1094
- childRenderNodes.push(childVNode);
1095
- node.removeAttribute(HYDRATE_CHILD_ID);
1096
- if (!parentVNode.$children$) {
1097
- parentVNode.$children$ = [];
1098
- }
1099
- const slotName = childVNode.$elm$.getAttribute("s-sn");
1100
- if (typeof slotName === "string") {
1101
- if (childVNode.$tag$ === "slot-fb") {
1102
- addSlot(
1103
- slotName,
1104
- childIdSplt[2],
1105
- childVNode,
1106
- node,
1107
- parentVNode,
1108
- childRenderNodes,
1109
- slotNodes,
1110
- shadowRootNodes,
1111
- slottedNodes
1112
- );
1113
- }
1114
- childVNode.$elm$["s-sn"] = slotName;
1115
- childVNode.$elm$.removeAttribute("s-sn");
1116
- }
1117
- if (childVNode.$index$ !== void 0) {
1118
- parentVNode.$children$[childVNode.$index$] = childVNode;
1119
- }
1120
- parentVNode = childVNode;
1121
- if (shadowRootNodes && childVNode.$depth$ === "0") {
1122
- shadowRootNodes[childVNode.$index$] = childVNode.$elm$;
1273
+ var enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {
1274
+ console.error(err2);
1275
+ fn();
1276
+ }) : fn();
1277
+ var isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === "function";
1278
+ var updateComponent = async (hostRef, instance, isInitialLoad) => {
1279
+ var _a;
1280
+ const elm = hostRef.$hostElement$;
1281
+ const endUpdate = createTime("update", hostRef.$cmpMeta$.$tagName$);
1282
+ const rc = elm["s-rc"];
1283
+ if (isInitialLoad) {
1284
+ attachStyles(hostRef);
1285
+ }
1286
+ const endRender = createTime("render", hostRef.$cmpMeta$.$tagName$);
1287
+ {
1288
+ await callRender(hostRef, instance, elm, isInitialLoad);
1289
+ }
1290
+ {
1291
+ try {
1292
+ serverSideConnected(elm);
1293
+ if (isInitialLoad) {
1294
+ if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {
1295
+ elm["s-en"] = "";
1296
+ } else if (hostRef.$cmpMeta$.$flags$ & 2 /* scopedCssEncapsulation */) {
1297
+ elm["s-en"] = "c";
1123
1298
  }
1124
1299
  }
1300
+ } catch (e) {
1301
+ consoleError(e, elm);
1125
1302
  }
1126
- if (node.shadowRoot) {
1127
- for (i2 = node.shadowRoot.childNodes.length - 1; i2 >= 0; i2--) {
1128
- clientHydrate(
1129
- parentVNode,
1130
- childRenderNodes,
1131
- slotNodes,
1132
- shadowRootNodes,
1133
- hostElm,
1134
- node.shadowRoot.childNodes[i2],
1135
- hostId,
1136
- slottedNodes
1137
- );
1138
- }
1303
+ }
1304
+ if (rc) {
1305
+ rc.map((cb) => cb());
1306
+ elm["s-rc"] = void 0;
1307
+ }
1308
+ endRender();
1309
+ endUpdate();
1310
+ {
1311
+ const childrenPromises = (_a = elm["s-p"]) != null ? _a : [];
1312
+ const postUpdate = () => postUpdateComponent(hostRef);
1313
+ if (childrenPromises.length === 0) {
1314
+ postUpdate();
1315
+ } else {
1316
+ Promise.all(childrenPromises).then(postUpdate);
1317
+ hostRef.$flags$ |= 4 /* isWaitingForChildren */;
1318
+ childrenPromises.length = 0;
1139
1319
  }
1140
- const nonShadowNodes = node.__childNodes || node.childNodes;
1141
- for (i2 = nonShadowNodes.length - 1; i2 >= 0; i2--) {
1142
- clientHydrate(
1143
- parentVNode,
1144
- childRenderNodes,
1145
- slotNodes,
1146
- shadowRootNodes,
1147
- hostElm,
1148
- nonShadowNodes[i2],
1149
- hostId,
1150
- slottedNodes
1151
- );
1320
+ }
1321
+ };
1322
+ var renderingRef = null;
1323
+ var callRender = (hostRef, instance, elm, isInitialLoad) => {
1324
+ try {
1325
+ renderingRef = instance;
1326
+ instance = instance.render() ;
1327
+ {
1328
+ hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;
1152
1329
  }
1153
- } else if (node.nodeType === 8 /* CommentNode */) {
1154
- childIdSplt = node.nodeValue.split(".");
1155
- if (childIdSplt[1] === hostId || childIdSplt[1] === "0") {
1156
- childNodeType = childIdSplt[0];
1157
- childVNode = createSimpleVNode({
1158
- $hostId$: childIdSplt[1],
1159
- $nodeId$: childIdSplt[2],
1160
- $depth$: childIdSplt[3],
1161
- $index$: childIdSplt[4] || "0",
1162
- $elm$: node,
1163
- $attrs$: null,
1164
- $children$: null,
1165
- $key$: null,
1166
- $name$: null,
1167
- $tag$: null,
1168
- $text$: null
1169
- });
1170
- if (childNodeType === TEXT_NODE_ID) {
1171
- childVNode.$elm$ = node.nextSibling;
1172
- if (childVNode.$elm$ && childVNode.$elm$.nodeType === 3 /* TextNode */) {
1173
- childVNode.$text$ = childVNode.$elm$.textContent;
1174
- childRenderNodes.push(childVNode);
1175
- node.remove();
1176
- if (hostId === childVNode.$hostId$) {
1177
- if (!parentVNode.$children$) {
1178
- parentVNode.$children$ = [];
1179
- }
1180
- parentVNode.$children$[childVNode.$index$] = childVNode;
1181
- }
1182
- if (shadowRootNodes && childVNode.$depth$ === "0") {
1183
- shadowRootNodes[childVNode.$index$] = childVNode.$elm$;
1184
- }
1185
- }
1186
- } else if (childNodeType === COMMENT_NODE_ID) {
1187
- childVNode.$elm$ = node.nextSibling;
1188
- if (childVNode.$elm$ && childVNode.$elm$.nodeType === 8 /* CommentNode */) {
1189
- childRenderNodes.push(childVNode);
1190
- node.remove();
1191
- }
1192
- } else if (childVNode.$hostId$ === hostId) {
1193
- if (childNodeType === SLOT_NODE_ID) {
1194
- const slotName = node["s-sn"] = childIdSplt[5] || "";
1195
- addSlot(
1196
- slotName,
1197
- childIdSplt[2],
1198
- childVNode,
1199
- node,
1200
- parentVNode,
1201
- childRenderNodes,
1202
- slotNodes,
1203
- shadowRootNodes,
1204
- slottedNodes
1205
- );
1206
- } else if (childNodeType === CONTENT_REF_ID) {
1207
- {
1208
- hostElm["s-cr"] = node;
1209
- node["s-cn"] = true;
1210
- }
1330
+ {
1331
+ hostRef.$flags$ |= 2 /* hasRendered */;
1332
+ }
1333
+ {
1334
+ {
1335
+ {
1336
+ return Promise.resolve(instance).then((value) => renderVdom(hostRef, value, isInitialLoad));
1211
1337
  }
1212
1338
  }
1213
1339
  }
1214
- } else if (parentVNode && parentVNode.$tag$ === "style") {
1215
- const vnode = newVNode(null, node.textContent);
1216
- vnode.$elm$ = node;
1217
- vnode.$index$ = "0";
1218
- parentVNode.$children$ = [vnode];
1340
+ } catch (e) {
1341
+ consoleError(e, hostRef.$hostElement$);
1219
1342
  }
1220
- return parentVNode;
1221
- };
1222
- var initializeDocumentHydrate = (node, orgLocNodes) => {
1223
- if (node.nodeType === 1 /* ElementNode */) {
1224
- const componentId = node[HYDRATE_ID] || node.getAttribute(HYDRATE_ID);
1225
- if (componentId) {
1226
- orgLocNodes.set(componentId, node);
1227
- }
1228
- let i2 = 0;
1229
- if (node.shadowRoot) {
1230
- for (; i2 < node.shadowRoot.childNodes.length; i2++) {
1231
- initializeDocumentHydrate(node.shadowRoot.childNodes[i2], orgLocNodes);
1232
- }
1233
- }
1234
- const nonShadowNodes = node.__childNodes || node.childNodes;
1235
- for (i2 = 0; i2 < nonShadowNodes.length; i2++) {
1236
- initializeDocumentHydrate(nonShadowNodes[i2], orgLocNodes);
1237
- }
1238
- } else if (node.nodeType === 8 /* CommentNode */) {
1239
- const childIdSplt = node.nodeValue.split(".");
1240
- if (childIdSplt[0] === ORG_LOCATION_ID) {
1241
- orgLocNodes.set(childIdSplt[1] + "." + childIdSplt[2], node);
1242
- node.nodeValue = "";
1243
- node["s-en"] = childIdSplt[3];
1244
- }
1245
- }
1246
- };
1247
- var createSimpleVNode = (vnode) => {
1248
- const defaultVNode = {
1249
- $flags$: 0,
1250
- $hostId$: null,
1251
- $nodeId$: null,
1252
- $depth$: null,
1253
- $index$: "0",
1254
- $elm$: null,
1255
- $attrs$: null,
1256
- $children$: null,
1257
- $key$: null,
1258
- $name$: null,
1259
- $tag$: null,
1260
- $text$: null
1261
- };
1262
- return { ...defaultVNode, ...vnode };
1263
- };
1264
- function addSlot(slotName, slotId, childVNode, node, parentVNode, childRenderNodes, slotNodes, shadowRootNodes, slottedNodes) {
1265
- node["s-sr"] = true;
1266
- childVNode.$name$ = slotName || null;
1267
- childVNode.$tag$ = "slot";
1268
- const parentNodeId = (parentVNode == null ? void 0 : parentVNode.$elm$) ? parentVNode.$elm$["s-id"] || parentVNode.$elm$.getAttribute("s-id") : "";
1269
- {
1270
- const slot = childVNode.$elm$;
1271
- const shouldMove = parentNodeId && parentNodeId !== childVNode.$hostId$ && parentVNode.$elm$.shadowRoot;
1272
- addSlottedNodes(slottedNodes, slotId, slotName, node, shouldMove ? parentNodeId : childVNode.$hostId$);
1273
- if (shouldMove) {
1274
- parentVNode.$elm$.insertBefore(slot, parentVNode.$elm$.children[0]);
1275
- }
1276
- childRenderNodes.push(childVNode);
1277
- }
1278
- slotNodes.push(childVNode);
1279
- if (!parentVNode.$children$) {
1280
- parentVNode.$children$ = [];
1281
- }
1282
- parentVNode.$children$[childVNode.$index$] = childVNode;
1283
- }
1284
- var addSlottedNodes = (slottedNodes, slotNodeId, slotName, slotNode, hostId) => {
1285
- let slottedNode = slotNode.nextSibling;
1286
- slottedNodes[slotNodeId] = slottedNodes[slotNodeId] || [];
1287
- while (slottedNode && ((slottedNode["getAttribute"] && slottedNode.getAttribute("slot") || slottedNode["s-sn"]) === slotName || slotName === "" && !slottedNode["s-sn"] && (slottedNode.nodeType === 8 /* CommentNode */ && slottedNode.nodeValue.indexOf(".") !== 1 || slottedNode.nodeType === 3 /* TextNode */))) {
1288
- slottedNode["s-sn"] = slotName;
1289
- slottedNodes[slotNodeId].push({ slot: slotNode, node: slottedNode, hostId });
1290
- slottedNode = slottedNode.nextSibling;
1291
- }
1292
- };
1293
- var parsePropertyValue = (propValue, propType) => {
1294
- if (propValue != null && !isComplexType(propValue)) {
1295
- if (propType & 4 /* Boolean */) {
1296
- return propValue === "false" ? false : propValue === "" || !!propValue;
1297
- }
1298
- if (propType & 2 /* Number */) {
1299
- return parseFloat(propValue);
1300
- }
1301
- if (propType & 1 /* String */) {
1302
- return String(propValue);
1303
- }
1304
- return propValue;
1305
- }
1306
- return propValue;
1307
- };
1308
- var getElement = (ref) => getHostRef(ref).$hostElement$ ;
1309
-
1310
- // src/runtime/event-emitter.ts
1311
- var createEvent = (ref, name, flags) => {
1312
- const elm = getElement(ref);
1313
- return {
1314
- emit: (detail) => {
1315
- return emitEvent(elm, name, {
1316
- bubbles: !!(flags & 4 /* Bubbles */),
1317
- composed: !!(flags & 2 /* Composed */),
1318
- cancelable: !!(flags & 1 /* Cancellable */),
1319
- detail
1320
- });
1321
- }
1322
- };
1323
- };
1324
- var emitEvent = (elm, name, opts) => {
1325
- const ev = plt.ce(name, opts);
1326
- elm.dispatchEvent(ev);
1327
- return ev;
1328
- };
1329
- var rootAppliedStyles = /* @__PURE__ */ new WeakMap();
1330
- var registerStyle = (scopeId2, cssText, allowCS) => {
1331
- let style = styles.get(scopeId2);
1332
- {
1333
- style = cssText;
1334
- }
1335
- styles.set(scopeId2, style);
1336
- };
1337
- var addStyle = (styleContainerNode, cmpMeta, mode) => {
1338
- var _a;
1339
- const scopeId2 = getScopeId(cmpMeta);
1340
- const style = styles.get(scopeId2);
1341
- styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;
1342
- if (style) {
1343
- if (typeof style === "string") {
1344
- styleContainerNode = styleContainerNode.head || styleContainerNode;
1345
- let appliedStyles = rootAppliedStyles.get(styleContainerNode);
1346
- let styleElm;
1347
- if (!appliedStyles) {
1348
- rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());
1349
- }
1350
- if (!appliedStyles.has(scopeId2)) {
1351
- if (styleContainerNode.host && (styleElm = styleContainerNode.querySelector(`[${HYDRATED_STYLE_ID}="${scopeId2}"]`))) {
1352
- styleElm.innerHTML = style;
1353
- } else {
1354
- styleElm = document.querySelector(`[${HYDRATED_STYLE_ID}="${scopeId2}"]`) || doc.createElement("style");
1355
- styleElm.innerHTML = style;
1356
- const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);
1357
- if (nonce != null) {
1358
- styleElm.setAttribute("nonce", nonce);
1359
- }
1360
- if (cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {
1361
- styleElm.setAttribute(HYDRATED_STYLE_ID, scopeId2);
1362
- }
1363
- if (!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */)) {
1364
- if (styleContainerNode.nodeName === "HEAD") {
1365
- const preconnectLinks = styleContainerNode.querySelectorAll("link[rel=preconnect]");
1366
- const referenceNode2 = preconnectLinks.length > 0 ? preconnectLinks[preconnectLinks.length - 1].nextSibling : styleContainerNode.querySelector("style");
1367
- styleContainerNode.insertBefore(styleElm, referenceNode2);
1368
- } else if ("host" in styleContainerNode) {
1369
- {
1370
- const existingStyleContainer = styleContainerNode.querySelector("style");
1371
- if (existingStyleContainer) {
1372
- existingStyleContainer.innerHTML = style + existingStyleContainer.innerHTML;
1373
- } else {
1374
- styleContainerNode.prepend(styleElm);
1375
- }
1376
- }
1377
- } else {
1378
- styleContainerNode.append(styleElm);
1379
- }
1380
- }
1381
- if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */ && styleContainerNode.nodeName !== "HEAD") {
1382
- styleContainerNode.insertBefore(styleElm, null);
1383
- }
1384
- }
1385
- if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {
1386
- styleElm.innerHTML += SLOT_FB_CSS;
1387
- }
1388
- if (appliedStyles) {
1389
- appliedStyles.add(scopeId2);
1390
- }
1391
- }
1392
- }
1393
- }
1394
- return scopeId2;
1395
- };
1396
- var attachStyles = (hostRef) => {
1397
- const cmpMeta = hostRef.$cmpMeta$;
1398
- const elm = hostRef.$hostElement$;
1399
- const endAttachStyles = createTime("attachStyles", cmpMeta.$tagName$);
1400
- addStyle(
1401
- elm.getRootNode(),
1402
- cmpMeta);
1403
- endAttachStyles();
1404
- };
1405
- var getScopeId = (cmp, mode) => "sc-" + (cmp.$tagName$);
1406
-
1407
- // src/runtime/update-component.ts
1408
- var attachToAncestor = (hostRef, ancestorComponent) => {
1409
- if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent["s-p"]) {
1410
- ancestorComponent["s-p"].push(new Promise((r) => hostRef.$onRenderResolve$ = r));
1411
- }
1412
- };
1413
- var scheduleUpdate = (hostRef, isInitialLoad) => {
1414
- {
1415
- hostRef.$flags$ |= 16 /* isQueuedForUpdate */;
1416
- }
1417
- if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {
1418
- hostRef.$flags$ |= 512 /* needsRerender */;
1419
- return;
1420
- }
1421
- attachToAncestor(hostRef, hostRef.$ancestorComponent$);
1422
- const dispatch = () => dispatchHooks(hostRef, isInitialLoad);
1423
- return writeTask(dispatch) ;
1424
- };
1425
- var dispatchHooks = (hostRef, isInitialLoad) => {
1426
- const elm = hostRef.$hostElement$;
1427
- const endSchedule = createTime("scheduleUpdate", hostRef.$cmpMeta$.$tagName$);
1428
- const instance = hostRef.$lazyInstance$ ;
1429
- if (!instance) {
1430
- throw new Error(
1431
- `Can't render component <${elm.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`
1432
- );
1433
- }
1434
- let maybePromise;
1435
- if (isInitialLoad) {
1436
- {
1437
- hostRef.$flags$ |= 256 /* isListenReady */;
1438
- if (hostRef.$queuedListeners$) {
1439
- hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
1440
- hostRef.$queuedListeners$ = void 0;
1441
- }
1442
- }
1443
- {
1444
- maybePromise = safeCall(instance, "componentWillLoad");
1445
- }
1446
- }
1447
- {
1448
- maybePromise = enqueue(maybePromise, () => safeCall(instance, "componentWillRender"));
1449
- }
1450
- endSchedule();
1451
- return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));
1452
- };
1453
- var enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {
1454
- console.error(err2);
1455
- fn();
1456
- }) : fn();
1457
- var isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === "function";
1458
- var updateComponent = async (hostRef, instance, isInitialLoad) => {
1459
- var _a;
1460
- const elm = hostRef.$hostElement$;
1461
- const endUpdate = createTime("update", hostRef.$cmpMeta$.$tagName$);
1462
- const rc = elm["s-rc"];
1463
- if (isInitialLoad) {
1464
- attachStyles(hostRef);
1465
- }
1466
- const endRender = createTime("render", hostRef.$cmpMeta$.$tagName$);
1467
- {
1468
- await callRender(hostRef, instance, elm, isInitialLoad);
1469
- }
1470
- {
1471
- try {
1472
- serverSideConnected(elm);
1473
- if (isInitialLoad) {
1474
- if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {
1475
- elm["s-en"] = "";
1476
- } else if (hostRef.$cmpMeta$.$flags$ & 2 /* scopedCssEncapsulation */) {
1477
- elm["s-en"] = "c";
1478
- }
1479
- }
1480
- } catch (e) {
1481
- consoleError(e, elm);
1482
- }
1483
- }
1484
- if (rc) {
1485
- rc.map((cb) => cb());
1486
- elm["s-rc"] = void 0;
1487
- }
1488
- endRender();
1489
- endUpdate();
1490
- {
1491
- const childrenPromises = (_a = elm["s-p"]) != null ? _a : [];
1492
- const postUpdate = () => postUpdateComponent(hostRef);
1493
- if (childrenPromises.length === 0) {
1494
- postUpdate();
1495
- } else {
1496
- Promise.all(childrenPromises).then(postUpdate);
1497
- hostRef.$flags$ |= 4 /* isWaitingForChildren */;
1498
- childrenPromises.length = 0;
1499
- }
1500
- }
1501
- };
1502
- var renderingRef = null;
1503
- var callRender = (hostRef, instance, elm, isInitialLoad) => {
1504
- try {
1505
- renderingRef = instance;
1506
- instance = instance.render() ;
1507
- {
1508
- hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;
1509
- }
1510
- {
1511
- hostRef.$flags$ |= 2 /* hasRendered */;
1512
- }
1513
- {
1514
- {
1515
- {
1516
- return Promise.resolve(instance).then((value) => renderVdom(hostRef, value, isInitialLoad));
1517
- }
1518
- }
1519
- }
1520
- } catch (e) {
1521
- consoleError(e, hostRef.$hostElement$);
1522
- }
1523
- renderingRef = null;
1524
- return null;
1343
+ renderingRef = null;
1344
+ return null;
1525
1345
  };
1526
1346
  var getRenderingRef = () => renderingRef;
1527
1347
  var postUpdateComponent = (hostRef) => {
@@ -1666,62 +1486,16 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
1666
1486
  const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
1667
1487
  members.map(([memberName, [memberFlags]]) => {
1668
1488
  if ((memberFlags & 31 /* Prop */ || (flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {
1669
- if ((memberFlags & 2048 /* Getter */) === 0) {
1670
- Object.defineProperty(prototype, memberName, {
1671
- get() {
1672
- return getValue(this, memberName);
1673
- },
1674
- set(newValue) {
1675
- setValue(this, memberName, newValue, cmpMeta);
1676
- },
1677
- configurable: true,
1678
- enumerable: true
1679
- });
1680
- } else if (flags & 1 /* isElementConstructor */ && memberFlags & 2048 /* Getter */) {
1681
- {
1682
- Object.defineProperty(prototype, memberName, {
1683
- get() {
1684
- const ref = getHostRef(this);
1685
- const instance = ref ? ref.$lazyInstance$ : prototype;
1686
- if (!instance) return;
1687
- return instance[memberName];
1688
- },
1689
- configurable: true,
1690
- enumerable: true
1691
- });
1692
- }
1693
- if (memberFlags & 4096 /* Setter */) {
1694
- const origSetter = Object.getOwnPropertyDescriptor(prototype, memberName).set;
1695
- Object.defineProperty(prototype, memberName, {
1696
- set(newValue) {
1697
- const ref = getHostRef(this);
1698
- if (origSetter) {
1699
- const currentValue = ref.$hostElement$[memberName];
1700
- if (!ref.$instanceValues$.get(memberName) && currentValue) {
1701
- ref.$instanceValues$.set(memberName, currentValue);
1702
- }
1703
- origSetter.apply(this, [parsePropertyValue(newValue, cmpMeta.$members$[memberName][0])]);
1704
- setValue(this, memberName, ref.$hostElement$[memberName], cmpMeta);
1705
- return;
1706
- }
1707
- if (!ref) return;
1708
- const setterSetVal = () => {
1709
- const currentValue = ref.$lazyInstance$[memberName];
1710
- if (!ref.$instanceValues$.get(memberName) && currentValue) {
1711
- ref.$instanceValues$.set(memberName, currentValue);
1712
- }
1713
- ref.$lazyInstance$[memberName] = parsePropertyValue(newValue, cmpMeta.$members$[memberName][0]);
1714
- setValue(this, memberName, ref.$lazyInstance$[memberName], cmpMeta);
1715
- };
1716
- if (ref.$lazyInstance$) {
1717
- setterSetVal();
1718
- } else {
1719
- ref.$onReadyPromise$.then(() => setterSetVal());
1720
- }
1721
- }
1722
- });
1723
- }
1724
- }
1489
+ Object.defineProperty(prototype, memberName, {
1490
+ get() {
1491
+ return getValue(this, memberName);
1492
+ },
1493
+ set(newValue) {
1494
+ setValue(this, memberName, newValue, cmpMeta);
1495
+ },
1496
+ configurable: true,
1497
+ enumerable: true
1498
+ });
1725
1499
  } else if (flags & 1 /* isElementConstructor */ && memberFlags & 64 /* Method */) {
1726
1500
  Object.defineProperty(prototype, memberName, {
1727
1501
  value(...args) {
@@ -1741,7 +1515,7 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
1741
1515
  plt.jmp(() => {
1742
1516
  var _a2;
1743
1517
  const propName = attrNameToPropName.get(attrName);
1744
- if (this.hasOwnProperty(propName) && BUILD.lazyLoad) {
1518
+ if (this.hasOwnProperty(propName)) {
1745
1519
  newValue = this[propName];
1746
1520
  delete this[propName];
1747
1521
  } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === "number" && // cast type to number to avoid TS compiler issues
@@ -1761,10 +1535,7 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
1761
1535
  }
1762
1536
  return;
1763
1537
  }
1764
- const propDesc = Object.getOwnPropertyDescriptor(prototype, propName);
1765
- if (!propDesc.get || !!propDesc.set) {
1766
- this[propName] = newValue === null && typeof this[propName] === "boolean" ? false : newValue;
1767
- }
1538
+ this[propName] = newValue === null && typeof this[propName] === "boolean" ? false : newValue;
1768
1539
  });
1769
1540
  };
1770
1541
  Cstr.observedAttributes = Array.from(
@@ -1962,9 +1733,6 @@ var insertVdomAnnotations = (doc2, staticComponents) => {
1962
1733
  childId = `${hostId}.${nodeId}`;
1963
1734
  if (nodeRef.nodeType === 1 /* ElementNode */) {
1964
1735
  nodeRef.setAttribute(HYDRATE_CHILD_ID, childId);
1965
- if (typeof nodeRef["s-sn"] === "string" && !nodeRef.getAttribute("slot")) {
1966
- nodeRef.setAttribute("s-sn", nodeRef["s-sn"]);
1967
- }
1968
1736
  } else if (nodeRef.nodeType === 3 /* TextNode */) {
1969
1737
  if (hostId === 0) {
1970
1738
  const textContent = (_a = nodeRef.nodeValue) == null ? void 0 : _a.trim();
@@ -1976,10 +1744,6 @@ var insertVdomAnnotations = (doc2, staticComponents) => {
1976
1744
  const commentBeforeTextNode = doc2.createComment(childId);
1977
1745
  commentBeforeTextNode.nodeValue = `${TEXT_NODE_ID}.${childId}`;
1978
1746
  insertBefore(nodeRef.parentNode, commentBeforeTextNode, nodeRef);
1979
- } else if (nodeRef.nodeType === 8 /* CommentNode */) {
1980
- const commentBeforeTextNode = doc2.createComment(childId);
1981
- commentBeforeTextNode.nodeValue = `${COMMENT_NODE_ID}.${childId}`;
1982
- nodeRef.parentNode.insertBefore(commentBeforeTextNode, nodeRef);
1983
1747
  }
1984
1748
  }
1985
1749
  let orgLocationNodeId = `${ORG_LOCATION_ID}.${childId}`;
@@ -2060,9 +1824,6 @@ var insertChildVNodeAnnotations = (doc2, vnodeChild, cmpData, hostId, depth, ind
2060
1824
  childElm["s-node-id"] = nodeId;
2061
1825
  if (childElm.nodeType === 1 /* ElementNode */) {
2062
1826
  childElm.setAttribute(HYDRATE_CHILD_ID, childId);
2063
- if (typeof childElm["s-sn"] === "string" && !childElm.getAttribute("slot")) {
2064
- childElm.setAttribute("s-sn", childElm["s-sn"]);
2065
- }
2066
1827
  } else if (childElm.nodeType === 3 /* TextNode */) {
2067
1828
  const parentNode = childElm.parentNode;
2068
1829
  const nodeName = parentNode == null ? void 0 : parentNode.nodeName;
@@ -2580,63 +2341,6 @@ class NVFieldDropDown {
2580
2341
  registerInstance(this, hostRef);
2581
2342
  this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
2582
2343
  this.valueChanged = createEvent(this, "valueChanged", 7);
2583
- /****************************************************************************/
2584
- //#region PROPERTIES
2585
- /**
2586
- * Sets the ID for the input element and the for attribute of the associated
2587
- * label. If no ID is provided, a random one will be automatically generated
2588
- * to ensure unique identification, facilitating proper label association and
2589
- * accessibility.
2590
- */
2591
- this.inputId = v4();
2592
- /**
2593
- * State of the dropdown popover.
2594
- */
2595
- this.open = false;
2596
- /**
2597
- * The autocomplete prop helps users fill out the input field faster by
2598
- * suggesting entries they’ve used before, like their email or address.
2599
- * You can turn it on to make forms more convenient or off to ensure users
2600
- * always type in fresh data.
2601
- */
2602
- this.autocomplete = 'off';
2603
- /**
2604
- * Marks the input field as required, ensuring that the user must fill it out
2605
- * before submitting the form.
2606
- */
2607
- this.required = false;
2608
- /**
2609
- * Alters the input field’s appearance to indicate an error, helping users
2610
- * identify fields that need correction.
2611
- * @validator error
2612
- */
2613
- this.error = false;
2614
- /**
2615
- * Display the input field’s content without allowing users to change it.
2616
- * Users can still click on it, select, and copy the text, but they won’t be
2617
- * able to type or delete anything.
2618
- */
2619
- this.readonly = false;
2620
- /**
2621
- * The disabled prop lets you turn off the input field so that users can’t
2622
- * type in it. When disabled, the field is grayed out and won’t respond to
2623
- * clicks or touches.
2624
- */
2625
- this.disabled = false;
2626
- /**
2627
- * The text to display when no items match the filter.
2628
- */
2629
- this.emptyresult = 'No results found';
2630
- /**
2631
- * The text entered by the user for filtering dropdown items.
2632
- */
2633
- this.filterText = '';
2634
- /**
2635
- * Enables or disables the filtering feature for the dropdown items.
2636
- */
2637
- this.filterable = false;
2638
- this.isFilterable = this.filterable;
2639
- this.selectedValues = new Set();
2640
2344
  /**
2641
2345
  * Handle click on the input container.
2642
2346
  * @param {MouseEvent} event - The click event.
@@ -2720,6 +2424,24 @@ class NVFieldDropDown {
2720
2424
  this.popoverElement.hide();
2721
2425
  }
2722
2426
  };
2427
+ this.inputId = v4();
2428
+ this.label = undefined;
2429
+ this.description = undefined;
2430
+ this.placeholder = undefined;
2431
+ this.name = undefined;
2432
+ this.open = false;
2433
+ this.autocomplete = 'off';
2434
+ this.value = undefined;
2435
+ this.required = false;
2436
+ this.error = false;
2437
+ this.errorDescription = undefined;
2438
+ this.readonly = false;
2439
+ this.disabled = false;
2440
+ this.emptyresult = 'No results found';
2441
+ this.filterText = '';
2442
+ this.filterable = false;
2443
+ this.isFilterable = this.filterable;
2444
+ this.selectedValues = new Set();
2723
2445
  }
2724
2446
  handleItemSelected(event) {
2725
2447
  if (this.disabled || this.readonly)
@@ -5183,27 +4905,6 @@ class NvAlert {
5183
4905
  this.hiddenChanged = createEvent(this, "hiddenChanged", 7);
5184
4906
  this.hiddenChangedComplete = createEvent(this, "hiddenChangedComplete", 7);
5185
4907
  this.closeClicked = createEvent(this, "closeClicked", 7);
5186
- //#endregion DEPRECATED
5187
- /****************************************************************************/
5188
- //#region PROPERTIES
5189
- /**
5190
- * Specifies the alert type which determines the color and default icon.
5191
- */
5192
- this.feedback = 'information';
5193
- /**
5194
- * Allows the alert to be dismissed via a close button (x). The alert is not
5195
- * dismissible unless explicitly enabled.
5196
- */
5197
- this.dismissible = false;
5198
- /**
5199
- * When true, the alert does not automatically close upon dismissing.
5200
- * Useful for externally controlled component behavior.
5201
- */
5202
- this.preventAutoClose = false;
5203
- /**
5204
- * Controls the visibility of the alert. Will animate with fade and collapse.
5205
- */
5206
- this.hidden = false; // eslint-disable-line @stencil-community/reserved-member-names
5207
4908
  //#endregion WATCHERS
5208
4909
  /****************************************************************************/
5209
4910
  //#region METHODS
@@ -5238,6 +4939,14 @@ class NvAlert {
5238
4939
  return 'info-circle';
5239
4940
  }
5240
4941
  };
4942
+ this.color = undefined;
4943
+ this.feedback = 'information';
4944
+ this.message = undefined;
4945
+ this.heading = undefined;
4946
+ this.icon = undefined;
4947
+ this.dismissible = false;
4948
+ this.preventAutoClose = false;
4949
+ this.hidden = false;
5241
4950
  }
5242
4951
  componentWillRender() {
5243
4952
  if (this.color) {
@@ -5340,14 +5049,17 @@ var NvAvatarStyle0 = nvAvatarCss;
5340
5049
  class NvAvatar {
5341
5050
  constructor(hostRef) {
5342
5051
  registerInstance(this, hostRef);
5343
- /**
5344
- * Define the size of the avatar. You can use t-shirt sizes.
5345
- */
5052
+ this.xsmall = undefined;
5053
+ this.small = undefined;
5054
+ this.medium = undefined;
5055
+ this.large = undefined;
5056
+ this.xlarge = undefined;
5057
+ this.text = undefined;
5058
+ this.url = undefined;
5059
+ this.alt = undefined;
5060
+ this.src = undefined;
5061
+ this.initials = undefined;
5346
5062
  this.size = 'md';
5347
- /**
5348
- * You can apply different colors on the Avatar.
5349
- * Use a string number between 1 and 10.
5350
- */
5351
5063
  this.color = '1';
5352
5064
  }
5353
5065
  componentWillRender() {
@@ -5426,42 +5138,6 @@ class NvBadge {
5426
5138
  this.closeClicked = createEvent(this, "closeClicked", 7);
5427
5139
  this.hiddenChanged = createEvent(this, "hiddenChanged", 7);
5428
5140
  this.hiddenChangedComplete = createEvent(this, "hiddenChangedComplete", 7);
5429
- /****************************************************************************/
5430
- //#region DEPRECATED
5431
- /**
5432
- * Whether the badge is dismissible.
5433
- * @deprecated use dismissible instead.
5434
- */
5435
- this.dismissal = false;
5436
- //#endregion DEPRECATED
5437
- /****************************************************************************/
5438
- //#region PROPERTIES
5439
- /**
5440
- * The color of the badge. Use a string between 1 to 10
5441
- */
5442
- this.color = '1';
5443
- /**
5444
- * Main content of the badge.
5445
- */
5446
- this.label = null;
5447
- /**
5448
- * The lead icon of the badge.
5449
- */
5450
- this.leadIcon = null;
5451
- /**
5452
- * Whether the badge is dismissible.
5453
- */
5454
- this.dismissible = false;
5455
- /**
5456
- * Controls the visibility of the badge. Will animate with fade and collapse.
5457
- */
5458
- this.hidden = false; // eslint-disable-line @stencil-community/reserved-member-names
5459
- this._isHidden = this.hidden;
5460
- /**
5461
- * When true, the alert does not automatically close upon dismissing.
5462
- * Useful for externally controlled component behavior.
5463
- */
5464
- this.preventAutoClose = false;
5465
5141
  //#endregion LIFECYCLE
5466
5142
  /****************************************************************************/
5467
5143
  //#region METHODS
@@ -5475,6 +5151,16 @@ class NvBadge {
5475
5151
  }
5476
5152
  this.closeClicked.emit(originalEvent);
5477
5153
  };
5154
+ this.dismissal = false;
5155
+ this.icon = undefined;
5156
+ this.iconLocation = undefined;
5157
+ this.color = '1';
5158
+ this.label = null;
5159
+ this.leadIcon = null;
5160
+ this.dismissible = false;
5161
+ this.hidden = false;
5162
+ this._isHidden = this.hidden;
5163
+ this.preventAutoClose = false;
5478
5164
  }
5479
5165
  //#endregion EVENTS
5480
5166
  /****************************************************************************/
@@ -5665,45 +5351,6 @@ class NvButton {
5665
5351
  this.internals = hostRef.$hostElement$.attachInternals();
5666
5352
  hostRef.$hostElement$["s-ei"] = this.internals;
5667
5353
  }
5668
- /****************************************************************************/
5669
- //#region PROPERTIES
5670
- /**
5671
- * Determines how large or small the button appears, allowing for
5672
- * customization of the button's dimensions to fit different design
5673
- * specifications and user needs.
5674
- */
5675
- this.size = 'md';
5676
- /**
5677
- * Adjusts the button's emphasis to make it more or less visually prominent
5678
- * to users. Use this to draw attention to important actions or reduce focus
5679
- * on less critical ones
5680
- */
5681
- this.emphasis = 'high';
5682
- /**
5683
- * Applies styling that visually indicates the button represents a dangerous
5684
- * action.
5685
- */
5686
- this.danger = false;
5687
- /**
5688
- * Set this to true to show a spinner on the button, letting users know that
5689
- * their action is being processed. It helps improve user experience by
5690
- * indicating ongoing activities.
5691
- */
5692
- this.loading = false;
5693
- /**
5694
- * Disables the button, preventing user interaction.
5695
- */
5696
- this.disabled = false;
5697
- /**
5698
- * Allows the button to stretch and fill the entire width of its container.
5699
- */
5700
- this.fluid = false;
5701
- /**
5702
- * Sets the button type to control its function in forms. Use 'submit' to send
5703
- * form data, 'reset' to clear the form, or 'button' for a standard button
5704
- * that doesn’t interact with form submission by default.
5705
- */
5706
- this.type = 'button';
5707
5354
  //#endregion PROPERTIES
5708
5355
  /****************************************************************************/
5709
5356
  //#region METHODS
@@ -5726,6 +5373,13 @@ class NvButton {
5726
5373
  (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
5727
5374
  }
5728
5375
  };
5376
+ this.size = 'md';
5377
+ this.emphasis = 'high';
5378
+ this.danger = false;
5379
+ this.loading = false;
5380
+ this.disabled = false;
5381
+ this.fluid = false;
5382
+ this.type = 'button';
5729
5383
  }
5730
5384
  //#endregion METHODS
5731
5385
  /****************************************************************************/
@@ -5790,6 +5444,7 @@ var NvColStyle0 = nvColCss;
5790
5444
  class NvCol {
5791
5445
  constructor(hostRef) {
5792
5446
  registerInstance(this, hostRef);
5447
+ this.size = undefined;
5793
5448
  }
5794
5449
  //#endregion PROPERTIES
5795
5450
  /****************************************************************************/
@@ -8791,42 +8446,16 @@ var NvDatagridStyle0 = nvDatagridCss;
8791
8446
  class NvDatagrid {
8792
8447
  constructor(hostRef) {
8793
8448
  registerInstance(this, hostRef);
8794
- /****************************************************************************/
8795
- //#region STATES
8796
8449
  this.table = null;
8797
- this.parsedColumns = []; // Parsed array
8798
- this.parsedData = []; // Parsed array
8450
+ this.parsedColumns = [];
8451
+ this.parsedData = [];
8799
8452
  this.hasSlotHead = false;
8800
8453
  this.hasSlotBody = false;
8801
- //#endregion STATES
8802
- /****************************************************************************/
8803
- //#region PROPERTIES
8804
- /**
8805
- * The columns to display in the data grid.
8806
- * @example
8807
- * [
8808
- * {"header":"Name","accessor":"name"},
8809
- * {"header":"Age","accessor":"age"},
8810
- * {"header":"Email","accessor":"email"}
8811
- * ]
8812
- * @default []
8813
- */
8814
8454
  this.columns = [];
8815
- /**
8816
- * The data to display in the data grid.
8817
- * @example [{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }]
8818
- * @default []
8819
- */
8455
+ this.columnsJson = undefined;
8820
8456
  this.data = [];
8821
- /**
8822
- * The message to display when there is no data available.
8823
- * @default 'No data available'
8824
- */
8457
+ this.dataJson = undefined;
8825
8458
  this.noDataMessage = 'No data available';
8826
- /**
8827
- * The message to display when there are no columns or data available.
8828
- * @default 'No data or columns available to display.'
8829
- */
8830
8459
  this.noColumnsNoDataMessage = 'No data or columns available to display.';
8831
8460
  }
8832
8461
  //#endregion PROPERTIES
@@ -9130,6 +8759,8 @@ var NvDatagridcolumnStyle0 = nvDatagridcolumnCss;
9130
8759
  class NvDatagridcolumn {
9131
8760
  constructor(hostRef) {
9132
8761
  registerInstance(this, hostRef);
8762
+ this.header = undefined;
8763
+ this.accessor = undefined;
9133
8764
  }
9134
8765
  //#endregion PROPERTIES
9135
8766
  /****************************************************************************/
@@ -9160,6 +8791,7 @@ var NvDatagriddatacellStyle0 = nvDatagriddatacellCss;
9160
8791
  class NvDatagriddatacell {
9161
8792
  constructor(hostRef) {
9162
8793
  registerInstance(this, hostRef);
8794
+ this.accessor = undefined;
9163
8795
  }
9164
8796
  //#endregion PROPERTIES
9165
8797
  /****************************************************************************/
@@ -9246,211 +8878,1303 @@ class NvFieldcheckbox {
9246
8878
  constructor(hostRef) {
9247
8879
  registerInstance(this, hostRef);
9248
8880
  this.checkedChanged = createEvent(this, "checkedChanged", 7);
9249
- /**
9250
- * When true, the label will be placed before the checkbox.
9251
- * @deprecated Use `labelPlacement = end` instead.
9252
- * */
8881
+ this.message = undefined;
8882
+ this.validation = undefined;
9253
8883
  this.labelBefore = false;
9254
- //#endregion DEPRECATED
9255
- /****************************************************************************/
9256
- //#region PROPERTIES
9257
- /**
9258
- * Sets the ID for the radio button’s input element and the for attribute of
9259
- * the associated label. If no ID is provided, a random one will be
9260
- * automatically generated to ensure unique identification, facilitating
9261
- * proper label association and accessibility.
9262
- */
9263
8884
  this.inputId = v4();
9264
- /**
9265
- * Hides the label visually while still keeping it available for screen
9266
- * readers.
9267
- */
8885
+ this.name = undefined;
8886
+ this.value = undefined;
8887
+ this.label = undefined;
8888
+ this.labelPlacement = undefined;
9268
8889
  this.hideLabel = false;
9269
- /**
9270
- * Signals that there is an error associated with the checkbox, which can
9271
- * trigger visual cues.
9272
- */
8890
+ this.description = undefined;
9273
8891
  this.error = false;
9274
- /**
9275
- * Indicates whether the checkbox is checked or not.
9276
- */
8892
+ this.errorDescription = undefined;
9277
8893
  this.checked = false;
9278
- /**
9279
- * Indicates whether the checkbox is in an indeterminate state, typically used
9280
- * for hierarchical checkboxes.
9281
- */
9282
8894
  this.indeterminate = false;
9283
- /**
9284
- * Disables the checkbox, preventing user interaction.
9285
- */
9286
8895
  this.disabled = false;
9287
- /**
9288
- * Sets the checkbox to read-only, preventing user changes but still allowing
9289
- * focus and selection of text.
9290
- */
9291
8896
  this.readonly = false;
9292
- /**
9293
- * Marks the checkbox as required, indicating that it must be checked for
9294
- * form submission.
9295
- */
9296
8897
  this.required = false;
9297
8898
  }
9298
8899
  componentWillRender() {
9299
8900
  if (this.message) {
9300
8901
  this.description = this.message;
9301
8902
  }
9302
- if (this.labelBefore) {
9303
- this.labelPlacement = 'before';
8903
+ if (this.labelBefore) {
8904
+ this.labelPlacement = 'before';
8905
+ }
8906
+ if (this.validation) {
8907
+ this.errorDescription = this.validation;
8908
+ }
8909
+ }
8910
+ //#endregion EVENTS
8911
+ /****************************************************************************/
8912
+ //#region WATCHERS
8913
+ /**
8914
+ * Watches for changes to the checked state and emits the new value.
8915
+ * @param {boolean} checked - The new value of the checked state.
8916
+ */
8917
+ onCheckedChanged(checked) {
8918
+ this.checkedChanged.emit(checked);
8919
+ }
8920
+ /**
8921
+ * Listens for the change event on the checkbox input element and updates the
8922
+ * checked state.
8923
+ * @param {Event} event - The change event.
8924
+ */
8925
+ handleChange(event) {
8926
+ const target = event.target;
8927
+ if (target.type === 'checkbox' && target.id === this.inputId) {
8928
+ if (this.readonly || this.disabled) {
8929
+ event.preventDefault();
8930
+ return;
8931
+ }
8932
+ if (this.indeterminate) {
8933
+ this.indeterminate = false;
8934
+ }
8935
+ this.checked = target.checked;
8936
+ }
8937
+ }
8938
+ //#endregion WATCHERS
8939
+ /****************************************************************************/
8940
+ //#region RENDER
8941
+ render() {
8942
+ return (hAsync(Host, { key: 'c87c2b3e3a4b81c9d6eb6c3784919a5fcb78e38b', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, hAsync("div", { key: '8e43a91fec01b02dfa6b27408e1c1fd252558014', class: "input-container" }, hAsync("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 => {
8943
+ if (el) {
8944
+ el.indeterminate = this.indeterminate;
8945
+ }
8946
+ } }), hAsync("span", { key: 'b100feee33694f72c59496f09f5ecbbf9358d7c6', class: "icon" }, this.checked && !this.indeterminate && (hAsync("slot", { key: 'a5f5159aff04c111e4b944123686f00f817ecb1e', name: "checked-icon" }, hAsync("svg", { key: '26a750b600fa0857ec9adf17f9d4dcd9ce0e2aad', xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" }, hAsync("path", { key: 'ddf0155de05297d7ec966bdaf9633ceb1ee413d7', d: "M11.6667 3.5L5.25004 9.91667L2.33337 7", "stroke-linecap": "round", "stroke-linejoin": "round" })))), this.indeterminate && (hAsync("slot", { key: 'e64681ce70326348083402f7996eaf6134aaca3e', name: "indeterminate-icon" }, hAsync("svg", { key: '9cfcd8118bb6f208278614711fd726fe29c9070a', class: "indeterminate-svg", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 14 14", fill: "none" }, hAsync("path", { key: '8d88be8c4bd195982bf0024e4f67f30601ddfb80', d: "M2.9165 7H11.0832", "stroke-linecap": "round", "stroke-linejoin": "round" })))))), hAsync("div", { key: '061d18d589ef2a8efd0fb73f70d5c0a6013c497d', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '129013f8e60d1aaae82b97321c4cc26ab6229bbb', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: 'e134c0683e4c4c410c78d45f3537d8ed1491c67e', name: "label" }, this.label))), (this.description ||
8947
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '78166f4fb7d1e5dc20f13ce5b4ca567a90862493', class: "description" }, hAsync("slot", { key: '6bced15913e4a22371520818343de5598c5a5e6d', name: "description" }, this.description))), (this.errorDescription ||
8948
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '88f4ceaef2412ce5f4bb08b19485fc27d9842792', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '96a581ce5d0e66416d24bf52219a87d3c39457d8', name: "error-description" }, this.errorDescription))))));
8949
+ }
8950
+ get el() { return getElement(this); }
8951
+ static get watchers() { return {
8952
+ "checked": ["onCheckedChanged"]
8953
+ }; }
8954
+ static get style() { return NvFieldcheckboxStyle0; }
8955
+ static get cmpMeta() { return {
8956
+ "$flags$": 4,
8957
+ "$tagName$": "nv-fieldcheckbox",
8958
+ "$members$": {
8959
+ "message": [1],
8960
+ "validation": [1],
8961
+ "labelBefore": [4, "label-before"],
8962
+ "inputId": [513, "input-id"],
8963
+ "name": [513],
8964
+ "value": [513],
8965
+ "label": [513],
8966
+ "labelPlacement": [1537, "label-placement"],
8967
+ "hideLabel": [516, "hide-label"],
8968
+ "description": [1537],
8969
+ "error": [516],
8970
+ "errorDescription": [1537, "error-description"],
8971
+ "checked": [1540],
8972
+ "indeterminate": [1540],
8973
+ "disabled": [516],
8974
+ "readonly": [516],
8975
+ "required": [516]
8976
+ },
8977
+ "$listeners$": [[0, "change", "handleChange"]],
8978
+ "$lazyBundleId$": "-",
8979
+ "$attrsToReflect$": [["inputId", "input-id"], ["name", "name"], ["value", "value"], ["label", "label"], ["labelPlacement", "label-placement"], ["hideLabel", "hide-label"], ["description", "description"], ["error", "error"], ["errorDescription", "error-description"], ["checked", "checked"], ["indeterminate", "indeterminate"], ["disabled", "disabled"], ["readonly", "readonly"], ["required", "required"]]
8980
+ }; }
8981
+ }
8982
+
8983
+ const nvFielddropdownitemCss = "nv-fielddropdownitem{display:flex;align-items:center;justify-content:space-between;max-width:300px;width:100%;padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);transition:background-color 150ms ease-out, color 150ms ease-out;cursor:pointer}nv-fielddropdownitem:hover,nv-fielddropdownitem:focus,nv-fielddropdownitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-fielddropdownitem.selected{background-color:var(--components-menu-contextual-item-background-selected);color:var(--components-menu-contextual-item-content-selected)}nv-fielddropdownitem[disabled]:not([disabled=false]){cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-fielddropdownitem [data-scope=text]{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nv-fielddropdownitem .selection-icon{padding-left:10px;color:var(--components-menu-contextual-item-icon-selected);align-self:center}:root{--components-menu-contextual-item-background-selected:#f5f6f7;--components-menu-contextual-item-content-selected:#171f22;--components-menu-contextual-item-icon-selected:#007f00;--components-menu-contextual-item-background-hover:#f5f6f7;--components-menu-contextual-item-content-hover:#171f22}";
8984
+ var NvFielddropdownitemStyle0 = nvFielddropdownitemCss;
8985
+
8986
+ /**
8987
+ * @slot default - The content to be displayed inside the dropdown item.
8988
+ */
8989
+ class NvFielddropdownitem {
8990
+ constructor(hostRef) {
8991
+ registerInstance(this, hostRef);
8992
+ this.itemSelected = createEvent(this, "itemSelected", 7);
8993
+ this.handleClick = () => {
8994
+ if (!this.disabled) {
8995
+ let itemValue = this.value || '';
8996
+ if (!itemValue) {
8997
+ itemValue =
8998
+ Array.from(this.el.childNodes)
8999
+ .map(node => { var _a; return (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
9000
+ .filter(text => text && text.length > 0)
9001
+ .join(' ') || '';
9002
+ }
9003
+ this.selected = !this.selected; // Toggle the selected state
9004
+ this.itemSelected.emit({
9005
+ label: this.label,
9006
+ value: itemValue,
9007
+ selected: this.selected,
9008
+ disabled: this.disabled,
9009
+ });
9010
+ }
9011
+ };
9012
+ this.disabled = false;
9013
+ this.selected = false;
9014
+ this.value = undefined;
9015
+ this.label = undefined;
9016
+ }
9017
+ //#endregion EVENTS
9018
+ /****************************************************************************/
9019
+ //#region METHODS
9020
+ /**
9021
+ * Utility function to check if a string is null, empty, or contains only whitespace.
9022
+ * @param {string | null | undefined} input - The string to check.
9023
+ * @returns {boolean} - Returns true if the string is null, empty, or contains only whitespace; otherwise, false.
9024
+ */
9025
+ isNullOrEmptyOrWhitespace(input) {
9026
+ return !input || input.trim().length === 0;
9027
+ }
9028
+ //#endregion METHODS
9029
+ /****************************************************************************/
9030
+ //#region RENDER
9031
+ render() {
9032
+ const showDefaultLayout = this.isNullOrEmptyOrWhitespace(this.label);
9033
+ return (hAsync(Host, { key: '0b0070ad824841f49bf5c24423131c46c41ef4ef', role: "menuitem", tabindex: this.disabled ? '-1' : '0', onClick: this.handleClick, class: { selected: this.selected } }, showDefaultLayout ? (hAsync("slot", null)) : (hAsync("div", { class: "flex gap-2" }, hAsync("span", { "data-scope": "text" }, this.label), this.selected && (hAsync("nv-icon", { name: "check", "aria-hidden": "true", class: "selection-icon" }))))));
9034
+ }
9035
+ get el() { return getElement(this); }
9036
+ static get style() { return NvFielddropdownitemStyle0; }
9037
+ static get cmpMeta() { return {
9038
+ "$flags$": 4,
9039
+ "$tagName$": "nv-fielddropdownitem",
9040
+ "$members$": {
9041
+ "disabled": [516],
9042
+ "selected": [1540],
9043
+ "value": [513],
9044
+ "label": [513]
9045
+ },
9046
+ "$listeners$": undefined,
9047
+ "$lazyBundleId$": "-",
9048
+ "$attrsToReflect$": [["disabled", "disabled"], ["selected", "selected"], ["value", "value"], ["label", "label"]]
9049
+ }; }
9050
+ }
9051
+
9052
+ const nvFielddropdownitemcheckCss = "nv-fielddropdownitemcheck slot-fb,nv-fielddropdownitemcheck span{all:unset}nv-fielddropdownitemcheck nv-fieldcheckbox input[type=checkbox]{all:unset;display:inline-block;margin:0;padding:0;width:20px;height:20px}";
9053
+ var NvFielddropdownitemcheckStyle0 = nvFielddropdownitemcheckCss;
9054
+
9055
+ class NvFielddropdownitemcheck {
9056
+ constructor(hostRef) {
9057
+ registerInstance(this, hostRef);
9058
+ this.itemChecked = createEvent(this, "itemChecked", 7);
9059
+ this.handleCheckboxToggle = () => {
9060
+ if (this.disabled)
9061
+ return; // Ignore interactions si désactivé
9062
+ this.checked = !this.checked;
9063
+ this.itemChecked.emit({
9064
+ value: this.value,
9065
+ checked: this.checked,
9066
+ group: this.group,
9067
+ });
9068
+ console.log('itemChecked emitted:', {
9069
+ value: this.value,
9070
+ checked: this.checked,
9071
+ group: this.group,
9072
+ });
9073
+ };
9074
+ this.checked = false;
9075
+ this.value = undefined;
9076
+ this.label = undefined;
9077
+ this.description = undefined;
9078
+ this.group = undefined;
9079
+ this.disabled = false;
9080
+ }
9081
+ //#endregion EVENTS
9082
+ /****************************************************************************/
9083
+ //#region RENDER
9084
+ render() {
9085
+ return (hAsync(Host, { key: '571a1f2a81e3ba72969f1d6e84e27bd490b99044', onClick: this.handleCheckboxToggle }, hAsync("div", { key: '08590c63ca67b7414c06db1d6c05fd9c2ad41c16' }, hAsync("nv-fieldcheckbox", { key: '68108d6fb714b9fa9bcdc2c9be1ed8e1e2d3b174', checked: this.checked, name: this.label || this.value, label: this.label || this.value, "label-placement": "after", description: this.description, disabled: this.disabled, tabindex: "-1", role: "option" }))));
9086
+ }
9087
+ get el() { return getElement(this); }
9088
+ static get style() { return NvFielddropdownitemcheckStyle0; }
9089
+ static get cmpMeta() { return {
9090
+ "$flags$": 0,
9091
+ "$tagName$": "nv-fielddropdownitemcheck",
9092
+ "$members$": {
9093
+ "checked": [1540],
9094
+ "value": [513],
9095
+ "label": [513],
9096
+ "description": [513],
9097
+ "group": [513],
9098
+ "disabled": [516]
9099
+ },
9100
+ "$listeners$": undefined,
9101
+ "$lazyBundleId$": "-",
9102
+ "$attrsToReflect$": [["checked", "checked"], ["value", "value"], ["label", "label"], ["description", "description"], ["group", "group"], ["disabled", "disabled"]]
9103
+ }; }
9104
+ }
9105
+
9106
+ const nvFieldmultiselectCss = "nv-fieldmultiselect{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box}nv-fieldmultiselect[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldmultiselect[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive)}nv-fieldmultiselect[required]:not([required=false])>label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fieldmultiselect label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect .input-wrapper-multiselect{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldmultiselect .input-container-multiselect{display:flex;flex-grow:1;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-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect: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-fieldmultiselect .input-container-multiselect:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);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-fieldmultiselect .input-container-multiselect input:focus,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text:focus{outline:none}nv-fieldmultiselect .input-container-multiselect input::placeholder,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldmultiselect .input-container-multiselect .toggle-dropdown-icon{position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:2}nv-fieldmultiselect .input-container-multiselect nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px}nv-fieldmultiselect .input-container-multiselect.focus-within,nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:500;line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fieldmultiselect .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fieldmultiselect .description{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-fieldmultiselect .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-fieldmultiselect hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}.input-container-multiselect.focus-within,.input-container-multiselect:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}.no-results-message{text-align:center;padding:10px;color:var(--nv-field-error-text, #999)}";
9107
+ var NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
9108
+
9109
+ /**
9110
+ * @slot content - The content of the list.
9111
+ * @slot leading-input - Content to be placed before the input text, within the input container.
9112
+ * @slot before-input - Content to be placed before the input text, outside the input container.
9113
+ * @slot after-input - Content to be placed after the input text, outside the input container.
9114
+ * @slot label - Content to be placed as the label, will override the label prop.
9115
+ * @slot description - Content to be placed as the description, will override the description prop.
9116
+ * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.
9117
+ */
9118
+ class NvFieldmultiselect {
9119
+ constructor(hostRef) {
9120
+ registerInstance(this, hostRef);
9121
+ this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
9122
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9123
+ this.multiselectChange = createEvent(this, "multiselectChange", 7);
9124
+ /**
9125
+ * Flag to prevent concurrent reordering operations.
9126
+ * Private property preferred over @State as it:
9127
+ * - Manages internal component logic without affecting UI
9128
+ * - Avoids unnecessary re-renders
9129
+ * - Provides better performance for rapid state changes
9130
+ * - Only needs class-level scope
9131
+ */
9132
+ this.isReordering = false;
9133
+ /**
9134
+ * Handle badge close for options mode.
9135
+ */
9136
+ this.handleBadgeCloseOptions = () => {
9137
+ this.selectedValues = [];
9138
+ this.multiselectChange.emit(this.selectedValues);
9139
+ // Uncheck all elements
9140
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9141
+ items.forEach(item => {
9142
+ item.checked = false;
9143
+ item.style.display = '';
9144
+ });
9145
+ // Reorder options without the divider since there are no selected elements
9146
+ this.parsedOptions = this.parsedOptions.filter(option => !option.isDivider);
9147
+ // Reorder options without the divider since there are no selected elements
9148
+ this.reorderOptionsContent();
9149
+ };
9150
+ /**
9151
+ * Handle badge close for slots mode.
9152
+ */
9153
+ this.handleBadgeCloseSlots = () => {
9154
+ this.selectedValues = [];
9155
+ this.multiselectChange.emit(this.selectedValues);
9156
+ // Uncheck all elements
9157
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9158
+ items.forEach(item => {
9159
+ item.checked = false;
9160
+ item.style.display = '';
9161
+ });
9162
+ // Reorder slot content
9163
+ this.reorderSlotContent();
9164
+ };
9165
+ /**
9166
+ * Handle popover close
9167
+ */
9168
+ this.handlePopoverClose = () => {
9169
+ this.open = false;
9170
+ this.filterText = '';
9171
+ if (this.modeState === 'options') {
9172
+ this.reorderOptionsContent();
9173
+ }
9174
+ else {
9175
+ this.reorderSlotContent();
9176
+ }
9177
+ // Reset filter if needed
9178
+ if (this.filterable) {
9179
+ this.resetFilter();
9180
+ }
9181
+ };
9182
+ /**
9183
+ * Handle keyboard events for options mode.
9184
+ * @param {KeyboardEvent} event - The keyboard event.
9185
+ */
9186
+ this.handleKeyDownOptions = (event) => {
9187
+ if (!this.open) {
9188
+ if (event.key === 'ArrowDown') {
9189
+ this.open = true;
9190
+ this.popoverElement.show();
9191
+ if (!this.filterable) {
9192
+ this.focusFirstItem();
9193
+ }
9194
+ event.preventDefault();
9195
+ return;
9196
+ }
9197
+ return;
9198
+ }
9199
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9200
+ if (items.length === 0) {
9201
+ console.warn('No dropdown items found to navigate');
9202
+ return;
9203
+ }
9204
+ let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
9205
+ if (event.key === 'ArrowDown') {
9206
+ event.preventDefault();
9207
+ currentIndex = (currentIndex + 1) % items.length;
9208
+ this.updateHighlightedItem(items, currentIndex);
9209
+ }
9210
+ else if (event.key === 'ArrowUp') {
9211
+ event.preventDefault();
9212
+ currentIndex = (currentIndex - 1 + items.length) % items.length;
9213
+ this.updateHighlightedItem(items, currentIndex);
9214
+ }
9215
+ else if (event.key === 'Enter' && currentIndex >= 0) {
9216
+ event.preventDefault();
9217
+ items[currentIndex].click();
9218
+ }
9219
+ else if (event.key === 'Escape') {
9220
+ event.preventDefault();
9221
+ this.handlePopoverClose();
9222
+ if (this.inputElement) {
9223
+ this.inputElement.blur();
9224
+ }
9225
+ }
9226
+ };
9227
+ /**
9228
+ * Handle input blur for options mode.
9229
+ */
9230
+ this.handleInputBlurOptions = () => {
9231
+ setTimeout(() => {
9232
+ if (!this.el.contains(document.activeElement)) {
9233
+ this.handlePopoverClose();
9234
+ }
9235
+ }, 150);
9236
+ };
9237
+ /**
9238
+ * Handle click on the input container for options mode.
9239
+ * @param {MouseEvent} event - The click event.
9240
+ */
9241
+ this.handleInputContainerClickOptions = (event) => {
9242
+ if (this.disabled || this.readonly) {
9243
+ return;
9244
+ }
9245
+ const target = event.target;
9246
+ if (target.tagName === 'P' || target.tagName === 'SPAN') {
9247
+ this.open = true;
9248
+ this.popoverElement.show();
9249
+ const inputContainer = this.el.querySelector('.input-container');
9250
+ if (inputContainer) {
9251
+ inputContainer.classList.add('focus-within');
9252
+ const removeFocusWithin = () => {
9253
+ inputContainer.classList.remove('focus-within');
9254
+ };
9255
+ this.popoverElement.addEventListener('hide', removeFocusWithin);
9256
+ }
9257
+ }
9258
+ };
9259
+ /**
9260
+ * Handle click on the input container for slots mode.
9261
+ * @param {MouseEvent} event - The click event.
9262
+ */
9263
+ this.handleInputContainerClickSlots = (event) => {
9264
+ if (this.disabled || this.readonly) {
9265
+ return;
9266
+ }
9267
+ const target = event.target;
9268
+ if (target.tagName === 'P' || target.tagName === 'SPAN') {
9269
+ this.open = true;
9270
+ this.popoverElement.show();
9271
+ const inputContainer = this.el.querySelector('.input-container');
9272
+ if (inputContainer) {
9273
+ inputContainer.classList.add('focus-within');
9274
+ const removeFocusWithin = () => {
9275
+ inputContainer.classList.remove('focus-within');
9276
+ };
9277
+ this.popoverElement.addEventListener('hide', removeFocusWithin);
9278
+ }
9279
+ }
9280
+ };
9281
+ /**
9282
+ * Handle input change for options mode.
9283
+ * @param {Event} event - The input event.
9284
+ */
9285
+ this.handleInputOptions = (event) => {
9286
+ if (!this.filterable)
9287
+ return;
9288
+ if (this.disabled || this.readonly) {
9289
+ return;
9290
+ }
9291
+ const input = event.target;
9292
+ this.value = input.value;
9293
+ this.valueChanged.emit(this.value);
9294
+ // Clear any existing timer
9295
+ if (this.debounceTimer) {
9296
+ window.clearTimeout(this.debounceTimer);
9297
+ }
9298
+ // Set a new timer for filtering
9299
+ this.debounceTimer = window.setTimeout(() => {
9300
+ this.filterText = input.value.toLowerCase();
9301
+ this.filterOptionsItems();
9302
+ }, this.debounceDelay);
9303
+ };
9304
+ /**
9305
+ * Handle input change for slots mode
9306
+ * @param {Event} event - The input event.
9307
+ */
9308
+ this.handleInputSlots = (event) => {
9309
+ if (!this.filterable)
9310
+ return;
9311
+ if (this.disabled || this.readonly)
9312
+ return;
9313
+ const input = event.target;
9314
+ this.value = input.value;
9315
+ this.valueChanged.emit(this.value);
9316
+ // Clear any existing timer
9317
+ if (this.debounceTimer) {
9318
+ window.clearTimeout(this.debounceTimer);
9319
+ }
9320
+ // Set a new timer for filtering
9321
+ this.debounceTimer = window.setTimeout(() => {
9322
+ this.filterText = input.value.toLowerCase();
9323
+ this.filterSlotsItems();
9324
+ }, this.debounceDelay);
9325
+ };
9326
+ /**
9327
+ * Handle input focus for options mode.
9328
+ */
9329
+ this.handleInputFocusOptions = () => {
9330
+ if (this.disabled || this.readonly) {
9331
+ return;
9332
+ }
9333
+ this.open = true;
9334
+ };
9335
+ /**
9336
+ * Handle input focus for slots mode.
9337
+ */
9338
+ this.handleInputFocusSlots = () => {
9339
+ if (this.disabled || this.readonly) {
9340
+ return;
9341
+ }
9342
+ this.open = true;
9343
+ };
9344
+ /**
9345
+ * Handle input blur for slots mode.
9346
+ */
9347
+ this.handleInputBlurSlots = () => {
9348
+ setTimeout(() => {
9349
+ if (!this.el.contains(document.activeElement)) {
9350
+ this.handlePopoverClose();
9351
+ }
9352
+ }, 150);
9353
+ };
9354
+ /**
9355
+ * Toggle the multiselect popover for options mode.
9356
+ */
9357
+ this.togglePopoverOptions = () => {
9358
+ if (this.disabled || this.readonly) {
9359
+ return;
9360
+ }
9361
+ if (this.open) {
9362
+ this.handlePopoverClose();
9363
+ }
9364
+ else {
9365
+ this.open = true;
9366
+ this.popoverElement.show();
9367
+ if (!this.filterable) {
9368
+ this.focusFirstItem();
9369
+ }
9370
+ }
9371
+ };
9372
+ /**
9373
+ * Toggle the multiselect popover for slots mode.
9374
+ */
9375
+ this.togglePopoverSlots = () => {
9376
+ if (this.disabled || this.readonly) {
9377
+ return;
9378
+ }
9379
+ this.open = !this.open;
9380
+ if (this.open) {
9381
+ this.popoverElement.show();
9382
+ if (!this.filterable) {
9383
+ this.focusFirstItem();
9384
+ }
9385
+ }
9386
+ else {
9387
+ this.popoverElement.hide();
9388
+ }
9389
+ };
9390
+ /**
9391
+ * Handle keyboard events for slots mode.
9392
+ * @param {KeyboardEvent} event - The keyboard event.
9393
+ */
9394
+ this.handleKeyDownSlots = (event) => {
9395
+ if (!this.open) {
9396
+ if (event.key === 'ArrowDown') {
9397
+ this.open = true;
9398
+ this.popoverElement.show();
9399
+ if (!this.filterable) {
9400
+ this.focusFirstItem();
9401
+ }
9402
+ event.preventDefault();
9403
+ return;
9404
+ }
9405
+ return;
9406
+ }
9407
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9408
+ if (items.length === 0) {
9409
+ console.warn('No dropdown items found to navigate');
9410
+ return;
9411
+ }
9412
+ let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
9413
+ if (event.key === 'ArrowDown') {
9414
+ event.preventDefault();
9415
+ currentIndex = (currentIndex + 1) % items.length;
9416
+ this.updateHighlightedItem(items, currentIndex);
9417
+ }
9418
+ else if (event.key === 'ArrowUp') {
9419
+ event.preventDefault();
9420
+ currentIndex = (currentIndex - 1 + items.length) % items.length;
9421
+ this.updateHighlightedItem(items, currentIndex);
9422
+ }
9423
+ else if (event.key === 'Enter' && currentIndex >= 0) {
9424
+ event.preventDefault();
9425
+ items[currentIndex].click();
9426
+ }
9427
+ else if (event.key === 'Escape') {
9428
+ event.preventDefault();
9429
+ this.handlePopoverClose();
9430
+ if (this.inputElement) {
9431
+ this.inputElement.blur();
9432
+ }
9433
+ }
9434
+ };
9435
+ this.inputId = v4();
9436
+ this.name = undefined;
9437
+ this.label = undefined;
9438
+ this.description = undefined;
9439
+ this.placeholder = undefined;
9440
+ this.maxHeight = '200px';
9441
+ this.badgeLabel = '';
9442
+ this.emptyresult = 'No results found';
9443
+ this.required = false;
9444
+ this.error = false;
9445
+ this.errorDescription = undefined;
9446
+ this.readonly = false;
9447
+ this.disabled = false;
9448
+ this.autocomplete = 'off';
9449
+ this.filterable = false;
9450
+ this.value = undefined;
9451
+ this.open = false;
9452
+ this.mode = undefined;
9453
+ this.options = undefined;
9454
+ this.parsedOptions = [];
9455
+ this.selectedValues = [];
9456
+ this.sortedOptions = [];
9457
+ this.filterText = '';
9458
+ this.isFilterable = this.filterable;
9459
+ this.debounceDelay = 300;
9460
+ this.modeState = 'options';
9461
+ }
9462
+ //#endregion PROPERTIES
9463
+ /****************************************************************************/
9464
+ //#region EVENTS
9465
+ /**
9466
+ * Subscribe to click outside event.
9467
+ */
9468
+ connectedCallback() {
9469
+ this.modeState = this.mode;
9470
+ this.handleOptionsChange(this.options);
9471
+ document.addEventListener('click', this.handleClickOutside.bind(this));
9472
+ // If we don't have parsed options, initialize with slot elements
9473
+ if (!this.parsedOptions || this.parsedOptions.length === 0) {
9474
+ // Wait for the slot to be available
9475
+ requestAnimationFrame(() => {
9476
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9477
+ // Initialize selectedValues with checked elements
9478
+ this.selectedValues = items
9479
+ .filter(item => item.hasAttribute('checked'))
9480
+ .map(item => item.getAttribute('value') || '');
9481
+ });
9482
+ }
9483
+ // Initialize the sorted options array with the parsed options for initial rendering
9484
+ this.sortedOptions = [...this.parsedOptions];
9485
+ // Handle pre-selection during component initialization
9486
+ this.setInitialSelection();
9487
+ // Apply filtering if the multiselect is filterable and there is a value
9488
+ if (this.filterable && this.value) {
9489
+ this.filterText = this.value.toLowerCase();
9490
+ this.filterItems();
9491
+ }
9492
+ else {
9493
+ // Reset visibility state of all dropdown items
9494
+ this.resetFilter();
9495
+ }
9496
+ const slot = this.el.querySelector('slot[name="content"]');
9497
+ if (slot) {
9498
+ const observer = new MutationObserver(() => {
9499
+ this.reorderSlotContent();
9500
+ });
9501
+ observer.observe(slot, {
9502
+ childList: true,
9503
+ subtree: true,
9504
+ });
9505
+ this.reorderSlotContent();
9506
+ }
9507
+ }
9508
+ /**
9509
+ * Unsubscribe from click outside event.
9510
+ */
9511
+ disconnectedCallback() {
9512
+ document.removeEventListener('click', this.handleClickOutside.bind(this));
9513
+ }
9514
+ /**
9515
+ * Emitted when the input loses focus.
9516
+ * @param {CustomEvent<boolean>} event - The event object containing the focus state.
9517
+ */
9518
+ handleOpenChanged(event) {
9519
+ // Update the open state of popover
9520
+ this.open = event.detail;
9521
+ if (this.open) {
9522
+ if (this.filterText) {
9523
+ this.filterItems();
9524
+ }
9525
+ }
9526
+ else {
9527
+ this.reorderSlotContent();
9528
+ }
9529
+ }
9530
+ /**
9531
+ * Listen for the `itemChecked` event emitted by child items.
9532
+ * @param {CustomEvent<{ value: string; checked: boolean }>} event - The event object containing the selected value and its checked state.
9533
+ */
9534
+ handleItemChecked(event) {
9535
+ if (this.disabled || this.readonly)
9536
+ return;
9537
+ const { value, checked } = event.detail;
9538
+ if (value !== undefined && value !== null) {
9539
+ const newSelectedValues = [...this.selectedValues];
9540
+ if (checked && !newSelectedValues.includes(value)) {
9541
+ newSelectedValues.push(value);
9542
+ }
9543
+ else if (!checked) {
9544
+ const index = newSelectedValues.indexOf(value);
9545
+ if (index > -1) {
9546
+ newSelectedValues.splice(index, 1);
9547
+ }
9548
+ }
9549
+ this.selectedValues = newSelectedValues;
9550
+ this.multiselectChange.emit(this.selectedValues);
9551
+ }
9552
+ }
9553
+ /**
9554
+ * Emitted when the options change.
9555
+ * @param {string | Array<{label: string, value: string, isDivider?: boolean, disabled?: boolean, description?: string, checked?: boolean}>} newValue - The new value of the options.
9556
+ */
9557
+ handleOptionsChange(newValue) {
9558
+ if (typeof newValue === 'string') {
9559
+ try {
9560
+ const parsedOpts = JSON.parse(newValue);
9561
+ // Process options: initialize selections, reorder items, and add dividers where needed
9562
+ this.selectedValues = parsedOpts
9563
+ .filter(option => option.checked)
9564
+ .map(option => option.value);
9565
+ const checkedItems = parsedOpts.filter(option => this.selectedValues.includes(option.value));
9566
+ const uncheckedItems = parsedOpts.filter(option => !this.selectedValues.includes(option.value));
9567
+ this.parsedOptions = [
9568
+ ...checkedItems,
9569
+ ...(checkedItems.length > 0 && uncheckedItems.length > 0
9570
+ ? [{ isDivider: true, label: '', value: '' }]
9571
+ : []),
9572
+ ...uncheckedItems,
9573
+ ];
9574
+ }
9575
+ catch (error) {
9576
+ console.error('Error parsing options:', error);
9577
+ this.parsedOptions = [];
9578
+ }
9579
+ }
9580
+ else if (Array.isArray(newValue)) {
9581
+ this.selectedValues = newValue
9582
+ .filter(option => option.checked)
9583
+ .map(option => option.value);
9584
+ this.parsedOptions = [...newValue];
9585
+ }
9586
+ else {
9587
+ this.parsedOptions = [];
9588
+ }
9589
+ this.reorderSlotContent();
9590
+ }
9591
+ /**
9592
+ * Emitted when the value changes.
9593
+ */
9594
+ watchValueHandler() {
9595
+ // Handle value change and update the corresponding multiselect item if it exists
9596
+ this.setInitialSelection();
9597
+ }
9598
+ /**
9599
+ * Emitted when the filterable property changes.
9600
+ * @param {boolean} newValue - The new value of the filterable property.
9601
+ */
9602
+ watchFilterableHandler(newValue) {
9603
+ this.isFilterable = newValue;
9604
+ this.filterable = newValue;
9605
+ }
9606
+ // Add a watcher for the slot content
9607
+ handleSlotChange(event) {
9608
+ const slot = event.target;
9609
+ if (slot.name === 'content') {
9610
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9611
+ // Update selectedValues when slot content changes
9612
+ this.selectedValues = items
9613
+ .filter(item => item.hasAttribute('checked'))
9614
+ .map(item => item.getAttribute('value') || '');
9615
+ }
9616
+ }
9617
+ //#endregion EVENTS
9618
+ /****************************************************************************/
9619
+ //#region METHODS
9620
+ /**
9621
+ * Retrieves the current filter text entered by the user.
9622
+ * @returns {string} The filter text.
9623
+ */
9624
+ async getFilterText() {
9625
+ return this.filterText;
9626
+ }
9627
+ /**
9628
+ * Set the initial selection based on the current value and update the inputElement value.
9629
+ */
9630
+ setInitialSelection() {
9631
+ var _a;
9632
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
9633
+ const selectedItem = items.find(item => {
9634
+ var _a;
9635
+ return item.getAttribute('label') === this.value ||
9636
+ item.getAttribute('value') === this.value ||
9637
+ ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === this.value;
9638
+ });
9639
+ // Remove 'selected' from all items first to reset the state
9640
+ items.forEach(item => {
9641
+ item.removeAttribute('selected');
9642
+ item.classList.remove('selected');
9643
+ });
9644
+ if (selectedItem) {
9645
+ // Add the `selected` attribute and `selected` class for visual styling
9646
+ selectedItem.setAttribute('selected', 'true');
9647
+ selectedItem.classList.add('selected');
9648
+ // Update the value and inputElement value to reflect the pre-selected item
9649
+ this.value =
9650
+ selectedItem.getAttribute('label') ||
9651
+ selectedItem.getAttribute('value') ||
9652
+ ((_a = selectedItem.textContent) === null || _a === void 0 ? void 0 : _a.trim()) ||
9653
+ '';
9654
+ if (this.inputElement) {
9655
+ this.inputElement.value = this.value;
9656
+ }
9657
+ }
9658
+ }
9659
+ /**
9660
+ * Reset the filter and make all items visible.
9661
+ */
9662
+ async resetFilter() {
9663
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9664
+ // Reset visibility state of all dropdown items
9665
+ items.forEach(item => {
9666
+ item.style.display = '';
9667
+ });
9668
+ // Clean up filter-related UI elements
9669
+ const ul = this.el.querySelector('ul');
9670
+ if (ul) {
9671
+ const emptyMessage = ul.querySelector('[data-empty]');
9672
+ const divider = ul.querySelector('hr.dropdown-divider');
9673
+ if (emptyMessage)
9674
+ emptyMessage.remove();
9675
+ if (divider)
9676
+ divider.remove();
9677
+ }
9678
+ }
9679
+ /**
9680
+ * Returns the list of selected values.
9681
+ * @returns {string[]} The selected values.
9682
+ */
9683
+ async getSelectedValues() {
9684
+ return this.selectedValues;
9685
+ }
9686
+ /**
9687
+ * Reorder the content of the slot.
9688
+ */
9689
+ reorderSlotContent() {
9690
+ if (this.modeState === 'options')
9691
+ return;
9692
+ const ul = this.el.querySelector('ul');
9693
+ if (!ul)
9694
+ return;
9695
+ // First remove all existing dividers
9696
+ ul.querySelectorAll('hr.dropdown-divider').forEach(divider => divider.remove());
9697
+ // Get all visible items (not hidden)
9698
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
9699
+ // Check if we have an empty message
9700
+ const hasEmptyMessage = ul.querySelector('[data-empty]');
9701
+ if (hasEmptyMessage) {
9702
+ // If we have an empty message, don't reorder
9703
+ return;
9704
+ }
9705
+ // Separate selected and unselected items
9706
+ const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
9707
+ const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
9708
+ // Empty the list
9709
+ while (ul.firstChild) {
9710
+ ul.removeChild(ul.firstChild);
9711
+ }
9712
+ // Reorder items
9713
+ selectedItems.forEach(item => ul.appendChild(item));
9714
+ // Add divider only if we have both selected AND unselected items
9715
+ // AND if visible items are different
9716
+ if (selectedItems.length > 0 &&
9717
+ unselectedItems.length > 0 &&
9718
+ items.length > 1) {
9719
+ const divider = document.createElement('hr');
9720
+ divider.className = 'dropdown-divider';
9721
+ ul.appendChild(divider);
9722
+ }
9723
+ // Add unselected items
9724
+ unselectedItems.forEach(item => ul.appendChild(item));
9725
+ }
9726
+ /**
9727
+ * Reorder the content for options mode with async handling
9728
+ */
9729
+ async reorderOptionsContent() {
9730
+ if (this.isReordering ||
9731
+ !this.parsedOptions ||
9732
+ this.parsedOptions.length === 0 ||
9733
+ this.modeState !== 'options') {
9734
+ return;
9735
+ }
9736
+ try {
9737
+ this.isReordering = true;
9738
+ // Update parsedOptions first
9739
+ const optionsWithoutDivider = this.parsedOptions.filter(opt => !opt.isDivider);
9740
+ const selectedOptions = optionsWithoutDivider.filter(opt => this.selectedValues.includes(opt.value));
9741
+ const unselectedOptions = optionsWithoutDivider.filter(opt => !this.selectedValues.includes(opt.value));
9742
+ // Update parsedOptions with new divider
9743
+ this.parsedOptions = [
9744
+ ...selectedOptions,
9745
+ ...(selectedOptions.length > 0 && unselectedOptions.length > 0
9746
+ ? [{ isDivider: true, label: '', value: '' }]
9747
+ : []),
9748
+ ...unselectedOptions,
9749
+ ];
9750
+ // Then update DOM
9751
+ await new Promise(resolve => requestAnimationFrame(resolve));
9752
+ const ul = this.el.querySelector('ul');
9753
+ if (!ul)
9754
+ return;
9755
+ // Get all items
9756
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9757
+ // Remove all existing dividers
9758
+ ul.querySelectorAll('hr.dropdown-divider').forEach(divider => divider.remove());
9759
+ // Separate selected and unselected items
9760
+ const selectedItems = items.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
9761
+ const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
9762
+ // Empty the list
9763
+ while (ul.firstChild) {
9764
+ ul.removeChild(ul.firstChild);
9765
+ }
9766
+ // Reorder items
9767
+ selectedItems.forEach(item => ul.appendChild(item));
9768
+ // Add divider only if there are both selected AND unselected items
9769
+ if (selectedItems.length > 0 && unselectedItems.length > 0) {
9770
+ const divider = document.createElement('hr');
9771
+ divider.className = 'dropdown-divider';
9772
+ ul.appendChild(divider);
9773
+ }
9774
+ // Add unselected items
9775
+ unselectedItems.forEach(item => ul.appendChild(item));
9776
+ }
9777
+ finally {
9778
+ this.isReordering = false;
9779
+ }
9780
+ }
9781
+ /**
9782
+ * Filter multiselect items based on the text entered by the user.
9783
+ */
9784
+ filterItems() {
9785
+ const ul = this.el.querySelector('ul');
9786
+ if (!ul)
9787
+ return;
9788
+ // Remove existing empty message if any
9789
+ const existingEmptyMessage = ul.querySelector('[data-empty]');
9790
+ if (existingEmptyMessage) {
9791
+ existingEmptyMessage.remove();
9792
+ }
9793
+ if (!this.filterText.trim()) {
9794
+ if (this.parsedOptions && this.parsedOptions.length > 0) {
9795
+ // Reset options display
9796
+ const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
9797
+ items.forEach(item => {
9798
+ item.style.display = '';
9799
+ });
9800
+ }
9801
+ else {
9802
+ // Reset slot items display
9803
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9804
+ items.forEach(item => {
9805
+ item.style.display = '';
9806
+ });
9807
+ }
9808
+ this.reorderSlotContent();
9809
+ return;
9810
+ }
9811
+ const normalizedFilter = this.normalizeText(this.filterText);
9812
+ let hasVisibleItems = false;
9813
+ if (this.parsedOptions && this.parsedOptions.length > 0) {
9814
+ // Filter options mode
9815
+ const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
9816
+ items.forEach(item => {
9817
+ const option = this.parsedOptions.find(opt => opt.value === item.getAttribute('value'));
9818
+ if (option && !option.isDivider) {
9819
+ const matchesFilter = this.normalizeText(option.label).includes(normalizedFilter) ||
9820
+ this.normalizeText(option.value).includes(normalizedFilter);
9821
+ item.style.display = matchesFilter ? '' : 'none';
9822
+ if (matchesFilter)
9823
+ hasVisibleItems = true;
9824
+ }
9825
+ });
9826
+ // Hide dividers if needed
9827
+ const dividers = ul.querySelectorAll('hr.dropdown-divider');
9828
+ dividers.forEach(divider => {
9829
+ divider.style.display = hasVisibleItems ? '' : 'none';
9830
+ });
9831
+ }
9832
+ else {
9833
+ // Filter slot items mode
9834
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9835
+ items.forEach(item => {
9836
+ const label = item.getAttribute('label') || '';
9837
+ const value = item.getAttribute('value') || '';
9838
+ const textContent = item.textContent || '';
9839
+ const matchesFilter = this.normalizeText(label).includes(normalizedFilter) ||
9840
+ this.normalizeText(value).includes(normalizedFilter) ||
9841
+ this.normalizeText(textContent).includes(normalizedFilter);
9842
+ item.style.display = matchesFilter ? '' : 'none';
9843
+ if (matchesFilter)
9844
+ hasVisibleItems = true;
9845
+ });
9846
+ }
9847
+ // Add empty message if no items match the filter
9848
+ if (!hasVisibleItems) {
9849
+ const emptyMessage = document.createElement('li');
9850
+ emptyMessage.setAttribute('data-empty', 'true');
9851
+ emptyMessage.textContent = this.emptyresult;
9852
+ emptyMessage.classList.add('no-results-message');
9853
+ ul.appendChild(emptyMessage);
9854
+ }
9855
+ this.reorderSlotContent();
9856
+ }
9857
+ /**
9858
+ * Filter multiselect items in options mode.
9859
+ */
9860
+ filterOptionsItems() {
9861
+ const ul = this.el.querySelector('ul');
9862
+ if (!ul)
9863
+ return;
9864
+ // Remove existing empty message if any
9865
+ const existingEmptyMessage = ul.querySelector('[data-empty]');
9866
+ if (existingEmptyMessage) {
9867
+ existingEmptyMessage.remove();
9868
+ }
9869
+ if (!this.filterText.trim()) {
9870
+ // Reset options display
9871
+ const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
9872
+ items.forEach(item => {
9873
+ item.style.display = '';
9874
+ });
9875
+ this.reorderOptionsContent();
9876
+ return;
9877
+ }
9878
+ const normalizedFilter = this.normalizeText(this.filterText);
9879
+ let hasVisibleItems = false;
9880
+ // Filter options mode
9881
+ const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
9882
+ items.forEach(item => {
9883
+ const option = this.parsedOptions.find(opt => opt.value === item.getAttribute('value'));
9884
+ if (option && !option.isDivider) {
9885
+ const matchesFilter = this.normalizeText(option.label).includes(normalizedFilter) ||
9886
+ this.normalizeText(option.value).includes(normalizedFilter);
9887
+ item.style.display = matchesFilter ? '' : 'none';
9888
+ if (matchesFilter)
9889
+ hasVisibleItems = true;
9890
+ }
9891
+ });
9892
+ // Get visible items after filtering
9893
+ const visibleItems = items.filter(item => item.style.display !== 'none');
9894
+ const visibleSelectedItems = visibleItems.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
9895
+ // Hide divider if all visible items are either all selected or all unselected
9896
+ const divider = ul.querySelector('hr.dropdown-divider');
9897
+ if (divider) {
9898
+ const shouldShowDivider = visibleSelectedItems.length > 0 &&
9899
+ visibleSelectedItems.length < visibleItems.length;
9900
+ divider.style.display = shouldShowDivider ? '' : 'none';
9901
+ }
9902
+ // Add empty message if no items match the filter
9903
+ if (!hasVisibleItems) {
9904
+ const emptyMessage = document.createElement('li');
9905
+ emptyMessage.setAttribute('data-empty', 'true');
9906
+ emptyMessage.textContent = this.emptyresult;
9907
+ emptyMessage.classList.add('no-results-message');
9908
+ ul.appendChild(emptyMessage);
9909
+ }
9910
+ }
9911
+ /**
9912
+ * Filter multiselect items in slots mode
9913
+ */
9914
+ filterSlotsItems() {
9915
+ if (this.modeState === 'options')
9916
+ return;
9917
+ const ul = this.el.querySelector('ul');
9918
+ if (!ul)
9919
+ return;
9920
+ // Remove existing empty message if any
9921
+ const existingEmptyMessage = ul.querySelector('[data-empty]');
9922
+ if (existingEmptyMessage) {
9923
+ existingEmptyMessage.remove();
9924
+ }
9925
+ // If filter text is empty, reset all items visibility
9926
+ if (!this.filterText.trim()) {
9927
+ this.resetFilter();
9928
+ return;
9929
+ }
9930
+ const normalizedFilter = this.normalizeText(this.filterText);
9931
+ let hasVisibleItems = false;
9932
+ // Get all items and preserve them in the DOM
9933
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
9934
+ // Instead of removing/reordering, just hide/show items
9935
+ items.forEach(item => {
9936
+ var _a;
9937
+ const label = item.getAttribute('label') || '';
9938
+ const value = item.getAttribute('value') || '';
9939
+ const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
9940
+ const matchesFilter = this.normalizeText(label).includes(normalizedFilter) ||
9941
+ this.normalizeText(value).includes(normalizedFilter) ||
9942
+ this.normalizeText(textContent).includes(normalizedFilter);
9943
+ item.style.display = matchesFilter ? '' : 'none';
9944
+ if (matchesFilter)
9945
+ hasVisibleItems = true;
9946
+ });
9947
+ // Get visible items after filtering
9948
+ const visibleItems = items.filter(item => item.style.display !== 'none');
9949
+ const visibleSelectedItems = visibleItems.filter(item => this.selectedValues.includes(item.getAttribute('value') || ''));
9950
+ // Hide divider if all visible items are either all selected or all unselected
9951
+ const divider = ul.querySelector('hr.dropdown-divider');
9952
+ if (divider) {
9953
+ const shouldShowDivider = visibleSelectedItems.length > 0 &&
9954
+ visibleSelectedItems.length < visibleItems.length;
9955
+ divider.style.display = shouldShowDivider ? '' : 'none';
9956
+ }
9957
+ // Add empty message if no items match the filter
9958
+ if (!hasVisibleItems) {
9959
+ const emptyMessage = document.createElement('li');
9960
+ emptyMessage.setAttribute('data-empty', 'true');
9961
+ emptyMessage.textContent = this.emptyresult;
9962
+ emptyMessage.classList.add('no-results-message');
9963
+ ul.appendChild(emptyMessage);
9964
+ }
9965
+ }
9966
+ /**
9967
+ * Normalizes text by removing accents and converting to lowercase
9968
+ * @param {string} text - The text to normalize
9969
+ * @returns {string} The normalized text
9970
+ *
9971
+ * @example
9972
+ * normalizeText("Café Latte") => "cafe latte"
9973
+ *
9974
+ * @description
9975
+ * This function performs text normalization in three steps:
9976
+ * 1. Decomposes characters into their base form and combining characters (NFD)
9977
+ * 2. Removes all diacritical marks (accents, umlauts, etc.)
9978
+ * 3. Converts to lowercase and trims whitespace
9979
+ *
9980
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize} - MDN documentation on String.normalize()
9981
+ * @see {@link https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms} - More info about Unicode normalization forms
9982
+ */
9983
+ normalizeText(text) {
9984
+ return text
9985
+ .normalize('NFD') // Decompose characters into base + combining characters (e.g., é => e + ´)
9986
+ .replace(/[\u0300-\u036f]/g, '') // Remove all diacritical marks (Unicode range for combining characters)
9987
+ .toLowerCase() // Convert to lowercase
9988
+ .trim(); // Remove leading and trailing whitespace
9989
+ }
9990
+ /**
9991
+ * Handle click outside the component.
9992
+ * @param {MouseEvent} event - The click event.
9993
+ */
9994
+ handleClickOutside(event) {
9995
+ if (this.el.contains(event.target) ||
9996
+ (this.inputElement && this.inputElement.contains(event.target))) {
9997
+ return;
9998
+ }
9999
+ // Force le même comportement que la fermeture par iconbutton
10000
+ if (this.modeState === 'options') {
10001
+ this.handlePopoverClose();
10002
+ }
10003
+ else {
10004
+ this.popoverElement.hide();
10005
+ }
10006
+ }
10007
+ /**
10008
+ * Handle keyboard events & arrow key navigation.
10009
+ * If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
10010
+ * If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
10011
+ * @param {KeyboardEvent} event - The keyboard event.
10012
+ */
10013
+ handleKeyDown(event) {
10014
+ if (!this.open) {
10015
+ if (event.key === 'ArrowDown') {
10016
+ this.open = true;
10017
+ this.popoverElement.show();
10018
+ // Focus on the first item if the list is not filterable
10019
+ if (!this.filterable) {
10020
+ this.focusFirstItem();
10021
+ }
10022
+ event.preventDefault();
10023
+ return;
10024
+ }
10025
+ return;
10026
+ }
10027
+ const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
10028
+ if (items.length === 0) {
10029
+ console.warn('No dropdown items found to navigate');
10030
+ return;
10031
+ }
10032
+ let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
10033
+ if (event.key === 'ArrowDown') {
10034
+ event.preventDefault();
10035
+ currentIndex = (currentIndex + 1) % items.length;
10036
+ this.updateHighlightedItem(items, currentIndex);
9304
10037
  }
9305
- if (this.validation) {
9306
- this.errorDescription = this.validation;
10038
+ else if (event.key === 'ArrowUp') {
10039
+ event.preventDefault();
10040
+ currentIndex = (currentIndex - 1 + items.length) % items.length;
10041
+ this.updateHighlightedItem(items, currentIndex);
10042
+ }
10043
+ else if (event.key === 'Enter' && currentIndex >= 0) {
10044
+ event.preventDefault();
10045
+ items[currentIndex].click();
10046
+ }
10047
+ else if (event.key === 'Escape') {
10048
+ event.preventDefault();
10049
+ this.open = false;
10050
+ this.popoverElement.hide();
10051
+ if (this.inputElement) {
10052
+ this.inputElement.blur();
10053
+ }
9307
10054
  }
9308
10055
  }
9309
- //#endregion EVENTS
9310
- /****************************************************************************/
9311
- //#region WATCHERS
9312
10056
  /**
9313
- * Watches for changes to the checked state and emits the new value.
9314
- * @param {boolean} checked - The new value of the checked state.
10057
+ * Updates the highlighted item in the dropdown list.
10058
+ *
10059
+ * @param {(HTMLNvFielddropdownitemElement | HTMLNvFielddropdownitemcheckElement)[]} items - The items to update.
10060
+ * @param {number} index - The index of the item to highlight.
9315
10061
  */
9316
- onCheckedChanged(checked) {
9317
- this.checkedChanged.emit(checked);
10062
+ updateHighlightedItem(items, index) {
10063
+ items.forEach((item, i) => {
10064
+ if (i === index) {
10065
+ item.classList.add('highlighted');
10066
+ item.setAttribute('tabindex', '0');
10067
+ item.focus();
10068
+ }
10069
+ else {
10070
+ item.classList.remove('highlighted');
10071
+ item.setAttribute('tabindex', '-1');
10072
+ }
10073
+ });
9318
10074
  }
9319
10075
  /**
9320
- * Listens for the change event on the checkbox input element and updates the
9321
- * checked state.
9322
- * @param {Event} event - The change event.
10076
+ * Focus on the first item in the dropdown list.
9323
10077
  */
9324
- handleChange(event) {
9325
- const target = event.target;
9326
- if (target.type === 'checkbox' && target.id === this.inputId) {
9327
- if (this.readonly || this.disabled) {
9328
- event.preventDefault();
9329
- return;
9330
- }
9331
- if (this.indeterminate) {
9332
- this.indeterminate = false;
9333
- }
9334
- this.checked = target.checked;
10078
+ focusFirstItem() {
10079
+ const firstItem = this.el.querySelector('nv-fielddropdownitemcheck');
10080
+ if (firstItem) {
10081
+ firstItem.setAttribute('tabindex', '0');
10082
+ firstItem.classList.add('highlighted');
10083
+ firstItem.focus();
10084
+ }
10085
+ else {
10086
+ console.warn('No first item found to focus');
9335
10087
  }
9336
10088
  }
9337
- //#endregion WATCHERS
10089
+ /**
10090
+ * Watch for changes in the mode prop and update modeState accordingly
10091
+ * @param {string} newValue - The new mode value
10092
+ */
10093
+ handleModeChange(newValue) {
10094
+ this.modeState = newValue;
10095
+ }
10096
+ //#endregion METHODS
9338
10097
  /****************************************************************************/
9339
10098
  //#region RENDER
10099
+ /**
10100
+ * Renders the component in options mode
10101
+ * @returns {any} The JSX for options mode
10102
+ */
10103
+ renderOptionsMode() {
10104
+ return (hAsync(Host, null, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { htmlFor: this.inputId }, hAsync("slot", { name: "label" }, this.label))), hAsync("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, hAsync("div", { class: "input-wrapper-multiselect", slot: "trigger" }, hAsync("slot", { name: "before-input" }), hAsync("div", { class: "input-container-multiselect" }, hAsync("slot", { name: "leading-input" }), hAsync("nv-badge", { slot: "leading-input", "prevent-auto-close": "true", color: "10", dismissible: this.selectedValues.length > 0, hidden: this.selectedValues.length <= 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions }), this.isFilterable || this.disabled || this.readonly ? (hAsync("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDownOptions })) : (hAsync("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDownOptions, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open }, hAsync("span", null, this.value || this.placeholder))), hAsync("nv-iconbutton", { class: "toggle-dropdown-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopoverOptions })), hAsync("slot", { name: "after-input" })), hAsync("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: { 'max-height': this.maxHeight, 'overflow-y': 'auto' } }, hAsync("ul", { role: "presentation" }, this.parsedOptions.map(option => option.isDivider ? (hAsync("hr", { class: "dropdown-divider" })) : (hAsync("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.selectedValues.includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
10105
+ }
10106
+ /**
10107
+ * Renders the component in slots mode
10108
+ * @returns {any} The JSX for slots mode
10109
+ */
10110
+ renderSlotsMode() {
10111
+ return (hAsync(Host, null, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { htmlFor: this.inputId }, hAsync("slot", { name: "label" }, this.label))), hAsync("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, hAsync("div", { class: "input-wrapper-multiselect", slot: "trigger" }, hAsync("slot", { name: "before-input" }), hAsync("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, hAsync("slot", { name: "leading-input" }, hAsync("p", null, "No leading input")), hAsync("nv-badge", { slot: "leading-input", "prevent-auto-close": "true", color: "10", dismissible: this.selectedValues.length > 0, hidden: this.selectedValues.length <= 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots }), this.isFilterable || this.disabled || this.readonly ? (hAsync("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDownSlots })) : (hAsync("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDownSlots, onFocus: this.handleInputFocusSlots, role: "combobox", "aria-expanded": this.open }, hAsync("span", null, this.value || this.placeholder))), hAsync("nv-iconbutton", { class: "toggle-dropdown-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopoverSlots })), hAsync("slot", { name: "after-input" })), hAsync("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: { 'max-height': this.maxHeight, 'overflow-y': 'auto' } }, hAsync("slot", { name: "content" }))), this.renderDescriptions()));
10112
+ }
10113
+ /**
10114
+ * Renders description and error description sections
10115
+ * @returns {any} The JSX for descriptions
10116
+ */
10117
+ renderDescriptions() {
10118
+ return [
10119
+ (this.description || this.el.querySelector('[slot="description"]')) && (hAsync("div", { class: "description" }, hAsync("slot", { name: "description" }, this.description))),
10120
+ (this.errorDescription ||
10121
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { hidden: !this.error, class: "error-description" }, hAsync("slot", { name: "error-description" }, this.errorDescription))),
10122
+ ];
10123
+ }
10124
+ /**
10125
+ * Main render method that decides which mode to render
10126
+ * @returns {any} The JSX for the component
10127
+ */
9340
10128
  render() {
9341
- return (hAsync(Host, { key: 'c87c2b3e3a4b81c9d6eb6c3784919a5fcb78e38b', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, hAsync("div", { key: '8e43a91fec01b02dfa6b27408e1c1fd252558014', class: "input-container" }, hAsync("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 => {
9342
- if (el) {
9343
- el.indeterminate = this.indeterminate;
9344
- }
9345
- } }), hAsync("span", { key: 'b100feee33694f72c59496f09f5ecbbf9358d7c6', class: "icon" }, this.checked && !this.indeterminate && (hAsync("slot", { key: 'a5f5159aff04c111e4b944123686f00f817ecb1e', name: "checked-icon" }, hAsync("svg", { key: '26a750b600fa0857ec9adf17f9d4dcd9ce0e2aad', xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" }, hAsync("path", { key: 'ddf0155de05297d7ec966bdaf9633ceb1ee413d7', d: "M11.6667 3.5L5.25004 9.91667L2.33337 7", "stroke-linecap": "round", "stroke-linejoin": "round" })))), this.indeterminate && (hAsync("slot", { key: 'e64681ce70326348083402f7996eaf6134aaca3e', name: "indeterminate-icon" }, hAsync("svg", { key: '9cfcd8118bb6f208278614711fd726fe29c9070a', class: "indeterminate-svg", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 14 14", fill: "none" }, hAsync("path", { key: '8d88be8c4bd195982bf0024e4f67f30601ddfb80', d: "M2.9165 7H11.0832", "stroke-linecap": "round", "stroke-linejoin": "round" })))))), hAsync("div", { key: '061d18d589ef2a8efd0fb73f70d5c0a6013c497d', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '129013f8e60d1aaae82b97321c4cc26ab6229bbb', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: 'e134c0683e4c4c410c78d45f3537d8ed1491c67e', name: "label" }, this.label))), (this.description ||
9346
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '78166f4fb7d1e5dc20f13ce5b4ca567a90862493', class: "description" }, hAsync("slot", { key: '6bced15913e4a22371520818343de5598c5a5e6d', name: "description" }, this.description))), (this.errorDescription ||
9347
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '88f4ceaef2412ce5f4bb08b19485fc27d9842792', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '96a581ce5d0e66416d24bf52219a87d3c39457d8', name: "error-description" }, this.errorDescription))))));
10129
+ return this.modeState === 'options'
10130
+ ? this.renderOptionsMode()
10131
+ : this.renderSlotsMode();
9348
10132
  }
9349
10133
  get el() { return getElement(this); }
9350
10134
  static get watchers() { return {
9351
- "checked": ["onCheckedChanged"]
10135
+ "options": ["handleOptionsChange"],
10136
+ "value": ["watchValueHandler"],
10137
+ "filterable": ["watchFilterableHandler"],
10138
+ "mode": ["handleModeChange"]
9352
10139
  }; }
9353
- static get style() { return NvFieldcheckboxStyle0; }
10140
+ static get style() { return NvFieldmultiselectStyle0; }
9354
10141
  static get cmpMeta() { return {
9355
10142
  "$flags$": 4,
9356
- "$tagName$": "nv-fieldcheckbox",
10143
+ "$tagName$": "nv-fieldmultiselect",
9357
10144
  "$members$": {
9358
- "message": [1],
9359
- "validation": [1],
9360
- "labelBefore": [4, "label-before"],
9361
10145
  "inputId": [513, "input-id"],
9362
10146
  "name": [513],
9363
- "value": [513],
9364
10147
  "label": [513],
9365
- "labelPlacement": [1537, "label-placement"],
9366
- "hideLabel": [516, "hide-label"],
9367
- "description": [1537],
10148
+ "description": [513],
10149
+ "placeholder": [513],
10150
+ "maxHeight": [513, "max-height"],
10151
+ "badgeLabel": [513, "badge-label"],
10152
+ "emptyresult": [513],
10153
+ "required": [516],
9368
10154
  "error": [516],
9369
- "errorDescription": [1537, "error-description"],
9370
- "checked": [1540],
9371
- "indeterminate": [1540],
9372
- "disabled": [516],
10155
+ "errorDescription": [513, "error-description"],
9373
10156
  "readonly": [516],
9374
- "required": [516]
9375
- },
9376
- "$listeners$": [[0, "change", "handleChange"]],
9377
- "$lazyBundleId$": "-",
9378
- "$attrsToReflect$": [["inputId", "input-id"], ["name", "name"], ["value", "value"], ["label", "label"], ["labelPlacement", "label-placement"], ["hideLabel", "hide-label"], ["description", "description"], ["error", "error"], ["errorDescription", "error-description"], ["checked", "checked"], ["indeterminate", "indeterminate"], ["disabled", "disabled"], ["readonly", "readonly"], ["required", "required"]]
9379
- }; }
9380
- }
9381
-
9382
- const nvFielddropdownitemCss = "nv-fielddropdownitem{display:flex;align-items:center;justify-content:space-between;max-width:300px;width:100%;padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);transition:background-color 150ms ease-out, color 150ms ease-out;cursor:pointer}nv-fielddropdownitem:hover,nv-fielddropdownitem:focus,nv-fielddropdownitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-fielddropdownitem.selected{background-color:var(--components-menu-contextual-item-background-selected);color:var(--components-menu-contextual-item-content-selected)}nv-fielddropdownitem[disabled]:not([disabled=false]){cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-fielddropdownitem [data-scope=text]{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nv-fielddropdownitem .selection-icon{padding-left:10px;color:var(--components-menu-contextual-item-icon-selected);align-self:center}:root{--components-menu-contextual-item-background-selected:#f5f6f7;--components-menu-contextual-item-content-selected:#171f22;--components-menu-contextual-item-icon-selected:#007f00;--components-menu-contextual-item-background-hover:#f5f6f7;--components-menu-contextual-item-content-hover:#171f22}";
9383
- var NvFielddropdownitemStyle0 = nvFielddropdownitemCss;
9384
-
9385
- /**
9386
- * @slot default - The content to be displayed inside the dropdown item.
9387
- */
9388
- class NvFielddropdownitem {
9389
- constructor(hostRef) {
9390
- registerInstance(this, hostRef);
9391
- this.itemSelected = createEvent(this, "itemSelected", 7);
9392
- /****************************************************************************/
9393
- //#region PROPERTIES
9394
- /**
9395
- * Disables the item, preventing any user interaction.
9396
- */
9397
- this.disabled = false;
9398
- /**
9399
- * Indicates if the item is selected.
9400
- */
9401
- this.selected = false;
9402
- this.handleClick = () => {
9403
- if (!this.disabled) {
9404
- let itemValue = this.value || '';
9405
- if (!itemValue) {
9406
- itemValue =
9407
- Array.from(this.el.childNodes)
9408
- .map(node => { var _a; return (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
9409
- .filter(text => text && text.length > 0)
9410
- .join(' ') || '';
9411
- }
9412
- this.selected = !this.selected; // Toggle the selected state
9413
- this.itemSelected.emit({
9414
- label: this.label,
9415
- value: itemValue,
9416
- selected: this.selected,
9417
- disabled: this.disabled,
9418
- });
9419
- }
9420
- };
9421
- }
9422
- //#endregion EVENTS
9423
- /****************************************************************************/
9424
- //#region METHODS
9425
- /**
9426
- * Utility function to check if a string is null, empty, or contains only whitespace.
9427
- * @param {string | null | undefined} input - The string to check.
9428
- * @returns {boolean} - Returns true if the string is null, empty, or contains only whitespace; otherwise, false.
9429
- */
9430
- isNullOrEmptyOrWhitespace(input) {
9431
- return !input || input.trim().length === 0;
9432
- }
9433
- //#endregion METHODS
9434
- /****************************************************************************/
9435
- //#region RENDER
9436
- render() {
9437
- const showDefaultLayout = this.isNullOrEmptyOrWhitespace(this.label);
9438
- return (hAsync(Host, { key: '0b0070ad824841f49bf5c24423131c46c41ef4ef', role: "menuitem", tabindex: this.disabled ? '-1' : '0', onClick: this.handleClick, class: { selected: this.selected } }, showDefaultLayout ? (hAsync("slot", null)) : (hAsync("div", { class: "flex gap-2" }, hAsync("span", { "data-scope": "text" }, this.label), this.selected && (hAsync("nv-icon", { name: "check", "aria-hidden": "true", class: "selection-icon" }))))));
9439
- }
9440
- get el() { return getElement(this); }
9441
- static get style() { return NvFielddropdownitemStyle0; }
9442
- static get cmpMeta() { return {
9443
- "$flags$": 4,
9444
- "$tagName$": "nv-fielddropdownitem",
9445
- "$members$": {
9446
10157
  "disabled": [516],
9447
- "selected": [1540],
9448
- "value": [513],
9449
- "label": [513]
10158
+ "autocomplete": [513],
10159
+ "filterable": [1540],
10160
+ "value": [1537],
10161
+ "open": [1540],
10162
+ "mode": [513],
10163
+ "options": [513],
10164
+ "debounceDelay": [514, "debounce-delay"],
10165
+ "parsedOptions": [32],
10166
+ "selectedValues": [32],
10167
+ "sortedOptions": [32],
10168
+ "filterText": [32],
10169
+ "isFilterable": [32],
10170
+ "modeState": [32],
10171
+ "getFilterText": [64],
10172
+ "resetFilter": [64],
10173
+ "getSelectedValues": [64]
9450
10174
  },
9451
- "$listeners$": undefined,
10175
+ "$listeners$": [[0, "openChanged", "handleOpenChanged"], [0, "itemChecked", "handleItemChecked"], [0, "slotchange", "handleSlotChange"], [0, "keydown", "handleKeyDown"]],
9452
10176
  "$lazyBundleId$": "-",
9453
- "$attrsToReflect$": [["disabled", "disabled"], ["selected", "selected"], ["value", "value"], ["label", "label"]]
10177
+ "$attrsToReflect$": [["inputId", "input-id"], ["name", "name"], ["label", "label"], ["description", "description"], ["placeholder", "placeholder"], ["maxHeight", "max-height"], ["badgeLabel", "badge-label"], ["emptyresult", "emptyresult"], ["required", "required"], ["error", "error"], ["errorDescription", "error-description"], ["readonly", "readonly"], ["disabled", "disabled"], ["autocomplete", "autocomplete"], ["filterable", "filterable"], ["value", "value"], ["open", "open"], ["mode", "mode"], ["options", "options"], ["debounceDelay", "debounce-delay"]]
9454
10178
  }; }
9455
10179
  }
9456
10180
 
@@ -9469,49 +10193,6 @@ class NvFieldnumber {
9469
10193
  constructor(hostRef) {
9470
10194
  registerInstance(this, hostRef);
9471
10195
  this.valueChanged = createEvent(this, "valueChanged", 7);
9472
- //#endregion DEPRECATED
9473
- /****************************************************************************/
9474
- //#region PROPERTIES
9475
- /**
9476
- * Sets the ID for the input element and the for attribute of the associated
9477
- * label. If no ID is provided, a random one will be automatically generated
9478
- * to ensure unique identification, facilitating proper label association and
9479
- * accessibility.
9480
- */
9481
- this.inputId = v4();
9482
- /**
9483
- * The disabled prop lets you turn off the input field so that users can’t
9484
- * type in it. When disabled, the field is grayed out and won’t respond to#
9485
- * clicks or touches.
9486
- */
9487
- this.disabled = false;
9488
- /**
9489
- * Display the input field’s content without allowing users to change it.
9490
- * Users can still click on it, select, and copy the text, but they won’t be
9491
- * able to type or delete anything.
9492
- */
9493
- this.readonly = false;
9494
- /**
9495
- * Marks the input field as required, ensuring that the user must fill it out
9496
- * before submitting the form.
9497
- */
9498
- this.required = false;
9499
- /**
9500
- * Alters the input field’s appearance to indicate an error, helping users
9501
- * identify fields that need correction.
9502
- * @validator error
9503
- */
9504
- this.error = false;
9505
- /**
9506
- * Changes the input field’s appearance to indicate successful input or
9507
- * validation.
9508
- */
9509
- this.success = false;
9510
- /**
9511
- * Define the increment value for the input field. It determines how much the
9512
- * value will increase or decrease when the user clicks the stepper buttons.
9513
- */
9514
- this.step = 1;
9515
10196
  //#endregion WATCHERS
9516
10197
  /****************************************************************************/
9517
10198
  //#region METHODS
@@ -9536,6 +10217,23 @@ class NvFieldnumber {
9536
10217
  this.isMaxValueReached = () => {
9537
10218
  return this.max !== undefined && this.value >= this.max;
9538
10219
  };
10220
+ this.message = undefined;
10221
+ this.validation = undefined;
10222
+ this.inputId = v4();
10223
+ this.label = undefined;
10224
+ this.description = undefined;
10225
+ this.placeholder = undefined;
10226
+ this.name = undefined;
10227
+ this.disabled = false;
10228
+ this.readonly = false;
10229
+ this.required = false;
10230
+ this.error = false;
10231
+ this.errorDescription = undefined;
10232
+ this.success = false;
10233
+ this.max = undefined;
10234
+ this.min = undefined;
10235
+ this.step = 1;
10236
+ this.value = undefined;
9539
10237
  }
9540
10238
  //#endregion PROPERTIES
9541
10239
  /****************************************************************************/
@@ -9559,9 +10257,9 @@ class NvFieldnumber {
9559
10257
  /****************************************************************************/
9560
10258
  //#region RENDER
9561
10259
  render() {
9562
- return (hAsync(Host, { key: '5d63f2dca1678d7ea971b52a40f55481eae421d6' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '145560063839b6fe34e3c8431003d5f5fb5eb65d', htmlFor: this.inputId }, hAsync("slot", { key: 'd36ca2394cf3ce62c7d5f6177480a41979d7d1cb', name: "label" }, this.label))), hAsync("div", { key: 'c53243b5f2019033a24b22120e1bd5209c415075', class: "input-wrapper" }, hAsync("slot", { key: 'e32e0fdd6b0e27cbb719b3d962fb6417eb2f3e1b', name: "before-input" }), hAsync("div", { key: 'b9de75924bde8a2cd1108e34173d0f867f0bdcea', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: '4d0bbdce8201370f1f62d06eabb5a2bd3b248c1f', name: "leading-input" }), hAsync("input", { key: '0c85ade03f9ca7e6c3aca788b3a107d0807d7b70', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: "number", required: this.required, max: this.max, min: this.min, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), this.error && (hAsync("nv-icon", { key: '5da0668775a6841bf01c662009ec7bf9048b1622', name: "alert-circle", class: "validation", size: "md" })), this.success && (hAsync("nv-icon", { key: 'be8e6e9e3c5428885aed216f49f1510b0fb29201', name: "circle-check", class: "validation", size: "md" })), hAsync("div", { key: '84ddbc5eb7e35ea216e0c9650dcbcb865e3bd726', class: "stepper-spacer" }), hAsync("div", { key: '9ba5a8087ef4fa46614d1c7492c80781af5c4a40', class: "stepper" }, hAsync("nv-icon", { key: 'a3b5adffd9b7a5a266711f02ed2862e84f2a5839', name: "minus", size: "md", onClick: this.handleMinus, class: clsx({ disabled: this.isMinValueReached() }) }), hAsync("nv-icon", { key: '1a37933cfeab32a057807173a3b411e23a3c93b0', name: "plus", size: "md", onClick: this.handlePlus, class: clsx({ disabled: this.isMaxValueReached() }) }))), hAsync("slot", { key: '99c9105e0f46dfb5e56fa3949dd99264f61e7be5', name: "after-input" })), (this.description ||
9563
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '3b9df6f1e03117123b376c637840e4219ee4e45d', class: "description" }, hAsync("slot", { key: 'deb7681e9d6fe583e418f6d25248b667c4b2fcf0', name: "description" }, this.description))), (this.errorDescription ||
9564
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '6848cf6e73924df0552ed71078d19cc1423b6d72', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: 'cf5526311207e2fca942ba84a5480cae6917060d', name: "error-description" }, this.errorDescription)))));
10260
+ return (hAsync(Host, { key: 'b8d099c0f8642f6b0c1bae142a4b29d93349df7b' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '687f3458a59403ebf563cef230cf99dc6e086bb9', htmlFor: this.inputId }, hAsync("slot", { key: 'ca476c5b6af39760f69d7da7bf3c4c90a7e89e6f', name: "label" }, this.label))), hAsync("div", { key: '48ef137de9492e2403089c799f4fcea0b01d0f8f', class: "input-wrapper" }, hAsync("slot", { key: '46342a3cc4b245bb2786c8fabc82f3090c9dbb52', name: "before-input" }), hAsync("div", { key: 'cb57b1193cb5344d76a346fcd1942057a8e75752', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: 'fe2de873b80247a33bb33d902fc49b908702028c', name: "leading-input" }), hAsync("input", { key: '3cd24c2baab2a10c53fadb0e409c73e21a64a90c', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: "number", required: this.required, max: this.max, min: this.min, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), this.error && (hAsync("nv-icon", { key: 'e82ce9ca32dd5876f401ad712c52a8203d5ee58d', name: "alert-circle", class: "validation", size: "md" })), this.success && (hAsync("nv-icon", { key: '839966e065defcae2268fb08fbfc1a36366b7e32', name: "circle-check", class: "validation", size: "md" })), hAsync("div", { key: '7b6dd67015549b173887a545be32b4c3f05a5b34', class: "stepper-spacer" }), hAsync("div", { key: 'd4df0c16fb8466ba97327f5537a502cec54b0c74', class: "stepper" }, hAsync("nv-icon", { key: '9f4b2894a80c7161cfde76c8267c5a32081a4af4', name: "minus", size: "md", onClick: this.handleMinus, class: clsx({ disabled: this.isMinValueReached() }) }), hAsync("nv-icon", { key: '4a6e099ab3778386feeb22d72c67b020c2016f13', name: "plus", size: "md", onClick: this.handlePlus, class: clsx({ disabled: this.isMaxValueReached() }) }))), hAsync("slot", { key: 'd660082780a4cce2f78ec463cf68f4158f9f6b30', name: "after-input" })), (this.description ||
10261
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'e37f6ad4f0f8d63bd89ab81922e1e067e9effb82', class: "description" }, hAsync("slot", { key: 'd1afa3730549af3796556164f98a6e8187db7324', name: "description" }, this.description))), (this.errorDescription ||
10262
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '171305d54a0389e450b6ae27148267e3676eee5e', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: 'dfc8ea72d87c0ef8817ca28228e5c99a85c2fbf8', name: "error-description" }, this.errorDescription)))));
9565
10263
  }
9566
10264
  static get formAssociated() { return true; }
9567
10265
  get el() { return getElement(this); }
@@ -9612,67 +10310,6 @@ class NvFieldpassword {
9612
10310
  constructor(hostRef) {
9613
10311
  registerInstance(this, hostRef);
9614
10312
  this.valueChanged = createEvent(this, "valueChanged", 7);
9615
- /****************************************************************************/
9616
- //#region PROPERTIES
9617
- /**
9618
- * Sets the ID for the input element and the for attribute of the associated
9619
- * label. If no ID is provided, a random one will be automatically generated
9620
- * to ensure unique identification, facilitating proper label association and
9621
- * accessibility.
9622
- */
9623
- this.inputId = v4();
9624
- /**
9625
- * The disabled prop lets you turn off the input field so that users can’t
9626
- * type in it. When disabled, the field is grayed out and won’t respond to#
9627
- * clicks or touches.
9628
- */
9629
- this.disabled = false;
9630
- /**
9631
- * Display the input field’s content without allowing users to change it.
9632
- * Users can still click on it, select, and copy the text, but they won’t be
9633
- * able to type or delete anything.
9634
- */
9635
- this.readonly = false;
9636
- /**
9637
- * Marks the input field as required, ensuring that the user must fill it out
9638
- * before submitting the form.
9639
- */
9640
- this.required = false;
9641
- /**
9642
- * Alters the input field’s appearance to indicate an error, helping users
9643
- * identify fields that need correction.
9644
- * @validator error
9645
- */
9646
- this.error = false;
9647
- /**
9648
- * Changes the input field’s appearance to indicate successful input or
9649
- * validation.
9650
- */
9651
- this.success = false;
9652
- /**
9653
- * Defines the type of the input.
9654
- * @default 'text'
9655
- */
9656
- this.mode = 'text';
9657
- /**
9658
- * The autocomplete prop helps users fill out the input field faster by
9659
- * suggesting entries they’ve used before, like their email or address.
9660
- * You can turn it on to make forms more convenient or off to ensure users
9661
- * always type in fresh data.
9662
- */
9663
- this.autocomplete = 'off';
9664
- /**
9665
- * Hide the button to show/hide the password.
9666
- */
9667
- this.hidePasswordIcon = false;
9668
- /**
9669
- * Show/hide the password programmatically.
9670
- */
9671
- this.showPassword = false;
9672
- /**
9673
- * Defines whether the password is visible or not.
9674
- */
9675
- this.showPasswordState = this.showPassword;
9676
10313
  //#endregion EVENTS
9677
10314
  /****************************************************************************/
9678
10315
  //#region METHODS
@@ -9695,6 +10332,26 @@ class NvFieldpassword {
9695
10332
  this.value = input.value; // Update the input value without worrying about the space
9696
10333
  this.valueChanged.emit(input.value);
9697
10334
  };
10335
+ this.inputId = v4();
10336
+ this.label = undefined;
10337
+ this.description = undefined;
10338
+ this.placeholder = undefined;
10339
+ this.name = undefined;
10340
+ this.value = undefined;
10341
+ this.disabled = false;
10342
+ this.readonly = false;
10343
+ this.required = false;
10344
+ this.error = false;
10345
+ this.errorDescription = undefined;
10346
+ this.success = false;
10347
+ this.maxlength = undefined;
10348
+ this.minlength = undefined;
10349
+ this.pattern = undefined;
10350
+ this.mode = 'text';
10351
+ this.autocomplete = 'off';
10352
+ this.hidePasswordIcon = false;
10353
+ this.showPassword = false;
10354
+ this.showPasswordState = this.showPassword;
9698
10355
  }
9699
10356
  handleShowPasswordChange(newValue) {
9700
10357
  this.showPasswordState = newValue;
@@ -9703,9 +10360,9 @@ class NvFieldpassword {
9703
10360
  /****************************************************************************/
9704
10361
  //#region RENDER
9705
10362
  render() {
9706
- return (hAsync(Host, { key: '40f6d172ebe46636a4240e010cc1dd9eb9e90e79' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: 'dc7b47c5796cfc862e1dafbe6720fe725662dd2c', htmlFor: this.inputId }, hAsync("slot", { key: 'a5696e12f593408bb20b92e49c0c5a6b21fef9b1', name: "label" }, this.label))), hAsync("div", { key: 'a1856e68415b5685982e936588791d36c9188d29', class: "input-wrapper" }, hAsync("slot", { key: 'ee701f5efbc0f7dcdbfd8d8494eb660ed9081f80', name: "before-input" }), hAsync("div", { key: '3a2b900d7fadac36538d936cc6853fe855713f26', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: 'b59c93d7457f00ff7b7cb4fcd7caca927a197dc4', name: "leading-input" }), hAsync("input", { key: '67755bdf835476b8511083ba6e35ed5eca8868e5', id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, type: this.showPasswordState ? 'text' : 'password', inputMode: this.mode, value: this.value, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), !this.hidePasswordIcon && (hAsync("nv-iconbutton", { key: 'd9ffdbb9a4bd76d30c6adbb5ada4a989c6bdc092', class: "toggle-password-icon", name: this.showPasswordState ? 'eye' : 'eye-off', size: "md", emphasis: "lower", onClick: this.togglePasswordVisibility, onKeyDown: this.handleKeyDown, "aria-label": this.showPasswordState ? 'Hide password' : 'Show password', "aria-pressed": this.showPasswordState.toString() })), (this.success || this.error) && (hAsync("nv-icon", { key: '40b2376b0cf815998eede9c8917f1126cda51d28', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" }))), hAsync("slot", { key: '6ae6f802256ac343a232bb24f7b7ec7e21ee5dd0', name: "after-input" })), (this.description ||
9707
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'e08e5965bebe38262e5efd30f0ab3d3a905083ff', class: "description" }, hAsync("slot", { key: '8554c3620920efc3dd108b5e4f0e79dddc55c845', name: "description" }, this.description))), (this.errorDescription ||
9708
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: 'cf40170d0e1c8de40601b1ef2d3a8260a07cf7e9', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: 'e3b0ff01a8ffd569d2eb2c2e3a188cb6e53f0f6f', name: "error-description" }, this.errorDescription)))));
10363
+ return (hAsync(Host, { key: 'e33d3781acc832fe374732bc8c0164b965926439' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '27f03dc42fb2a251e669f3e807fd01eee003c2e7', htmlFor: this.inputId }, hAsync("slot", { key: '61d826d1cea9b5035d614503fc187c484252abff', name: "label" }, this.label))), hAsync("div", { key: 'f75cd0ec46d1c92396ff37f7122029b534e46954', class: "input-wrapper" }, hAsync("slot", { key: 'bd54dca65be1b841ed93e534f8738bf685d495a0', name: "before-input" }), hAsync("div", { key: '4e9a7c5aa765a110f655421bf6dad433e5327bd3', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: '8a6ba620bfe1e2b716f58fd544382f2f7d2b6aa2', name: "leading-input" }), hAsync("input", { key: '36c0f4b08067604f40cab2a807318f604786a610', id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, type: this.showPasswordState ? 'text' : 'password', inputMode: this.mode, value: this.value, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), !this.hidePasswordIcon && (hAsync("nv-iconbutton", { key: 'dd8cbe23483e3fcfa9ec4b790835cca031dc1d11', class: "toggle-password-icon", name: this.showPasswordState ? 'eye' : 'eye-off', size: "md", emphasis: "lower", onClick: this.togglePasswordVisibility, onKeyDown: this.handleKeyDown, "aria-label": this.showPasswordState ? 'Hide password' : 'Show password', "aria-pressed": this.showPasswordState.toString() })), (this.success || this.error) && (hAsync("nv-icon", { key: '9cccf9bdef256a36131208c40379e1a7c7109d03', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" }))), hAsync("slot", { key: 'ee5afcdd4ab13bbf79166f451208a62c3f868cab', name: "after-input" })), (this.description ||
10364
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '195a795c9b498ee6e03cf2ee9ec90c545cc29085', class: "description" }, hAsync("slot", { key: '5490e3158aeeec08e5fda0e2aaa8fdf7923b742a', name: "description" }, this.description))), (this.errorDescription ||
10365
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '97569ae30b6a0df6a11e687aabc16edd609f4e0b', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '144baf7c20ed3244bdce250a7eeed76a1b515b13', name: "error-description" }, this.errorDescription)))));
9709
10366
  }
9710
10367
  static get formAssociated() { return true; }
9711
10368
  get el() { return getElement(this); }
@@ -9756,35 +10413,17 @@ class NvFieldradio {
9756
10413
  constructor(hostRef) {
9757
10414
  registerInstance(this, hostRef);
9758
10415
  this.checkedChanged = createEvent(this, "checkedChanged", 7);
9759
- /**
9760
- * Set the label placement to before the input
9761
- * @deprecated use labelPlacement instead.
9762
- */
10416
+ this.message = undefined;
9763
10417
  this.labelBefore = false;
9764
- //#endregion DEPRECATED
9765
- /****************************************************************************/
9766
- //#region PROPERTIES
9767
- /**
9768
- * Sets the ID for the radio button’s input element and the for attribute of
9769
- * the associated label. If no ID is provided, a random one will be
9770
- * automatically generated to ensure unique identification, facilitating
9771
- * proper label association and accessibility.
9772
- */
9773
10418
  this.inputId = v4();
9774
- /**
9775
- * Highlight the radio button with error styling. It helps users quickly
9776
- * identify which option needs attention, improving their form-filling
9777
- * experience by making issues more visible.
9778
- * @validator error
9779
- */
10419
+ this.name = undefined;
10420
+ this.value = undefined;
10421
+ this.label = undefined;
10422
+ this.labelPlacement = undefined;
10423
+ this.description = undefined;
9780
10424
  this.error = false;
9781
- /**
9782
- * Controls whether the radio button is selected.
9783
- */
10425
+ this.errorDescription = undefined;
9784
10426
  this.checked = false;
9785
- /**
9786
- * Disables the radio button, making it un-selectable.
9787
- */
9788
10427
  this.disabled = false;
9789
10428
  }
9790
10429
  componentWillRender() {
@@ -9825,9 +10464,9 @@ class NvFieldradio {
9825
10464
  /****************************************************************************/
9826
10465
  //#region RENDER
9827
10466
  render() {
9828
- return (hAsync(Host, { key: '5c03f0c1423eb932aa9d2022e9d6a30bdbbb08ca', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, hAsync("input", { key: '3ffb0990423348725ded997c26b12b41f10a8f0d', type: "radio", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: this.checked, disabled: this.disabled }), hAsync("div", { key: 'f862a9040abe14402fa352006c1cdedaba81a1af', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '07269171f02fc8a9621d958b0997728162fda439', htmlFor: this.inputId }, hAsync("slot", { key: '5e66a1ac747ed1462e948c35b96cbca4e4c037b3', name: "label" }, this.label))), (this.description ||
9829
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'cfa36a9cd3958511abf407027ec9432addd7cc1a', class: "description" }, hAsync("slot", { key: '1e86daa3580d6f99091950acb1fda3eeeb742ad5', name: "description" }, this.description))), (this.errorDescription ||
9830
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: 'c1c1e7ecae6edc43b5a7793c180c0dd28fc09a67', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '51f217f3465720fd73371dcd420492b2cdf00802', name: "error-description" }, this.errorDescription))))));
10467
+ return (hAsync(Host, { key: '45884696429c5f9232102f1aee32bd1930085faf', class: clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, hAsync("input", { key: 'ef66e9c39bf0c9f1740b055e77a9bfefb3d6135c', type: "radio", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: this.checked, disabled: this.disabled }), hAsync("div", { key: '972f6f0a53bcfd1ee468195227397011b34f4ca8', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '8713b8a6433da65c8b84a323baebdc643ddd605a', htmlFor: this.inputId }, hAsync("slot", { key: 'bc1b2f7e682242d0da1be9e1c9d385e844568d62', name: "label" }, this.label))), (this.description ||
10468
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'c67519cdb09a9a5414a8d37b7013730e32efc700', class: "description" }, hAsync("slot", { key: '5058c3dea12bcb2d00cd55219f4a823d50e55c93', name: "description" }, this.description))), (this.errorDescription ||
10469
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: 'cb264c373040e87183e613bd3d434d3c661f47e7', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '91d8c2e24647ffbce8d6282a2fe1f2f366ef8712', name: "error-description" }, this.errorDescription))))));
9831
10470
  }
9832
10471
  static get formAssociated() { return true; }
9833
10472
  get el() { return getElement(this); }
@@ -9874,64 +10513,6 @@ class NvFieldselect {
9874
10513
  constructor(hostRef) {
9875
10514
  registerInstance(this, hostRef);
9876
10515
  this.valueChanged = createEvent(this, "valueChanged", 7);
9877
- /****************************************************************************/
9878
- //#region STATES
9879
- this.computedDisplayValue = '';
9880
- this.internalReadonly = false;
9881
- //#endregion DEPRECATED
9882
- /****************************************************************************/
9883
- //#region PROPERTIES
9884
- /**
9885
- * Sets the ID for the select element and the for attribute of the associated
9886
- * label. If no ID is provided, a random one will be automatically generated
9887
- * to ensure unique identification, facilitating proper label association and
9888
- * accessibility.
9889
- */
9890
- this.selectId = v4();
9891
- /**
9892
- * The disabled prop lets you turn off the select field so that users can’t
9893
- * choose something. When disabled, the field is grayed out and won’t respond to
9894
- * clicks or touches.
9895
- */
9896
- this.disabled = false;
9897
- /**
9898
- * Display the select field’s content without allowing users to change it.
9899
- * Users can still click on it, select, and copy the text, but they won’t be
9900
- * able to change or delete anything.
9901
- */
9902
- this.readonly = false;
9903
- /**
9904
- * Marks the select field as required, ensuring that the user must fill it out
9905
- * before submitting the form.
9906
- */
9907
- this.required = false;
9908
- /**
9909
- * Alters the select field’s appearance to indicate an error, helping users
9910
- * identify fields that need correction.
9911
- * @validator error
9912
- */
9913
- this.error = false;
9914
- /**
9915
- * Changes the select field’s appearance to indicate successful input or
9916
- * validation.
9917
- */
9918
- this.success = false;
9919
- /**
9920
- * When enabled, allows the select to handle multiple selections.
9921
- */
9922
- this.multiple = false;
9923
- /**
9924
- * The value of the select field.
9925
- * - If `multiple` is `false`, it's a single string.
9926
- * - If `multiple` is `true`, it's a comma-separated string of selected values.
9927
- */
9928
- this.value = '';
9929
- /**
9930
- * When enabled, displays the value element instead of the label when readonly.
9931
- * By default, the label is displayed in readonly mode. Also it automatically
9932
- * sets the component to readonly.
9933
- */
9934
- this.displayValue = false;
9935
10516
  //#endregion WATCHERS
9936
10517
  /****************************************************************************/
9937
10518
  //#region METHODS
@@ -9963,6 +10544,23 @@ class NvFieldselect {
9963
10544
  this.selectElement.focus();
9964
10545
  }
9965
10546
  };
10547
+ this.computedDisplayValue = '';
10548
+ this.internalReadonly = false;
10549
+ this.message = undefined;
10550
+ this.validation = undefined;
10551
+ this.selectId = v4();
10552
+ this.label = undefined;
10553
+ this.description = undefined;
10554
+ this.name = undefined;
10555
+ this.disabled = false;
10556
+ this.readonly = false;
10557
+ this.required = false;
10558
+ this.error = false;
10559
+ this.errorDescription = undefined;
10560
+ this.success = false;
10561
+ this.multiple = false;
10562
+ this.value = '';
10563
+ this.displayValue = false;
9966
10564
  }
9967
10565
  componentWillRender() {
9968
10566
  this.updateDisplayValue(); // Ensure display value is updated before render
@@ -10170,13 +10768,13 @@ class NvFieldselect {
10170
10768
  * @returns {HTMLStencilElement} The HTML element to render.
10171
10769
  */
10172
10770
  render() {
10173
- return (hAsync(Host, { key: 'e1333260c8fa6eebf9078f7497d2d0b30f555068' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '42d18737d174df03ac92c2cd178e372fed4bde1a', htmlFor: this.selectId }, hAsync("slot", { key: '675f7d4d5089bebb8104d848f1953445c79b584f', name: "label" }, this.label))), hAsync("div", { key: '59f13a05173ee15cffa6afca296da0333568cea4', class: "select-wrapper" }, hAsync("slot", { key: '1c2fe2ec6e84b95a47dc4c2668afd5d0ea899aee', name: "before-input" }), hAsync("div", { key: 'f6bd0c186ac6fa781e52329fc8a4622b740066f2', class: "select-container", onClick: this.handleSelectContainerClick }, hAsync("slot", { key: 'fbf25811a89197b11a4d4ea6dd1020b44fd14f73', name: "leading-input" }), this.internalReadonly && (hAsync("input", { key: 'c05413ddedb713944ad7f128a866d761e38080c6', id: this.selectId + '-readonly', type: "text", value: this.computedDisplayValue, readOnly: true, class: "readonly-input", "aria-readonly": "true", "aria-label": this.label, "aria-describedby": this.error
10771
+ return (hAsync(Host, { key: '067e8fb039aae38ff68121c7c3d7bd677ff9a48c' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: 'ea707a112dcec12aa943e1ee477d8a9d03181312', htmlFor: this.selectId }, hAsync("slot", { key: '2ea8b094bad2b1783ebcf1e588cc74993885ecad', name: "label" }, this.label))), hAsync("div", { key: '2fe99ccec826acc0f7a3e06799f7375a470f70a6', class: "select-wrapper" }, hAsync("slot", { key: '8fe8e4a2037f5d9e0cd6f54ff04cc39b35bcf352', name: "before-input" }), hAsync("div", { key: 'b1464e7fbb698e6b36fb71f13b18554626991fcd', class: "select-container", onClick: this.handleSelectContainerClick }, hAsync("slot", { key: 'bf1d7391ecb23d07f43fbbfb84bb1265fc39f715', name: "leading-input" }), this.internalReadonly && (hAsync("input", { key: 'a9a2b66e21e1b0b9fe61c72451d408bb097628ac', id: this.selectId + '-readonly', type: "text", value: this.computedDisplayValue, readOnly: true, class: "readonly-input", "aria-readonly": "true", "aria-label": this.label, "aria-describedby": this.error
10174
10772
  ? `${this.selectId}-error`
10175
- : `${this.selectId}-description` })), hAsync("select", { key: '6bd95875e397c69c0297fe0c3bc9703c7872f477', id: this.selectId, ref: el => (this.selectElement = el), name: this.name, disabled: this.disabled, required: this.required, multiple: this.multiple, onChange: this.handleSelectChange, class: this.internalReadonly ? 'hidden' : '', "aria-label": this.label, "aria-describedby": this.error
10773
+ : `${this.selectId}-description` })), hAsync("select", { key: 'b485933c80bfdacc6711218f7f70ac49073fb80c', id: this.selectId, ref: el => (this.selectElement = el), name: this.name, disabled: this.disabled, required: this.required, multiple: this.multiple, onChange: this.handleSelectChange, class: this.internalReadonly ? 'hidden' : '', "aria-label": this.label, "aria-describedby": this.error
10176
10774
  ? `${this.selectId}-error`
10177
- : `${this.selectId}-description` }, hAsync("slot", { key: '22798124b2b743ee1b8ffc22f4e8fffc6704be66' })), this.internalReadonly && (hAsync("nv-icon", { key: '6fb4193bf131fce928d0e5d0346eb7fe62fcf77e', name: "chevron-down", class: "readonly-icon", size: "sm" })), this.error && (hAsync("nv-icon", { key: '4a84c2b8eece45c6247c7c58f74696fbc5b8ff4c', name: "alert-circle", class: "validation", size: "sm" })), this.success && (hAsync("nv-icon", { key: '84af6db55127c516538f0df4d19f09f4570800f4', name: "circle-check", class: "validation", size: "sm" }))), hAsync("slot", { key: '11dd18fc96e0360ac62b80d3d295895051a914d1', name: "after-input" })), (this.description ||
10178
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '142d57ab7ba7aaef8ae0929b94716d37dd151e1c', class: "description", id: `${this.selectId}-description` }, hAsync("slot", { key: '0ce2c8c5bfa0966b1017cfea79461df6630773b4', name: "description" }, this.description))), (this.errorDescription ||
10179
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: 'a06402c222f5f377ef314c66317c98df4b72e4b0', class: "error-description", id: `${this.selectId}-error` }, hAsync("slot", { key: '0d9e63fd9b8fa53a4ea037e5cb720a42206ee49d', name: "error-description" }, this.errorDescription)))));
10775
+ : `${this.selectId}-description` }, hAsync("slot", { key: '71d627ccb58ea5af2c411307ee53fd52e0fce6a9' })), this.internalReadonly && (hAsync("nv-icon", { key: 'b14356aa40948fc083bb9741e55d83e002c4ef3a', name: "chevron-down", class: "readonly-icon", size: "sm" })), this.error && (hAsync("nv-icon", { key: '79cd6e53e7b6448489c51f40c46498a9549b5220', name: "alert-circle", class: "validation", size: "sm" })), this.success && (hAsync("nv-icon", { key: '41af1b3709fb5441dfb3dfc5dce309e2b6660298', name: "circle-check", class: "validation", size: "sm" }))), hAsync("slot", { key: '30613a1d3af2954ef689991fca82c8b213f238d8', name: "after-input" })), (this.description ||
10776
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '0aaced12d0368e36251512f56592f57dd4f0e846', class: "description", id: `${this.selectId}-description` }, hAsync("slot", { key: '502c52ed64f90e79c7c3b7e9bb5555e21073adfd', name: "description" }, this.description))), (this.errorDescription ||
10777
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '350ecf381d1f466d5c93e19ba2c8609b1d3e5713', class: "error-description", id: `${this.selectId}-error` }, hAsync("slot", { key: '871693ad30b041ac0ddac4f79cf6fdec35dcebaa', name: "error-description" }, this.errorDescription)))));
10180
10778
  }
10181
10779
  static get formAssociated() { return true; }
10182
10780
  get el() { return getElement(this); }
@@ -10229,57 +10827,6 @@ class NvFieldtext {
10229
10827
  constructor(hostRef) {
10230
10828
  registerInstance(this, hostRef);
10231
10829
  this.valueChanged = createEvent(this, "valueChanged", 7);
10232
- //#endregion DEPRECATED
10233
- /****************************************************************************/
10234
- //#region PROPERTIES
10235
- /**
10236
- * Sets the ID for the input element and the for attribute of the associated
10237
- * label. If no ID is provided, a random one will be automatically generated
10238
- * to ensure unique identification, facilitating proper label association and
10239
- * accessibility.
10240
- */
10241
- this.inputId = v4();
10242
- /**
10243
- * The type prop lets you specify what kind of information the input field
10244
- * should accept. Choose 'text' for general words or sentences, 'tel' for
10245
- * phone numbers, or 'email' for email addresses. This makes sure users get
10246
- * the right keyboard and validation for what they need to enter.
10247
- */
10248
- this.type = 'text';
10249
- /**
10250
- * The disabled prop lets you turn off the input field so that users can’t
10251
- * type in it. When disabled, the field is grayed out and won’t respond to
10252
- * clicks or touches.
10253
- */
10254
- this.disabled = false;
10255
- /**
10256
- * Display the input field’s content without allowing users to change it.
10257
- * Users can still click on it, select, and copy the text, but they won’t be
10258
- * able to type or delete anything.
10259
- */
10260
- this.readonly = false;
10261
- /**
10262
- * Marks the input field as required, ensuring that the user must fill it out
10263
- * before submitting the form.
10264
- */
10265
- this.required = false;
10266
- /**
10267
- * Alters the input field’s appearance to indicate an error, helping users
10268
- * identify fields that need correction.
10269
- * @validator error
10270
- */
10271
- this.error = false;
10272
- /**
10273
- * Changes the input field’s appearance to indicate successful input or
10274
- * validation.
10275
- */
10276
- this.success = false;
10277
- /**
10278
- * When used with the email input type, this prop enables the field to accept
10279
- * multiple email addresses. Users can enter several addresses, separating
10280
- * each one with a comma, allowing the form to handle multiple recipients.
10281
- */
10282
- this.multiple = false;
10283
10830
  //#endregion EVENTS
10284
10831
  /****************************************************************************/
10285
10832
  //#region METHODS
@@ -10299,6 +10846,27 @@ class NvFieldtext {
10299
10846
  this.handleInputContainerClick = () => {
10300
10847
  this.inputElement.focus();
10301
10848
  };
10849
+ this.message = undefined;
10850
+ this.validation = undefined;
10851
+ this.textInputType = undefined;
10852
+ this.inputId = v4();
10853
+ this.label = undefined;
10854
+ this.description = undefined;
10855
+ this.placeholder = undefined;
10856
+ this.name = undefined;
10857
+ this.value = undefined;
10858
+ this.type = 'text';
10859
+ this.disabled = false;
10860
+ this.readonly = false;
10861
+ this.required = false;
10862
+ this.error = false;
10863
+ this.errorDescription = undefined;
10864
+ this.success = false;
10865
+ this.maxlength = undefined;
10866
+ this.minlength = undefined;
10867
+ this.pattern = undefined;
10868
+ this.autocomplete = undefined;
10869
+ this.multiple = false;
10302
10870
  }
10303
10871
  componentWillRender() {
10304
10872
  if (this.textInputType) {
@@ -10316,9 +10884,9 @@ class NvFieldtext {
10316
10884
  /****************************************************************************/
10317
10885
  //#region RENDER
10318
10886
  render() {
10319
- return (hAsync(Host, { key: '8c9c791ef7164a3d1dc248242ced345652fae05d' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '8e768c2299d48e0ec4f2f4052503b38ec07367e9', htmlFor: this.inputId }, hAsync("slot", { key: '316e1beffe5534bd1386c9a85818a4fc134de595', name: "label" }, this.label))), hAsync("div", { key: '9a52ffcbcf9ef514c108c0f64ab09b0f1c70f80b', class: "input-wrapper" }, hAsync("slot", { key: 'bcb5d42ea25518e7d4408f6044ec70343476bd80', name: "before-input" }), hAsync("div", { key: '478c7770b2d00c7a0a4182cc4e23b426d74924b9', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: '0b9538c630b6d1e27b439c54e47c31c39cce6001', name: "leading-input" }), hAsync("input", { key: '3a3ccf0c9fb16ef47f1c143c4d54a73e400e2b29', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: this.type, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, autocomplete: this.autocomplete, multiple: this.multiple, value: this.value, onInput: this.handleInput }), this.error && (hAsync("nv-icon", { key: 'cd45c694b5480e3ee92d58ac05e51c97a1dd12f6', name: "alert-circle", class: "validation", size: "sm" })), this.success && (hAsync("nv-icon", { key: '6fca533bbceb8c4f4f9ed7dbcd9373df54d8496d', name: "circle-check", class: "validation", size: "sm" }))), hAsync("slot", { key: '0ee33ded353265eeed3253b5c9f039b739508a82', name: "after-input" })), (this.description ||
10320
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '12bd5f917245feb4562dd8903c157429ef72dae9', class: "description" }, hAsync("slot", { key: '37894343aa3ad21d37dc93f47a27723fdc7cc89a', name: "description" }, this.description))), (this.errorDescription ||
10321
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '04253d575a1c987f48a95e32c41a38e0fe10c3a4', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '2db01455b977c68638271427283d95b811f41d54', name: "error-description" }, this.errorDescription)))));
10887
+ return (hAsync(Host, { key: 'fea5a10f2f7a5144441333352a31d9f8b33e587a' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '96693bf825c79d480d7cc282aed3f71ae6e02018', htmlFor: this.inputId }, hAsync("slot", { key: '0948a3ee30db864bc7aa791c98d5288d0d83dbf8', name: "label" }, this.label))), hAsync("div", { key: 'a4b3a6ebce307ae33141f9af58d5673da51ceb0a', class: "input-wrapper" }, hAsync("slot", { key: '2c37613f69908cbbd5904cd036a32a60cd208ea7', name: "before-input" }), hAsync("div", { key: '2c0d2bb111c24642d2a4187a40ce33bf0cf9ae6f', class: "input-container", onClick: this.handleInputContainerClick }, hAsync("slot", { key: 'eac9c83a80d5634220578c843c314d45fc76e387', name: "leading-input" }), hAsync("input", { key: 'f5d6f6727ce6e930870ec453c029290d99c648e5', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: this.type, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, autocomplete: this.autocomplete, multiple: this.multiple, value: this.value, onInput: this.handleInput }), this.error && (hAsync("nv-icon", { key: '6cb3f531c998563acfaed207804c8eb76b2636ab', name: "alert-circle", class: "validation", size: "sm" })), this.success && (hAsync("nv-icon", { key: '4e8605db4947208eeb6264206980d876824e81f2', name: "circle-check", class: "validation", size: "sm" }))), hAsync("slot", { key: '568578fbdd6c1c4d1682dea2bf2e8b28698b8fe5', name: "after-input" })), (this.description ||
10888
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '2e742e69c44d5f7d2d03db6511c25386bc3bb4c7', class: "description" }, hAsync("slot", { key: '196020366f8b06a3b74508b633cc076e5252e754', name: "description" }, this.description))), (this.errorDescription ||
10889
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '55d162f9ac2a4767c9e65031a638db6fd9387cea', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '724b2782e068b0acca707671452da63f2bb525a0', name: "error-description" }, this.errorDescription)))));
10322
10890
  }
10323
10891
  static get formAssociated() { return true; }
10324
10892
  get el() { return getElement(this); }
@@ -10367,63 +10935,6 @@ class NvFieldtextarea {
10367
10935
  constructor(hostRef) {
10368
10936
  registerInstance(this, hostRef);
10369
10937
  this.valueChanged = createEvent(this, "valueChanged", 7);
10370
- //#endregion DEPRECATED
10371
- /****************************************************************************/
10372
- //#region PROPERTIES
10373
- /**
10374
- * Sets the ID for the textarea element and the for attribute of the associated
10375
- * label. If no ID is provided, a random one will be automatically generated
10376
- * to ensure unique identification, facilitating proper label association and
10377
- * accessibility.
10378
- */
10379
- this.textareaId = v4();
10380
- /**
10381
- * The disabled prop lets you turn off the textarea field so that users can’t
10382
- * type in it. When disabled, the field is grayed out and won’t respond to#
10383
- * clicks or touches.
10384
- */
10385
- this.disabled = false;
10386
- /**
10387
- * Display the textarea field’s content without allowing users to change it.
10388
- * Users can still click on it, select, and copy the text, but they won’t be
10389
- * able to type or delete anything.
10390
- */
10391
- this.readonly = false;
10392
- /**
10393
- * Marks the textarea field as required, ensuring that the user must fill it out
10394
- * before submitting the form.
10395
- */
10396
- this.required = false;
10397
- /**
10398
- * Alters the textarea field’s appearance to indicate an error, helping users
10399
- * identify fields that need correction.
10400
- * @validator error
10401
- */
10402
- this.error = false;
10403
- /**
10404
- * Changes the textarea field’s appearance to indicate successful textarea or
10405
- * validation.
10406
- */
10407
- this.success = false;
10408
- /**
10409
- * The number of visible text lines for the control. The default is 3. This
10410
- * can be useful when you want to limit the size of the textarea field or when
10411
- * you want to make the textarea field smaller to fit a specific layout. The
10412
- * textarea field will expand vertically to fit the text as the user types.
10413
- */
10414
- this.rows = 3;
10415
- /**
10416
- * Controls the resize property of a textarea. It can be set to none, both,
10417
- * horizontal, or vertical. The default is vertical.
10418
- */
10419
- this.resize = 'vertical';
10420
- /**
10421
- * Enable this to make the textarea automatically resize as the user types,
10422
- * adjusting the height to fit the content. For the best experience, avoid
10423
- * vertical resizing, as it’s controlled by this feature. Horizontal resizing
10424
- * can still be allowed if desired.
10425
- */
10426
- this.autosize = false;
10427
10938
  //#endregion WATCHERS
10428
10939
  /****************************************************************************/
10429
10940
  //#region METHODS
@@ -10438,6 +10949,25 @@ class NvFieldtextarea {
10438
10949
  this.handleTextareaContainerClick = () => {
10439
10950
  this.textareaElement.focus();
10440
10951
  };
10952
+ this.message = undefined;
10953
+ this.validation = undefined;
10954
+ this.textareaId = v4();
10955
+ this.label = undefined;
10956
+ this.description = undefined;
10957
+ this.placeholder = undefined;
10958
+ this.name = undefined;
10959
+ this.value = undefined;
10960
+ this.disabled = false;
10961
+ this.readonly = false;
10962
+ this.required = false;
10963
+ this.error = false;
10964
+ this.errorDescription = undefined;
10965
+ this.success = false;
10966
+ this.maxlength = undefined;
10967
+ this.minlength = undefined;
10968
+ this.rows = 3;
10969
+ this.resize = 'vertical';
10970
+ this.autosize = false;
10441
10971
  }
10442
10972
  componentWillRender() {
10443
10973
  if (this.message) {
@@ -10525,9 +11055,9 @@ class NvFieldtextarea {
10525
11055
  /****************************************************************************/
10526
11056
  //#region RENDER
10527
11057
  render() {
10528
- return (hAsync(Host, { key: 'f5b311b7b6ce4ad9d6ff0a63103018a065d8ff66' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '377483fb782672a29a9a9b3824e102587eb166b1', htmlFor: this.textareaId }, hAsync("slot", { key: '2705fb3d2736caef5b289fb3338790e62d758d56', name: "label" }, this.label))), hAsync("div", { key: '49d270fed9367b58eb1197a9e91d86c36cee90a8', class: "textarea-wrapper" }, hAsync("div", { key: '28e591c39cff80eeb5fa6105bafa2423f02b8da9', class: "textarea-container", onClick: this.handleTextareaContainerClick }, hAsync("textarea", { key: '0dc54edc1a23221287810ecff5b51c7b91fe2b7b', id: this.textareaId, ref: e => (this.textareaElement = e), placeholder: this.placeholder, name: this.name, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, autocomplete: "off", value: this.value, onInput: this.handleTextarea, rows: this.rows, class: clsx(this.getResize()) }))), (this.description ||
10529
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '32f6d57c4c3fa1fb937c8b92ef630280bc4238e1', class: "description" }, hAsync("slot", { key: '1896e7a524753172cdeb19aa21fc83afd394c1a7', name: "description" }, this.description))), (this.errorDescription ||
10530
- this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '94757defcafe57f7074871f81987a2733f509f88', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '561620515caa5c115c9bd8bb9139bf7fa29e22fb', name: "error-description" }, this.errorDescription)))));
11058
+ return (hAsync(Host, { key: '4c044ab568a758eda425570b32f4e62ac52fd0bd' }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: 'b4ff190b325fe5bcb21692d9826edff006609a06', htmlFor: this.textareaId }, hAsync("slot", { key: '8d72187a69b9deb1d522ae0db6723280e953669d', name: "label" }, this.label))), hAsync("div", { key: 'e3b749368b69e5b5cbd5c58a5466d454711dc2d4', class: "textarea-wrapper" }, hAsync("div", { key: 'b2ab561a64505f9602e1c89a8ccf67087f4bc5f7', class: "textarea-container", onClick: this.handleTextareaContainerClick }, hAsync("textarea", { key: 'aed794ee9e228e14d7ccb1baecdbb7468b1d09e1', id: this.textareaId, ref: e => (this.textareaElement = e), placeholder: this.placeholder, name: this.name, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, autocomplete: "off", value: this.value, onInput: this.handleTextarea, rows: this.rows, class: clsx(this.getResize()) }))), (this.description ||
11059
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'd64a625c2b645d200248b21f84b29061ac88fd77', class: "description" }, hAsync("slot", { key: 'eeb16d8bdb97aa59d55e4189eba6021fc8da9bf8', name: "description" }, this.description))), (this.errorDescription ||
11060
+ this.el.querySelector('[slot="error-description"]')) && (hAsync("div", { key: '28c2378effdb7974df58d6be858f39aebf1841b8', hidden: !this.error, class: "error-description" }, hAsync("slot", { key: '8c3fa44d50353b8e3cf124483fd63896c39a89fb', name: "error-description" }, this.errorDescription)))));
10531
11061
  }
10532
11062
  static get formAssociated() { return true; }
10533
11063
  get el() { return getElement(this); }
@@ -10577,28 +11107,15 @@ class NvFieldtoggle {
10577
11107
  constructor(hostRef) {
10578
11108
  registerInstance(this, hostRef);
10579
11109
  this.checkedChanged = createEvent(this, "checkedChanged", 7);
10580
- /****************************************************************************/
10581
- //#region PROPERTIES
10582
- /**
10583
- * Sets the ID for the radio button’s input element and the for attribute of
10584
- * the associated label. If no ID is provided, a random one will be
10585
- * automatically generated to ensure unique identification, facilitating
10586
- * proper label association and accessibility.
10587
- */
10588
11110
  this.inputId = v4();
10589
- /**
10590
- * Hides the label visually while still keeping it available for screen
10591
- * readers.
10592
- */
11111
+ this.name = undefined;
11112
+ this.value = undefined;
11113
+ this.label = undefined;
11114
+ this.labelPlacement = undefined;
10593
11115
  this.hideLabel = false;
10594
- /** Indicates whether the toggle is checked or not. */
11116
+ this.description = undefined;
10595
11117
  this.checked = false;
10596
- /** Disables the toggle, preventing user interaction. */
10597
11118
  this.disabled = false;
10598
- /**
10599
- * Sets the toggle to read-only, preventing user changes but still allowing
10600
- * focus and selection of text.
10601
- */
10602
11119
  this.readonly = false;
10603
11120
  }
10604
11121
  //#endregion EVENTS
@@ -10630,8 +11147,8 @@ class NvFieldtoggle {
10630
11147
  /****************************************************************************/
10631
11148
  //#region RENDER
10632
11149
  render() {
10633
- return (hAsync(Host, { key: '18603a99c814b19f77a3e78f4a7dd3960bdc0841', class: clsx(this.labelPlacement === 'before' && 'label-placement-before') }, hAsync("div", { key: '3fb419bde30424ee2abdb63d75ef8ef3c78754c8', class: "input-container" }, hAsync("input", { key: '2c6d98d5c1e05bb33832c48fbe4b2e68f133a70f', 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 })), hAsync("div", { key: 'cc81c4e259750d75fb4e799365da64cedb71304c', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '44177bd0153a833d5b5ef7a4e2e1d6dedfea3c91', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: '05719cf662559b26b3074e4b9bd67ed908e4c9bf', name: "label" }, this.label))), (this.description ||
10634
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'db2e5122431af687ce42c85476bb38bca868ee26', class: "description" }, hAsync("slot", { key: '68256d968071f13d7441b1801d17162b91021a8b', name: "description" }, this.description))))));
11150
+ return (hAsync(Host, { key: '9dd7235a2967fd24e60fb5989c84b2be30ff19dc', class: clsx(this.labelPlacement === 'before' && 'label-placement-before') }, hAsync("div", { key: 'b32928b8385c42117ab91e58d55274bfc20d9338', class: "input-container" }, hAsync("input", { key: '03117b5baaece28cbc0ab830e36021801516b008', 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 })), hAsync("div", { key: 'b4224a117f2cc056f66006ba2af09c59670ac886', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '6e3538e9f9b78ce3b22e77deca8edff11e897ad3', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: '33ba20eab20bdc5d91c5aba1d9c5a417ef057872', name: "label" }, this.label))), (this.description ||
11151
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'd5a04053715549f6beb3153d3ebc90316f84838d', class: "description" }, hAsync("slot", { key: '784d242b1e1b0d53a414bae40339e1ae026240f3', name: "description" }, this.description))))));
10635
11152
  }
10636
11153
  get el() { return getElement(this); }
10637
11154
  static get watchers() { return {
@@ -10667,10 +11184,15 @@ var NvIconStyle0 = nvIconCss;
10667
11184
  class NvIcon {
10668
11185
  constructor(hostRef) {
10669
11186
  registerInstance(this, hostRef);
10670
- /**
10671
- * Adjust the size of the icon to fit your design needs.
10672
- */
11187
+ this.xsmall = undefined;
11188
+ this.small = undefined;
11189
+ this.medium = undefined;
11190
+ this.large = undefined;
11191
+ this.xlarge = undefined;
11192
+ this.color = undefined;
11193
+ this.name = undefined;
10673
11194
  this.size = SemanticSizes.Medium;
11195
+ this.spriteUrl = undefined;
10674
11196
  }
10675
11197
  componentWillRender() {
10676
11198
  if (this.xsmall) {
@@ -10704,7 +11226,7 @@ class NvIcon {
10704
11226
  //#region RENDER
10705
11227
  render() {
10706
11228
  //const iconSprite = getAssetPath('assets/icon-sprite.svg');
10707
- return (hAsync(Host, { key: '1862efaf5cb956c36b1dad264518f7eb37a10c34', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, hAsync("svg", { key: '7beb3a4697c73a42e28b8d59128cea93978ba282', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, hAsync("use", { key: '50e901a1dc92fb8ada8489e9be15c1bf069df5e6', href: `${this.spriteUrl}#${this.name}` }))));
11229
+ return (hAsync(Host, { key: '0dc158bd1c3036ad6f44a2ab73a81747b0e76962', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, hAsync("svg", { key: 'a27d0fc2a904cf7868b0940e04619e8bbebb2000', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, hAsync("use", { key: '0c4dbd3406f3b3d1e6804f611b08703af8b1e350', href: `${this.spriteUrl}#${this.name}` }))));
10708
11230
  }
10709
11231
  static get style() { return NvIconStyle0; }
10710
11232
  static get cmpMeta() { return {
@@ -10743,47 +11265,6 @@ class NvIconbutton {
10743
11265
  this.internals = hostRef.$hostElement$.attachInternals();
10744
11266
  hostRef.$hostElement$["s-ei"] = this.internals;
10745
11267
  }
10746
- /****************************************************************************/
10747
- //#region PROPERTIES
10748
- /**
10749
- * Determines how large or small the button appears, allowing for
10750
- * customization of the button's dimensions to fit different design
10751
- * specifications and user needs.
10752
- */
10753
- this.size = 'md';
10754
- /**
10755
- * Adjusts the button’s emphasis to make it more or less visually prominent
10756
- * to users. Use this to draw attention to important actions or reduce focus
10757
- * on less critical ones.
10758
- */
10759
- this.emphasis = 'high';
10760
- /**
10761
- * Set this to true to show a spinner on the button, letting users know that
10762
- * their action is being processed. It helps improve user experience by
10763
- * indicating ongoing activities. The icon is not displayed when the button
10764
- * is loading. Also, the button is disabled. If you want to disable the
10765
- * button, it is not possible. It is automatically disabled when loading.
10766
- */
10767
- this.loading = false;
10768
- /**
10769
- * Disables the button, preventing user interaction.
10770
- */
10771
- this.disabled = false;
10772
- /**
10773
- * Makes the button look active when it’s within a compatible component
10774
- * like a button group.
10775
- */
10776
- this.active = false;
10777
- /**
10778
- * Sets the button type to control its function in forms. Use 'submit' to send
10779
- * form data, 'reset' to clear the form, or 'button' for a standard button
10780
- * that doesn’t interact with form submission by default.
10781
- */
10782
- this.type = 'button';
10783
- /**
10784
- * Sets the shape of the button. Choose between square and rounded.
10785
- */
10786
- this.shape = 'square';
10787
11268
  //#endregion PROPERTIES
10788
11269
  /****************************************************************************/
10789
11270
  //#region METHODS
@@ -10806,6 +11287,14 @@ class NvIconbutton {
10806
11287
  (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
10807
11288
  }
10808
11289
  };
11290
+ this.size = 'md';
11291
+ this.emphasis = 'high';
11292
+ this.loading = false;
11293
+ this.disabled = false;
11294
+ this.active = false;
11295
+ this.name = undefined;
11296
+ this.type = 'button';
11297
+ this.shape = 'square';
10809
11298
  }
10810
11299
  //#endregion METHODS
10811
11300
  /****************************************************************************/
@@ -10834,7 +11323,7 @@ class NvIconbutton {
10834
11323
  /****************************************************************************/
10835
11324
  //#region RENDER
10836
11325
  render() {
10837
- return (hAsync(Host, { key: '7d785e95270a8ebcf303a345a887005774295ee6', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && hAsync("nv-loader", { key: '028836989901ce6f625f325d368c661b31477e62', size: this.size }), !this.loading && hAsync("nv-icon", { key: '5184638cc9dd4550c65eca5b2492806e5e77e43e', name: this.name, size: this.size }), hAsync("slot", { key: '36ab315cb2ac6741c4debb5bfa84eb2e05e3abc8' })));
11326
+ return (hAsync(Host, { key: '5c4107ececbf6252efbf033882481c793aebfadb', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && hAsync("nv-loader", { key: 'd9ba86fb063f9bf3d6d6d95949222fcd4bf07da5', size: this.size }), !this.loading && hAsync("nv-icon", { key: '4fc7acc39c5dbb5bb668445f6427a28f767d8a0b', name: this.name, size: this.size }), hAsync("slot", { key: '21b8444e3e4f4d5f0f4b9b12f7edc2d6ec48ea80' })));
10838
11327
  }
10839
11328
  static get formAssociated() { return true; }
10840
11329
  get el() { return getElement(this); }
@@ -10868,21 +11357,15 @@ var NvLoaderStyle0 = nvLoaderCss;
10868
11357
  class NvLoader {
10869
11358
  constructor(hostRef) {
10870
11359
  registerInstance(this, hostRef);
10871
- /****************************************************************************/
10872
- //#region PROPERTIES
10873
- /**
10874
- * Choose the size of the loader to best fit your application’s needs, whether
10875
- * it’s a small spinner for subtle loading indicators or a large one for more
10876
- * prominent displays.
10877
- */
10878
11360
  this.size = 'md';
11361
+ this.color = undefined;
10879
11362
  }
10880
11363
  //#endregion PROPERTIES
10881
11364
  /****************************************************************************/
10882
11365
  //#region RENDER
10883
11366
  /* <slot> empty to force rendering change */
10884
11367
  render() {
10885
- return (hAsync(Host, { key: '9d70fed6bfe41c8e1a87bd7eb2d83a1bb6af69ab', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
11368
+ return (hAsync(Host, { key: '442187ad4ad5deaa2880a67c9fddf2b2e38d517d', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
10886
11369
  }
10887
11370
  static get style() { return NvLoaderStyle0; }
10888
11371
  static get cmpMeta() { return {
@@ -10911,28 +11394,9 @@ class NvMenu {
10911
11394
  this.menuitemSelected = createEvent(this, "menuitemSelected", 7);
10912
11395
  this.isHandlingKeyDown = false;
10913
11396
  this.isHandlingClick = false;
10914
- /****************************************************************************/
10915
- //#region PROPERTIES
10916
- /**
10917
- * Use this to toggle the initial visibility of the menu, by default the menu
10918
- * is hidden.
10919
- */
10920
11397
  this.open = false;
10921
- /**
10922
- * Use this if the menu is nested inside another menu. This will prevent the
10923
- * parent menu from closing when the child menu is opened.
10924
- */
10925
11398
  this.nested = false;
10926
- /**
10927
- * Use this to disable the menu from closing automatically when a menu item is
10928
- * selected.
10929
- */
10930
11399
  this.disableCloseOnSelect = false;
10931
- /**
10932
- * Decides where the menu shows up next to the button it’s linked to (above,
10933
- * below, to the sides). If there isn’t enough room, it will adjust its
10934
- * position on the axis to fit on the screen, so users can always see it.
10935
- */
10936
11400
  this.placement = this.nested ? 'right-start' : 'bottom-end';
10937
11401
  }
10938
11402
  //#endregion PROPERTIES
@@ -11095,7 +11559,7 @@ class NvMenu {
11095
11559
  /****************************************************************************/
11096
11560
  //#region RENDER
11097
11561
  render() {
11098
- return (hAsync(Host, { key: '23fdff061d4aa8364590e2486c60b26684400a34' }, hAsync("slot", { key: '50ff6d6a5b84ad83a9b9deefed42335e663c989d', name: "trigger" }), hAsync("nv-popover", { key: 'ee15458289098254b7074452b2c25a32a7e82b3e', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, hAsync("slot", { key: 'bccea8f6469c29bad2e764c6628b6a783890d10d', name: "content" }))));
11562
+ return (hAsync(Host, { key: 'cc0abb7b96dd16348e420a0d8f3d827fdeba3ec0' }, hAsync("slot", { key: '3240929357957f52cda4ab3ee04ef954db6f1425', name: "trigger" }), hAsync("nv-popover", { key: '3fe10536df9e606fbc69cadc0ec4023c7ee3ae75', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, hAsync("slot", { key: '66ea7310d3b2e27288fa440dbb96f56885c88964', name: "content" }))));
11099
11563
  }
11100
11564
  get el() { return getElement(this); }
11101
11565
  static get style() { return NvMenuStyle0; }
@@ -11125,13 +11589,9 @@ var NvMenuitemStyle0 = nvMenuitemCss;
11125
11589
  class NvMenuitem {
11126
11590
  constructor(hostRef) {
11127
11591
  registerInstance(this, hostRef);
11128
- /**
11129
- * Disables the item, preventing user interaction.
11130
- */
11592
+ this.icon = undefined;
11131
11593
  this.disabled = false;
11132
- /**
11133
- * If the menu item has a submenu, the a caret icon will be displayed.
11134
- */
11594
+ this.shortcut = undefined;
11135
11595
  this.hasSubmenu = false;
11136
11596
  }
11137
11597
  //#endregion PROPERTIES
@@ -13246,53 +13706,6 @@ class NvPopover {
13246
13706
  constructor(hostRef) {
13247
13707
  registerInstance(this, hostRef);
13248
13708
  this.openChanged = createEvent(this, "openChanged", 7);
13249
- /**
13250
- * Use this prop to toggle the visibility of the popover. Set to true to show
13251
- * the popover and false to hide it.
13252
- */
13253
- this.open = false;
13254
- /**
13255
- * Sets the interaction mode for triggering the popover. Options include:
13256
- * - `hover`: The popover is shown on trigger hover.
13257
- * - `click`: The popover toggles on trigger click.
13258
- * - `controlled`: The visibility is managed manually through methods or the
13259
- * open prop.
13260
- */
13261
- this.triggerMode = 'click';
13262
- /**
13263
- * Defines where the popover appears relative to the trigger.
13264
- */
13265
- this.placement = 'bottom';
13266
- /**
13267
- * Adjust the gap between the popover and its trigger element by setting how
13268
- * many pixels they should be apart.
13269
- */
13270
- this.offset = 12;
13271
- /**
13272
- * Use this to decide if the popover should include a small arrow pointing to
13273
- * the trigger element, making the connection between them more clear.
13274
- */
13275
- this.hasArrow = false;
13276
- /**
13277
- * Disables the automatic flipping of the popover when the trigger element is
13278
- * out of the viewport. The popover will flip automatically by default.
13279
- */
13280
- this.disableFlip = false;
13281
- /**
13282
- * Sets how many pixels the popover should stay from the edge of the viewport.
13283
- */
13284
- this.shiftPadding = 16;
13285
- /**
13286
- * Use this to set a delay before the popover appears on hover. If the mouse
13287
- * leaves before this time, the popover won’t show. This only works when the
13288
- * trigger mode is set to `hover`.
13289
- */
13290
- this.enterDelay = 0;
13291
- /**
13292
- * Use this to set the popover to be nested inside another popover. This will
13293
- * prevent the parent popover from closing when the child popover is opened.
13294
- */
13295
- this.nested = false;
13296
13709
  this.handleClickOutside = (event) => {
13297
13710
  // This popover should close when the user clicks outside of it.
13298
13711
  if (this.el.contains(event.target))
@@ -13358,6 +13771,17 @@ class NvPopover {
13358
13771
  /****************************************************************************/
13359
13772
  //#region WATCHERS
13360
13773
  this.isAnimating = false;
13774
+ this.triggerElement = undefined;
13775
+ this.open = false;
13776
+ this.triggerMode = 'click';
13777
+ this.placement = 'bottom';
13778
+ this.groupName = undefined;
13779
+ this.offset = 12;
13780
+ this.hasArrow = false;
13781
+ this.disableFlip = false;
13782
+ this.shiftPadding = 16;
13783
+ this.enterDelay = 0;
13784
+ this.nested = false;
13361
13785
  }
13362
13786
  //#endregion PROPERTIES
13363
13787
  /****************************************************************************/
@@ -13523,7 +13947,7 @@ class NvPopover {
13523
13947
  /****************************************************************************/
13524
13948
  //#region RENDER
13525
13949
  render() {
13526
- return (hAsync(Host, { key: 'ee70da5a68b34bf289f79b6d18ffac777f8d807f' }, hAsync("slot", { key: '64bd478a06c4ccf9f656a9ea617bbe39d2ce78d8', name: "trigger" }), hAsync("div", { key: '5d024ffd7c1e00f8f476164da19d231edafa96ec', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (hAsync("div", { key: '63116e165f54dc018dfee0a8b56eeda96523f16f', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), hAsync("slot", { key: '6a7a400135aaea61ed5f1b0cb492ab962598ad16', name: "content" }))));
13950
+ return (hAsync(Host, { key: 'a09380cf6451740b99cbebca902cb02f44b458a2' }, hAsync("slot", { key: '661c16225a71d26ab295b5efe139ebc507f9e261', name: "trigger" }), hAsync("div", { key: '7dafdc5529822fb262bb52bf27a9353bf9040c05', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (hAsync("div", { key: 'ec295857667a455e2511d0a2848e9847f275dc21', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), hAsync("slot", { key: '17723fe92077d5b88c584a4202f4995ad7a7149a', name: "content" }))));
13527
13951
  }
13528
13952
  get el() { return getElement(this); }
13529
13953
  static get watchers() { return {
@@ -13568,7 +13992,7 @@ class NvRow {
13568
13992
  /****************************************************************************/
13569
13993
  //#region RENDER
13570
13994
  render() {
13571
- return (hAsync(Host, { key: '559c93b3961fdee5d278df42693dd4faae1f1eaf' }, hAsync("slot", { key: '3cbf2c0ed7a07e23537ae6fb3cc999fef27561ea' })));
13995
+ return (hAsync(Host, { key: 'dbbdde31406c030369bc78434dffd38203c24660' }, hAsync("slot", { key: 'f132a4f4fa2141774f5f4094ed8e5bb63d9619f1' })));
13572
13996
  }
13573
13997
  static get style() { return NvRowStyle0; }
13574
13998
  static get cmpMeta() { return {
@@ -13591,19 +14015,17 @@ var NvStackStyle0 = nvStackCss;
13591
14015
  class NvStack {
13592
14016
  constructor(hostRef) {
13593
14017
  registerInstance(this, hostRef);
13594
- /****************************************************************************/
13595
- //#region PROPERTIES
13596
- /**
13597
- * Gutter refers to the space that exists between children components inside
13598
- * the stack container.
13599
- */
13600
14018
  this.gutter = 2;
14019
+ this.fill = undefined;
14020
+ this.flex = undefined;
14021
+ this.full = undefined;
14022
+ this.vertical = undefined;
13601
14023
  }
13602
14024
  //#endregion PROPERTIES
13603
14025
  /****************************************************************************/
13604
14026
  //#region RENDER
13605
14027
  render() {
13606
- return (hAsync(Host, { key: '900b3afd3b0394433a719769797b4275998be59d', class: clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gutter-x-${this.gutter}`, this.gutter && this.vertical && `gutter-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, hAsync("slot", { key: 'de28519746e3c18f04bdaea3f13258bc3d3d49a9' })));
14028
+ return (hAsync(Host, { key: 'e60e05ba006143933b161ad781ba5f6fa8084086', class: clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gutter-x-${this.gutter}`, this.gutter && this.vertical && `gutter-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, hAsync("slot", { key: '91cd88a7cad2508c74561c202fa88c76ad01a43d' })));
13607
14029
  }
13608
14030
  static get style() { return NvStackStyle0; }
13609
14031
  static get cmpMeta() { return {
@@ -13635,36 +14057,15 @@ var NvTableStyle0 = nvTableCss;
13635
14057
  class NvTable {
13636
14058
  constructor(hostRef) {
13637
14059
  registerInstance(this, hostRef);
13638
- /****************************************************************************/
13639
- //#region STATES
13640
- this.parsedColumns = []; // Parsed array of column headers
13641
- this.parsedData = []; // Parsed array of data rows
14060
+ this.parsedColumns = [];
14061
+ this.parsedData = [];
13642
14062
  this.hasSlotHead = false;
13643
14063
  this.hasSlotBody = false;
13644
- //#endregion STATES
13645
- /****************************************************************************/
13646
- //#region PROPERTIES
13647
- /**
13648
- * Defines the table columns.
13649
- * @example ['Name', 'Age', 'Email']
13650
- * @default []
13651
- */
13652
14064
  this.columns = [];
13653
- /**
13654
- * Defines the table data.
13655
- * @example [{ name: 'Alice', age: 25, email: 'alice@mail.com' }, { name: 'Bob', age: 30, email: 'bob@mail.com' }]
13656
- * @default []
13657
- */
14065
+ this.columnsJson = undefined;
13658
14066
  this.data = [];
13659
- /**
13660
- * The message to display when there is no data available.
13661
- * @default 'No data available'
13662
- */
14067
+ this.dataJson = undefined;
13663
14068
  this.noDataMessage = 'No data available';
13664
- /**
13665
- * The message to display when there are no columns or data available.
13666
- * @default 'No data or columns available to display.'
13667
- */
13668
14069
  this.noColumnsNoDataMessage = 'No data or columns available to display.';
13669
14070
  }
13670
14071
  //#endregion PROPERTIES
@@ -13752,7 +14153,7 @@ class NvTable {
13752
14153
  .querySelector('[slot="body"]')
13753
14154
  .querySelectorAll('nv-tablerow'))
13754
14155
  : [];
13755
- return (hAsync(Host, { key: 'ab2f459ea80c9f134a537b62298ffd55ad7b719f' }, hAsync("div", { key: '081211573d87749e8b133b89e9da2a201b9e8bf3', class: "hidden" }, hAsync("slot", { key: '7dd2c168d379818e1456eb2117e14cf79e44f33e' }), hAsync("slot", { key: '7c8e1b4cf0b223257148459d753c2eb325a7cd17', name: "head" }), hAsync("slot", { key: 'd107814f31a82e3fd6e22dbccff319c5baf2b3db', name: "body" })), hAsync("slot", { key: 'd704c43a322b073ed459947f23950bc719402656', name: "before" }), this.parsedColumns.length === 0 &&
14156
+ return (hAsync(Host, { key: '22d8c833c2907ef992fb62966f6dcb59014135bf' }, hAsync("div", { key: '6cfc9629509f05b318908fc9ffb82d98ee73863e', class: "hidden" }, hAsync("slot", { key: 'a76ccca57f1f7d88a00fd888decf905a422b45eb' }), hAsync("slot", { key: '01d42501df876c08143127890d066afe53ca2e7b', name: "head" }), hAsync("slot", { key: '0ece02867a278d868bb85f6dad7c07d02ab4c52a', name: "body" })), hAsync("slot", { key: '77959a8d81390cb679a366e0c98a63cd74747910', name: "before" }), this.parsedColumns.length === 0 &&
13756
14157
  this.parsedData.length === 0 &&
13757
14158
  headerRows.length === 0 &&
13758
14159
  bodyRows.length === 0 ? (hAsync("p", null, this.noColumnsNoDataMessage)) : (hAsync("table", null, this.parsedColumns.length > 0 ? (hAsync("thead", null, hAsync("tr", null, this.parsedColumns.map(column => (hAsync("th", null, column)))))) : headerRows.length > 0 ? (hAsync("thead", null, headerRows.map(row => {
@@ -13763,7 +14164,7 @@ class NvTable {
13763
14164
  : Object.values(row).map(value => hAsync("td", null, value)))))) : bodyRows.length > 0 ? (bodyRows.map(row => {
13764
14165
  const cells = Array.from(row.querySelectorAll('nv-tabledatacell'));
13765
14166
  return (hAsync("tr", null, cells.map(cell => (hAsync("td", { colSpan: cell.colspan, rowSpan: cell.rowspan, headers: cell.headers, innerHTML: cell.innerHTML })))));
13766
- })) : null))), hAsync("slot", { key: '727d2040bec14d6632d062637b86b3a79e30b88d', name: "after" })));
14167
+ })) : null))), hAsync("slot", { key: '923eb6b92e5c8e146c32c972fd919b2ec72d3be2', name: "after" })));
13767
14168
  }
13768
14169
  get el() { return getElement(this); }
13769
14170
  static get watchers() { return {
@@ -13807,7 +14208,7 @@ class NvTablebody {
13807
14208
  /****************************************************************************/
13808
14209
  //#region RENDER
13809
14210
  render() {
13810
- return (hAsync(Host, { key: '033046403a927a4e738ee0b17491436872845375' }, hAsync("tbody", { key: 'e9dd64ba4c4463b64f7c48ea01aa8d577d1abddd' }, hAsync("slot", { key: '3790e34a3f1c0c870e41f5259edf956253cf031d' }))));
14211
+ return (hAsync(Host, { key: '0aafc5bec69cc03290e208df6210b39dc3b6f776' }, hAsync("tbody", { key: 'c198cb6ecafaf25ffce77cff806cd582db5eedb9' }, hAsync("slot", { key: '91d0417b3fbef34239707d27c23e9f778ec6023c' }))));
13811
14212
  }
13812
14213
  static get style() { return NvTablebodyStyle0; }
13813
14214
  static get cmpMeta() { return {
@@ -13829,28 +14230,17 @@ var NvTablecolumnStyle0 = nvTablecolumnCss;
13829
14230
  class NvTablecolumn {
13830
14231
  constructor(hostRef) {
13831
14232
  registerInstance(this, hostRef);
13832
- /**
13833
- * A non-negative integer value indicating how many columns the header cell spans
13834
- * or extends. The default value is 1. User agents dismiss values higher than 1000
13835
- * as incorrect, defaulting such values to 1.
13836
- * @default 1
13837
- */
14233
+ this.abbr = undefined;
13838
14234
  this.colspan = 1;
13839
- /**
13840
- * A non-negative integer value indicating how many rows the header cell spans or
13841
- * extends. The default value is 1; if its value is set to 0, the header cell will
13842
- * extends to the end of the table grouping section (`<thead>`, `<tbody>`, `<tfoot>`,
13843
- * even if implicitly defined), that the `<th>` belongs to. Values higher than 65534
13844
- * are clipped at 65534.
13845
- * @default 1
13846
- */
13847
14235
  this.rowspan = 1;
14236
+ this.headers = undefined;
14237
+ this.scope = undefined;
13848
14238
  }
13849
14239
  //#endregion PROPERTIES
13850
14240
  /****************************************************************************/
13851
14241
  //#region RENDER
13852
14242
  render() {
13853
- return (hAsync(Host, { key: '9e3e12375467e02e9e964b3f008aaee842704132' }, hAsync("th", { key: '9e4ee5f486d53a6200bd73652d35783da9d56eae', abbr: this.abbr, colSpan: this.colspan, headers: this.headers, rowSpan: this.rowspan, scope: this.scope }, hAsync("slot", { key: 'b59a867f3fad0e30e475f730aaaf482564969807' }))));
14243
+ return (hAsync(Host, { key: '9ddb6d1bacf5e5697236330936540232c6406879' }, hAsync("th", { key: '9cc2015b34d973a6d54061a00b8bb21b1833f7d7', abbr: this.abbr, colSpan: this.colspan, headers: this.headers, rowSpan: this.rowspan, scope: this.scope }, hAsync("slot", { key: '486abb79f2a0b1f4cd9f1f8bcb3c49c12a35eb2e' }))));
13854
14244
  }
13855
14245
  static get style() { return NvTablecolumnStyle0; }
13856
14246
  static get cmpMeta() { return {
@@ -13878,30 +14268,15 @@ var NvTabledatacellStyle0 = nvTabledatacellCss;
13878
14268
  class NvTabledatacell {
13879
14269
  constructor(hostRef) {
13880
14270
  registerInstance(this, hostRef);
13881
- /****************************************************************************/
13882
- //#region PROPERTIES
13883
- /**
13884
- * Contains a non-negative integer value that indicates how many columns the data
13885
- * cell spans or extends. The default value is 1. User agents dismiss values higher
13886
- * than 1000 as incorrect, setting to the default value (1).
13887
- * @default 1
13888
- */
13889
14271
  this.colspan = 1;
13890
- /**
13891
- * Contains a non-negative integer value that indicates for how many rows the data
13892
- * cell spans or extends. The default value is 1; if its value is set to 0, it
13893
- * extends until the end of the table grouping section (`<thead>`, `<tbody>`,
13894
- * `<tfoot>`, even if implicitly defined), that the cell belongs to. Values higher
13895
- * than 65534 are clipped to 65534.
13896
- * @default 1
13897
- */
13898
14272
  this.rowspan = 1;
14273
+ this.headers = undefined;
13899
14274
  }
13900
14275
  //#endregion PROPERTIES
13901
14276
  /****************************************************************************/
13902
14277
  //#region RENDER
13903
14278
  render() {
13904
- return (hAsync(Host, { key: '2b8dd0b288e8771055c061f42bae406e35618394' }, hAsync("td", { key: '4c77b5ddb3e992816a9f74097b184cf0a4299a1d', colSpan: this.colspan, rowSpan: this.rowspan, headers: this.headers }, hAsync("slot", { key: '9698292b649e85f9d1a6578ae6b6166c33594eab' }))));
14279
+ return (hAsync(Host, { key: 'abee360bdf041cea3cfbc658a24ba0b45b694fad' }, hAsync("td", { key: '9da91e1495dc943dad94380b5233dac9dcc340d8', colSpan: this.colspan, rowSpan: this.rowspan, headers: this.headers }, hAsync("slot", { key: '57cfd771f065dcc70b9686fbc03f46a86b39bdc7' }))));
13905
14280
  }
13906
14281
  static get style() { return NvTabledatacellStyle0; }
13907
14282
  static get cmpMeta() { return {
@@ -13931,7 +14306,7 @@ class NvTablehead {
13931
14306
  /****************************************************************************/
13932
14307
  //#region RENDER
13933
14308
  render() {
13934
- return (hAsync(Host, { key: '664bc779e57e372c4939f34e79be34672c701b9b' }, hAsync("thead", { key: '772dfe48aea949fa05229f036589947dcf097992' }, hAsync("slot", { key: 'bc76551105f0f0dfb4d6639bbe5b304b5b824328' }))));
14309
+ return (hAsync(Host, { key: '12149e94ecec13e7cc4711cdd86dad480a6f80dc' }, hAsync("thead", { key: '3083c897b49ac72a0758a2c78efa10b64a90a4ee' }, hAsync("slot", { key: 'd40f3b40723b2bbed4c5c1fd800a0442ab094eea' }))));
13935
14310
  }
13936
14311
  static get style() { return NvTableheadStyle0; }
13937
14312
  static get cmpMeta() { return {
@@ -13957,7 +14332,7 @@ class NvTablerow {
13957
14332
  /****************************************************************************/
13958
14333
  //#region RENDER
13959
14334
  render() {
13960
- return (hAsync(Host, { key: '2b24e970bb04d2ce5e9a95a136127fbdaa84a677' }, hAsync("tr", { key: 'd6c6a5ca230a5282a152db23885f200c04c43be4' }, hAsync("slot", { key: '84d7b5452772f4ff37e481fa14bd28b25cb0fd77' }))));
14335
+ return (hAsync(Host, { key: 'acb4cbd0903238ff07d45d556123278e9fddb800' }, hAsync("tr", { key: 'a2d47ed6d31e1d84cfe0c055dc50c9e32de41286' }, hAsync("slot", { key: '7bd7354523db2f45b8db3a78d32b6b26afc136ed' }))));
13961
14336
  }
13962
14337
  static get style() { return NvTablerowStyle0; }
13963
14338
  static get cmpMeta() { return {
@@ -13980,17 +14355,8 @@ var NvTooltipStyle0 = nvTooltipCss;
13980
14355
  class NvTooltip {
13981
14356
  constructor(hostRef) {
13982
14357
  registerInstance(this, hostRef);
13983
- /**
13984
- * Decides where the tooltip shows up next to the element it’s linked to
13985
- * (above, below, to the sides). If there isn’t enough room, it will adjust
13986
- * it's position on the axis to fit on the screen, so users can always see it.
13987
- */
14358
+ this.message = undefined;
13988
14359
  this.placement = 'bottom';
13989
- /**
13990
- * Controls how long (in milliseconds) the tooltip waits to show after you
13991
- * hover over or focus on an element. If you move away before the delay is up,
13992
- * the tooltip won’t appear.
13993
- */
13994
14360
  this.enterDelay = 0;
13995
14361
  }
13996
14362
  //#endregion PROPERTIES
@@ -14005,7 +14371,7 @@ class NvTooltip {
14005
14371
  /****************************************************************************/
14006
14372
  //#region RENDER
14007
14373
  render() {
14008
- return (hAsync(Host, { key: '590d897c7012f9020f6ac6e9f49acb840b4067ca' }, hAsync("slot", { key: '9479477482e361a042d464311a90dc3b0babb9e5' }), hAsync("nv-popover", { key: '89a2903946a89074201b5eb61a64b0595d831512', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, hAsync("p", { key: '5a6097b56440b06c33b20d5c06054f6aad9c9a42', slot: "content" }, this.message), hAsync("slot", { key: '595f1185183da50e916b243276c38a10a84e5712', name: "content" }))));
14374
+ return (hAsync(Host, { key: 'f2a8c20a32c58f486c6ab3910947274c6c9307e3' }, hAsync("slot", { key: '0dd69aa01fa88f5640128014145a3dfe27cb6a11' }), hAsync("nv-popover", { key: 'f11b6473623a6223903c7bec2344af00c5952814', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, hAsync("p", { key: 'ca4426091740d7491f92aebaea090ff109a09436', slot: "content" }, this.message), hAsync("slot", { key: '94abaf31618c29d02439493f7628c7886c7d4ec0', name: "content" }))));
14009
14375
  }
14010
14376
  get el() { return getElement(this); }
14011
14377
  static get style() { return NvTooltipStyle0; }
@@ -14039,6 +14405,8 @@ registerComponents([
14039
14405
  NvDatagridrow,
14040
14406
  NvFieldcheckbox,
14041
14407
  NvFielddropdownitem,
14408
+ NvFielddropdownitemcheck,
14409
+ NvFieldmultiselect,
14042
14410
  NvFieldnumber,
14043
14411
  NvFieldpassword,
14044
14412
  NvFieldradio,
@@ -14175,7 +14543,7 @@ var NAMESPACE = (
14175
14543
  );
14176
14544
 
14177
14545
  /*
14178
- Stencil Hydrate Runner v4.23.1 | MIT Licensed | https://stenciljs.com
14546
+ Stencil Hydrate Runner v4.22.3 | MIT Licensed | https://stenciljs.com
14179
14547
  */
14180
14548
  var __defProp = Object.defineProperty;
14181
14549
  var __export = (target, all) => {
@@ -24605,7 +24973,7 @@ function serializeNodeToHtml(elm, serializationOptions = {}) {
24605
24973
  text: []
24606
24974
  };
24607
24975
  let renderedNode = "";
24608
- const children = !opts.fullDocument && elm.body ? Array.from(elm.body.childNodes) : opts.outerHtml ? [elm] : Array.from(getChildNodes(elm));
24976
+ const children = !opts.fullDocument && elm.body ? Array.from(elm.body.childNodes) : opts.outerHtml ? [elm] : Array.from(elm.childNodes);
24609
24977
  for (let i = 0, ii = children.length; i < ii; i++) {
24610
24978
  const child = children[i];
24611
24979
  const chunks = Array.from(streamToHtml(child, opts, output));
@@ -24638,10 +25006,7 @@ function* streamToHtml(node, opts, output) {
24638
25006
  const tag = tagName === shadowRootTag ? "template" : tagName;
24639
25007
  yield "<" + tag;
24640
25008
  output.currentLineWidth += tag.length + 1;
24641
- if (tag === "template" && (!node.getAttribute || !node.getAttribute("shadowrootmode")) && /**
24642
- * If the node is a shadow root, we want to add the `shadowrootmode` attribute
24643
- */
24644
- ("host" in node || node.nodeName.toLocaleLowerCase() === shadowRootTag)) {
25009
+ if (tag === "template") {
24645
25010
  const mode = ` shadowrootmode="open"`;
24646
25011
  yield mode;
24647
25012
  output.currentLineWidth += mode.length;
@@ -24725,8 +25090,7 @@ style="${cssText}">`;
24725
25090
  output.indent = output.indent + ((_c = opts.indentSpaces) != null ? _c : 0);
24726
25091
  yield* streamToHtml(shadowRoot, opts, output);
24727
25092
  output.indent = output.indent - ((_d = opts.indentSpaces) != null ? _d : 0);
24728
- const childNodes = getChildNodes(node);
24729
- if (opts.newLines && (childNodes.length === 0 || childNodes.length === 1 && childNodes[0].nodeType === 3 /* TEXT_NODE */ && ((_e = childNodes[0].nodeValue) == null ? void 0 : _e.trim()) === "")) {
25093
+ if (opts.newLines && (node.childNodes.length === 0 || node.childNodes.length === 1 && node.childNodes[0].nodeType === 3 /* TEXT_NODE */ && ((_e = node.childNodes[0].nodeValue) == null ? void 0 : _e.trim()) === "")) {
24730
25094
  yield "\n";
24731
25095
  output.currentLineWidth = 0;
24732
25096
  for (let i = 0; i < output.indent; i++) {
@@ -24737,7 +25101,7 @@ style="${cssText}">`;
24737
25101
  }
24738
25102
  if (opts.excludeTagContent == null || opts.excludeTagContent.includes(tagName) === false) {
24739
25103
  const tag = tagName === shadowRootTag ? "template" : tagName;
24740
- const childNodes = tagName === "template" ? node.content.childNodes : getChildNodes(node);
25104
+ const childNodes = tagName === "template" ? node.content.childNodes : node.childNodes;
24741
25105
  const childNodeLength = childNodes.length;
24742
25106
  if (childNodeLength > 0) {
24743
25107
  if (childNodeLength === 1 && childNodes[0].nodeType === 3 /* TEXT_NODE */ && (typeof childNodes[0].nodeValue !== "string" || childNodes[0].nodeValue.trim() === "")) {
@@ -24910,9 +25274,6 @@ function isWithinWhitespaceSensitive(node) {
24910
25274
  }
24911
25275
  return false;
24912
25276
  }
24913
- function getChildNodes(node) {
24914
- return node.__childNodes || node.childNodes;
24915
- }
24916
25277
  var NON_ESCAPABLE_CONTENT = /* @__PURE__ */ new Set([
24917
25278
  "STYLE",
24918
25279
  "SCRIPT",
@@ -25182,12 +25543,10 @@ var MockElement = class extends MockNode2 {
25182
25543
  attachInternals() {
25183
25544
  return new Proxy({}, {
25184
25545
  get: function(_target, prop, _receiver) {
25185
- if ("process" in globalThis && globalThis.process.env.__STENCIL_SPEC_TESTS__) {
25186
- console.error(
25187
- `NOTE: Property ${String(prop)} was accessed on ElementInternals, but this property is not implemented.
25188
- Testing components with ElementInternals is fully supported in e2e tests.`
25189
- );
25190
- }
25546
+ console.error(
25547
+ `NOTE: Property ${String(prop)} was accessed on ElementInternals, but this property is not implemented.
25548
+ Testing components with ElementInternals is fully supported in e2e tests.`
25549
+ );
25191
25550
  }
25192
25551
  });
25193
25552
  }
@@ -26107,8 +26466,6 @@ function createElement(ownerDocument, tagName) {
26107
26466
  return new MockTitleElement(ownerDocument);
26108
26467
  case "ul":
26109
26468
  return new MockUListElement(ownerDocument);
26110
- case "slot-fb":
26111
- return new MockHTMLElement(ownerDocument, tagName);
26112
26469
  }
26113
26470
  if (ownerDocument != null && tagName.includes("-")) {
26114
26471
  const win2 = ownerDocument.defaultView;
@@ -28396,11 +28753,11 @@ var unwrapErr = (result) => {
28396
28753
  throw result.value;
28397
28754
  }
28398
28755
  };
28399
- var CAPTURE_EVENT_SUFFIX = "Capture";
28400
- var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
28401
28756
 
28402
28757
  // src/runtime/mode.ts
28403
28758
  var setMode = (handler) => modeResolutionChain.push(handler);
28759
+ var CAPTURE_EVENT_SUFFIX = "Capture";
28760
+ var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
28404
28761
 
28405
28762
  // src/compiler/html/canonical-link.ts
28406
28763
  var updateCanonicalLink = (doc2, href) => {