@nova-design-system/nova-webcomponents 3.15.0 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/dist/cjs/{index-c56424e5.js → index-93d3b2f8.js} +9 -6
  2. package/dist/cjs/index-93d3b2f8.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +6 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/native.cjs.js +2 -2
  7. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
  10. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  17. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-button.cjs.entry.js +3 -9
  20. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-buttongroup.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +177 -10
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-dialog.cjs.entry.js +32 -29
  28. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
  38. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
  41. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  43. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  45. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
  47. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  49. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-fieldtime.cjs.entry.js +25 -12
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nv-menu.cjs.entry.js +24 -9
  63. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-notification.cjs.entry.js +2 -2
  66. package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  68. package/dist/cjs/nv-popover.cjs.entry.js +67 -61
  69. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  71. package/dist/cjs/nv-split.cjs.entry.js +339 -0
  72. package/dist/cjs/nv-split.cjs.entry.js.map +1 -0
  73. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-table.cjs.entry.js +216 -310
  75. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  78. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  79. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  80. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
  81. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  82. package/dist/collection/collection-manifest.json +1 -1
  83. package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
  84. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  85. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  86. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
  87. package/dist/collection/components/nv-alert/nv-alert.css +1 -1
  88. package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
  89. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
  90. package/dist/collection/components/nv-button/nv-button.js +1 -13
  91. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  92. package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
  93. package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
  94. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
  95. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
  96. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  97. package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
  98. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  99. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
  100. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +3 -3
  101. package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  103. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
  104. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
  105. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  106. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
  107. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
  108. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  109. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
  110. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  111. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  114. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
  116. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
  117. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
  118. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
  119. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
  120. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
  121. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  122. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  123. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
  124. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
  125. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
  127. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  128. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
  129. package/dist/collection/components/nv-icon/nv-icons.js +6 -1
  130. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  131. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
  132. package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
  133. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  134. package/dist/collection/components/nv-menu/nv-menu.js +26 -8
  135. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  136. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  137. package/dist/collection/components/nv-notification/styles/nv-notification.css +2 -2
  138. package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
  139. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  140. package/dist/collection/components/nv-popover/nv-popover.js +66 -60
  141. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  142. package/dist/collection/components/nv-split/nv-split.docs.js +41 -0
  143. package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -0
  144. package/dist/collection/components/nv-split/nv-split.js +549 -0
  145. package/dist/collection/components/nv-split/nv-split.js.map +1 -0
  146. package/dist/collection/components/nv-split/styles/nv-split.css +96 -0
  147. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  148. package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
  149. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  150. package/dist/collection/components/nv-table/nv-table.js +68 -496
  151. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  152. package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
  153. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
  154. package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
  155. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
  156. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
  157. package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
  158. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
  159. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  160. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
  161. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  162. package/dist/components/index.js +7 -2
  163. package/dist/components/index.js.map +1 -1
  164. package/dist/components/nv-accordion-item.js +1 -1
  165. package/dist/components/nv-accordion.js +10 -10
  166. package/dist/components/nv-accordion.js.map +1 -1
  167. package/dist/components/nv-alert.js +3 -3
  168. package/dist/components/nv-alert.js.map +1 -1
  169. package/dist/components/nv-avatar.js +3 -3
  170. package/dist/components/nv-avatar.js.map +1 -1
  171. package/dist/components/nv-badge.js +1 -1
  172. package/dist/components/nv-breadcrumb.js +4 -4
  173. package/dist/components/nv-breadcrumb.js.map +1 -1
  174. package/dist/components/nv-breadcrumbs.js +1 -1
  175. package/dist/components/nv-button.js +1 -1
  176. package/dist/components/nv-buttongroup.js +1 -1
  177. package/dist/components/nv-calendar.js +1 -1
  178. package/dist/components/nv-col.js +1 -1
  179. package/dist/components/nv-datagrid.js +174 -7
  180. package/dist/components/nv-datagrid.js.map +1 -1
  181. package/dist/components/nv-datagridcolumn.js +1 -1
  182. package/dist/components/nv-dialog.js +37 -34
  183. package/dist/components/nv-dialog.js.map +1 -1
  184. package/dist/components/nv-dialogfooter.js +1 -1
  185. package/dist/components/nv-dialogheader.js +1 -1
  186. package/dist/components/nv-fieldcheckbox.js +1 -1
  187. package/dist/components/nv-fielddate.js +57 -32
  188. package/dist/components/nv-fielddate.js.map +1 -1
  189. package/dist/components/nv-fielddaterange.js +74 -48
  190. package/dist/components/nv-fielddaterange.js.map +1 -1
  191. package/dist/components/nv-fielddropdown.js +40 -13
  192. package/dist/components/nv-fielddropdown.js.map +1 -1
  193. package/dist/components/nv-fielddropdownitem.js +1 -1
  194. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  195. package/dist/components/nv-fieldmultiselect.js +196 -164
  196. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  197. package/dist/components/nv-fieldnumber.js +1 -1
  198. package/dist/components/nv-fieldpassword.js +5 -5
  199. package/dist/components/nv-fieldpassword.js.map +1 -1
  200. package/dist/components/nv-fieldradio.js +2 -2
  201. package/dist/components/nv-fieldradio.js.map +1 -1
  202. package/dist/components/nv-fieldselect.js +5 -5
  203. package/dist/components/nv-fieldselect.js.map +1 -1
  204. package/dist/components/nv-fieldslider.js +6 -6
  205. package/dist/components/nv-fieldslider.js.map +1 -1
  206. package/dist/components/nv-fieldtext.js +1 -1
  207. package/dist/components/nv-fieldtextarea.js +2 -2
  208. package/dist/components/nv-fieldtextarea.js.map +1 -1
  209. package/dist/components/nv-fieldtime.js +31 -17
  210. package/dist/components/nv-fieldtime.js.map +1 -1
  211. package/dist/components/nv-icon.js +1 -1
  212. package/dist/components/nv-iconbutton.js +1 -1
  213. package/dist/components/nv-loader.js +1 -1
  214. package/dist/components/nv-menu.js +30 -13
  215. package/dist/components/nv-menu.js.map +1 -1
  216. package/dist/components/nv-menuitem.js +1 -1
  217. package/dist/components/nv-notification.js +3 -3
  218. package/dist/components/nv-notification.js.map +1 -1
  219. package/dist/components/nv-notificationcontainer.js +1 -1
  220. package/dist/components/nv-popover.js +1 -1
  221. package/dist/components/nv-row.js +1 -1
  222. package/dist/components/{nv-tablecolumn.d.ts → nv-split.d.ts} +4 -4
  223. package/dist/components/nv-split.js +366 -0
  224. package/dist/components/nv-split.js.map +1 -0
  225. package/dist/components/nv-stack.js +2 -2
  226. package/dist/components/nv-table.js +216 -328
  227. package/dist/components/nv-table.js.map +1 -1
  228. package/dist/components/nv-toggle.js +2 -2
  229. package/dist/components/nv-toggle.js.map +1 -1
  230. package/dist/components/nv-togglebutton.js +1 -1
  231. package/dist/components/nv-togglebuttongroup.js +2 -2
  232. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  233. package/dist/components/nv-tooltip.js +1 -1
  234. package/dist/components/{p-00cbf2a1.js → p-0d5ed1d7.js} +3 -3
  235. package/dist/components/p-0d5ed1d7.js.map +1 -0
  236. package/dist/components/{p-54161bad.js → p-0e6f41c7.js} +2 -2
  237. package/dist/components/{p-54161bad.js.map → p-0e6f41c7.js.map} +1 -1
  238. package/dist/components/{p-0c42fafb.js → p-0fd23531.js} +6 -6
  239. package/dist/components/{p-0c42fafb.js.map → p-0fd23531.js.map} +1 -1
  240. package/dist/components/{p-a823b8e9.js → p-1639703f.js} +2 -2
  241. package/dist/components/{p-a823b8e9.js.map → p-1639703f.js.map} +1 -1
  242. package/dist/components/{p-e5c62ea8.js → p-2cc83e0c.js} +3 -3
  243. package/dist/components/{p-e5c62ea8.js.map → p-2cc83e0c.js.map} +1 -1
  244. package/dist/components/{p-3763c9c4.js → p-31478080.js} +3 -3
  245. package/dist/components/{p-3763c9c4.js.map → p-31478080.js.map} +1 -1
  246. package/dist/components/{p-178fa27e.js → p-378e3127.js} +6 -6
  247. package/dist/components/{p-178fa27e.js.map → p-378e3127.js.map} +1 -1
  248. package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
  249. package/dist/components/p-429e01f3.js.map +1 -0
  250. package/dist/components/p-47d499b4.js +88 -0
  251. package/dist/components/p-47d499b4.js.map +1 -0
  252. package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
  253. package/dist/components/p-5829b9f7.js.map +1 -0
  254. package/dist/components/{p-ee8944f3.js → p-63595ea1.js} +68 -62
  255. package/dist/components/p-63595ea1.js.map +1 -0
  256. package/dist/components/{p-1af3591a.js → p-6f2b257e.js} +3 -3
  257. package/dist/components/{p-1af3591a.js.map → p-6f2b257e.js.map} +1 -1
  258. package/dist/components/{p-4fc01a78.js → p-7112612c.js} +5 -5
  259. package/dist/components/p-7112612c.js.map +1 -0
  260. package/dist/components/{p-7426b20f.js → p-715e5235.js} +3 -3
  261. package/dist/components/{p-7426b20f.js.map → p-715e5235.js.map} +1 -1
  262. package/dist/components/{p-31e262bd.js → p-7b5102c8.js} +5 -5
  263. package/dist/components/{p-31e262bd.js.map → p-7b5102c8.js.map} +1 -1
  264. package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
  265. package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
  266. package/dist/components/p-9e7468e3.js +185 -0
  267. package/dist/components/p-9e7468e3.js.map +1 -0
  268. package/dist/components/{p-75200cc0.js → p-df5d76a5.js} +3 -3
  269. package/dist/components/{p-75200cc0.js.map → p-df5d76a5.js.map} +1 -1
  270. package/dist/components/{p-51459a44.js → p-f2bac2aa.js} +4 -4
  271. package/dist/components/{p-51459a44.js.map → p-f2bac2aa.js.map} +1 -1
  272. package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +9 -6
  273. package/dist/esm/index-dc2723f3.js.map +1 -0
  274. package/dist/esm/index.js +6 -1
  275. package/dist/esm/index.js.map +1 -1
  276. package/dist/esm/loader.js +3 -3
  277. package/dist/esm/native.js +3 -3
  278. package/dist/esm/nv-accordion-item.entry.js +2 -2
  279. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  280. package/dist/esm/nv-accordion.entry.js +6 -6
  281. package/dist/esm/nv-accordion.entry.js.map +1 -1
  282. package/dist/esm/nv-alert.entry.js +2 -2
  283. package/dist/esm/nv-alert.entry.js.map +1 -1
  284. package/dist/esm/nv-avatar.entry.js +2 -2
  285. package/dist/esm/nv-avatar.entry.js.map +1 -1
  286. package/dist/esm/nv-badge_2.entry.js +1 -1
  287. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  288. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  289. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  290. package/dist/esm/nv-button.entry.js +3 -9
  291. package/dist/esm/nv-button.entry.js.map +1 -1
  292. package/dist/esm/nv-buttongroup.entry.js +1 -1
  293. package/dist/esm/nv-calendar.entry.js +1 -1
  294. package/dist/esm/nv-col.entry.js +1 -1
  295. package/dist/esm/nv-datagrid.entry.js +172 -5
  296. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  297. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  298. package/dist/esm/nv-dialog.entry.js +32 -29
  299. package/dist/esm/nv-dialog.entry.js.map +1 -1
  300. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  301. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  302. package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
  303. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  304. package/dist/esm/nv-fielddate.entry.js +51 -26
  305. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  306. package/dist/esm/nv-fielddaterange.entry.js +68 -42
  307. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  308. package/dist/esm/nv-fielddropdown.entry.js +33 -7
  309. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  310. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  311. package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
  312. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  313. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  314. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  315. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  316. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  317. package/dist/esm/nv-fieldradio.entry.js +2 -2
  318. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  319. package/dist/esm/nv-fieldselect.entry.js +2 -2
  320. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  321. package/dist/esm/nv-fieldslider.entry.js +2 -2
  322. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  323. package/dist/esm/nv-fieldtext.entry.js +2 -2
  324. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  325. package/dist/esm/nv-fieldtextarea.entry.js +2 -2
  326. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  327. package/dist/esm/nv-fieldtime.entry.js +25 -12
  328. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  329. package/dist/esm/nv-icon.entry.js +2 -2
  330. package/dist/esm/nv-icon.entry.js.map +1 -1
  331. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  332. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  333. package/dist/esm/nv-menu.entry.js +24 -9
  334. package/dist/esm/nv-menu.entry.js.map +1 -1
  335. package/dist/esm/nv-menuitem.entry.js +1 -1
  336. package/dist/esm/nv-notification.entry.js +2 -2
  337. package/dist/esm/nv-notification.entry.js.map +1 -1
  338. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  339. package/dist/esm/nv-popover.entry.js +67 -61
  340. package/dist/esm/nv-popover.entry.js.map +1 -1
  341. package/dist/esm/nv-row.entry.js +1 -1
  342. package/dist/esm/nv-split.entry.js +335 -0
  343. package/dist/esm/nv-split.entry.js.map +1 -0
  344. package/dist/esm/nv-stack.entry.js +2 -2
  345. package/dist/esm/nv-table.entry.js +216 -310
  346. package/dist/esm/nv-table.entry.js.map +1 -1
  347. package/dist/esm/nv-toggle.entry.js +2 -2
  348. package/dist/esm/nv-toggle.entry.js.map +1 -1
  349. package/dist/esm/nv-togglebutton.entry.js +1 -1
  350. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  351. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  352. package/dist/esm/nv-tooltip.entry.js +1 -1
  353. package/dist/native/index.esm.js +1 -1
  354. package/dist/native/index.esm.js.map +1 -1
  355. package/dist/native/native.css +1 -1
  356. package/dist/native/native.esm.js +1 -1
  357. package/dist/native/native.esm.js.map +1 -1
  358. package/dist/native/p-107e80c6.entry.js +2 -0
  359. package/dist/native/p-107e80c6.entry.js.map +1 -0
  360. package/dist/native/{p-5c697133.entry.js → p-112d096c.entry.js} +2 -2
  361. package/dist/native/p-14e622e1.entry.js +2 -0
  362. package/dist/native/p-14e622e1.entry.js.map +1 -0
  363. package/dist/native/p-217de553.entry.js +2 -0
  364. package/dist/native/p-217de553.entry.js.map +1 -0
  365. package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
  366. package/dist/native/p-2364aefa.entry.js +2 -0
  367. package/dist/native/p-2364aefa.entry.js.map +1 -0
  368. package/dist/native/p-23ee0384.entry.js +2 -0
  369. package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
  370. package/dist/native/p-26513cbd.entry.js +2 -0
  371. package/dist/native/p-26513cbd.entry.js.map +1 -0
  372. package/dist/native/p-278613a3.entry.js +2 -0
  373. package/dist/native/{p-6cb6679b.entry.js.map → p-278613a3.entry.js.map} +1 -1
  374. package/dist/native/p-2dfd786f.entry.js +2 -0
  375. package/dist/native/{p-29df974e.entry.js.map → p-2dfd786f.entry.js.map} +1 -1
  376. package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
  377. package/dist/native/p-3060df80.js.map +1 -0
  378. package/dist/native/p-4dc7483d.entry.js +2 -0
  379. package/dist/native/{p-c7b7ffaf.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
  380. package/dist/native/p-4eaf417d.entry.js +13 -0
  381. package/dist/native/p-4eaf417d.entry.js.map +1 -0
  382. package/dist/native/p-5039ceb8.entry.js +2 -0
  383. package/dist/native/p-5039ceb8.entry.js.map +1 -0
  384. package/dist/native/{p-08322093.entry.js → p-52d2c0ae.entry.js} +2 -2
  385. package/dist/native/p-638967bf.entry.js +2 -0
  386. package/dist/native/p-638967bf.entry.js.map +1 -0
  387. package/dist/native/{p-19090193.entry.js → p-647a0765.entry.js} +2 -2
  388. package/dist/native/p-68dc02be.entry.js +2 -0
  389. package/dist/native/p-68dc02be.entry.js.map +1 -0
  390. package/dist/native/p-6d427897.entry.js +2 -0
  391. package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
  392. package/dist/native/{p-1504e28b.entry.js → p-701b48a4.entry.js} +2 -2
  393. package/dist/native/p-7c9bf981.entry.js +2 -0
  394. package/dist/native/p-835abdb9.entry.js +2 -0
  395. package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
  396. package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
  397. package/dist/native/p-88f9fca5.entry.js +2 -0
  398. package/dist/native/p-88f9fca5.entry.js.map +1 -0
  399. package/dist/native/{p-d2c9247b.entry.js → p-8e423742.entry.js} +3 -3
  400. package/dist/native/{p-d2c9247b.entry.js.map → p-8e423742.entry.js.map} +1 -1
  401. package/dist/native/{p-d882f417.entry.js → p-91fab6c2.entry.js} +2 -2
  402. package/dist/native/p-91fab6c2.entry.js.map +1 -0
  403. package/dist/native/p-95184ea2.entry.js +2 -0
  404. package/dist/native/p-95184ea2.entry.js.map +1 -0
  405. package/dist/native/p-9613087c.entry.js +2 -0
  406. package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
  407. package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
  408. package/dist/native/p-a6fc987a.entry.js +2 -0
  409. package/dist/native/p-a6fc987a.entry.js.map +1 -0
  410. package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
  411. package/dist/native/p-acada158.entry.js +2 -0
  412. package/dist/native/p-acada158.entry.js.map +1 -0
  413. package/dist/native/p-b06f0e61.entry.js +2 -0
  414. package/dist/native/p-b06f0e61.entry.js.map +1 -0
  415. package/dist/native/p-b4c15f25.entry.js +2 -0
  416. package/dist/native/p-b4c15f25.entry.js.map +1 -0
  417. package/dist/native/{p-74b129e9.entry.js → p-bcf41cd0.entry.js} +2 -2
  418. package/dist/native/{p-c66565f8.entry.js → p-cb0293ec.entry.js} +2 -2
  419. package/dist/native/p-ce97ce24.entry.js +2 -0
  420. package/dist/native/p-ce97ce24.entry.js.map +1 -0
  421. package/dist/native/p-d0db5e72.entry.js +2 -0
  422. package/dist/native/p-d0db5e72.entry.js.map +1 -0
  423. package/dist/native/p-d7f444fb.entry.js +2 -0
  424. package/dist/native/p-d7f444fb.entry.js.map +1 -0
  425. package/dist/native/p-d878e90a.entry.js +2 -0
  426. package/dist/native/p-d878e90a.entry.js.map +1 -0
  427. package/dist/native/{p-e2c99ce2.entry.js → p-d94bf052.entry.js} +2 -2
  428. package/dist/native/p-ddc41f1f.entry.js +2 -0
  429. package/dist/native/p-ddc41f1f.entry.js.map +1 -0
  430. package/dist/native/p-f30e0be6.entry.js +2 -0
  431. package/dist/native/p-f30e0be6.entry.js.map +1 -0
  432. package/dist/native/p-f3c73492.entry.js +2 -0
  433. package/dist/native/{p-b32d0a5a.entry.js.map → p-f3c73492.entry.js.map} +1 -1
  434. package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
  435. package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
  436. package/dist/types/components/nv-button/nv-button.d.ts +0 -1
  437. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
  438. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
  439. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
  440. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
  441. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
  442. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
  443. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  444. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
  445. package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
  446. package/dist/types/components/nv-split/nv-split.d.ts +128 -0
  447. package/dist/types/components/nv-split/nv-split.docs.d.ts +4 -0
  448. package/dist/types/components/nv-table/nv-table.d.ts +6 -87
  449. package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
  450. package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
  451. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
  452. package/dist/types/components.d.ts +102 -200
  453. package/dist/vscode-data.json +43 -41
  454. package/hydrate/index.js +1148 -783
  455. package/hydrate/index.mjs +1148 -783
  456. package/package.json +10 -10
  457. package/dist/cjs/dom.utils-4d43f69a.js +0 -170
  458. package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
  459. package/dist/cjs/index-c56424e5.js.map +0 -1
  460. package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
  461. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
  462. package/dist/collection/components/nv-table/nv-table.css +0 -35
  463. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
  464. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
  465. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
  466. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
  467. package/dist/components/nv-tablecolumn.js +0 -38
  468. package/dist/components/nv-tablecolumn.js.map +0 -1
  469. package/dist/components/p-00cbf2a1.js.map +0 -1
  470. package/dist/components/p-4fc01a78.js.map +0 -1
  471. package/dist/components/p-51876ca1.js.map +0 -1
  472. package/dist/components/p-5d14ba3f.js +0 -88
  473. package/dist/components/p-5d14ba3f.js.map +0 -1
  474. package/dist/components/p-95857e4f.js +0 -191
  475. package/dist/components/p-95857e4f.js.map +0 -1
  476. package/dist/components/p-aff3ed68.js.map +0 -1
  477. package/dist/components/p-cb34aa4f.js +0 -167
  478. package/dist/components/p-cb34aa4f.js.map +0 -1
  479. package/dist/components/p-ee8944f3.js.map +0 -1
  480. package/dist/esm/dom.utils-ac71e0ef.js +0 -167
  481. package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
  482. package/dist/esm/index-a1936cd0.js.map +0 -1
  483. package/dist/esm/nv-tablecolumn.entry.js +0 -17
  484. package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
  485. package/dist/native/p-0a99c6fb.entry.js +0 -2
  486. package/dist/native/p-0a99c6fb.entry.js.map +0 -1
  487. package/dist/native/p-1ad1bff9.entry.js +0 -2
  488. package/dist/native/p-1ad1bff9.entry.js.map +0 -1
  489. package/dist/native/p-1c83f540.entry.js +0 -2
  490. package/dist/native/p-1c83f540.entry.js.map +0 -1
  491. package/dist/native/p-224b1a01.entry.js +0 -2
  492. package/dist/native/p-224b1a01.entry.js.map +0 -1
  493. package/dist/native/p-234cfa2e.entry.js +0 -2
  494. package/dist/native/p-2781637d.entry.js +0 -2
  495. package/dist/native/p-29df974e.entry.js +0 -2
  496. package/dist/native/p-29f68e07.entry.js +0 -2
  497. package/dist/native/p-45506c37.entry.js +0 -2
  498. package/dist/native/p-45506c37.entry.js.map +0 -1
  499. package/dist/native/p-48774d0c.entry.js +0 -13
  500. package/dist/native/p-48774d0c.entry.js.map +0 -1
  501. package/dist/native/p-4ec61dec.entry.js +0 -2
  502. package/dist/native/p-4ec61dec.entry.js.map +0 -1
  503. package/dist/native/p-5f0776cb.entry.js +0 -2
  504. package/dist/native/p-5f0776cb.entry.js.map +0 -1
  505. package/dist/native/p-6c7a9a21.entry.js +0 -2
  506. package/dist/native/p-6c7a9a21.entry.js.map +0 -1
  507. package/dist/native/p-6cb6679b.entry.js +0 -2
  508. package/dist/native/p-6d13a851.entry.js +0 -2
  509. package/dist/native/p-6d13a851.entry.js.map +0 -1
  510. package/dist/native/p-87784622.entry.js +0 -2
  511. package/dist/native/p-87784622.entry.js.map +0 -1
  512. package/dist/native/p-92931ab8.entry.js +0 -2
  513. package/dist/native/p-9a46baa9.entry.js +0 -2
  514. package/dist/native/p-9a46baa9.entry.js.map +0 -1
  515. package/dist/native/p-a34beedf.entry.js +0 -2
  516. package/dist/native/p-a34beedf.entry.js.map +0 -1
  517. package/dist/native/p-a69dbcef.entry.js +0 -2
  518. package/dist/native/p-a69dbcef.entry.js.map +0 -1
  519. package/dist/native/p-b32d0a5a.entry.js +0 -2
  520. package/dist/native/p-bc01787b.entry.js +0 -2
  521. package/dist/native/p-bc01787b.entry.js.map +0 -1
  522. package/dist/native/p-c7b7ffaf.entry.js +0 -2
  523. package/dist/native/p-cb34aa4f.js +0 -2
  524. package/dist/native/p-cb34aa4f.js.map +0 -1
  525. package/dist/native/p-cea942b9.entry.js +0 -2
  526. package/dist/native/p-cea942b9.entry.js.map +0 -1
  527. package/dist/native/p-d0a33e64.js.map +0 -1
  528. package/dist/native/p-d0ef1bbb.entry.js +0 -2
  529. package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
  530. package/dist/native/p-d882f417.entry.js.map +0 -1
  531. package/dist/native/p-dd023fd6.entry.js +0 -2
  532. package/dist/native/p-dd023fd6.entry.js.map +0 -1
  533. package/dist/native/p-e765a624.entry.js +0 -2
  534. package/dist/native/p-e765a624.entry.js.map +0 -1
  535. package/dist/native/p-f0cbfb3d.entry.js +0 -2
  536. package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
  537. package/dist/native/p-f5120223.entry.js +0 -2
  538. package/dist/native/p-fa177c39.entry.js +0 -2
  539. package/dist/native/p-fa177c39.entry.js.map +0 -1
  540. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
  541. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
  542. /package/dist/native/{p-5c697133.entry.js.map → p-112d096c.entry.js.map} +0 -0
  543. /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
  544. /package/dist/native/{p-08322093.entry.js.map → p-52d2c0ae.entry.js.map} +0 -0
  545. /package/dist/native/{p-19090193.entry.js.map → p-647a0765.entry.js.map} +0 -0
  546. /package/dist/native/{p-1504e28b.entry.js.map → p-701b48a4.entry.js.map} +0 -0
  547. /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
  548. /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
  549. /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
  550. /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
  551. /package/dist/native/{p-74b129e9.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
  552. /package/dist/native/{p-c66565f8.entry.js.map → p-cb0293ec.entry.js.map} +0 -0
  553. /package/dist/native/{p-e2c99ce2.entry.js.map → p-d94bf052.entry.js.map} +0 -0
  554. /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{r as e,c as o,h as t,H as n,g as a}from"./p-3060df80.js";import{c as r}from"./p-8a1a6e56.js";import{v as i}from"./p-f5ff676c.js";const l='nv-toggle{display:inline-flex;align-items:flex-start;gap:var(--form-gap-x);position:relative}nv-toggle:not([disabled],[readonly]) input,nv-toggle:not([disabled],[readonly]) label{cursor:pointer}nv-toggle.label-placement-before{flex-direction:row-reverse}nv-toggle[disabled]{opacity:0.5}nv-toggle label{align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-toggle label.visually-hidden{position:absolute;padding:0;border:0;overflow:hidden;white-space:nowrap;width:1px;height:1px;margin:-1px;clip:rect(0, 0, 0, 0)}nv-toggle .input-container{position:relative;color:var(--components-form-shape-foreground-default)}nv-toggle .input-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--components-form-shape-foreground-disabled)}nv-toggle .input-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-toggle-width);height:var(--form-toggle-height);flex-direction:column;align-items:flex-start;border-radius:var(--form-toggle-radius);border-width:var(--form-toggle-border-width);border-style:solid;border-color:var(--components-toggle-border-default);background:var(--components-toggle-background-default)}nv-toggle .input-container input[type=checkbox]::after{content:"";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-toggle-shape-default);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:25%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:hover{border-color:var(--components-toggle-border-hover)}nv-toggle .input-container input[type=checkbox]:hover::after{background-color:var(--components-toggle-shape-hover)}nv-toggle .input-container input[type=checkbox]:focus{border-color:var(--components-toggle-border-default)}nv-toggle .input-container input[type=checkbox]:focus::after{background-color:var(--components-toggle-shape-default)}nv-toggle .input-container input[type=checkbox]:focus,nv-toggle .input-container input[type=checkbox]:focus-within{outline:none}nv-toggle .input-container input[type=checkbox]:focus-visible,nv-toggle .input-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-toggle .input-container input[type=checkbox]:checked{background:var(--components-toggle-background-default-checked);border-color:var(--components-toggle-border-default-checked)}nv-toggle .input-container input[type=checkbox]:checked::after{content:"";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-toggle-shape-default-checked);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:75%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:checked:focus{background:var(--components-toggle-background-default-checked);border-color:var(--components-toggle-border-default-checked)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]){box-shadow:unset;background:var(--components-toggle-background-disabled);border-color:var(--components-toggle-border-default)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked{background:var(--components-toggle-background-disabled-checked);border-color:var(--components-toggle-border-disabled-checked)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked::after{background-color:var(--components-toggle-shape-disabled-checked)}nv-toggle .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:450;line-height:var(--form-description-line-height)}nv-toggle .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}';const c=l;const s=class{constructor(t){e(this,t);this.checkedChanged=o(this,"checkedChanged",7);this.inputId=i();this.hideLabel=false;this.checked=false;this.disabled=false;this.readonly=false}onCheckedChanged(e){this.checkedChanged.emit(e)}handleChange(e){const o=e.target;if(o.type==="checkbox"&&o.id===this.inputId){if(this.readonly||this.disabled){e.preventDefault();return}this.checked=o.checked}}render(){return t(n,{key:"0f440b59ac0c32d9abe9577668d7045081819b49",class:r(this.labelPlacement==="before"&&"label-placement-before")},t("div",{key:"4289435e34eb31a8e59e00cefcba2e17e98bd03a",class:"input-container"},t("input",{key:"1b7d05f77fd32cece9eed2e6cf79c7e2e707f64c",type:"checkbox",id:this.inputId,name:this.name,autocomplete:"off",value:this.value,checked:Boolean(this.checked),disabled:this.disabled||this.readonly,readonly:this.readonly})),t("div",{key:"6d78d7e80eb790bbead21bba6108329f9ded3746",class:"text-container"},(this.label||this.el.querySelector('[slot="label"]'))&&t("label",{key:"524a2c2542a45945bddb688c5dff6c9426d58570",htmlFor:this.inputId,class:r(this.hideLabel&&"visually-hidden")},t("slot",{key:"59eda4b826602062620e7167acf3c8de0f77ebef",name:"label"},this.label)),(this.description||this.el.querySelector('[slot="description"]'))&&t("div",{key:"6e8412879ed60fc6806464432348bd52483e3567",class:"description"},t("slot",{key:"85a876130569a5a4051e271eaf1cf49593a014a6",name:"description"},this.description))))}static get formAssociated(){return true}get el(){return a(this)}static get watchers(){return{checked:["onCheckedChanged"]}}};s.style=c;export{s as nv_toggle};
2
+ //# sourceMappingURL=p-14e622e1.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nvToggleCss","NvToggleStyle0","NvToggle","constructor","hostRef","this","inputId","uuidv4","hideLabel","checked","disabled","readonly","onCheckedChanged","checkedChanged","emit","handleChange","event","target","type","id","preventDefault","render","h","Host","key","class","clsx","labelPlacement","name","autocomplete","value","Boolean","label","el","querySelector","htmlFor","description"],"sources":["src/components/nv-toggle/nv-toggle.scss?tag=nv-toggle","src/components/nv-toggle/nv-toggle.tsx"],"sourcesContent":["@use \"../../styles/utils\" as utils;\n@import \"../../styles/focus-ring\";\n\n@mixin root-styles() {\n display: inline-flex;\n align-items: flex-start;\n gap: var(--form-gap-x);\n position: relative;\n\n &:not([disabled], [readonly]) {\n input,\n label {\n cursor: pointer;\n }\n }\n}\n\n@mixin label-before-styles() {\n flex-direction: row-reverse;\n}\n\n@mixin label-styles() {\n align-self: stretch;\n color: var(--components-form-text-label-default);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-label-font-size);\n font-style: normal;\n font-weight: var(--font-weight-medium-emphasis);\n line-height: var(--form-label-line-height);\n}\n\n@mixin description-styles() {\n align-self: stretch;\n color: var(--components-form-text-description-default);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-description-font-size);\n font-style: normal;\n font-weight: 450;\n line-height: var(--form-description-line-height);\n}\n\n@mixin text-container-styles() {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1 0 0;\n}\n\n@mixin input-container-styles() {\n position: relative;\n color: var(--components-form-shape-foreground-default);\n\n &:has(input[type=\"checkbox\"]:disabled:not([readonly])) {\n color: var(--components-form-shape-foreground-disabled);\n }\n}\n\n@mixin input-styles() {\n appearance: none;\n position: relative;\n display: flex;\n width: var(--form-toggle-width);\n height: var(--form-toggle-height);\n flex-direction: column;\n align-items: flex-start;\n border-radius: var(--form-toggle-radius);\n border-width: var(--form-toggle-border-width);\n border-style: solid;\n border-color: var(--components-toggle-border-default);\n background: var(--components-toggle-background-default);\n\n &::after {\n content: '';\n display: block;\n width: var(--form-toggle-switch-dot-default);\n height: var(--form-toggle-switch-dot-default);\n background-color: var(--components-toggle-shape-default);\n border-radius: var(--radius-rounded-full);\n position: absolute;\n top: 50%;\n left: 25%;\n transform: translate(-50%, -50%);\n }\n\n &:hover {\n border-color: var(--components-toggle-border-hover); \n \n &::after {\n background-color: var(--components-toggle-shape-hover);\n }\n }\n\n &:focus {\n border-color: var(--components-toggle-border-default);\n\n &::after {\n background-color: var(--components-toggle-shape-default);\n }\n }\n\n @include focus-ring();\n\n &:checked {\n background: var(--components-toggle-background-default-checked);\n border-color: var(--components-toggle-border-default-checked);\n\n &::after {\n content: '';\n display: block;\n width: var(--form-toggle-switch-dot-default);\n height: var(--form-toggle-switch-dot-default);\n background-color: var(--components-toggle-shape-default-checked);\n border-radius: var(--radius-rounded-full);\n position: absolute;\n top: 50%;\n left: 75%;\n transform: translate(-50%, -50%);\n }\n\n &:focus {\n background: var(--components-toggle-background-default-checked);\n border-color: var(--components-toggle-border-default-checked);\n }\n }\n\n &:disabled:not([readonly]) {\n box-shadow: unset;\n background: var(--components-toggle-background-disabled);\n border-color: var(--components-toggle-border-default);\n\n &:checked {\n background: var(--components-toggle-background-disabled-checked);\n border-color: var(--components-toggle-border-disabled-checked);\n &::after {\n background-color: var(--components-toggle-shape-disabled-checked);\n }\n }\n }\n}\n\nnv-toggle {\n @include root-styles();\n\n &.label-placement-before {\n @include label-before-styles();\n }\n\n &[disabled] {\n // TODO: Find a way to use the --components-form-opacity-disabled variable properly, right now it outputs a value of 50px instead of 0.5.\n // opacity: var(--components-form-opacity-disabled); Error: Invalid value for --components-form-opacity-disabled (expected a <number> but got \"50px\")\n opacity: 0.5;\n }\n label {\n @include label-styles();\n\n &.visually-hidden {\n @include utils.visually-hidden();\n }\n }\n\n .input-container {\n @include input-container-styles();\n\n input[type=\"checkbox\"] {\n @include input-styles();\n }\n }\n\n .description {\n @include description-styles();\n }\n\n .text-container {\n @include text-container-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Watch,\n Event,\n EventEmitter,\n Listen,\n} from '@stencil/core';\nimport clsx from 'clsx';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { type LabelPlacement } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-toggle',\n styleUrl: 'nv-toggle.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvToggle {\n @Element() el!: HTMLNvToggleElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the radio button’s input element and the for attribute of\n * the associated label. If no ID is provided, a random one will be\n * automatically generated to ensure unique identification, facilitating\n * proper label association and accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * The name attribute for the toggle input, used to reference the form data\n * after submission.\n */\n @Prop({ reflect: true })\n readonly name?: string;\n\n /**\n * The value attribute of the toggle input, representing the value sent on\n * form submission when the toggle is checked.\n */\n @Prop({ reflect: true })\n readonly value?: string;\n\n /** The label displayed next to the toggle.*/\n @Prop({ reflect: true })\n readonly label?: string;\n\n /**\n * Determines the position of the label relative to the toggle, either\n * 'start' (before) or 'end' (after).\n */\n @Prop({ reflect: true })\n readonly labelPlacement: `${LabelPlacement}`;\n\n /**\n * Hides the label visually while still keeping it available for screen\n * readers.\n */\n @Prop({ reflect: true })\n readonly hideLabel: boolean = false;\n\n /**\n * A description providing additional context or information about the\n * toggle.\n */\n @Prop({ reflect: true })\n readonly description?: string;\n\n /** Indicates whether the toggle is checked or not. */\n @Prop({ reflect: true, mutable: true })\n checked: boolean = false;\n\n /** Disables the toggle, preventing user interaction. */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Sets the toggle to read-only, preventing user changes but still allowing\n * focus and selection of text.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the checked state changes.\n * @bind checked\n */\n @Event()\n checkedChanged: EventEmitter<boolean>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Watches for changes to the checked state and emits the new value.\n * @param {boolean} checked - The new value of the checked state.\n */\n @Watch('checked')\n onCheckedChanged(checked: boolean) {\n this.checkedChanged.emit(checked);\n }\n\n /**\n * Listens for the change event on the toggle input element and updates the checked state.\n * the checked state of the host elements.\n * @param {Event} event - The change event.\n */\n @Listen('change')\n handleChange(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (target.type === 'checkbox' && target.id === this.inputId) {\n if (this.readonly || this.disabled) {\n event.preventDefault();\n return;\n }\n\n this.checked = target.checked;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n class={clsx(\n this.labelPlacement === 'before' && 'label-placement-before',\n )}\n >\n <div class=\"input-container\">\n <input\n type=\"checkbox\"\n id={this.inputId}\n name={this.name}\n autocomplete=\"off\"\n value={this.value}\n checked={Boolean(this.checked)}\n disabled={this.disabled || this.readonly}\n readonly={this.readonly}\n />\n </div>\n\n <div class=\"text-container\">\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label\n htmlFor={this.inputId}\n class={clsx(this.hideLabel && 'visually-hidden')}\n >\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"wIAAA,MAAMA,EAAc,gpIACpB,MAAAC,EAAeD,E,MCyBFE,EAAQ,MANrB,WAAAC,CAAAC,G,yDAmBWC,KAAAC,QAAkBC,IAgClBF,KAAAG,UAAqB,MAW9BH,KAAAI,QAAmB,MAIVJ,KAAAK,SAAoB,MAOpBL,KAAAM,SAAoB,K,CAsB7B,gBAAAC,CAAiBH,GACfJ,KAAKQ,eAAeC,KAAKL,E,CAS3B,YAAAM,CAAaC,GACX,MAAMC,EAASD,EAAMC,OAErB,GAAIA,EAAOC,OAAS,YAAcD,EAAOE,KAAOd,KAAKC,QAAS,CAC5D,GAAID,KAAKM,UAAYN,KAAKK,SAAU,CAClCM,EAAMI,iBACN,M,CAGFf,KAAKI,QAAUQ,EAAOR,O,EAQ1B,MAAAY,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAOC,EACLrB,KAAKsB,iBAAmB,UAAY,2BAGtCL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBACTH,EAAA,SAAAE,IAAA,2CACEN,KAAK,WACLC,GAAId,KAAKC,QACTsB,KAAMvB,KAAKuB,KACXC,aAAa,MACbC,MAAOzB,KAAKyB,MACZrB,QAASsB,QAAQ1B,KAAKI,SACtBC,SAAUL,KAAKK,UAAYL,KAAKM,SAChCA,SAAUN,KAAKM,YAInBW,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBACPpB,KAAK2B,OAAS3B,KAAK4B,GAAGC,cAAc,oBACpCZ,EAAA,SAAAE,IAAA,2CACEW,QAAS9B,KAAKC,QACdmB,MAAOC,EAAKrB,KAAKG,WAAa,oBAE9Bc,EAAA,QAAAE,IAAA,2CAAMI,KAAK,SAASvB,KAAK2B,SAI3B3B,KAAK+B,aACL/B,KAAK4B,GAAGC,cAAc,0BACtBZ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACTH,EAAA,QAAAE,IAAA,2CAAMI,KAAK,eAAevB,KAAK+B,e","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as o,f as t,h as n,H as i,g as s}from"./p-3060df80.js";const r="nv-accordion{display:block;border:var(--spacing-px) solid var(--color-content-low-border);border-radius:var(--radius-rounded-lg)}nv-accordion .nv-accordion__footer{padding:var(--spacing-3);background:var(--color-level-05-background);border-radius:0 0 var(--radius-rounded-lg) var(--radius-rounded-lg);margin-top:calc(var(--spacing-px) * -1);border-top:var(--spacing-px) solid var(--color-content-low-border)}nv-accordion .nv-accordion__footer:empty{display:none}";const a=r;const d=class{constructor(t){e(this,t);this.openIndexesChanged=o(this,"openIndexesChanged",7);this.data=[];this.mode="accordion";this.openIndexes=[];this.updatingFromInternal=false}async open(e){this.toggleItem(e,true)}async close(e){this.toggleItem(e,false)}toggleItem(e,o){const t=Array.from(this.el.querySelectorAll("nv-accordion-item"));const n=t[e];if(!n||n.disabled){console.warn("[toggleItem] Item not found or disabled:",e);this.openIndexesChanged.emit([...this.openIndexes||[]]);return}let i=[...this.openIndexes||[]];const s=i.includes(e);if(this.mode==="accordion"){i=o===false||o===undefined&&s?[]:[e]}else{if(o===false){i=i.filter((o=>o!==e))}else if(o===true&&!s){i.push(e)}else if(o===undefined){i=s?i.filter((o=>o!==e)):[...i,e]}}this.updatingFromInternal=true;this.openIndexes=[...i];this.updateChildrenState();this.updatingFromInternal=false;this.openIndexesChanged.emit([...i])}async updateChildrenState(){const e=Array.from(this.el.querySelectorAll("nv-accordion-item"));e.forEach(((e,o)=>{const n=(this.openIndexes||[]).includes(o);e.open=n;e.mode=this.mode;e.setAttribute("aria-expanded",n?"true":"false");t(e)}))}onItemToggle(e){if(this.updatingFromInternal){return}const o=Array.from(this.el.querySelectorAll("nv-accordion-item"));const t=e.target;const n=o.indexOf(t);if(n!==-1){this.toggleItem(n,e.detail)}else{console.warn("[onItemToggle] Target item not found in items list")}}onOpenIndexesChange(e,o){if(!this.updatingFromInternal&&e!==undefined&&e!==o){this.updateChildrenState()}}onModeChange(){this.updateChildrenState()}componentWillLoad(){if(this.openIndexes===undefined){this.openIndexes=[]}}async componentDidLoad(){var e;const o=Array.from(this.el.querySelectorAll("nv-accordion-item"));if(!((e=this.data)===null||e===void 0?void 0:e.length)&&(!this.openIndexes||this.openIndexes.length===0)){const e=o.map(((e,o)=>e.hasAttribute("open")||e.open?o:-1)).filter((e=>e!==-1));if(e.length>0){this.updatingFromInternal=true;this.openIndexes=[...e];this.updatingFromInternal=false;this.openIndexesChanged.emit([...this.openIndexes])}}await this.updateChildrenState()}render(){var e;return n(i,{key:"b7fa476c7830d6c5715ce53e42ad37253942e0e1",role:"list",class:"nv-accordion"},((e=this.data)===null||e===void 0?void 0:e.length)?this.data.map(((e,o)=>{var t;return n("nv-accordion-item",{key:(t=e.id)!==null&&t!==void 0?t:o,itemTitle:e.title,disabled:e.disabled,open:(this.openIndexes||[]).includes(o),mode:this.mode},e.subtitle?n("div",{slot:"header"},n("div",{class:"nv-accordion-item__header-content"},n("span",{class:"nv-accordion-item__title"},e.title),n("span",{class:"nv-accordion-item__subtitle"},e.subtitle))):null,n("div",{slot:"content"},e.content),e.footer&&n("div",{slot:"footer"},e.footer))})):n("slot",null))}get el(){return s(this)}static get watchers(){return{openIndexes:["onOpenIndexesChange"],mode:["onModeChange"]}}};d.style=a;export{d as nv_accordion};
2
+ //# sourceMappingURL=p-217de553.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nvAccordionCss","NvAccordionStyle0","NvAccordion","constructor","hostRef","this","data","mode","openIndexes","updatingFromInternal","open","index","toggleItem","close","forceOpen","items","Array","from","el","querySelectorAll","item","disabled","console","warn","openIndexesChanged","emit","isOpen","includes","undefined","filter","i","push","updateChildrenState","forEach","shouldBeOpen","setAttribute","forceUpdate","onItemToggle","event","targetItem","target","indexOf","detail","onOpenIndexesChange","newValue","oldValue","onModeChange","componentWillLoad","componentDidLoad","_a","length","childOpenIndexes","map","hasAttribute","render","h","Host","key","role","class","id","itemTitle","title","subtitle","slot","content","footer"],"sources":["src/components/nv-accordion/styles/nv-accordion.scss?tag=nv-accordion","src/components/nv-accordion/nv-accordion.tsx"],"sourcesContent":["@use \"./mixins\" as *;\n\nnv-accordion {\n @include accordion-root();\n\n .nv-accordion__footer {\n @include accordion-footer();\n\n &:empty {\n @include accordion-footer-empty();\n }\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Listen,\n Element,\n forceUpdate,\n Watch,\n} from '@stencil/core';\n\n/**\n * @slot default - Slot for custom content (optional, ignored if data is provided)\n */\n@Component({\n tag: 'nv-accordion',\n styleUrl: 'styles/nv-accordion.scss',\n shadow: false,\n})\nexport class NvAccordion {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Data to display as a list of items (title, subtitle, content).\n */\n @Prop({ reflect: false })\n readonly data: {\n /** Unique identifier of the item */\n id: string;\n /** Item title */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Main content */\n content: string;\n /** Optional footer */\n footer?: string;\n /** Disabled state */\n disabled?: boolean;\n }[] = [];\n\n /**\n * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)\n */\n @Prop({ reflect: true })\n readonly mode: 'accordion' | 'multi' = 'accordion';\n\n /**\n * Index of open items (external control possible)\n */\n @Prop({ reflect: false, mutable: true })\n openIndexes?: number[] = [];\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n\n @State()\n private updatingFromInternal: boolean = false;\n\n /**\n * Reference to host element to access children\n */\n @Element() el!: HTMLNvAccordionElement;\n\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Event emitted when an item's open state changes\n * @bind openIndexes\n */\n @Event()\n openIndexesChanged: EventEmitter<number[]>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens an item by its index (Public API)\n * @param {number} index Index of the item to open\n */\n @Method()\n async open(index: number) {\n this.toggleItem(index, true);\n }\n\n /**\n * Closes an item by its index (Public API)\n * @param {number} index Index of the item to close\n */\n @Method()\n async close(index: number) {\n this.toggleItem(index, false);\n }\n\n /**\n * Toggles an item's state (internal)\n * @param {number} index Item index\n * @param {boolean} [forceOpen] Force open (true) or close (false)\n */\n private toggleItem(index: number, forceOpen?: boolean) {\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n const item = items[index];\n\n if (!item || item.disabled) {\n console.warn('[toggleItem] Item not found or disabled:', index);\n this.openIndexesChanged.emit([...(this.openIndexes || [])]);\n return;\n }\n\n let openIndexes = [...(this.openIndexes || [])];\n const isOpen = openIndexes.includes(index);\n\n if (this.mode === 'accordion') {\n openIndexes =\n forceOpen === false || (forceOpen === undefined && isOpen)\n ? []\n : [index];\n } else {\n if (forceOpen === false) {\n openIndexes = openIndexes.filter(i => i !== index);\n } else if (forceOpen === true && !isOpen) {\n openIndexes.push(index);\n } else if (forceOpen === undefined) {\n openIndexes = isOpen\n ? openIndexes.filter(i => i !== index)\n : [...openIndexes, index];\n }\n }\n\n this.updatingFromInternal = true;\n this.openIndexes = [...openIndexes];\n this.updateChildrenState();\n this.updatingFromInternal = false;\n\n this.openIndexesChanged.emit([...openIndexes]);\n }\n\n /**\n * Updates the open state of child elements based on openIndexes\n */\n private async updateChildrenState() {\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n\n items.forEach((item, i) => {\n const shouldBeOpen = (this.openIndexes || []).includes(i);\n item.open = shouldBeOpen;\n item.mode = this.mode;\n item.setAttribute('aria-expanded', shouldBeOpen ? 'true' : 'false');\n forceUpdate(item);\n });\n }\n\n /**\n * Listens to itemToggle events from nv-accordion-item elements\n * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item\n */\n @Listen('itemToggle')\n onItemToggle(event: CustomEvent<boolean>) {\n if (this.updatingFromInternal) {\n return;\n }\n\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n const targetItem = event.target as HTMLNvAccordionItemElement;\n const index = items.indexOf(targetItem);\n\n if (index !== -1) {\n this.toggleItem(index, event.detail);\n } else {\n console.warn('[onItemToggle] Target item not found in items list');\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('openIndexes')\n onOpenIndexesChange(\n newValue: number[] | undefined,\n oldValue: number[] | undefined,\n ) {\n if (\n !this.updatingFromInternal &&\n newValue !== undefined &&\n newValue !== oldValue\n ) {\n this.updateChildrenState();\n }\n }\n\n @Watch('mode')\n onModeChange() {\n this.updateChildrenState();\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.openIndexes === undefined) {\n this.openIndexes = [];\n }\n }\n\n async componentDidLoad() {\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n\n // Only initialize openIndexes from child items if no data is provided and openIndexes is not explicitly set\n if (\n !this.data?.length &&\n (!this.openIndexes || this.openIndexes.length === 0)\n ) {\n const childOpenIndexes = items\n .map((item, i) => (item.hasAttribute('open') || item.open ? i : -1))\n .filter(i => i !== -1);\n\n if (childOpenIndexes.length > 0) {\n this.updatingFromInternal = true;\n this.openIndexes = [...childOpenIndexes];\n this.updatingFromInternal = false;\n\n this.openIndexesChanged.emit([...this.openIndexes]);\n }\n }\n\n // Ensure children are in sync with current openIndexes state\n await this.updateChildrenState();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"list\" class=\"nv-accordion\">\n {this.data?.length ? (\n this.data.map((item, i) => (\n <nv-accordion-item\n key={item.id ?? i}\n itemTitle={item.title}\n disabled={item.disabled}\n open={(this.openIndexes || []).includes(i)}\n mode={this.mode}\n >\n {item.subtitle ? (\n <div slot=\"header\">\n <div class=\"nv-accordion-item__header-content\">\n <span class=\"nv-accordion-item__title\">{item.title}</span>\n <span class=\"nv-accordion-item__subtitle\">\n {item.subtitle}\n </span>\n </div>\n </div>\n ) : null}\n <div slot=\"content\">{item.content}</div>\n {item.footer && <div slot=\"footer\">{item.footer}</div>}\n </nv-accordion-item>\n ))\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n\n // #endregion RENDER\n}\n"],"mappings":"uEAAA,MAAMA,EAAiB,idACvB,MAAAC,EAAeD,E,MCsBFE,EAAW,MALxB,WAAAC,CAAAC,G,iEAaWC,KAAAC,KAaH,GAMGD,KAAAE,KAA8B,YAMvCF,KAAAG,YAAyB,GAOjBH,KAAAI,qBAAgC,K,CA2BxC,UAAMC,CAAKC,GACTN,KAAKO,WAAWD,EAAO,K,CAQzB,WAAME,CAAMF,GACVN,KAAKO,WAAWD,EAAO,M,CAQjB,UAAAC,CAAWD,EAAeG,GAChC,MAAMC,EAAQC,MAAMC,KAClBZ,KAAKa,GAAGC,iBAAiB,sBAE3B,MAAMC,EAAOL,EAAMJ,GAEnB,IAAKS,GAAQA,EAAKC,SAAU,CAC1BC,QAAQC,KAAK,2CAA4CZ,GACzDN,KAAKmB,mBAAmBC,KAAK,IAAKpB,KAAKG,aAAe,KACtD,M,CAGF,IAAIA,EAAc,IAAKH,KAAKG,aAAe,IAC3C,MAAMkB,EAASlB,EAAYmB,SAAShB,GAEpC,GAAIN,KAAKE,OAAS,YAAa,CAC7BC,EACEM,IAAc,OAAUA,IAAcc,WAAaF,EAC/C,GACA,CAACf,E,KACF,CACL,GAAIG,IAAc,MAAO,CACvBN,EAAcA,EAAYqB,QAAOC,GAAKA,IAAMnB,G,MACvC,GAAIG,IAAc,OAASY,EAAQ,CACxClB,EAAYuB,KAAKpB,E,MACZ,GAAIG,IAAcc,UAAW,CAClCpB,EAAckB,EACVlB,EAAYqB,QAAOC,GAAKA,IAAMnB,IAC9B,IAAIH,EAAaG,E,EAIzBN,KAAKI,qBAAuB,KAC5BJ,KAAKG,YAAc,IAAIA,GACvBH,KAAK2B,sBACL3B,KAAKI,qBAAuB,MAE5BJ,KAAKmB,mBAAmBC,KAAK,IAAIjB,G,CAM3B,yBAAMwB,GACZ,MAAMjB,EAAQC,MAAMC,KAClBZ,KAAKa,GAAGC,iBAAiB,sBAG3BJ,EAAMkB,SAAQ,CAACb,EAAMU,KACnB,MAAMI,GAAgB7B,KAAKG,aAAe,IAAImB,SAASG,GACvDV,EAAKV,KAAOwB,EACZd,EAAKb,KAAOF,KAAKE,KACjBa,EAAKe,aAAa,gBAAiBD,EAAe,OAAS,SAC3DE,EAAYhB,EAAK,G,CASrB,YAAAiB,CAAaC,GACX,GAAIjC,KAAKI,qBAAsB,CAC7B,M,CAGF,MAAMM,EAAQC,MAAMC,KAClBZ,KAAKa,GAAGC,iBAAiB,sBAE3B,MAAMoB,EAAaD,EAAME,OACzB,MAAM7B,EAAQI,EAAM0B,QAAQF,GAE5B,GAAI5B,KAAW,EAAG,CAChBN,KAAKO,WAAWD,EAAO2B,EAAMI,O,KACxB,CACLpB,QAAQC,KAAK,qD,EASjB,mBAAAoB,CACEC,EACAC,GAEA,IACGxC,KAAKI,sBACNmC,IAAahB,WACbgB,IAAaC,EACb,CACAxC,KAAK2B,qB,EAKT,YAAAc,GACEzC,KAAK2B,qB,CAOP,iBAAAe,GACE,GAAI1C,KAAKG,cAAgBoB,UAAW,CAClCvB,KAAKG,YAAc,E,EAIvB,sBAAMwC,G,MACJ,MAAMjC,EAAQC,MAAMC,KAClBZ,KAAKa,GAAGC,iBAAiB,sBAI3B,MACG8B,EAAA5C,KAAKC,QAAI,MAAA2C,SAAA,SAAAA,EAAEC,WACV7C,KAAKG,aAAeH,KAAKG,YAAY0C,SAAW,GAClD,CACA,MAAMC,EAAmBpC,EACtBqC,KAAI,CAAChC,EAAMU,IAAOV,EAAKiC,aAAa,SAAWjC,EAAKV,KAAOoB,GAAK,IAChED,QAAOC,GAAKA,KAAO,IAEtB,GAAIqB,EAAiBD,OAAS,EAAG,CAC/B7C,KAAKI,qBAAuB,KAC5BJ,KAAKG,YAAc,IAAI2C,GACvB9C,KAAKI,qBAAuB,MAE5BJ,KAAKmB,mBAAmBC,KAAK,IAAIpB,KAAKG,a,QAKpCH,KAAK2B,qB,CAOb,MAAAsB,G,MACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,OAAOC,MAAM,kBACrBV,EAAA5C,KAAKC,QAAI,MAAA2C,SAAA,SAAAA,EAAEC,QACV7C,KAAKC,KAAK8C,KAAI,CAAChC,EAAMU,K,MAAM,OACzByB,EAAA,qBACEE,KAAKR,EAAA7B,EAAKwC,MAAE,MAAAX,SAAA,EAAAA,EAAInB,EAChB+B,UAAWzC,EAAK0C,MAChBzC,SAAUD,EAAKC,SACfX,MAAOL,KAAKG,aAAe,IAAImB,SAASG,GACxCvB,KAAMF,KAAKE,MAEVa,EAAK2C,SACJR,EAAA,OAAKS,KAAK,UACRT,EAAA,OAAKI,MAAM,qCACTJ,EAAA,QAAMI,MAAM,4BAA4BvC,EAAK0C,OAC7CP,EAAA,QAAMI,MAAM,+BACTvC,EAAK2C,YAIV,KACJR,EAAA,OAAKS,KAAK,WAAW5C,EAAK6C,SACzB7C,EAAK8C,QAAUX,EAAA,OAAKS,KAAK,UAAU5C,EAAK8C,QACvB,IAGtBX,EAAA,a","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as e,c as t,h as o,H as i,g as n}from"./p-d0a33e64.js";const d="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}";const a=d;const s=class{constructor(o){e(this,o);this.dropdownItemSelected=t(this,"dropdownItemSelected",7);this.composed=false;this.disabled=false;this.selected=false;this.handleSelected=()=>{if(this.disabled)return;this.dropdownItemSelected.emit({label:this.label,value:this.value})}}handleKeyDown(e){var t,o;if(e.target!==this.el)return;if(e.key==="Enter"||e.key===" "){e.preventDefault();this.handleSelected();(o=(t=this.el.closest("nv-fielddropdown"))===null||t===void 0?void 0:t.querySelector("[data-scope='focusable']"))===null||o===void 0?void 0:o.focus()}}componentWillLoad(){var e;this.composed=Boolean(this.el.children.length);if(!this.value){const t=(e=this.label)!==null&&e!==void 0?e:this.el.textContent;this.value=t.replace(/\W+/g,"")}}render(){return o(i,{key:"a70651c297707bf06023a898dd9f99b81b71e243",role:"menuitem",tabindex:"-1",onClick:this.handleSelected},o("slot",{key:"0f4d1b390a7c558ac3348372ad4923829d84019d"}),!this.composed&&o("div",{key:"edbaf2f00b95ae3100aa4578799ea056da28b0c4",class:"text-wrapper"},o("span",{key:"c7258b0bd06a557602cac32a2f98266326762f9c","data-scope":"text"},this.label)),this.selected&&o("nv-icon",{key:"3cdf6e8a02eeb6dfa41eeac96d32c6c09ff5e828",name:"check","aria-hidden":"true","data-scope":"selected"}))}get el(){return n(this)}};s.style=a;export{s as nv_fielddropdownitem};
2
- //# sourceMappingURL=p-85f8f11a.entry.js.map
1
+ import{r as e,c as t,h as o,H as i,g as n}from"./p-3060df80.js";const d="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}";const a=d;const s=class{constructor(o){e(this,o);this.dropdownItemSelected=t(this,"dropdownItemSelected",7);this.composed=false;this.disabled=false;this.selected=false;this.handleSelected=()=>{if(this.disabled)return;this.dropdownItemSelected.emit({label:this.label,value:this.value})}}handleKeyDown(e){var t,o;if(e.target!==this.el)return;if(e.key==="Enter"||e.key===" "){e.preventDefault();this.handleSelected();(o=(t=this.el.closest("nv-fielddropdown"))===null||t===void 0?void 0:t.querySelector("[data-scope='focusable']"))===null||o===void 0?void 0:o.focus()}}componentWillLoad(){var e;this.composed=Boolean(this.el.children.length);if(!this.value){const t=(e=this.label)!==null&&e!==void 0?e:this.el.textContent;this.value=t.replace(/\W+/g,"")}}render(){return o(i,{key:"a70651c297707bf06023a898dd9f99b81b71e243",role:"menuitem",tabindex:"-1",onClick:this.handleSelected},o("slot",{key:"0f4d1b390a7c558ac3348372ad4923829d84019d"}),!this.composed&&o("div",{key:"edbaf2f00b95ae3100aa4578799ea056da28b0c4",class:"text-wrapper"},o("span",{key:"c7258b0bd06a557602cac32a2f98266326762f9c","data-scope":"text"},this.label)),this.selected&&o("nv-icon",{key:"3cdf6e8a02eeb6dfa41eeac96d32c6c09ff5e828",name:"check","aria-hidden":"true","data-scope":"selected"}))}get el(){return n(this)}};s.style=a;export{s as nv_fielddropdownitem};
2
+ //# sourceMappingURL=p-230af58a.entry.js.map
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as s,H as e,g as n}from"./p-3060df80.js";const o='nv-split{display:flex;width:100%;height:100%;position:relative}nv-split[direction=horizontal]{flex-direction:row}nv-split[direction=vertical]{flex-direction:column}nv-split .nv-split-gutter{position:absolute;z-index:10;background:transparent;display:flex;align-items:center;justify-content:center;flex:0 0 auto;transition:background-color 0.2s ease}nv-split .nv-split-gutter::after{content:"";position:absolute;background:var(--nv-color-neutral-400, #ccc);border-radius:2px;transition:background-color 0.2s ease}nv-split .nv-split-gutter:hover::after{background:var(--nv-color-brand-primary, #0066cc)}nv-split .nv-split-gutter::before{content:"";position:absolute;background-repeat:no-repeat;background-position:center;opacity:0.4;transition:opacity 0.2s ease;pointer-events:none}nv-split .nv-split-gutter:hover::before{opacity:0.7}nv-split[direction=horizontal]>.nv-split-gutter{width:var(--nv-split-gutter-size, 24px);top:0;bottom:0;transform:translateX(-50%);cursor:col-resize}nv-split[direction=horizontal]>.nv-split-gutter::after{width:2px;height:60%;left:50%;top:20%;transform:translateX(-50%)}nv-split[direction=horizontal]>.nv-split-gutter::before{width:16px;height:16px}nv-split[direction=vertical]>.nv-split-gutter{height:var(--nv-split-gutter-size, 24px);left:0;right:0;transform:translateY(-50%);cursor:row-resize}nv-split[direction=vertical]>.nv-split-gutter::after{height:2px;width:60%;top:50%;left:20%;transform:translateY(-50%)}nv-split[direction=vertical]>.nv-split-gutter::before{width:16px;height:16px}nv-split[data-dragging=true]>.nv-split-gutter::after{background:var(--nv-color-neutral-500, #9ca3af)}nv-split>[slot=pane]{flex:1 1 auto;overflow:hidden;min-width:0;min-height:0;display:flex;flex-direction:column}nv-split>[slot=pane]>nv-split{flex:1 1 auto;width:100%;height:100%}';const r=o;const h=class{constructor(s){t(this,s);this.sizesChanged=i(this,"sizesChanged",7);this.direction="horizontal";this.sizes=[];this.gutterSize=24;this.isDragging=false;this.dragIndex=-1;this.startPos=0;this.startSizes=[];this.onDocMove=t=>this.handleMouseMove(t);this.onDocUp=()=>this.stopDragging()}onSizesChanged(){this.applySizes()}onDirectionChanged(){this.ensureGutters();this.applySizes()}componentDidLoad(){this.ensureGutters();this.applySizes();this.positionGutters();this.ro=new ResizeObserver((()=>this.positionGutters()));this.ro.observe(this.el);window.addEventListener("resize",(()=>this.positionGutters()))}disconnectedCallback(){var t;this.detachDocumentListeners();(t=this.ro)===null||t===void 0?void 0:t.disconnect();this.ro=undefined}async setSizes(t){this.sizes=[...t];this.applySizes();this.sizesChanged.emit([...this.sizes]);this.positionGutters()}async getSizes(){return[...this.sizes]}async collapse(t){const i=this.getPanes();if(t<0||t>=i.length)return;const s=new Array(i.length).fill(0);const e=t<i.length-1?t+1:t-1;if(e>=0)s[e]=100;this.sizes=s;this.applySizes();this.sizesChanged.emit([...this.sizes]);this.positionGutters()}async destroy(){var t;this.sizes=[];this.isDragging=false;this.dragIndex=-1;this.removeOwnGutters();this.detachDocumentListeners();(t=this.ro)===null||t===void 0?void 0:t.disconnect()}getPanes(){return Array.from(this.el.querySelectorAll(':scope > [slot="pane"]'))}getOwnGutters(){return Array.from(this.el.querySelectorAll(':scope > .nv-split-gutter[data-auto="true"]'))}removeOwnGutters(){this.getOwnGutters().forEach((t=>t.remove()))}ensureGutters(){const t=this.getPanes();this.removeOwnGutters();if(t.length<=1)return;t.forEach(((i,s)=>{if(s>=t.length-1)return;const e=document.createElement("div");e.className="nv-split-gutter";e.setAttribute("data-auto","true");if(this.direction==="horizontal"){e.style.width=`${this.gutterSize}px`;e.style.cursor="col-resize"}else{e.style.height=`${this.gutterSize}px`;e.style.cursor="row-resize"}const n=document.createElement("slot");n.name="gutter";e.appendChild(n);e.addEventListener("mousedown",(t=>this.startDragging(t,s)));i.insertAdjacentElement("afterend",e)}));this.positionGutters()}applySizes(){const t=this.getPanes();const i=t.length;if(i===0)return;if(!this.sizes||this.sizes.length!==i){this.sizes=Array(i).fill(100/i)}t.forEach(((t,s)=>{var e;const n=Math.max(0,(e=this.sizes[s])!==null&&e!==void 0?e:100/i);t.style.flex=`0 0 ${n}%`;t.style.minWidth="0";t.style.minHeight="0";t.style.overflow="hidden";t.style.display="flex";t.style.flexDirection="column"}));this.positionGutters()}attachDocumentListeners(){document.addEventListener("mousemove",this.onDocMove);document.addEventListener("mouseup",this.onDocUp)}detachDocumentListeners(){document.removeEventListener("mousemove",this.onDocMove);document.removeEventListener("mouseup",this.onDocUp)}positionGutters(){var t,i;const s=this.getPanes();const e=this.getOwnGutters();if(s.length<=1||e.length===0)return;const n=this.direction==="horizontal";let o=0;for(let r=0;r<e.length;r++){const h=(i=(t=this.sizes)===null||t===void 0?void 0:t[r])!==null&&i!==void 0?i:100/s.length;o+=h;const a=e[r];a.style.position="absolute";if(n){a.style.left=`${o}%`;a.style.top="0";a.style.bottom="0";a.style.height="100%"}else{a.style.top=`${o}%`;a.style.left="0";a.style.right="0";a.style.width="100%"}}}startDragging(t,i){this.isDragging=true;this.dragIndex=i;this.startPos=this.direction==="horizontal"?t.clientX:t.clientY;this.startSizes=[...this.sizes];this.attachDocumentListeners()}handleMouseMove(t){var i,s,e,n;if(!this.isDragging||this.dragIndex<0)return;const o=this.getPanes();if(o.length<2)return;const r=this.el.getBoundingClientRect();const h=this.direction==="horizontal"?r.width:r.height;const a=Math.max(h,1);const l=(this.direction==="horizontal"?t.clientX:t.clientY)-this.startPos;const c=l/a*100;const u=this.dragIndex;const d=u+1;let p=this.startSizes[u]+c;let v=this.startSizes[d]-c;const f=((s=(i=this.minSizes)===null||i===void 0?void 0:i[u])!==null&&s!==void 0?s:0)/a*100;const g=((n=(e=this.minSizes)===null||e===void 0?void 0:e[d])!==null&&n!==void 0?n:0)/a*100;p=Math.max(p,f);v=Math.max(v,g);const m=p+v;const b=this.startSizes[u]+this.startSizes[d];if(Math.abs(m-b)>1e-4){const t=b/(m||1);p*=t;v*=t}const z=[...this.startSizes];z[u]=p;z[d]=v;this.sizes=z;this.applySizes();this.sizesChanged.emit([...this.sizes]);this.positionGutters()}stopDragging(){if(!this.isDragging)return;this.isDragging=false;this.dragIndex=-1;this.detachDocumentListeners()}render(){return s(e,{key:"e3b158ff1b4f665862079d245c219102d8b8ccda","data-dragging":this.isDragging.toString()},s("slot",{key:"baa8105a05bf8446d7a31a23cd5276edb320ea2f",name:"pane"}),s("slot",{key:"44afe4f4a220aff45f802218f2618e9305141a9f",name:"gutter"}))}get el(){return n(this)}static get watchers(){return{sizes:["onSizesChanged"],direction:["onDirectionChanged"]}}};h.style=r;export{h as nv_split};
2
+ //# sourceMappingURL=p-2364aefa.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nvSplitCss","NvSplitStyle0","NvSplit","constructor","hostRef","this","direction","sizes","gutterSize","isDragging","dragIndex","startPos","startSizes","onDocMove","ev","handleMouseMove","onDocUp","stopDragging","onSizesChanged","applySizes","onDirectionChanged","ensureGutters","componentDidLoad","positionGutters","ro","ResizeObserver","observe","el","window","addEventListener","disconnectedCallback","detachDocumentListeners","_a","disconnect","undefined","setSizes","sizesChanged","emit","getSizes","collapse","index","panes","getPanes","length","next","Array","fill","target","destroy","removeOwnGutters","from","querySelectorAll","getOwnGutters","forEach","g","remove","pane","i","document","createElement","className","setAttribute","style","width","cursor","height","slotEl","name","appendChild","startDragging","insertAdjacentElement","n","size","Math","max","flex","minWidth","minHeight","overflow","display","flexDirection","attachDocumentListeners","removeEventListener","gutters","horizontal","cumPct","sizePct","_b","position","left","top","bottom","right","clientX","clientY","rect","getBoundingClientRect","rawSize","totalPx","deltaPx","deltaPct","j","minLeftPct","minSizes","minRightPct","_d","_c","pairSum","targetSum","abs","k","render","h","Host","key","toString"],"sources":["src/components/nv-split/styles/nv-split.scss?tag=nv-split","src/components/nv-split/nv-split.tsx"],"sourcesContent":["@use './mixins' as *;\n@use './variables' as *;\n\nnv-split {\n display: flex;\n width: 100%;\n height: 100%;\n position: relative;\n\n &[direction='horizontal'] {\n flex-direction: row;\n }\n\n &[direction='vertical'] {\n flex-direction: column;\n }\n\n .nv-split-gutter {\n @include split-gutter-base;\n }\n\n &[direction='horizontal'] > .nv-split-gutter {\n @include split-gutter-horizontal;\n }\n\n &[direction='vertical'] > .nv-split-gutter {\n @include split-gutter-vertical;\n }\n\n &[data-dragging='true'] > .nv-split-gutter::after {\n background: $nv-split-line-active-color;\n }\n\n > [slot='pane'] {\n flex: 1 1 auto;\n overflow: hidden;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n\n > [slot='pane'] > nv-split {\n flex: 1 1 auto;\n width: 100%;\n height: 100%;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n Method,\n State,\n Watch,\n} from '@stencil/core';\n\n/**\n * The `nv-split` component is an advanced layout container that enables the creation of interactively resizable panels. It provides a flexible solution for dividing available space between multiple interface sections, with precise control over dimensions and constraints for each panel.\n * @slot pane - Content of each split pane. Use multiple `<div slot=\"pane\">` elements.\n * @slot gutter - Optional custom content inside every gutter handle.\n */\n@Component({\n tag: 'nv-split',\n styleUrl: 'styles/nv-split.scss',\n shadow: false,\n})\nexport class NvSplit {\n @Element() el: HTMLNvSplitElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Direction of the split layout.\n * - `horizontal`: panes side by side\n * - `vertical`: panes stacked\n */\n @Prop({ reflect: true })\n readonly direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Initial sizes of the panes in percentages.\n * Example: `[50, 50]` means two equal panes.\n * Explicitly `reflect: false` (array) for framework compatibility.\n */\n @Prop({ mutable: true, reflect: false })\n sizes: number[] = [];\n\n /**\n * Minimum sizes (in px) for each pane.\n * Example: `[100, 200]` => first pane min 100px, second min 200px.\n * Explicitly `reflect: false` (array) for framework compatibility.\n */\n @Prop({ reflect: false })\n readonly minSizes?: number[];\n\n /**\n * Width or height of the gutter (in px) depending on the split direction.\n * Default is 24px to meet WCAG 2.2 target size requirements for touch accessibility.\n */\n @Prop({ reflect: true })\n readonly gutterSize: number = 24;\n\n //#endregion\n /****************************************************************************/\n //#region STATE\n\n @State()\n private isDragging: boolean = false;\n\n private dragIndex: number = -1;\n private startPos: number = 0;\n private startSizes: number[] = [];\n private ro?: ResizeObserver;\n\n // Handlers stored to be able to detach them\n private onDocMove = (ev: MouseEvent) => this.handleMouseMove(ev);\n private onDocUp = () => this.stopDragging();\n\n //#endregion\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when pane sizes are updated (either via dragging or programmatically).\n * @bind sizes\n */\n @Event()\n sizesChanged: EventEmitter<number[]>;\n\n //#endregion\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('sizes')\n protected onSizesChanged(): void {\n // Re-apply sizes if modified from the outside\n this.applySizes();\n }\n\n @Watch('direction')\n protected onDirectionChanged(): void {\n // Update the orientation and the cursors of the gutters\n this.ensureGutters();\n this.applySizes();\n }\n\n //#endregion\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentDidLoad(): void {\n // Initialization (once)\n this.ensureGutters();\n this.applySizes();\n this.positionGutters();\n\n // Observer: reposition gutters when resized (nested or parent split changes)\n this.ro = new ResizeObserver(() => this.positionGutters());\n this.ro.observe(this.el);\n\n window.addEventListener('resize', () => this.positionGutters());\n }\n\n disconnectedCallback(): void {\n // Security cleanup (in case a drag was in progress)\n this.detachDocumentListeners();\n this.ro?.disconnect();\n this.ro = undefined;\n }\n\n //#endregion\n /****************************************************************************/\n //#region PUBLIC METHODS\n\n /**\n * Programmatically set pane sizes.\n * @param {Array<number>} sizes Array of pane sizes in percentages.\n * @returns {Promise<void>}\n */\n @Method()\n async setSizes(sizes: number[]): Promise<void> {\n this.sizes = [...sizes];\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Returns the current pane sizes.\n * @returns {Promise<number[]>} Array of pane sizes in percentages.\n */\n @Method()\n async getSizes(): Promise<number[]> {\n return [...this.sizes];\n }\n\n /**\n * Collapse a specific pane to 0 size.\n * @param {number} index Index of the pane to collapse.\n * @returns {Promise<void>}\n */\n @Method()\n async collapse(index: number): Promise<void> {\n const panes = this.getPanes();\n if (index < 0 || index >= panes.length) return;\n\n // Simple strategy: 0% for the index, the rest (100%) for its nearest neighbor\n const next = new Array(panes.length).fill(0);\n const target = index < panes.length - 1 ? index + 1 : index - 1;\n if (target >= 0) next[target] = 100;\n\n this.sizes = next;\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Destroy the split instance: removes gutters and resets layout state.\n * @returns {Promise<void>}\n */\n @Method()\n async destroy(): Promise<void> {\n this.sizes = [];\n this.isDragging = false;\n this.dragIndex = -1;\n this.removeOwnGutters();\n this.detachDocumentListeners();\n this.ro?.disconnect();\n }\n\n //#endregion\n /****************************************************************************/\n //#region INTERNAL HELPERS\n\n /**\n * Returns the panes of the split.\n * @returns {HTMLElement[]} The panes of the split.\n */\n private getPanes(): HTMLElement[] {\n // Only the direct children slot=\"pane\"\n return Array.from(\n this.el.querySelectorAll<HTMLElement>(':scope > [slot=\"pane\"]'),\n );\n }\n\n /**\n * Returns the own gutters of the split.\n * @returns {HTMLElement[]} The own gutters of the split.\n */\n private getOwnGutters(): HTMLElement[] {\n // Only the direct gutters of THIS instance\n return Array.from(\n this.el.querySelectorAll<HTMLElement>(\n ':scope > .nv-split-gutter[data-auto=\"true\"]',\n ),\n );\n }\n\n /**\n * Removes the own gutters of the split.\n */\n private removeOwnGutters(): void {\n this.getOwnGutters().forEach(g => g.remove());\n }\n\n /**\n * Ensures the gutters of the split.\n */\n private ensureGutters(): void {\n const panes = this.getPanes();\n\n // 1) Clean ONLY the old direct gutters of THIS instance\n this.removeOwnGutters();\n\n if (panes.length <= 1) return;\n\n // 2) Add the gutters (directs) between the panes\n panes.forEach((pane, i) => {\n if (i >= panes.length - 1) return;\n\n const g = document.createElement('div');\n g.className = 'nv-split-gutter';\n g.setAttribute('data-auto', 'true');\n\n if (this.direction === 'horizontal') {\n g.style.width = `${this.gutterSize}px`;\n g.style.cursor = 'col-resize';\n } else {\n g.style.height = `${this.gutterSize}px`;\n g.style.cursor = 'row-resize';\n }\n\n // Customizable internal slot\n const slotEl = document.createElement('slot');\n slotEl.name = 'gutter';\n g.appendChild(slotEl);\n\n // Listener drag (index = gutter between pane i and i+1)\n g.addEventListener('mousedown', (ev: MouseEvent) =>\n this.startDragging(ev, i),\n );\n\n // Insert just after the pane\n pane.insertAdjacentElement('afterend', g);\n });\n\n this.positionGutters();\n }\n\n /**\n * Applies the sizes to the panes.\n */\n private applySizes(): void {\n const panes = this.getPanes();\n const n = panes.length;\n if (n === 0) return;\n\n // Default values if inconsistent\n if (!this.sizes || this.sizes.length !== n) {\n this.sizes = Array(n).fill(100 / n);\n }\n\n panes.forEach((pane, i) => {\n const size = Math.max(0, this.sizes[i] ?? 100 / n);\n // Flex-basis via flex shorthand (https://developer.mozilla.org/en-US/docs/Web/CSS/flex)\n pane.style.flex = `0 0 ${size}%`;\n pane.style.minWidth = '0';\n pane.style.minHeight = '0';\n pane.style.overflow = 'hidden'; // let a nv-split child extend\n pane.style.display = 'flex';\n pane.style.flexDirection = 'column';\n });\n\n this.positionGutters();\n }\n\n /**\n * Attaches the document listeners.\n */\n private attachDocumentListeners(): void {\n document.addEventListener('mousemove', this.onDocMove);\n document.addEventListener('mouseup', this.onDocUp);\n }\n\n /**\n * Detaches the document listeners.\n */\n private detachDocumentListeners(): void {\n document.removeEventListener('mousemove', this.onDocMove);\n document.removeEventListener('mouseup', this.onDocUp);\n }\n\n /**\n * Positions the gutters based on the current sizes of the panes.\n */\n private positionGutters(): void {\n const panes = this.getPanes();\n const gutters = this.getOwnGutters();\n if (panes.length <= 1 || gutters.length === 0) return;\n\n const horizontal = this.direction === 'horizontal';\n let cumPct = 0;\n\n for (let i = 0; i < gutters.length; i++) {\n const sizePct = this.sizes?.[i] ?? 100 / panes.length;\n cumPct += sizePct;\n\n const g = gutters[i];\n g.style.position = 'absolute';\n\n if (horizontal) {\n g.style.left = `${cumPct}%`;\n g.style.top = '0';\n g.style.bottom = '0';\n g.style.height = '100%';\n } else {\n g.style.top = `${cumPct}%`;\n g.style.left = '0';\n g.style.right = '0';\n g.style.width = '100%';\n }\n }\n }\n\n /**\n * Starts the dragging process.\n * @param {MouseEvent} ev - The mouse event.\n * @param {number} index - The index of the gutter.\n */\n private startDragging(ev: MouseEvent, index: number): void {\n this.isDragging = true;\n this.dragIndex = index;\n this.startPos = this.direction === 'horizontal' ? ev.clientX : ev.clientY;\n this.startSizes = [...this.sizes];\n this.attachDocumentListeners();\n }\n\n /**\n * Handles the mouse movement during dragging.\n * @param {MouseEvent} ev - The mouse event.\n */\n private handleMouseMove(ev: MouseEvent): void {\n if (!this.isDragging || this.dragIndex < 0) return;\n\n const panes = this.getPanes();\n if (panes.length < 2) return;\n\n const rect = this.el.getBoundingClientRect();\n\n // Ensure we never divide by zero if the element has zero width/height\n const rawSize = this.direction === 'horizontal' ? rect.width : rect.height;\n const totalPx = Math.max(rawSize, 1);\n\n const deltaPx =\n (this.direction === 'horizontal' ? ev.clientX : ev.clientY) -\n this.startPos;\n const deltaPct = (deltaPx / totalPx) * 100;\n\n const i = this.dragIndex;\n const j = i + 1;\n\n let left = this.startSizes[i] + deltaPct;\n let right = this.startSizes[j] - deltaPct;\n\n // minSizes (px) -> %\n const minLeftPct = ((this.minSizes?.[i] ?? 0) / totalPx) * 100;\n const minRightPct = ((this.minSizes?.[j] ?? 0) / totalPx) * 100;\n\n left = Math.max(left, minLeftPct);\n right = Math.max(right, minRightPct);\n\n // Keep the sum of the pair i/j constant\n const pairSum = left + right;\n const targetSum = this.startSizes[i] + this.startSizes[j];\n if (Math.abs(pairSum - targetSum) > 0.0001) {\n const k = targetSum / (pairSum || 1);\n left *= k;\n right *= k;\n }\n\n const next = [...this.startSizes];\n next[i] = left;\n next[j] = right;\n\n this.sizes = next;\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Stops the dragging process.\n */\n private stopDragging(): void {\n if (!this.isDragging) return;\n this.isDragging = false;\n this.dragIndex = -1;\n this.detachDocumentListeners();\n }\n\n //#endregion\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host data-dragging={this.isDragging.toString()}>\n <slot name=\"pane\"></slot>\n <slot name=\"gutter\"></slot>\n </Host>\n );\n }\n\n //#endregion\n /****************************************************************************/\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as n,c as e,h as r,H as i,g as o}from"./p-3060df80.js";import{v as t}from"./p-f5ff676c.js";const a='/* TODO: integrate this logic in the proper structure */\nnv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range {\n background: var(--components-slider-track-filled-hover);\n}\nnv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb {\n border-color: var(--components-slider-track-filled-hover);\n}\nnv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range {\n background: var(--components-slider-track-filled-focus);\n}\nnv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb {\n border-color: var(--components-slider-track-filled-focus);\n}\nnv-fieldslider[error] .slider-container .track-container .track .track-range {\n background: var(--components-slider-track-filled-error);\n}\nnv-fieldslider[error] .slider-container .track-container .track .thumb {\n border-color: var(--components-slider-track-filled-error);\n}\nnv-fieldslider[error] .slider-container .track-container .track .thumb:hover {\n border-color: var(--components-slider-track-filled-error);\n outline: calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);\n outline-offset: calc(var(--focus-outline-offset) * 1);\n background-color: var(--components-slider-handler-background-error);\n}\nnv-fieldslider[error] .slider-container .track-container .track .thumb:focus {\n border-color: var(--components-slider-track-filled-error);\n outline: calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);\n outline-offset: calc(var(--focus-outline-offset) * 1);\n background-color: var(--components-slider-track-filled-error);\n}\nnv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range {\n background: var(--components-slider-track-filled-error);\n}\nnv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb {\n border-color: var(--components-slider-track-filled-error);\n}\n\nnv-fieldnumber {\n --nv-field-border-default: var(--components-form-field-border-default);\n --nv-field-border-hover: var(--components-form-field-border-hover);\n --nv-field-border-focus: var(--components-form-field-border-focus);\n --nv-field-border-disabled: var(--components-form-field-border-default);\n --nv-field-border-readonly: var(--components-form-field-border-default);\n --nv-field-focus-box-shadow: var(--color-focus-brand);\n --nv-field-background: var(--components-form-field-background-default);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--form-gap-y);\n box-sizing: border-box;\n max-width: 480px;\n}\nnv-fieldnumber[fluid]:not([fluid=false]) {\n max-width: unset;\n}\nnv-fieldnumber[readonly]:not([readonly=false]) {\n --nv-field-border-default: var(--components-form-field-border-readonly);\n --nv-field-border-hover: var(--nv-field-border-default);\n --nv-field-border-focus: var(--components-form-field-border-focus);\n --nv-field-border-disabled: var(--nv-field-border-default);\n --nv-field-border-readonly: var(--nv-field-border-default);\n --nv-field-background: var(--components-form-field-background-readonly);\n}\nnv-fieldnumber[error]:not([error=false]) {\n --nv-field-border-default: var(--components-form-field-border-error);\n --nv-field-border-hover: var(--nv-field-border-default);\n --nv-field-border-focus: var(--nv-field-border-default);\n --nv-field-border-disabled: var(--nv-field-border-default);\n --nv-field-border-readonly: var(--nv-field-border-default);\n --nv-field-focus-box-shadow: var(--color-focus-destructive-in-field);\n}\nnv-fieldnumber[success]:not([success=false]) {\n --nv-field-border-default: var(--components-form-field-border-success);\n --nv-field-border-hover: var(--nv-field-border-default);\n --nv-field-border-focus: var(--nv-field-border-default);\n --nv-field-border-disabled: var(--nv-field-border-default);\n --nv-field-border-readonly: var(--nv-field-border-default);\n --nv-field-focus-box-shadow: var(--color-focus-success);\n}\nnv-fieldnumber[required]:not([required=false]) label::after {\n content: "*";\n color: var(--components-form-text-required);\n font-weight: var(--font-weight-high-emphasis);\n}\nnv-fieldnumber label {\n display: flex;\n align-items: center;\n gap: var(--form-label-gap);\n align-self: stretch;\n color: var(--components-form-text-label-default);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-label-font-size);\n font-style: normal;\n font-weight: var(--font-weight-medium-emphasis);\n line-height: var(--form-label-line-height);\n}\nnv-fieldnumber .input-wrapper {\n display: flex;\n flex-wrap: wrap;\n gap: var(--form-gap-x);\n align-items: stretch;\n align-self: stretch;\n}\nnv-fieldnumber .input-wrapper .input-container {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n align-items: center;\n align-self: stretch;\n border-radius: var(--form-field-radius);\n border-width: 1px;\n border-style: solid;\n border-color: var(--nv-field-border-default);\n opacity: var(--components-form-opacity-default, 1);\n background: var(--nv-field-background);\n transition: all 150ms ease-out;\n container-type: inline-size;\n container-name: field-number-input-container;\n overflow: hidden;\n position: relative;\n}\nnv-fieldnumber .input-wrapper .input-container:hover {\n border-color: var(--nv-field-border-hover);\n}\nnv-fieldnumber .input-wrapper .input-container:focus-within, nv-fieldnumber .input-wrapper .input-container:focus-within:hover, nv-fieldnumber .input-wrapper .input-container:focus, nv-fieldnumber .input-wrapper .input-container:focus:hover {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow);\n}\nnv-fieldnumber .input-wrapper .input-container:has(input:read-only) {\n opacity: 0.5;\n background-color: var(--components-form-field-background-readonly);\n border-color: var(--nv-field-border-readonly);\n}\nnv-fieldnumber .input-wrapper .input-container:has(input:disabled) {\n opacity: 0.5;\n background-color: var(--components-form-field-background-disabled);\n border-color: var(--nv-field-border-disabled);\n}\nnv-fieldnumber .input-wrapper .input-container input {\n display: flex;\n align-items: center;\n flex: 1 0 0;\n overflow: hidden;\n background-color: transparent;\n color: var(--components-form-field-content-text);\n padding: var(--form-field-padding-y) var(--form-field-padding-x);\n font-size: var(--form-field-font-size);\n font-style: normal;\n font-weight: var(--font-weight-medium-emphasis);\n line-height: var(--form-field-line-height);\n width: 100%;\n /* Hide Edge built-in password reveal and clear icons */\n width: 100%;\n appearance: textfield;\n}\nnv-fieldnumber .input-wrapper .input-container input:focus {\n outline: none;\n}\nnv-fieldnumber .input-wrapper .input-container input::placeholder {\n overflow: hidden;\n color: var(--components-form-field-content-placeholder);\n text-overflow: ellipsis;\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-field-font-size);\n font-style: normal;\n font-weight: var(--font-weight-low-emphasis);\n line-height: var(--form-field-line-height);\n}\nnv-fieldnumber .input-wrapper .input-container input[type=password]::-ms-clear, nv-fieldnumber .input-wrapper .input-container input[type=password]::-ms-reveal {\n display: none;\n width: 0;\n height: 0;\n}\nnv-fieldnumber .input-wrapper .input-container input::-webkit-inner-spin-button, nv-fieldnumber .input-wrapper .input-container input::-webkit-outer-spin-button {\n appearance: none;\n margin: 0;\n}\nnv-fieldnumber .input-wrapper .input-container nv-icon.validation {\n color: var(--nv-field-border-default);\n margin-right: var(--form-field-gap);\n}\nnv-fieldnumber .input-wrapper .input-container > nv-iconbutton {\n border: 0px;\n border-radius: 0px;\n}\nnv-fieldnumber .input-wrapper .input-container > nv-iconbutton:focus-visible {\n border-radius: var(--button-md-border-radius);\n outline-offset: -3px;\n}\nnv-fieldnumber .input-wrapper .input-container > nv-iconbutton:last-of-type {\n border-top-right-radius: var(--form-field-radius);\n border-bottom-right-radius: var(--form-field-radius);\n}\nnv-fieldnumber .input-wrapper .input-container .stepper {\n display: flex;\n border-left: var(--notification-border-width-low-emphasis) solid var(--components-form-field-border-readonly);\n}\nnv-fieldnumber .input-wrapper .input-container .stepper > nv-iconbutton {\n border: 0px;\n border-radius: 0px;\n border-radius: 0px;\n}\nnv-fieldnumber .input-wrapper .input-container .stepper > nv-iconbutton:focus-visible {\n border-radius: var(--button-md-border-radius);\n outline-offset: -3px;\n}\nnv-fieldnumber .input-wrapper .input-container .stepper > nv-iconbutton:last-of-type {\n border-top-right-radius: var(--form-field-radius);\n border-bottom-right-radius: var(--form-field-radius);\n}\n@container field-number-input-container (width < 150px) {\n nv-fieldnumber .input-wrapper .input-container .stepper-spacer {\n display: none;\n }\n nv-fieldnumber .input-wrapper .input-container .stepper {\n display: none;\n }\n}\nnv-fieldnumber .description {\n display: flex;\n align-items: center;\n align-self: stretch;\n gap: var(--spacing-1);\n color: var(--components-form-text-description-default);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-description-font-size);\n font-style: normal;\n line-height: var(--form-description-line-height);\n}\nnv-fieldnumber .error-description {\n display: flex;\n align-items: center;\n align-self: stretch;\n gap: var(--spacing-1);\n color: var(--components-form-text-description-default);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n font-size: var(--form-description-font-size);\n font-style: normal;\n line-height: var(--form-description-line-height);\n color: var(--components-form-text-description-error);\n}';const d=a;const l=class{constructor(r){n(this,r);this.valueChanged=e(this,"valueChanged",7);this.inputId=t();this.disabled=false;this.readonly=false;this.required=false;this.error=false;this.success=false;this.step=1;this.autofocus=false;this.fluid=false;this.handleInput=n=>{const e=n.target;this.value=e.valueAsNumber};this.handleInputContainerClick=()=>{this.inputElement.focus()};this.handlePlus=()=>{this.inputElement.stepUp();this.value=Number(this.inputElement.value)};this.handleMinus=()=>{this.inputElement.stepDown();this.value=Number(this.inputElement.value)};this.preventSelection=n=>{n.preventDefault()};this.isMinValueReached=()=>this.min!==undefined&&this.value<=this.min;this.isMaxValueReached=()=>this.max!==undefined&&this.value>=this.max}watchValueHandler(n){this.valueChanged.emit(n)}componentWillRender(){if(this.message){this.description=this.message}if(this.validation){this.errorDescription=this.validation;this.error=true}}render(){return r(i,{key:"1bbe4506220df2ebb5723e916edcf49b3c0295e4"},(this.label||this.el.querySelector('[slot="label"]'))&&r("label",{key:"56ed85a58e669e9c6aec04ed9ea7bc9664c478f8",htmlFor:this.inputId},r("slot",{key:"b4cf04b6bca34f0ff158fd9e7b14c56df7ea3e8a",name:"label"},this.label)),r("div",{key:"9c9432645591952acff5b1f73c5be8d8f1dae7fb",class:"input-wrapper"},r("slot",{key:"05bacf384b22fce12a66109864ec95fab403f8d7",name:"before-input"}),r("div",{key:"66f0c59c38b7309834ba22bbd767e94a04964781",class:"input-container",onClick:this.handleInputContainerClick},r("slot",{key:"7e2a7c766484b8c4c4caabab311ea635f95eb4fd",name:"leading-input"}),r("input",{key:"808f4f16b3a73d0b07efa7cff18dd5dd3f94bda4",id:this.inputId,ref:n=>this.inputElement=n,placeholder:this.placeholder,name:this.name,type:"number",autofocus:this.autofocus,required:this.required,max:this.max,min:this.min,step:this.step,value:this.value,disabled:this.disabled,readOnly:this.readonly,onInput:this.handleInput}),r("slot",{key:"65a7f356f2a9f650df9e78f53b98b43c7e179802",name:"trailing-input"}),this.error&&r("nv-icon",{key:"5eed73e177092188387abd35ccab6085a1bdb2cf",name:"alert-circle",class:"validation",size:"md"}),this.success&&r("nv-icon",{key:"74edadb953f9668e49a1b3ecd328bfd2999065ea",name:"circle-check",class:"validation",size:"md"}),r("div",{key:"e886fe1df175d5c4dcd9a4704ad47820e0af2474",class:"stepper"},r("nv-iconbutton",{key:"ff6247b57693f2a45c26e1eae67c9d86c473e0e3",size:"md",name:"minus",emphasis:"lower",onClick:this.handleMinus,disabled:this.isMinValueReached(),onMouseDown:this.preventSelection,tabindex:"-1"}),r("nv-iconbutton",{key:"aa12c105d159e08e874bdd37f56ab1837ba01c4f",size:"md",name:"plus",emphasis:"lower",onClick:this.handlePlus,disabled:this.isMaxValueReached(),onMouseDown:this.preventSelection,tabindex:"-1"}))),r("slot",{key:"c485ac2e1ca388b6e0998bdb1c5ca5876cd9e392",name:"after-input"})),(this.description||this.el.querySelector('[slot="description"]'))&&r("div",{key:"88d80f2f5b0061b0f8dab4bcc88bf2d196427800",class:"description"},r("slot",{key:"0380af6af9986d000ad58328e6c4b8250f86c22a",name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&r("div",{key:"a2233d218f58376b6c7958efabe96a3e08c6e1f6",hidden:!this.error,class:"error-description"},r("slot",{key:"d90bc8abdcecc9711b271472a8da60b207aa04af",name:"error-description"},this.errorDescription)))}static get formAssociated(){return true}get el(){return o(this)}static get watchers(){return{value:["watchValueHandler"]}}};l.style=d;export{l as nv_fieldnumber};
2
+ //# sourceMappingURL=p-23ee0384.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["nvFieldnumberCss","NvFieldnumberStyle0","NvFieldnumber","constructor","hostRef","this","inputId","uuidv4","disabled","readonly","required","error","success","step","autofocus","fluid","handleInput","event","input","target","value","valueAsNumber","handleInputContainerClick","inputElement","focus","handlePlus","stepUp","Number","handleMinus","stepDown","preventSelection","preventDefault","isMinValueReached","min","undefined","isMaxValueReached","max","watchValueHandler","newValue","valueChanged","emit","componentWillRender","message","description","validation","errorDescription","render","h","Host","key","label","el","querySelector","htmlFor","name","class","onClick","id","ref","e","placeholder","type","readOnly","onInput","size","emphasis","onMouseDown","tabindex","hidden"],"sources":["src/components/nv-fieldnumber/nv-fieldnumber.scss?tag=nv-fieldnumber","src/components/nv-fieldnumber/nv-fieldnumber.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\nnv-fieldnumber {\n @include form-field-variables();\n @include form-field-root();\n\n &[fluid]:not([fluid=\"false\"]) {\n @include form-field-fluid();\n }\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 &[success]:not([success='false']) {\n @include form-field-success-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 .input-wrapper {\n @include form-field-input-wrapper();\n\n .input-container {\n @include form-field-input-container();\n\n container-type: inline-size;\n container-name: field-number-input-container;\n overflow: hidden;\n position: relative;\n\n input {\n @include form-field-input();\n\n width: 100%;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n appearance: none;\n margin: 0;\n }\n }\n\n nv-icon.validation {\n @include form-field-icon();\n margin-right: var(--form-field-gap);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n }\n\n .stepper {\n display: flex;\n border-left: var(--notification-border-width-low-emphasis) solid var(--components-form-field-border-readonly);\n > nv-iconbutton {\n @include form-field-action();\n border-radius: 0px;\n }\n }\n\n // container query to remove .stepper and and the spacer when the container is less than 150px\n // .. this needs to be an absolute value because container queries do not accept variables\n // .. using relative width (cqw) compared to a parent container would not work\n // .. because the parent container follows the child's width\n @container field-number-input-container (width < 150px) {\n .stepper-spacer {\n display: none;\n }\n\n .stepper {\n display: none;\n }\n }\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n}","import {\n Component,\n Prop,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot trailing-input - Content to be placed after 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-fieldnumber',\n styleUrl: 'nv-fieldnumber.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldnumber {\n @Element() el: HTMLNvFieldnumberElement;\n private inputElement!: HTMLInputElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Message defines a 'hint ' message for the number field.\n * @deprecated Use `description` instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Add the message to the validation state.\n * @deprecated Use `errorDescription` and set the error prop instead.\n */\n @Prop({ reflect: true })\n readonly validation: string;\n\n //#endregion DEPRECATED\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, mutable: true })\n 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 */\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 * 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 * 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 * 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, mutable: true })\n error: boolean = false;\n\n /**\n * Show a helpful message under the input field when there’s a problem. It\n * explains what’s wrong and how users can fix it, making the error easier to\n * understand and resolve.\n * @validator message\n */\n @Prop({ reflect: true, mutable: true })\n errorDescription: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * The maximum value that the input field can accept. Use this in combination\n * with min to create a range of valid values.\n */\n @Prop({ reflect: true })\n readonly max: number;\n\n /**\n * The minimum value that the input field can accept. Use this in combination\n * with max to create a range of valid values.\n */\n @Prop({ reflect: true })\n readonly min: number;\n\n /**\n * Define the increment value for the input field. It determines how much the\n * value will increase or decrease when the user clicks the stepper buttons.\n */\n @Prop({ reflect: true })\n readonly step: number = 1;\n\n /**\n * The value of the input field. It’s the text that users type in or the value\n * that you set programmatically. This is the main way to interact with the\n * input field, and it’s essential for creating forms that users can fill out.\n */\n @Prop({ reflect: true, mutable: true })\n value: number;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n /**\n * Allows the field to stretch and fill the entire width of its container.\n */\n @Prop({ reflect: true })\n readonly fluid: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<number>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n watchValueHandler(newValue: number) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.value = input.valueAsNumber;\n };\n\n private handleInputContainerClick = () => {\n this.inputElement.focus();\n };\n\n private handlePlus = () => {\n this.inputElement.stepUp();\n this.value = Number(this.inputElement.value);\n };\n\n private handleMinus = () => {\n this.inputElement.stepDown();\n this.value = Number(this.inputElement.value);\n };\n\n // prevents text selection when clicking the buttons multiple times\n private preventSelection = (event: Event) => {\n event.preventDefault();\n };\n\n private isMinValueReached = (): boolean => {\n return this.min !== undefined && this.value <= this.min;\n };\n\n private isMaxValueReached = (): boolean => {\n return this.max !== undefined && this.value >= this.max;\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillRender() {\n if (this.message) {\n this.description = this.message;\n }\n\n if (this.validation) {\n this.errorDescription = this.validation;\n this.error = true;\n }\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 <div class=\"input-wrapper\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\" onClick={this.handleInputContainerClick}>\n <slot name=\"leading-input\"></slot>\n\n <input\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n placeholder={this.placeholder}\n name={this.name}\n type=\"number\"\n autofocus={this.autofocus}\n required={this.required}\n max={this.max}\n min={this.min}\n step={this.step}\n value={this.value}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n />\n\n <slot name=\"trailing-input\"></slot>\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"md\" />\n )}\n\n <div class=\"stepper\">\n <nv-iconbutton\n size=\"md\"\n name=\"minus\"\n emphasis=\"lower\"\n onClick={this.handleMinus}\n disabled={this.isMinValueReached()}\n onMouseDown={this.preventSelection}\n tabindex=\"-1\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"md\"\n name=\"plus\"\n emphasis=\"lower\"\n onClick={this.handlePlus}\n disabled={this.isMaxValueReached()}\n onMouseDown={this.preventSelection}\n tabindex=\"-1\"\n />\n </div>\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\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\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nvFieldnumberCss","NvFieldnumberStyle0","NvFieldnumber","constructor","hostRef","this","inputId","uuidv4","disabled","readonly","required","error","success","step","autofocus","fluid","handleInput","event","input","target","value","valueAsNumber","handleInputContainerClick","inputElement","focus","handlePlus","stepUp","Number","handleMinus","stepDown","preventSelection","preventDefault","isMinValueReached","min","undefined","isMaxValueReached","max","watchValueHandler","newValue","valueChanged","emit","componentWillRender","message","description","validation","errorDescription","render","h","Host","key","label","el","querySelector","htmlFor","name","class","onClick","id","ref","e","placeholder","type","readOnly","onInput","size","emphasis","onMouseDown","tabindex","hidden"],"sources":["src/components/nv-fieldnumber/nv-fieldnumber.scss?tag=nv-fieldnumber","src/components/nv-fieldnumber/nv-fieldnumber.tsx"],"sourcesContent":["@import '../../styles/form-field';\n\nnv-fieldnumber {\n @include form-field-variables();\n @include form-field-root();\n\n &[fluid]:not([fluid=\"false\"]) {\n @include form-field-fluid();\n }\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 &[success]:not([success='false']) {\n @include form-field-success-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 .input-wrapper {\n @include form-field-input-wrapper();\n\n .input-container {\n @include form-field-input-container();\n\n container-type: inline-size;\n container-name: field-number-input-container;\n overflow: hidden;\n position: relative;\n\n input {\n @include form-field-input();\n\n width: 100%;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n appearance: none;\n margin: 0;\n }\n }\n\n nv-icon.validation {\n @include form-field-icon();\n margin-right: var(--form-field-gap);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n }\n\n .stepper {\n display: flex;\n border-left: var(--notification-border-width-low-emphasis) solid var(--components-form-field-border-readonly);\n > nv-iconbutton {\n @include form-field-action();\n border-radius: 0px;\n }\n }\n\n // container query to remove .stepper and and the spacer when the container is less than 150px\n // .. this needs to be an absolute value because container queries do not accept variables\n // .. using relative width (cqw) compared to a parent container would not work\n // .. because the parent container follows the child's width\n @container field-number-input-container (width < 150px) {\n .stepper-spacer {\n display: none;\n }\n\n .stepper {\n display: none;\n }\n }\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n}","import {\n Component,\n Prop,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot trailing-input - Content to be placed after 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-fieldnumber',\n styleUrl: 'nv-fieldnumber.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldnumber {\n @Element() el: HTMLNvFieldnumberElement;\n private inputElement!: HTMLInputElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Message defines a 'hint ' message for the number field.\n * @deprecated Use `description` instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Add the message to the validation state.\n * @deprecated Use `errorDescription` and set the error prop instead.\n */\n @Prop({ reflect: true })\n readonly validation: string;\n\n //#endregion DEPRECATED\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, mutable: true })\n 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 */\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 * 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 * 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 * 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, mutable: true })\n error: boolean = false;\n\n /**\n * Show a helpful message under the input field when there’s a problem. It\n * explains what’s wrong and how users can fix it, making the error easier to\n * understand and resolve.\n * @validator message\n */\n @Prop({ reflect: true, mutable: true })\n errorDescription: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * The maximum value that the input field can accept. Use this in combination\n * with min to create a range of valid values.\n */\n @Prop({ reflect: true })\n readonly max: number;\n\n /**\n * The minimum value that the input field can accept. Use this in combination\n * with max to create a range of valid values.\n */\n @Prop({ reflect: true })\n readonly min: number;\n\n /**\n * Define the increment value for the input field. It determines how much the\n * value will increase or decrease when the user clicks the stepper buttons.\n */\n @Prop({ reflect: true })\n readonly step: number = 1;\n\n /**\n * The value of the input field. It’s the text that users type in or the value\n * that you set programmatically. This is the main way to interact with the\n * input field, and it’s essential for creating forms that users can fill out.\n */\n @Prop({ reflect: true, mutable: true })\n value: number;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n /**\n * Allows the field to stretch and fill the entire width of its container.\n */\n @Prop({ reflect: true })\n readonly fluid: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the input value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<number>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n watchValueHandler(newValue: number) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.value = input.valueAsNumber;\n };\n\n private handleInputContainerClick = () => {\n this.inputElement.focus();\n };\n\n private handlePlus = () => {\n this.inputElement.stepUp();\n this.value = Number(this.inputElement.value);\n };\n\n private handleMinus = () => {\n this.inputElement.stepDown();\n this.value = Number(this.inputElement.value);\n };\n\n // prevents text selection when clicking the buttons multiple times\n private preventSelection = (event: Event) => {\n event.preventDefault();\n };\n\n private isMinValueReached = (): boolean => {\n return this.min !== undefined && this.value <= this.min;\n };\n\n private isMaxValueReached = (): boolean => {\n return this.max !== undefined && this.value >= this.max;\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillRender() {\n if (this.message) {\n this.description = this.message;\n }\n\n if (this.validation) {\n this.errorDescription = this.validation;\n this.error = true;\n }\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 <div class=\"input-wrapper\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\" onClick={this.handleInputContainerClick}>\n <slot name=\"leading-input\"></slot>\n\n <input\n id={this.inputId}\n ref={e => (this.inputElement = e)}\n placeholder={this.placeholder}\n name={this.name}\n type=\"number\"\n autofocus={this.autofocus}\n required={this.required}\n max={this.max}\n min={this.min}\n step={this.step}\n value={this.value}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n />\n\n <slot name=\"trailing-input\"></slot>\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"md\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"md\" />\n )}\n\n <div class=\"stepper\">\n <nv-iconbutton\n size=\"md\"\n name=\"minus\"\n emphasis=\"lower\"\n onClick={this.handleMinus}\n disabled={this.isMinValueReached()}\n onMouseDown={this.preventSelection}\n tabindex=\"-1\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"md\"\n name=\"plus\"\n emphasis=\"lower\"\n onClick={this.handlePlus}\n disabled={this.isMaxValueReached()}\n onMouseDown={this.preventSelection}\n tabindex=\"-1\"\n />\n </div>\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\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\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}