@nova-design-system/nova-webcomponents 3.0.0-beta.38 → 3.0.0-beta.40

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 (696) hide show
  1. package/dist/cjs/app-globals-3a1e7e63.js +7 -0
  2. package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
  3. package/dist/cjs/{constants-69b40456.js → constants-79d2cdfc.js} +25 -5
  4. package/dist/cjs/constants-79d2cdfc.js.map +1 -0
  5. package/dist/cjs/dom.utils-4d43f69a.js +170 -0
  6. package/dist/cjs/dom.utils-4d43f69a.js.map +1 -0
  7. package/dist/cjs/index-5910ba06.js +8 -36
  8. package/dist/cjs/index.cjs.js +3 -1
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/native.cjs.js +2 -2
  12. package/dist/cjs/nv-alert.cjs.entry.js +32 -9
  13. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  15. package/dist/cjs/nv-badge_2.cjs.entry.js +3 -3
  16. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  17. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  18. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-button.cjs.entry.js +34 -12
  20. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-calendar.cjs.entry.js +984 -0
  22. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -0
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +325 -165
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -5
  27. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nv-dialog.cjs.entry.js +21 -10
  29. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +17 -12
  31. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +10 -4
  33. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nv-fielddropdown.cjs.entry.js +146 -223
  35. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +37 -32
  37. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +12 -11
  39. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nv-fieldnumber.cjs.entry.js +9 -3
  41. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fieldpassword.cjs.entry.js +9 -3
  43. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldradio.cjs.entry.js +9 -3
  45. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldselect.cjs.entry.js +11 -5
  47. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldtext.cjs.entry.js +9 -3
  49. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +9 -3
  51. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldtime.cjs.entry.js +20 -12
  53. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-icon.cjs.entry.js +20 -13
  55. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-iconbutton.cjs.entry.js +1 -1
  57. package/dist/cjs/nv-loader.cjs.entry.js +1 -1
  58. package/dist/cjs/nv-menu.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  61. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  62. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  63. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  64. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-table.cjs.entry.js +267 -81
  66. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -21
  68. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  70. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  71. package/dist/cjs/uri.utils-8523ad2b.js +26 -0
  72. package/dist/cjs/uri.utils-8523ad2b.js.map +1 -0
  73. package/dist/collection/collection-manifest.json +3 -11
  74. package/dist/collection/components/nv-alert/nv-alert.docs.js +5 -0
  75. package/dist/collection/components/nv-alert/nv-alert.docs.js.map +1 -1
  76. package/dist/collection/components/nv-alert/nv-alert.js +51 -8
  77. package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
  78. package/dist/collection/components/nv-avatar/nv-avatar.js +1 -1
  79. package/dist/collection/components/nv-badge/nv-badge.js +2 -2
  80. package/dist/collection/components/nv-base/nv-base.js +1 -1
  81. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  82. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  83. package/dist/collection/components/nv-button/nv-button.docs.js +4 -0
  84. package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
  85. package/dist/collection/components/nv-button/nv-button.js +54 -13
  86. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  87. package/dist/collection/components/nv-calendar/nv-calendar.css +341 -0
  88. package/dist/collection/components/nv-calendar/nv-calendar.docs.js +401 -0
  89. package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -0
  90. package/dist/collection/components/nv-calendar/nv-calendar.js +1328 -0
  91. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -0
  92. package/dist/collection/components/nv-col/nv-col.js +1 -1
  93. package/dist/collection/components/nv-datagrid/nv-datagrid.css +30 -0
  94. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +25 -77
  95. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  96. package/dist/collection/components/nv-datagrid/nv-datagrid.js +396 -194
  97. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  98. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +7 -16
  99. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  100. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -0
  101. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +6 -9
  102. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  103. package/dist/collection/components/nv-dialog/nv-dialog.js +20 -29
  104. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  105. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +71 -21
  106. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js.map +1 -1
  107. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  108. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +8 -0
  109. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +1 -1
  110. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +30 -4
  111. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  112. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +11 -3
  113. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  114. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +197 -252
  115. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  116. package/dist/collection/components/nv-fielddropdown/{nv-fielddropdown.css → styles/nv-fielddropdown.css} +0 -3
  117. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +55 -47
  118. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  119. package/dist/collection/components/nv-fielddropdownitem/{nv-fielddropdownitem.css → styles/nv-fielddropdownitem.css} +5 -3
  120. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  121. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +0 -2
  122. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +10 -2
  123. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  124. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +34 -33
  125. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  126. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +8 -0
  127. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  128. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +29 -3
  129. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  130. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +8 -0
  131. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  132. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +30 -4
  133. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  134. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +8 -0
  135. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +1 -1
  136. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +29 -3
  137. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  138. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +8 -19
  139. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  140. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +31 -5
  141. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  142. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +8 -0
  143. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  144. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +30 -4
  145. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  146. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +8 -0
  147. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +1 -1
  148. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +29 -3
  149. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  150. package/dist/collection/components/nv-fieldtime/nv-fieldtime.css +20 -17
  151. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +8 -0
  152. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  153. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +38 -10
  154. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  155. package/dist/collection/components/nv-icon/nv-icon.js +21 -19
  156. package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
  157. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  158. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  159. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  160. package/dist/collection/components/nv-menu/nv-menu.docs.js +1 -1
  161. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  162. package/dist/collection/components/nv-menu/nv-menu.js +3 -3
  163. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  164. package/dist/collection/components/nv-menuitem/nv-menuitem.js +3 -3
  165. package/dist/collection/components/nv-popover/nv-popover.css +3 -0
  166. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  167. package/dist/collection/components/nv-row/nv-row.js +1 -1
  168. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  169. package/dist/collection/components/nv-table/nv-table.css +30 -0
  170. package/dist/collection/components/nv-table/nv-table.docs.js +69 -74
  171. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  172. package/dist/collection/components/nv-table/nv-table.js +349 -137
  173. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  174. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +11 -111
  175. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +1 -1
  176. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  177. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  178. package/dist/collection/index.js +2 -0
  179. package/dist/collection/index.js.map +1 -1
  180. package/dist/collection/interfaces/ColumnConfig.js +2 -0
  181. package/dist/collection/interfaces/ColumnConfig.js.map +1 -0
  182. package/dist/collection/interfaces/actionEvent.js +2 -0
  183. package/dist/collection/interfaces/actionEvent.js.map +1 -0
  184. package/dist/collection/interfaces/calendarShortcut.js +2 -0
  185. package/dist/collection/interfaces/calendarShortcut.js.map +1 -0
  186. package/dist/collection/interfaces/dateRange.js +2 -0
  187. package/dist/collection/interfaces/dateRange.js.map +1 -0
  188. package/dist/collection/interfaces/localization.js +2 -0
  189. package/dist/collection/interfaces/localization.js.map +1 -0
  190. package/dist/collection/templates/navigation.docs.js +5 -0
  191. package/dist/collection/templates/navigation.docs.js.map +1 -1
  192. package/dist/collection/utils/constants.js +18 -0
  193. package/dist/collection/utils/constants.js.map +1 -1
  194. package/dist/collection/utils/dom.utils.js +164 -0
  195. package/dist/collection/utils/dom.utils.js.map +1 -0
  196. package/dist/collection/utils/test/class.utils.test.js +25 -0
  197. package/dist/collection/utils/test/class.utils.test.js.map +1 -0
  198. package/dist/collection/utils/test/dom.utils.test.js +102 -0
  199. package/dist/collection/utils/test/dom.utils.test.js.map +1 -0
  200. package/dist/collection/utils/test/uri.utils.test.js +21 -0
  201. package/dist/collection/utils/test/uri.utils.test.js.map +1 -0
  202. package/dist/collection/utils/uri.utils.js +15 -0
  203. package/dist/collection/utils/uri.utils.js.map +1 -0
  204. package/dist/components/index.js +3 -2
  205. package/dist/components/index.js.map +1 -1
  206. package/dist/components/nv-alert.js +35 -11
  207. package/dist/components/nv-alert.js.map +1 -1
  208. package/dist/components/nv-avatar.js +3 -3
  209. package/dist/components/nv-badge.js +1 -1
  210. package/dist/components/nv-base.js +1 -1
  211. package/dist/components/nv-breadcrumb.js +3 -3
  212. package/dist/components/nv-breadcrumbs.js +1 -1
  213. package/dist/components/nv-button.js +1 -1
  214. package/dist/components/{nv-tablerow.d.ts → nv-calendar.d.ts} +4 -4
  215. package/dist/components/nv-calendar.js +1046 -0
  216. package/dist/components/nv-calendar.js.map +1 -0
  217. package/dist/components/nv-col.js +1 -1
  218. package/dist/components/nv-datagrid.js +332 -173
  219. package/dist/components/nv-datagrid.js.map +1 -1
  220. package/dist/components/nv-datagridcolumn.js +3 -7
  221. package/dist/components/nv-datagridcolumn.js.map +1 -1
  222. package/dist/components/nv-dialog.js +26 -16
  223. package/dist/components/nv-dialog.js.map +1 -1
  224. package/dist/components/nv-dialogfooter.js +1 -1
  225. package/dist/components/nv-dialogheader.js +1 -1
  226. package/dist/components/nv-fieldcheckbox.js +1 -1
  227. package/dist/components/nv-fielddropdown.js +154 -230
  228. package/dist/components/nv-fielddropdown.js.map +1 -1
  229. package/dist/components/nv-fielddropdownitem.js +1 -1
  230. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  231. package/dist/components/nv-fieldmultiselect.js +21 -19
  232. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  233. package/dist/components/nv-fieldnumber.js +12 -5
  234. package/dist/components/nv-fieldnumber.js.map +1 -1
  235. package/dist/components/nv-fieldpassword.js +13 -6
  236. package/dist/components/nv-fieldpassword.js.map +1 -1
  237. package/dist/components/nv-fieldradio.js +11 -4
  238. package/dist/components/nv-fieldradio.js.map +1 -1
  239. package/dist/components/nv-fieldselect.js +13 -6
  240. package/dist/components/nv-fieldselect.js.map +1 -1
  241. package/dist/components/nv-fieldtext.js +12 -5
  242. package/dist/components/nv-fieldtext.js.map +1 -1
  243. package/dist/components/nv-fieldtextarea.js +11 -4
  244. package/dist/components/nv-fieldtextarea.js.map +1 -1
  245. package/dist/components/nv-fieldtime.js +25 -16
  246. package/dist/components/nv-fieldtime.js.map +1 -1
  247. package/dist/components/nv-icon.js +1 -1
  248. package/dist/components/nv-iconbutton.js +1 -1
  249. package/dist/components/nv-loader.js +1 -1
  250. package/dist/components/nv-menu.js +5 -5
  251. package/dist/components/nv-menu.js.map +1 -1
  252. package/dist/components/nv-menuitem.js +1 -1
  253. package/dist/components/nv-popover.js +1 -1
  254. package/dist/components/nv-row.js +1 -1
  255. package/dist/components/nv-stack.js +1 -1
  256. package/dist/components/nv-table.js +279 -91
  257. package/dist/components/nv-table.js.map +1 -1
  258. package/dist/components/nv-tablecolumn.js +5 -28
  259. package/dist/components/nv-tablecolumn.js.map +1 -1
  260. package/dist/components/nv-toggle.js +2 -2
  261. package/dist/components/nv-tooltip.js +1 -1
  262. package/dist/components/{p-1c83f303.js → p-11cc38e0.js} +4 -4
  263. package/dist/components/{p-1c83f303.js.map → p-11cc38e0.js.map} +1 -1
  264. package/dist/components/{p-802c9204.js → p-1657eba4.js} +23 -16
  265. package/dist/components/p-1657eba4.js.map +1 -0
  266. package/dist/components/{p-79bf6acb.js → p-33f9bdb1.js} +4 -4
  267. package/dist/components/{p-79bf6acb.js.map → p-33f9bdb1.js.map} +1 -1
  268. package/dist/components/p-4b184820.js +95 -0
  269. package/dist/components/p-4b184820.js.map +1 -0
  270. package/dist/components/{p-b877a150.js → p-4bb5eb79.js} +3 -3
  271. package/dist/components/{p-b877a150.js.map → p-4bb5eb79.js.map} +1 -1
  272. package/dist/components/{p-ab87be7f.js → p-69543282.js} +3 -3
  273. package/dist/components/{p-ab87be7f.js.map → p-69543282.js.map} +1 -1
  274. package/dist/components/p-7e58e7d1.js +23 -0
  275. package/dist/components/p-7e58e7d1.js.map +1 -0
  276. package/dist/components/{p-98ff0e5f.js → p-96605453.js} +13 -6
  277. package/dist/components/p-96605453.js.map +1 -0
  278. package/dist/components/{p-2768d2c0.js → p-a633892a.js} +2 -2
  279. package/dist/components/{p-2768d2c0.js.map → p-a633892a.js.map} +1 -1
  280. package/dist/{esm/constants-0181211f.js → components/p-b316c35d.js} +22 -3
  281. package/dist/components/p-b316c35d.js.map +1 -0
  282. package/dist/components/{p-91bf0cb6.js → p-ba145f46.js} +38 -15
  283. package/dist/components/p-ba145f46.js.map +1 -0
  284. package/dist/components/p-c1765831.js +89 -0
  285. package/dist/components/p-c1765831.js.map +1 -0
  286. package/dist/components/p-cb34aa4f.js +167 -0
  287. package/dist/components/p-cb34aa4f.js.map +1 -0
  288. package/dist/components/{p-a9a52105.js → p-d17558a8.js} +1178 -5
  289. package/dist/components/p-d17558a8.js.map +1 -0
  290. package/dist/components/{p-18d221e3.js → p-f201db34.js} +2 -2
  291. package/dist/components/{p-18d221e3.js.map → p-f201db34.js.map} +1 -1
  292. package/dist/components/{p-d20958c4.js → p-f77c3072.js} +22 -16
  293. package/dist/components/p-f77c3072.js.map +1 -0
  294. package/dist/components/{p-16badb3b.js → p-fad78896.js} +3 -3
  295. package/dist/components/{p-16badb3b.js.map → p-fad78896.js.map} +1 -1
  296. package/dist/docs.json +1331 -935
  297. package/dist/esm/app-globals-0f993ce5.js +5 -0
  298. package/dist/esm/app-globals-0f993ce5.js.map +1 -0
  299. package/dist/{components/p-56f71851.js → esm/constants-75e6d7f0.js} +22 -3
  300. package/dist/esm/constants-75e6d7f0.js.map +1 -0
  301. package/dist/esm/dom.utils-ac71e0ef.js +167 -0
  302. package/dist/esm/dom.utils-ac71e0ef.js.map +1 -0
  303. package/dist/esm/index-fac2d5d2.js +8 -36
  304. package/dist/esm/index.js +2 -1
  305. package/dist/esm/index.js.map +1 -1
  306. package/dist/esm/loader.js +2 -2
  307. package/dist/esm/native.js +2 -2
  308. package/dist/esm/nv-alert.entry.js +32 -9
  309. package/dist/esm/nv-alert.entry.js.map +1 -1
  310. package/dist/esm/nv-avatar.entry.js +2 -2
  311. package/dist/esm/nv-badge_2.entry.js +3 -3
  312. package/dist/esm/nv-base.entry.js +1 -1
  313. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  314. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  315. package/dist/esm/nv-button.entry.js +34 -12
  316. package/dist/esm/nv-button.entry.js.map +1 -1
  317. package/dist/esm/nv-calendar.entry.js +980 -0
  318. package/dist/esm/nv-calendar.entry.js.map +1 -0
  319. package/dist/esm/nv-col.entry.js +1 -1
  320. package/dist/esm/nv-datagrid.entry.js +326 -166
  321. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  322. package/dist/esm/nv-datagridcolumn.entry.js +1 -5
  323. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  324. package/dist/esm/nv-dialog.entry.js +21 -10
  325. package/dist/esm/nv-dialog.entry.js.map +1 -1
  326. package/dist/esm/nv-dialogfooter_2.entry.js +17 -12
  327. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  328. package/dist/esm/nv-fieldcheckbox.entry.js +10 -4
  329. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  330. package/dist/esm/nv-fielddropdown.entry.js +146 -223
  331. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  332. package/dist/esm/nv-fielddropdownitem.entry.js +37 -32
  333. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  334. package/dist/esm/nv-fieldmultiselect.entry.js +12 -11
  335. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  336. package/dist/esm/nv-fieldnumber.entry.js +9 -3
  337. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  338. package/dist/esm/nv-fieldpassword.entry.js +9 -3
  339. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  340. package/dist/esm/nv-fieldradio.entry.js +9 -3
  341. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  342. package/dist/esm/nv-fieldselect.entry.js +11 -5
  343. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  344. package/dist/esm/nv-fieldtext.entry.js +9 -3
  345. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  346. package/dist/esm/nv-fieldtextarea.entry.js +9 -3
  347. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  348. package/dist/esm/nv-fieldtime.entry.js +20 -12
  349. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  350. package/dist/esm/nv-icon.entry.js +20 -13
  351. package/dist/esm/nv-icon.entry.js.map +1 -1
  352. package/dist/esm/nv-iconbutton.entry.js +1 -1
  353. package/dist/esm/nv-loader.entry.js +1 -1
  354. package/dist/esm/nv-menu.entry.js +2 -2
  355. package/dist/esm/nv-menu.entry.js.map +1 -1
  356. package/dist/esm/nv-menuitem.entry.js +1 -1
  357. package/dist/esm/nv-popover.entry.js +2 -2
  358. package/dist/esm/nv-popover.entry.js.map +1 -1
  359. package/dist/esm/nv-row.entry.js +1 -1
  360. package/dist/esm/nv-stack.entry.js +1 -1
  361. package/dist/esm/nv-table.entry.js +268 -82
  362. package/dist/esm/nv-table.entry.js.map +1 -1
  363. package/dist/esm/nv-tablecolumn.entry.js +2 -22
  364. package/dist/esm/nv-tablecolumn.entry.js.map +1 -1
  365. package/dist/esm/nv-toggle.entry.js +2 -2
  366. package/dist/esm/nv-tooltip.entry.js +1 -1
  367. package/dist/esm/uri.utils-4c2a1e4c.js +23 -0
  368. package/dist/esm/uri.utils-4c2a1e4c.js.map +1 -0
  369. package/dist/native/index.esm.js +1 -1
  370. package/dist/native/index.esm.js.map +1 -1
  371. package/dist/native/native.css +1 -1
  372. package/dist/native/native.esm.js +1 -1
  373. package/dist/native/native.esm.js.map +1 -1
  374. package/dist/native/p-0a2a9f8b.entry.js +2 -0
  375. package/dist/native/p-0a2a9f8b.entry.js.map +1 -0
  376. package/dist/native/p-12d08abc.entry.js +2 -0
  377. package/dist/native/p-12d08abc.entry.js.map +1 -0
  378. package/dist/native/{p-211f7b19.entry.js → p-15be3d96.entry.js} +2 -2
  379. package/dist/native/p-184cd119.entry.js +2 -0
  380. package/dist/native/{p-8ee30013.entry.js.map → p-184cd119.entry.js.map} +1 -1
  381. package/dist/native/{p-87083363.entry.js → p-1a3d2a74.entry.js} +2 -2
  382. package/dist/native/{p-87083363.entry.js.map → p-1a3d2a74.entry.js.map} +1 -1
  383. package/dist/native/{p-4f11286d.entry.js → p-27ad7af2.entry.js} +2 -2
  384. package/dist/native/p-27ad7af2.entry.js.map +1 -0
  385. package/dist/native/p-2b2a10f9.entry.js +2 -0
  386. package/dist/native/p-2b2a10f9.entry.js.map +1 -0
  387. package/dist/native/{p-a06bafad.entry.js → p-359f0f53.entry.js} +2 -2
  388. package/dist/native/p-3b65037c.entry.js +2 -0
  389. package/dist/native/p-3b65037c.entry.js.map +1 -0
  390. package/dist/native/p-3be2c9a1.entry.js +2 -0
  391. package/dist/native/p-4283f375.entry.js +2 -0
  392. package/dist/native/p-4283f375.entry.js.map +1 -0
  393. package/dist/native/p-487b81bd.entry.js +2 -0
  394. package/dist/native/p-487b81bd.entry.js.map +1 -0
  395. package/dist/native/{p-d24586ed.entry.js → p-491f4605.entry.js} +2 -2
  396. package/dist/native/{p-e3827605.entry.js → p-554f7b44.entry.js} +2 -2
  397. package/dist/native/p-554f7b44.entry.js.map +1 -0
  398. package/dist/native/p-69fb1c9d.entry.js +2 -0
  399. package/dist/native/p-69fb1c9d.entry.js.map +1 -0
  400. package/dist/native/{p-1bb5a6bd.entry.js → p-729c9d45.entry.js} +2 -2
  401. package/dist/native/p-729c9d45.entry.js.map +1 -0
  402. package/dist/native/{p-130f6c47.entry.js → p-78f08578.entry.js} +2 -2
  403. package/dist/native/p-78f08578.entry.js.map +1 -0
  404. package/dist/native/p-7e58e7d1.js +2 -0
  405. package/dist/native/p-7e58e7d1.js.map +1 -0
  406. package/dist/native/p-8664ab16.entry.js +7 -0
  407. package/dist/native/p-8664ab16.entry.js.map +1 -0
  408. package/dist/native/p-87bd53df.entry.js +2 -0
  409. package/dist/native/p-87bd53df.entry.js.map +1 -0
  410. package/dist/native/{p-96902bb3.entry.js → p-8d6516a3.entry.js} +2 -2
  411. package/dist/native/p-951baf95.entry.js +2 -0
  412. package/dist/native/p-9795090f.entry.js +2 -0
  413. package/dist/native/p-9795090f.entry.js.map +1 -0
  414. package/dist/native/p-af60740c.entry.js +2 -0
  415. package/dist/native/p-af60740c.entry.js.map +1 -0
  416. package/dist/native/{p-56f71851.js → p-b316c35d.js} +2 -2
  417. package/dist/native/p-b316c35d.js.map +1 -0
  418. package/dist/native/p-b58c661b.entry.js +2 -0
  419. package/dist/native/p-b58c661b.entry.js.map +1 -0
  420. package/dist/native/p-b7bc918b.entry.js +2 -0
  421. package/dist/native/p-b7bc918b.entry.js.map +1 -0
  422. package/dist/native/p-cb34aa4f.js +2 -0
  423. package/dist/native/p-cb34aa4f.js.map +1 -0
  424. package/dist/native/{p-a998f8df.entry.js → p-cda56476.entry.js} +2 -2
  425. package/dist/native/p-d1bf4d77.entry.js +2 -0
  426. package/dist/native/{p-54df2174.entry.js → p-d7665a07.entry.js} +2 -2
  427. package/dist/native/p-d7665a07.entry.js.map +1 -0
  428. package/dist/native/{p-3c004551.entry.js → p-daeb7e22.entry.js} +2 -2
  429. package/dist/native/p-daeb7e22.entry.js.map +1 -0
  430. package/dist/native/p-e1255160.js +2 -0
  431. package/dist/native/p-e1255160.js.map +1 -0
  432. package/dist/native/{p-61d2cb2e.entry.js → p-e36e956b.entry.js} +2 -2
  433. package/dist/native/{p-99e7a452.entry.js → p-e9e77494.entry.js} +2 -2
  434. package/dist/native/p-e9e77494.entry.js.map +1 -0
  435. package/dist/native/{p-0bf35abc.entry.js → p-edee1c1f.entry.js} +2 -2
  436. package/dist/native/{p-e192c25c.entry.js → p-f1585fc2.entry.js} +2 -2
  437. package/dist/native/p-f3579407.entry.js +2 -0
  438. package/dist/native/p-f3579407.entry.js.map +1 -0
  439. package/dist/native/p-fca807b4.entry.js +13 -0
  440. package/dist/native/p-fca807b4.entry.js.map +1 -0
  441. package/dist/native/{p-d67b7502.entry.js → p-fde56f9c.entry.js} +2 -2
  442. package/dist/types/components/nv-alert/nv-alert.d.ts +14 -0
  443. package/dist/types/components/nv-base/nv-base.docs.d.ts +1 -1
  444. package/dist/types/components/nv-button/nv-button.d.ts +16 -5
  445. package/dist/types/components/nv-calendar/nv-calendar.d.ts +383 -0
  446. package/dist/types/components/{nv-tablerow/nv-tablerow.docs.d.ts → nv-calendar/nv-calendar.docs.d.ts} +2 -2
  447. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +48 -31
  448. package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +3 -2
  449. package/dist/types/components/nv-dialog/nv-dialog.d.ts +1 -7
  450. package/dist/types/components/nv-dialogfooter/nv-dialogfooter.d.ts +19 -10
  451. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +6 -0
  452. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +45 -62
  453. package/dist/types/components/nv-fielddropdownitem/nv-fielddropdownitem.d.ts +27 -13
  454. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +7 -10
  455. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +6 -0
  456. package/dist/types/components/nv-fieldpassword/nv-fieldpassword.d.ts +6 -0
  457. package/dist/types/components/nv-fieldradio/nv-fieldradio.d.ts +6 -0
  458. package/dist/types/components/nv-fieldselect/nv-fieldselect.d.ts +6 -0
  459. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +6 -0
  460. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +6 -0
  461. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +6 -0
  462. package/dist/types/components/nv-icon/nv-icon.d.ts +6 -4
  463. package/dist/types/components/nv-table/nv-table.d.ts +51 -39
  464. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +4 -42
  465. package/dist/types/components.d.ts +428 -284
  466. package/dist/types/index.d.ts +4 -0
  467. package/dist/types/interfaces/ColumnConfig.d.ts +13 -0
  468. package/dist/types/interfaces/actionEvent.d.ts +13 -0
  469. package/dist/types/interfaces/calendarShortcut.d.ts +17 -0
  470. package/dist/types/interfaces/dateRange.d.ts +13 -0
  471. package/dist/types/interfaces/localization.d.ts +9 -0
  472. package/dist/types/utils/constants.d.ts +2 -0
  473. package/dist/types/utils/dom.utils.d.ts +12 -0
  474. package/dist/types/utils/test/uri.utils.test.d.ts +1 -0
  475. package/dist/types/utils/uri.utils.d.ts +6 -0
  476. package/hydrate/index.js +3134 -1824
  477. package/hydrate/index.mjs +3134 -1824
  478. package/package.json +19 -27
  479. package/dist/blazor-docs.json +0 -14813
  480. package/dist/cjs/app-globals-bd4d701e.js +0 -11
  481. package/dist/cjs/app-globals-bd4d701e.js.map +0 -1
  482. package/dist/cjs/constants-69b40456.js.map +0 -1
  483. package/dist/cjs/nv-datagridbody.cjs.entry.js +0 -24
  484. package/dist/cjs/nv-datagridbody.cjs.entry.js.map +0 -1
  485. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +0 -25
  486. package/dist/cjs/nv-datagriddatacell.cjs.entry.js.map +0 -1
  487. package/dist/cjs/nv-datagridhead.cjs.entry.js +0 -24
  488. package/dist/cjs/nv-datagridhead.cjs.entry.js.map +0 -1
  489. package/dist/cjs/nv-datagridrow.cjs.entry.js +0 -24
  490. package/dist/cjs/nv-datagridrow.cjs.entry.js.map +0 -1
  491. package/dist/cjs/nv-tablebody.cjs.entry.js +0 -24
  492. package/dist/cjs/nv-tablebody.cjs.entry.js.map +0 -1
  493. package/dist/cjs/nv-tabledatacell.cjs.entry.js +0 -43
  494. package/dist/cjs/nv-tabledatacell.cjs.entry.js.map +0 -1
  495. package/dist/cjs/nv-tablehead.cjs.entry.js +0 -24
  496. package/dist/cjs/nv-tablehead.cjs.entry.js.map +0 -1
  497. package/dist/cjs/nv-tablerow.cjs.entry.js +0 -24
  498. package/dist/cjs/nv-tablerow.cjs.entry.js.map +0 -1
  499. package/dist/collection/components/nv-datagridbody/nv-datagridbody.css +0 -0
  500. package/dist/collection/components/nv-datagridbody/nv-datagridbody.docs.js +0 -8
  501. package/dist/collection/components/nv-datagridbody/nv-datagridbody.docs.js.map +0 -1
  502. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +0 -23
  503. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js.map +0 -1
  504. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.css +0 -0
  505. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.css +0 -0
  506. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.docs.js +0 -6
  507. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.docs.js.map +0 -1
  508. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +0 -50
  509. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js.map +0 -1
  510. package/dist/collection/components/nv-datagridhead/nv-datagridhead.css +0 -0
  511. package/dist/collection/components/nv-datagridhead/nv-datagridhead.docs.js +0 -8
  512. package/dist/collection/components/nv-datagridhead/nv-datagridhead.docs.js.map +0 -1
  513. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +0 -23
  514. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js.map +0 -1
  515. package/dist/collection/components/nv-datagridrow/nv-datagridrow.css +0 -0
  516. package/dist/collection/components/nv-datagridrow/nv-datagridrow.docs.js +0 -8
  517. package/dist/collection/components/nv-datagridrow/nv-datagridrow.docs.js.map +0 -1
  518. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +0 -23
  519. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js.map +0 -1
  520. package/dist/collection/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.js +0 -2
  521. package/dist/collection/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.js.map +0 -1
  522. package/dist/collection/components/nv-tablebody/nv-tablebody.css +0 -0
  523. package/dist/collection/components/nv-tablebody/nv-tablebody.docs.js +0 -8
  524. package/dist/collection/components/nv-tablebody/nv-tablebody.docs.js.map +0 -1
  525. package/dist/collection/components/nv-tablebody/nv-tablebody.js +0 -23
  526. package/dist/collection/components/nv-tablebody/nv-tablebody.js.map +0 -1
  527. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.css +0 -0
  528. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.css +0 -0
  529. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.docs.js +0 -6
  530. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.docs.js.map +0 -1
  531. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +0 -116
  532. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js.map +0 -1
  533. package/dist/collection/components/nv-tablehead/nv-tablehead.css +0 -0
  534. package/dist/collection/components/nv-tablehead/nv-tablehead.docs.js +0 -8
  535. package/dist/collection/components/nv-tablehead/nv-tablehead.docs.js.map +0 -1
  536. package/dist/collection/components/nv-tablehead/nv-tablehead.js +0 -23
  537. package/dist/collection/components/nv-tablehead/nv-tablehead.js.map +0 -1
  538. package/dist/collection/components/nv-tablerow/nv-tablerow.css +0 -0
  539. package/dist/collection/components/nv-tablerow/nv-tablerow.docs.js +0 -8
  540. package/dist/collection/components/nv-tablerow/nv-tablerow.docs.js.map +0 -1
  541. package/dist/collection/components/nv-tablerow/nv-tablerow.js +0 -23
  542. package/dist/collection/components/nv-tablerow/nv-tablerow.js.map +0 -1
  543. package/dist/collection/dev/dev-components.js +0 -3
  544. package/dist/collection/dev/dev-components.js.map +0 -1
  545. package/dist/collection/dev/dev-forms.js +0 -3
  546. package/dist/collection/dev/dev-forms.js.map +0 -1
  547. package/dist/collection/dev/dev-root.js +0 -23
  548. package/dist/collection/dev/dev-root.js.map +0 -1
  549. package/dist/collection/dev/dev-utils.js +0 -54
  550. package/dist/collection/dev/dev-utils.js.map +0 -1
  551. package/dist/collection/global.js +0 -6
  552. package/dist/collection/global.js.map +0 -1
  553. package/dist/components/nv-datagridbody.d.ts +0 -11
  554. package/dist/components/nv-datagridbody.js +0 -38
  555. package/dist/components/nv-datagridbody.js.map +0 -1
  556. package/dist/components/nv-datagriddatacell.d.ts +0 -11
  557. package/dist/components/nv-datagriddatacell.js +0 -41
  558. package/dist/components/nv-datagriddatacell.js.map +0 -1
  559. package/dist/components/nv-datagridhead.d.ts +0 -11
  560. package/dist/components/nv-datagridhead.js +0 -38
  561. package/dist/components/nv-datagridhead.js.map +0 -1
  562. package/dist/components/nv-datagridrow.d.ts +0 -11
  563. package/dist/components/nv-datagridrow.js +0 -38
  564. package/dist/components/nv-datagridrow.js.map +0 -1
  565. package/dist/components/nv-tablebody.d.ts +0 -11
  566. package/dist/components/nv-tablebody.js +0 -38
  567. package/dist/components/nv-tablebody.js.map +0 -1
  568. package/dist/components/nv-tabledatacell.d.ts +0 -11
  569. package/dist/components/nv-tabledatacell.js +0 -61
  570. package/dist/components/nv-tabledatacell.js.map +0 -1
  571. package/dist/components/nv-tablehead.d.ts +0 -11
  572. package/dist/components/nv-tablehead.js +0 -38
  573. package/dist/components/nv-tablehead.js.map +0 -1
  574. package/dist/components/nv-tablerow.js +0 -38
  575. package/dist/components/nv-tablerow.js.map +0 -1
  576. package/dist/components/p-17714233.js +0 -1263
  577. package/dist/components/p-17714233.js.map +0 -1
  578. package/dist/components/p-56f71851.js.map +0 -1
  579. package/dist/components/p-802c9204.js.map +0 -1
  580. package/dist/components/p-91bf0cb6.js.map +0 -1
  581. package/dist/components/p-98ff0e5f.js.map +0 -1
  582. package/dist/components/p-a9a52105.js.map +0 -1
  583. package/dist/components/p-d20958c4.js.map +0 -1
  584. package/dist/components/p-dd34b97d.js +0 -90
  585. package/dist/components/p-dd34b97d.js.map +0 -1
  586. package/dist/esm/app-globals-0a94217b.js +0 -9
  587. package/dist/esm/app-globals-0a94217b.js.map +0 -1
  588. package/dist/esm/constants-0181211f.js.map +0 -1
  589. package/dist/esm/nv-datagridbody.entry.js +0 -20
  590. package/dist/esm/nv-datagridbody.entry.js.map +0 -1
  591. package/dist/esm/nv-datagriddatacell.entry.js +0 -21
  592. package/dist/esm/nv-datagriddatacell.entry.js.map +0 -1
  593. package/dist/esm/nv-datagridhead.entry.js +0 -20
  594. package/dist/esm/nv-datagridhead.entry.js.map +0 -1
  595. package/dist/esm/nv-datagridrow.entry.js +0 -20
  596. package/dist/esm/nv-datagridrow.entry.js.map +0 -1
  597. package/dist/esm/nv-tablebody.entry.js +0 -20
  598. package/dist/esm/nv-tablebody.entry.js.map +0 -1
  599. package/dist/esm/nv-tabledatacell.entry.js +0 -39
  600. package/dist/esm/nv-tabledatacell.entry.js.map +0 -1
  601. package/dist/esm/nv-tablehead.entry.js +0 -20
  602. package/dist/esm/nv-tablehead.entry.js.map +0 -1
  603. package/dist/esm/nv-tablerow.entry.js +0 -20
  604. package/dist/esm/nv-tablerow.entry.js.map +0 -1
  605. package/dist/native/p-02bb8184.entry.js +0 -2
  606. package/dist/native/p-09850aa9.entry.js +0 -2
  607. package/dist/native/p-09850aa9.entry.js.map +0 -1
  608. package/dist/native/p-10ba289c.entry.js +0 -2
  609. package/dist/native/p-10ba289c.entry.js.map +0 -1
  610. package/dist/native/p-1208abf2.entry.js +0 -2
  611. package/dist/native/p-1208abf2.entry.js.map +0 -1
  612. package/dist/native/p-130f6c47.entry.js.map +0 -1
  613. package/dist/native/p-180c45ff.entry.js +0 -2
  614. package/dist/native/p-180c45ff.entry.js.map +0 -1
  615. package/dist/native/p-1bb5a6bd.entry.js.map +0 -1
  616. package/dist/native/p-273d55e5.entry.js +0 -2
  617. package/dist/native/p-273d55e5.entry.js.map +0 -1
  618. package/dist/native/p-2aebf31b.entry.js +0 -2
  619. package/dist/native/p-2aebf31b.entry.js.map +0 -1
  620. package/dist/native/p-2f62f097.entry.js +0 -2
  621. package/dist/native/p-2f62f097.entry.js.map +0 -1
  622. package/dist/native/p-3c004551.entry.js.map +0 -1
  623. package/dist/native/p-46553ffd.entry.js +0 -2
  624. package/dist/native/p-46553ffd.entry.js.map +0 -1
  625. package/dist/native/p-4f11286d.entry.js.map +0 -1
  626. package/dist/native/p-51ad8bcd.entry.js +0 -2
  627. package/dist/native/p-51ad8bcd.entry.js.map +0 -1
  628. package/dist/native/p-54df2174.entry.js.map +0 -1
  629. package/dist/native/p-56f71851.js.map +0 -1
  630. package/dist/native/p-5f1a7e6e.entry.js +0 -2
  631. package/dist/native/p-892052c2.entry.js +0 -2
  632. package/dist/native/p-892052c2.entry.js.map +0 -1
  633. package/dist/native/p-8c1a6aa6.entry.js +0 -2
  634. package/dist/native/p-8c1a6aa6.entry.js.map +0 -1
  635. package/dist/native/p-8ee30013.entry.js +0 -2
  636. package/dist/native/p-8f4788b9.entry.js +0 -13
  637. package/dist/native/p-8f4788b9.entry.js.map +0 -1
  638. package/dist/native/p-99e7a452.entry.js.map +0 -1
  639. package/dist/native/p-aa2834e2.entry.js +0 -2
  640. package/dist/native/p-aa2834e2.entry.js.map +0 -1
  641. package/dist/native/p-ab5a8ce5.entry.js +0 -2
  642. package/dist/native/p-ab5a8ce5.entry.js.map +0 -1
  643. package/dist/native/p-bd6d9237.entry.js +0 -7
  644. package/dist/native/p-bd6d9237.entry.js.map +0 -1
  645. package/dist/native/p-beab7cbd.entry.js +0 -2
  646. package/dist/native/p-c398cdb4.entry.js +0 -2
  647. package/dist/native/p-c398cdb4.entry.js.map +0 -1
  648. package/dist/native/p-d776ed48.entry.js +0 -2
  649. package/dist/native/p-d776ed48.entry.js.map +0 -1
  650. package/dist/native/p-dc9dd5a7.entry.js +0 -2
  651. package/dist/native/p-dc9dd5a7.entry.js.map +0 -1
  652. package/dist/native/p-e3827605.entry.js.map +0 -1
  653. package/dist/native/p-e5a7596b.entry.js +0 -2
  654. package/dist/native/p-e5a7596b.entry.js.map +0 -1
  655. package/dist/native/p-e6f45df2.entry.js +0 -2
  656. package/dist/native/p-e6f45df2.entry.js.map +0 -1
  657. package/dist/native/p-ed47a702.entry.js +0 -2
  658. package/dist/native/p-ed47a702.entry.js.map +0 -1
  659. package/dist/native/p-f30ce086.entry.js +0 -2
  660. package/dist/native/p-f30ce086.entry.js.map +0 -1
  661. package/dist/native/p-f3fbdea6.js +0 -2
  662. package/dist/native/p-f3fbdea6.js.map +0 -1
  663. package/dist/types/components/nv-datagridbody/nv-datagridbody.d.ts +0 -7
  664. package/dist/types/components/nv-datagridbody/nv-datagridbody.docs.d.ts +0 -4
  665. package/dist/types/components/nv-datagriddatacell/nv-datagriddatacell.d.ts +0 -14
  666. package/dist/types/components/nv-datagriddatacell/nv-datagriddatacell.docs.d.ts +0 -4
  667. package/dist/types/components/nv-datagridhead/nv-datagridhead.d.ts +0 -7
  668. package/dist/types/components/nv-datagridhead/nv-datagridhead.docs.d.ts +0 -4
  669. package/dist/types/components/nv-datagridrow/nv-datagridrow.d.ts +0 -7
  670. package/dist/types/components/nv-datagridrow/nv-datagridrow.docs.d.ts +0 -4
  671. package/dist/types/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.d.ts +0 -21
  672. package/dist/types/components/nv-tablebody/nv-tablebody.d.ts +0 -7
  673. package/dist/types/components/nv-tablebody/nv-tablebody.docs.d.ts +0 -4
  674. package/dist/types/components/nv-tabledatacell/nv-tabledatacell.d.ts +0 -30
  675. package/dist/types/components/nv-tabledatacell/nv-tabledatacell.docs.d.ts +0 -4
  676. package/dist/types/components/nv-tablehead/nv-tablehead.d.ts +0 -7
  677. package/dist/types/components/nv-tablehead/nv-tablehead.docs.d.ts +0 -4
  678. package/dist/types/components/nv-tablerow/nv-tablerow.d.ts +0 -7
  679. package/dist/types/dev/dev-components.d.ts +0 -2
  680. package/dist/types/dev/dev-forms.d.ts +0 -2
  681. package/dist/types/dev/dev-utils.d.ts +0 -17
  682. package/dist/vscode-data.json +0 -4283
  683. /package/dist/native/{p-211f7b19.entry.js.map → p-15be3d96.entry.js.map} +0 -0
  684. /package/dist/native/{p-a06bafad.entry.js.map → p-359f0f53.entry.js.map} +0 -0
  685. /package/dist/native/{p-beab7cbd.entry.js.map → p-3be2c9a1.entry.js.map} +0 -0
  686. /package/dist/native/{p-d24586ed.entry.js.map → p-491f4605.entry.js.map} +0 -0
  687. /package/dist/native/{p-96902bb3.entry.js.map → p-8d6516a3.entry.js.map} +0 -0
  688. /package/dist/native/{p-5f1a7e6e.entry.js.map → p-951baf95.entry.js.map} +0 -0
  689. /package/dist/native/{p-a998f8df.entry.js.map → p-cda56476.entry.js.map} +0 -0
  690. /package/dist/native/{p-02bb8184.entry.js.map → p-d1bf4d77.entry.js.map} +0 -0
  691. /package/dist/native/{p-61d2cb2e.entry.js.map → p-e36e956b.entry.js.map} +0 -0
  692. /package/dist/native/{p-0bf35abc.entry.js.map → p-edee1c1f.entry.js.map} +0 -0
  693. /package/dist/native/{p-e192c25c.entry.js.map → p-f1585fc2.entry.js.map} +0 -0
  694. /package/dist/native/{p-d67b7502.entry.js.map → p-fde56f9c.entry.js.map} +0 -0
  695. /package/dist/types/{dev/dev-root.d.ts → utils/test/class.utils.test.d.ts} +0 -0
  696. /package/dist/types/{global.d.ts → utils/test/dom.utils.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"file":"nv-fielddropdown.entry.js","mappings":"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","names":["uuidv4"],"sources":["src/components/nv-fielddropdown/nv-fielddropdown.scss?tag=nv-fielddropdown","src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\n\nnv-fielddropdown {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include form-field-popover();\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n position: relative;\n width: 100%;\n min-height: 40px;\n\n input,\n p.non-filterable-text {\n @include form-field-input();\n width: 100%;\n padding-right: 2rem;\n flex-grow: 1;\n margin: 0;\n min-height: 100%;\n box-sizing: border-box;\n }\n\n .toggle-dropdown-icon {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n position: absolute;\n right: 50px;\n }\n }\n\n .non-filterable-text {\n display: block;\n border-radius: var(--form-field-radius);\n background-color: var(--nv-field-background);\n color: var(--components-form-field-content-text);\n font-size: var(--form-field-font-size);\n font-weight: 500;\n line-height: var(--form-field-line-height);\n box-sizing: border-box;\n cursor: pointer;\n height: 100%;\n min-height: 40px;\n\n span {\n display: inline-block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n}\n","import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { TextInputAutocomplete } from '../../utils/constants';\nimport { DropdownItemSelectedEventDetail } from '../nv-fielddropdownitem/DropdownItemSelectedEventDetail';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NVFieldDropDown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It's a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they've used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input's value is managed by the component's state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * type in it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyresult: string = 'No results found';\n\n /**\n * The text entered by the user for filtering dropdown items.\n */\n @State()\n filterText: string = '';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n /**\n * List of options available in the dropdown.\n * @description The options are passed as a JSON string.\n * @example options='[{\"label\": \"Option 1\", \"value\": \"option1\", \"selected\": true}, {\"label\": \"Option 2\", \"value\": \"option2\"}]'\n */\n @Prop({ reflect: true })\n readonly options?: string;\n\n /**\n * Options configuration for the dropdown items.\n */\n @State()\n parsedOptions: Array<{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Whether this option is pre-selected */\n selected?: boolean;\n }> = [];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n @Listen('itemSelected')\n handleItemSelected(event: CustomEvent<DropdownItemSelectedEventDetail>) {\n if (this.disabled || this.readonly) return;\n\n // Retrieve all nv-fielddropdownitem elements present in the dropdown.\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // For each item, remove the 'selected' attribute and the 'selected' class.\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n }\n });\n\n // Update the value and emit the event with the selected item.\n this.value = event.detail.value;\n (event.target as HTMLNvFielddropdownitemElement).setAttribute(\n 'selected',\n 'true',\n );\n (event.target as HTMLElement).classList.add('selected');\n this.dropdownItemSelected.emit(event.detail);\n\n // Close the popover after selecting.\n if (this.popoverElement) {\n this.popoverElement.hide();\n }\n }\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n if (newValue) {\n this.updateSelectedItem(newValue);\n }\n }\n\n /**\n * Watch for changes in the options prop\n * @param {string} newValue - The new value of the options prop\n */\n @Watch('options')\n handleOptionsChange(newValue: string) {\n if (newValue) {\n try {\n const parsedOpts = JSON.parse(newValue);\n this.parsedOptions = [...parsedOpts];\n\n // Handle pre-selected option\n const selectedOption = this.parsedOptions.find(opt => opt.selected);\n if (selectedOption) {\n this.value = selectedOption.value;\n // Wait for items to be rendered\n requestAnimationFrame(() => {\n this.updateSelectedItem(selectedOption.value);\n });\n }\n } catch (error) {\n console.error('Error parsing options:', error);\n this.parsedOptions = [];\n }\n } else {\n this.parsedOptions = [];\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n componentWillLoad() {\n // Initialize options if provided\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n if (this.value) {\n // If an initial value exists, set it as selected\n this.updateSelectedItem(this.value);\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Check again after complete rendering\n if (this.value) {\n this.updateSelectedItem(this.value);\n }\n }\n\n /**\n * Subscribe to click outside event.\n */\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // First, reset the filter to ensure all elements are visible\n this.resetFilter();\n\n // Then, handle the pre-selection\n this.setInitialSelection();\n\n // Finally, apply the filter if needed\n if (this.filterable && this.filterText) {\n this.filterItems();\n }\n }\n\n /**\n * Set the initial selection based on the current value and update the inputElement value.\n */\n private setInitialSelection() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item =>\n item.getAttribute('label') === this.value ||\n item.getAttribute('value') === this.value ||\n item.textContent?.trim() === this.value,\n );\n\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n this.value =\n selectedItem.getAttribute('label') ||\n selectedItem.getAttribute('value') ||\n selectedItem.textContent?.trim() ||\n '';\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n } else {\n console.warn('No matching item found for value:', this.value);\n }\n }\n\n /**\n * Unsubscribe from click outside event.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n /**\n * Handle click on the input container.\n * @param {MouseEvent} event - The click event.\n */\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return; // Do nothing if the dropdown is disabled or read-only\n }\n\n const target = event.target as HTMLElement;\n\n // Check if it is the paragraph or another part of the container\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n this.popoverElement.show();\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n /**\n * Handle input change.\n * @param {Event} event - The input event.\n */\n private handleInput = (event: Event) => {\n if (!this.filterable) return; // Do not filter if `filterable` is false\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.value = input.value; // Update the value\n this.valueChanged.emit(input.value); // Emit an event if needed\n this.filterItems(); // Update the visibility of items\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyresult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /**\n * Reset the filter and make all items visible.\n */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Handle click outside the component.\n * @param {MouseEvent} event - The click event.\n */\n private handleClickOutside(event: MouseEvent) {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n this.popoverElement.hide();\n }\n\n /**\n * Handle input focus.\n */\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle the state if the dropdown is disabled or read-only\n }\n this.open = true; // Force the popover to open\n };\n\n /**\n * Handle input blur.\n */\n private handleInputBlur = () => {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n this.open = false;\n this.popoverElement.hide(); // Close the popover if the focus is outside the component\n }\n }, 150);\n };\n\n /**\n * Toggle the dropdown popover.\n * @returns {void}\n */\n private togglePopover = (): void => {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n this.open = !this.open;\n if (this.open) {\n this.popoverElement.show();\n\n // If the dropdown is not filterable, focus on the first item\n if (!this.filterable) {\n this.focusFirstItem();\n }\n } else {\n this.popoverElement.hide();\n }\n };\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n this.popoverElement.show();\n\n if (!this.filterable) {\n // Focus on the first item if it is not filterable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover is defined before looking for items\n if (!this.popoverElement) {\n console.warn('Popover element is not defined');\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Verify if items exist\n if (items.length === 0) {\n console.warn('No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n this.popoverElement.hide();\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('No first item found to focus');\n }\n }\n\n private updateSelectedItem(value: string) {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Reset all items\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n // Find the item matching the value\n const matchingItem = items.find(item => {\n const itemLabel = item.getAttribute('label');\n const itemValue = item.getAttribute('value');\n const itemText = item.textContent?.trim();\n\n return itemLabel === value || itemValue === value || itemText === value;\n });\n\n if (matchingItem) {\n // Mark the item as selected\n matchingItem.setAttribute('selected', 'true');\n matchingItem.classList.add('selected');\n\n // Update the input\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n\n // Emit the selection event\n this.dropdownItemSelected.emit({\n value: value,\n label: matchingItem.getAttribute('label') || value,\n selected: true,\n disabled: matchingItem.hasAttribute('disabled'),\n });\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleKeyDown} // Handle the arrow keys here\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={0} // Add a tabindex to make it focusable\n onKeyDown={this.handleKeyDown} // Handle the arrow keys here\n onFocus={this.handleInputFocus}\n >\n <span>{this.value || this.placeholder}</span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopover}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n {/* The div with slot=\"content\" is the slot for the nv-popover content */}\n <div slot=\"content\">\n {/* The ul with slot=\"content\" is the slot for the nv-fielddropdown content itself */}\n <ul slot=\"content\">\n {this.parsedOptions.length > 0 ? (\n this.parsedOptions.map(option => (\n <nv-fielddropdownitem\n label={option.label}\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.value}\n />\n ))\n ) : (\n <slot name=\"content\"></slot>\n )}\n </ul>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-fielddropdown.entry.js","mappings":"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","names":["uuidv4"],"sources":["src/components/nv-fielddropdown/styles/nv-fielddropdown.scss?tag=nv-fielddropdown","src/components/nv-fielddropdown/nv-fielddropdown.tsx"],"sourcesContent":["@use \"./mixins\" as *;\n@import '../../../styles/form-field';\n\nnv-fielddropdown {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include form-field-popover();\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n @include input-wrapper-styles();\n }\n\n .input-container {\n @include form-field-input-container();\n @include input-container-styles();\n\n input,\n p.non-filterable-text {\n @include form-field-input();\n @include input-styles();\n }\n\n .toggle-dropdown-icon {\n @include toggle-dropdown-icon-styles();\n }\n\n nv-icon.validation {\n @include form-field-icon();\n @include validation-icon-styles();\n }\n }\n\n .non-filterable-text {\n @include non-filterable-text-styles();\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n}\n","import {\n Component,\n Host,\n h,\n Element,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Method,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputAutocomplete } from '../../utils/constants';\n\n/**\n * @slot content - Use a <ul></ul> tag for the slot, and place <nv-dropdownitem> elements inside.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n@Component({\n tag: 'nv-fielddropdown',\n styleUrl: 'styles/nv-fielddropdown.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFielddropdown {\n @Element() el: HTMLNvFielddropdownElement;\n private inputElement!: HTMLInputElement;\n private popoverElement!: HTMLNvPopoverElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * Display temporary text inside the input field to give users a hint about\n * what to type. It's a great way to provide examples or suggestions directly\n * in the field before they start typing.\n * The placeholder is displayed only when the filterable option is enabled.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions. It should be\n * unique within the form to avoid conflicts.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * State of the dropdown popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The autocomplete prop helps users fill out the input field faster by\n * suggesting entries they've used before, like their email or address.\n * You can turn it on to make forms more convenient or off to ensure users\n * always type in fresh data.\n */\n @Prop({ reflect: true })\n readonly autocomplete: `${TextInputAutocomplete}` = 'off';\n\n /**\n * Specifies the value of the input field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the input's value is managed by the component's state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the dropdown\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * type in it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * The text to display when no items match the filter.\n */\n @Prop({ reflect: true })\n readonly emptyResult: string = 'No results found';\n\n /**\n * Enables or disables the filtering feature for the dropdown items.\n */\n @Prop({ reflect: true, mutable: true })\n filterable: boolean = false;\n\n /**\n * List of options available in the dropdown. The options are passed as a JSON\n * string.\n *\n * @example\n * options=[{\n * \"label\": \"Option 1\",\n * \"value\": \"option1\",\n * \"selected\": true\n * },\n * {\n * \"label\": \"Option 2\",\n * \"value\": \"option2\"\n * }]\n */\n @Prop({ reflect: true })\n readonly options?: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n /** The text entered by the user for filtering dropdown items. */\n @State()\n filterText: string = '';\n\n @State()\n isFilterable: boolean = this.filterable;\n\n @State()\n selectedValues: Set<string> = new Set();\n\n /**\n * Options configuration for the dropdown items.\n */\n @State()\n parsedOptions: Array<{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Whether this option is pre-selected */\n selected?: boolean;\n }> = [];\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n /**\n * Event emitted when an item is clicked.\n */\n @Event()\n dropdownItemSelected: EventEmitter<\n HTMLNvFielddropdownitemElementEventMap['dropdownItemSelected']\n >;\n\n @Listen('dropdownItemSelected')\n handleDropdownItemSelected(\n event: CustomEvent<\n HTMLNvFielddropdownitemElementEventMap['dropdownItemSelected']\n >,\n ) {\n if (this.disabled || this.readonly) return;\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n if (item !== event.target) {\n item.removeAttribute('selected');\n } else {\n item.setAttribute('selected', 'true');\n }\n });\n\n this.value = event.detail.value;\n this.open = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Watch('filterable')\n watchFilterableHandler(newValue: boolean) {\n this.isFilterable = newValue;\n this.filterable = newValue;\n }\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n if (newValue) {\n this.updateSelectedItem(newValue);\n }\n }\n\n @Watch('options')\n handleOptionsChange(newValue: string) {\n if (newValue) {\n try {\n const parsedOpts = JSON.parse(newValue);\n this.parsedOptions = [...parsedOpts];\n const selectedOption = this.parsedOptions.find(opt => opt.selected);\n\n if (selectedOption) {\n this.value = selectedOption.value;\n requestAnimationFrame(() => {\n // Wait for items to be rendered\n this.updateSelectedItem(selectedOption.value);\n });\n }\n } catch (error) {\n console.error('nv-fielddropdown: error parsing options:', error);\n this.parsedOptions = [];\n }\n } else {\n this.parsedOptions = [];\n }\n }\n\n @Listen('blur', { capture: true })\n handleBlur(event: FocusEvent) {\n const target = event.relatedTarget;\n\n if (!(target instanceof Node) || !this.el.contains(target)) {\n this.open = false;\n }\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n if (!this.filterable) {\n // Focus on the first item if it is not filterable\n this.focusFirstItem();\n }\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty])'),\n ) as HTMLNvFielddropdownitemElement[];\n\n if (items.length === 0) {\n console.warn('No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.open = false;\n if (this.inputElement) {\n this.inputElement.blur();\n }\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Retrieves the current filter text entered by the user.\n * @returns {string} The filter text.\n */\n @Method()\n async getFilterText(): Promise<string> {\n return this.filterText;\n }\n\n /**\n * Set the initial selection based on the current value and update the\n * inputElement value.\n */\n private setInitialSelection() {\n if (!this.value) return;\n\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const selectedItem = items.find(\n item => item.getAttribute('value') === this.value,\n );\n\n items.forEach(item => {\n item.removeAttribute('selected');\n item.classList.remove('selected');\n });\n\n if (selectedItem) {\n selectedItem.setAttribute('selected', 'true');\n selectedItem.classList.add('selected');\n this.value = selectedItem.getAttribute('value');\n if (this.inputElement) {\n this.inputElement.value = this.value;\n }\n } else {\n console.warn('No matching item found for value:', this.value);\n }\n }\n\n private handleInputContainerClick = (event: MouseEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'P' || target.tagName === 'SPAN') {\n this.open = true;\n\n // Simulate focus to trigger \"focus-within\" style\n const inputContainer = this.el.querySelector(\n '.input-container',\n ) as HTMLElement;\n if (inputContainer) {\n inputContainer.classList.add('focus-within');\n\n // Remove the \"focus-within\" class after a delay or when the popover is closed\n const removeFocusWithin = () => {\n inputContainer.classList.remove('focus-within');\n };\n\n // Or remove the class when the popover is closed\n this.popoverElement.addEventListener('hide', removeFocusWithin);\n }\n }\n };\n\n private handleInput = (event: Event) => {\n if (!this.filterable) return;\n if (this.disabled || this.readonly) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.filterText = input.value.toLowerCase();\n this.filterItems();\n };\n\n /**\n * Filter dropdown items based on the text entered by the user.\n * If no items are found, display a message indicating no results.\n */\n private filterItems() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n // Remove the \"no results found\" item if it exists\n const existingEmptyItem = this.el.querySelector(\n 'nv-fielddropdownitem[data-empty]',\n );\n if (existingEmptyItem) {\n existingEmptyItem.remove();\n }\n\n let hasVisibleItems = false;\n\n // Iterate over all items and adjust their visibility\n items.forEach(item => {\n const textContent = item.textContent?.toLowerCase() || ''; // Get the textual content of the slot\n const value = item.value?.toLowerCase() || ''; // Get the value of the `value` attribute\n\n // Check if the filtered text is present either in the value or in the textual content\n const shouldShow =\n value.includes(this.filterText) ||\n textContent.includes(this.filterText);\n\n item.style.display = shouldShow ? '' : 'none'; // Hide or show the item\n\n if (shouldShow) {\n hasVisibleItems = true;\n }\n });\n\n // If no items are visible, add the \"no results found\" item\n if (!hasVisibleItems) {\n const emptyItem = document.createElement('nv-fielddropdownitem');\n emptyItem.setAttribute('data-empty', 'true');\n emptyItem.setAttribute('disabled', 'true');\n emptyItem.textContent = this.emptyResult;\n this.el.querySelector('ul[slot=\"content\"]')?.appendChild(emptyItem);\n }\n }\n\n /** Reset the filter and make all items visible. */\n private resetFilter() {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n items.forEach(item => {\n item.style.display = '';\n });\n }\n\n private handleClickOutside = (event: MouseEvent) => {\n if (\n this.el.contains(event.target as Node) ||\n (this.inputElement && this.inputElement.contains(event.target as Node))\n ) {\n return;\n }\n\n this.open = false;\n };\n\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) return;\n\n this.open = true;\n };\n\n private togglePopover = () => {\n if (this.disabled || this.readonly) return;\n\n this.open = !this.open;\n\n if (this.open && !this.filterable) {\n this.focusFirstItem();\n }\n };\n\n private updateHighlightedItem(\n items: HTMLNvFielddropdownitemElement[],\n index: number,\n ) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.focus();\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n }\n });\n }\n\n private focusFirstItem() {\n const firstItem = this.el.querySelector('nv-fielddropdownitem');\n if (firstItem) {\n (firstItem as HTMLElement).focus();\n this.updateHighlightedItem(\n Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[],\n 0,\n );\n } else {\n console.warn('nv-fielddropdown: no first item found to focus');\n }\n }\n\n private updateSelectedItem(value: string) {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const matchingItem = items.find(item => {\n const itemLabel = item.getAttribute('label');\n const itemValue = item.getAttribute('value');\n const itemText = item.textContent?.trim();\n\n return itemLabel === value || itemValue === value || itemText === value;\n });\n\n items.forEach(item => {\n if (item === matchingItem) {\n item.setAttribute('selected', '');\n } else {\n item.removeAttribute('selected');\n }\n });\n\n if (matchingItem && this.inputElement) {\n this.inputElement.value = value;\n }\n }\n\n private getSelectedLabel = (): string => {\n const items = Array.from(\n this.el.querySelectorAll('nv-fielddropdownitem'),\n ) as HTMLNvFielddropdownitemElement[];\n\n const matchingItem = items.find(\n item => item.getAttribute('value') === this.value,\n );\n return matchingItem\n ? matchingItem.label ??\n matchingItem.textContent?.trim() ??\n matchingItem.value\n : '';\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n this.resetFilter();\n this.setInitialSelection();\n\n if (this.filterable && this.filterText) {\n this.filterItems();\n }\n }\n\n componentWillLoad() {\n if (this.options) {\n this.handleOptionsChange(this.options);\n }\n\n if (this.value) {\n this.updateSelectedItem(this.value);\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // Check again after complete rendering\n if (this.value) {\n this.updateSelectedItem(this.value);\n }\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div\n class=\"input-container\"\n onClick={this.handleInputContainerClick}\n >\n <slot name=\"leading-input\"></slot>\n\n {this.isFilterable || this.disabled || this.readonly ? (\n <input\n id={this.inputId}\n type=\"search\"\n ref={e => (this.inputElement = e)}\n autofocus={this.autofocus}\n autocomplete={this.autocomplete}\n placeholder={this.placeholder}\n name={this.name}\n value={this.getSelectedLabel()}\n required={this.required}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleKeyDown}\n />\n ) : (\n <p\n id={this.inputId}\n class=\"non-filterable-text\"\n onClick={this.handleInputContainerClick}\n tabIndex={this.disabled ? -1 : 0}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleInputFocus}\n >\n <span>\n {this.getSelectedLabel() || this.value || this.placeholder}\n </span>\n </p>\n )}\n\n <nv-iconbutton\n class=\"toggle-dropdown-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide dropdown' : 'Show dropdown'}\n aria-pressed={this.open.toString()}\n onClick={this.togglePopover}\n tabIndex={this.disabled ? -1 : 0}\n />\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div slot=\"content\">\n {this.parsedOptions.length > 0 ? (\n <ul>\n {this.parsedOptions.map(option => (\n <nv-fielddropdownitem\n label={option.label}\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.value}\n />\n ))}\n </ul>\n ) : (\n <slot name=\"content\"></slot>\n )}\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,12 +1,13 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
2
 
3
- const nvFielddropdownitemCss = "nv-fielddropdownitem{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);font-weight:var(--menu-contextual-item-font-weight);font-size:var(--list-dropdown-font-size);line-height:var(--list-dropdown-line-height);color:var(--components-list-dropdown-item-label-default);border-radius:var(--list-dropdown-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-list-dropdown-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-fielddropdownitem[disabled]:not([disabled=false]){cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-fielddropdownitem .dropdown-item-text-wrapper{display:flex;flex-grow:1;align-items:center;justify-content:space-between}nv-fielddropdownitem [data-scope=text]{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nv-fielddropdownitem .selection-icon{color:var(--components-list-dropdown-item-label-default);align-self:center}";
3
+ const nvFielddropdownitemCss = "nv-fielddropdownitem{display:flex;gap:var(--spacing-2);flex-wrap:wrap;align-items:center;width:100%;padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);font-weight:var(--menu-contextual-item-font-weight);font-size:var(--list-dropdown-font-size);line-height:var(--list-dropdown-line-height);color:var(--components-list-dropdown-item-label-default);border-radius:var(--list-dropdown-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-list-dropdown-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-fielddropdownitem[disabled]:not([disabled=false]){cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-fielddropdownitem .text-wrapper{display:flex;flex-grow:1;align-items:center;justify-content:space-between}nv-fielddropdownitem [data-scope=text]{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nv-fielddropdownitem nv-icon[data-scope=selected]{color:var(--components-list-dropdown-item-label-default);align-self:center;margin-left:auto}";
4
4
  const NvFielddropdownitemStyle0 = nvFielddropdownitemCss;
5
5
 
6
6
  const NvFielddropdownitem = class {
7
7
  constructor(hostRef) {
8
8
  registerInstance(this, hostRef);
9
- this.itemSelected = createEvent(this, "itemSelected", 7);
9
+ this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
10
+ this.composed = false;
10
11
  /****************************************************************************/
11
12
  //#region PROPERTIES
12
13
  /**
@@ -17,43 +18,47 @@ const NvFielddropdownitem = class {
17
18
  * Indicates if the item is selected.
18
19
  */
19
20
  this.selected = false;
20
- this.handleClick = () => {
21
- if (!this.disabled) {
22
- let itemValue = this.value || '';
23
- if (!itemValue) {
24
- itemValue =
25
- Array.from(this.el.childNodes)
26
- .map(node => { var _a; return (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
27
- .filter(text => text && text.length > 0)
28
- .join(' ') || '';
29
- }
30
- this.selected = !this.selected; // Toggle the selected state
31
- this.itemSelected.emit({
32
- label: this.label,
33
- value: itemValue,
34
- selected: this.selected,
35
- disabled: this.disabled,
36
- });
37
- }
21
+ //#endregion EVENTS
22
+ /****************************************************************************/
23
+ //#region METHODS
24
+ this.handleSelected = () => {
25
+ if (this.disabled || this.selected)
26
+ return;
27
+ this.selected = true;
28
+ this.dropdownItemSelected.emit({
29
+ label: this.label,
30
+ value: this.value,
31
+ selected: this.selected,
32
+ disabled: this.disabled,
33
+ });
38
34
  };
39
35
  }
40
- //#endregion EVENTS
41
- /****************************************************************************/
42
- //#region METHODS
43
- /**
44
- * Utility function to check if a string is null, empty, or contains only whitespace.
45
- * @param {string | null | undefined} input - The string to check.
46
- * @returns {boolean} - Returns true if the string is null, empty, or contains only whitespace; otherwise, false.
47
- */
48
- isNullOrEmptyOrWhitespace(input) {
49
- return !input || input.trim().length === 0;
36
+ handleKeyDown(event) {
37
+ if (event.target !== this.el)
38
+ return;
39
+ if (event.key === 'Enter' || event.key === ' ') {
40
+ event.preventDefault();
41
+ this.handleSelected();
42
+ }
50
43
  }
51
44
  //#endregion METHODS
52
45
  /****************************************************************************/
46
+ //#region LIFECYCLE
47
+ componentWillLoad() {
48
+ this.composed = Boolean(this.el.children.length);
49
+ }
50
+ componentDidLoad() {
51
+ var _a;
52
+ if (!this.value) {
53
+ const fallback = (_a = this.label) !== null && _a !== void 0 ? _a : this.el.textContent;
54
+ this.value = fallback.replace(/\W+/g, ''); // Remove non-word characters
55
+ }
56
+ }
57
+ //#endregion LIFECYCLE
58
+ /****************************************************************************/
53
59
  //#region RENDER
54
60
  render() {
55
- const showDefaultLayout = this.isNullOrEmptyOrWhitespace(this.label);
56
- return (h(Host, { key: '8125c415bf5e94d054c4a6e36a6d4636e54c719f', role: "menuitem", tabindex: this.disabled ? '-1' : '0', onClick: this.handleClick, class: { selected: this.selected } }, showDefaultLayout ? (h("slot", null)) : (h("div", { class: "dropdown-item-text-wrapper" }, h("span", { "data-scope": "text" }, this.label), this.selected && (h("nv-icon", { name: "check", "aria-hidden": "true", class: "selection-icon" }))))));
61
+ return (h(Host, { key: 'aaa3f2ebc89268000413b1431fd69bf48a5270e0', role: "menuitem", tabindex: '-1', onClick: this.handleSelected }, h("slot", { key: '5ec8b34d1642c4978290db8e741d7b61db1166ef' }), !this.composed && (h("div", { key: '054bab6f0e0c1fe80666c115058d4adbbdfdef05', class: "text-wrapper" }, h("span", { key: 'eaba500c4e8cdc122a368e2329134c6499fa3827', "data-scope": "text" }, this.label))), this.selected && (h("nv-icon", { key: 'bdffe532360c437512485c93893c4fc0ecccb726', name: "check", "aria-hidden": "true", "data-scope": "selected" }))));
57
62
  }
58
63
  get el() { return getElement(this); }
59
64
  };
@@ -1 +1 @@
1
- {"file":"nv-fielddropdownitem.entry.js","mappings":";;AAAA,MAAM,sBAAsB,GAAG,isCAAisC,CAAC;AACjuC,kCAAe,sBAAsB;;MCmBxB,mBAAmB;IALhC;;;;;;;;QAeW,aAAQ,GAAY,KAAK,CAAC;;;;QAMnC,aAAQ,GAAY,KAAK,CAAC;QAwBlB,gBAAW,GAAG;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE;oBACd,SAAS;wBACP,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;6BAC3B,GAAG,CAAC,IAAI,cAAI,OAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,EAAA,CAAC;6BACrC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;6BACvC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;iBACtB;gBAED,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAE/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;aACJ;SACF,CAAC;KAgDH;;;;;;;;;IArCS,yBAAyB,CAAC,KAAgC;QAChE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;KAC5C;;;;IAMD,MAAM;QACJ,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErE,QACE,EAAC,IAAI,qDACH,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,EACpC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAEjC,iBAAiB,IAChB,eAAa,KAEb,WAAK,KAAK,EAAC,4BAA4B,IACrC,0BAAiB,MAAM,IAAE,IAAI,CAAC,KAAK,CAAQ,EAC1C,IAAI,CAAC,QAAQ,KACZ,eACE,IAAI,EAAC,OAAO,iBACA,MAAM,EAClB,KAAK,EAAC,gBAAgB,GACb,CACZ,CACG,CACP,CACI,EACP;KACH;;;;;;;","names":[],"sources":["src/components/nv-fielddropdownitem/nv-fielddropdownitem.scss?tag=nv-fielddropdownitem","src/components/nv-fielddropdownitem/nv-fielddropdownitem.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\nnv-fielddropdownitem {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);\n font-weight: var(--menu-contextual-item-font-weight);\n font-size: var(--list-dropdown-font-size);\n line-height: var(--list-dropdown-line-height);\n color: var(--components-list-dropdown-item-label-default);\n border-radius: var(--list-dropdown-item-radius);\n transition: background-color 150ms ease-out, color 150ms ease-out;\n\n\n cursor: pointer;\n\n &:hover,\n &:focus,\n &:focus-within {\n background-color: var(--components-list-dropdown-item-background-hover);\n color: var(--components-menu-contextual-item-content-hover);\n }\n\n &[disabled]:not([disabled='false']) {\n cursor: not-allowed;\n background-color: unset;\n color: var(--components-menu-contextual-item-content-disabled);\n }\n.dropdown-item-text-wrapper{\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: space-between;\n}\n [data-scope='text'] {\n flex-grow: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .selection-icon {\n color: var(--components-list-dropdown-item-label-default);\n align-self: center;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n} from '@stencil/core';\nimport { DropdownItemSelectedEventDetail } from './DropdownItemSelectedEventDetail';\n\n/**\n * @slot default - The content to be displayed inside the dropdown item.\n */\n\n@Component({\n tag: 'nv-fielddropdownitem',\n styleUrl: 'nv-fielddropdownitem.scss',\n shadow: false,\n})\nexport class NvFielddropdownitem {\n @Element() el: HTMLNvFielddropdownitemElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Disables the item, preventing any user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Indicates if the item is selected.\n */\n @Prop({ reflect: true, mutable: true })\n selected: boolean = false;\n\n /**\n * Value associated with the item.\n */\n @Prop({ reflect: true })\n readonly value?: string;\n\n /**\n * Label used as the value for the default layout.\n */\n @Prop({ reflect: true })\n readonly label?: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item is clicked.\n */\n @Event()\n itemSelected: EventEmitter<DropdownItemSelectedEventDetail>;\n\n private handleClick = () => {\n if (!this.disabled) {\n let itemValue = this.value || '';\n if (!itemValue) {\n itemValue =\n Array.from(this.el.childNodes)\n .map(node => node.textContent?.trim())\n .filter(text => text && text.length > 0)\n .join(' ') || '';\n }\n\n this.selected = !this.selected; // Toggle the selected state\n\n this.itemSelected.emit({\n label: this.label,\n value: itemValue,\n selected: this.selected,\n disabled: this.disabled,\n });\n }\n };\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Utility function to check if a string is null, empty, or contains only whitespace.\n * @param {string | null | undefined} input - The string to check.\n * @returns {boolean} - Returns true if the string is null, empty, or contains only whitespace; otherwise, false.\n */\n private isNullOrEmptyOrWhitespace(input: string | null | undefined): boolean {\n return !input || input.trim().length === 0;\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n const showDefaultLayout = this.isNullOrEmptyOrWhitespace(this.label);\n\n return (\n <Host\n role=\"menuitem\"\n tabindex={this.disabled ? '-1' : '0'}\n onClick={this.handleClick}\n class={{ selected: this.selected }}\n >\n {showDefaultLayout ? (\n <slot></slot>\n ) : (\n <div class=\"dropdown-item-text-wrapper\">\n <span data-scope=\"text\">{this.label}</span>\n {this.selected && (\n <nv-icon\n name=\"check\"\n aria-hidden=\"true\"\n class=\"selection-icon\"\n ></nv-icon>\n )}\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-fielddropdownitem.entry.js","mappings":";;AAAA,MAAM,sBAAsB,GAAG,utCAAutC,CAAC;AACvvC,kCAAe,sBAAsB;;MCkBxB,mBAAmB;IALhC;;;QAOU,aAAQ,GAAG,KAAK,CAAC;;;;;;QAShB,aAAQ,GAAY,KAAK,CAAC;;;;QAMnC,aAAQ,GAAY,KAAK,CAAC;;;;QAsDlB,mBAAc,GAAG;YACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAE3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;SACJ,CAAC;KAwCH;IA/DC,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO;QAErC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;;;;IAsBD,iBAAiB;QACf,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClD;IAED,gBAAgB;;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YACnD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC3C;KACF;;;;IAMD,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,IAChE,8DAAQ,EAEP,CAAC,IAAI,CAAC,QAAQ,KACb,4DAAK,KAAK,EAAC,cAAc,IACvB,2EAAiB,MAAM,IAAE,IAAI,CAAC,KAAK,CAAQ,CACvC,CACP,EAEA,IAAI,CAAC,QAAQ,KACZ,gEAAS,IAAI,EAAC,OAAO,iBAAa,MAAM,gBAAY,UAAU,GAAG,CAClE,CACI,EACP;KACH;;;;;;;","names":[],"sources":["src/components/nv-fielddropdownitem/styles/nv-fielddropdownitem.scss?tag=nv-fielddropdownitem","src/components/nv-fielddropdownitem/nv-fielddropdownitem.tsx"],"sourcesContent":["@use \"./mixins\" as *;\n\nnv-fielddropdownitem {\n @include root-styles();\n\n &[disabled]:not([disabled='false']) {\n @include disabled-styles();\n }\n\n .text-wrapper {\n @include text-wrapper-styles();\n }\n\n [data-scope='text'] {\n @include text-styles();\n }\n\n nv-icon[data-scope='selected'] {\n @include selected-icon-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n Listen,\n} from '@stencil/core';\n\n/**\n * @slot default - The content to be displayed inside the dropdown item.\n */\n@Component({\n tag: 'nv-fielddropdownitem',\n styleUrl: 'styles/nv-fielddropdownitem.scss',\n shadow: false,\n})\nexport class NvFielddropdownitem {\n @Element() el: HTMLNvFielddropdownitemElement;\n private composed = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Disables the item, preventing any user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Indicates if the item is selected.\n */\n @Prop({ reflect: true, mutable: true })\n selected: boolean = false;\n\n /**\n * Value associated with the item. This is recommended and required for proper\n * form management.\n */\n @Prop({ reflect: true, mutable: true })\n value?: string;\n\n /**\n * Specifies the text label for the dropdown item.\n *\n * When no default slot is provided, this label is rendered as the item's\n * visible text. If the default slot is supplied, the label isn’t directly\n * displayed but is used as the selected text (on the dropdown trigger). If\n * no label is explicitly set, the component will automatically derive the\n * label from the text content of the default slot.\n */\n @Prop({ reflect: true })\n readonly label?: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when the dropdown item is selected.\n */\n @Event()\n dropdownItemSelected: EventEmitter<{\n /** The value associated with the item. */\n label?: string;\n /** The value associated with the item. */\n value: string;\n /** Indicates if the item is selected. */\n selected: boolean;\n /** Disables the item, preventing any user interaction. */\n disabled: boolean;\n }>;\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (event.target !== this.el) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleSelected();\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n private handleSelected = () => {\n if (this.disabled || this.selected) return;\n\n this.selected = true;\n this.dropdownItemSelected.emit({\n label: this.label,\n value: this.value,\n selected: this.selected,\n disabled: this.disabled,\n });\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.composed = Boolean(this.el.children.length);\n }\n\n componentDidLoad() {\n if (!this.value) {\n const fallback = this.label ?? this.el.textContent;\n this.value = fallback.replace(/\\W+/g, ''); // Remove non-word characters\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"menuitem\" tabindex={'-1'} onClick={this.handleSelected}>\n <slot />\n\n {!this.composed && (\n <div class=\"text-wrapper\">\n <span data-scope=\"text\">{this.label}</span>\n </div>\n )}\n\n {this.selected && (\n <nv-icon name=\"check\" aria-hidden=\"true\" data-scope=\"selected\" />\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,13 +1,12 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-fac2d5d2.js';
2
2
  import { v as v4 } from './v4-a79185f4.js';
3
3
 
4
- 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 nv-popover [data-scope=popover]{width:100%;display:flex;flex-direction:column;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect .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, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;width:100%;min-height:40px;}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect 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 .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)}.no-results-message{text-align:center;padding:10px;color:var(--components-form-text-description-error)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}";
4
+ 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 nv-popover [data-scope=popover]{width:100%;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect .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, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;width:100%;min-height:40px;}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect 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 .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)}.no-results-message{text-align:center;padding:10px;color:var(--components-form-text-description-error)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}";
5
5
  const NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
6
6
 
7
7
  const NvFieldmultiselect = class {
8
8
  constructor(hostRef) {
9
9
  registerInstance(this, hostRef);
10
- this.dropdownItemSelected = createEvent(this, "dropdownItemSelected", 7);
11
10
  this.valueChanged = createEvent(this, "valueChanged", 7);
12
11
  this.multiselectChange = createEvent(this, "multiselectChange", 7);
13
12
  /****************************************************************************/
@@ -30,7 +29,7 @@ const NvFieldmultiselect = class {
30
29
  /**
31
30
  * The text to display when no items match the filter.
32
31
  */
33
- this.emptyresult = 'No results found';
32
+ this.emptyResult = 'No results found';
34
33
  /**
35
34
  * Marks the input field as required.
36
35
  */
@@ -93,6 +92,12 @@ const NvFieldmultiselect = class {
93
92
  */
94
93
  this.modeState = 'options'; // Default value
95
94
  this.isHandlingEscape = false;
95
+ /**
96
+ * Applies focus to the input field as soon as the component is mounted. This
97
+ * is equivalent to setting the native autofocus attribute on an <input>
98
+ * element.
99
+ */
100
+ this.autofocus = false;
96
101
  /**x
97
102
  * Handle badge close for options mode.
98
103
  */
@@ -716,7 +721,7 @@ const NvFieldmultiselect = class {
716
721
  if (!hasVisibleItems) {
717
722
  const emptyMessage = document.createElement('li');
718
723
  emptyMessage.setAttribute('data-empty', 'true');
719
- emptyMessage.textContent = this.emptyresult;
724
+ emptyMessage.textContent = this.emptyResult;
720
725
  emptyMessage.classList.add('no-results-message');
721
726
  ul.appendChild(emptyMessage);
722
727
  }
@@ -807,7 +812,7 @@ const NvFieldmultiselect = class {
807
812
  if (!hasVisibleItems) {
808
813
  const emptyMessage = document.createElement('li');
809
814
  emptyMessage.setAttribute('data-empty', 'true');
810
- emptyMessage.textContent = this.emptyresult;
815
+ emptyMessage.textContent = this.emptyResult;
811
816
  emptyMessage.classList.add('no-results-message');
812
817
  ul.appendChild(emptyMessage);
813
818
  }
@@ -836,10 +841,6 @@ const NvFieldmultiselect = class {
836
841
  .toLowerCase() // Convert to lowercase
837
842
  .trim(); // Remove leading and trailing whitespace
838
843
  }
839
- /**
840
- * Handle click outside the component.
841
- * @param {MouseEvent} event - The click event.
842
- */
843
844
  handleClickOutside(event) {
844
845
  if (this.el.contains(event.target) ||
845
846
  (this.inputElement && this.inputElement.contains(event.target))) {
@@ -979,7 +980,7 @@ const NvFieldmultiselect = class {
979
980
  return;
980
981
  const emptyMessage = document.createElement('li');
981
982
  emptyMessage.setAttribute('data-empty', 'true');
982
- emptyMessage.textContent = this.emptyresult;
983
+ emptyMessage.textContent = this.emptyResult;
983
984
  emptyMessage.classList.add('no-results-message');
984
985
  ul.appendChild(emptyMessage);
985
986
  }
@@ -1021,7 +1022,7 @@ const NvFieldmultiselect = class {
1021
1022
  * @returns {any} The JSX for options mode
1022
1023
  */
1023
1024
  renderOptionsMode() {
1024
- return (h(Host, null, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect" }, h("slot", { name: "leading-input" }), h("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 ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open }, h("span", null, this.value || this.placeholder))), h("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 })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: { 'max-height': this.maxHeight, 'overflow-y': 'auto' } }, h("ul", { role: "content" }, this.parsedOptions.map(option => (h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.selectedValues.includes(option.value), disabled: option.disabled }))), h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
1025
+ return (h(Host, null, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect" }, h("slot", { name: "leading-input" }), h("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 ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.value, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown })) : (h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open }, h("span", null, this.value || this.placeholder))), h("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 })), h("slot", { name: "after-input" })), h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: { 'max-height': this.maxHeight, 'overflow-y': 'auto' } }, h("ul", { role: "content" }, this.parsedOptions.map(option => (h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.selectedValues.includes(option.value), disabled: option.disabled }))), h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
1025
1026
  }
1026
1027
  /**
1027
1028
  * Renders the component in slots mode