@synergy-design-system/components 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/dist/chunks/chunk.236RSW67.js +29 -0
  2. package/dist/chunks/chunk.236RSW67.js.map +7 -0
  3. package/dist/chunks/chunk.277APOW3.js +277 -0
  4. package/dist/chunks/chunk.277APOW3.js.map +7 -0
  5. package/dist/chunks/chunk.2DWAWNCX.js +12 -0
  6. package/dist/chunks/chunk.2DWAWNCX.js.map +7 -0
  7. package/dist/chunks/{chunk.QNDC5KWA.js → chunk.2GFK6XTO.js} +17 -13
  8. package/dist/chunks/{chunk.DCWG25RX.js → chunk.2H5VZMM6.js} +6 -6
  9. package/dist/chunks/{chunk.5BDQUWIH.js → chunk.2RCFWUMX.js} +10 -10
  10. package/dist/chunks/{chunk.SNLPFVBC.js → chunk.35V3TAOT.js} +11 -2
  11. package/dist/chunks/{chunk.SNLPFVBC.js.map → chunk.35V3TAOT.js.map} +2 -2
  12. package/dist/chunks/{chunk.HPWFMICA.js → chunk.3BYNCSYI.js} +10 -8
  13. package/dist/chunks/chunk.3BYNCSYI.js.map +7 -0
  14. package/dist/chunks/{chunk.SN6A7VBJ.js → chunk.3TAWE2BI.js} +2 -2
  15. package/dist/chunks/{chunk.SOVF26GR.js → chunk.3TEIFNRP.js} +9 -9
  16. package/dist/chunks/{chunk.CZISOWFR.js → chunk.4WDBHKEV.js} +9 -12
  17. package/dist/chunks/{chunk.CZISOWFR.js.map → chunk.4WDBHKEV.js.map} +1 -1
  18. package/dist/chunks/{chunk.GCVGZHJK.js → chunk.4ZABXKYI.js} +2 -2
  19. package/dist/chunks/{chunk.RX7A4EQ2.js → chunk.5732DMBC.js} +9 -1
  20. package/dist/chunks/chunk.5732DMBC.js.map +7 -0
  21. package/dist/chunks/{chunk.POXDBLOS.js → chunk.5WTYMY7E.js} +6 -6
  22. package/dist/chunks/{chunk.3442R447.js → chunk.6I4QZHQ6.js} +4 -4
  23. package/dist/chunks/{chunk.3442R447.js.map → chunk.6I4QZHQ6.js.map} +2 -2
  24. package/dist/chunks/{chunk.26PVORV4.js → chunk.6OCJR2YI.js} +5 -5
  25. package/dist/chunks/{chunk.6UAOF7WN.js → chunk.72HIKLQG.js} +24 -3
  26. package/dist/chunks/chunk.72HIKLQG.js.map +7 -0
  27. package/dist/chunks/{chunk.REXNHEPD.js → chunk.72KEPLD4.js} +2 -2
  28. package/dist/chunks/{chunk.QJMO7V5R.js → chunk.74IOULXM.js} +2 -2
  29. package/dist/chunks/{chunk.7TOZAZTA.js → chunk.7B5QDYTK.js} +11 -15
  30. package/dist/chunks/chunk.7B5QDYTK.js.map +7 -0
  31. package/dist/chunks/{chunk.XY7PAA7K.js → chunk.7GVODRHO.js} +2 -2
  32. package/dist/chunks/{chunk.BZ7DXEKT.js → chunk.7I5Q3H5W.js} +2 -2
  33. package/dist/chunks/{chunk.2LACXU5F.js → chunk.7J54DP5U.js} +2 -2
  34. package/dist/chunks/{chunk.APPDW65F.js → chunk.7YRTMCIL.js} +21 -21
  35. package/dist/chunks/chunk.7YRTMCIL.js.map +7 -0
  36. package/dist/chunks/{chunk.MLOZ4D3V.js → chunk.A3OYJILJ.js} +2 -2
  37. package/dist/chunks/{chunk.VCCPDP5S.js → chunk.A7S3RARM.js} +2 -2
  38. package/dist/chunks/{chunk.QBVLTYU7.js → chunk.BBNQVEPD.js} +3 -4
  39. package/dist/chunks/{chunk.QBVLTYU7.js.map → chunk.BBNQVEPD.js.map} +1 -1
  40. package/dist/chunks/{chunk.U7YAV7S3.js → chunk.BBUFEDXF.js} +5 -5
  41. package/dist/chunks/{chunk.U7YAV7S3.js.map → chunk.BBUFEDXF.js.map} +1 -1
  42. package/dist/chunks/{chunk.4VJLNO6Y.js → chunk.BHYMSPYR.js} +5 -5
  43. package/dist/chunks/{chunk.VI6PYB5C.js → chunk.CHG7CKU3.js} +6 -6
  44. package/dist/chunks/{chunk.IOTJRIT5.js → chunk.CSEYI4PC.js} +2 -2
  45. package/dist/chunks/{chunk.A45QGUNM.js → chunk.D23EOBAA.js} +2 -2
  46. package/dist/chunks/{chunk.7INB3LU4.js → chunk.D5J4VTCV.js} +2 -2
  47. package/dist/chunks/{chunk.OP4WTQ2R.js → chunk.DGSAPH64.js} +8 -8
  48. package/dist/chunks/{chunk.CG7HK3HS.js → chunk.DKGNY4YS.js} +12 -12
  49. package/dist/chunks/chunk.DKGNY4YS.js.map +7 -0
  50. package/dist/chunks/{chunk.W2474HMX.js → chunk.DRLBTO2U.js} +4 -6
  51. package/dist/chunks/{chunk.W2474HMX.js.map → chunk.DRLBTO2U.js.map} +1 -1
  52. package/dist/chunks/{chunk.HLRZHIBP.js → chunk.DVF5JNGN.js} +2 -2
  53. package/dist/chunks/{chunk.SIADSRVP.js → chunk.DZSCTRUT.js} +2 -2
  54. package/dist/chunks/{chunk.XBHV2RZS.js → chunk.ECTOUABW.js} +7 -7
  55. package/dist/chunks/{chunk.ZTEMBLJH.js → chunk.ESQAXAFE.js} +2 -2
  56. package/dist/chunks/{chunk.ZTEMBLJH.js.map → chunk.ESQAXAFE.js.map} +1 -1
  57. package/dist/chunks/{chunk.MO5THLW3.js → chunk.EUQCLKVZ.js} +5 -5
  58. package/dist/chunks/{chunk.MO5THLW3.js.map → chunk.EUQCLKVZ.js.map} +1 -1
  59. package/dist/chunks/{chunk.HVJGBGHT.js → chunk.EZRPX4D7.js} +4 -4
  60. package/dist/chunks/{chunk.EG23UW3V.js → chunk.FK6MAJIJ.js} +4 -4
  61. package/dist/chunks/{chunk.HLE65RI4.js → chunk.FKKJBKYL.js} +2 -4
  62. package/dist/chunks/{chunk.HLE65RI4.js.map → chunk.FKKJBKYL.js.map} +2 -2
  63. package/dist/chunks/{chunk.RSPZU72C.js → chunk.FP4J6SI7.js} +3 -3
  64. package/dist/chunks/{chunk.TCGQ6I55.js → chunk.FPIGVZSR.js} +4 -4
  65. package/dist/chunks/{chunk.MLP2VIC7.js → chunk.FSWTBNSI.js} +6 -1
  66. package/dist/chunks/{chunk.MLP2VIC7.js.map → chunk.FSWTBNSI.js.map} +2 -2
  67. package/dist/chunks/{chunk.JSPLWE2A.js → chunk.GHGGBS4N.js} +6 -7
  68. package/dist/chunks/{chunk.JSPLWE2A.js.map → chunk.GHGGBS4N.js.map} +2 -2
  69. package/dist/chunks/{chunk.445GTYI7.js → chunk.GWQWHDLF.js} +3 -3
  70. package/dist/chunks/{chunk.MSUX23ZJ.js → chunk.HQ6QUSK7.js} +2 -2
  71. package/dist/chunks/{chunk.R6VT7GM5.js → chunk.HTRLN6MZ.js} +2 -2
  72. package/dist/chunks/{chunk.P7GNMVZ4.js → chunk.HY4Y3IF2.js} +4 -4
  73. package/dist/chunks/chunk.I6YARDHH.js +39 -0
  74. package/dist/chunks/chunk.I6YARDHH.js.map +7 -0
  75. package/dist/chunks/{chunk.36WNAWGH.js → chunk.IGLR5WAI.js} +2 -2
  76. package/dist/chunks/{chunk.OZ7PQTHB.js → chunk.IL3FC72M.js} +11 -11
  77. package/dist/chunks/{chunk.ML6NOYHV.js → chunk.IMXRJ3YT.js} +2 -2
  78. package/dist/chunks/{chunk.RUUKH7KZ.js → chunk.J6AAV3AV.js} +2 -2
  79. package/dist/chunks/chunk.JGJFNG7J.js +636 -0
  80. package/dist/chunks/chunk.JGJFNG7J.js.map +7 -0
  81. package/dist/chunks/{chunk.U2OMGNNZ.js → chunk.JNP34M27.js} +7 -6
  82. package/dist/chunks/chunk.JNP34M27.js.map +7 -0
  83. package/dist/chunks/{chunk.EPEJDXFO.js → chunk.JS5QB2ZL.js} +8 -8
  84. package/dist/chunks/{chunk.BWVISANJ.js → chunk.JTYYYMG2.js} +9 -5
  85. package/dist/chunks/{chunk.BWVISANJ.js.map → chunk.JTYYYMG2.js.map} +2 -2
  86. package/dist/chunks/{chunk.ZHDP4GU5.js → chunk.JWDKROBJ.js} +2 -2
  87. package/dist/chunks/{chunk.TVIXZRR6.js → chunk.KSPAGGI2.js} +3 -3
  88. package/dist/chunks/{chunk.RQ6PQ76D.js → chunk.LBU676EZ.js} +4 -4
  89. package/dist/chunks/{chunk.TD2KXBBJ.js → chunk.LO6TVTD5.js} +2 -2
  90. package/dist/chunks/{chunk.C66PDYUI.js → chunk.LXRYPCRA.js} +2 -2
  91. package/dist/chunks/chunk.LYDJ5XK6.js +49 -0
  92. package/dist/chunks/chunk.LYDJ5XK6.js.map +7 -0
  93. package/dist/chunks/{chunk.MAWKXH6T.js → chunk.M322AHXQ.js} +5 -5
  94. package/dist/chunks/{chunk.4VP6SOMT.js → chunk.MJIGVGWT.js} +2 -2
  95. package/dist/chunks/{chunk.UKK7UB66.js → chunk.MJODVYOU.js} +2 -2
  96. package/dist/chunks/{chunk.AUQVJZEW.js → chunk.NRKWWLOJ.js} +2 -2
  97. package/dist/chunks/{chunk.3YMWLLPP.js → chunk.O644HRW3.js} +3 -1
  98. package/dist/chunks/{chunk.3YMWLLPP.js.map → chunk.O644HRW3.js.map} +2 -2
  99. package/dist/chunks/{chunk.LQZJ6SLT.js → chunk.OGY5SV3K.js} +2 -2
  100. package/dist/chunks/{chunk.Y4PC4NYJ.js → chunk.ORSZM73W.js} +2 -2
  101. package/dist/chunks/{chunk.VNOGO2PS.js → chunk.PCNJFBUE.js} +2 -2
  102. package/dist/chunks/{chunk.MQH2OOTN.js → chunk.PLD6HW4G.js} +2 -2
  103. package/dist/chunks/{chunk.OAD4GL57.js → chunk.QTUPZKVS.js} +2 -2
  104. package/dist/chunks/{chunk.BCM6GF47.js → chunk.R2WZYDE2.js} +2 -2
  105. package/dist/chunks/{chunk.JD6HMTL2.js → chunk.R67XSTNW.js} +9 -9
  106. package/dist/chunks/{chunk.HRU52NH5.js → chunk.RFJ2QHB5.js} +2 -2
  107. package/dist/chunks/{chunk.GZQPS6JH.js → chunk.RKZLWXOJ.js} +4 -4
  108. package/dist/chunks/{chunk.PGDHCGHK.js → chunk.RQA3KF7H.js} +12 -6
  109. package/dist/chunks/chunk.RQA3KF7H.js.map +7 -0
  110. package/dist/chunks/{chunk.VREBZRBU.js → chunk.TLNHPNZP.js} +2 -2
  111. package/dist/chunks/{chunk.THRSQDCW.js → chunk.TNX42WV4.js} +2 -2
  112. package/dist/chunks/chunk.TOMRCFI4.js +12 -0
  113. package/dist/chunks/chunk.TOMRCFI4.js.map +7 -0
  114. package/dist/chunks/{chunk.COI5VNKC.js → chunk.TQCA6Q6L.js} +4 -4
  115. package/dist/chunks/{chunk.QVULMTSN.js → chunk.TWPYJVSU.js} +8 -8
  116. package/dist/chunks/{chunk.M4PJZ2KX.js → chunk.TYV5CM4I.js} +56 -28
  117. package/dist/chunks/chunk.TYV5CM4I.js.map +7 -0
  118. package/dist/chunks/{chunk.A3TUOOXV.js → chunk.UANQP7UZ.js} +2 -2
  119. package/dist/chunks/{chunk.MZO2W4AG.js → chunk.UXGBQPTV.js} +2 -2
  120. package/dist/chunks/{chunk.BCAT6PJO.js → chunk.V5VKAR7I.js} +2 -2
  121. package/dist/chunks/{chunk.FAAETEJ2.js → chunk.VGEA67UG.js} +7 -4
  122. package/dist/chunks/{chunk.FAAETEJ2.js.map → chunk.VGEA67UG.js.map} +2 -2
  123. package/dist/chunks/{chunk.2JGMDXJX.js → chunk.VQNVZMWW.js} +8 -10
  124. package/dist/chunks/{chunk.2JGMDXJX.js.map → chunk.VQNVZMWW.js.map} +1 -1
  125. package/dist/chunks/{chunk.KPEDDAR4.js → chunk.VQWI7RF7.js} +18 -18
  126. package/dist/chunks/chunk.VQWI7RF7.js.map +7 -0
  127. package/dist/chunks/{chunk.AA7ETQ6Z.js → chunk.W4DRGBOX.js} +10 -10
  128. package/dist/chunks/{chunk.6ZMQFRAK.js → chunk.WJG5I5EW.js} +2 -2
  129. package/dist/chunks/{chunk.CCBYOE35.js → chunk.X5ZOIEXZ.js} +2 -2
  130. package/dist/chunks/{chunk.PMC3VAD6.js → chunk.XDM6VD32.js} +6 -10
  131. package/dist/chunks/{chunk.PMC3VAD6.js.map → chunk.XDM6VD32.js.map} +1 -1
  132. package/dist/chunks/{chunk.OUSXEKQG.js → chunk.XNGZHSRO.js} +8 -12
  133. package/dist/chunks/{chunk.OUSXEKQG.js.map → chunk.XNGZHSRO.js.map} +1 -1
  134. package/dist/chunks/{chunk.6N5IAYT2.js → chunk.XOSZV7Y4.js} +2 -2
  135. package/dist/chunks/{chunk.6EHHOHBG.js → chunk.Y5BGNU6P.js} +2 -2
  136. package/dist/chunks/{chunk.S2UI5DQ6.js → chunk.YARCDSSP.js} +2 -2
  137. package/dist/chunks/{chunk.QVNMCS3Y.js → chunk.YGBYTIEC.js} +2 -2
  138. package/dist/chunks/{chunk.WEUMPGAL.js → chunk.YMC6ML2J.js} +2 -2
  139. package/dist/chunks/{chunk.ZXLXQMJJ.js → chunk.YVPJSA6G.js} +4 -4
  140. package/dist/chunks/{chunk.4U4U4WYP.js → chunk.YXKAU762.js} +2 -2
  141. package/dist/chunks/{chunk.GOXWNSOG.js → chunk.Z2AJQ6S4.js} +4 -5
  142. package/dist/chunks/{chunk.GOXWNSOG.js.map → chunk.Z2AJQ6S4.js.map} +2 -2
  143. package/dist/chunks/{chunk.XD3FB2XT.js → chunk.ZIJ6OGAT.js} +8 -8
  144. package/dist/chunks/{chunk.T4MHUMBJ.js → chunk.ZRQDODBI.js} +9 -9
  145. package/dist/chunks/{chunk.OE4RXQU2.js → chunk.ZW75HBAK.js} +3 -3
  146. package/dist/chunks/chunk.ZW75HBAK.js.map +7 -0
  147. package/dist/chunks/{chunk.LAKJ5MK2.js → chunk.ZWKWTOIU.js} +3 -3
  148. package/dist/components/accordion/accordion.component.js +4 -4
  149. package/dist/components/accordion/accordion.js +5 -5
  150. package/dist/components/accordion/accordion.styles.js +1 -1
  151. package/dist/components/alert/alert.component.js +10 -10
  152. package/dist/components/alert/alert.custom.styles.js +1 -1
  153. package/dist/components/alert/alert.js +11 -11
  154. package/dist/components/alert/alert.styles.js +1 -1
  155. package/dist/components/badge/badge.component.js +5 -5
  156. package/dist/components/badge/badge.custom.styles.js +1 -1
  157. package/dist/components/badge/badge.js +6 -6
  158. package/dist/components/badge/badge.styles.js +1 -1
  159. package/dist/components/breadcrumb/breadcrumb.component.js +7 -7
  160. package/dist/components/breadcrumb/breadcrumb.custom.styles.js +1 -1
  161. package/dist/components/breadcrumb/breadcrumb.js +8 -8
  162. package/dist/components/breadcrumb/breadcrumb.styles.js +1 -1
  163. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +4 -4
  164. package/dist/components/breadcrumb-item/breadcrumb-item.custom.styles.js +1 -1
  165. package/dist/components/breadcrumb-item/breadcrumb-item.js +5 -5
  166. package/dist/components/breadcrumb-item/breadcrumb-item.styles.js +1 -1
  167. package/dist/components/button/button.component.js +9 -9
  168. package/dist/components/button/button.custom.styles.js +1 -1
  169. package/dist/components/button/button.js +10 -10
  170. package/dist/components/button/button.styles.js +1 -1
  171. package/dist/components/button-group/button-group.component.js +3 -3
  172. package/dist/components/button-group/button-group.js +4 -4
  173. package/dist/components/button-group/button-group.styles.js +1 -1
  174. package/dist/components/card/card.component.js +3 -3
  175. package/dist/components/card/card.custom.styles.js +1 -1
  176. package/dist/components/card/card.js +4 -4
  177. package/dist/components/card/card.styles.js +1 -1
  178. package/dist/components/checkbox/checkbox.component.js +7 -7
  179. package/dist/components/checkbox/checkbox.custom.styles.js +1 -1
  180. package/dist/components/checkbox/checkbox.js +8 -8
  181. package/dist/components/checkbox/checkbox.styles.js +1 -1
  182. package/dist/components/details/details.component.js +9 -9
  183. package/dist/components/details/details.custom.styles.js +1 -1
  184. package/dist/components/details/details.js +10 -10
  185. package/dist/components/details/details.styles.js +1 -1
  186. package/dist/components/dialog/dialog.component.js +12 -12
  187. package/dist/components/dialog/dialog.custom.styles.js +1 -1
  188. package/dist/components/dialog/dialog.js +13 -13
  189. package/dist/components/dialog/dialog.styles.js +1 -1
  190. package/dist/components/divider/divider.component.js +4 -4
  191. package/dist/components/divider/divider.custom.styles.js +1 -1
  192. package/dist/components/divider/divider.js +5 -5
  193. package/dist/components/divider/divider.styles.js +1 -1
  194. package/dist/components/drawer/drawer.component.js +12 -12
  195. package/dist/components/drawer/drawer.custom.styles.js +1 -1
  196. package/dist/components/drawer/drawer.js +13 -13
  197. package/dist/components/drawer/drawer.styles.js +1 -1
  198. package/dist/components/dropdown/dropdown.component.d.ts +2 -1
  199. package/dist/components/dropdown/dropdown.component.js +9 -9
  200. package/dist/components/dropdown/dropdown.custom.styles.js +1 -1
  201. package/dist/components/dropdown/dropdown.js +10 -10
  202. package/dist/components/dropdown/dropdown.styles.js +1 -1
  203. package/dist/components/file/file.component.js +13 -13
  204. package/dist/components/file/file.js +14 -14
  205. package/dist/components/file/file.styles.js +1 -1
  206. package/dist/components/header/header.component.js +8 -8
  207. package/dist/components/header/header.js +9 -9
  208. package/dist/components/header/header.styles.js +1 -1
  209. package/dist/components/icon/icon.component.js +4 -4
  210. package/dist/components/icon/icon.custom.styles.js +1 -1
  211. package/dist/components/icon/icon.js +5 -5
  212. package/dist/components/icon/icon.styles.js +1 -1
  213. package/dist/components/icon/library.default.js +1 -1
  214. package/dist/components/icon/library.js +1 -1
  215. package/dist/components/icon/library.system.js +1 -1
  216. package/dist/components/icon-button/icon-button.component.js +5 -5
  217. package/dist/components/icon-button/icon-button.custom.styles.js +1 -1
  218. package/dist/components/icon-button/icon-button.js +6 -6
  219. package/dist/components/icon-button/icon-button.styles.js +1 -1
  220. package/dist/components/input/input.component.js +10 -10
  221. package/dist/components/input/input.custom.styles.js +1 -1
  222. package/dist/components/input/input.js +11 -11
  223. package/dist/components/input/input.styles.js +1 -1
  224. package/dist/components/menu/menu.component.js +3 -3
  225. package/dist/components/menu/menu.custom.styles.js +1 -1
  226. package/dist/components/menu/menu.js +4 -4
  227. package/dist/components/menu/menu.styles.js +1 -1
  228. package/dist/components/menu-item/menu-item.component.d.ts +0 -1
  229. package/dist/components/menu-item/menu-item.component.js +11 -11
  230. package/dist/components/menu-item/menu-item.custom.styles.js +1 -1
  231. package/dist/components/menu-item/menu-item.js +12 -12
  232. package/dist/components/menu-item/menu-item.styles.js +2 -2
  233. package/dist/components/menu-item/submenu-controller.d.ts +1 -3
  234. package/dist/components/menu-item/submenu-controller.js +2 -4
  235. package/dist/components/menu-label/menu-label.component.js +5 -5
  236. package/dist/components/menu-label/menu-label.custom.styles.js +1 -1
  237. package/dist/components/menu-label/menu-label.js +6 -6
  238. package/dist/components/menu-label/menu-label.styles.js +1 -1
  239. package/dist/components/nav-item/nav-item.component.js +6 -6
  240. package/dist/components/nav-item/nav-item.js +7 -7
  241. package/dist/components/nav-item/nav-item.styles.js +2 -2
  242. package/dist/components/optgroup/optgroup.component.js +5 -5
  243. package/dist/components/optgroup/optgroup.js +6 -6
  244. package/dist/components/optgroup/optgroup.styles.js +1 -1
  245. package/dist/components/option/option.component.js +7 -7
  246. package/dist/components/option/option.custom.styles.js +1 -1
  247. package/dist/components/option/option.js +8 -8
  248. package/dist/components/option/option.styles.js +1 -1
  249. package/dist/components/popup/popup.component.js +3 -3
  250. package/dist/components/popup/popup.js +4 -4
  251. package/dist/components/popup/popup.styles.js +1 -1
  252. package/dist/components/prio-nav/prio-nav.component.js +15 -15
  253. package/dist/components/prio-nav/prio-nav.js +16 -16
  254. package/dist/components/prio-nav/prio-nav.styles.js +1 -1
  255. package/dist/components/prio-nav/utils.js +1 -1
  256. package/dist/components/progress-bar/progress-bar.component.js +5 -5
  257. package/dist/components/progress-bar/progress-bar.custom.styles.js +1 -1
  258. package/dist/components/progress-bar/progress-bar.js +6 -6
  259. package/dist/components/progress-bar/progress-bar.styles.js +1 -1
  260. package/dist/components/progress-ring/progress-ring.component.js +5 -5
  261. package/dist/components/progress-ring/progress-ring.custom.styles.js +1 -1
  262. package/dist/components/progress-ring/progress-ring.js +6 -6
  263. package/dist/components/progress-ring/progress-ring.styles.js +1 -1
  264. package/dist/components/radio/radio.component.d.ts +0 -5
  265. package/dist/components/radio/radio.component.js +5 -5
  266. package/dist/components/radio/radio.custom.styles.js +1 -1
  267. package/dist/components/radio/radio.js +6 -6
  268. package/dist/components/radio/radio.styles.js +1 -1
  269. package/dist/components/radio-button/radio-button.component.js +4 -4
  270. package/dist/components/radio-button/radio-button.js +5 -5
  271. package/dist/components/radio-button/radio-button.styles.js +1 -1
  272. package/dist/components/radio-group/radio-group.component.js +7 -7
  273. package/dist/components/radio-group/radio-group.custom.styles.js +1 -1
  274. package/dist/components/radio-group/radio-group.js +8 -8
  275. package/dist/components/radio-group/radio-group.styles.js +1 -1
  276. package/dist/components/range/range.component.d.ts +125 -0
  277. package/dist/components/range/range.component.js +26 -0
  278. package/dist/components/range/range.component.js.map +7 -0
  279. package/dist/components/range/range.d.ts +8 -0
  280. package/dist/components/range/range.js +27 -0
  281. package/dist/components/range/range.js.map +7 -0
  282. package/dist/components/range/range.styles.d.ts +2 -0
  283. package/dist/components/range/range.styles.js +8 -0
  284. package/dist/components/range/range.styles.js.map +7 -0
  285. package/dist/components/range/utility.d.ts +9 -0
  286. package/dist/components/range/utility.js +12 -0
  287. package/dist/components/range/utility.js.map +7 -0
  288. package/dist/components/range-tick/range-tick.component.d.ts +24 -0
  289. package/dist/components/range-tick/range-tick.component.js +10 -0
  290. package/dist/components/range-tick/range-tick.component.js.map +7 -0
  291. package/dist/components/range-tick/range-tick.d.ts +8 -0
  292. package/dist/components/range-tick/range-tick.js +11 -0
  293. package/dist/components/range-tick/range-tick.js.map +7 -0
  294. package/dist/components/range-tick/range-tick.styles.d.ts +2 -0
  295. package/dist/components/range-tick/range-tick.styles.js +8 -0
  296. package/dist/components/range-tick/range-tick.styles.js.map +7 -0
  297. package/dist/components/select/select.component.d.ts +3 -1
  298. package/dist/components/select/select.component.js +17 -17
  299. package/dist/components/select/select.custom.styles.js +2 -2
  300. package/dist/components/select/select.js +18 -18
  301. package/dist/components/select/select.styles.js +2 -2
  302. package/dist/components/side-nav/side-nav.component.js +14 -14
  303. package/dist/components/side-nav/side-nav.js +15 -15
  304. package/dist/components/side-nav/side-nav.styles.js +1 -1
  305. package/dist/components/spinner/spinner.component.js +5 -5
  306. package/dist/components/spinner/spinner.custom.styles.js +1 -1
  307. package/dist/components/spinner/spinner.js +6 -6
  308. package/dist/components/spinner/spinner.styles.js +1 -1
  309. package/dist/components/switch/switch.component.js +6 -6
  310. package/dist/components/switch/switch.custom.styles.js +1 -1
  311. package/dist/components/switch/switch.js +7 -7
  312. package/dist/components/switch/switch.styles.js +1 -1
  313. package/dist/components/tab/tab.component.d.ts +5 -4
  314. package/dist/components/tab/tab.component.js +10 -10
  315. package/dist/components/tab/tab.custom.styles.js +2 -2
  316. package/dist/components/tab/tab.js +11 -11
  317. package/dist/components/tab/tab.styles.js +2 -2
  318. package/dist/components/tab-group/tab-group.component.d.ts +2 -0
  319. package/dist/components/tab-group/tab-group.component.js +9 -9
  320. package/dist/components/tab-group/tab-group.custom.styles.js +1 -1
  321. package/dist/components/tab-group/tab-group.js +10 -10
  322. package/dist/components/tab-group/tab-group.styles.js +1 -1
  323. package/dist/components/tab-panel/tab-panel.component.js +4 -4
  324. package/dist/components/tab-panel/tab-panel.custom.styles.js +1 -1
  325. package/dist/components/tab-panel/tab-panel.js +5 -5
  326. package/dist/components/tab-panel/tab-panel.styles.js +1 -1
  327. package/dist/components/tag/tag.component.js +8 -8
  328. package/dist/components/tag/tag.custom.styles.js +1 -1
  329. package/dist/components/tag/tag.js +9 -9
  330. package/dist/components/tag/tag.styles.js +1 -1
  331. package/dist/components/textarea/textarea.component.js +6 -6
  332. package/dist/components/textarea/textarea.custom.styles.js +1 -1
  333. package/dist/components/textarea/textarea.js +7 -7
  334. package/dist/components/textarea/textarea.styles.js +1 -1
  335. package/dist/components/tooltip/tooltip.component.js +10 -10
  336. package/dist/components/tooltip/tooltip.custom.styles.js +1 -1
  337. package/dist/components/tooltip/tooltip.js +11 -11
  338. package/dist/components/tooltip/tooltip.styles.js +2 -2
  339. package/dist/custom-elements.json +1050 -205
  340. package/dist/events/events.d.ts +1 -0
  341. package/dist/events/syn-move.d.ts +9 -0
  342. package/dist/internal/animate.d.ts +3 -3
  343. package/dist/internal/longpress.d.ts +0 -1
  344. package/dist/styles/fouc.css +2 -0
  345. package/dist/styles/index.css +7 -2
  346. package/dist/styles/utility.css +4 -1
  347. package/dist/synergy-autoloader.js +1 -1
  348. package/dist/synergy.d.ts +2 -0
  349. package/dist/synergy.js +128 -115
  350. package/dist/translations/de.js +8 -9
  351. package/dist/translations/de.js.map +2 -2
  352. package/dist/translations/en.js +2 -2
  353. package/dist/utilities/animation-registry.js +2 -2
  354. package/dist/utilities/base-path.js +1 -1
  355. package/dist/utilities/form.js +3 -3
  356. package/dist/utilities/icon-library.js +1 -1
  357. package/dist/utilities/localize.d.ts +2 -0
  358. package/dist/utilities/localize.js +3 -3
  359. package/dist/vscode.html-custom-data.json +95 -3
  360. package/package.json +33 -33
  361. package/dist/chunks/chunk.6UAOF7WN.js.map +0 -7
  362. package/dist/chunks/chunk.7TOZAZTA.js.map +0 -7
  363. package/dist/chunks/chunk.APPDW65F.js.map +0 -7
  364. package/dist/chunks/chunk.CG7HK3HS.js.map +0 -7
  365. package/dist/chunks/chunk.HPWFMICA.js.map +0 -7
  366. package/dist/chunks/chunk.KPEDDAR4.js.map +0 -7
  367. package/dist/chunks/chunk.M4PJZ2KX.js.map +0 -7
  368. package/dist/chunks/chunk.OE4RXQU2.js.map +0 -7
  369. package/dist/chunks/chunk.PGDHCGHK.js.map +0 -7
  370. package/dist/chunks/chunk.RX7A4EQ2.js.map +0 -7
  371. package/dist/chunks/chunk.U2OMGNNZ.js.map +0 -7
  372. /package/dist/chunks/{chunk.QNDC5KWA.js.map → chunk.2GFK6XTO.js.map} +0 -0
  373. /package/dist/chunks/{chunk.DCWG25RX.js.map → chunk.2H5VZMM6.js.map} +0 -0
  374. /package/dist/chunks/{chunk.5BDQUWIH.js.map → chunk.2RCFWUMX.js.map} +0 -0
  375. /package/dist/chunks/{chunk.SN6A7VBJ.js.map → chunk.3TAWE2BI.js.map} +0 -0
  376. /package/dist/chunks/{chunk.SOVF26GR.js.map → chunk.3TEIFNRP.js.map} +0 -0
  377. /package/dist/chunks/{chunk.GCVGZHJK.js.map → chunk.4ZABXKYI.js.map} +0 -0
  378. /package/dist/chunks/{chunk.POXDBLOS.js.map → chunk.5WTYMY7E.js.map} +0 -0
  379. /package/dist/chunks/{chunk.26PVORV4.js.map → chunk.6OCJR2YI.js.map} +0 -0
  380. /package/dist/chunks/{chunk.REXNHEPD.js.map → chunk.72KEPLD4.js.map} +0 -0
  381. /package/dist/chunks/{chunk.QJMO7V5R.js.map → chunk.74IOULXM.js.map} +0 -0
  382. /package/dist/chunks/{chunk.XY7PAA7K.js.map → chunk.7GVODRHO.js.map} +0 -0
  383. /package/dist/chunks/{chunk.BZ7DXEKT.js.map → chunk.7I5Q3H5W.js.map} +0 -0
  384. /package/dist/chunks/{chunk.2LACXU5F.js.map → chunk.7J54DP5U.js.map} +0 -0
  385. /package/dist/chunks/{chunk.MLOZ4D3V.js.map → chunk.A3OYJILJ.js.map} +0 -0
  386. /package/dist/chunks/{chunk.VCCPDP5S.js.map → chunk.A7S3RARM.js.map} +0 -0
  387. /package/dist/chunks/{chunk.4VJLNO6Y.js.map → chunk.BHYMSPYR.js.map} +0 -0
  388. /package/dist/chunks/{chunk.VI6PYB5C.js.map → chunk.CHG7CKU3.js.map} +0 -0
  389. /package/dist/chunks/{chunk.IOTJRIT5.js.map → chunk.CSEYI4PC.js.map} +0 -0
  390. /package/dist/chunks/{chunk.A45QGUNM.js.map → chunk.D23EOBAA.js.map} +0 -0
  391. /package/dist/chunks/{chunk.7INB3LU4.js.map → chunk.D5J4VTCV.js.map} +0 -0
  392. /package/dist/chunks/{chunk.OP4WTQ2R.js.map → chunk.DGSAPH64.js.map} +0 -0
  393. /package/dist/chunks/{chunk.HLRZHIBP.js.map → chunk.DVF5JNGN.js.map} +0 -0
  394. /package/dist/chunks/{chunk.SIADSRVP.js.map → chunk.DZSCTRUT.js.map} +0 -0
  395. /package/dist/chunks/{chunk.XBHV2RZS.js.map → chunk.ECTOUABW.js.map} +0 -0
  396. /package/dist/chunks/{chunk.HVJGBGHT.js.map → chunk.EZRPX4D7.js.map} +0 -0
  397. /package/dist/chunks/{chunk.EG23UW3V.js.map → chunk.FK6MAJIJ.js.map} +0 -0
  398. /package/dist/chunks/{chunk.RSPZU72C.js.map → chunk.FP4J6SI7.js.map} +0 -0
  399. /package/dist/chunks/{chunk.TCGQ6I55.js.map → chunk.FPIGVZSR.js.map} +0 -0
  400. /package/dist/chunks/{chunk.445GTYI7.js.map → chunk.GWQWHDLF.js.map} +0 -0
  401. /package/dist/chunks/{chunk.MSUX23ZJ.js.map → chunk.HQ6QUSK7.js.map} +0 -0
  402. /package/dist/chunks/{chunk.R6VT7GM5.js.map → chunk.HTRLN6MZ.js.map} +0 -0
  403. /package/dist/chunks/{chunk.P7GNMVZ4.js.map → chunk.HY4Y3IF2.js.map} +0 -0
  404. /package/dist/chunks/{chunk.36WNAWGH.js.map → chunk.IGLR5WAI.js.map} +0 -0
  405. /package/dist/chunks/{chunk.OZ7PQTHB.js.map → chunk.IL3FC72M.js.map} +0 -0
  406. /package/dist/chunks/{chunk.ML6NOYHV.js.map → chunk.IMXRJ3YT.js.map} +0 -0
  407. /package/dist/chunks/{chunk.RUUKH7KZ.js.map → chunk.J6AAV3AV.js.map} +0 -0
  408. /package/dist/chunks/{chunk.EPEJDXFO.js.map → chunk.JS5QB2ZL.js.map} +0 -0
  409. /package/dist/chunks/{chunk.ZHDP4GU5.js.map → chunk.JWDKROBJ.js.map} +0 -0
  410. /package/dist/chunks/{chunk.TVIXZRR6.js.map → chunk.KSPAGGI2.js.map} +0 -0
  411. /package/dist/chunks/{chunk.RQ6PQ76D.js.map → chunk.LBU676EZ.js.map} +0 -0
  412. /package/dist/chunks/{chunk.TD2KXBBJ.js.map → chunk.LO6TVTD5.js.map} +0 -0
  413. /package/dist/chunks/{chunk.C66PDYUI.js.map → chunk.LXRYPCRA.js.map} +0 -0
  414. /package/dist/chunks/{chunk.MAWKXH6T.js.map → chunk.M322AHXQ.js.map} +0 -0
  415. /package/dist/chunks/{chunk.4VP6SOMT.js.map → chunk.MJIGVGWT.js.map} +0 -0
  416. /package/dist/chunks/{chunk.UKK7UB66.js.map → chunk.MJODVYOU.js.map} +0 -0
  417. /package/dist/chunks/{chunk.AUQVJZEW.js.map → chunk.NRKWWLOJ.js.map} +0 -0
  418. /package/dist/chunks/{chunk.LQZJ6SLT.js.map → chunk.OGY5SV3K.js.map} +0 -0
  419. /package/dist/chunks/{chunk.Y4PC4NYJ.js.map → chunk.ORSZM73W.js.map} +0 -0
  420. /package/dist/chunks/{chunk.VNOGO2PS.js.map → chunk.PCNJFBUE.js.map} +0 -0
  421. /package/dist/chunks/{chunk.MQH2OOTN.js.map → chunk.PLD6HW4G.js.map} +0 -0
  422. /package/dist/chunks/{chunk.OAD4GL57.js.map → chunk.QTUPZKVS.js.map} +0 -0
  423. /package/dist/chunks/{chunk.BCM6GF47.js.map → chunk.R2WZYDE2.js.map} +0 -0
  424. /package/dist/chunks/{chunk.JD6HMTL2.js.map → chunk.R67XSTNW.js.map} +0 -0
  425. /package/dist/chunks/{chunk.HRU52NH5.js.map → chunk.RFJ2QHB5.js.map} +0 -0
  426. /package/dist/chunks/{chunk.GZQPS6JH.js.map → chunk.RKZLWXOJ.js.map} +0 -0
  427. /package/dist/chunks/{chunk.VREBZRBU.js.map → chunk.TLNHPNZP.js.map} +0 -0
  428. /package/dist/chunks/{chunk.THRSQDCW.js.map → chunk.TNX42WV4.js.map} +0 -0
  429. /package/dist/chunks/{chunk.COI5VNKC.js.map → chunk.TQCA6Q6L.js.map} +0 -0
  430. /package/dist/chunks/{chunk.QVULMTSN.js.map → chunk.TWPYJVSU.js.map} +0 -0
  431. /package/dist/chunks/{chunk.A3TUOOXV.js.map → chunk.UANQP7UZ.js.map} +0 -0
  432. /package/dist/chunks/{chunk.MZO2W4AG.js.map → chunk.UXGBQPTV.js.map} +0 -0
  433. /package/dist/chunks/{chunk.BCAT6PJO.js.map → chunk.V5VKAR7I.js.map} +0 -0
  434. /package/dist/chunks/{chunk.AA7ETQ6Z.js.map → chunk.W4DRGBOX.js.map} +0 -0
  435. /package/dist/chunks/{chunk.6ZMQFRAK.js.map → chunk.WJG5I5EW.js.map} +0 -0
  436. /package/dist/chunks/{chunk.CCBYOE35.js.map → chunk.X5ZOIEXZ.js.map} +0 -0
  437. /package/dist/chunks/{chunk.6N5IAYT2.js.map → chunk.XOSZV7Y4.js.map} +0 -0
  438. /package/dist/chunks/{chunk.6EHHOHBG.js.map → chunk.Y5BGNU6P.js.map} +0 -0
  439. /package/dist/chunks/{chunk.S2UI5DQ6.js.map → chunk.YARCDSSP.js.map} +0 -0
  440. /package/dist/chunks/{chunk.QVNMCS3Y.js.map → chunk.YGBYTIEC.js.map} +0 -0
  441. /package/dist/chunks/{chunk.WEUMPGAL.js.map → chunk.YMC6ML2J.js.map} +0 -0
  442. /package/dist/chunks/{chunk.ZXLXQMJJ.js.map → chunk.YVPJSA6G.js.map} +0 -0
  443. /package/dist/chunks/{chunk.4U4U4WYP.js.map → chunk.YXKAU762.js.map} +0 -0
  444. /package/dist/chunks/{chunk.XD3FB2XT.js.map → chunk.ZIJ6OGAT.js.map} +0 -0
  445. /package/dist/chunks/{chunk.T4MHUMBJ.js.map → chunk.ZRQDODBI.js.map} +0 -0
  446. /package/dist/chunks/{chunk.LAKJ5MK2.js.map → chunk.ZWKWTOIU.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/tab-group/tab-group.component.ts"],
4
- "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport { classMap } from 'lit/directives/class-map.js';\nimport { html } from 'lit';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { scrollIntoView } from '../../internal/scroll.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIconButton from '../icon-button/icon-button.component.js';\nimport styles from './tab-group.styles.js';\nimport customStyles from './tab-group.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynTab from '../tab/tab.js';\nimport type SynTabPanel from '../tab-panel/tab-panel.js';\n\n/**\n * @summary Tab groups organize content into a container that shows one section at a time.\n * @documentation https://synergy.style/components/tab-group\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon-button\n *\n * @slot - Used for grouping tab panels in the tab group. Must be `<syn-tab-panel>` elements.\n * @slot nav - Used for grouping tabs in the tab group. Must be `<syn-tab>` elements.\n *\n * @event {{ name: String }} syn-tab-show - Emitted when a tab is shown. The payload of the event returns the \"panel\" attribute of the shown tab.\n * @event {{ name: String }} syn-tab-hide - Emitted when a tab is hidden. The payload of the event returns the \"panel\" attribute of the hidden tab.\n *\n * @csspart base - The component's base wrapper.\n * @csspart nav - The tab group's navigation container where tabs are slotted in.\n * @csspart tabs - The container that wraps the tabs.\n * @csspart active-tab-indicator - The line that highlights the currently selected tab.\n * @csspart body - The tab group's body where tab panels are slotted in.\n * @csspart scroll-button - The previous/next scroll buttons that show when tabs are scrollable, an `<syn-icon-button>`.\n * @csspart scroll-button--start - The starting scroll button.\n * @csspart scroll-button--end - The ending scroll button.\n * @csspart scroll-button__base - The scroll button's exported `base` part.\n *\n * @cssproperty --indicator-color - The color of the active tab indicator.\n * @cssproperty --indicator-width - The width of the active tab indicator.\n * @cssproperty --track-color - The color of the indicator's track (the line that separates tabs from panels).\n * @cssproperty --track-width - The width of the indicator's track (the line that separates tabs from panels).\n */\nexport default class SynTabGroup extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = { 'syn-icon-button': SynIconButton };\n\n private readonly localize = new LocalizeController(this);\n\n private activeTab?: SynTab;\n private mutationObserver: MutationObserver;\n private resizeObserver: ResizeObserver;\n private tabs: SynTab[] = [];\n private panels: SynTabPanel[] = [];\n\n @query('.tab-group') tabGroup: HTMLElement;\n @query('.tab-group__body') body: HTMLSlotElement;\n @query('.tab-group__nav') nav: HTMLElement;\n @query('.tab-group__indicator') indicator: HTMLElement;\n\n @state() private hasScrollControls = false;\n\n /** The placement of the tabs. */\n @property() placement: 'top' | 'start' | 'end' = 'top';\n\n /**\n * When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\n * manual, the tab will receive focus but will not show until the user presses spacebar or enter.\n */\n @property() activation: 'auto' | 'manual' = 'auto';\n\n /** Disables the scroll arrows that appear when tabs overflow. */\n @property({ attribute: 'no-scroll-controls', type: Boolean }) noScrollControls = false;\n\n /** Draws the tab group as a contained element. */\n @property({ type: Boolean }) contained = false;\n \n /** Draws the tab group with edges instead of roundings. Takes only effect if used with the 'contained' property */\n @property({ type: Boolean }) sharp = false;\n\n connectedCallback() {\n const whenAllDefined = Promise.all([\n customElements.whenDefined('syn-tab'),\n customElements.whenDefined('syn-tab-panel')\n ]);\n\n super.connectedCallback();\n\n this.resizeObserver = new ResizeObserver(() => {\n this.repositionIndicator();\n this.updateScrollControls();\n });\n\n this.mutationObserver = new MutationObserver(mutations => {\n // Update aria labels when the DOM changes\n if (mutations.some(m => !['aria-labelledby', 'aria-controls'].includes(m.attributeName!))) {\n setTimeout(() => this.setAriaLabels());\n }\n\n // Sync tabs when disabled states change\n if (mutations.some(m => m.attributeName === 'disabled')) {\n this.syncTabsAndPanels();\n }\n });\n\n // After the first update...\n this.updateComplete.then(() => {\n this.syncTabsAndPanels();\n this.mutationObserver.observe(this, { attributes: true, childList: true, subtree: true });\n this.resizeObserver.observe(this.nav);\n\n // Wait for tabs and tab panels to be registered\n whenAllDefined.then(() => {\n // Set initial tab state when the tabs become visible\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n if (entries[0].intersectionRatio > 0) {\n this.setAriaLabels();\n this.setActiveTab(this.getActiveTab() ?? this.tabs[0], { emitEvents: false });\n observer.unobserve(entries[0].target);\n }\n });\n intersectionObserver.observe(this.tabGroup);\n });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.mutationObserver.disconnect();\n if (this.nav) {\n this.resizeObserver.unobserve(this.nav);\n }\n }\n\n private getAllTabs(options: { includeDisabled: boolean } = { includeDisabled: true }) {\n const slot = this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"nav\"]')!;\n\n return [...(slot.assignedElements() as SynTab[])].filter(el => {\n return options.includeDisabled\n ? el.tagName.toLowerCase() === 'syn-tab'\n : el.tagName.toLowerCase() === 'syn-tab' && !el.disabled;\n });\n }\n\n private getAllPanels() {\n return [...this.body.assignedElements()].filter(el => el.tagName.toLowerCase() === 'syn-tab-panel') as [SynTabPanel];\n }\n\n private getActiveTab() {\n return this.tabs.find(el => el.active);\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n event.preventDefault();\n }\n }\n\n // Move focus left or right\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const activeEl = this.tabs.find(t => t.matches(':focus'));\n const isRtl = this.localize.dir() === 'rtl';\n\n if (activeEl?.tagName.toLowerCase() === 'syn-tab') {\n let index = this.tabs.indexOf(activeEl);\n\n if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = this.tabs.length - 1;\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowRight' : 'ArrowLeft')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowUp')\n ) {\n index--;\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowLeft' : 'ArrowRight')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowDown')\n ) {\n index++;\n }\n\n if (index < 0) {\n index = this.tabs.length - 1;\n }\n\n if (index > this.tabs.length - 1) {\n index = 0;\n }\n\n this.tabs[index].focus({ preventScroll: true });\n\n if (this.activation === 'auto') {\n this.setActiveTab(this.tabs[index], { scrollBehavior: 'smooth' });\n }\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(this.tabs[index], this.nav, 'horizontal');\n }\n\n event.preventDefault();\n }\n }\n }\n\n private handleScrollToStart() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft + this.nav.clientWidth\n : this.nav.scrollLeft - this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private handleScrollToEnd() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft - this.nav.clientWidth\n : this.nav.scrollLeft + this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private setActiveTab(tab: SynTab, options?: { emitEvents?: boolean; scrollBehavior?: 'auto' | 'smooth' }) {\n options = {\n emitEvents: true,\n scrollBehavior: 'auto',\n ...options\n };\n\n if (tab !== this.activeTab && !tab.disabled) {\n const previousTab = this.activeTab;\n this.activeTab = tab;\n\n // Sync active tab and panel\n this.tabs.forEach(el => (el.active = el === this.activeTab));\n this.panels.forEach(el => (el.active = el.name === this.activeTab?.panel));\n this.syncIndicator();\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(this.activeTab, this.nav, 'horizontal', options.scrollBehavior);\n }\n\n // Emit events\n if (options.emitEvents) {\n if (previousTab) {\n this.emit('syn-tab-hide', { detail: { name: previousTab.panel } });\n }\n\n this.emit('syn-tab-show', { detail: { name: this.activeTab.panel } });\n }\n }\n }\n\n private setAriaLabels() {\n // Link each tab with its corresponding panel\n this.tabs.forEach(tab => {\n const panel = this.panels.find(el => el.name === tab.panel);\n if (panel) {\n tab.setAttribute('aria-controls', panel.getAttribute('id')!);\n panel.setAttribute('aria-labelledby', tab.getAttribute('id')!);\n }\n });\n }\n\n private repositionIndicator() {\n const currentTab = this.getActiveTab();\n\n if (!currentTab) {\n return;\n }\n\n const width = currentTab.clientWidth;\n const height = currentTab.clientHeight;\n const isRtl = this.localize.dir() === 'rtl';\n\n // We can't used offsetLeft/offsetTop here due to a shadow parent issue where neither can getBoundingClientRect\n // because it provides invalid values for animating elements: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n const allTabs = this.getAllTabs();\n const precedingTabs = allTabs.slice(0, allTabs.indexOf(currentTab));\n const offset = precedingTabs.reduce(\n (previous, current) => ({\n left: previous.left + current.clientWidth,\n top: previous.top + current.clientHeight\n }),\n { left: 0, top: 0 }\n );\n\n switch (this.placement) {\n case 'top':\n this.indicator.style.width = `calc(${width}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-large)' : '0px' })`;\n this.indicator.style.height = 'auto';\n this.indicator.style.translate = `calc(${isRtl ? '-' : ''}1 * (${offset.left}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-large)' : '0px' }))`;\n break;\n\n case 'start':\n case 'end':\n this.indicator.style.width = 'auto';\n this.indicator.style.height = `calc(${height}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-small)' : '0px' })`;\n this.indicator.style.translate = `0 calc(${offset.top}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-small)' : '0px' })`;\n break;\n }\n }\n\n // This stores tabs and panels so we can refer to a cache instead of calling querySelectorAll() multiple times.\n private syncTabsAndPanels() {\n this.tabs = this.getAllTabs({ includeDisabled: false });\n this.panels = this.getAllPanels();\n this.syncIndicator();\n\n // After updating, show or hide scroll controls as needed\n this.updateComplete.then(() => this.updateScrollControls());\n }\n\n @watch('noScrollControls', { waitUntilFirstUpdate: true })\n updateScrollControls() {\n if (this.noScrollControls) {\n this.hasScrollControls = false;\n } else {\n // In most cases, we can compare scrollWidth to clientWidth to determine if scroll controls should show. However,\n // Safari appears to calculate this incorrectly when zoomed at 110%, causing the controls to toggle indefinitely.\n // Adding a single pixel to the comparison seems to resolve it.\n //\n // See https://github.com/synergy-design-system/synergy/issues/1839\n this.hasScrollControls =\n ['top'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth + 1;\n }\n }\n\n @watch('placement', { waitUntilFirstUpdate: true })\n syncIndicator() {\n const tab = this.getActiveTab();\n\n if (tab) {\n this.indicator.style.display = 'block';\n this.repositionIndicator();\n } else {\n this.indicator.style.display = 'none';\n }\n }\n\n /** Shows the specified tab panel. */\n show(panel: string) {\n const tab = this.tabs.find(el => el.panel === panel);\n\n if (tab) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n render() {\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'tab-group': true,\n 'tab-group--top': this.placement === 'top',\n 'tab-group--start': this.placement === 'start',\n 'tab-group--end': this.placement === 'end',\n 'tab-group--rtl': this.localize.dir() === 'rtl',\n 'tab-group--has-scroll-controls': this.hasScrollControls,\n 'tab-group--contained': this.contained,\n 'tab-group--sharp': this.sharp,\n })}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n >\n <div class=\"tab-group__nav-container\" part=\"nav\">\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--start\"\n exportparts=\"base:scroll-button__base\"\n class=\"tab-group__scroll-button tab-group__scroll-button--start\"\n name=\"chevron-right\"\n library=\"system\"\n label=${this.localize.term('scrollToStart')}\n @click=${this.handleScrollToStart}\n ></syn-icon-button>\n `\n : ''}\n\n <div class=\"tab-group__nav\">\n <div part=\"tabs\" class=\"tab-group__tabs\" role=\"tablist\">\n <div part=\"active-tab-indicator\" class=\"tab-group__indicator\"></div>\n <slot name=\"nav\" @slotchange=${this.syncTabsAndPanels}></slot>\n </div>\n </div>\n\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--end\"\n exportparts=\"base:scroll-button__base\"\n class=\"tab-group__scroll-button tab-group__scroll-button--end\"\n name=\"chevron-right\"\n library=\"system\"\n label=${this.localize.term('scrollToEnd')}\n @click=${this.handleScrollToEnd}\n ></syn-icon-button>\n `\n : ''}\n </div>\n\n <slot part=\"body\" class=\"tab-group__body\" @slotchange=${this.syncTabsAndPanels}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syn-tab-group': SynTabGroup;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/tab/tab.custom.styles.ts"],
4
- "sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n /* Write custom CSS here */\n\n :host {\n --background-color: none;\n --border-width: var(--syn-border-width-none);\n --border-color: none;\n --border-radius: var(--syn-border-radius-none);\n }\n\n .tab {\n border-color: transparent;\n border-radius: var(--border-radius);\n border-style: solid;\n border-width: var(--border-width);\n color: var(--syn-typography-color-text);\n font: var(--syn-body-small-bold);\n min-height: var(--syn-spacing-2x-large);\n padding: var(--syn-spacing-small) var(--syn-spacing-large);\n\n /* Stretch the tabs so they are aligned to each other vertically and the focus width stays the same */\n width: 100%;\n }\n\n\n /**\n * Focus\n */\n .tab:focus-visible {\n outline-offset: calc(var(--syn-focus-ring-offset) * -1);\n }\n\n .tab:focus-visible:not(.tab--disabled) {\n color: var(--syn-typography-color-text);\n }\n\n @media (forced-colors: active) {\n .tab.tab--active:not(.tab--disabled) {\n outline-offset: calc(var(--syn-focus-ring-offset) * -1);\n }\n }\n\n .tab:hover:not(.tab--disabled) {\n color: var(--syn-color-primary-700);\n }\n\n .tab.tab--active:not(.tab--disabled) {\n color: var(--syn-typography-color-text);\n }\n\n\n /**\n * Closable\n */\n .tab.tab--closable {\n padding: var(--syn-spacing-2x-small) var(--syn-spacing-large);\n }\n\n .tab__close-button {\n color: var(--syn-color-neutral-500);\n font-size: var(--syn-font-size-x-large);\n margin-inline-start: var(--syn-spacing-2x-small);\n }\n\n .tab__close-button::part(base) {\n padding: var(--syn-spacing-x-small);\n }\n\n .tab__close-button::part(base):hover {\n color: var(--syn-color-primary-700);\n }\n\n .tab--active {\n background-color: var(--background-color);\n border-color: var(--border-color);\n border-style: solid;\n border-width: var(--border-width);\n }\n\n /* Slotted icon style */\n .tab ::slotted(syn-icon) {\n font-size: var(--syn-font-size-x-large);\n margin-inline-end: var(--syn-spacing-x-small);\n }\n`;\n"],
5
- "mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,4BAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/menu/menu.component.ts"],
4
- "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport { html } from 'lit';\nimport { query } from 'lit/decorators.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './menu.styles.js';\nimport customStyles from './menu.custom.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.style/components/menu\n * @status stable\n * @since 2.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, customStyles];\n\n @query('slot') defaultSlot: HTMLSlotElement;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n }\n\n private handleClick(event: MouseEvent) {\n const menuItemTypes = ['menuitem', 'menuitemcheckbox'];\n\n const target = event.composedPath().find((el: Element) => menuItemTypes.includes(el?.getAttribute?.('role') || ''));\n\n if (!target) 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\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 @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
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/internal/offset.ts", "../../src/internal/scroll.ts"],
4
- "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\n/**\n * Returns an element's offset relative to its parent. Similar to element.offsetTop and element.offsetLeft, except the\n * parent doesn't have to be positioned relative or absolute.\n *\n * NOTE: This was created to work around what appears to be a bug in Chrome where a slotted element's offsetParent seems\n * to ignore elements inside the surrounding shadow DOM: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement) {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left)\n };\n}\n", "/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport { getOffset } from './offset.js';\n\nconst locks = new Set();\n\n/** Returns the width of the document's scrollbar */\nfunction getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}\n\n/**\n * Used in conjunction with `scrollbarWidth` to set proper body padding in case the user has padding already on the `<body>` element.\n */\nfunction getExistingBodyPadding() {\n const padding = Number(getComputedStyle(document.body).paddingRight.replace(/px/, ''));\n\n if (isNaN(padding) || !padding) {\n return 0;\n }\n\n return padding;\n}\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n\n // When the first lock is created, set the scroll lock size to match the scrollbar's width to prevent content from\n // shifting. We only do this on the first lock because the scrollbar width will measure zero after overflow is hidden.\n if (!document.documentElement.classList.contains('syn-scroll-lock')) {\n /** Scrollbar width + body padding calculation can go away once Safari has scrollbar-gutter support. */\n const scrollbarWidth = getScrollbarWidth() + getExistingBodyPadding(); // must be measured before the `syn-scroll-lock` class is applied\n document.documentElement.classList.add('syn-scroll-lock');\n document.documentElement.style.setProperty('--syn-scroll-lock-size', `${scrollbarWidth}px`);\n }\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.documentElement.classList.remove('syn-scroll-lock');\n document.documentElement.style.removeProperty('--syn-scroll-lock-size');\n }\n}\n\n/** Scrolls an element into view of its container. If the element is already in view, nothing will happen. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: 'smooth' | 'auto' = 'smooth'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({ left: offsetLeft - container.offsetWidth + element.clientWidth, behavior });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({ top: offsetTop - container.offsetHeight + element.clientHeight, behavior });\n }\n }\n}\n"],
5
- "mappings": ";AAeO,SAAS,UAAU,SAAsB,QAAqB;AACnE,SAAO;AAAA,IACL,KAAK,KAAK,MAAM,QAAQ,sBAAsB,EAAE,MAAM,OAAO,sBAAsB,EAAE,GAAG;AAAA,IACxF,MAAM,KAAK,MAAM,QAAQ,sBAAsB,EAAE,OAAO,OAAO,sBAAsB,EAAE,IAAI;AAAA,EAC7F;AACF;;;ACVA,IAAM,QAAQ,oBAAI,IAAI;AAGtB,SAAS,oBAAoB;AAC3B,QAAM,gBAAgB,SAAS,gBAAgB;AAC/C,SAAO,KAAK,IAAI,OAAO,aAAa,aAAa;AACnD;AAKA,SAAS,yBAAyB;AAChC,QAAM,UAAU,OAAO,iBAAiB,SAAS,IAAI,EAAE,aAAa,QAAQ,MAAM,EAAE,CAAC;AAErF,MAAI,MAAM,OAAO,KAAK,CAAC,SAAS;AAC9B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMO,SAAS,kBAAkB,WAAwB;AACxD,QAAM,IAAI,SAAS;AAInB,MAAI,CAAC,SAAS,gBAAgB,UAAU,SAAS,iBAAiB,GAAG;AAEnE,UAAM,iBAAiB,kBAAkB,IAAI,uBAAuB;AACpE,aAAS,gBAAgB,UAAU,IAAI,iBAAiB;AACxD,aAAS,gBAAgB,MAAM,YAAY,0BAA0B,GAAG,cAAc,IAAI;AAAA,EAC5F;AACF;AAKO,SAAS,oBAAoB,WAAwB;AAC1D,QAAM,OAAO,SAAS;AAEtB,MAAI,MAAM,SAAS,GAAG;AACpB,aAAS,gBAAgB,UAAU,OAAO,iBAAiB;AAC3D,aAAS,gBAAgB,MAAM,eAAe,wBAAwB;AAAA,EACxE;AACF;AAGO,SAAS,eACd,SACA,WACA,YAAgD,YAChD,WAA8B,UAC9B;AACA,QAAM,SAAS,UAAU,SAAS,SAAS;AAC3C,QAAM,YAAY,OAAO,MAAM,UAAU;AACzC,QAAM,aAAa,OAAO,OAAO,UAAU;AAC3C,QAAM,OAAO,UAAU;AACvB,QAAM,OAAO,UAAU,aAAa,UAAU;AAC9C,QAAM,OAAO,UAAU;AACvB,QAAM,OAAO,UAAU,YAAY,UAAU;AAE7C,MAAI,cAAc,gBAAgB,cAAc,QAAQ;AACtD,QAAI,aAAa,MAAM;AACrB,gBAAU,SAAS,EAAE,MAAM,YAAY,SAAS,CAAC;AAAA,IACnD,WAAW,aAAa,QAAQ,cAAc,MAAM;AAClD,gBAAU,SAAS,EAAE,MAAM,aAAa,UAAU,cAAc,QAAQ,aAAa,SAAS,CAAC;AAAA,IACjG;AAAA,EACF;AAEA,MAAI,cAAc,cAAc,cAAc,QAAQ;AACpD,QAAI,YAAY,MAAM;AACpB,gBAAU,SAAS,EAAE,KAAK,WAAW,SAAS,CAAC;AAAA,IACjD,WAAW,YAAY,QAAQ,eAAe,MAAM;AAClD,gBAAU,SAAS,EAAE,KAAK,YAAY,UAAU,eAAe,QAAQ,cAAc,SAAS,CAAC;AAAA,IACjG;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/menu-item/submenu-controller.ts"],
4
- "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* 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 LocalizeController } from '../../utilities/localize.js';\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 localize: LocalizeController;\n private readonly submenuOpenDelay = 100;\n\n constructor(\n host: ReactiveControllerHost & SynMenuItem,\n hasSlotController: HasSlotController,\n localize: LocalizeController\n ) {\n (this.host = host).addController(this);\n this.hasSlotController = hasSlotController;\n this.localize = localize;\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 = this.localize.dir() === 'rtl';\n\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 isLtr = this.localize.dir() === 'ltr';\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=${isLtr ? 'right-start' : 'left-start'}\n anchor=\"anchor\"\n flip\n flip-fallback-strategy=\"best-fit\"\n skidding=\"${this.skidding}\"\n strategy=\"fixed\"\n >\n <slot name=\"submenu\"></slot>\n </syn-popup>\n `;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["_a"]
7
- }