@nova-design-system/nova-webcomponents 3.5.0 → 3.6.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 (442) hide show
  1. package/dist/cjs/{timeline.animation-dbb9c5ea.js → collapse.animation-a129dc3f.js} +5 -26
  2. package/dist/cjs/collapse.animation-a129dc3f.js.map +1 -0
  3. package/dist/cjs/fade.animation-644b5c4d.js +70 -0
  4. package/dist/cjs/fade.animation-644b5c4d.js.map +1 -0
  5. package/dist/cjs/{grow.animation-a1f0bc22.js → grow.animation-6d003803.js} +5 -5
  6. package/dist/cjs/{grow.animation-a1f0bc22.js.map → grow.animation-6d003803.js.map} +1 -1
  7. package/dist/cjs/index-c56424e5.js +8 -0
  8. package/dist/cjs/index.cjs.js +6 -4
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/native.cjs.js +1 -1
  12. package/dist/cjs/nv-accordion-item.cjs.entry.js +181 -0
  13. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -0
  14. package/dist/cjs/nv-accordion.cjs.entry.js +194 -0
  15. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -0
  16. package/dist/cjs/nv-alert.cjs.entry.js +6 -4
  17. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +9 -7
  20. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-calendar.cjs.entry.js +59 -50
  25. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-datagrid.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  29. package/dist/cjs/nv-dialog.cjs.entry.js +19 -6
  30. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +100 -35
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +4 -4
  36. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  37. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  38. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +85 -100
  39. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  41. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  42. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  43. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  44. package/dist/cjs/nv-fieldslider.cjs.entry.js +53 -9
  45. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  47. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  48. package/dist/cjs/nv-fieldtime.cjs.entry.js +9 -9
  49. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  50. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  52. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  53. package/dist/cjs/nv-popover.cjs.entry.js +4 -3
  54. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  55. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  56. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  57. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  58. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -2
  60. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  61. package/dist/cjs/{fade.animation-0d33d198.js → stylefire.es-717e022a.js} +1 -65
  62. package/dist/cjs/stylefire.es-717e022a.js.map +1 -0
  63. package/dist/cjs/timeline.animation-155e8839.js +25 -0
  64. package/dist/cjs/timeline.animation-155e8839.js.map +1 -0
  65. package/dist/collection/collection-manifest.json +2 -0
  66. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +146 -0
  67. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -0
  68. package/dist/collection/components/nv-accordion/nv-accordion.js +342 -0
  69. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -0
  70. package/dist/collection/components/nv-accordion/styles/nv-accordion.css +15 -0
  71. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js +6 -0
  72. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js.map +1 -0
  73. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +353 -0
  74. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -0
  75. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +66 -0
  76. package/dist/collection/components/nv-alert/nv-alert.js +1 -1
  77. package/dist/collection/components/nv-avatar/nv-avatar.js +1 -1
  78. package/dist/collection/components/nv-badge/nv-badge.js +2 -2
  79. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  80. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  81. package/dist/collection/components/nv-button/nv-button.js +1 -1
  82. package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
  83. package/dist/collection/components/nv-calendar/nv-calendar.js +55 -27
  84. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  85. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +0 -20
  86. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  87. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -2
  88. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  89. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +5 -31
  90. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
  91. package/dist/collection/components/nv-col/nv-col.js +1 -1
  92. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  93. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  94. package/dist/collection/components/nv-dialog/nv-dialog.css +1 -1
  95. package/dist/collection/components/nv-dialog/nv-dialog.js +38 -5
  96. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  97. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  98. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  99. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  100. package/dist/collection/components/nv-fielddate/nv-fielddate.js +102 -34
  101. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  102. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +2 -0
  103. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +4 -4
  104. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  105. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  106. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  107. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +36 -26
  108. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  109. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +117 -115
  110. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  111. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  112. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  113. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  114. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  115. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  116. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -1
  117. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +45 -1
  118. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +1 -1
  119. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +4 -4
  120. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +1 -1
  121. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +3 -3
  122. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +1 -1
  123. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +42 -1
  124. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +1 -1
  125. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  126. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  127. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  128. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  129. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  130. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  131. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  132. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  133. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  134. package/dist/collection/components/nv-row/nv-row.js +1 -1
  135. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  136. package/dist/collection/components/nv-table/nv-table.js +2 -2
  137. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  138. package/dist/collection/components/nv-tooltip/nv-tooltip.js +21 -3
  139. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  140. package/dist/components/index.js +4 -3
  141. package/dist/components/index.js.map +1 -1
  142. package/dist/components/nv-accordion-item.d.ts +11 -0
  143. package/dist/components/nv-accordion-item.js +8 -0
  144. package/dist/components/nv-accordion-item.js.map +1 -0
  145. package/dist/components/nv-accordion.d.ts +11 -0
  146. package/dist/components/nv-accordion.js +242 -0
  147. package/dist/components/nv-accordion.js.map +1 -0
  148. package/dist/components/nv-alert.js +6 -4
  149. package/dist/components/nv-alert.js.map +1 -1
  150. package/dist/components/nv-avatar.js +2 -2
  151. package/dist/components/nv-badge.js +1 -1
  152. package/dist/components/nv-breadcrumb.js +3 -3
  153. package/dist/components/nv-breadcrumbs.js +1 -1
  154. package/dist/components/nv-button.js +1 -1
  155. package/dist/components/nv-calendar.js +1 -1
  156. package/dist/components/nv-col.js +1 -1
  157. package/dist/components/nv-datagrid.js +4 -4
  158. package/dist/components/nv-datagridcolumn.js +1 -1
  159. package/dist/components/nv-dialog.js +25 -11
  160. package/dist/components/nv-dialog.js.map +1 -1
  161. package/dist/components/nv-dialogfooter.js +1 -1
  162. package/dist/components/nv-dialogheader.js +1 -1
  163. package/dist/components/nv-fieldcheckbox.js +1 -1
  164. package/dist/components/nv-fielddate.js +107 -41
  165. package/dist/components/nv-fielddate.js.map +1 -1
  166. package/dist/components/nv-fielddaterange.js +10 -10
  167. package/dist/components/nv-fielddropdown.js +8 -8
  168. package/dist/components/nv-fielddropdownitem.js +1 -1
  169. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  170. package/dist/components/nv-fieldmultiselect.js +94 -110
  171. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  172. package/dist/components/nv-fieldnumber.js +1 -1
  173. package/dist/components/nv-fieldpassword.js +6 -6
  174. package/dist/components/nv-fieldradio.js +3 -3
  175. package/dist/components/nv-fieldselect.js +8 -8
  176. package/dist/components/nv-fieldslider.js +57 -13
  177. package/dist/components/nv-fieldslider.js.map +1 -1
  178. package/dist/components/nv-fieldtext.js +1 -1
  179. package/dist/components/nv-fieldtextarea.js +3 -3
  180. package/dist/components/nv-fieldtime.js +13 -13
  181. package/dist/components/nv-icon.js +1 -1
  182. package/dist/components/nv-iconbutton.js +1 -1
  183. package/dist/components/nv-loader.js +1 -1
  184. package/dist/components/nv-menu.js +4 -4
  185. package/dist/components/nv-menuitem.js +1 -1
  186. package/dist/components/nv-popover.js +1 -1
  187. package/dist/components/nv-row.js +1 -1
  188. package/dist/components/nv-stack.js +1 -1
  189. package/dist/components/nv-table.js +2 -2
  190. package/dist/components/nv-toggle.js +2 -2
  191. package/dist/components/nv-tooltip.js +1 -1
  192. package/dist/components/{p-1daca48a.js → p-09cdd71f.js} +2 -65
  193. package/dist/components/p-09cdd71f.js.map +1 -0
  194. package/dist/components/p-15aeab4d.js +23 -0
  195. package/dist/components/p-15aeab4d.js.map +1 -0
  196. package/dist/components/{p-44f0039b.js → p-190c8f60.js} +3 -3
  197. package/dist/components/{p-44f0039b.js.map → p-190c8f60.js.map} +1 -1
  198. package/dist/components/p-1cbacdba.js +68 -0
  199. package/dist/components/p-1cbacdba.js.map +1 -0
  200. package/dist/components/p-230ad6c5.js +223 -0
  201. package/dist/components/p-230ad6c5.js.map +1 -0
  202. package/dist/components/{p-05c19c9a.js → p-316ae8e3.js} +4 -4
  203. package/dist/components/{p-05c19c9a.js.map → p-316ae8e3.js.map} +1 -1
  204. package/dist/components/{p-00ac701f.js → p-4069966e.js} +8 -6
  205. package/dist/components/p-4069966e.js.map +1 -0
  206. package/dist/components/{p-5bee0141.js → p-436a0f99.js} +6 -5
  207. package/dist/components/p-436a0f99.js.map +1 -0
  208. package/dist/components/{p-918bb719.js → p-4864a690.js} +2 -2
  209. package/dist/components/{p-918bb719.js.map → p-4864a690.js.map} +1 -1
  210. package/dist/components/{p-4badc1d2.js → p-5e89eb9d.js} +7 -7
  211. package/dist/components/{p-4badc1d2.js.map → p-5e89eb9d.js.map} +1 -1
  212. package/dist/components/{p-001c888b.js → p-618ae85a.js} +5 -4
  213. package/dist/components/p-618ae85a.js.map +1 -0
  214. package/dist/components/{p-d56b30ab.js → p-79b38dfb.js} +3 -3
  215. package/dist/components/{p-d56b30ab.js.map → p-79b38dfb.js.map} +1 -1
  216. package/dist/components/{p-a0d7e0cd.js → p-840858ed.js} +60 -51
  217. package/dist/components/p-840858ed.js.map +1 -0
  218. package/dist/components/{p-cebdbb40.js → p-8a5b0f74.js} +3 -3
  219. package/dist/components/{p-cebdbb40.js.map → p-8a5b0f74.js.map} +1 -1
  220. package/dist/components/{p-c1765831.js → p-8d45dbfe.js} +2 -2
  221. package/dist/components/{p-c1765831.js.map → p-8d45dbfe.js.map} +1 -1
  222. package/dist/components/{p-42301d8f.js → p-9a263d0e.js} +3 -23
  223. package/dist/components/p-9a263d0e.js.map +1 -0
  224. package/dist/components/{p-9f1e8ef3.js → p-9cff2fd1.js} +2 -2
  225. package/dist/components/{p-9f1e8ef3.js.map → p-9cff2fd1.js.map} +1 -1
  226. package/dist/components/{p-9e6e26cb.js → p-9ed7a440.js} +5 -5
  227. package/dist/components/{p-9e6e26cb.js.map → p-9ed7a440.js.map} +1 -1
  228. package/dist/components/{p-970cd9b1.js → p-ac76a11c.js} +5 -5
  229. package/dist/components/{p-970cd9b1.js.map → p-ac76a11c.js.map} +1 -1
  230. package/dist/components/{p-6277f746.js → p-ca130ad2.js} +2 -2
  231. package/dist/components/{p-6277f746.js.map → p-ca130ad2.js.map} +1 -1
  232. package/dist/components/{p-e8c083e3.js → p-d2b4441a.js} +3 -3
  233. package/dist/components/{p-e8c083e3.js.map → p-d2b4441a.js.map} +1 -1
  234. package/dist/components/{p-e072f051.js → p-f1bbb9e8.js} +2 -2
  235. package/dist/components/{p-e072f051.js.map → p-f1bbb9e8.js.map} +1 -1
  236. package/dist/components/{p-919b5237.js → p-f266b533.js} +5 -5
  237. package/dist/components/{p-919b5237.js.map → p-f266b533.js.map} +1 -1
  238. package/dist/esm/{timeline.animation-1b88f052.js → collapse.animation-16e3af45.js} +3 -23
  239. package/dist/esm/collapse.animation-16e3af45.js.map +1 -0
  240. package/dist/esm/fade.animation-71e8e34c.js +68 -0
  241. package/dist/esm/fade.animation-71e8e34c.js.map +1 -0
  242. package/dist/esm/{grow.animation-cac164da.js → grow.animation-f7b26024.js} +2 -2
  243. package/dist/esm/{grow.animation-cac164da.js.map → grow.animation-f7b26024.js.map} +1 -1
  244. package/dist/esm/index-a1936cd0.js +8 -0
  245. package/dist/esm/index.js +5 -3
  246. package/dist/esm/index.js.map +1 -1
  247. package/dist/esm/loader.js +1 -1
  248. package/dist/esm/native.js +1 -1
  249. package/dist/esm/nv-accordion-item.entry.js +177 -0
  250. package/dist/esm/nv-accordion-item.entry.js.map +1 -0
  251. package/dist/esm/nv-accordion.entry.js +190 -0
  252. package/dist/esm/nv-accordion.entry.js.map +1 -0
  253. package/dist/esm/nv-alert.entry.js +5 -3
  254. package/dist/esm/nv-alert.entry.js.map +1 -1
  255. package/dist/esm/nv-avatar.entry.js +1 -1
  256. package/dist/esm/nv-badge_2.entry.js +7 -5
  257. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  258. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  259. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  260. package/dist/esm/nv-button.entry.js +1 -1
  261. package/dist/esm/nv-calendar.entry.js +59 -50
  262. package/dist/esm/nv-calendar.entry.js.map +1 -1
  263. package/dist/esm/nv-col.entry.js +1 -1
  264. package/dist/esm/nv-datagrid.entry.js +2 -2
  265. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  266. package/dist/esm/nv-dialog.entry.js +19 -6
  267. package/dist/esm/nv-dialog.entry.js.map +1 -1
  268. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  269. package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
  270. package/dist/esm/nv-fielddate.entry.js +100 -35
  271. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  272. package/dist/esm/nv-fielddaterange.entry.js +4 -4
  273. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  274. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  275. package/dist/esm/nv-fieldmultiselect.entry.js +85 -100
  276. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  277. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  278. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  279. package/dist/esm/nv-fieldradio.entry.js +3 -3
  280. package/dist/esm/nv-fieldselect.entry.js +5 -5
  281. package/dist/esm/nv-fieldslider.entry.js +53 -9
  282. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  283. package/dist/esm/nv-fieldtext.entry.js +3 -3
  284. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  285. package/dist/esm/nv-fieldtime.entry.js +9 -9
  286. package/dist/esm/nv-icon.entry.js +1 -1
  287. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  288. package/dist/esm/nv-menu.entry.js +1 -1
  289. package/dist/esm/nv-menuitem.entry.js +1 -1
  290. package/dist/esm/nv-popover.entry.js +4 -3
  291. package/dist/esm/nv-popover.entry.js.map +1 -1
  292. package/dist/esm/nv-row.entry.js +1 -1
  293. package/dist/esm/nv-stack.entry.js +1 -1
  294. package/dist/esm/nv-table.entry.js +2 -2
  295. package/dist/esm/nv-toggle.entry.js +2 -2
  296. package/dist/esm/nv-tooltip.entry.js +4 -3
  297. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  298. package/dist/esm/{fade.animation-2a077983.js → stylefire.es-74da334a.js} +2 -65
  299. package/dist/esm/stylefire.es-74da334a.js.map +1 -0
  300. package/dist/esm/timeline.animation-adf35ecb.js +23 -0
  301. package/dist/esm/timeline.animation-adf35ecb.js.map +1 -0
  302. package/dist/native/index.esm.js +1 -1
  303. package/dist/native/index.esm.js.map +1 -1
  304. package/dist/native/native.esm.js +1 -1
  305. package/dist/native/native.esm.js.map +1 -1
  306. package/dist/native/{p-a0505695.entry.js → p-08452012.entry.js} +2 -2
  307. package/dist/native/p-09cdd71f.js +16 -0
  308. package/dist/native/p-09cdd71f.js.map +1 -0
  309. package/dist/native/p-0ac03708.entry.js +2 -0
  310. package/dist/native/p-0ac03708.entry.js.map +1 -0
  311. package/dist/native/p-0ada0382.entry.js +2 -0
  312. package/dist/native/p-0ada0382.entry.js.map +1 -0
  313. package/dist/native/p-1235c007.entry.js +2 -0
  314. package/dist/native/p-12963ae4.entry.js +2 -0
  315. package/dist/native/p-12963ae4.entry.js.map +1 -0
  316. package/dist/native/p-15aeab4d.js +2 -0
  317. package/dist/native/p-15aeab4d.js.map +1 -0
  318. package/dist/native/{p-b5b9190a.entry.js → p-18831490.entry.js} +2 -2
  319. package/dist/native/{p-1d98477d.entry.js → p-1ad1bff9.entry.js} +2 -2
  320. package/dist/native/p-1cbacdba.js +2 -0
  321. package/dist/native/p-1cbacdba.js.map +1 -0
  322. package/dist/native/p-1cce9b24.entry.js +2 -0
  323. package/dist/native/p-1cce9b24.entry.js.map +1 -0
  324. package/dist/native/{p-914da1e1.entry.js → p-1f932a4b.entry.js} +2 -2
  325. package/dist/native/{p-6ea1c78b.entry.js → p-2576c1a0.entry.js} +2 -2
  326. package/dist/native/{p-19f484a0.entry.js → p-2d23fcea.entry.js} +2 -2
  327. package/dist/native/{p-e9962dac.entry.js → p-31e72603.entry.js} +2 -2
  328. package/dist/native/p-33e5037d.entry.js +2 -0
  329. package/dist/native/{p-b9c7b644.entry.js → p-4cf00884.entry.js} +2 -2
  330. package/dist/native/p-5172f17a.entry.js +2 -0
  331. package/dist/native/{p-08ca678c.entry.js → p-51a57a3a.entry.js} +2 -2
  332. package/dist/native/p-5eca22c7.entry.js +2 -0
  333. package/dist/native/{p-82568ec7.entry.js.map → p-5eca22c7.entry.js.map} +1 -1
  334. package/dist/native/{p-dd6b1d79.entry.js → p-609b3822.entry.js} +2 -2
  335. package/dist/native/{p-e293b3fe.entry.js → p-625be06b.entry.js} +2 -2
  336. package/dist/native/{p-a983e6a0.entry.js → p-8030c16b.entry.js} +2 -2
  337. package/dist/native/{p-6029e51b.entry.js → p-85a54ef2.entry.js} +2 -2
  338. package/dist/native/p-8d45dbfe.js +2 -0
  339. package/dist/native/p-9a263d0e.js +2 -0
  340. package/dist/native/p-9a263d0e.js.map +1 -0
  341. package/dist/native/{p-1a5d3b87.entry.js → p-9dc1c3e7.entry.js} +2 -2
  342. package/dist/native/p-a36dc25a.entry.js +2 -0
  343. package/dist/native/{p-ad128108.entry.js.map → p-a36dc25a.entry.js.map} +1 -1
  344. package/dist/native/p-a6dc9b59.entry.js +2 -0
  345. package/dist/native/p-a6dc9b59.entry.js.map +1 -0
  346. package/dist/native/{p-003b6377.entry.js → p-b829383a.entry.js} +2 -2
  347. package/dist/native/{p-af1e6035.entry.js → p-bab6d0a5.entry.js} +2 -2
  348. package/dist/native/p-baddee4c.entry.js +7 -0
  349. package/dist/native/p-baddee4c.entry.js.map +1 -0
  350. package/dist/native/p-be67545e.entry.js +2 -0
  351. package/dist/native/p-be67545e.entry.js.map +1 -0
  352. package/dist/native/{p-dd256ea3.entry.js → p-c2826f22.entry.js} +2 -2
  353. package/dist/native/p-c9cde996.entry.js +2 -0
  354. package/dist/native/{p-d4bf2587.entry.js.map → p-c9cde996.entry.js.map} +1 -1
  355. package/dist/native/{p-54198779.entry.js → p-cf468c67.entry.js} +2 -2
  356. package/dist/native/{p-a5c72bd3.entry.js → p-ddb0b9f6.entry.js} +2 -2
  357. package/dist/native/{p-2d98d4f0.entry.js → p-e19a8885.entry.js} +2 -2
  358. package/dist/native/{p-1e0df2d3.entry.js → p-e802fbb8.entry.js} +2 -2
  359. package/dist/native/p-ec92ee7a.entry.js +2 -0
  360. package/dist/native/{p-5b06f4b5.entry.js → p-f9aa4900.entry.js} +2 -2
  361. package/dist/native/{p-be9aeed4.entry.js → p-fca3e27d.entry.js} +2 -2
  362. package/dist/native/p-fe4e516b.entry.js +2 -0
  363. package/dist/native/p-fe4e516b.entry.js.map +1 -0
  364. package/dist/types/components/nv-accordion/nv-accordion.d.ts +115 -0
  365. package/dist/types/components/nv-accordion/nv-accordion.docs.d.ts +4 -0
  366. package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +79 -0
  367. package/dist/types/components/nv-accordion-item/nv-accordion-item.docs.d.ts +4 -0
  368. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +4 -2
  369. package/dist/types/components/nv-dialog/nv-dialog.d.ts +7 -0
  370. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +22 -2
  371. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +13 -16
  372. package/dist/types/components/nv-fieldslider/nv-fieldslider.utils.d.ts +13 -0
  373. package/dist/types/components/nv-fieldslider/partials/range-thumb.d.ts +2 -0
  374. package/dist/types/components/nv-fieldslider/partials/single-thumb.d.ts +2 -0
  375. package/dist/types/components/nv-tooltip/nv-tooltip.d.ts +7 -0
  376. package/dist/types/components.d.ts +241 -10
  377. package/dist/vscode-data.json +75 -5
  378. package/hydrate/index.js +1113 -592
  379. package/hydrate/index.mjs +1113 -592
  380. package/package.json +1 -1
  381. package/dist/cjs/fade.animation-0d33d198.js.map +0 -1
  382. package/dist/cjs/timeline.animation-dbb9c5ea.js.map +0 -1
  383. package/dist/components/p-001c888b.js.map +0 -1
  384. package/dist/components/p-00ac701f.js.map +0 -1
  385. package/dist/components/p-1daca48a.js.map +0 -1
  386. package/dist/components/p-42301d8f.js.map +0 -1
  387. package/dist/components/p-5bee0141.js.map +0 -1
  388. package/dist/components/p-a0d7e0cd.js.map +0 -1
  389. package/dist/esm/fade.animation-2a077983.js.map +0 -1
  390. package/dist/esm/timeline.animation-1b88f052.js.map +0 -1
  391. package/dist/native/p-0493c51a.entry.js +0 -2
  392. package/dist/native/p-1daca48a.js +0 -16
  393. package/dist/native/p-1daca48a.js.map +0 -1
  394. package/dist/native/p-42301d8f.js +0 -2
  395. package/dist/native/p-42301d8f.js.map +0 -1
  396. package/dist/native/p-45cbe6e4.entry.js +0 -2
  397. package/dist/native/p-46428304.entry.js +0 -2
  398. package/dist/native/p-46428304.entry.js.map +0 -1
  399. package/dist/native/p-58f4dc0e.entry.js +0 -2
  400. package/dist/native/p-58f4dc0e.entry.js.map +0 -1
  401. package/dist/native/p-59b07b36.entry.js +0 -2
  402. package/dist/native/p-59b07b36.entry.js.map +0 -1
  403. package/dist/native/p-82568ec7.entry.js +0 -2
  404. package/dist/native/p-82c4bf56.entry.js +0 -2
  405. package/dist/native/p-82c4bf56.entry.js.map +0 -1
  406. package/dist/native/p-86ab23ea.entry.js +0 -2
  407. package/dist/native/p-ad128108.entry.js +0 -2
  408. package/dist/native/p-bee972c7.entry.js +0 -2
  409. package/dist/native/p-c1765831.js +0 -2
  410. package/dist/native/p-d21b2da2.entry.js +0 -7
  411. package/dist/native/p-d21b2da2.entry.js.map +0 -1
  412. package/dist/native/p-d4bf2587.entry.js +0 -2
  413. package/dist/native/p-eaf51f2c.entry.js +0 -2
  414. package/dist/native/p-eaf51f2c.entry.js.map +0 -1
  415. /package/dist/native/{p-a0505695.entry.js.map → p-08452012.entry.js.map} +0 -0
  416. /package/dist/native/{p-86ab23ea.entry.js.map → p-1235c007.entry.js.map} +0 -0
  417. /package/dist/native/{p-b5b9190a.entry.js.map → p-18831490.entry.js.map} +0 -0
  418. /package/dist/native/{p-1d98477d.entry.js.map → p-1ad1bff9.entry.js.map} +0 -0
  419. /package/dist/native/{p-914da1e1.entry.js.map → p-1f932a4b.entry.js.map} +0 -0
  420. /package/dist/native/{p-6ea1c78b.entry.js.map → p-2576c1a0.entry.js.map} +0 -0
  421. /package/dist/native/{p-19f484a0.entry.js.map → p-2d23fcea.entry.js.map} +0 -0
  422. /package/dist/native/{p-e9962dac.entry.js.map → p-31e72603.entry.js.map} +0 -0
  423. /package/dist/native/{p-0493c51a.entry.js.map → p-33e5037d.entry.js.map} +0 -0
  424. /package/dist/native/{p-b9c7b644.entry.js.map → p-4cf00884.entry.js.map} +0 -0
  425. /package/dist/native/{p-bee972c7.entry.js.map → p-5172f17a.entry.js.map} +0 -0
  426. /package/dist/native/{p-08ca678c.entry.js.map → p-51a57a3a.entry.js.map} +0 -0
  427. /package/dist/native/{p-dd6b1d79.entry.js.map → p-609b3822.entry.js.map} +0 -0
  428. /package/dist/native/{p-e293b3fe.entry.js.map → p-625be06b.entry.js.map} +0 -0
  429. /package/dist/native/{p-a983e6a0.entry.js.map → p-8030c16b.entry.js.map} +0 -0
  430. /package/dist/native/{p-6029e51b.entry.js.map → p-85a54ef2.entry.js.map} +0 -0
  431. /package/dist/native/{p-c1765831.js.map → p-8d45dbfe.js.map} +0 -0
  432. /package/dist/native/{p-1a5d3b87.entry.js.map → p-9dc1c3e7.entry.js.map} +0 -0
  433. /package/dist/native/{p-003b6377.entry.js.map → p-b829383a.entry.js.map} +0 -0
  434. /package/dist/native/{p-af1e6035.entry.js.map → p-bab6d0a5.entry.js.map} +0 -0
  435. /package/dist/native/{p-dd256ea3.entry.js.map → p-c2826f22.entry.js.map} +0 -0
  436. /package/dist/native/{p-54198779.entry.js.map → p-cf468c67.entry.js.map} +0 -0
  437. /package/dist/native/{p-a5c72bd3.entry.js.map → p-ddb0b9f6.entry.js.map} +0 -0
  438. /package/dist/native/{p-2d98d4f0.entry.js.map → p-e19a8885.entry.js.map} +0 -0
  439. /package/dist/native/{p-1e0df2d3.entry.js.map → p-e802fbb8.entry.js.map} +0 -0
  440. /package/dist/native/{p-45cbe6e4.entry.js.map → p-ec92ee7a.entry.js.map} +0 -0
  441. /package/dist/native/{p-5b06f4b5.entry.js.map → p-f9aa4900.entry.js.map} +0 -0
  442. /package/dist/native/{p-be9aeed4.entry.js.map → p-fca3e27d.entry.js.map} +0 -0
@@ -0,0 +1,181 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-c56424e5.js');
6
+ const collapse_animation = require('./collapse.animation-a129dc3f.js');
7
+ require('./stylefire.es-717e022a.js');
8
+
9
+ const nvAccordionItemCss = "nv-accordion-item{display:block;border-bottom:var(--spacing-px) solid var(--color-content-low-border)}nv-accordion-item:last-child{border-bottom:none}nv-accordion-item .nv-accordion-item__header{cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4)}nv-accordion-item .nv-accordion-item__header .nv-accordion-item__chevron{margin-left:var(--spacing-2);flex-shrink:0}nv-accordion-item .nv-accordion-item__header .nv-accordion-item__header-content{display:flex;flex-direction:column;gap:var(--spacing-0-5);flex:1;min-width:0}nv-accordion-item .nv-accordion-item__header .nv-accordion-item__title{color:var(--color-content-high-text);font-size:var(--font-size-lg);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--line-height-lg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nv-accordion-item .nv-accordion-item__header .nv-accordion-item__subtitle{color:var(--color-content-low-text);font-size:var(--font-size-md);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--line-height-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nv-accordion-item .nv-accordion-item__content{background:var(--color-level-10-background)}nv-accordion-item .nv-accordion-item__content .nv-accordion-item__content-inner{padding:var(--spacing-4);color:var(--color-content-low-text);font-size:var(--font-size-md);font-style:normal;font-weight:500;line-height:var(--line-height-base);}nv-accordion-item.is-disabled{opacity:var(--opacity-disabled);pointer-events:none}nv-accordion-item.is-open .nv-accordion-item__header{border-bottom:var(--spacing-px) solid var(--color-content-low-border)}";
10
+ const NvAccordionItemStyle0 = nvAccordionItemCss;
11
+
12
+ const NvAccordionItem = class {
13
+ constructor(hostRef) {
14
+ index.registerInstance(this, hostRef);
15
+ this.itemToggle = index.createEvent(this, "itemToggle", 7);
16
+ /** Open or closed */
17
+ this.open = false;
18
+ /** Disables the item */
19
+ this.disabled = false;
20
+ /** Parent expansion mode (accordion or multi) */
21
+ this.mode = 'accordion';
22
+ //#endregion EVENTS
23
+ /****************************************************************************/
24
+ //#region STATE
25
+ /** Internal state for open/close rendering */
26
+ this.currentOpenState = false;
27
+ /**
28
+ * Controls if the panel has been initialized for animations
29
+ */
30
+ this.isInitialized = false;
31
+ /**
32
+ * Animation in progress
33
+ */
34
+ this.isAnimating = false;
35
+ /**
36
+ * Handler for header click
37
+ */
38
+ this.handleHeaderClick = () => {
39
+ this.toggle();
40
+ };
41
+ /**
42
+ * Handler for iconbutton click
43
+ * @param {Event} e - Click event
44
+ */
45
+ this.handleIconClick = (e) => {
46
+ e.stopPropagation(); // Prevent header click from triggering
47
+ this.toggle();
48
+ };
49
+ /**
50
+ * Handler for keyboard events on iconbutton
51
+ * @param {KeyboardEvent} e - Keyboard event
52
+ */
53
+ this.handleHeaderKeyDown = (e) => {
54
+ if (this.disabled)
55
+ return;
56
+ switch (e.key) {
57
+ case 'Enter':
58
+ case ' ':
59
+ e.preventDefault();
60
+ this.toggle();
61
+ break;
62
+ case 'ArrowDown':
63
+ e.preventDefault();
64
+ if (!this.open) {
65
+ this.open = true;
66
+ this.itemToggle.emit(this.open);
67
+ this.updateVisibility(this.open);
68
+ }
69
+ break;
70
+ case 'ArrowUp':
71
+ e.preventDefault();
72
+ if (this.open) {
73
+ this.open = false;
74
+ this.itemToggle.emit(this.open);
75
+ this.updateVisibility(this.open);
76
+ }
77
+ break;
78
+ }
79
+ };
80
+ }
81
+ //#endregion STATE
82
+ /****************************************************************************/
83
+ //#region WATCHERS
84
+ async onOpenChanged(newValue, oldValue) {
85
+ this.currentOpenState = newValue; // Synchronize internal state
86
+ // Skip initial render
87
+ if (oldValue === undefined) {
88
+ return;
89
+ }
90
+ await this.updateVisibility(newValue);
91
+ }
92
+ //#endregion WATCHERS
93
+ /****************************************************************************/
94
+ //#region ANIMATIONS
95
+ /**
96
+ * Updates the visibility state with Nova animation system
97
+ * @param {boolean} open - Whether the accordion item should be open
98
+ */
99
+ async updateVisibility(open) {
100
+ if (!this.contentRef)
101
+ return;
102
+ this.isAnimating = true;
103
+ const { collapse, expand } = collapse_animation.useCollapse(this.contentRef, {
104
+ duration: 200,
105
+ });
106
+ if (open) {
107
+ // Expand with animation
108
+ await expand();
109
+ }
110
+ else {
111
+ // Collapse with animation
112
+ await collapse();
113
+ }
114
+ this.isAnimating = false;
115
+ }
116
+ //#endregion ANIMATIONS
117
+ /****************************************************************************/
118
+ //#region LIFECYCLE
119
+ componentWillLoad() {
120
+ this.currentOpenState = this.open; // Initial synchronization
121
+ }
122
+ componentDidLoad() {
123
+ if (this.contentRef) {
124
+ const { setExpanded, setCollapsed } = collapse_animation.useCollapse(this.contentRef);
125
+ if (this.open) {
126
+ // If open by default on initial load, set expanded state without animation
127
+ setExpanded();
128
+ }
129
+ else {
130
+ // If closed by default, set collapsed state without animation
131
+ setCollapsed();
132
+ }
133
+ }
134
+ }
135
+ disconnectedCallback() {
136
+ if (this.mutationObserver) {
137
+ this.mutationObserver.disconnect();
138
+ }
139
+ }
140
+ //#endregion LIFECYCLE
141
+ /****************************************************************************/
142
+ //#region METHODS
143
+ /**
144
+ * Toggle open/close (Public API)
145
+ */
146
+ async toggle() {
147
+ if (!this.disabled && !this.isAnimating) {
148
+ this.open = !this.open;
149
+ this.itemToggle.emit(this.open);
150
+ // Force animation update directly instead of relying on watcher
151
+ await this.updateVisibility(this.open);
152
+ }
153
+ }
154
+ /**
155
+ * Get the chevron icon name based on open state
156
+ * @returns {string} The icon name to display in the chevron button
157
+ */
158
+ get chevronIconName() {
159
+ return this.open ? 'chevron-top' : 'chevron-down';
160
+ }
161
+ //#endregion METHODS
162
+ /****************************************************************************/
163
+ //#region RENDER
164
+ render() {
165
+ return (index.h(index.Host, { key: 'fd0200c1d78b3e3ae7361783dbba14d55732e7cf', class: {
166
+ 'nv-accordion-item': true,
167
+ 'is-open': this.open,
168
+ 'is-disabled': this.disabled,
169
+ 'is-animating': this.isAnimating,
170
+ }, role: "listitem", "aria-expanded": this.open ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, index.h("div", { key: '471cc5dc8ec8a3fff592b5b443a82270aea9a477', class: "nv-accordion-item__header", onClick: this.handleHeaderClick, "aria-controls": "content" }, index.h("slot", { key: 'dacf57578644d0ff3d6c5cf55c382c9c04a6fdf4', name: "header" }, index.h("div", { key: 'd0e23a45fd43046f4dcebcc9cece8c2650cdaf9e', class: "nv-accordion-item__header-content" }, this.itemtitle && (index.h("span", { key: '061068f7afa0d25d3273868d70d9f55c336d93d7', class: "nv-accordion-item__title" }, this.itemtitle)), this.subtitle && (index.h("span", { key: '1ba3c4754c95d6fbe97fb4111dba06543879e400', class: "nv-accordion-item__subtitle" }, this.subtitle)))), index.h("nv-iconbutton", { key: '834c4aa3111a8619f4c974e87899d0dfa6d14280', emphasis: "low", size: "sm", shape: "square", name: this.chevronIconName, tabindex: this.disabled ? -1 : 0, onClick: this.handleIconClick, onKeyDown: this.handleHeaderKeyDown, "aria-expanded": this.open ? 'true' : 'false', "aria-controls": "content", "aria-label": this.open ? 'Fermer la section' : 'Ouvrir la section' })), index.h("div", { key: '79ba605179905a7a58a642a2c5d1f0bdf90d67ae', id: "content", class: "nv-accordion-item__content", "aria-hidden": !this.open ? 'true' : 'false', ref: el => (this.contentRef = el) }, index.h("div", { key: '6ca4b0d9acd5262a4a041ad9d59bbace5cc7850d', class: "nv-accordion-item__content-inner" }, index.h("slot", { key: '85c288666cf3b13abcd1ee1dbaced7ceb9ff9e6e', name: "content" })))));
171
+ }
172
+ get el() { return index.getElement(this); }
173
+ static get watchers() { return {
174
+ "open": ["onOpenChanged"]
175
+ }; }
176
+ };
177
+ NvAccordionItem.style = NvAccordionItemStyle0;
178
+
179
+ exports.nv_accordion_item = NvAccordionItem;
180
+
181
+ //# sourceMappingURL=nv-accordion-item.cjs.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-accordion-item.entry.cjs.js","mappings":"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","names":["useCollapse","h","Host"],"sources":["src/components/nv-accordion-item/styles/nv-accordion-item.scss?tag=nv-accordion-item","src/components/nv-accordion-item/nv-accordion-item.tsx"],"sourcesContent":["@use \"./mixins\" as *;\n\nnv-accordion-item {\n @include accordion-item-root();\n\n .nv-accordion-item__header {\n @include accordion-item-header();\n \n .nv-accordion-item__chevron {\n @include accordion-item-chevron();\n }\n\n .nv-accordion-item__header-content {\n @include accordion-item-header-content();\n }\n\n .nv-accordion-item__title {\n @include accordion-item-title();\n }\n\n .nv-accordion-item__subtitle {\n @include accordion-item-subtitle();\n }\n }\n\n .nv-accordion-item__content {\n @include accordion-item-content();\n \n .nv-accordion-item__content-inner {\n @include accordion-item-content-inner();\n }\n }\n\n // Styles for disabled items\n &.is-disabled {\n @include accordion-item-disabled();\n }\n\n // Border between header and content when item is open\n &.is-open .nv-accordion-item__header {\n border-bottom: var(--spacing-px) solid var(--color-content-low-border);\n }\n}","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Method,\n State,\n Element,\n Watch,\n} from '@stencil/core';\nimport { useCollapse } from '../../animations';\n\n/**\n * Accordion item element for nv-accordion.\n *\n * @slot header - Custom header (replaces itemtitle/subtitle)\n * @slot content - Main content (expandable area)\n */\n@Component({\n tag: 'nv-accordion-item',\n styleUrl: 'styles/nv-accordion-item.scss',\n shadow: false,\n})\nexport class NvAccordionItem {\n @Element() el!: HTMLNvAccordionItemElement;\n private contentRef?: HTMLDivElement;\n private mutationObserver?: MutationObserver;\n\n /****************************************************************************/\n //#region PROPERTIES\n /** Item title (displayed if header slot is absent) */\n @Prop({ reflect: true })\n readonly itemtitle?: string;\n /** Item subtitle (displayed if header slot is absent) */\n @Prop({ reflect: true })\n readonly subtitle?: string;\n /** Open or closed */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n /** Disables the item */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n /** Maximum content height (in px, optional). If not defined, auto height. */\n @Prop({ reflect: true })\n readonly maxContentHeight?: number;\n /** Parent expansion mode (accordion or multi) */\n @Prop({ reflect: true })\n readonly mode?: 'accordion' | 'multi' = 'accordion';\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n /**\n * Event emitted on toggle (header click)\n */\n @Event()\n itemToggle: EventEmitter<boolean>;\n //#endregion EVENTS\n /****************************************************************************/\n //#region STATE\n /** Internal state for open/close rendering */\n @State()\n currentOpenState: boolean = false;\n\n /**\n * Controls if the panel has been initialized for animations\n */\n @State()\n isInitialized: boolean = false;\n\n /**\n * Animation in progress\n */\n @State()\n isAnimating: boolean = false;\n\n //#endregion STATE\n /****************************************************************************/\n //#region WATCHERS\n @Watch('open')\n async onOpenChanged(newValue: boolean, oldValue: boolean) {\n this.currentOpenState = newValue; // Synchronize internal state\n\n // Skip initial render\n if (oldValue === undefined) {\n return;\n }\n\n await this.updateVisibility(newValue);\n }\n //#endregion WATCHERS\n /****************************************************************************/\n //#region ANIMATIONS\n /**\n * Updates the visibility state with Nova animation system\n * @param {boolean} open - Whether the accordion item should be open\n */\n private async updateVisibility(open: boolean) {\n if (!this.contentRef) return;\n\n this.isAnimating = true;\n\n const { collapse, expand } = useCollapse(this.contentRef, {\n duration: 200,\n });\n\n if (open) {\n // Expand with animation\n await expand();\n } else {\n // Collapse with animation\n await collapse();\n }\n\n this.isAnimating = false;\n }\n //#endregion ANIMATIONS\n /****************************************************************************/\n //#region LIFECYCLE\n componentWillLoad() {\n this.currentOpenState = this.open; // Initial synchronization\n }\n\n componentDidLoad() {\n if (this.contentRef) {\n const { setExpanded, setCollapsed } = useCollapse(this.contentRef);\n\n if (this.open) {\n // If open by default on initial load, set expanded state without animation\n setExpanded();\n } else {\n // If closed by default, set collapsed state without animation\n setCollapsed();\n }\n }\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region METHODS\n /**\n * Toggle open/close (Public API)\n */\n @Method()\n async toggle() {\n if (!this.disabled && !this.isAnimating) {\n this.open = !this.open;\n this.itemToggle.emit(this.open);\n\n // Force animation update directly instead of relying on watcher\n await this.updateVisibility(this.open);\n }\n }\n\n /**\n * Handler for header click\n */\n private handleHeaderClick = () => {\n this.toggle();\n };\n\n /**\n * Handler for iconbutton click\n * @param {Event} e - Click event\n */\n private handleIconClick = (e: Event) => {\n e.stopPropagation(); // Prevent header click from triggering\n this.toggle();\n };\n\n /**\n * Handler for keyboard events on iconbutton\n * @param {KeyboardEvent} e - Keyboard event\n */\n private handleHeaderKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.toggle();\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n this.itemToggle.emit(this.open);\n this.updateVisibility(this.open);\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this.open) {\n this.open = false;\n this.itemToggle.emit(this.open);\n this.updateVisibility(this.open);\n }\n break;\n }\n };\n\n /**\n * Get the chevron icon name based on open state\n * @returns {string} The icon name to display in the chevron button\n */\n private get chevronIconName(): string {\n return this.open ? 'chevron-top' : 'chevron-down';\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region RENDER\n render() {\n return (\n <Host\n class={{\n 'nv-accordion-item': true,\n 'is-open': this.open,\n 'is-disabled': this.disabled,\n 'is-animating': this.isAnimating,\n }}\n role=\"listitem\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <div\n class=\"nv-accordion-item__header\"\n onClick={this.handleHeaderClick}\n aria-controls=\"content\"\n >\n <slot name=\"header\">\n <div class=\"nv-accordion-item__header-content\">\n {this.itemtitle && (\n <span class=\"nv-accordion-item__title\">{this.itemtitle}</span>\n )}\n {this.subtitle && (\n <span class=\"nv-accordion-item__subtitle\">{this.subtitle}</span>\n )}\n </div>\n </slot>\n <nv-iconbutton\n emphasis=\"low\"\n size=\"sm\"\n shape=\"square\"\n name={this.chevronIconName}\n tabindex={this.disabled ? -1 : 0}\n onClick={this.handleIconClick}\n onKeyDown={this.handleHeaderKeyDown}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls=\"content\"\n aria-label={this.open ? 'Fermer la section' : 'Ouvrir la section'}\n ></nv-iconbutton>\n </div>\n\n <div\n id=\"content\"\n class=\"nv-accordion-item__content\"\n aria-hidden={!this.open ? 'true' : 'false'}\n ref={el => (this.contentRef = el as HTMLDivElement)}\n >\n <div class=\"nv-accordion-item__content-inner\">\n <slot name=\"content\" />\n </div>\n </div>\n </Host>\n );\n }\n // #endregion RENDER\n}\n"],"version":3}
@@ -0,0 +1,194 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-c56424e5.js');
6
+
7
+ const nvAccordionCss = "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}";
8
+ const NvAccordionStyle0 = nvAccordionCss;
9
+
10
+ const NvAccordion = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.nvChange = index.createEvent(this, "nvChange", 7);
14
+ /**
15
+ * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)
16
+ */
17
+ this.mode = 'accordion';
18
+ //#endregion PROPERTIES
19
+ /****************************************************************************/
20
+ //#region STATE
21
+ /**
22
+ * Internal index of open items (not exposed)
23
+ */
24
+ this.internalOpenIndexes = [];
25
+ /**
26
+ * Parsed data from data prop
27
+ */
28
+ this.parsedData = [];
29
+ // Synchronization openIndexes <-> internalOpenIndexes
30
+ this.itemToggleHandlers = [];
31
+ }
32
+ //#endregion EVENTS
33
+ /****************************************************************************/
34
+ //#region METHODS
35
+ /**
36
+ * Opens an item by its index (Public API)
37
+ * @param {number} index Index of the item to open
38
+ */
39
+ async open(index) {
40
+ this.toggleItem(index, true);
41
+ }
42
+ /**
43
+ * Closes an item by its index (Public API)
44
+ * @param {number} index Index of the item to close
45
+ */
46
+ async close(index) {
47
+ this.toggleItem(index, false);
48
+ }
49
+ /**
50
+ * Toggles an item's state (internal)
51
+ * @param {number} index Item index
52
+ * @param {boolean} [forceOpen] Force open (true) or close (false)
53
+ */
54
+ toggleItem(index, forceOpen) {
55
+ let openIndexes = this.openIndexes !== undefined
56
+ ? [...this.openIndexes]
57
+ : [...(this.internalOpenIndexes || [])];
58
+ const isOpen = openIndexes.includes(index);
59
+ if (this.mode === 'accordion') {
60
+ openIndexes = forceOpen === false || isOpen ? [] : [index];
61
+ }
62
+ else {
63
+ if (forceOpen === false) {
64
+ openIndexes = openIndexes.filter(i => i !== index);
65
+ }
66
+ else if (!isOpen) {
67
+ openIndexes.push(index);
68
+ }
69
+ }
70
+ this.internalOpenIndexes = openIndexes;
71
+ this.nvChange.emit({ openIndexes });
72
+ if (this.openIndexes !== undefined) {
73
+ this.openIndexes =
74
+ this.mode === 'accordion'
75
+ ? [openIndexes[0]].filter(x => x !== undefined)
76
+ : [...openIndexes];
77
+ }
78
+ // Update child elements state - for both data and slot usage
79
+ this.updateChildrenState();
80
+ }
81
+ /**
82
+ * Updates the open state of child elements based on internalOpenIndexes
83
+ */
84
+ async updateChildrenState() {
85
+ // Force a re-render by updating the state
86
+ this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];
87
+ }
88
+ /**
89
+ * Listens to itemToggle events from nv-accordion-item elements
90
+ * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item
91
+ */
92
+ onItemToggle(event) {
93
+ // Ignore if using data (handled by itemToggleHandlers)
94
+ if (this.parsedData && this.parsedData.length > 0)
95
+ return;
96
+ // Find the index of the item that emitted the event
97
+ const items = Array.from(this.el.querySelectorAll('nv-accordion-item'));
98
+ const targetItem = event.target;
99
+ const index = items.indexOf(targetItem);
100
+ if (index !== -1) {
101
+ // If the event comes from an item that is opening, handle accordion mode
102
+ if (event.detail === true) {
103
+ if (this.mode === 'accordion') {
104
+ // Close all other items
105
+ items.forEach((item, i) => {
106
+ if (i !== index && item.open) {
107
+ item.open = false;
108
+ }
109
+ });
110
+ this.internalOpenIndexes = [index];
111
+ }
112
+ else {
113
+ // Add index to internalOpenIndexes if not already present
114
+ if (!this.internalOpenIndexes.includes(index)) {
115
+ this.internalOpenIndexes = [...this.internalOpenIndexes, index];
116
+ }
117
+ }
118
+ }
119
+ else {
120
+ // If the item is closing, remove it from internalOpenIndexes
121
+ this.internalOpenIndexes = this.internalOpenIndexes.filter(i => i !== index);
122
+ }
123
+ // Emit nvChange event
124
+ this.nvChange.emit({ openIndexes: this.internalOpenIndexes });
125
+ if (this.openIndexes !== undefined) {
126
+ this.openIndexes =
127
+ this.mode === 'accordion'
128
+ ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)
129
+ : [...this.internalOpenIndexes];
130
+ }
131
+ }
132
+ }
133
+ //#endregion METHODS
134
+ /****************************************************************************/
135
+ //#region WATCHERS
136
+ dataChanged() {
137
+ this.parseData();
138
+ }
139
+ parseData() {
140
+ if (typeof this.data === 'string') {
141
+ try {
142
+ this.parsedData = JSON.parse(this.data);
143
+ }
144
+ catch (e) {
145
+ console.error('nv-accordion: Failed to parse data prop.', e);
146
+ this.parsedData = [];
147
+ }
148
+ }
149
+ else {
150
+ this.parsedData = this.data || [];
151
+ }
152
+ if (this.parsedData) {
153
+ this.itemToggleHandlers = this.parsedData.map((_, i) => () => this.toggleItem(i));
154
+ }
155
+ }
156
+ componentWillLoad() {
157
+ this.parseData();
158
+ if (this.openIndexes !== undefined) {
159
+ this.internalOpenIndexes = [...this.openIndexes];
160
+ }
161
+ }
162
+ componentDidLoad() {
163
+ // If using direct child elements, initialize their state
164
+ if (!this.parsedData || this.parsedData.length === 0) {
165
+ this.updateChildrenState();
166
+ }
167
+ }
168
+ componentWillUpdate() {
169
+ if (this.openIndexes !== undefined) {
170
+ this.internalOpenIndexes = [...this.openIndexes];
171
+ }
172
+ }
173
+ //#endregion WATCHERS
174
+ /****************************************************************************/
175
+ //#region LIFECYCLE
176
+ //#endregion LIFECYCLE
177
+ /****************************************************************************/
178
+ //#region RENDER
179
+ render() {
180
+ return (index.h(index.Host, { key: '5dcc9ea52a404dff7c4bb176b8a9781019e64bd3', role: "list", class: "nv-accordion" }, this.parsedData && this.parsedData.length > 0 ? (this.parsedData.map((item, i) => {
181
+ var _a;
182
+ return (index.h("nv-accordion-item", { key: (_a = item.id) !== null && _a !== void 0 ? _a : i, itemtitle: item.title, disabled: item.disabled, open: (this.internalOpenIndexes || []).includes(i), onItemToggle: this.itemToggleHandlers[i] }, item.subtitle ? (index.h("div", { slot: "header" }, index.h("div", { class: "nv-accordion-item__header-content" }, index.h("span", { class: "nv-accordion-item__title" }, item.title), index.h("span", { class: "nv-accordion-item__subtitle" }, item.subtitle)))) : null, index.h("div", { slot: "content" }, item.content), item.footer && index.h("div", { slot: "footer" }, item.footer)));
183
+ })) : (index.h("slot", null))));
184
+ }
185
+ get el() { return index.getElement(this); }
186
+ static get watchers() { return {
187
+ "data": ["dataChanged"]
188
+ }; }
189
+ };
190
+ NvAccordion.style = NvAccordionStyle0;
191
+
192
+ exports.nv_accordion = NvAccordion;
193
+
194
+ //# sourceMappingURL=nv-accordion.cjs.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-accordion.entry.cjs.js","mappings":"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","names":["h","Host"],"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 Watch,\n} from '@stencil/core';\n/**\n * Interface defining the structure of an accordion item\n */\nexport interface AccordionItem {\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 * Interface for nv-accordion-item component props\n */\nexport interface AccordionItemProps {\n /** Item title (displayed if header slot is absent) */\n itemtitle?: string;\n /** Item subtitle (displayed if header slot is absent) */\n subtitle?: string;\n /** Open or closed */\n open?: boolean;\n /** Disables the item */\n disabled?: boolean;\n /** Parent expansion mode (accordion or multi) */\n mode?: 'accordion' | 'multi';\n}\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 * Data to display as a list of items (title, subtitle, content).\n * Must be provided as a JSON string containing an array of items with:\n * - title: main title (required)\n * - subtitle: subtitle (optional)\n * - content: main content (required)\n * - footer: footer (optional)\n * - disabled: disables the item (optional)\n * - id: unique identifier (optional)\n */\n @Prop({ reflect: true })\n readonly data: string;\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: true, mutable: true })\n openIndexes?: number[];\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n /**\n * Internal index of open items (not exposed)\n */\n @State()\n internalOpenIndexes: number[] = [];\n\n /**\n * Parsed data from data prop\n */\n @State()\n private parsedData: AccordionItem[] = [];\n\n /**\n * Reference to host element to access children\n */\n @Element() el!: HTMLNvAccordionElement;\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n /**\n * Event emitted when an item's open state changes\n */\n @Event()\n nvChange: EventEmitter<{\n /** Index of open items */\n openIndexes: number[];\n }>;\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\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 * 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 * 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 let openIndexes =\n this.openIndexes !== undefined\n ? [...this.openIndexes]\n : [...(this.internalOpenIndexes || [])];\n const isOpen = openIndexes.includes(index);\n if (this.mode === 'accordion') {\n openIndexes = forceOpen === false || isOpen ? [] : [index];\n } else {\n if (forceOpen === false) {\n openIndexes = openIndexes.filter(i => i !== index);\n } else if (!isOpen) {\n openIndexes.push(index);\n }\n }\n this.internalOpenIndexes = openIndexes;\n this.nvChange.emit({ openIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [openIndexes[0]].filter(x => x !== undefined)\n : [...openIndexes];\n }\n\n // Update child elements state - for both data and slot usage\n this.updateChildrenState();\n }\n\n /**\n * Updates the open state of child elements based on internalOpenIndexes\n */\n private async updateChildrenState() {\n // Force a re-render by updating the state\n this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];\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 // Ignore if using data (handled by itemToggleHandlers)\n if (this.parsedData && this.parsedData.length > 0) return;\n\n // Find the index of the item that emitted the event\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 // If the event comes from an item that is opening, handle accordion mode\n if (event.detail === true) {\n if (this.mode === 'accordion') {\n // Close all other items\n items.forEach((item, i) => {\n if (i !== index && item.open) {\n item.open = false;\n }\n });\n this.internalOpenIndexes = [index];\n } else {\n // Add index to internalOpenIndexes if not already present\n if (!this.internalOpenIndexes.includes(index)) {\n this.internalOpenIndexes = [...this.internalOpenIndexes, index];\n }\n }\n } else {\n // If the item is closing, remove it from internalOpenIndexes\n this.internalOpenIndexes = this.internalOpenIndexes.filter(\n i => i !== index,\n );\n }\n\n // Emit nvChange event\n this.nvChange.emit({ openIndexes: this.internalOpenIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)\n : [...this.internalOpenIndexes];\n }\n }\n }\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n @Watch('data')\n dataChanged() {\n this.parseData();\n }\n\n // Synchronization openIndexes <-> internalOpenIndexes\n private itemToggleHandlers: Array<() => void> = [];\n\n private parseData() {\n if (typeof this.data === 'string') {\n try {\n this.parsedData = JSON.parse(this.data);\n } catch (e) {\n console.error('nv-accordion: Failed to parse data prop.', e);\n this.parsedData = [];\n }\n } else {\n this.parsedData = this.data || [];\n }\n\n if (this.parsedData) {\n this.itemToggleHandlers = this.parsedData.map(\n (_, i) => () => this.toggleItem(i),\n );\n }\n }\n\n componentWillLoad() {\n this.parseData();\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n\n componentDidLoad() {\n // If using direct child elements, initialize their state\n if (!this.parsedData || this.parsedData.length === 0) {\n this.updateChildrenState();\n }\n }\n\n componentWillUpdate() {\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n render() {\n return (\n <Host role=\"list\" class=\"nv-accordion\">\n {this.parsedData && this.parsedData.length > 0 ? (\n this.parsedData.map((item, i) => (\n <nv-accordion-item\n key={item.id ?? i}\n itemtitle={item.title}\n disabled={item.disabled}\n open={(this.internalOpenIndexes || []).includes(i)}\n onItemToggle={this.itemToggleHandlers[i]}\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 // #endregion RENDER\n}\n"],"version":3}
@@ -5,8 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-c56424e5.js');
6
6
  const clsx = require('./clsx-fc789adc.js');
7
7
  const constants = require('./constants-8fb8ccc0.js');
8
- const timeline_animation = require('./timeline.animation-dbb9c5ea.js');
9
- const fade_animation = require('./fade.animation-0d33d198.js');
8
+ const collapse_animation = require('./collapse.animation-a129dc3f.js');
9
+ const fade_animation = require('./fade.animation-644b5c4d.js');
10
+ require('./stylefire.es-717e022a.js');
11
+ const timeline_animation = require('./timeline.animation-155e8839.js');
10
12
 
11
13
  const nvAlertCss = "nv-alert{display:flex !important;align-items:flex-start;position:relative;gap:var(--alert-gap-x);border-radius:var(--alert-radius);font-family:\"TT Norms Pro\", \"Montserrat\", sans-serif}nv-alert>nv-icon{margin-left:var(--alert-icon-position-x);margin-top:var(--alert-icon-position-y)}nv-alert.hidden{display:none !important}nv-alert.feedback-information{background-color:var(--components-alert-information-background);border:1px solid var(--components-alert-information-border) !important}nv-alert.feedback-information>.close:focus,nv-alert.feedback-information>.close:focus-within{outline:none}nv-alert.feedback-information>.close:focus-visible,nv-alert.feedback-information>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-information-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-warning{background-color:var(--components-alert-warning-background);border:1px solid var(--components-alert-warning-border) !important}nv-alert.feedback-warning>.close:focus,nv-alert.feedback-warning>.close:focus-within{outline:none}nv-alert.feedback-warning>.close:focus-visible,nv-alert.feedback-warning>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-warning-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-error{background-color:var(--components-alert-error-background);border:1px solid var(--components-alert-error-border) !important}nv-alert.feedback-error>.close:focus,nv-alert.feedback-error>.close:focus-within{outline:none}nv-alert.feedback-error>.close:focus-visible,nv-alert.feedback-error>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-error-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-success{background-color:var(--components-alert-success-background);border:1px solid var(--components-alert-success-border) !important}nv-alert.feedback-success>.close:focus,nv-alert.feedback-success>.close:focus-within{outline:none}nv-alert.feedback-success>.close:focus-visible,nv-alert.feedback-success>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-success-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-neutral{background-color:var(--components-alert-neutral-background);border:1px solid var(--components-alert-neutral-border) !important}nv-alert.feedback-neutral>.close:focus,nv-alert.feedback-neutral>.close:focus-within{outline:none}nv-alert.feedback-neutral>.close:focus-visible,nv-alert.feedback-neutral>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-neutral-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert>nv-icon.icon-information{color:var(--components-alert-information-icon)}nv-alert>nv-icon.icon-warning{color:var(--components-alert-warning-icon)}nv-alert>nv-icon.icon-error{color:var(--components-alert-error-icon)}nv-alert>nv-icon.icon-success{color:var(--components-alert-success-icon)}nv-alert>nv-icon.icon-neutral{color:var(--components-alert-neutral-icon)}nv-alert>.content{display:flex;padding:var(--alert-padding);padding-left:0;flex-direction:column;gap:var(--alert-gap-y)}nv-alert>.content>.heading{color:var(--components-alert-content-title);font-size:var(--alert-heading-font-size);line-height:var(--alert-heading-line-height);font-weight:var(--alert-heading-font-weight)}nv-alert>.content>.message{color:var(--components-alert-content-description);font-size:var(--alert-message-font-size);line-height:var(--alert-message-line-height)}nv-alert>.close{border-radius:var(--alert-radius);position:absolute;display:flex;top:var(--alert-icon-position-y);right:var(--alert-icon-position-x);padding:0;border:none;background:none;cursor:pointer}";
12
14
  const NvAlertStyle0 = nvAlertCss;
@@ -117,7 +119,7 @@ const NvAlert = class {
117
119
  return;
118
120
  }
119
121
  const { fadeIn, fadeOut } = fade_animation.useFade(this.ref, { duration: 150 });
120
- const { collapse, expand } = timeline_animation.useCollapse(this.ref, { duration: 150 });
122
+ const { collapse, expand } = collapse_animation.useCollapse(this.ref, { duration: 150 });
121
123
  if (hidden) {
122
124
  await timeline_animation.timeline(fadeOut, collapse).start();
123
125
  this.toggleHiddenClass(true);
@@ -162,7 +164,7 @@ const NvAlert = class {
162
164
  //#region RENDER
163
165
  render() {
164
166
  var _a;
165
- return (index.h(index.Host, { key: '8c775b0d81d4f6f82421b667925e1ceafead5b2d', role: "alert", class: clsx.clsx('root', `feedback-${this.feedback}`) }, index.h("nv-icon", { key: 'e42f28e360d600c9863fb7f11eab2a1c501bb6ce', name: (_a = this.icon) !== null && _a !== void 0 ? _a : this.getDefaultIcon(), class: `icon-${this.feedback}`, size: "md" }), index.h("div", { key: '87f7d65ea812afda0ce6ba6ace6e443dd53263da', class: "content" }, this.heading && index.h("p", { key: '8150784a2663d47410fd6b92ca678f756f086f28', class: "heading" }, this.heading), this.message && index.h("p", { key: '27f029f2ded81f82e260dc0f2087d46ba5cd7e62', class: "message" }, this.message), index.h("slot", { key: '3256f379c6d7ea5dab9d284b9229ceffb55e7443' })), this.dismissible && (index.h("button", { key: '6b7f333b26ab17c2c523a3c9933599176a9152c0', class: "close", type: "button", onClick: this.handleDismiss }, index.h("nv-icon", { key: 'badcf4153b6add49042b91415e010f662a042e61', name: "x", size: "sm" })))));
167
+ return (index.h(index.Host, { key: 'f0e75ac2c38aced1dcf76cb1d5f03becefbee71d', role: "alert", class: clsx.clsx('root', `feedback-${this.feedback}`) }, index.h("nv-icon", { key: '19f7fcf452d62277ab436acd20c285f44fbaecd4', name: (_a = this.icon) !== null && _a !== void 0 ? _a : this.getDefaultIcon(), class: `icon-${this.feedback}`, size: "md" }), index.h("div", { key: '8e656ffd0bce63bd33d92b97df21389af265e182', class: "content" }, this.heading && index.h("p", { key: '0aa928e8ee8605d735f890bc67128563ce3ad379', class: "heading" }, this.heading), this.message && index.h("p", { key: '690d9928646d25a636b2bb04eb65eee40c402f52', class: "message" }, this.message), index.h("slot", { key: '86309f093688dbb81ff805f1c9137b200541e905' })), this.dismissible && (index.h("button", { key: '387695ff1e23a7e289cf58c51042ccc561d451ad', class: "close", type: "button", onClick: this.handleDismiss }, index.h("nv-icon", { key: '788b99b4c56fc8c936a67ac48d2db37fdcca7631', name: "x", size: "sm" })))));
166
168
  }
167
169
  get ref() { return index.getElement(this); }
168
170
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"nv-alert.entry.cjs.js","mappings":"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","names":["FeedbackColors","useFade","useCollapse","timeline","h","Host","clsx"],"sources":["src/components/nv-alert/nv-alert.scss?tag=nv-alert","src/components/nv-alert/nv-alert.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$alert-feedback: (\"information\", \"warning\", \"error\", \"success\", \"neutral\");\n\n/* Define maps for feedback-related variables */\n$components-alert-background: (\n \"information\": var(--components-alert-information-background),\n \"warning\": var(--components-alert-warning-background),\n \"error\": var(--components-alert-error-background),\n \"success\": var(--components-alert-success-background),\n \"neutral\": var(--components-alert-neutral-background)\n);\n\n$components-alert-border: (\n \"information\": var(--components-alert-information-border),\n \"warning\": var(--components-alert-warning-border),\n \"error\": var(--components-alert-error-border),\n \"success\": var(--components-alert-success-border),\n \"neutral\": var(--components-alert-neutral-border)\n);\n\n$components-alert-icon: (\n \"information\": var(--components-alert-information-icon),\n \"warning\": var(--components-alert-warning-icon),\n \"error\": var(--components-alert-error-icon),\n \"success\": var(--components-alert-success-icon),\n \"neutral\": var(--components-alert-neutral-icon)\n);\n\n@mixin root-styles() {\n display: flex !important; // override the display: none in [hidden] css\n align-items: flex-start;\n position: relative;\n gap: var(--alert-gap-x);\n border-radius: var(--alert-radius);\n font-family: \"TT Norms Pro\", \"Montserrat\", sans-serif;\n}\n\n@mixin content-styles() {\n display: flex;\n padding: var(--alert-padding);\n padding-left: 0;\n flex-direction: column;\n gap: var(--alert-gap-y);\n}\n\n@mixin feedback-color($feedback-type) {\n background-color: map.get($components-alert-background, $feedback-type);\n border: 1px solid map.get($components-alert-border, $feedback-type) !important;\n}\n\n@mixin icon-color($feedback-type) {\n color: map.get($components-alert-icon, $feedback-type);\n}\n\n@mixin icon-position {\n margin-left: var(--alert-icon-position-x);\n margin-top: var(--alert-icon-position-y);\n}\n\nnv-alert {\n @include root-styles();\n\n & > nv-icon {\n @include icon-position();\n }\n\n &.hidden {\n display: none!important;\n }\n\n @each $feedback in $alert-feedback {\n &.feedback-#{$feedback} {\n @include feedback-color($feedback);\n & > .close {\n @include focus-ring(map.get($components-alert-border, $feedback));\n }\n }\n }\n\n @each $feedback in $alert-feedback {\n & > nv-icon.icon-#{$feedback} {\n @include icon-color($feedback);\n }\n }\n\n & > .content {\n @include content-styles();\n\n & > .heading {\n color: var(--components-alert-content-title);\n font-size: var(--alert-heading-font-size);\n line-height: var(--alert-heading-line-height);\n font-weight: var(--alert-heading-font-weight);\n }\n & > .message {\n color: var(--components-alert-content-description);\n font-size: var(--alert-message-font-size);\n line-height: var(--alert-message-line-height);\n }\n }\n & > .close {\n border-radius: var(--alert-radius);\n position: absolute;\n display: flex;\n top: var(--alert-icon-position-y);\n right: var(--alert-icon-position-x);\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Watch,\n Element,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n DeprecatedSemanticColors,\n FeedbackColors,\n} from '../../utils/constants';\nimport { useCollapse, useFade, timeline } from '../../animations';\n\n/**\n * @slot default - Use this slot to insert HTML into the alert content.\n */\n@Component({\n tag: 'nv-alert',\n styleUrl: 'nv-alert.scss',\n shadow: false,\n})\nexport class NvAlert {\n @Element() ref: HTMLNvAlertElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Defines color of the alert.\n * @deprecated use feedback instead.\n */\n @Prop({ reflect: true })\n readonly color: `${DeprecatedSemanticColors}`;\n\n componentWillRender() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n }\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Specifies the alert type which determines the color and default icon.\n */\n @Prop({ reflect: true, mutable: true })\n feedback: `${FeedbackColors}` = 'information';\n\n /**\n * Main content of the alert. For more complex content, use the default slot\n * instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Short and concise text for the alert title.\n */\n @Prop({ reflect: true })\n readonly heading: string;\n\n /**\n * Icon associated with the alert, defaults vary based on the feedback type.\n */\n @Prop({ reflect: true })\n readonly icon: string;\n\n /**\n * Allows the alert to be dismissed via a close button (x). The alert is not\n * dismissible unless explicitly enabled.\n */\n @Prop({ reflect: true })\n readonly dismissible: boolean = false;\n\n /**\n * When true, the alert does not automatically close upon dismissing.\n * Useful for externally controlled component behavior.\n */\n @Prop({ reflect: true })\n readonly preventAutoClose: boolean = false;\n\n /**\n * Controls the visibility of the alert. Will animate with fade and collapse.\n */\n @Prop({ reflect: true, mutable: true })\n hidden: boolean = false; // eslint-disable-line @stencil-community/reserved-member-names\n\n /**\n * When true, the alert will not animate when it is hidden or shown.\n */\n @Prop({ reflect: true })\n readonly hasNoAnimations: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the 'hidden' prop changes, reflecting a change in visibility.\n * Passes hidden value to the detail.\n * @bind hidden\n */\n @Event()\n hiddenChanged: EventEmitter<boolean>;\n\n /**\n * Emitted when the animations complete, detail includes the hidden value.\n */\n @Event()\n hiddenChangedComplete: EventEmitter<boolean>;\n\n /**\n * Emitted when the close button is clicked.\n */\n @Event()\n closeClicked: EventEmitter<void>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Used for 2 way binding with the hidden property.\n * Triggers open and close animations.\n * @param {boolean} hidden - The visibility state of the alert.\n */\n @Watch('hidden')\n async handleHiddenChange(hidden: boolean) {\n this.hiddenChanged.emit(hidden);\n\n await this.updateVisibility(hidden);\n this.hiddenChangedComplete.emit(hidden);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles the dismissal of the alert, considering the preventAutoClose prop.\n * Passes the original event from the close button to the close event detail.\n * @param {MouseEvent} originalEvent - The original event from the close button.\n */\n private handleDismiss = () => {\n if (!this.preventAutoClose) {\n this.hidden = true;\n }\n\n this.closeClicked.emit();\n };\n\n /**\n * By default an icon is linked to the feedback type\n * @returns {string} - The default icon name.\n */\n private getDefaultIcon = () => {\n switch (this.feedback) {\n case FeedbackColors.Warning:\n return 'alert-circle';\n case FeedbackColors.Information:\n return 'info-circle';\n case FeedbackColors.Success:\n return 'circle-check';\n case FeedbackColors.Error:\n return 'alert-circle';\n case FeedbackColors.Neutral:\n return 'help';\n default:\n return 'info-circle';\n }\n };\n\n /**\n * Updates the visibility state of the alert with optional animations\n * @param {boolean} hidden - Whether the alert should be hidden\n */\n private async updateVisibility(hidden: boolean) {\n if (this.hasNoAnimations) {\n this.toggleHiddenClass(hidden);\n return;\n }\n\n const { fadeIn, fadeOut } = useFade(this.ref, { duration: 150 });\n const { collapse, expand } = useCollapse(this.ref, { duration: 150 });\n\n if (hidden) {\n await timeline(fadeOut, collapse).start();\n this.toggleHiddenClass(true);\n } else {\n this.toggleHiddenClass(false);\n await timeline(expand, fadeIn).start();\n }\n }\n\n /**\n * Toggles the 'hidden' class on the element\n * @param {boolean} hidden - Whether to add or remove the hidden class\n */\n private toggleHiddenClass(hidden: boolean) {\n this.ref.classList.toggle('hidden', hidden);\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n\n if (this.hidden) {\n this.ref.classList.add('hidden');\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"alert\" class={clsx('root', `feedback-${this.feedback}`)}>\n <nv-icon\n name={this.icon ?? this.getDefaultIcon()}\n class={`icon-${this.feedback}`}\n size=\"md\"\n ></nv-icon>\n\n <div class=\"content\">\n {this.heading && <p class=\"heading\">{this.heading}</p>}\n\n {this.message && <p class=\"message\">{this.message}</p>}\n\n <slot></slot>\n </div>\n\n {this.dismissible && (\n <button class=\"close\" type=\"button\" onClick={this.handleDismiss}>\n <nv-icon name=\"x\" size=\"sm\" />\n </button>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-alert.entry.cjs.js","mappings":"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","names":["FeedbackColors","useFade","useCollapse","timeline","h","Host","clsx"],"sources":["src/components/nv-alert/nv-alert.scss?tag=nv-alert","src/components/nv-alert/nv-alert.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$alert-feedback: (\"information\", \"warning\", \"error\", \"success\", \"neutral\");\n\n/* Define maps for feedback-related variables */\n$components-alert-background: (\n \"information\": var(--components-alert-information-background),\n \"warning\": var(--components-alert-warning-background),\n \"error\": var(--components-alert-error-background),\n \"success\": var(--components-alert-success-background),\n \"neutral\": var(--components-alert-neutral-background)\n);\n\n$components-alert-border: (\n \"information\": var(--components-alert-information-border),\n \"warning\": var(--components-alert-warning-border),\n \"error\": var(--components-alert-error-border),\n \"success\": var(--components-alert-success-border),\n \"neutral\": var(--components-alert-neutral-border)\n);\n\n$components-alert-icon: (\n \"information\": var(--components-alert-information-icon),\n \"warning\": var(--components-alert-warning-icon),\n \"error\": var(--components-alert-error-icon),\n \"success\": var(--components-alert-success-icon),\n \"neutral\": var(--components-alert-neutral-icon)\n);\n\n@mixin root-styles() {\n display: flex !important; // override the display: none in [hidden] css\n align-items: flex-start;\n position: relative;\n gap: var(--alert-gap-x);\n border-radius: var(--alert-radius);\n font-family: \"TT Norms Pro\", \"Montserrat\", sans-serif;\n}\n\n@mixin content-styles() {\n display: flex;\n padding: var(--alert-padding);\n padding-left: 0;\n flex-direction: column;\n gap: var(--alert-gap-y);\n}\n\n@mixin feedback-color($feedback-type) {\n background-color: map.get($components-alert-background, $feedback-type);\n border: 1px solid map.get($components-alert-border, $feedback-type) !important;\n}\n\n@mixin icon-color($feedback-type) {\n color: map.get($components-alert-icon, $feedback-type);\n}\n\n@mixin icon-position {\n margin-left: var(--alert-icon-position-x);\n margin-top: var(--alert-icon-position-y);\n}\n\nnv-alert {\n @include root-styles();\n\n & > nv-icon {\n @include icon-position();\n }\n\n &.hidden {\n display: none!important;\n }\n\n @each $feedback in $alert-feedback {\n &.feedback-#{$feedback} {\n @include feedback-color($feedback);\n & > .close {\n @include focus-ring(map.get($components-alert-border, $feedback));\n }\n }\n }\n\n @each $feedback in $alert-feedback {\n & > nv-icon.icon-#{$feedback} {\n @include icon-color($feedback);\n }\n }\n\n & > .content {\n @include content-styles();\n\n & > .heading {\n color: var(--components-alert-content-title);\n font-size: var(--alert-heading-font-size);\n line-height: var(--alert-heading-line-height);\n font-weight: var(--alert-heading-font-weight);\n }\n & > .message {\n color: var(--components-alert-content-description);\n font-size: var(--alert-message-font-size);\n line-height: var(--alert-message-line-height);\n }\n }\n & > .close {\n border-radius: var(--alert-radius);\n position: absolute;\n display: flex;\n top: var(--alert-icon-position-y);\n right: var(--alert-icon-position-x);\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Watch,\n Element,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n DeprecatedSemanticColors,\n FeedbackColors,\n} from '../../utils/constants';\nimport { useCollapse, useFade, timeline } from '../../animations';\n\n/**\n * @slot default - Use this slot to insert HTML into the alert content.\n */\n@Component({\n tag: 'nv-alert',\n styleUrl: 'nv-alert.scss',\n shadow: false,\n})\nexport class NvAlert {\n @Element() ref: HTMLNvAlertElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Defines color of the alert.\n * @deprecated use feedback instead.\n */\n @Prop({ reflect: true })\n readonly color: `${DeprecatedSemanticColors}`;\n\n componentWillRender() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n }\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Specifies the alert type which determines the color and default icon.\n */\n @Prop({ reflect: true, mutable: true })\n feedback: `${FeedbackColors}` = 'information';\n\n /**\n * Main content of the alert. For more complex content, use the default slot\n * instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Short and concise text for the alert title.\n */\n @Prop({ reflect: true })\n readonly heading: string;\n\n /**\n * Icon associated with the alert, defaults vary based on the feedback type.\n */\n @Prop({ reflect: true })\n readonly icon: string;\n\n /**\n * Allows the alert to be dismissed via a close button (x). The alert is not\n * dismissible unless explicitly enabled.\n */\n @Prop({ reflect: true })\n readonly dismissible: boolean = false;\n\n /**\n * When true, the alert does not automatically close upon dismissing.\n * Useful for externally controlled component behavior.\n */\n @Prop({ reflect: true })\n readonly preventAutoClose: boolean = false;\n\n /**\n * Controls the visibility of the alert. Will animate with fade and collapse.\n */\n @Prop({ reflect: true, mutable: true })\n hidden: boolean = false; // eslint-disable-line @stencil-community/reserved-member-names\n\n /**\n * When true, the alert will not animate when it is hidden or shown.\n */\n @Prop({ reflect: true })\n readonly hasNoAnimations: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the 'hidden' prop changes, reflecting a change in visibility.\n * Passes hidden value to the detail.\n * @bind hidden\n */\n @Event()\n hiddenChanged: EventEmitter<boolean>;\n\n /**\n * Emitted when the animations complete, detail includes the hidden value.\n */\n @Event()\n hiddenChangedComplete: EventEmitter<boolean>;\n\n /**\n * Emitted when the close button is clicked.\n */\n @Event()\n closeClicked: EventEmitter<void>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Used for 2 way binding with the hidden property.\n * Triggers open and close animations.\n * @param {boolean} hidden - The visibility state of the alert.\n */\n @Watch('hidden')\n async handleHiddenChange(hidden: boolean) {\n this.hiddenChanged.emit(hidden);\n\n await this.updateVisibility(hidden);\n this.hiddenChangedComplete.emit(hidden);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles the dismissal of the alert, considering the preventAutoClose prop.\n * Passes the original event from the close button to the close event detail.\n * @param {MouseEvent} originalEvent - The original event from the close button.\n */\n private handleDismiss = () => {\n if (!this.preventAutoClose) {\n this.hidden = true;\n }\n\n this.closeClicked.emit();\n };\n\n /**\n * By default an icon is linked to the feedback type\n * @returns {string} - The default icon name.\n */\n private getDefaultIcon = () => {\n switch (this.feedback) {\n case FeedbackColors.Warning:\n return 'alert-circle';\n case FeedbackColors.Information:\n return 'info-circle';\n case FeedbackColors.Success:\n return 'circle-check';\n case FeedbackColors.Error:\n return 'alert-circle';\n case FeedbackColors.Neutral:\n return 'help';\n default:\n return 'info-circle';\n }\n };\n\n /**\n * Updates the visibility state of the alert with optional animations\n * @param {boolean} hidden - Whether the alert should be hidden\n */\n private async updateVisibility(hidden: boolean) {\n if (this.hasNoAnimations) {\n this.toggleHiddenClass(hidden);\n return;\n }\n\n const { fadeIn, fadeOut } = useFade(this.ref, { duration: 150 });\n const { collapse, expand } = useCollapse(this.ref, { duration: 150 });\n\n if (hidden) {\n await timeline(fadeOut, collapse).start();\n this.toggleHiddenClass(true);\n } else {\n this.toggleHiddenClass(false);\n await timeline(expand, fadeIn).start();\n }\n }\n\n /**\n * Toggles the 'hidden' class on the element\n * @param {boolean} hidden - Whether to add or remove the hidden class\n */\n private toggleHiddenClass(hidden: boolean) {\n this.ref.classList.toggle('hidden', hidden);\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n\n if (this.hidden) {\n this.ref.classList.add('hidden');\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"alert\" class={clsx('root', `feedback-${this.feedback}`)}>\n <nv-icon\n name={this.icon ?? this.getDefaultIcon()}\n class={`icon-${this.feedback}`}\n size=\"md\"\n ></nv-icon>\n\n <div class=\"content\">\n {this.heading && <p class=\"heading\">{this.heading}</p>}\n\n {this.message && <p class=\"message\">{this.message}</p>}\n\n <slot></slot>\n </div>\n\n {this.dismissible && (\n <button class=\"close\" type=\"button\" onClick={this.handleDismiss}>\n <nv-icon name=\"x\" size=\"sm\" />\n </button>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -60,7 +60,7 @@ const NvAvatar = class {
60
60
  /****************************************************************************/
61
61
  //#region RENDER
62
62
  render() {
63
- return (index.h(index.Host, { key: 'aa00ea05df513c899c6ed43fd0307178e98b6145', class: clsx.clsx(`avatar-${this.size}`, `avatar-color-${this.color}`), "aria-label": this.alt }, this.src ? (index.h("img", { src: this.src, alt: this.alt })) : this.initials ? (this.trimInitials(this.initials)) : (index.h("slot", { name: "icon" }, index.h("nv-icon", { name: "user" })))));
63
+ return (index.h(index.Host, { key: '127d470eb9121f611f9e18f029ab9ef15a4a49df', class: clsx.clsx(`avatar-${this.size}`, `avatar-color-${this.color}`), "aria-label": this.alt }, this.src ? (index.h("img", { src: this.src, alt: this.alt })) : this.initials ? (this.trimInitials(this.initials)) : (index.h("slot", { name: "icon" }, index.h("nv-icon", { name: "user" })))));
64
64
  }
65
65
  };
66
66
  NvAvatar.style = NvAvatarStyle0;