@synergy-design-system/components 3.14.0 → 3.15.1

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 (336) hide show
  1. package/README.md +84 -2
  2. package/dist/chunks/{chunk.PKI5G2BK.js → chunk.2ICMQHK2.js} +2 -2
  3. package/dist/chunks/{chunk.VUIJVW2Q.js → chunk.2QJN274R.js} +13 -13
  4. package/dist/chunks/{chunk.CRFIJO63.js → chunk.3ET6VFFM.js} +2 -2
  5. package/dist/chunks/{chunk.SDAD3TIZ.js → chunk.3SWPHSWX.js} +2 -2
  6. package/dist/chunks/{chunk.KI5VDJAL.js → chunk.4E5YHPM6.js} +9 -9
  7. package/dist/chunks/{chunk.KEWOYD7U.js → chunk.4NOC74ME.js} +2 -2
  8. package/dist/chunks/{chunk.LHT3EV6M.js → chunk.4OIWU6V3.js} +2 -2
  9. package/dist/chunks/{chunk.5KYKNKXK.js → chunk.4UNKGNWY.js} +2 -2
  10. package/dist/chunks/{chunk.73JTC3OL.js → chunk.52CE6GAX.js} +2 -2
  11. package/dist/chunks/{chunk.UYTYFCZO.js → chunk.5PNZHX46.js} +2 -2
  12. package/dist/chunks/{chunk.MLW6J2PI.js → chunk.5PUONAZP.js} +2 -2
  13. package/dist/chunks/{chunk.IMFHPXZV.js → chunk.672U24GD.js} +2 -2
  14. package/dist/chunks/{chunk.Q462PIAC.js → chunk.7CPWT4JW.js} +2 -2
  15. package/dist/chunks/{chunk.VICY5B3Y.js → chunk.7GUN5FTB.js} +2 -2
  16. package/dist/chunks/{chunk.4OSNBR72.js → chunk.7GVHLAPF.js} +17 -17
  17. package/dist/chunks/{chunk.244QNZMJ.js → chunk.7NW3UNQH.js} +2 -2
  18. package/dist/chunks/{chunk.66QNJSLF.js → chunk.7W55HRDH.js} +2 -2
  19. package/dist/chunks/{chunk.I4Z5TIK5.js → chunk.7WBNGACU.js} +2 -2
  20. package/dist/chunks/{chunk.42C7SFEG.js → chunk.ASYOUIIA.js} +8 -8
  21. package/dist/chunks/{chunk.YUWPQV2J.js → chunk.ATXXETUW.js} +6 -6
  22. package/dist/chunks/{chunk.KPAGL3JH.js → chunk.BK4L5JTZ.js} +2 -2
  23. package/dist/chunks/{chunk.TV7RAXV6.js → chunk.BKK3LZIE.js} +2 -2
  24. package/dist/chunks/{chunk.QEELQI3B.js → chunk.BW4PBG4C.js} +2 -2
  25. package/dist/chunks/{chunk.NP7ZR5HF.js → chunk.C7M5UTLM.js} +2 -2
  26. package/dist/chunks/{chunk.EXQNCNEL.js → chunk.CIR3MZ3J.js} +2 -2
  27. package/dist/chunks/{chunk.O6IOGX2G.js → chunk.CWADFVTW.js} +12 -12
  28. package/dist/chunks/{chunk.RXGMDDX4.js → chunk.DG7N2GPP.js} +2 -2
  29. package/dist/chunks/{chunk.KDW4KG7L.js → chunk.DZU5IHW5.js} +2 -2
  30. package/dist/chunks/{chunk.NLFERVI7.js → chunk.EE2T4DI3.js} +2 -2
  31. package/dist/chunks/{chunk.XH5QCNSL.js → chunk.EHQPWQIP.js} +2 -2
  32. package/dist/chunks/{chunk.K47UDTAJ.js → chunk.ELOOAXBS.js} +10 -10
  33. package/dist/chunks/{chunk.ITZAD4HQ.js → chunk.EOFEAQAT.js} +2 -2
  34. package/dist/chunks/{chunk.G3CHXAEJ.js → chunk.HJVKBMLH.js} +2 -2
  35. package/dist/chunks/{chunk.5HOJNW7M.js → chunk.HTYK7AJW.js} +9 -9
  36. package/dist/chunks/{chunk.XUI5ISF3.js → chunk.HWHC6OI3.js} +2 -2
  37. package/dist/chunks/{chunk.234CRR27.js → chunk.IT2TKYM7.js} +2 -2
  38. package/dist/chunks/{chunk.GMCTWMH3.js → chunk.IYXZ2SMF.js} +7 -7
  39. package/dist/chunks/{chunk.7GSNTJ3J.js → chunk.JFERWFTG.js} +2 -2
  40. package/dist/chunks/{chunk.RASMI2WO.js → chunk.JJCL4WAB.js} +5 -5
  41. package/dist/chunks/{chunk.VKBFEDS6.js → chunk.K2PFFMHF.js} +2 -2
  42. package/dist/chunks/{chunk.A4I33Y6H.js → chunk.K3CXMAMI.js} +2 -2
  43. package/dist/chunks/{chunk.SSNYL7AZ.js → chunk.KCVQZ4BE.js} +2 -2
  44. package/dist/chunks/chunk.KPO6RJLG.js +20 -0
  45. package/dist/chunks/chunk.KPO6RJLG.js.map +7 -0
  46. package/dist/chunks/{chunk.OVS5YCLG.js → chunk.KRMDIBND.js} +2 -2
  47. package/dist/chunks/{chunk.HXQ3Q22D.js → chunk.LRFQWF2J.js} +2 -2
  48. package/dist/chunks/{chunk.NXIQ25W4.js → chunk.M3HEPL2F.js} +1 -9
  49. package/dist/chunks/{chunk.NXIQ25W4.js.map → chunk.M3HEPL2F.js.map} +2 -2
  50. package/dist/chunks/chunk.M3K2Q7WJ.js +142 -0
  51. package/dist/chunks/chunk.M3K2Q7WJ.js.map +7 -0
  52. package/dist/chunks/{chunk.BLR7KKUM.js → chunk.M5MQJOPS.js} +2 -2
  53. package/dist/chunks/{chunk.O5XZM45U.js → chunk.MET45KSE.js} +3 -3
  54. package/dist/chunks/{chunk.JQZRVTI3.js → chunk.MJYLGANL.js} +3 -3
  55. package/dist/chunks/{chunk.KC4SP6UE.js → chunk.N5KGL3GC.js} +2 -2
  56. package/dist/chunks/{chunk.N7DY6HOE.js → chunk.N6MOQ6B5.js} +8 -8
  57. package/dist/chunks/{chunk.KYHWQEEI.js → chunk.NPCR7UVQ.js} +5 -5
  58. package/dist/chunks/{chunk.OTXTNYRJ.js → chunk.OEYLCJ7N.js} +6 -6
  59. package/dist/chunks/{chunk.JNKPQ22W.js → chunk.OGHUH4RS.js} +3 -3
  60. package/dist/chunks/{chunk.4BS6CBRX.js → chunk.OIAQHRZR.js} +8 -14
  61. package/dist/chunks/chunk.OIAQHRZR.js.map +7 -0
  62. package/dist/chunks/{chunk.FJLIZ7EH.js → chunk.OJDJ5NGZ.js} +2 -2
  63. package/dist/chunks/{chunk.PKPJXZNO.js → chunk.P5U27SXU.js} +2 -2
  64. package/dist/chunks/{chunk.NB7NQ6ZJ.js → chunk.PHR6O2TK.js} +17 -17
  65. package/dist/chunks/{chunk.GBWQCBER.js → chunk.PVIVA2RW.js} +2 -2
  66. package/dist/chunks/{chunk.3GCIZUDQ.js → chunk.Q3QSOXKM.js} +2 -2
  67. package/dist/chunks/{chunk.LJLE6S7K.js → chunk.QKDPTEYP.js} +2 -2
  68. package/dist/chunks/{chunk.FZ3YJGQZ.js → chunk.R2K2SDDU.js} +2 -2
  69. package/dist/chunks/{chunk.NLK6U5GU.js → chunk.R6HOFUDS.js} +9 -9
  70. package/dist/chunks/{chunk.FVOA7OCQ.js → chunk.R7DCOYSA.js} +2 -2
  71. package/dist/chunks/{chunk.ZXI2ZVNR.js → chunk.RANSYZYC.js} +2 -2
  72. package/dist/chunks/{chunk.6JPV7IDA.js → chunk.RFDAYKRC.js} +2 -2
  73. package/dist/chunks/{chunk.5XISXZ24.js → chunk.RGPTWKCY.js} +2 -2
  74. package/dist/chunks/{chunk.T4L342TL.js → chunk.RKAIJDOM.js} +3 -3
  75. package/dist/chunks/{chunk.AVHIO6QX.js → chunk.SDC2FVNL.js} +5 -5
  76. package/dist/chunks/{chunk.XBW7Z2RY.js → chunk.SUL6IWF7.js} +2 -2
  77. package/dist/chunks/{chunk.K7MD7OW2.js → chunk.T2BDECHP.js} +6 -6
  78. package/dist/chunks/{chunk.VFXNG3S7.js → chunk.T6GT575U.js} +2 -2
  79. package/dist/chunks/{chunk.DXWCV5LF.js → chunk.T6JI76WU.js} +8 -8
  80. package/dist/chunks/{chunk.NYRH7CY4.js → chunk.TAS6WBOB.js} +13 -13
  81. package/dist/chunks/{chunk.C7LDSA6N.js → chunk.TIRGUR3V.js} +5 -5
  82. package/dist/chunks/{chunk.LUVQR5GV.js → chunk.TS65LJ5O.js} +6 -6
  83. package/dist/chunks/{chunk.KHHMKU5F.js → chunk.U5BNYIGY.js} +2 -2
  84. package/dist/chunks/{chunk.TKQ3JMIQ.js → chunk.UGUHHPHS.js} +2 -2
  85. package/dist/chunks/{chunk.LQSKCZDZ.js → chunk.UH52IQFZ.js} +2 -2
  86. package/dist/chunks/{chunk.M3E33KXI.js → chunk.UJBDQHXK.js} +13 -13
  87. package/dist/chunks/{chunk.2DIJ66WQ.js → chunk.ULEMFOWH.js} +4 -4
  88. package/dist/chunks/{chunk.6OB6RYPM.js → chunk.UQMYXB35.js} +2 -2
  89. package/dist/chunks/{chunk.7GDKE5DX.js → chunk.UTG3I2RF.js} +14 -14
  90. package/dist/chunks/{chunk.EMJFLRJX.js → chunk.UYUCPG3J.js} +2 -2
  91. package/dist/chunks/chunk.VJIXW4Z5.js +166 -0
  92. package/dist/chunks/chunk.VJIXW4Z5.js.map +7 -0
  93. package/dist/chunks/{chunk.PSAFHY7P.js → chunk.W5XDOOIR.js} +3 -3
  94. package/dist/chunks/{chunk.OIZEJYK7.js → chunk.WFPTZ3W7.js} +55 -29
  95. package/dist/chunks/chunk.WFPTZ3W7.js.map +7 -0
  96. package/dist/chunks/{chunk.RLWMJ7ST.js → chunk.WP2OIWA5.js} +2 -2
  97. package/dist/chunks/{chunk.YAXXSDKF.js → chunk.WTJCFKLR.js} +2 -2
  98. package/dist/chunks/{chunk.BC532CB6.js → chunk.WUGCLTH6.js} +78 -1
  99. package/dist/chunks/chunk.WUGCLTH6.js.map +7 -0
  100. package/dist/chunks/{chunk.ZJRSA6FU.js → chunk.WWJFXCJ7.js} +2 -2
  101. package/dist/chunks/{chunk.TTCMP7MI.js → chunk.X72G6ASQ.js} +9 -9
  102. package/dist/chunks/{chunk.TYSWA3XY.js → chunk.XT6UCMCP.js} +2 -2
  103. package/dist/chunks/{chunk.UISWB5WE.js → chunk.YBXR5HES.js} +2 -2
  104. package/dist/chunks/{chunk.UISWB5WE.js.map → chunk.YBXR5HES.js.map} +1 -1
  105. package/dist/chunks/{chunk.ZT47ZFJC.js → chunk.YEVEQT3G.js} +3 -3
  106. package/dist/chunks/{chunk.S3SB2L64.js → chunk.YJPWGTIA.js} +2 -2
  107. package/dist/chunks/{chunk.ZQZGMCRB.js → chunk.YT4ZXOLI.js} +2 -2
  108. package/dist/chunks/{chunk.X7M4AZCK.js → chunk.Z3WWZV5J.js} +8 -8
  109. package/dist/chunks/{chunk.QGVMPPJU.js → chunk.Z4LFYYMX.js} +5 -5
  110. package/dist/chunks/{chunk.LLRGAMEA.js → chunk.ZGUUEAVE.js} +2 -2
  111. package/dist/chunks/{chunk.HA4TRDJB.js → chunk.ZJSLHMYK.js} +18 -18
  112. package/dist/chunks/{chunk.QATINK6D.js → chunk.ZPWGYTRR.js} +30 -30
  113. package/dist/chunks/{chunk.7ZCFVUIZ.js → chunk.ZTKX2YB4.js} +2 -2
  114. package/dist/components/accordion/accordion.component.js +4 -4
  115. package/dist/components/accordion/accordion.js +5 -5
  116. package/dist/components/alert/alert.component.js +14 -14
  117. package/dist/components/alert/alert.js +15 -15
  118. package/dist/components/badge/badge.component.js +6 -6
  119. package/dist/components/badge/badge.js +7 -7
  120. package/dist/components/breadcrumb/breadcrumb.component.js +5 -5
  121. package/dist/components/breadcrumb/breadcrumb.js +6 -6
  122. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
  123. package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
  124. package/dist/components/button/button.component.js +11 -11
  125. package/dist/components/button/button.js +12 -12
  126. package/dist/components/button-group/button-group.component.js +2 -2
  127. package/dist/components/button-group/button-group.js +3 -3
  128. package/dist/components/card/card.component.js +2 -2
  129. package/dist/components/card/card.js +3 -3
  130. package/dist/components/chart/chart.component.d.ts +86 -0
  131. package/dist/components/chart/chart.component.js +12 -0
  132. package/dist/components/chart/chart.component.js.map +7 -0
  133. package/dist/components/chart/chart.d.ts +8 -0
  134. package/dist/components/chart/chart.js +16 -0
  135. package/dist/components/chart/chart.js.map +7 -0
  136. package/dist/components/chart/chart.palettes.d.ts +12 -0
  137. package/dist/components/chart/chart.palettes.js +8 -0
  138. package/dist/components/chart/chart.palettes.js.map +7 -0
  139. package/dist/components/chart/chart.styles.d.ts +2 -0
  140. package/dist/components/chart/chart.styles.js +8 -0
  141. package/dist/components/chart/chart.styles.js.map +7 -0
  142. package/dist/components/chart/types.d.ts +3 -0
  143. package/dist/components/chart/types.js +1 -0
  144. package/dist/components/chart/types.js.map +7 -0
  145. package/dist/components/checkbox/checkbox.component.js +6 -6
  146. package/dist/components/checkbox/checkbox.js +7 -7
  147. package/dist/components/combobox/combobox.component.js +24 -24
  148. package/dist/components/combobox/combobox.js +25 -25
  149. package/dist/components/details/details.component.js +11 -11
  150. package/dist/components/details/details.js +12 -12
  151. package/dist/components/dialog/dialog.component.js +14 -14
  152. package/dist/components/dialog/dialog.js +15 -15
  153. package/dist/components/divider/divider.component.js +2 -2
  154. package/dist/components/divider/divider.js +3 -3
  155. package/dist/components/drawer/drawer.component.js +14 -14
  156. package/dist/components/drawer/drawer.js +15 -15
  157. package/dist/components/dropdown/dropdown.component.js +3 -3
  158. package/dist/components/dropdown/dropdown.js +4 -4
  159. package/dist/components/file/file.component.js +16 -16
  160. package/dist/components/file/file.js +17 -17
  161. package/dist/components/header/header.component.js +3 -3
  162. package/dist/components/header/header.js +4 -4
  163. package/dist/components/icon/icon.component.js +2 -2
  164. package/dist/components/icon/icon.js +3 -3
  165. package/dist/components/icon-button/icon-button.component.js +5 -5
  166. package/dist/components/icon-button/icon-button.js +6 -6
  167. package/dist/components/input/input.component.js +10 -10
  168. package/dist/components/input/input.js +11 -11
  169. package/dist/components/menu/menu.component.d.ts +4 -0
  170. package/dist/components/menu/menu.component.js +3 -3
  171. package/dist/components/menu/menu.js +4 -4
  172. package/dist/components/menu/menu.styles.js +1 -1
  173. package/dist/components/menu-item/menu-item.component.d.ts +0 -1
  174. package/dist/components/menu-item/menu-item.component.js +7 -7
  175. package/dist/components/menu-item/menu-item.js +8 -8
  176. package/dist/components/menu-item/submenu-controller.d.ts +10 -0
  177. package/dist/components/menu-item/submenu-controller.js +1 -1
  178. package/dist/components/menu-label/menu-label.component.js +3 -3
  179. package/dist/components/menu-label/menu-label.js +4 -4
  180. package/dist/components/nav-item/nav-item.component.js +4 -4
  181. package/dist/components/nav-item/nav-item.js +5 -5
  182. package/dist/components/optgroup/optgroup.component.js +3 -3
  183. package/dist/components/optgroup/optgroup.js +4 -4
  184. package/dist/components/option/option.component.js +8 -8
  185. package/dist/components/option/option.js +9 -9
  186. package/dist/components/pagination/pagination.component.js +30 -30
  187. package/dist/components/pagination/pagination.js +31 -31
  188. package/dist/components/popup/popup.component.js +2 -2
  189. package/dist/components/popup/popup.js +3 -3
  190. package/dist/components/prio-nav/prio-nav.component.js +16 -16
  191. package/dist/components/prio-nav/prio-nav.js +17 -17
  192. package/dist/components/progress-bar/progress-bar.component.js +2 -2
  193. package/dist/components/progress-bar/progress-bar.js +3 -3
  194. package/dist/components/progress-ring/progress-ring.component.js +2 -2
  195. package/dist/components/progress-ring/progress-ring.js +3 -3
  196. package/dist/components/radio/radio.component.js +5 -5
  197. package/dist/components/radio/radio.js +6 -6
  198. package/dist/components/radio-button/radio-button.component.js +3 -3
  199. package/dist/components/radio-button/radio-button.js +4 -4
  200. package/dist/components/radio-group/radio-group.component.js +6 -6
  201. package/dist/components/radio-group/radio-group.js +7 -7
  202. package/dist/components/range/range.component.js +12 -12
  203. package/dist/components/range/range.js +13 -13
  204. package/dist/components/range-tick/range-tick.component.js +2 -2
  205. package/dist/components/range-tick/range-tick.js +3 -3
  206. package/dist/components/resize-observer/resize-observer.component.js +2 -2
  207. package/dist/components/select/select.component.js +19 -19
  208. package/dist/components/select/select.js +20 -20
  209. package/dist/components/side-nav/side-nav.component.js +19 -19
  210. package/dist/components/side-nav/side-nav.js +20 -20
  211. package/dist/components/spinner/spinner.component.js +2 -2
  212. package/dist/components/spinner/spinner.js +3 -3
  213. package/dist/components/switch/switch.component.js +3 -3
  214. package/dist/components/switch/switch.js +4 -4
  215. package/dist/components/tab/tab.component.js +9 -9
  216. package/dist/components/tab/tab.js +10 -10
  217. package/dist/components/tab-group/tab-group.component.js +12 -12
  218. package/dist/components/tab-group/tab-group.js +13 -13
  219. package/dist/components/tab-panel/tab-panel.component.js +2 -2
  220. package/dist/components/tab-panel/tab-panel.js +3 -3
  221. package/dist/components/tag/tag.component.js +9 -9
  222. package/dist/components/tag/tag.js +10 -10
  223. package/dist/components/tag-group/tag-group.component.js +3 -3
  224. package/dist/components/tag-group/tag-group.js +4 -4
  225. package/dist/components/textarea/textarea.component.js +4 -4
  226. package/dist/components/textarea/textarea.js +5 -5
  227. package/dist/components/tooltip/tooltip.component.js +4 -4
  228. package/dist/components/tooltip/tooltip.js +5 -5
  229. package/dist/components/validate/utility.js +2 -2
  230. package/dist/components/validate/validate.component.js +21 -21
  231. package/dist/components/validate/validate.js +22 -22
  232. package/dist/custom-elements.json +1730 -1567
  233. package/dist/styles/fouc.css +1 -0
  234. package/dist/styles/index.css +2 -1
  235. package/dist/synergy.js +243 -243
  236. package/dist/vscode.html-custom-data.json +164 -147
  237. package/package.json +9 -6
  238. package/dist/chunks/chunk.4BS6CBRX.js.map +0 -7
  239. package/dist/chunks/chunk.BC532CB6.js.map +0 -7
  240. package/dist/chunks/chunk.OIZEJYK7.js.map +0 -7
  241. /package/dist/chunks/{chunk.PKI5G2BK.js.map → chunk.2ICMQHK2.js.map} +0 -0
  242. /package/dist/chunks/{chunk.VUIJVW2Q.js.map → chunk.2QJN274R.js.map} +0 -0
  243. /package/dist/chunks/{chunk.CRFIJO63.js.map → chunk.3ET6VFFM.js.map} +0 -0
  244. /package/dist/chunks/{chunk.SDAD3TIZ.js.map → chunk.3SWPHSWX.js.map} +0 -0
  245. /package/dist/chunks/{chunk.KI5VDJAL.js.map → chunk.4E5YHPM6.js.map} +0 -0
  246. /package/dist/chunks/{chunk.KEWOYD7U.js.map → chunk.4NOC74ME.js.map} +0 -0
  247. /package/dist/chunks/{chunk.LHT3EV6M.js.map → chunk.4OIWU6V3.js.map} +0 -0
  248. /package/dist/chunks/{chunk.5KYKNKXK.js.map → chunk.4UNKGNWY.js.map} +0 -0
  249. /package/dist/chunks/{chunk.73JTC3OL.js.map → chunk.52CE6GAX.js.map} +0 -0
  250. /package/dist/chunks/{chunk.UYTYFCZO.js.map → chunk.5PNZHX46.js.map} +0 -0
  251. /package/dist/chunks/{chunk.MLW6J2PI.js.map → chunk.5PUONAZP.js.map} +0 -0
  252. /package/dist/chunks/{chunk.IMFHPXZV.js.map → chunk.672U24GD.js.map} +0 -0
  253. /package/dist/chunks/{chunk.Q462PIAC.js.map → chunk.7CPWT4JW.js.map} +0 -0
  254. /package/dist/chunks/{chunk.VICY5B3Y.js.map → chunk.7GUN5FTB.js.map} +0 -0
  255. /package/dist/chunks/{chunk.4OSNBR72.js.map → chunk.7GVHLAPF.js.map} +0 -0
  256. /package/dist/chunks/{chunk.244QNZMJ.js.map → chunk.7NW3UNQH.js.map} +0 -0
  257. /package/dist/chunks/{chunk.66QNJSLF.js.map → chunk.7W55HRDH.js.map} +0 -0
  258. /package/dist/chunks/{chunk.I4Z5TIK5.js.map → chunk.7WBNGACU.js.map} +0 -0
  259. /package/dist/chunks/{chunk.42C7SFEG.js.map → chunk.ASYOUIIA.js.map} +0 -0
  260. /package/dist/chunks/{chunk.YUWPQV2J.js.map → chunk.ATXXETUW.js.map} +0 -0
  261. /package/dist/chunks/{chunk.KPAGL3JH.js.map → chunk.BK4L5JTZ.js.map} +0 -0
  262. /package/dist/chunks/{chunk.TV7RAXV6.js.map → chunk.BKK3LZIE.js.map} +0 -0
  263. /package/dist/chunks/{chunk.QEELQI3B.js.map → chunk.BW4PBG4C.js.map} +0 -0
  264. /package/dist/chunks/{chunk.NP7ZR5HF.js.map → chunk.C7M5UTLM.js.map} +0 -0
  265. /package/dist/chunks/{chunk.EXQNCNEL.js.map → chunk.CIR3MZ3J.js.map} +0 -0
  266. /package/dist/chunks/{chunk.O6IOGX2G.js.map → chunk.CWADFVTW.js.map} +0 -0
  267. /package/dist/chunks/{chunk.RXGMDDX4.js.map → chunk.DG7N2GPP.js.map} +0 -0
  268. /package/dist/chunks/{chunk.KDW4KG7L.js.map → chunk.DZU5IHW5.js.map} +0 -0
  269. /package/dist/chunks/{chunk.NLFERVI7.js.map → chunk.EE2T4DI3.js.map} +0 -0
  270. /package/dist/chunks/{chunk.XH5QCNSL.js.map → chunk.EHQPWQIP.js.map} +0 -0
  271. /package/dist/chunks/{chunk.K47UDTAJ.js.map → chunk.ELOOAXBS.js.map} +0 -0
  272. /package/dist/chunks/{chunk.ITZAD4HQ.js.map → chunk.EOFEAQAT.js.map} +0 -0
  273. /package/dist/chunks/{chunk.G3CHXAEJ.js.map → chunk.HJVKBMLH.js.map} +0 -0
  274. /package/dist/chunks/{chunk.5HOJNW7M.js.map → chunk.HTYK7AJW.js.map} +0 -0
  275. /package/dist/chunks/{chunk.XUI5ISF3.js.map → chunk.HWHC6OI3.js.map} +0 -0
  276. /package/dist/chunks/{chunk.234CRR27.js.map → chunk.IT2TKYM7.js.map} +0 -0
  277. /package/dist/chunks/{chunk.GMCTWMH3.js.map → chunk.IYXZ2SMF.js.map} +0 -0
  278. /package/dist/chunks/{chunk.7GSNTJ3J.js.map → chunk.JFERWFTG.js.map} +0 -0
  279. /package/dist/chunks/{chunk.RASMI2WO.js.map → chunk.JJCL4WAB.js.map} +0 -0
  280. /package/dist/chunks/{chunk.VKBFEDS6.js.map → chunk.K2PFFMHF.js.map} +0 -0
  281. /package/dist/chunks/{chunk.A4I33Y6H.js.map → chunk.K3CXMAMI.js.map} +0 -0
  282. /package/dist/chunks/{chunk.SSNYL7AZ.js.map → chunk.KCVQZ4BE.js.map} +0 -0
  283. /package/dist/chunks/{chunk.OVS5YCLG.js.map → chunk.KRMDIBND.js.map} +0 -0
  284. /package/dist/chunks/{chunk.HXQ3Q22D.js.map → chunk.LRFQWF2J.js.map} +0 -0
  285. /package/dist/chunks/{chunk.BLR7KKUM.js.map → chunk.M5MQJOPS.js.map} +0 -0
  286. /package/dist/chunks/{chunk.O5XZM45U.js.map → chunk.MET45KSE.js.map} +0 -0
  287. /package/dist/chunks/{chunk.JQZRVTI3.js.map → chunk.MJYLGANL.js.map} +0 -0
  288. /package/dist/chunks/{chunk.KC4SP6UE.js.map → chunk.N5KGL3GC.js.map} +0 -0
  289. /package/dist/chunks/{chunk.N7DY6HOE.js.map → chunk.N6MOQ6B5.js.map} +0 -0
  290. /package/dist/chunks/{chunk.KYHWQEEI.js.map → chunk.NPCR7UVQ.js.map} +0 -0
  291. /package/dist/chunks/{chunk.OTXTNYRJ.js.map → chunk.OEYLCJ7N.js.map} +0 -0
  292. /package/dist/chunks/{chunk.JNKPQ22W.js.map → chunk.OGHUH4RS.js.map} +0 -0
  293. /package/dist/chunks/{chunk.FJLIZ7EH.js.map → chunk.OJDJ5NGZ.js.map} +0 -0
  294. /package/dist/chunks/{chunk.PKPJXZNO.js.map → chunk.P5U27SXU.js.map} +0 -0
  295. /package/dist/chunks/{chunk.NB7NQ6ZJ.js.map → chunk.PHR6O2TK.js.map} +0 -0
  296. /package/dist/chunks/{chunk.GBWQCBER.js.map → chunk.PVIVA2RW.js.map} +0 -0
  297. /package/dist/chunks/{chunk.3GCIZUDQ.js.map → chunk.Q3QSOXKM.js.map} +0 -0
  298. /package/dist/chunks/{chunk.LJLE6S7K.js.map → chunk.QKDPTEYP.js.map} +0 -0
  299. /package/dist/chunks/{chunk.FZ3YJGQZ.js.map → chunk.R2K2SDDU.js.map} +0 -0
  300. /package/dist/chunks/{chunk.NLK6U5GU.js.map → chunk.R6HOFUDS.js.map} +0 -0
  301. /package/dist/chunks/{chunk.FVOA7OCQ.js.map → chunk.R7DCOYSA.js.map} +0 -0
  302. /package/dist/chunks/{chunk.ZXI2ZVNR.js.map → chunk.RANSYZYC.js.map} +0 -0
  303. /package/dist/chunks/{chunk.6JPV7IDA.js.map → chunk.RFDAYKRC.js.map} +0 -0
  304. /package/dist/chunks/{chunk.5XISXZ24.js.map → chunk.RGPTWKCY.js.map} +0 -0
  305. /package/dist/chunks/{chunk.T4L342TL.js.map → chunk.RKAIJDOM.js.map} +0 -0
  306. /package/dist/chunks/{chunk.AVHIO6QX.js.map → chunk.SDC2FVNL.js.map} +0 -0
  307. /package/dist/chunks/{chunk.XBW7Z2RY.js.map → chunk.SUL6IWF7.js.map} +0 -0
  308. /package/dist/chunks/{chunk.K7MD7OW2.js.map → chunk.T2BDECHP.js.map} +0 -0
  309. /package/dist/chunks/{chunk.VFXNG3S7.js.map → chunk.T6GT575U.js.map} +0 -0
  310. /package/dist/chunks/{chunk.DXWCV5LF.js.map → chunk.T6JI76WU.js.map} +0 -0
  311. /package/dist/chunks/{chunk.NYRH7CY4.js.map → chunk.TAS6WBOB.js.map} +0 -0
  312. /package/dist/chunks/{chunk.C7LDSA6N.js.map → chunk.TIRGUR3V.js.map} +0 -0
  313. /package/dist/chunks/{chunk.LUVQR5GV.js.map → chunk.TS65LJ5O.js.map} +0 -0
  314. /package/dist/chunks/{chunk.KHHMKU5F.js.map → chunk.U5BNYIGY.js.map} +0 -0
  315. /package/dist/chunks/{chunk.TKQ3JMIQ.js.map → chunk.UGUHHPHS.js.map} +0 -0
  316. /package/dist/chunks/{chunk.LQSKCZDZ.js.map → chunk.UH52IQFZ.js.map} +0 -0
  317. /package/dist/chunks/{chunk.M3E33KXI.js.map → chunk.UJBDQHXK.js.map} +0 -0
  318. /package/dist/chunks/{chunk.2DIJ66WQ.js.map → chunk.ULEMFOWH.js.map} +0 -0
  319. /package/dist/chunks/{chunk.6OB6RYPM.js.map → chunk.UQMYXB35.js.map} +0 -0
  320. /package/dist/chunks/{chunk.7GDKE5DX.js.map → chunk.UTG3I2RF.js.map} +0 -0
  321. /package/dist/chunks/{chunk.EMJFLRJX.js.map → chunk.UYUCPG3J.js.map} +0 -0
  322. /package/dist/chunks/{chunk.PSAFHY7P.js.map → chunk.W5XDOOIR.js.map} +0 -0
  323. /package/dist/chunks/{chunk.RLWMJ7ST.js.map → chunk.WP2OIWA5.js.map} +0 -0
  324. /package/dist/chunks/{chunk.YAXXSDKF.js.map → chunk.WTJCFKLR.js.map} +0 -0
  325. /package/dist/chunks/{chunk.ZJRSA6FU.js.map → chunk.WWJFXCJ7.js.map} +0 -0
  326. /package/dist/chunks/{chunk.TTCMP7MI.js.map → chunk.X72G6ASQ.js.map} +0 -0
  327. /package/dist/chunks/{chunk.TYSWA3XY.js.map → chunk.XT6UCMCP.js.map} +0 -0
  328. /package/dist/chunks/{chunk.ZT47ZFJC.js.map → chunk.YEVEQT3G.js.map} +0 -0
  329. /package/dist/chunks/{chunk.S3SB2L64.js.map → chunk.YJPWGTIA.js.map} +0 -0
  330. /package/dist/chunks/{chunk.ZQZGMCRB.js.map → chunk.YT4ZXOLI.js.map} +0 -0
  331. /package/dist/chunks/{chunk.X7M4AZCK.js.map → chunk.Z3WWZV5J.js.map} +0 -0
  332. /package/dist/chunks/{chunk.QGVMPPJU.js.map → chunk.Z4LFYYMX.js.map} +0 -0
  333. /package/dist/chunks/{chunk.LLRGAMEA.js.map → chunk.ZGUUEAVE.js.map} +0 -0
  334. /package/dist/chunks/{chunk.HA4TRDJB.js.map → chunk.ZJSLHMYK.js.map} +0 -0
  335. /package/dist/chunks/{chunk.QATINK6D.js.map → chunk.ZPWGYTRR.js.map} +0 -0
  336. /package/dist/chunks/{chunk.7ZCFVUIZ.js.map → chunk.ZTKX2YB4.js.map} +0 -0
@@ -2,6 +2,37 @@
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
3
3
  "version": 1.1,
4
4
  "tags": [
5
+ {
6
+ "name": "syn-accordion",
7
+ "description": "Accordions provide the ability to group a list of `<syn-details>`.\n---\n\n\n### **Slots:**\n - _default_ - The accordion's main content. Must be `<syn-details />` elements.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
8
+ "attributes": [
9
+ {
10
+ "name": "close-others",
11
+ "description": "Indicates whether or not multiple `<syn-detail>` elements can be open at the same time.",
12
+ "values": []
13
+ },
14
+ {
15
+ "name": "contained",
16
+ "description": "Draws the accordion and the slotted `<syn-details>` as contained elements.",
17
+ "values": []
18
+ },
19
+ {
20
+ "name": "size",
21
+ "description": "The size that should be applied to all slotted `<syn-details>` elements",
22
+ "values": [
23
+ { "name": "small" },
24
+ { "name": "medium" },
25
+ { "name": "large" }
26
+ ]
27
+ }
28
+ ],
29
+ "references": [
30
+ {
31
+ "name": "Documentation",
32
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-accordion--docs"
33
+ }
34
+ ]
35
+ },
5
36
  {
6
37
  "name": "syn-alert",
7
38
  "description": "Alerts are used to display important messages inline or as toast notifications.\n---\n\n\n### **Events:**\n - **syn-show** - Emitted when the alert opens.\n- **syn-after-show** - Emitted after the alert opens and all animations are complete.\n- **syn-hide** - Emitted when the alert closes.\n- **syn-after-hide** - Emitted after the alert closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the alert.\n- **hide()** - Hides the alert\n- **toast()** - Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\ndismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\ncalling this method again. The returned promise will resolve after the alert is hidden.\n\n### **Slots:**\n - _default_ - The alert's main content.\n- **icon** - An icon to show in the alert. Works best with `<syn-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **icon** - The container that wraps the optional icon.\n- **message** - The container that wraps the alert's main content.\n- **close-button** - The close button, an `<syn-icon-button>`.\n- **close-button__base** - The close button's exported `base` part.",
@@ -49,37 +80,6 @@
49
80
  }
50
81
  ]
51
82
  },
52
- {
53
- "name": "syn-accordion",
54
- "description": "Accordions provide the ability to group a list of `<syn-details>`.\n---\n\n\n### **Slots:**\n - _default_ - The accordion's main content. Must be `<syn-details />` elements.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
55
- "attributes": [
56
- {
57
- "name": "close-others",
58
- "description": "Indicates whether or not multiple `<syn-detail>` elements can be open at the same time.",
59
- "values": []
60
- },
61
- {
62
- "name": "contained",
63
- "description": "Draws the accordion and the slotted `<syn-details>` as contained elements.",
64
- "values": []
65
- },
66
- {
67
- "name": "size",
68
- "description": "The size that should be applied to all slotted `<syn-details>` elements",
69
- "values": [
70
- { "name": "small" },
71
- { "name": "medium" },
72
- { "name": "large" }
73
- ]
74
- }
75
- ],
76
- "references": [
77
- {
78
- "name": "Documentation",
79
- "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-accordion--docs"
80
- }
81
- ]
82
- },
83
83
  {
84
84
  "name": "syn-badge",
85
85
  "description": "Badges are used to draw attention and display statuses or counts.\n---\n\n\n### **Slots:**\n - _default_ - The badge's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -120,6 +120,38 @@
120
120
  }
121
121
  ]
122
122
  },
123
+ {
124
+ "name": "syn-breadcrumb-item",
125
+ "description": "Breadcrumb Items are used inside [breadcrumbs](/components/breadcrumb) to represent different links.\n---\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **prefix** - An optional prefix, usually an icon or icon button.\n- **suffix** - An optional suffix, usually an icon or icon button.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<syn-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **label** - The breadcrumb item's label.\n- **prefix** - The container that wraps the prefix.\n- **suffix** - The container that wraps the suffix.\n- **separator** - The container that wraps the separator.",
126
+ "attributes": [
127
+ {
128
+ "name": "href",
129
+ "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
130
+ "values": []
131
+ },
132
+ {
133
+ "name": "target",
134
+ "description": "Tells the browser where to open the link. Only used when `href` is set.",
135
+ "values": [
136
+ { "name": "_blank" },
137
+ { "name": "_parent" },
138
+ { "name": "_self" },
139
+ { "name": "_top" }
140
+ ]
141
+ },
142
+ {
143
+ "name": "rel",
144
+ "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
145
+ "values": []
146
+ }
147
+ ],
148
+ "references": [
149
+ {
150
+ "name": "Documentation",
151
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-breadcrumb-item--docs"
152
+ }
153
+ ]
154
+ },
123
155
  {
124
156
  "name": "syn-button",
125
157
  "description": "Buttons represent actions that are available to the user.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the button loses focus.\n- **syn-focus** - Emitted when the button gains focus.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the button.\n- **focus(options: _FocusOptions_)** - Sets focus on the button.\n- **blur()** - Removes focus from the button.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The button's label.\n- **prefix** - A presentational prefix icon or similar element.\n- **suffix** - A presentational suffix icon or similar element.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **prefix** - The container that wraps the prefix.\n- **label** - The button's label.\n- **suffix** - The container that wraps the suffix.\n- **caret** - The button's caret icon, an `<syn-icon>` element.\n- **spinner** - The spinner that shows when the button is in the loading state.",
@@ -249,38 +281,6 @@
249
281
  }
250
282
  ]
251
283
  },
252
- {
253
- "name": "syn-breadcrumb-item",
254
- "description": "Breadcrumb Items are used inside [breadcrumbs](/components/breadcrumb) to represent different links.\n---\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **prefix** - An optional prefix, usually an icon or icon button.\n- **suffix** - An optional suffix, usually an icon or icon button.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<syn-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **label** - The breadcrumb item's label.\n- **prefix** - The container that wraps the prefix.\n- **suffix** - The container that wraps the suffix.\n- **separator** - The container that wraps the separator.",
255
- "attributes": [
256
- {
257
- "name": "href",
258
- "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
259
- "values": []
260
- },
261
- {
262
- "name": "target",
263
- "description": "Tells the browser where to open the link. Only used when `href` is set.",
264
- "values": [
265
- { "name": "_blank" },
266
- { "name": "_parent" },
267
- { "name": "_self" },
268
- { "name": "_top" }
269
- ]
270
- },
271
- {
272
- "name": "rel",
273
- "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
274
- "values": []
275
- }
276
- ],
277
- "references": [
278
- {
279
- "name": "Documentation",
280
- "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-breadcrumb-item--docs"
281
- }
282
- ]
283
- },
284
284
  {
285
285
  "name": "syn-button-group",
286
286
  "description": "Button groups can be used to group related buttons into sections.\n---\n\n\n### **Slots:**\n - _default_ - One or more `<syn-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -334,6 +334,23 @@
334
334
  }
335
335
  ]
336
336
  },
337
+ {
338
+ "name": "syn-chart",
339
+ "description": "The `<syn-chart>` component is a container for displaying charts. It provides a structured layout and styling for chart elements, allowing for consistent presentation across different types of charts. The chart component is based on [Apache ECharts](https://echarts.apache.org)\n---\n\n\n### **Methods:**\n - **getInstance(): _EChartsType | undefined_** - Returns the underlying ECharts instance, giving direct access to the full\n[ECharts API](https://echarts.apache.org/en/api.html#echartsInstance).\n\nUse this when the `config` property alone is not sufficient — for example to\nimperatively call `setOption()` with custom merge flags, listen to ECharts events,\ntrigger actions, or retrieve chart data.\n\nReturns `undefined` if called before the component has been connected to the DOM\n(i.e. before `firstUpdated` has run).\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
340
+ "attributes": [
341
+ {
342
+ "name": "palette",
343
+ "description": "The color palette to apply to chart series.\n\n- `categorical` (default) — 12 distinct colors for comparing unrelated data series\n- `sequential-01` … `sequential-07` — 10-step single-hue ramps:\n `01`=primary, `02`=accent, `03`=muted, `04`=purple, `05`=teal, `06`=magenta, `07`=neutral\n- `sequential-status-critical`, `sequential-status-error`, `sequential-status-info`,\n `sequential-status-success`, `sequential-status-warning` — 10-step status ramps\n\nThe palette sets the ECharts `color` array. If `config.color` is explicitly provided,\nit takes precedence over the palette.",
344
+ "values": [{ "name": "SynChartPalette" }]
345
+ }
346
+ ],
347
+ "references": [
348
+ {
349
+ "name": "Documentation",
350
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-chart--docs"
351
+ }
352
+ ]
353
+ },
337
354
  {
338
355
  "name": "syn-checkbox",
339
356
  "description": "Checkboxes allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the checkbox loses focus.\n- **syn-change** - Emitted when the checked state changes.\n- **syn-focus** - Emitted when the checkbox gains focus.\n- **syn-input** - Emitted when the checkbox receives input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **help-text** - Text that describes how to use the checkbox. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **control--checked** - Matches the control part when the checkbox is checked.\n- **control--indeterminate** - Matches the control part when the checkbox is indeterminate.\n- **checked-icon** - The checked icon, an `<syn-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, an `<syn-icon>` element.\n- **label** - The container that wraps the checkbox's label.\n- **form-control-help-text** - The help text's wrapper.",
@@ -1835,37 +1852,6 @@
1835
1852
  }
1836
1853
  ]
1837
1854
  },
1838
- {
1839
- "name": "syn-side-nav",
1840
- "description": "The <syn-side-nav /> element contains secondary navigation and fits below the header.\nIt can be used to group multiple navigation items (<syn-nav-item />s) together.\n---\n\n\n### **Events:**\n - **syn-show** - Emitted when the side-nav opens.\n- **syn-after-show** - Emitted after the side-nav opens and all animations are complete.\n- **syn-hide** - Emitted when the side-nav closes.\n- **syn-after-hide** - Emitted after the side-nav closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the side-nav.\n- **hide()** - Hides the side-nav\n\n### **Slots:**\n - _default_ - The main content of the side-nav. Used for <syn-nav-item /> elements.\n- **footer** - The footer content of the side-nav. Used for <syn-nav-item /> elements. Please avoid having to many nav-items as it can massively influence the user experience.\n- **toggle-label** - The label of the toggle nav-item for variant=\"sticky\".\n- **toggle-icon** - An icon to use in lieu of the default icon for the toggle nav-item for variant=\"sticky\".\n\n### **CSS Properties:**\n - **--side-nav-open-width** - The width of the side-nav if in open state _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The components base wrapper\n- **drawer** - The drawer that is used under the hood for creating the side-nav\n- **content-container** - The components main content container\n- **content** - The components main content\n- **footer-container** - The components footer content container (where the footer slot content is rendered)\n- **footer-divider** - The components footer divider\n- **footer** - The components footer content\n- **overlay** - The overlay that covers the screen behind the side-nav.\n- **panel** - The side-nav's panel (where the whole content is rendered).\n- **body** - The side-nav's body (where the default slot content is rendered)\n- **drawer__base** - The drawer's base wrapper\n- **toggle-nav-item** - The nav-item to toggle open state for variant=\"sticky\"\n- **toggle-icon** - The icon of the toggle nav-item for variant=\"sticky\"\n- **toggle-label** - The label of the toggle nav-item for variant=\"sticky\".",
1841
- "attributes": [
1842
- {
1843
- "name": "open",
1844
- "description": "Indicates whether or not the side-nav is open.\nYou can toggle this attribute to show and hide the side-nav, or you can use the `show()` and\n`hide()` methods and this attribute will reflect the side-nav's open state.\n\nDepending on the \"variant\" attribute, the behavior will differ.\n\n__Default__:\nWith `open` will show the side-nav with an overlay.\nWithout `open`, the side-nav will be hidden.\n\n__Rail__:\nWith `open` will show the whole side-nav with an overlay for touch devices\nor without an overlay for non-touch devices.\nWithout `open`, the side-nav will only show the prefix of nav-item's.\n\n__Sticky__:\nWith `open` will show the whole side-nav with an overlay for touch devices\nor without an overlay for non-touch devices.\nWithout `open`, the side-nav will only show the prefix of nav-item's.",
1845
- "values": []
1846
- },
1847
- {
1848
- "name": "variant",
1849
- "description": "The variant that should be used to show the side navigation.\n\nThe following variants are supported:\n- **default** (default): Always shows the whole content and additionally an overlay.\nThis makes especially sense for applications, where you navigate to a place and stay\nthere for a longer time.\n- **rail**: Only show the prefix of navigation items in closed state.\nThis will open on hover on the rail navigation.\nOn touch devices the navigation opens on click and shows an overlay.\nNote: The rail variant is only an option if all Navigation Items on the first level\nhave an Icon.\nIf this is not the case you should use a burger navigation.\n- **sticky**: The side-nav has a pin button to show the side-nav in small (icon only)\nand full width. This variant is only possible for non-nested navigation items.\nNote: The sticky variant is only an option if all Navigation Items on the first level\nhave an Icon and if there are only \"first level\" items.",
1850
- "values": [
1851
- { "name": "default" },
1852
- { "name": "rail" },
1853
- { "name": "sticky" }
1854
- ]
1855
- },
1856
- {
1857
- "name": "no-focus-trapping",
1858
- "description": "By default, the side-nav traps the focus if in variant=\"default\" and open.\nTo disable the focus trapping, set this attribute.",
1859
- "values": []
1860
- }
1861
- ],
1862
- "references": [
1863
- {
1864
- "name": "Documentation",
1865
- "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-side-nav--docs"
1866
- }
1867
- ]
1868
- },
1869
1855
  {
1870
1856
  "name": "syn-select",
1871
1857
  "description": "Selects allow you to choose items from a menu of predefined options.\n---\n\n\n### **Events:**\n - **syn-change** - Emitted when the control's value changes.\n- **syn-clear** - Emitted when the control's value is cleared.\n- **syn-input** - Emitted when the control receives input.\n- **syn-focus** - Emitted when the control gains focus.\n- **syn-blur** - Emitted when the control loses focus.\n- **syn-show** - Emitted when the select's menu opens.\n- **syn-after-show** - Emitted after the select's menu opens and all animations are complete.\n- **syn-hide** - Emitted when the select's menu closes.\n- **syn-after-hide** - Emitted after the select's menu closes and all animations are complete.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **show()** - Shows the listbox.\n- **hide()** - Hides the listbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. Pass an empty string to restore validity.\n- **focus(options: _FocusOptions_)** - Sets focus on the control.\n- **blur()** - Removes focus from the control.\n\n### **Slots:**\n - _default_ - The listbox options. Must be `<syn-option>` elements. You can use `<syn-divider>` to group items visually.\n- **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **prefix** - Used to prepend a presentational icon or similar element to the combobox.\n- **suffix** - Used to append a presentational icon or similar element to the combobox.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **expand-icon** - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n- **help-text** - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The select's wrapper.\n- **form-control-help-text** - The help text's wrapper.\n- **combobox** - The container the wraps the prefix, suffix, combobox, clear icon, and expand button.\n- **prefix** - The container that wraps the prefix slot.\n- **suffix** - The container that wraps the suffix slot.\n- **display-input** - The element that displays the selected option's label, an `<input>` element.\n- **listbox** - The listbox container where options are slotted.\n- **tags** - The container that houses option tags when `multiselect` is used.\n- **tag** - The individual tags that represent each multiselect option.\n- **tag__base** - The tag's base part.\n- **tag__content** - The tag's content part.\n- **tag__remove-button** - The tag's remove button.\n- **tag__remove-button__base** - The tag's remove button base part.\n- **clear-button** - The clear button.\n- **expand-icon** - The container that wraps the expand icon.\n- **popup** - The popup's exported `popup` part. Use this to target the tooltip's popup container.",
@@ -1970,6 +1956,37 @@
1970
1956
  }
1971
1957
  ]
1972
1958
  },
1959
+ {
1960
+ "name": "syn-side-nav",
1961
+ "description": "The <syn-side-nav /> element contains secondary navigation and fits below the header.\nIt can be used to group multiple navigation items (<syn-nav-item />s) together.\n---\n\n\n### **Events:**\n - **syn-show** - Emitted when the side-nav opens.\n- **syn-after-show** - Emitted after the side-nav opens and all animations are complete.\n- **syn-hide** - Emitted when the side-nav closes.\n- **syn-after-hide** - Emitted after the side-nav closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the side-nav.\n- **hide()** - Hides the side-nav\n\n### **Slots:**\n - _default_ - The main content of the side-nav. Used for <syn-nav-item /> elements.\n- **footer** - The footer content of the side-nav. Used for <syn-nav-item /> elements. Please avoid having to many nav-items as it can massively influence the user experience.\n- **toggle-label** - The label of the toggle nav-item for variant=\"sticky\".\n- **toggle-icon** - An icon to use in lieu of the default icon for the toggle nav-item for variant=\"sticky\".\n\n### **CSS Properties:**\n - **--side-nav-open-width** - The width of the side-nav if in open state _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The components base wrapper\n- **drawer** - The drawer that is used under the hood for creating the side-nav\n- **content-container** - The components main content container\n- **content** - The components main content\n- **footer-container** - The components footer content container (where the footer slot content is rendered)\n- **footer-divider** - The components footer divider\n- **footer** - The components footer content\n- **overlay** - The overlay that covers the screen behind the side-nav.\n- **panel** - The side-nav's panel (where the whole content is rendered).\n- **body** - The side-nav's body (where the default slot content is rendered)\n- **drawer__base** - The drawer's base wrapper\n- **toggle-nav-item** - The nav-item to toggle open state for variant=\"sticky\"\n- **toggle-icon** - The icon of the toggle nav-item for variant=\"sticky\"\n- **toggle-label** - The label of the toggle nav-item for variant=\"sticky\".",
1962
+ "attributes": [
1963
+ {
1964
+ "name": "open",
1965
+ "description": "Indicates whether or not the side-nav is open.\nYou can toggle this attribute to show and hide the side-nav, or you can use the `show()` and\n`hide()` methods and this attribute will reflect the side-nav's open state.\n\nDepending on the \"variant\" attribute, the behavior will differ.\n\n__Default__:\nWith `open` will show the side-nav with an overlay.\nWithout `open`, the side-nav will be hidden.\n\n__Rail__:\nWith `open` will show the whole side-nav with an overlay for touch devices\nor without an overlay for non-touch devices.\nWithout `open`, the side-nav will only show the prefix of nav-item's.\n\n__Sticky__:\nWith `open` will show the whole side-nav with an overlay for touch devices\nor without an overlay for non-touch devices.\nWithout `open`, the side-nav will only show the prefix of nav-item's.",
1966
+ "values": []
1967
+ },
1968
+ {
1969
+ "name": "variant",
1970
+ "description": "The variant that should be used to show the side navigation.\n\nThe following variants are supported:\n- **default** (default): Always shows the whole content and additionally an overlay.\nThis makes especially sense for applications, where you navigate to a place and stay\nthere for a longer time.\n- **rail**: Only show the prefix of navigation items in closed state.\nThis will open on hover on the rail navigation.\nOn touch devices the navigation opens on click and shows an overlay.\nNote: The rail variant is only an option if all Navigation Items on the first level\nhave an Icon.\nIf this is not the case you should use a burger navigation.\n- **sticky**: The side-nav has a pin button to show the side-nav in small (icon only)\nand full width. This variant is only possible for non-nested navigation items.\nNote: The sticky variant is only an option if all Navigation Items on the first level\nhave an Icon and if there are only \"first level\" items.",
1971
+ "values": [
1972
+ { "name": "default" },
1973
+ { "name": "rail" },
1974
+ { "name": "sticky" }
1975
+ ]
1976
+ },
1977
+ {
1978
+ "name": "no-focus-trapping",
1979
+ "description": "By default, the side-nav traps the focus if in variant=\"default\" and open.\nTo disable the focus trapping, set this attribute.",
1980
+ "values": []
1981
+ }
1982
+ ],
1983
+ "references": [
1984
+ {
1985
+ "name": "Documentation",
1986
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-side-nav--docs"
1987
+ }
1988
+ ]
1989
+ },
1973
1990
  {
1974
1991
  "name": "syn-spinner",
1975
1992
  "description": "Spinners are used to show the progress of an indeterminate operation.\n---\n\n\n### **CSS Properties:**\n - **--track-width** - The width of the track. _(default: undefined)_\n- **--indicator-color** - The color of the spinner's indicator. _(default: undefined)_\n- **--speed** - The time it takes for the spinner to complete one animation cycle. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -2075,28 +2092,6 @@
2075
2092
  }
2076
2093
  ]
2077
2094
  },
2078
- {
2079
- "name": "syn-tab-panel",
2080
- "description": "Tab panels are used inside [tab groups](/components/tab-group) to display tabbed content.\n---\n\n\n### **Slots:**\n - _default_ - The tab panel's content.\n\n### **CSS Properties:**\n - **--padding** - The tab panel's padding. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
2081
- "attributes": [
2082
- {
2083
- "name": "name",
2084
- "description": "The tab panel's name.",
2085
- "values": []
2086
- },
2087
- {
2088
- "name": "active",
2089
- "description": "When true, the tab panel will be shown.",
2090
- "values": []
2091
- }
2092
- ],
2093
- "references": [
2094
- {
2095
- "name": "Documentation",
2096
- "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-tab-panel--docs"
2097
- }
2098
- ]
2099
- },
2100
2095
  {
2101
2096
  "name": "syn-tab-group",
2102
2097
  "description": "Tab groups organize content into a container that shows one section at a time.\n---\n\n\n### **Events:**\n - **syn-tab-show** - Emitted when a tab is shown. The payload of the event returns the \"panel\" attribute of the shown tab.\n- **syn-tab-hide** - Emitted when a tab is hidden. The payload of the event returns the \"panel\" attribute of the hidden tab.\n\n### **Methods:**\n - **show(panel: _string_)** - Shows the specified tab panel.\n\n### **Slots:**\n - _default_ - Used for grouping tab panels in the tab group. Must be `<syn-tab-panel>` elements.\n- **nav** - Used for grouping tabs in the tab group. Must be `<syn-tab>` elements.\n\n### **CSS Properties:**\n - **--indicator-color** - The color of the active tab indicator. _(default: undefined)_\n- **--track-color** - The color of the indicator's track (the line that separates tabs from panels). _(default: undefined)_\n- **--track-width** - The width of the indicator's track (the line that separates tabs from panels). _(default: undefined)_\n- **--indicator-width** - The width of the active tab indicator. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **nav** - The tab group's navigation container where tabs are slotted in.\n- **tabs** - The container that wraps the tabs.\n- **active-tab-indicator** - The line that highlights the currently selected tab.\n- **body** - The tab group's body where tab panels are slotted in.\n- **scroll-button** - The previous/next scroll buttons that show when tabs are scrollable, an `<syn-icon-button>`.\n- **scroll-button--start** - The starting scroll button.\n- **scroll-button--end** - The ending scroll button.\n- **scroll-button__base** - The scroll button's exported `base` part.",
@@ -2139,6 +2134,28 @@
2139
2134
  }
2140
2135
  ]
2141
2136
  },
2137
+ {
2138
+ "name": "syn-tab-panel",
2139
+ "description": "Tab panels are used inside [tab groups](/components/tab-group) to display tabbed content.\n---\n\n\n### **Slots:**\n - _default_ - The tab panel's content.\n\n### **CSS Properties:**\n - **--padding** - The tab panel's padding. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
2140
+ "attributes": [
2141
+ {
2142
+ "name": "name",
2143
+ "description": "The tab panel's name.",
2144
+ "values": []
2145
+ },
2146
+ {
2147
+ "name": "active",
2148
+ "description": "When true, the tab panel will be shown.",
2149
+ "values": []
2150
+ }
2151
+ ],
2152
+ "references": [
2153
+ {
2154
+ "name": "Documentation",
2155
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-tab-panel--docs"
2156
+ }
2157
+ ]
2158
+ },
2142
2159
  {
2143
2160
  "name": "syn-tag",
2144
2161
  "description": "Tags are used as labels to organize things or to indicate a selection.\n---\n\n\n### **Events:**\n - **syn-remove** - Emitted when the remove button is activated.\n\n### **Slots:**\n - _default_ - The tag's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **content** - The tag's content.\n- **remove-button** - The tag's remove button, an `<syn-icon-button>`.\n- **remove-button__base** - The remove button's exported `base` part.",
@@ -2165,6 +2182,37 @@
2165
2182
  }
2166
2183
  ]
2167
2184
  },
2185
+ {
2186
+ "name": "syn-tag-group",
2187
+ "description": "A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.\nIt arranges tags in flexible rows and supports different sizes and layouts.\nTags can be removable, icon‑based, or purely textual.\n---\n\n\n### **Slots:**\n - _default_ - The tag group's main content. Must be `<syn-tag />` elements.\n- **label** - The tag group's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **tag-label** - The tag group's label.",
2188
+ "attributes": [
2189
+ {
2190
+ "name": "label",
2191
+ "description": "The tag group's label. If you need to display HTML, use the `label` slot instead.",
2192
+ "values": []
2193
+ },
2194
+ {
2195
+ "name": "label-position",
2196
+ "description": "Controls the label position. Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.",
2197
+ "values": [{ "name": "top" }, { "name": "start" }]
2198
+ },
2199
+ {
2200
+ "name": "size",
2201
+ "description": "The size that should be applied to all slotted `<syn-tag>` elements",
2202
+ "values": [
2203
+ { "name": "small" },
2204
+ { "name": "medium" },
2205
+ { "name": "large" }
2206
+ ]
2207
+ }
2208
+ ],
2209
+ "references": [
2210
+ {
2211
+ "name": "Documentation",
2212
+ "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs"
2213
+ }
2214
+ ]
2215
+ },
2168
2216
  {
2169
2217
  "name": "syn-textarea",
2170
2218
  "description": "Textareas collect data from the user and allow multiple lines of text.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the control loses focus.\n- **syn-change** - Emitted when an alteration to the control's value is committed by the user.\n- **syn-focus** - Emitted when the control gains focus.\n- **syn-input** - Emitted when the control receives input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the textarea.\n- **blur()** - Removes focus from the textarea.\n- **select()** - Selects all the text in the textarea.\n- **scrollPosition(position: _{ top?: number; left?: number }_): _{ top: number; left: number } | undefined_** - Gets or sets the textarea's scroll position.\n- **setSelectionRange(selectionStart: _number_, selectionEnd: _number_, selectionDirection: _'forward' | 'backward' | 'none'_)** - Sets the start and end positions of the text selection (0-based).\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectMode: _'select' | 'start' | 'end' | 'preserve'_)** - Replaces a range of text with a new string.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - **label** - The textarea's label. Alternatively, you can use the `label` attribute.\n- **help-text** - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **form-control-help-text** - The help text's wrapper.\n- **base** - The component's base wrapper.\n- **textarea** - The internal `<textarea>` control.",
@@ -2376,37 +2424,6 @@
2376
2424
  }
2377
2425
  ]
2378
2426
  },
2379
- {
2380
- "name": "syn-tag-group",
2381
- "description": "A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.\nIt arranges tags in flexible rows and supports different sizes and layouts.\nTags can be removable, icon‑based, or purely textual.\n---\n\n\n### **Slots:**\n - _default_ - The tag group's main content. Must be `<syn-tag />` elements.\n- **label** - The tag group's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **tag-label** - The tag group's label.",
2382
- "attributes": [
2383
- {
2384
- "name": "label",
2385
- "description": "The tag group's label. If you need to display HTML, use the `label` slot instead.",
2386
- "values": []
2387
- },
2388
- {
2389
- "name": "label-position",
2390
- "description": "Controls the label position. Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.",
2391
- "values": [{ "name": "top" }, { "name": "start" }]
2392
- },
2393
- {
2394
- "name": "size",
2395
- "description": "The size that should be applied to all slotted `<syn-tag>` elements",
2396
- "values": [
2397
- { "name": "small" },
2398
- { "name": "medium" },
2399
- { "name": "large" }
2400
- ]
2401
- }
2402
- ],
2403
- "references": [
2404
- {
2405
- "name": "Documentation",
2406
- "url": "https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs"
2407
- }
2408
- ]
2409
- },
2410
2427
  {
2411
2428
  "name": "syn-validate",
2412
2429
  "description": "Validate provides form field validation messages in a unified way.\nIt does this by using [the native browser validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)\nand showing the validation message in a consistent, user defined way.\n---\n\n\n### **Methods:**\n - **getValidity()** - Returns the validity state of the input component.\n`true` for valid and `false` for invalid.\n\n### **Slots:**\n - _default_ - The form field that should be validated. Avoid slotting in more than one element, as subsequent ones will be ignored.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **input-wrapper** - The container that wraps the form field.\n- **alert** - The syn-alert that is shown when the variant is set to \"inline\".\n- **alert__base** - The container that wraps the alert.\n- **alert__message** - The container that wraps the alert message.\n- **alert__icon** - The container that wraps the alert icon.\n- **tooltip** - The syn-tooltip that is shown when the variant is set to \"tooltip\".\n- **tooltip__base** - The container that wraps the tooltip.\n- **tooltip__popup** - The container that wraps the tooltip popup.\n- **tooltip__arrow** - The container that wraps the tooltip arrow.\n- **tooltip__body** - The container that wraps the tooltip body.",
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "url": "https://www.sick.com"
5
5
  },
6
6
  "name": "@synergy-design-system/components",
7
- "version": "3.14.0",
7
+ "version": "3.15.1",
8
8
  "description": "",
9
9
  "repository": {
10
10
  "type": "git",
@@ -65,12 +65,10 @@
65
65
  "@web/test-runner": "^0.20.2",
66
66
  "@web/test-runner-commands": "^0.9.0",
67
67
  "@web/test-runner-playwright": "^0.11.1",
68
- "chalk": "^5.6.2",
69
68
  "change-case": "^5.4.4",
70
69
  "command-line-args": "^6.0.2",
71
70
  "comment-parser": "^1.4.6",
72
71
  "custom-element-vs-code-integration": "^1.5.0",
73
- "del": "^8.0.1",
74
72
  "esbuild": "^0.28.0",
75
73
  "esbuild-plugin-replace": "^1.4.0",
76
74
  "eslint": "^9.39.4",
@@ -82,7 +80,6 @@
82
80
  "eslint-plugin-lit-a11y": "^5.1.1",
83
81
  "eslint-plugin-playwright": "^2.10.2",
84
82
  "eslint-plugin-wc": "^3.1.0",
85
- "globby": "^16.2.0",
86
83
  "html-validate": "^10.13.1",
87
84
  "ora": "^9.4.0",
88
85
  "postcss": "^8.5.10",
@@ -95,7 +92,7 @@
95
92
  "typescript": "~5.9.3",
96
93
  "@synergy-design-system/eslint-config-syn": "0.1.0",
97
94
  "@synergy-design-system/stylelint-config-syn": "0.1.0",
98
- "@synergy-design-system/tokens": "3.14.0"
95
+ "@synergy-design-system/tokens": "3.15.1"
99
96
  },
100
97
  "dependencies": {
101
98
  "@floating-ui/dom": "^1.7.6",
@@ -103,7 +100,13 @@
103
100
  "lit": "^3.3.2"
104
101
  },
105
102
  "peerDependencies": {
106
- "@synergy-design-system/tokens": "3.14.0"
103
+ "echarts": "^6.1.0",
104
+ "@synergy-design-system/tokens": "3.15.1"
105
+ },
106
+ "peerDependenciesMeta": {
107
+ "echarts": {
108
+ "optional": true
109
+ }
107
110
  },
108
111
  "customElements": "dist/custom-elements.json",
109
112
  "scripts": {
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/menu-item/menu-item.component.ts", "../../src/internal/watchEvent.ts"],
4
- "sourcesContent": ["/* eslint-disable */\nimport { classMap } from 'lit/directives/class-map.js';\nimport { getTextContent, HasSlotController } from '../../internal/slot.js';\nimport { html } from 'lit';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query } from 'lit/decorators.js';\nimport { SubmenuController } from './submenu-controller.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIcon from '../icon/icon.component.js';\nimport SynPopup from '../popup/popup.component.js';\nimport SynSpinner from '../spinner/spinner.component.js';\nimport styles from './menu-item.styles.js';\nimport { emitEventForPropertyUpdates } from '../../internal/watchEvent.js';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * @summary Menu items provide options for the user to pick from in a menu.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-menu-item--docs\n * @status stable\n * @since 1.12.0\n *\n * @dependency syn-icon\n * @dependency syn-popup\n * @dependency syn-spinner\n *\n * @slot - The menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n * @slot submenu - Used to denote a nested menu.\n *\n * @csspart base - The component's base wrapper.\n * @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.\n * @csspart prefix - The prefix container.\n * @csspart label - The menu item label.\n * @csspart suffix - The suffix container.\n * @csspart spinner - The spinner that shows when the menu item is in the loading state.\n * @csspart spinner__base - The spinner's base part.\n * @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).\n *\n * @cssproperty [--submenu-offset=-2px] - The distance submenus shift to overlap the parent menu.\n */\n@emitEventForPropertyUpdates(['type', 'loading'], {\n waitUntilFirstUpdated: true,\n})\nexport default class SynMenuItem extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles];\n static dependencies = {\n 'syn-icon': SynIcon,\n 'syn-popup': SynPopup,\n 'syn-spinner': SynSpinner\n };\n\n private cachedTextLabel: string;\n private readonly localize = new LocalizeController(this);\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n @query('.menu-item') menuItem: HTMLElement;\n\n /** The type of menu item to render. To use `checked`, this value must be set to `checkbox`. */\n @property() type: 'normal' | 'checkbox' = 'normal';\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @property() value = '';\n\n /** Draws the menu item in a loading state. */\n @property({ type: Boolean, reflect: true }) loading = false;\n\n /** Draws the menu item in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n private readonly hasSlotController = new HasSlotController(this, 'submenu');\n private submenuController: SubmenuController = new SubmenuController(this, this.hasSlotController);\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this.handleHostClick);\n this.addEventListener('mouseover', this.handleMouseOver);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.handleHostClick);\n this.removeEventListener('mouseover', this.handleMouseOver);\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange', { bubbles: true, composed: false, cancelable: false });\n }\n }\n\n private handleHostClick = (event: MouseEvent) => {\n // Prevent the click event from being emitted when the button is disabled or loading\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n private handleMouseOver = (event: MouseEvent) => {\n this.focus();\n event.stopPropagation();\n };\n\n @watch('checked')\n handleCheckedChange() {\n // For proper accessibility, users have to use type=\"checkbox\" to use the checked attribute\n if (this.checked && this.type !== 'checkbox') {\n this.checked = false;\n console.error('The checked attribute can only be used on menu items with type=\"checkbox\"', this);\n return;\n }\n\n // Only checkbox types can receive the aria-checked attribute\n if (this.type === 'checkbox') {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-checked');\n }\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('type')\n handleTypeChange() {\n if (this.type === 'checkbox') {\n this.setAttribute('role', 'menuitemcheckbox');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.setAttribute('role', 'menuitem');\n this.removeAttribute('aria-checked');\n }\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n getTextLabel() {\n return getTextContent(this.defaultSlot);\n }\n\n isSubmenu() {\n return this.hasSlotController.test('submenu');\n }\n\n render() {\n const isRtl = this.localize.dir() === 'rtl';\n const isSubmenuExpanded = this.submenuController.isExpanded();\n\n return html`\n <div\n id=\"anchor\"\n part=\"base\"\n class=${classMap({\n 'menu-item': true,\n 'menu-item--rtl': isRtl,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--loading': this.loading,\n 'menu-item--has-submenu': this.isSubmenu(),\n 'menu-item--submenu-expanded': isSubmenuExpanded\n })}\n ?aria-haspopup=\"${this.isSubmenu()}\"\n ?aria-expanded=\"${isSubmenuExpanded ? true : false}\"\n >\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <syn-icon name=\"check\" library=\"system\" aria-hidden=\"true\"></syn-icon>\n </span>\n\n <slot name=\"prefix\" part=\"prefix\" class=\"menu-item__prefix\"></slot>\n\n <slot part=\"label\" class=\"menu-item__label\" @slotchange=${this.handleDefaultSlotChange}></slot>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"menu-item__suffix\"></slot>\n\n <span part=\"submenu-icon\" class=\"menu-item__chevron\">\n <syn-icon name=\"chevron-down\" library=\"system\" aria-hidden=\"true\"></syn-icon>\n </span>\n\n ${this.submenuController.renderSubmenu()}\n ${this.loading ? html` <syn-spinner part=\"spinner\" exportparts=\"base:spinner__base\"></syn-spinner> ` : ''}\n </div>\n `;\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { PropertyValues } from 'lit';\nimport type SynergyElement from './synergy-element.js';\n\ntype Constructor<T = object> = new (...args: any[]) => T;\n\ninterface DecoratorOptions {\n /**\n * If true, will only start watching after the initial updated call\n */\n waitUntilFirstUpdated?: boolean;\n}\n\n/**\n * Class decorator that automatically emits a `syn-attributes-changed` event\n * when at least one of the provided attributes have changed.\n * The event will contain an array of all changed properties, including their\n * - attribute name\n * - old value and\n * - new value.\n *\n * @example\n * ```ts\n * class OriginalClass extends SynergyElement {}\n * export const MyComponent = emitEventForPropertyUpdates(['attribute1', 'attribute2'])(BaseClass);\n *\n * // Create the component, providing initial values for the changed attribute list\n * const myComponent = document.createElement('my-component');\n * myComponent.attribute1 = 'initial value for attribute 1';\n * myComponent.attribute2 = 'initial value for attribute 2';\n *\n * // Create a container and listen for the event\n * const container = document.createElement('div');\n * container.addEventListener('syn-attributes-changed', (event: SynAttributesChangedEvent) => {\n * // We do not want to propagate the event further\n * event.stopImmidiatePropagation();\n *\n * console.log(event.detail);\n * });\n *\n * // Add the component to the container\n * container.appendChild(myComponent);\n *\n * // Change the attributes\n * myComponent.attribute1 = 'value for attribute 1';\n * myComponent.attribute2 = 'value for attribute 2';\n *\n * // Output:\n * // [\n * // {\n * // attribute: 'attribute1',\n * // oldValue: 'initial value for attribute 1',\n * // newValue: 'value for attribute 1'\n * // },\n * // {\n * // attribute: 'attribute2',\n * // oldValue: 'initial value for attribute 2',\n * // newValue: 'value for attribute 2'\n * // }\n * // ]\n * ```\n */\nexport function emitEventForPropertyUpdates(\n watchedProperties: string[],\n options?: DecoratorOptions,\n) {\n const resolvedOptions: Required<DecoratorOptions> = {\n waitUntilFirstUpdated: false,\n ...options,\n };\n\n return <T extends Constructor<SynergyElement>>(Proto: T): T => class extends Proto {\n // True if the event was emitted, false otherwise\n #synPrivateFirstChangeHasBeenEmitted = !resolvedOptions.waitUntilFirstUpdated;\n\n updated(changedProps: PropertyValues) {\n if (!this.#synPrivateFirstChangeHasBeenEmitted) {\n this.#synPrivateFirstChangeHasBeenEmitted = true;\n return;\n }\n\n // Get the list of all changed properties\n const monitoredChangedProperties = Array\n .from(changedProps)\n .filter(([key]) => watchedProperties.includes(key as string));\n\n // If there are no changed properties, return before sending anything\n if (monitoredChangedProperties.length === 0) {\n super.updated(changedProps);\n return;\n }\n\n // Send out the event with all changed properties\n const detail = monitoredChangedProperties.map(([key, value]) => ({\n attribute: key,\n newValue: this[key as keyof this],\n oldValue: value,\n }));\n\n this.emit('syn-attributes-changed', {\n detail,\n });\n super.updated(changedProps);\n }\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,gBAAgB;AAEzB,SAAS,YAAY;AAErB,SAAS,UAAU,aAAa;;;ACyDzB,SAAS,4BACd,mBACA,SACA;AACA,QAAM,kBAA8C;AAAA,IAClD,uBAAuB;AAAA,KACpB;AAGL,SAAO,CAAwC,UAAa;AAvE9D;AAuEiE,8BAAc,MAAM;AAAA,MAApB;AAAA;AAE7D;AAAA,iEAAuC,CAAC,gBAAgB;AAAA;AAAA,MAExD,QAAQ,cAA8B;AACpC,YAAI,CAAC,mBAAK,uCAAsC;AAC9C,6BAAK,sCAAuC;AAC5C;AAAA,QACF;AAGA,cAAM,6BAA6B,MAChC,KAAK,YAAY,EACjB,OAAO,CAAC,CAAC,GAAG,MAAM,kBAAkB,SAAS,GAAa,CAAC;AAG9D,YAAI,2BAA2B,WAAW,GAAG;AAC3C,gBAAM,QAAQ,YAAY;AAC1B;AAAA,QACF;AAGA,cAAM,SAAS,2BAA2B,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,UAC/D,WAAW;AAAA,UACX,UAAU,KAAK,GAAiB;AAAA,UAChC,UAAU;AAAA,QACZ,EAAE;AAEF,aAAK,KAAK,0BAA0B;AAAA,UAClC;AAAA,QACF,CAAC;AACD,cAAM,QAAQ,YAAY;AAAA,MAC5B;AAAA,IACF,GA/BE,sDAF6D;AAAA;AAkCjE;;;AD3DA,IAAqB,cAArB,cAAyC,eAAe;AAAA,EAAxD;AAAA;AASE,SAAiB,WAAW,IAAI,mBAAmB,IAAI;AAM3C,gBAA8B;AAGE,mBAAU;AAG1C,iBAAQ;AAGwB,mBAAU;AAGV,oBAAW;AAEvD,SAAiB,oBAAoB,IAAI,kBAAkB,MAAM,SAAS;AAC1E,SAAQ,oBAAuC,IAAI,kBAAkB,MAAM,KAAK,iBAAiB;AA8BjG,SAAQ,kBAAkB,CAAC,UAAsB;AAE/C,UAAI,KAAK,UAAU;AACjB,cAAM,eAAe;AACrB,cAAM,yBAAyB;AAAA,MACjC;AAAA,IACF;AAEA,SAAQ,kBAAkB,CAAC,UAAsB;AAC/C,WAAK,MAAM;AACX,YAAM,gBAAgB;AAAA,IACxB;AAAA;AAAA,EAvCA,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,iBAAiB,SAAS,KAAK,eAAe;AACnD,SAAK,iBAAiB,aAAa,KAAK,eAAe;AAAA,EACzD;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAqB;AAC3B,SAAK,oBAAoB,SAAS,KAAK,eAAe;AACtD,SAAK,oBAAoB,aAAa,KAAK,eAAe;AAAA,EAC5D;AAAA,EAEQ,0BAA0B;AAChC,UAAM,YAAY,KAAK,aAAa;AAGpC,QAAI,OAAO,KAAK,oBAAoB,aAAa;AAC/C,WAAK,kBAAkB;AACvB;AAAA,IACF;AAGA,QAAI,cAAc,KAAK,iBAAiB;AACtC,WAAK,kBAAkB;AACvB,WAAK,KAAK,cAAc,EAAE,SAAS,MAAM,UAAU,OAAO,YAAY,MAAM,CAAC;AAAA,IAC/E;AAAA,EACF;AAAA,EAgBA,sBAAsB;AAEpB,QAAI,KAAK,WAAW,KAAK,SAAS,YAAY;AAC5C,WAAK,UAAU;AACf,cAAQ,MAAM,6EAA6E,IAAI;AAC/F;AAAA,IACF;AAGA,QAAI,KAAK,SAAS,YAAY;AAC5B,WAAK,aAAa,gBAAgB,KAAK,UAAU,SAAS,OAAO;AAAA,IACnE,OAAO;AACL,WAAK,gBAAgB,cAAc;AAAA,IACrC;AAAA,EACF;AAAA,EAGA,uBAAuB;AACrB,SAAK,aAAa,iBAAiB,KAAK,WAAW,SAAS,OAAO;AAAA,EACrE;AAAA,EAGA,mBAAmB;AACjB,QAAI,KAAK,SAAS,YAAY;AAC5B,WAAK,aAAa,QAAQ,kBAAkB;AAC5C,WAAK,aAAa,gBAAgB,KAAK,UAAU,SAAS,OAAO;AAAA,IACnE,OAAO;AACL,WAAK,aAAa,QAAQ,UAAU;AACpC,WAAK,gBAAgB,cAAc;AAAA,IACrC;AAAA,EACF;AAAA;AAAA,EAGA,eAAe;AACb,WAAO,eAAe,KAAK,WAAW;AAAA,EACxC;AAAA,EAEA,YAAY;AACV,WAAO,KAAK,kBAAkB,KAAK,SAAS;AAAA,EAC9C;AAAA,EAEA,SAAS;AACP,UAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AACtC,UAAM,oBAAoB,KAAK,kBAAkB,WAAW;AAE5D,WAAO;AAAA;AAAA;AAAA;AAAA,gBAIK,SAAS;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,sBAAsB,KAAK;AAAA,MAC3B,uBAAuB,KAAK;AAAA,MAC5B,sBAAsB,KAAK;AAAA,MAC3B,0BAA0B,KAAK,UAAU;AAAA,MACzC,+BAA+B;AAAA,IACjC,CAAC,CAAC;AAAA,0BACgB,KAAK,UAAU,CAAC;AAAA,0BAChB,oBAAoB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEAQQ,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQpF,KAAK,kBAAkB,cAAc,CAAC;AAAA,UACtC,KAAK,UAAU,sFAAsF,EAAE;AAAA;AAAA;AAAA,EAG/G;AACF;AA1JqB,YACZ,SAAyB,CAAC,0BAAiB,wBAAM;AADrC,YAEZ,eAAe;AAAA,EACpB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,eAAe;AACjB;AAK2B;AAAA,EAA1B,MAAM,kBAAkB;AAAA,GAXN,YAWQ;AACN;AAAA,EAApB,MAAM,YAAY;AAAA,GAZA,YAYE;AAGT;AAAA,EAAX,SAAS;AAAA,GAfS,YAeP;AAGgC;AAAA,EAA3C,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAlBvB,YAkByB;AAGhC;AAAA,EAAX,SAAS;AAAA,GArBS,YAqBP;AAGgC;AAAA,EAA3C,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAxBvB,YAwByB;AAGA;AAAA,EAA3C,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA3BvB,YA2ByB;AA+C5C;AAAA,EADC,MAAM,SAAS;AAAA,GAzEG,YA0EnB;AAiBA;AAAA,EADC,MAAM,UAAU;AAAA,GA1FE,YA2FnB;AAKA;AAAA,EADC,MAAM,MAAM;AAAA,GA/FM,YAgGnB;AAhGmB,cAArB;AAAA,EAHC,4BAA4B,CAAC,QAAQ,SAAS,GAAG;AAAA,IAChD,uBAAuB;AAAA,EACzB,CAAC;AAAA,GACoB;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/menu-item/submenu-controller.ts"],
4
- "sourcesContent": ["/* eslint-disable */\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js';\nimport { type HasSlotController } from '../../internal/slot.js';\nimport { html } from 'lit';\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type SynMenuItem from './menu-item.js';\nimport type SynPopup from '../popup/popup.js';\n\n/** A reactive controller to manage the registration of event listeners for submenus. */\nexport class SubmenuController implements ReactiveController {\n private host: ReactiveControllerHost & SynMenuItem;\n private popupRef: Ref<SynPopup> = createRef();\n private enableSubmenuTimer = -1;\n private isConnected = false;\n private isPopupConnected = false;\n private skidding = 0;\n private readonly hasSlotController: HasSlotController;\n private readonly submenuOpenDelay = 100;\n\n constructor(host: ReactiveControllerHost & SynMenuItem, hasSlotController: HasSlotController) {\n (this.host = host).addController(this);\n this.hasSlotController = hasSlotController;\n }\n\n hostConnected() {\n if (this.hasSlotController.test('submenu') && !this.host.disabled) {\n this.addListeners();\n }\n }\n\n hostDisconnected() {\n this.removeListeners();\n }\n\n hostUpdated() {\n if (this.hasSlotController.test('submenu') && !this.host.disabled) {\n this.addListeners();\n this.updateSkidding();\n } else {\n this.removeListeners();\n }\n }\n\n private addListeners() {\n if (!this.isConnected) {\n this.host.addEventListener('mousemove', this.handleMouseMove);\n this.host.addEventListener('mouseover', this.handleMouseOver);\n this.host.addEventListener('keydown', this.handleKeyDown);\n this.host.addEventListener('click', this.handleClick);\n this.host.addEventListener('focusout', this.handleFocusOut);\n this.isConnected = true;\n }\n\n // The popup does not seem to get wired when the host is\n // connected, so manage its listeners separately.\n if (!this.isPopupConnected) {\n if (this.popupRef.value) {\n this.popupRef.value.addEventListener('mouseover', this.handlePopupMouseover);\n this.popupRef.value.addEventListener('syn-reposition', this.handlePopupReposition);\n this.isPopupConnected = true;\n }\n }\n }\n\n private removeListeners() {\n if (this.isConnected) {\n this.host.removeEventListener('mousemove', this.handleMouseMove);\n this.host.removeEventListener('mouseover', this.handleMouseOver);\n this.host.removeEventListener('keydown', this.handleKeyDown);\n this.host.removeEventListener('click', this.handleClick);\n this.host.removeEventListener('focusout', this.handleFocusOut);\n this.isConnected = false;\n }\n if (this.isPopupConnected) {\n if (this.popupRef.value) {\n this.popupRef.value.removeEventListener('mouseover', this.handlePopupMouseover);\n this.popupRef.value.removeEventListener('syn-reposition', this.handlePopupReposition);\n this.isPopupConnected = false;\n }\n }\n }\n\n // Set the safe triangle cursor position\n private handleMouseMove = (event: MouseEvent) => {\n this.host.style.setProperty('--safe-triangle-cursor-x', `${event.clientX}px`);\n this.host.style.setProperty('--safe-triangle-cursor-y', `${event.clientY}px`);\n };\n\n private handleMouseOver = () => {\n if (this.hasSlotController.test('submenu')) {\n this.enableSubmenu();\n }\n };\n\n private handleSubmenuEntry(event: KeyboardEvent) {\n // Pass focus to the first menu-item in the submenu.\n const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector(\"slot[name='submenu']\");\n\n // Missing slot\n if (!submenuSlot) {\n console.error('Cannot activate a submenu if no corresponding menuitem can be found.', this);\n return;\n }\n\n // Menus\n let menuItems: NodeListOf<Element> | null = null;\n for (const elt of submenuSlot.assignedElements()) {\n menuItems = elt.querySelectorAll(\"syn-menu-item, [role^='menuitem']\");\n if (menuItems.length !== 0) {\n break;\n }\n }\n\n if (!menuItems || menuItems.length === 0) {\n return;\n }\n\n menuItems[0].setAttribute('tabindex', '0');\n for (let i = 1; i !== menuItems.length; ++i) {\n menuItems[i].setAttribute('tabindex', '-1');\n }\n\n // Open the submenu (if not open), and set focus to first menuitem.\n if (this.popupRef.value) {\n event.preventDefault();\n event.stopPropagation();\n if (this.popupRef.value.active) {\n if (menuItems[0] instanceof HTMLElement) {\n menuItems[0].focus();\n }\n } else {\n this.enableSubmenu(false);\n this.host.updateComplete.then(() => {\n if (menuItems[0] instanceof HTMLElement) {\n menuItems[0].focus();\n }\n });\n this.host.requestUpdate();\n }\n }\n }\n\n // Focus on the first menu-item of a submenu.\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.disableSubmenu();\n break;\n case 'ArrowLeft':\n // Either focus is currently on the host element or a child\n if (event.target !== this.host) {\n event.preventDefault();\n event.stopPropagation();\n this.host.focus();\n this.disableSubmenu();\n }\n break;\n case 'ArrowRight':\n case 'Enter':\n case ' ':\n this.handleSubmenuEntry(event);\n break;\n default:\n break;\n }\n };\n\n private handleClick = (event: MouseEvent) => {\n // Clicking on the item which heads the menu does nothing, otherwise hide submenu and propagate\n if (event.target === this.host) {\n event.preventDefault();\n event.stopPropagation();\n } else if (\n event.target instanceof Element &&\n (event.target.tagName === 'syn-menu-item' || event.target.role?.startsWith('menuitem'))\n ) {\n this.disableSubmenu();\n }\n };\n\n // Close this submenu on focus outside of the parent or any descendants.\n private handleFocusOut = (event: FocusEvent) => {\n if (event.relatedTarget && event.relatedTarget instanceof Element && this.host.contains(event.relatedTarget)) {\n return;\n }\n this.disableSubmenu();\n };\n\n // Prevent the parent menu-item from getting focus on mouse movement on the submenu\n private handlePopupMouseover = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n // Set the safe triangle values for the submenu when the position changes\n private handlePopupReposition = () => {\n const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector(\"slot[name='submenu']\");\n const menu = submenuSlot?.assignedElements({ flatten: true }).filter(el => el.localName === 'syn-menu')[0];\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n if (!menu) {\n return;\n }\n\n const { left, top, width, height } = menu.getBoundingClientRect();\n\n this.host.style.setProperty('--safe-triangle-submenu-start-x', `${isRtl ? left + width : left}px`);\n this.host.style.setProperty('--safe-triangle-submenu-start-y', `${top}px`);\n this.host.style.setProperty('--safe-triangle-submenu-end-x', `${isRtl ? left + width : left}px`);\n this.host.style.setProperty('--safe-triangle-submenu-end-y', `${top + height}px`);\n };\n\n private setSubmenuState(state: boolean) {\n if (this.popupRef.value) {\n if (this.popupRef.value.active !== state) {\n this.popupRef.value.active = state;\n this.host.requestUpdate();\n }\n }\n }\n\n // Shows the submenu. Supports disabling the opening delay, e.g. for keyboard events that want to set the focus to the\n // newly opened menu.\n private enableSubmenu(delay = true) {\n if (delay) {\n window.clearTimeout(this.enableSubmenuTimer);\n this.enableSubmenuTimer = window.setTimeout(() => {\n this.setSubmenuState(true);\n }, this.submenuOpenDelay);\n } else {\n this.setSubmenuState(true);\n }\n }\n\n private disableSubmenu() {\n window.clearTimeout(this.enableSubmenuTimer);\n this.setSubmenuState(false);\n }\n\n // Calculate the space the top of a menu takes-up, for aligning the popup menu-item with the activating element.\n private updateSkidding(): void {\n // .computedStyleMap() not always available.\n if (!this.host.parentElement?.computedStyleMap) {\n return;\n }\n const styleMap: StylePropertyMapReadOnly = this.host.parentElement.computedStyleMap();\n const attrs: string[] = ['padding-top', 'border-top-width', 'margin-top'];\n\n const skidding = attrs.reduce((accumulator, attr) => {\n const styleValue: CSSStyleValue = styleMap.get(attr) ?? new CSSUnitValue(0, 'px');\n const unitValue = styleValue instanceof CSSUnitValue ? styleValue : new CSSUnitValue(0, 'px');\n const pxValue = unitValue.to('px');\n return accumulator - pxValue.value;\n }, 0);\n\n this.skidding = skidding;\n }\n\n isExpanded(): boolean {\n return this.popupRef.value ? this.popupRef.value.active : false;\n }\n\n renderSubmenu() {\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n\n // Always render the slot, but conditionally render the outer <syn-popup>\n if (!this.isConnected) {\n return html` <slot name=\"submenu\" hidden></slot> `;\n }\n\n return html`\n <syn-popup\n ${ref(this.popupRef)}\n placement=${isRtl ? 'left-start' : 'right-start'}\n anchor=\"anchor\"\n flip\n flip-fallback-strategy=\"best-fit\"\n skidding=\"${this.skidding}\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n <slot name=\"submenu\"></slot>\n </syn-popup>\n `;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["_a"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/menu/menu.component.ts"],
4
- "sourcesContent": ["/* eslint-disable */\nimport { html } from 'lit';\nimport { query } from 'lit/decorators.js';\nimport { state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport type { SynAttributesChangedEvent } from '../../events/syn-attributes-changed.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './menu.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynMenuItem from '../menu-item/menu-item.component.js';\n\nexport interface MenuSelectEventDetail {\n item: SynMenuItem;\n}\n\n/**\n * @summary Menus provide a list of options for the user to choose from.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-menu--docs\n * @status stable\n * @since 1.12.0\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event {{ item: SynMenuItem }} syn-select - Emitted when a menu item is selected.\n */\nexport default class SynMenu extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles];\n\n @query('slot') defaultSlot: HTMLSlotElement;\n @state() hasMenuItemsWithCheckmarks = false;\n\n private handleUpdateCheckmarks(items: SynMenuItem[]) {\n // #368: Treat a menu as having checkmarks if it has any checkboxes or items with loading states\n // The loading indicator has to be checked as well, as it's specially placed over the check mark\n this.hasMenuItemsWithCheckmarks = items.some(item => item.type === 'checkbox' || item.loading); \n }\n\n private updateCheckMarksByChildPropChange = (e: SynAttributesChangedEvent) => {\n e.stopImmediatePropagation();\n this.handleUpdateCheckmarks(this.getAllItems());\n };\n \n disconnectedCallback() {\n this.removeEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n this.addEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);\n }\n\n private handleClick(event: MouseEvent) {\n const menuItemTypes = ['menuitem', 'menuitemcheckbox'];\n\n const composedPath = event.composedPath();\n const target = composedPath.find((el: Element) => menuItemTypes.includes(el?.getAttribute?.('role') || ''));\n\n if (!target) return;\n\n const closestMenu = composedPath.find((el: Element) => el?.getAttribute?.('role') === 'menu');\n const clickHasSubmenu = closestMenu !== this;\n\n // Make sure we're the menu thats supposed to be handling the click event.\n if (clickHasSubmenu) return;\n\n // This isn't true. But we use it for TypeScript checks below.\n const item = target as SynMenuItem;\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n this.emit('syn-select', { detail: { item } });\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter or space\n if (event.key === 'Enter' || event.key === ' ') {\n const item = this.getCurrentItem();\n event.preventDefault();\n event.stopPropagation();\n\n // Simulate a click to support @click handlers on menu items that also work with the keyboard\n item?.click();\n }\n\n // Move the selection when pressing down or up\n else if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.getAllItems();\n const activeItem = this.getCurrentItem();\n let index = activeItem ? items.indexOf(activeItem) : 0;\n\n if (items.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = items.length - 1;\n }\n\n if (index < 0) {\n index = items.length - 1;\n }\n if (index > items.length - 1) {\n index = 0;\n }\n\n this.setCurrentItem(items[index]);\n items[index].focus();\n }\n }\n }\n\n private handleMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n if (this.isMenuItem(target)) {\n this.setCurrentItem(target as SynMenuItem);\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllItems();\n this.handleUpdateCheckmarks(items);\n\n // Reset the roving tab index when the slotted items change\n if (items.length > 0) {\n this.setCurrentItem(items[0]);\n }\n }\n\n private isMenuItem(item: HTMLElement) {\n return (\n item.tagName.toLowerCase() === 'syn-menu-item' ||\n ['menuitem', 'menuitemcheckbox', 'menuitemradio'].includes(item.getAttribute('role') ?? '')\n );\n }\n\n /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */\n getAllItems() {\n return [...this.defaultSlot.assignedElements({ flatten: true })].filter((el: HTMLElement) => {\n if (el.inert || !this.isMenuItem(el)) {\n return false;\n }\n return true;\n }) as SynMenuItem[];\n }\n\n /**\n * @internal Gets the current menu item, which is the menu item that has `tabindex=\"0\"` within the roving tab index.\n * The menu item may or may not have focus, but for keyboard interaction purposes it's considered the \"active\" item.\n */\n getCurrentItem() {\n return this.getAllItems().find(i => i.getAttribute('tabindex') === '0');\n }\n\n /**\n * @internal Sets the current menu item to the specified element. This sets `tabindex=\"0\"` on the target element and\n * `tabindex=\"-1\"` to all other items. This method must be called prior to setting focus on a menu item.\n */\n setCurrentItem(item: SynMenuItem) {\n const items = this.getAllItems();\n\n // Update tab indexes\n items.forEach(i => {\n i.setAttribute('tabindex', i === item ? '0' : '-1');\n });\n }\n\n render() {\n return html`\n <slot\n class=${classMap({\n 'menu--no-checkmarks': !this.hasMenuItemsWithCheckmarks,\n })}\n @slotchange=${this.handleSlotChange}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n ></slot>\n `;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }