@synergy-design-system/components 3.6.0 → 3.6.2
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.
- package/dist/chunks/{chunk.Q2K7NQCB.js → chunk.23NFX54N.js} +2 -2
- package/dist/chunks/{chunk.5YRNPDSI.js → chunk.3M3NFWNU.js} +2 -2
- package/dist/chunks/{chunk.K7FUMJK2.js → chunk.3QP4VLRZ.js} +3 -3
- package/dist/chunks/{chunk.KD57IQV6.js → chunk.3U62422U.js} +7 -7
- package/dist/chunks/{chunk.STXZTZMY.js → chunk.4H3YZMAS.js} +2 -2
- package/dist/chunks/{chunk.EEVLMRYA.js → chunk.4P4I7LQD.js} +2 -2
- package/dist/chunks/{chunk.IPLC773L.js → chunk.53STUHE4.js} +2 -2
- package/dist/chunks/{chunk.LJYCM7V2.js → chunk.5IBHNTGE.js} +6 -6
- package/dist/chunks/{chunk.63IQVXUD.js → chunk.5MDIMDW7.js} +2 -2
- package/dist/chunks/{chunk.6EWCMDOQ.js → chunk.5TG44M6G.js} +10 -10
- package/dist/chunks/{chunk.IV3FR4CG.js → chunk.5WDT4XAG.js} +8 -8
- package/dist/chunks/{chunk.XHZZLHOD.js → chunk.7A6XCVHJ.js} +2 -2
- package/dist/chunks/{chunk.4OMS443H.js → chunk.AGUBFW23.js} +7 -7
- package/dist/chunks/{chunk.POUKY545.js → chunk.AM2GARN3.js} +6 -6
- package/dist/chunks/{chunk.N25AMXDL.js → chunk.ATVH3IN5.js} +2 -2
- package/dist/chunks/{chunk.SEGXW66J.js → chunk.AX7CY3YV.js} +8 -11
- package/dist/chunks/chunk.AX7CY3YV.js.map +7 -0
- package/dist/chunks/{chunk.OF4BZKDQ.js → chunk.B2DOGABS.js} +4 -4
- package/dist/chunks/{chunk.ZBHF3VT7.js → chunk.C2FRRPVQ.js} +2 -2
- package/dist/chunks/{chunk.UNYO3GI7.js → chunk.CAEBFUZN.js} +143 -50
- package/dist/chunks/chunk.CAEBFUZN.js.map +7 -0
- package/dist/chunks/{chunk.4Y6OKSYI.js → chunk.CG6KDIHY.js} +2 -2
- package/dist/chunks/{chunk.MNS3RHQ3.js → chunk.CGBISFLP.js} +9 -9
- package/dist/chunks/{chunk.SRVAU77I.js → chunk.CH2LD3AA.js} +10 -13
- package/dist/chunks/chunk.CH2LD3AA.js.map +7 -0
- package/dist/chunks/{chunk.TGTVJBXC.js → chunk.CQ5YK2UI.js} +2 -2
- package/dist/chunks/{chunk.W4UYS7NY.js → chunk.CSOJ7GAN.js} +2 -2
- package/dist/chunks/{chunk.TSRZZOKK.js → chunk.DADFO7ZC.js} +2 -2
- package/dist/chunks/{chunk.XJSWRSR5.js → chunk.DEJRW5K6.js} +2 -2
- package/dist/chunks/{chunk.BYGCAEBC.js → chunk.DFSXHO6C.js} +2 -2
- package/dist/chunks/{chunk.6VYVMXVV.js → chunk.DKOGU73U.js} +2 -2
- package/dist/chunks/{chunk.7GX46BNP.js → chunk.DKRP4SNW.js} +2 -2
- package/dist/chunks/{chunk.NIQMC4FW.js → chunk.E232H3UG.js} +5 -8
- package/dist/chunks/chunk.E232H3UG.js.map +7 -0
- package/dist/chunks/{chunk.VLCNIRQP.js → chunk.ED42IBEQ.js} +5 -5
- package/dist/chunks/{chunk.E3J4FZS3.js → chunk.EFSUVXPR.js} +2 -2
- package/dist/chunks/{chunk.BLS5NMGM.js → chunk.EMEFYG3J.js} +2 -2
- package/dist/chunks/{chunk.ZNEQLWGZ.js → chunk.EP45YOKI.js} +2 -2
- package/dist/chunks/{chunk.B4UA7LU7.js → chunk.F5ZCL426.js} +3 -3
- package/dist/chunks/{chunk.TPS2SF3S.js → chunk.FHBK7TVL.js} +9 -9
- package/dist/chunks/{chunk.BIGAPOOQ.js → chunk.FJFOBROM.js} +2 -2
- package/dist/chunks/{chunk.LGSQ6DML.js → chunk.FYLQ2KPN.js} +4 -4
- package/dist/chunks/{chunk.T7XTHFR7.js → chunk.GEIZGJXS.js} +2 -2
- package/dist/chunks/{chunk.MTRKCZX4.js → chunk.GXMTAN3E.js} +6 -6
- package/dist/chunks/{chunk.WDW65L3W.js → chunk.H6IBEFIP.js} +2 -2
- package/dist/chunks/{chunk.34I3S3Q5.js → chunk.HIBFS52G.js} +2 -2
- package/dist/chunks/{chunk.44VIEEDD.js → chunk.HTGMGRHI.js} +6 -6
- package/dist/chunks/{chunk.ZCUQMK2T.js → chunk.ISWLS435.js} +2 -2
- package/dist/chunks/{chunk.KZJR6HZD.js → chunk.IVA4SQG5.js} +10 -10
- package/dist/chunks/{chunk.WAFGHUVD.js → chunk.IVO2TN3E.js} +2 -2
- package/dist/chunks/{chunk.ZZAW2A7F.js → chunk.JKM4YHGK.js} +5 -5
- package/dist/chunks/{chunk.OK2D5LNY.js → chunk.JS5JBZSI.js} +6 -6
- package/dist/chunks/{chunk.IR3P3QGG.js → chunk.JYUFPJEK.js} +6 -6
- package/dist/chunks/{chunk.DHCEQX56.js → chunk.KBUH5F5U.js} +2 -2
- package/dist/chunks/{chunk.MOGC7VFU.js → chunk.KLXJZGUV.js} +4 -7
- package/dist/chunks/chunk.KLXJZGUV.js.map +7 -0
- package/dist/chunks/{chunk.6EHTMWUQ.js → chunk.L637U7ZN.js} +2 -2
- package/dist/chunks/{chunk.MHSMXQPS.js → chunk.LLLGWSSG.js} +9 -9
- package/dist/chunks/{chunk.SUFEDTS2.js → chunk.MCYWBF3C.js} +2 -2
- package/dist/chunks/{chunk.YFETCWLT.js → chunk.MEPMES2G.js} +5 -5
- package/dist/chunks/{chunk.A7YINQHA.js → chunk.MK34IILN.js} +2 -2
- package/dist/chunks/{chunk.3UJMEQUN.js → chunk.MLZQKBRQ.js} +27 -16
- package/dist/chunks/chunk.MLZQKBRQ.js.map +7 -0
- package/dist/chunks/{chunk.BWNWEGKQ.js → chunk.MOBPMDEL.js} +2 -2
- package/dist/chunks/{chunk.ZRA73PRW.js → chunk.MZRF75R4.js} +2 -2
- package/dist/chunks/{chunk.6GMIINJO.js → chunk.N26YJUY5.js} +2 -2
- package/dist/chunks/{chunk.3IQ2QEPZ.js → chunk.NXIQ25W4.js} +21 -13
- package/dist/chunks/chunk.NXIQ25W4.js.map +7 -0
- package/dist/chunks/{chunk.U6SWVYGR.js → chunk.OKOF6KVW.js} +6 -6
- package/dist/chunks/{chunk.P7LAZVIX.js → chunk.OZQGH3XJ.js} +2 -2
- package/dist/chunks/{chunk.ZKCT75DI.js → chunk.PKY6NBL3.js} +2 -2
- package/dist/chunks/{chunk.FUWJV6FF.js → chunk.PMLEHSEE.js} +2 -2
- package/dist/chunks/{chunk.FUWJV6FF.js.map → chunk.PMLEHSEE.js.map} +1 -1
- package/dist/chunks/{chunk.GI3MHRT5.js → chunk.PNWAFKQK.js} +6 -6
- package/dist/chunks/{chunk.GZHQAHOL.js → chunk.QKRQEB4F.js} +11 -4
- package/dist/chunks/chunk.QKRQEB4F.js.map +7 -0
- package/dist/chunks/{chunk.M4LSKQMC.js → chunk.QYUYJHSU.js} +2 -2
- package/dist/chunks/{chunk.KXTBRSLW.js → chunk.R5PHRI64.js} +2 -2
- package/dist/chunks/{chunk.SSFAGBRV.js → chunk.R75HTBXO.js} +7 -7
- package/dist/chunks/{chunk.N2YN3NX6.js → chunk.R7CEVVUS.js} +10 -10
- package/dist/chunks/{chunk.5WQAKFFK.js → chunk.RF7GHBQS.js} +2 -2
- package/dist/chunks/{chunk.PMRBUT43.js → chunk.RPB7V345.js} +2 -2
- package/dist/chunks/{chunk.DQIPVU4J.js → chunk.RXNPDOC4.js} +2 -2
- package/dist/chunks/{chunk.FQ6KKYNN.js → chunk.RY3ZM7MQ.js} +4 -4
- package/dist/chunks/{chunk.LYQYSN3L.js → chunk.RYZBQX3Z.js} +10 -10
- package/dist/chunks/{chunk.WVO75K4L.js → chunk.S45RRNGO.js} +2 -2
- package/dist/chunks/{chunk.KO63GPHO.js → chunk.SSKABUHR.js} +8 -8
- package/dist/chunks/{chunk.LA2QMOXI.js → chunk.SYWUH3B2.js} +2 -2
- package/dist/chunks/{chunk.NB2UOW3O.js → chunk.TGAM2TG2.js} +8 -8
- package/dist/chunks/{chunk.VO4T33T2.js → chunk.TKML63IS.js} +2 -2
- package/dist/chunks/{chunk.TVVJTCGG.js → chunk.TUSN4AOP.js} +4 -5
- package/dist/chunks/chunk.TUSN4AOP.js.map +7 -0
- package/dist/chunks/{chunk.EX2D55AB.js → chunk.TWI7JGQG.js} +2 -2
- package/dist/chunks/{chunk.O34OXLGO.js → chunk.TWN2IINB.js} +2 -2
- package/dist/chunks/{chunk.HQQFUCQ6.js → chunk.U5RPGYIW.js} +2 -2
- package/dist/chunks/{chunk.HXZVWZL3.js → chunk.U7YYSF25.js} +2 -2
- package/dist/chunks/{chunk.2DWIAD22.js → chunk.VZKW6FE7.js} +2 -2
- package/dist/chunks/{chunk.FGF4ENWR.js → chunk.W5FLBYFD.js} +6 -6
- package/dist/chunks/{chunk.GKWU7STM.js → chunk.WAWHW5YZ.js} +4 -4
- package/dist/chunks/{chunk.JBNR3EZZ.js → chunk.WEELXGV7.js} +2 -2
- package/dist/chunks/{chunk.KOYEOD56.js → chunk.WHL6RT4F.js} +2 -2
- package/dist/chunks/{chunk.YFDRVJUV.js → chunk.WNZKI3PE.js} +2 -2
- package/dist/chunks/{chunk.ESXNQJQU.js → chunk.WSUVXQLC.js} +2 -2
- package/dist/chunks/{chunk.AD4WKLKY.js → chunk.WWUVHRGT.js} +2 -2
- package/dist/chunks/{chunk.4BEGBAQD.js → chunk.YACUYJZN.js} +2 -2
- package/dist/chunks/{chunk.JXCCMLXD.js → chunk.YAI45VKX.js} +2 -2
- package/dist/chunks/{chunk.PQDMVEQ5.js → chunk.YG6GHM5E.js} +2 -2
- package/dist/chunks/{chunk.7WQVBHRS.js → chunk.YQW5XR5D.js} +2 -2
- package/dist/chunks/{chunk.KHL5C52A.js → chunk.Z6GESOQF.js} +2 -2
- package/dist/chunks/{chunk.OK2D4PQ6.js → chunk.ZREFWRNI.js} +5 -5
- package/dist/chunks/{chunk.ZEBIZ2UZ.js → chunk.ZX37OTAK.js} +5 -5
- package/dist/components/accordion/accordion.component.js +6 -6
- package/dist/components/accordion/accordion.js +7 -7
- package/dist/components/alert/alert.component.js +10 -10
- package/dist/components/alert/alert.js +11 -11
- package/dist/components/badge/badge.component.js +7 -7
- package/dist/components/badge/badge.js +8 -8
- package/dist/components/breadcrumb/breadcrumb.component.js +7 -7
- package/dist/components/breadcrumb/breadcrumb.js +8 -8
- package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
- package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
- package/dist/components/button/button.component.js +10 -10
- package/dist/components/button/button.js +11 -11
- package/dist/components/button-group/button-group.component.js +5 -5
- package/dist/components/button-group/button-group.js +6 -6
- package/dist/components/card/card.component.js +2 -2
- package/dist/components/card/card.js +3 -3
- package/dist/components/checkbox/checkbox.component.js +7 -7
- package/dist/components/checkbox/checkbox.js +8 -8
- package/dist/components/combobox/combobox.component.js +13 -13
- package/dist/components/combobox/combobox.js +14 -14
- package/dist/components/details/details.component.js +8 -8
- package/dist/components/details/details.js +9 -9
- package/dist/components/dialog/dialog.component.js +9 -9
- package/dist/components/dialog/dialog.js +10 -10
- package/dist/components/divider/divider.component.js +2 -2
- package/dist/components/divider/divider.js +3 -3
- package/dist/components/drawer/drawer.component.js +9 -9
- package/dist/components/drawer/drawer.js +10 -10
- package/dist/components/dropdown/dropdown.component.js +5 -6
- package/dist/components/dropdown/dropdown.js +6 -7
- package/dist/components/dropdown/dropdown.styles.js +1 -1
- package/dist/components/file/file.component.js +11 -11
- package/dist/components/file/file.js +12 -12
- package/dist/components/header/header.component.js +6 -6
- package/dist/components/header/header.js +7 -7
- package/dist/components/icon/icon.component.js +2 -2
- package/dist/components/icon/icon.js +3 -3
- package/dist/components/icon-button/icon-button.component.js +7 -7
- package/dist/components/icon-button/icon-button.js +8 -8
- package/dist/components/input/input.component.js +9 -9
- package/dist/components/input/input.js +10 -10
- package/dist/components/menu/menu.component.js +3 -4
- package/dist/components/menu/menu.js +4 -5
- package/dist/components/menu/menu.styles.js +1 -1
- package/dist/components/menu-item/menu-item.component.js +9 -10
- package/dist/components/menu-item/menu-item.js +10 -11
- package/dist/components/menu-item/menu-item.styles.js +1 -1
- package/dist/components/menu-label/menu-label.component.js +4 -5
- package/dist/components/menu-label/menu-label.js +5 -6
- package/dist/components/menu-label/menu-label.styles.js +1 -1
- package/dist/components/nav-item/nav-item.component.js +4 -4
- package/dist/components/nav-item/nav-item.js +5 -5
- package/dist/components/optgroup/optgroup.component.js +3 -3
- package/dist/components/optgroup/optgroup.js +4 -4
- package/dist/components/option/option.component.js +9 -9
- package/dist/components/option/option.js +10 -10
- package/dist/components/popup/popup.component.js +2 -2
- package/dist/components/popup/popup.js +3 -3
- package/dist/components/prio-nav/prio-nav.component.js +13 -15
- package/dist/components/prio-nav/prio-nav.js +14 -16
- package/dist/components/progress-bar/progress-bar.component.js +2 -2
- package/dist/components/progress-bar/progress-bar.js +3 -3
- package/dist/components/progress-ring/progress-ring.component.js +2 -2
- package/dist/components/progress-ring/progress-ring.js +3 -3
- package/dist/components/radio/radio.component.js +7 -7
- package/dist/components/radio/radio.js +8 -8
- package/dist/components/radio-button/radio-button.component.js +6 -6
- package/dist/components/radio-button/radio-button.js +7 -7
- package/dist/components/radio-group/radio-group.component.js +7 -7
- package/dist/components/radio-group/radio-group.js +8 -8
- package/dist/components/range/range.component.js +9 -9
- package/dist/components/range/range.js +10 -10
- package/dist/components/range-tick/range-tick.component.js +2 -2
- package/dist/components/range-tick/range-tick.js +3 -3
- package/dist/components/resize-observer/resize-observer.component.js +2 -2
- package/dist/components/select/select.component.js +11 -11
- package/dist/components/select/select.js +12 -12
- package/dist/components/side-nav/side-nav.component.js +12 -12
- package/dist/components/side-nav/side-nav.js +13 -13
- package/dist/components/spinner/spinner.component.js +3 -3
- package/dist/components/spinner/spinner.js +4 -4
- package/dist/components/switch/switch.component.js +6 -6
- package/dist/components/switch/switch.js +7 -7
- package/dist/components/tab/tab.component.js +9 -9
- package/dist/components/tab/tab.js +10 -10
- package/dist/components/tab-group/tab-group.component.js +10 -10
- package/dist/components/tab-group/tab-group.js +11 -11
- package/dist/components/tab-panel/tab-panel.component.js +2 -2
- package/dist/components/tab-panel/tab-panel.js +3 -3
- package/dist/components/tag/tag.component.js +9 -9
- package/dist/components/tag/tag.js +10 -10
- package/dist/components/textarea/textarea.component.js +6 -6
- package/dist/components/textarea/textarea.js +7 -7
- package/dist/components/tooltip/tooltip.component.js +4 -4
- package/dist/components/tooltip/tooltip.js +5 -5
- package/dist/components/validate/utility.js +2 -2
- package/dist/components/validate/validate.component.d.ts +7 -0
- package/dist/components/validate/validate.component.js +14 -14
- package/dist/components/validate/validate.js +15 -15
- package/dist/custom-elements.json +12 -1
- package/dist/styles/index.css +1 -1
- package/dist/synergy.js +158 -162
- package/dist/utilities/defaultSettings/decorator.js +3 -3
- package/dist/utilities/defaultSettings/functions.js +2 -2
- package/dist/utilities/defaultSettings/index.js +3 -3
- package/package.json +3 -3
- package/dist/chunks/chunk.2KYFCKCK.js +0 -10
- package/dist/chunks/chunk.2KYFCKCK.js.map +0 -7
- package/dist/chunks/chunk.3IQ2QEPZ.js.map +0 -7
- package/dist/chunks/chunk.3UJMEQUN.js.map +0 -7
- package/dist/chunks/chunk.GZHQAHOL.js.map +0 -7
- package/dist/chunks/chunk.JILCM7FD.js +0 -26
- package/dist/chunks/chunk.JILCM7FD.js.map +0 -7
- package/dist/chunks/chunk.MOGC7VFU.js.map +0 -7
- package/dist/chunks/chunk.N7HN275B.js +0 -161
- package/dist/chunks/chunk.N7HN275B.js.map +0 -7
- package/dist/chunks/chunk.NIQMC4FW.js.map +0 -7
- package/dist/chunks/chunk.SEGXW66J.js.map +0 -7
- package/dist/chunks/chunk.SRVAU77I.js.map +0 -7
- package/dist/chunks/chunk.TVVJTCGG.js.map +0 -7
- package/dist/chunks/chunk.UNYO3GI7.js.map +0 -7
- package/dist/chunks/chunk.V37RYGE7.js +0 -24
- package/dist/chunks/chunk.V37RYGE7.js.map +0 -7
- package/dist/components/dropdown/dropdown.custom.styles.d.ts +0 -2
- package/dist/components/dropdown/dropdown.custom.styles.js +0 -8
- package/dist/components/dropdown/dropdown.custom.styles.js.map +0 -7
- package/dist/components/menu/menu.custom.styles.d.ts +0 -2
- package/dist/components/menu/menu.custom.styles.js +0 -8
- package/dist/components/menu/menu.custom.styles.js.map +0 -7
- package/dist/components/menu-item/menu-item.custom.styles.d.ts +0 -2
- package/dist/components/menu-item/menu-item.custom.styles.js +0 -8
- package/dist/components/menu-item/menu-item.custom.styles.js.map +0 -7
- package/dist/components/menu-label/menu-label.custom.styles.d.ts +0 -2
- package/dist/components/menu-label/menu-label.custom.styles.js +0 -8
- package/dist/components/menu-label/menu-label.custom.styles.js.map +0 -7
- /package/dist/chunks/{chunk.Q2K7NQCB.js.map → chunk.23NFX54N.js.map} +0 -0
- /package/dist/chunks/{chunk.5YRNPDSI.js.map → chunk.3M3NFWNU.js.map} +0 -0
- /package/dist/chunks/{chunk.K7FUMJK2.js.map → chunk.3QP4VLRZ.js.map} +0 -0
- /package/dist/chunks/{chunk.KD57IQV6.js.map → chunk.3U62422U.js.map} +0 -0
- /package/dist/chunks/{chunk.STXZTZMY.js.map → chunk.4H3YZMAS.js.map} +0 -0
- /package/dist/chunks/{chunk.EEVLMRYA.js.map → chunk.4P4I7LQD.js.map} +0 -0
- /package/dist/chunks/{chunk.IPLC773L.js.map → chunk.53STUHE4.js.map} +0 -0
- /package/dist/chunks/{chunk.LJYCM7V2.js.map → chunk.5IBHNTGE.js.map} +0 -0
- /package/dist/chunks/{chunk.63IQVXUD.js.map → chunk.5MDIMDW7.js.map} +0 -0
- /package/dist/chunks/{chunk.6EWCMDOQ.js.map → chunk.5TG44M6G.js.map} +0 -0
- /package/dist/chunks/{chunk.IV3FR4CG.js.map → chunk.5WDT4XAG.js.map} +0 -0
- /package/dist/chunks/{chunk.XHZZLHOD.js.map → chunk.7A6XCVHJ.js.map} +0 -0
- /package/dist/chunks/{chunk.4OMS443H.js.map → chunk.AGUBFW23.js.map} +0 -0
- /package/dist/chunks/{chunk.POUKY545.js.map → chunk.AM2GARN3.js.map} +0 -0
- /package/dist/chunks/{chunk.N25AMXDL.js.map → chunk.ATVH3IN5.js.map} +0 -0
- /package/dist/chunks/{chunk.OF4BZKDQ.js.map → chunk.B2DOGABS.js.map} +0 -0
- /package/dist/chunks/{chunk.ZBHF3VT7.js.map → chunk.C2FRRPVQ.js.map} +0 -0
- /package/dist/chunks/{chunk.4Y6OKSYI.js.map → chunk.CG6KDIHY.js.map} +0 -0
- /package/dist/chunks/{chunk.MNS3RHQ3.js.map → chunk.CGBISFLP.js.map} +0 -0
- /package/dist/chunks/{chunk.TGTVJBXC.js.map → chunk.CQ5YK2UI.js.map} +0 -0
- /package/dist/chunks/{chunk.W4UYS7NY.js.map → chunk.CSOJ7GAN.js.map} +0 -0
- /package/dist/chunks/{chunk.TSRZZOKK.js.map → chunk.DADFO7ZC.js.map} +0 -0
- /package/dist/chunks/{chunk.XJSWRSR5.js.map → chunk.DEJRW5K6.js.map} +0 -0
- /package/dist/chunks/{chunk.BYGCAEBC.js.map → chunk.DFSXHO6C.js.map} +0 -0
- /package/dist/chunks/{chunk.6VYVMXVV.js.map → chunk.DKOGU73U.js.map} +0 -0
- /package/dist/chunks/{chunk.7GX46BNP.js.map → chunk.DKRP4SNW.js.map} +0 -0
- /package/dist/chunks/{chunk.VLCNIRQP.js.map → chunk.ED42IBEQ.js.map} +0 -0
- /package/dist/chunks/{chunk.E3J4FZS3.js.map → chunk.EFSUVXPR.js.map} +0 -0
- /package/dist/chunks/{chunk.BLS5NMGM.js.map → chunk.EMEFYG3J.js.map} +0 -0
- /package/dist/chunks/{chunk.ZNEQLWGZ.js.map → chunk.EP45YOKI.js.map} +0 -0
- /package/dist/chunks/{chunk.B4UA7LU7.js.map → chunk.F5ZCL426.js.map} +0 -0
- /package/dist/chunks/{chunk.TPS2SF3S.js.map → chunk.FHBK7TVL.js.map} +0 -0
- /package/dist/chunks/{chunk.BIGAPOOQ.js.map → chunk.FJFOBROM.js.map} +0 -0
- /package/dist/chunks/{chunk.LGSQ6DML.js.map → chunk.FYLQ2KPN.js.map} +0 -0
- /package/dist/chunks/{chunk.T7XTHFR7.js.map → chunk.GEIZGJXS.js.map} +0 -0
- /package/dist/chunks/{chunk.MTRKCZX4.js.map → chunk.GXMTAN3E.js.map} +0 -0
- /package/dist/chunks/{chunk.WDW65L3W.js.map → chunk.H6IBEFIP.js.map} +0 -0
- /package/dist/chunks/{chunk.34I3S3Q5.js.map → chunk.HIBFS52G.js.map} +0 -0
- /package/dist/chunks/{chunk.44VIEEDD.js.map → chunk.HTGMGRHI.js.map} +0 -0
- /package/dist/chunks/{chunk.ZCUQMK2T.js.map → chunk.ISWLS435.js.map} +0 -0
- /package/dist/chunks/{chunk.KZJR6HZD.js.map → chunk.IVA4SQG5.js.map} +0 -0
- /package/dist/chunks/{chunk.WAFGHUVD.js.map → chunk.IVO2TN3E.js.map} +0 -0
- /package/dist/chunks/{chunk.ZZAW2A7F.js.map → chunk.JKM4YHGK.js.map} +0 -0
- /package/dist/chunks/{chunk.OK2D5LNY.js.map → chunk.JS5JBZSI.js.map} +0 -0
- /package/dist/chunks/{chunk.IR3P3QGG.js.map → chunk.JYUFPJEK.js.map} +0 -0
- /package/dist/chunks/{chunk.DHCEQX56.js.map → chunk.KBUH5F5U.js.map} +0 -0
- /package/dist/chunks/{chunk.6EHTMWUQ.js.map → chunk.L637U7ZN.js.map} +0 -0
- /package/dist/chunks/{chunk.MHSMXQPS.js.map → chunk.LLLGWSSG.js.map} +0 -0
- /package/dist/chunks/{chunk.SUFEDTS2.js.map → chunk.MCYWBF3C.js.map} +0 -0
- /package/dist/chunks/{chunk.YFETCWLT.js.map → chunk.MEPMES2G.js.map} +0 -0
- /package/dist/chunks/{chunk.A7YINQHA.js.map → chunk.MK34IILN.js.map} +0 -0
- /package/dist/chunks/{chunk.BWNWEGKQ.js.map → chunk.MOBPMDEL.js.map} +0 -0
- /package/dist/chunks/{chunk.ZRA73PRW.js.map → chunk.MZRF75R4.js.map} +0 -0
- /package/dist/chunks/{chunk.6GMIINJO.js.map → chunk.N26YJUY5.js.map} +0 -0
- /package/dist/chunks/{chunk.U6SWVYGR.js.map → chunk.OKOF6KVW.js.map} +0 -0
- /package/dist/chunks/{chunk.P7LAZVIX.js.map → chunk.OZQGH3XJ.js.map} +0 -0
- /package/dist/chunks/{chunk.ZKCT75DI.js.map → chunk.PKY6NBL3.js.map} +0 -0
- /package/dist/chunks/{chunk.GI3MHRT5.js.map → chunk.PNWAFKQK.js.map} +0 -0
- /package/dist/chunks/{chunk.M4LSKQMC.js.map → chunk.QYUYJHSU.js.map} +0 -0
- /package/dist/chunks/{chunk.KXTBRSLW.js.map → chunk.R5PHRI64.js.map} +0 -0
- /package/dist/chunks/{chunk.SSFAGBRV.js.map → chunk.R75HTBXO.js.map} +0 -0
- /package/dist/chunks/{chunk.N2YN3NX6.js.map → chunk.R7CEVVUS.js.map} +0 -0
- /package/dist/chunks/{chunk.5WQAKFFK.js.map → chunk.RF7GHBQS.js.map} +0 -0
- /package/dist/chunks/{chunk.PMRBUT43.js.map → chunk.RPB7V345.js.map} +0 -0
- /package/dist/chunks/{chunk.DQIPVU4J.js.map → chunk.RXNPDOC4.js.map} +0 -0
- /package/dist/chunks/{chunk.FQ6KKYNN.js.map → chunk.RY3ZM7MQ.js.map} +0 -0
- /package/dist/chunks/{chunk.LYQYSN3L.js.map → chunk.RYZBQX3Z.js.map} +0 -0
- /package/dist/chunks/{chunk.WVO75K4L.js.map → chunk.S45RRNGO.js.map} +0 -0
- /package/dist/chunks/{chunk.KO63GPHO.js.map → chunk.SSKABUHR.js.map} +0 -0
- /package/dist/chunks/{chunk.LA2QMOXI.js.map → chunk.SYWUH3B2.js.map} +0 -0
- /package/dist/chunks/{chunk.NB2UOW3O.js.map → chunk.TGAM2TG2.js.map} +0 -0
- /package/dist/chunks/{chunk.VO4T33T2.js.map → chunk.TKML63IS.js.map} +0 -0
- /package/dist/chunks/{chunk.EX2D55AB.js.map → chunk.TWI7JGQG.js.map} +0 -0
- /package/dist/chunks/{chunk.O34OXLGO.js.map → chunk.TWN2IINB.js.map} +0 -0
- /package/dist/chunks/{chunk.HQQFUCQ6.js.map → chunk.U5RPGYIW.js.map} +0 -0
- /package/dist/chunks/{chunk.HXZVWZL3.js.map → chunk.U7YYSF25.js.map} +0 -0
- /package/dist/chunks/{chunk.2DWIAD22.js.map → chunk.VZKW6FE7.js.map} +0 -0
- /package/dist/chunks/{chunk.FGF4ENWR.js.map → chunk.W5FLBYFD.js.map} +0 -0
- /package/dist/chunks/{chunk.GKWU7STM.js.map → chunk.WAWHW5YZ.js.map} +0 -0
- /package/dist/chunks/{chunk.JBNR3EZZ.js.map → chunk.WEELXGV7.js.map} +0 -0
- /package/dist/chunks/{chunk.KOYEOD56.js.map → chunk.WHL6RT4F.js.map} +0 -0
- /package/dist/chunks/{chunk.YFDRVJUV.js.map → chunk.WNZKI3PE.js.map} +0 -0
- /package/dist/chunks/{chunk.ESXNQJQU.js.map → chunk.WSUVXQLC.js.map} +0 -0
- /package/dist/chunks/{chunk.AD4WKLKY.js.map → chunk.WWUVHRGT.js.map} +0 -0
- /package/dist/chunks/{chunk.4BEGBAQD.js.map → chunk.YACUYJZN.js.map} +0 -0
- /package/dist/chunks/{chunk.JXCCMLXD.js.map → chunk.YAI45VKX.js.map} +0 -0
- /package/dist/chunks/{chunk.PQDMVEQ5.js.map → chunk.YG6GHM5E.js.map} +0 -0
- /package/dist/chunks/{chunk.7WQVBHRS.js.map → chunk.YQW5XR5D.js.map} +0 -0
- /package/dist/chunks/{chunk.KHL5C52A.js.map → chunk.Z6GESOQF.js.map} +0 -0
- /package/dist/chunks/{chunk.OK2D4PQ6.js.map → chunk.ZREFWRNI.js.map} +0 -0
- /package/dist/chunks/{chunk.ZEBIZ2UZ.js.map → chunk.ZX37OTAK.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/validate/validate.component.ts"],
|
|
4
|
-
"sourcesContent": ["import type { CSSResultGroup, PropertyValues } from 'lit';\nimport { html } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport type SynInput from '../input/input.component.js';\nimport { watch } from '../../internal/watch.js';\nimport SynAlert from '../alert/alert.component.js';\nimport SynTooltip from '../tooltip/tooltip.component.js';\nimport {\n alertSizeForInput,\n getActualInputElement,\n getEventNameForElement,\n isBlurEvent,\n isInvalidEvent,\n isSynergyElement,\n normalizeEventAttribute,\n} from './utility.js';\nimport styles from './validate.styles.js';\nimport { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';\n\n/**\n * Utility function that renders the default slot content.\n * This is needed to avoid code duplication when rendering the default slot in both the tooltip and the regular render function.\n */\nconst renderDefaultSlot = () => html`\n <slot\n class=\"validate__input-wrapper\"\n part=\"input-wrapper\"\n ></slot>\n`;\n\n/**\n * @summary Validate provides form field validation messages in a unified way.\n * It does this by using [the native browser validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)\n * and showing the validation message in a consistent, user defined way.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-validate--docs\n * @dependency syn-alert\n * @dependency syn-tooltip\n *\n * @slot - The form field that should be validated.\n * Avoid slotting in more than one element, as subsequent ones will be ignored.\n *\n * @csspart base - The component's base wrapper.\n * @csspart input-wrapper - The container that wraps the form field.\n *\n * @csspart alert - The syn-alert that is shown when the variant is set to \"inline\".\n * @csspart alert__base - The container that wraps the alert.\n * @csspart alert__message - The container that wraps the alert message.\n * @csspart alert__icon - The container that wraps the alert icon.\n *\n * @csspart tooltip - The syn-tooltip that is shown when the variant is set to \"tooltip\".\n * @csspart tooltip__base - The container that wraps the tooltip.\n * @csspart tooltip__popup - The container that wraps the tooltip popup.\n * @csspart tooltip__arrow - The container that wraps the tooltip arrow.\n * @csspart tooltip__body - The container that wraps the tooltip body.\n*/\n@enableDefaultSettings('SynValidate')\nexport default class SynValidate extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles];\n\n static dependencies = {\n 'syn-alert': SynAlert,\n 'syn-tooltip': SynTooltip,\n };\n\n controller = new AbortController();\n\n observer: MutationObserver;\n\n sizeObserver: MutationObserver;\n\n @queryAssignedElements() private slottedChildren: HTMLElement[];\n\n @query('syn-tooltip') private tooltipElement?: SynTooltip;\n\n @state() validationMessage = '';\n\n @state() eagerFirstMount = true;\n\n @state() isInternalTriggeredInvalid = false;\n\n @state() isValid = true;\n\n @state() alertSize?: SynInput['size'];\n\n @state() hasFocus = false;\n\n /**\n * The variant that should be used to show validation alerts.\n *\n * The following variants are supported:\n * - **native** (default): Uses the native browser validation, usually a browser tooltip.\n * - **tooltip**: Show the validation message as a tooltip using a `<syn-tooltip>`.\n * - **inline**: Show the validation message underneath the element, using a `<syn-alert>`\n */\n @property({ reflect: true }) variant: 'native' | 'tooltip' | 'inline' = 'native';\n\n /** Do not show the error icon when using the inline variant validation */\n @property({ attribute: 'hide-icon', reflect: true, type: Boolean }) hideIcon = false;\n\n /**\n * Defines the events that trigger the validation.\n * `invalid` will always automatically be included.\n * You may also use the `live` keyword to validate on every input change.\n * `live` will make sure to listen to the `invalid`, `input` and `blur` events.\n *\n * Please have a look at the [documentation for native form validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)\n * and [the use of form invalid events](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event) for further information.\n *\n * @example ```html\n * <!-- Validate on invalid and change events (invalid, change) -->\n * <syn-validate on=\"invalid change\"></syn-validate>\n *\n * <!-- Validate on live events (invalid, blur, input)-->\n * <syn-validate on=\"live\"></syn-validate>\n *\n * <!-- Validate on live and custom events (invalid, blur, input, focus, change) -->\n * <syn-validate on=\"live focus change\"></syn-validate>\n * ```\n */\n @property({ reflect: true }) on: string = '';\n\n /**\n * Custom validation message to be displayed when the input is invalid.\n * Will override the default browser validation message.\n * Set to an empty string to reset the validation message.\n */\n @property({ attribute: 'custom-validation-message', type: String }) customValidationMessage = '';\n\n /**\n * Set this to true to validate the input immediately when it is rendered.\n * Best used with a `variant` of `inline`.\n * When setting eager, the input will not be focused automatically.\n *\n * When using a `variant` of `native` the browser will focus\n * the last eager field as it is using a tooltip.\n * In this case it is better to just provide one eager field.\n */\n @property({ type: Boolean }) eager = false;\n\n // Automatically refresh all event listeners when the on property changes.\n @watch('on', { waitUntilFirstUpdate: true })\n handleListenerChange() {\n this.updateEvents();\n }\n\n @watch('eager', { waitUntilFirstUpdate: false })\n async handleEagerChange() {\n if (this.eager) {\n const input = this.getInput();\n await this.updateComplete;\n input?.reportValidity();\n this.eagerFirstMount = true;\n } else {\n this.eagerFirstMount = false;\n }\n }\n\n // Synchronize the validation message on the wrapped input with the custom message\n @watch('customValidationMessage', { waitUntilFirstUpdate: true })\n handleCustomValidationMessageChange() {\n const input = this.getInput();\n if (input) {\n this.setCustomValidationMessage(input);\n this.setValidationMessage(input);\n }\n }\n\n /**\n * Returns the validity state of the input component.\n * `true` for valid and `false` for invalid.\n */\n getValidity() {\n return this.isValid;\n }\n\n /**\n * Get the input element to validate. Defined as the first slotted element\n * @returns The input element or undefined if not found\n */\n private getInput() {\n const input = this.slottedChildren[0];\n return input ? input as HTMLInputElement : undefined;\n }\n\n private setAlertSize() {\n this.alertSize = alertSizeForInput(this.getInput());\n }\n\n /**\n * Get the event names to listen for.\n * If the input is a synergy element, will use syn- prefixes.\n * @returns The event names to listen for\n */\n // eslint-disable-next-line complexity\n private getUsedEventNames() {\n const input = this.getInput();\n\n // If there is no input, skip before doing any harm\n if (!input) {\n return [];\n }\n\n // Make sure to always use an array of events\n // This is needed because on may be a special value like \"live\"\n const on = normalizeEventAttribute(this.on);\n\n // Filter makes sure to remove empty values, e.g.\n // <syn-validate on=\"\"></syn-validate>\n const [...events] = on.filter(Boolean);\n\n // Make sure to always have an invalid event\n if (!events.includes('invalid')) {\n events.push('invalid');\n }\n\n // Special handling for the live keyword:\n // live always means on input and blur\n if (events.includes('live')) {\n events.push('input');\n events.push('blur');\n }\n\n // Make sure to remove duplicated events and the live property\n // and map the events to the correct event names\n return Array.from(new Set(\n events\n .filter(e => e !== 'live')\n .map(e => getEventNameForElement(input, e)),\n ));\n }\n\n /**\n * Update the events on the input element.\n */\n private updateEvents() {\n this.controller.abort();\n this.controller = new AbortController();\n const input = this.getInput();\n\n if (!input) {\n return;\n }\n\n const events = this.getUsedEventNames();\n events.forEach(eventName => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n input.addEventListener(eventName, this.validate, {\n capture: isInvalidEvent(eventName),\n signal: this.controller.signal,\n });\n });\n\n // If the change event is not included,\n // make sure to attach a custom listener that resets the validation message\n // This is needed as the custom message may be set on change\n const usedChangeEvent = getEventNameForElement(input, 'change');\n if (!events.includes(usedChangeEvent)) {\n input.addEventListener(usedChangeEvent, this.internalRevalidate, {\n signal: this.controller.signal,\n });\n }\n\n // #664: Add focus/blur listeners specifically for tooltip variant\n // This is needed because we want to show the tooltip on focus and hide it on blur, but only when using the tooltip variant.\n // Otherwise, this would interfere with the native validation tooltip, which also relies on focus and blur events.\n const focusEvent = getEventNameForElement(input, 'focus');\n const blurEvent = getEventNameForElement(input, 'blur');\n\n input.addEventListener(focusEvent, this.handleInputFocus, {\n signal: this.controller.signal,\n });\n\n input.addEventListener(blurEvent, this.handleInputBlur, {\n signal: this.controller.signal,\n });\n }\n\n private setValidationMessage(input: HTMLInputElement) {\n const { customValidationMessage } = this;\n const validationMessage = customValidationMessage || input.validationMessage;\n this.validationMessage = validationMessage;\n }\n\n /**\n * Set the custom validation message to the input. This will make sure to either:\n * - use the custom message if one is set or\n * - use the default message if the custom message is empty\n */\n private setCustomValidationMessage(input: HTMLInputElement) {\n // Set the custom validation message on the input only once, when the customValidationMessage\n // is changed. Otherwise there could be problems with `variant=\"native\"` and `on=\"live\"` or\n // `on=\"blur\"`, because the browser popup will never disappear even if clicking somewhere else.\n input.setCustomValidity(this.customValidationMessage);\n }\n\n /**\n * Set the validation message from the input element\n * @param e The event that was received\n */\n private internalRevalidate = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.validity?.valid) {\n this.validationMessage = '';\n }\n };\n\n /**\n * Handle focus/blur events for tooltip variant\n */\n private handleInputFocus = () => {\n this.hasFocus = true;\n };\n\n private handleInputBlur = () => {\n this.hasFocus = false;\n };\n\n /**\n * Handle the blur event during validation\n */\n // eslint-disable-next-line class-methods-use-this\n private handleFocus(input: HTMLInputElement) {\n const activeElement = document.activeElement! as HTMLInputElement;\n const activeElementIsWrapped = activeElement.closest('syn-validate');\n\n if (!activeElement.validity?.valid && activeElementIsWrapped) {\n // The active element is invalid do not scroll\n return;\n }\n\n input.scrollIntoView({ block: 'nearest' });\n input.focus();\n }\n\n /**\n * Triggers a validation run, showing the validation message if needed.\n */\n // eslint-disable-next-line complexity\n private validate = async (e: Event) => {\n // Make sure to stop the validate component from going into an endless cycle of triggering\n if (isInvalidEvent(e.type) && this.variant === 'native' && this.isInternalTriggeredInvalid === true) {\n this.isInternalTriggeredInvalid = false;\n return;\n }\n\n // Make sure to always prevent the invalid event when not using native validation\n if (isInvalidEvent(e.type) && this.variant !== 'native') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const input = e.currentTarget as HTMLInputElement;\n if (isSynergyElement(input)) {\n // When using a synergy element, we need to wait for it to be ready!\n // This is needed as the validity state of the element may not be set yet.\n await input.updateComplete;\n }\n this.isValid = input.validity?.valid;\n\n // When we are using eager, make sure to skip focus on the first mount\n if (this.eager && this.eagerFirstMount) {\n this.eagerFirstMount = false;\n this.setValidationMessage(input);\n return;\n }\n\n // If the active element that has focus is placed in a validate component,\n // make sure to not loose focus.\n if (!this.isValid && !isBlurEvent(e.type)) {\n this.handleFocus(input);\n }\n\n this.setValidationMessage(input);\n\n // Trigger reportValidity when using native validation, so the browser popup is also shown\n // for other events than `invalid`. All events except the blur event, should trigger this.\n if (!isBlurEvent(e.type) && this.variant === 'native') {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.updateComplete.then(() => {\n this.isInternalTriggeredInvalid = true;\n input.reportValidity();\n });\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.updateEvents();\n\n // #713: Make sure to set the custom validation message on mount\n // When we have a custom element, we need to wait for it to be ready!\n const input = this.getInput();\n\n if (this.customValidationMessage) {\n if (isSynergyElement(input)) {\n await input.updateComplete;\n }\n input?.setCustomValidity(this.customValidationMessage);\n }\n\n // Make sure to run validation on mount if eager is set\n if (this.eager) {\n await this.updateComplete;\n this.isValid = input?.validity?.valid ?? false;\n input?.reportValidity();\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n // #1119: Update alert size when the input size changes\n // Note that we need to create our own observer here,\n // as the size attribute may be changed on the input element directly,\n // which would not be captured by the synergy-element observer.\n this.sizeObserver = new MutationObserver(entries => {\n const input = this.getInput();\n\n if (!input) {\n return;\n }\n\n const hasSizeChanged = entries\n .filter(({ target }) => target === input)\n .every(\n entry => entry.attributeName === 'size',\n );\n\n if (hasSizeChanged) {\n this.setAlertSize();\n }\n });\n\n this.sizeObserver.observe(this, {\n attributeFilter: ['size'],\n attributes: true,\n subtree: true,\n });\n\n // #717: Make sure to remove to rerun validation when\n // disabled or readonly properties change on the input\n this.observer = new MutationObserver(entries => {\n const input = this.getInput();\n\n if (!input) {\n return;\n }\n\n // Check if the input is disabled or readonly\n const hasDisabledOrReadonly = entries\n .filter(({ target }) => target === input)\n .every(entry => {\n const target = entry.target as HTMLInputElement;\n return target.hasAttribute('disabled') || target.hasAttribute('readonly');\n });\n\n if (hasDisabledOrReadonly) {\n this.isValid = true;\n this.validationMessage = '';\n } else {\n // When using a synergy element, we need to check the validity after the element is updated,\n // as we cannot rely on the validity state of the element itself.\n // Unfortunately, this depends on used browser :(.\n const waitForPromise = isSynergyElement(input)\n ? input.updateComplete\n : Promise.resolve();\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n waitForPromise.then(() => {\n this.isValid = input?.validity?.valid ?? false;\n this.validationMessage = input?.validationMessage ?? '';\n });\n }\n });\n\n this.observer.observe(this, {\n attributeFilter: ['disabled', 'readonly'],\n attributes: true,\n subtree: true,\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.controller.abort();\n this?.observer?.disconnect();\n this?.sizeObserver?.disconnect();\n }\n\n updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n // #664: Make sure to update the syn-tooltip if the validation state changes when using the tooltip variant\n if (this.variant !== 'tooltip') {\n return;\n }\n\n const tooltip = this.tooltipElement;\n\n if (!tooltip) {\n return;\n }\n\n // When we have a valid tooltip,\n // we need to update the content and show or hide it based on the validation state and focus state.\n // We have to do this manually, as there is a problem when updating open and content at the same time.\n // The order is critical: fill before showing, don\u00B4t update the content during hide.\n const shouldShowTooltip = !this.isValid && this.validationMessage && this.hasFocus;\n\n if (shouldShowTooltip) {\n tooltip.content = this.validationMessage;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tooltip.show();\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tooltip.hide();\n }\n }\n\n private renderInlineValidation() {\n if (this.variant !== 'inline' || !this.validationMessage) {\n return '';\n }\n\n return html`\n <syn-alert\n open\n exportparts=\"base:alert__base,message:alert__message,icon:alert__icon\"\n part=\"alert\"\n size=${ifDefined(this.alertSize)}\n variant=\"danger\"\n >\n ${!this.hideIcon\n ? html`<syn-icon slot=\"icon\" name=\"status-error\" library=\"system\"></syn-icon>`\n : ''\n }\n ${this.validationMessage}\n </syn-alert>\n `;\n }\n\n render() {\n // #664: When using the tooltip variant, we need to wrap the default slot in a tooltip when the input is invalid and has a validation message.\n const slotContent = this.variant === 'tooltip'\n ? html`\n <syn-tooltip\n .anchor=${getActualInputElement(this.getInput()) as Element ?? undefined}\n exportparts=\"base:tooltip__base,base__popup:tooltip__popup,base__arrow:tooltip__arrow,body:tooltip__body\"\n .open=${this.eager ? !this.isValid && this.validationMessage.length > 0 : false}\n part=\"tooltip\"\n placement=\"bottom\"\n trigger=\"manual\"\n >\n ${renderDefaultSlot()}\n </syn-tooltip>\n ` : renderDefaultSlot();\n\n return html`\n <div\n class=\"validate\"\n part=\"base\"\n >\n ${slotContent}\n ${this.renderInlineValidation()}\n </div>\n `;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/menu-label/menu-label.custom.styles.ts"],
|
|
4
|
-
"sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n :host {\n --display-divider: block;\n }\n\n .menu-label__divider {\n --spacing: 0;\n\n display: var(--display-divider);\n margin-bottom: var(--syn-spacing-x-small);\n }\n\n .menu-label {\n color: var(--syn-input-color);\n font-family: var(--syn-font-sans);\n font-size: var(--syn-font-size-medium);\n font-weight: var(--syn-font-weight-semibold);\n letter-spacing: var(--syn-letter-spacing-normal);\n line-height: var(--syn-line-height-normal);\n padding: var(--syn-spacing-small) var(--syn-spacing-medium);\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,mCAAQ;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,26 +0,0 @@
|
|
|
1
|
-
// src/components/menu-label/menu-label.styles.ts
|
|
2
|
-
import { css } from "lit";
|
|
3
|
-
var menu_label_styles_default = css`
|
|
4
|
-
/* stylelint-disable */
|
|
5
|
-
:host {
|
|
6
|
-
display: block;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.menu-label {
|
|
10
|
-
display: inline-block;
|
|
11
|
-
font-family: var(--syn-font-sans);
|
|
12
|
-
font-size: var(--syn-font-size-small);
|
|
13
|
-
font-weight: var(--syn-font-weight-semibold);
|
|
14
|
-
line-height: var(--syn-line-height-normal);
|
|
15
|
-
letter-spacing: var(--syn-letter-spacing-normal);
|
|
16
|
-
color: var(--syn-color-neutral-500);
|
|
17
|
-
padding: var(--syn-spacing-2x-small) var(--syn-spacing-x-large);
|
|
18
|
-
user-select: none;
|
|
19
|
-
-webkit-user-select: none;
|
|
20
|
-
}
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
menu_label_styles_default
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=chunk.JILCM7FD.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/menu-label/menu-label.styles.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { css } from 'lit';\nexport default css`\n\t/* stylelint-disable */\n :host {\n display: block;\n }\n\n .menu-label {\n display: inline-block;\n font-family: var(--syn-font-sans);\n font-size: var(--syn-font-size-small);\n font-weight: var(--syn-font-weight-semibold);\n line-height: var(--syn-line-height-normal);\n letter-spacing: var(--syn-letter-spacing-normal);\n color: var(--syn-color-neutral-500);\n padding: var(--syn-spacing-2x-small) var(--syn-spacing-x-large);\n user-select: none;\n -webkit-user-select: none;\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AACA,SAAS,WAAW;AACpB,IAAO,4BAAQ;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": ["/* 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 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-design-system.github.io/?path=/docs/components-syn-menu--docs\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 @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
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
// src/components/menu-item/menu-item.styles.ts
|
|
2
|
-
import { css } from "lit";
|
|
3
|
-
var menu_item_styles_default = css`
|
|
4
|
-
/* stylelint-disable */
|
|
5
|
-
:host {
|
|
6
|
-
--submenu-offset: -2px;
|
|
7
|
-
|
|
8
|
-
display: block;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
:host([inert]) {
|
|
12
|
-
display: none;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.menu-item {
|
|
16
|
-
position: relative;
|
|
17
|
-
display: flex;
|
|
18
|
-
align-items: stretch;
|
|
19
|
-
font-family: var(--syn-font-sans);
|
|
20
|
-
font-size: var(--syn-font-size-medium);
|
|
21
|
-
font-weight: var(--syn-font-weight-normal);
|
|
22
|
-
line-height: var(--syn-line-height-normal);
|
|
23
|
-
letter-spacing: var(--syn-letter-spacing-normal);
|
|
24
|
-
color: var(--syn-color-neutral-700);
|
|
25
|
-
padding: var(--syn-spacing-2x-small) var(--syn-spacing-2x-small);
|
|
26
|
-
transition: var(--syn-transition-fast) fill;
|
|
27
|
-
user-select: none;
|
|
28
|
-
-webkit-user-select: none;
|
|
29
|
-
white-space: nowrap;
|
|
30
|
-
cursor: pointer;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.menu-item.menu-item--disabled {
|
|
34
|
-
outline: none;
|
|
35
|
-
opacity: 0.5;
|
|
36
|
-
cursor: not-allowed;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.menu-item.menu-item--loading {
|
|
40
|
-
outline: none;
|
|
41
|
-
cursor: wait;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.menu-item.menu-item--loading *:not(syn-spinner) {
|
|
45
|
-
opacity: 0.5;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.menu-item--loading syn-spinner {
|
|
49
|
-
--indicator-color: currentColor;
|
|
50
|
-
--track-width: 1px;
|
|
51
|
-
position: absolute;
|
|
52
|
-
font-size: 0.75em;
|
|
53
|
-
top: calc(50% - 0.5em);
|
|
54
|
-
left: 0.65rem;
|
|
55
|
-
opacity: 1;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.menu-item .menu-item__label {
|
|
59
|
-
flex: 1 1 auto;
|
|
60
|
-
display: inline-block;
|
|
61
|
-
text-overflow: ellipsis;
|
|
62
|
-
overflow: hidden;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.menu-item .menu-item__prefix {
|
|
66
|
-
flex: 0 0 auto;
|
|
67
|
-
display: flex;
|
|
68
|
-
align-items: center;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.menu-item .menu-item__prefix::slotted(*) {
|
|
72
|
-
margin-inline-end: var(--syn-spacing-x-small);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.menu-item .menu-item__suffix {
|
|
76
|
-
flex: 0 0 auto;
|
|
77
|
-
display: flex;
|
|
78
|
-
align-items: center;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.menu-item .menu-item__suffix::slotted(*) {
|
|
82
|
-
margin-inline-start: var(--syn-spacing-x-small);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/* Safe triangle */
|
|
86
|
-
.menu-item--submenu-expanded::after {
|
|
87
|
-
content: '';
|
|
88
|
-
position: fixed;
|
|
89
|
-
z-index: calc(var(--syn-z-index-dropdown) - 1);
|
|
90
|
-
top: 0;
|
|
91
|
-
right: 0;
|
|
92
|
-
bottom: 0;
|
|
93
|
-
left: 0;
|
|
94
|
-
clip-path: polygon(
|
|
95
|
-
var(--safe-triangle-cursor-x, 0) var(--safe-triangle-cursor-y, 0),
|
|
96
|
-
var(--safe-triangle-submenu-start-x, 0) var(--safe-triangle-submenu-start-y, 0),
|
|
97
|
-
var(--safe-triangle-submenu-end-x, 0) var(--safe-triangle-submenu-end-y, 0)
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
:host(:focus-visible) {
|
|
102
|
-
outline: none;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
:host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item,
|
|
106
|
-
.menu-item--submenu-expanded {
|
|
107
|
-
background-color: var(--syn-color-neutral-100);
|
|
108
|
-
color: var(--syn-color-neutral-1000);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
:host(:focus-visible) .menu-item {
|
|
112
|
-
outline: none;
|
|
113
|
-
background-color: var(--syn-color-primary-600);
|
|
114
|
-
color: var(--syn-color-neutral-0);
|
|
115
|
-
opacity: 1;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.menu-item .menu-item__check,
|
|
119
|
-
.menu-item .menu-item__chevron {
|
|
120
|
-
flex: 0 0 auto;
|
|
121
|
-
display: flex;
|
|
122
|
-
align-items: center;
|
|
123
|
-
justify-content: center;
|
|
124
|
-
width: 1.5em;
|
|
125
|
-
visibility: hidden;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.menu-item--checked .menu-item__check,
|
|
129
|
-
.menu-item--has-submenu .menu-item__chevron {
|
|
130
|
-
visibility: visible;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/* Add elevation and z-index to submenus */
|
|
134
|
-
syn-popup::part(popup) {
|
|
135
|
-
box-shadow: var(--syn-shadow-large);
|
|
136
|
-
z-index: var(--syn-z-index-dropdown);
|
|
137
|
-
margin-left: var(--submenu-offset);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.menu-item--rtl syn-popup::part(popup) {
|
|
141
|
-
margin-left: calc(-1 * var(--submenu-offset));
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
@media (forced-colors: active) {
|
|
145
|
-
:host(:hover:not([aria-disabled='true'])) .menu-item,
|
|
146
|
-
:host(:focus-visible) .menu-item {
|
|
147
|
-
outline: dashed 1px SelectedItem;
|
|
148
|
-
outline-offset: -1px;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
::slotted(syn-menu) {
|
|
153
|
-
max-width: var(--auto-size-available-width) !important;
|
|
154
|
-
max-height: var(--auto-size-available-height) !important;
|
|
155
|
-
}
|
|
156
|
-
`;
|
|
157
|
-
|
|
158
|
-
export {
|
|
159
|
-
menu_item_styles_default
|
|
160
|
-
};
|
|
161
|
-
//# sourceMappingURL=chunk.N7HN275B.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/menu-item/menu-item.styles.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { css } from 'lit';\n\nexport default css`\n\t/* stylelint-disable */\n :host {\n --submenu-offset: -2px;\n\n display: block;\n }\n\n :host([inert]) {\n display: none;\n }\n\n .menu-item {\n position: relative;\n display: flex;\n align-items: stretch;\n font-family: var(--syn-font-sans);\n font-size: var(--syn-font-size-medium);\n font-weight: var(--syn-font-weight-normal);\n line-height: var(--syn-line-height-normal);\n letter-spacing: var(--syn-letter-spacing-normal);\n color: var(--syn-color-neutral-700);\n padding: var(--syn-spacing-2x-small) var(--syn-spacing-2x-small);\n transition: var(--syn-transition-fast) fill;\n user-select: none;\n -webkit-user-select: none;\n white-space: nowrap;\n cursor: pointer;\n }\n\n .menu-item.menu-item--disabled {\n outline: none;\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu-item.menu-item--loading {\n outline: none;\n cursor: wait;\n }\n\n .menu-item.menu-item--loading *:not(syn-spinner) {\n opacity: 0.5;\n }\n\n .menu-item--loading syn-spinner {\n --indicator-color: currentColor;\n --track-width: 1px;\n position: absolute;\n font-size: 0.75em;\n top: calc(50% - 0.5em);\n left: 0.65rem;\n opacity: 1;\n }\n\n .menu-item .menu-item__label {\n flex: 1 1 auto;\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .menu-item .menu-item__prefix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__prefix::slotted(*) {\n margin-inline-end: var(--syn-spacing-x-small);\n }\n\n .menu-item .menu-item__suffix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__suffix::slotted(*) {\n margin-inline-start: var(--syn-spacing-x-small);\n }\n\n /* Safe triangle */\n .menu-item--submenu-expanded::after {\n content: '';\n position: fixed;\n z-index: calc(var(--syn-z-index-dropdown) - 1);\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n clip-path: polygon(\n var(--safe-triangle-cursor-x, 0) var(--safe-triangle-cursor-y, 0),\n var(--safe-triangle-submenu-start-x, 0) var(--safe-triangle-submenu-start-y, 0),\n var(--safe-triangle-submenu-end-x, 0) var(--safe-triangle-submenu-end-y, 0)\n );\n }\n\n :host(:focus-visible) {\n outline: none;\n }\n\n :host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item,\n .menu-item--submenu-expanded {\n background-color: var(--syn-color-neutral-100);\n color: var(--syn-color-neutral-1000);\n }\n\n :host(:focus-visible) .menu-item {\n outline: none;\n background-color: var(--syn-color-primary-600);\n color: var(--syn-color-neutral-0);\n opacity: 1;\n }\n\n .menu-item .menu-item__check,\n .menu-item .menu-item__chevron {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5em;\n visibility: hidden;\n }\n\n .menu-item--checked .menu-item__check,\n .menu-item--has-submenu .menu-item__chevron {\n visibility: visible;\n }\n\n /* Add elevation and z-index to submenus */\n syn-popup::part(popup) {\n box-shadow: var(--syn-shadow-large);\n z-index: var(--syn-z-index-dropdown);\n margin-left: var(--submenu-offset);\n }\n\n .menu-item--rtl syn-popup::part(popup) {\n margin-left: calc(-1 * var(--submenu-offset));\n }\n\n @media (forced-colors: active) {\n :host(:hover:not([aria-disabled='true'])) .menu-item,\n :host(:focus-visible) .menu-item {\n outline: dashed 1px SelectedItem;\n outline-offset: -1px;\n }\n }\n\n ::slotted(syn-menu) {\n max-width: var(--auto-size-available-width) !important;\n max-height: var(--auto-size-available-height) !important;\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AACA,SAAS,WAAW;AAEpB,IAAO,2BAAQ;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;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-label/menu-label.component.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { html } from 'lit';\nimport SynDivider from '../divider/divider.component.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './menu-label.styles.js';\nimport customStyles from './menu-label.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * @summary Menu labels are used to describe a group of menu items.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-menu-label--docs\n * @status stable\n * @since 2.0\n *\n * @slot - The menu label's content.\n *\n * @csspart base - The component's base wrapper.\n * @csspart divider - The divider that is displayed above the content\n * @csspart label - The label that is displayed below the divider\n *\n * @dependency syn-divider\n *\n * @cssproperty --display-divider - Display property of the divider. Defaults to \"block\"\n */\nexport default class SynMenuLabel extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n\n static dependencies = {\n 'syn-divider': SynDivider,\n };\n \n render() {\n return html`\n <div part=\"base\" class=\"menu-label-wrapper\">\n <syn-divider class=\"menu-label__divider\" part=\"divider\"></syn-divider>\n <slot part=\"label\" class=\"menu-label\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syn-menu-label': SynMenuLabel;\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AACA,SAAS,YAAY;AAwBrB,IAAqB,eAArB,cAA0C,eAAe;AAAA,EAOvD,SAAS;AACP,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT;AACF;AAfqB,aACZ,SAAyB,CAAC,0BAAiB,2BAAQ,gCAAY;AADnD,aAGZ,eAAe;AAAA,EACpB,eAAe;AACjB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/dropdown/dropdown.component.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { animateTo, stopAnimations } from '../../internal/animate.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { getAnimation, setDefaultAnimation } from '../../utilities/animation-registry.js';\nimport { getDeepestActiveElement } from '../../internal/active-elements.js';\nimport { getTabbableBoundary } from '../../internal/tabbable.js';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query } from 'lit/decorators.js';\nimport { waitForEvent } from '../../internal/event.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynPopup from '../popup/popup.component.js';\nimport styles from './dropdown.styles.js';\nimport customStyles from './dropdown.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type { SynSelectEvent } from '../../events/syn-select.js';\nimport type SynButton from '../button/button.js';\nimport type SynIconButton from '../icon-button/icon-button.js';\nimport type SynMenu from '../menu/menu.js';\n\n/**\n * @summary Dropdowns expose additional content that \"drops down\" in a panel.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-dropdown--docs\n * @status stable\n * @since 2.0\n *\n * @dependency syn-popup\n *\n * @slot - The dropdown's main content.\n * @slot trigger - The dropdown's trigger, usually a `<syn-button>` element.\n *\n * @event syn-show - Emitted when the dropdown opens.\n * @event syn-after-show - Emitted after the dropdown opens and all animations are complete.\n * @event syn-hide - Emitted when the dropdown closes.\n * @event syn-after-hide - Emitted after the dropdown closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper, an `<syn-popup>` element.\n * @csspart base__popup - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n * @csspart trigger - The container that wraps the trigger.\n * @csspart panel - The panel that gets shown when the dropdown is open.\n *\n * @animation dropdown.show - The animation to use when showing the dropdown.\n * @animation dropdown.hide - The animation to use when hiding the dropdown.\n */\nexport default class SynDropdown extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = { 'syn-popup': SynPopup };\n\n @query('.dropdown') popup: SynPopup;\n @query('.dropdown__trigger') trigger: HTMLSlotElement;\n @query('.dropdown__panel') panel: HTMLSlotElement;\n\n private readonly localize = new LocalizeController(this);\n private closeWatcher: CloseWatcher | null;\n\n /**\n * Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\n * can use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\n * inside of the viewport.\n */\n @property({ reflect: true }) placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'bottom-start';\n\n /** Disables the dropdown so the panel will not open. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /**\n * By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\n * dropdowns that allow for multiple interactions.\n */\n @property({ attribute: 'stay-open-on-select', type: Boolean, reflect: true }) stayOpenOnSelect = false;\n\n /**\n * The dropdown will close when the user interacts outside of this element (e.g. clicking). Useful for composing other\n * components that use a dropdown internally.\n */\n @property({ attribute: false }) containingElement?: HTMLElement;\n\n /** The distance in pixels from which to offset the panel away from its trigger. */\n @property({ type: Number }) distance = 0;\n\n /** The distance in pixels from which to offset the panel along its trigger. */\n @property({ type: Number }) skidding = 0;\n\n /**\n * Syncs the popup width or height to that of the trigger element.\n */\n @property({ reflect: true }) sync: 'width' | 'height' | 'both' | undefined = undefined;\n\n connectedCallback() {\n super.connectedCallback();\n\n if (!this.containingElement) {\n this.containingElement = this;\n }\n }\n\n firstUpdated() {\n this.panel.hidden = !this.open;\n\n // If the dropdown is visible on init, update its position\n if (this.open) {\n this.addOpenListeners();\n this.popup.active = true;\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeOpenListeners();\n this.hide();\n }\n\n focusOnTrigger() {\n const trigger = this.trigger.assignedElements({ flatten: true })[0] as HTMLElement | undefined;\n if (typeof trigger?.focus === 'function') {\n trigger.focus();\n }\n }\n\n getMenu() {\n return this.panel.assignedElements({ flatten: true }).find(el => el.tagName.toLowerCase() === 'syn-menu') as\n | SynMenu\n | undefined;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Close when escape is pressed inside an open dropdown. We need to listen on the panel itself and stop propagation\n // in case any ancestors are also listening for this key.\n if (this.open && event.key === 'Escape') {\n event.stopPropagation();\n this.hide();\n this.focusOnTrigger();\n }\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n // Close when escape or tab is pressed\n if (event.key === 'Escape' && this.open && !this.closeWatcher) {\n event.stopPropagation();\n this.focusOnTrigger();\n this.hide();\n return;\n }\n\n // Handle tabbing\n if (event.key === 'Tab') {\n // Tabbing within an open menu should close the dropdown and refocus the trigger\n if (this.open && document.activeElement?.tagName.toLowerCase() === 'syn-menu-item') {\n event.preventDefault();\n this.hide();\n this.focusOnTrigger();\n return;\n }\n\n const computeClosestContaining = (element: Element | null | undefined, tagName: string): Element | null => {\n if (!element) return null;\n\n const closest = element.closest(tagName);\n if (closest) return closest;\n\n const rootNode = element.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n return computeClosestContaining(rootNode.host, tagName);\n }\n\n return null;\n };\n\n // Tabbing outside of the containing element closes the panel\n //\n // If the dropdown is used within a shadow DOM, we need to obtain the activeElement within that shadowRoot,\n // otherwise `document.activeElement` will only return the name of the parent shadow DOM element.\n setTimeout(() => {\n const activeElement =\n this.containingElement?.getRootNode() instanceof ShadowRoot\n ? getDeepestActiveElement()\n : document.activeElement;\n\n if (\n !this.containingElement ||\n computeClosestContaining(activeElement, this.containingElement.tagName.toLowerCase()) !==\n this.containingElement\n ) {\n this.hide();\n }\n });\n }\n };\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n // Close when clicking outside of the containing element\n const path = event.composedPath();\n if (this.containingElement && !path.includes(this.containingElement)) {\n this.hide();\n }\n };\n\n private handlePanelSelect = (event: SynSelectEvent) => {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (!this.stayOpenOnSelect && target.tagName.toLowerCase() === 'syn-menu') {\n this.hide();\n this.focusOnTrigger();\n }\n };\n\n handleTriggerClick() {\n if (this.open) {\n this.hide();\n } else {\n this.show();\n this.focusOnTrigger();\n }\n }\n\n async handleTriggerKeyDown(event: KeyboardEvent) {\n // When spacebar/enter is pressed, show the panel but don't focus on the menu. This let's the user press the same\n // key again to hide the menu in case they don't want to make a selection.\n if ([' ', 'Enter'].includes(event.key)) {\n event.preventDefault();\n this.handleTriggerClick();\n return;\n }\n\n const menu = this.getMenu();\n\n if (menu) {\n const menuItems = menu.getAllItems();\n const firstMenuItem = menuItems[0];\n const lastMenuItem = menuItems[menuItems.length - 1];\n\n // When up/down is pressed, we make the assumption that the user is familiar with the menu and plans to make a\n // selection. Rather than toggle the panel, we focus on the menu (if one exists) and activate the first item for\n // faster navigation.\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n event.preventDefault();\n\n // Show the menu if it's not already open\n if (!this.open) {\n this.show();\n\n // Wait for the dropdown to open before focusing, but not the animation\n await this.updateComplete;\n }\n\n if (menuItems.length > 0) {\n // Focus on the first/last menu item after showing\n this.updateComplete.then(() => {\n if (event.key === 'ArrowDown' || event.key === 'Home') {\n menu.setCurrentItem(firstMenuItem);\n firstMenuItem.focus();\n }\n\n if (event.key === 'ArrowUp' || event.key === 'End') {\n menu.setCurrentItem(lastMenuItem);\n lastMenuItem.focus();\n }\n });\n }\n }\n }\n }\n\n handleTriggerKeyUp(event: KeyboardEvent) {\n // Prevent space from triggering a click event in Firefox\n if (event.key === ' ') {\n event.preventDefault();\n }\n }\n\n handleTriggerSlotChange() {\n this.updateAccessibleTrigger();\n }\n\n //\n // Slotted triggers can be arbitrary content, but we need to link them to the dropdown panel with `aria-haspopup` and\n // `aria-expanded`. These must be applied to the \"accessible trigger\" (the tabbable portion of the trigger element\n // that gets slotted in) so screen readers will understand them. The accessible trigger could be the slotted element,\n // a child of the slotted element, or an element in the slotted element's shadow root.\n //\n // For example, the accessible trigger of an <syn-button> is a <button> located inside its shadow root.\n //\n // To determine this, we assume the first tabbable element in the trigger slot is the \"accessible trigger.\"\n //\n updateAccessibleTrigger() {\n const assignedElements = this.trigger.assignedElements({ flatten: true }) as HTMLElement[];\n const accessibleTrigger = assignedElements.find(el => getTabbableBoundary(el).start);\n let target: HTMLElement;\n\n if (accessibleTrigger) {\n switch (accessibleTrigger.tagName.toLowerCase()) {\n // Synergy buttons have to update the internal button so it's announced correctly by screen readers\n case 'syn-button':\n case 'syn-icon-button':\n target = (accessibleTrigger as SynButton | SynIconButton).button;\n break;\n\n default:\n target = accessibleTrigger;\n }\n\n target.setAttribute('aria-haspopup', 'true');\n target.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n }\n\n /** Shows the dropdown panel. */\n async show() {\n if (this.open) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'syn-after-show');\n }\n\n /** Hides the dropdown panel */\n async hide() {\n if (!this.open) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'syn-after-hide');\n }\n\n /**\n * Instructs the dropdown menu to reposition. Useful when the position or size of the trigger changes when the menu\n * is activated.\n */\n reposition() {\n this.popup.reposition();\n }\n\n addOpenListeners() {\n this.panel.addEventListener('syn-select', this.handlePanelSelect);\n if ('CloseWatcher' in window) {\n this.closeWatcher?.destroy();\n this.closeWatcher = new CloseWatcher();\n this.closeWatcher.onclose = () => {\n this.hide();\n this.focusOnTrigger();\n };\n } else {\n this.panel.addEventListener('keydown', this.handleKeyDown);\n }\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n }\n\n removeOpenListeners() {\n if (this.panel) {\n this.panel.removeEventListener('syn-select', this.handlePanelSelect);\n this.panel.removeEventListener('keydown', this.handleKeyDown);\n }\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n this.closeWatcher?.destroy();\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.disabled) {\n this.open = false;\n return;\n }\n\n this.updateAccessibleTrigger();\n\n if (this.open) {\n // Show\n this.emit('syn-show');\n this.addOpenListeners();\n\n await stopAnimations(this);\n this.panel.hidden = false;\n this.popup.active = true;\n const { keyframes, options } = getAnimation(this, 'dropdown.show', { dir: this.localize.dir() });\n await animateTo(this.popup.popup, keyframes, options);\n\n this.emit('syn-after-show');\n } else {\n // Hide\n this.emit('syn-hide');\n this.removeOpenListeners();\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'dropdown.hide', { dir: this.localize.dir() });\n await animateTo(this.popup.popup, keyframes, options);\n this.panel.hidden = true;\n this.popup.active = false;\n\n this.emit('syn-after-hide');\n }\n }\n\n render() {\n return html`\n <syn-popup\n part=\"base\"\n exportparts=\"popup:base__popup\"\n id=\"dropdown\"\n placement=${this.placement}\n distance=${this.distance}\n skidding=${this.skidding}\n flip\n shift\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n sync=${ifDefined(this.sync ? this.sync : undefined)}\n class=${classMap({\n dropdown: true,\n 'dropdown--open': this.open\n })}\n >\n <slot\n name=\"trigger\"\n slot=\"anchor\"\n part=\"trigger\"\n class=\"dropdown__trigger\"\n @click=${this.handleTriggerClick}\n @keydown=${this.handleTriggerKeyDown}\n @keyup=${this.handleTriggerKeyUp}\n @slotchange=${this.handleTriggerSlotChange}\n ></slot>\n\n <div aria-hidden=${this.open ? 'false' : 'true'} aria-labelledby=\"dropdown\">\n <slot part=\"panel\" class=\"dropdown__panel\"></slot>\n </div>\n </syn-popup>\n `;\n }\n}\n\nsetDefaultAnimation('dropdown.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 }\n ],\n options: { duration: 100, easing: 'ease' }\n});\n\nsetDefaultAnimation('dropdown.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 }\n ],\n options: { duration: 100, easing: 'ease' }\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-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 customStyles from './menu-item.custom.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 2.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, customStyles];\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": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/dropdown/dropdown.styles.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { css } from 'lit';\n\nexport default css`\n\t/* stylelint-disable */\n :host {\n display: inline-block;\n }\n\n .dropdown::part(popup) {\n z-index: var(--syn-z-index-dropdown);\n }\n\n .dropdown[data-current-placement^='top']::part(popup) {\n transform-origin: bottom;\n }\n\n .dropdown[data-current-placement^='bottom']::part(popup) {\n transform-origin: top;\n }\n\n .dropdown[data-current-placement^='left']::part(popup) {\n transform-origin: right;\n }\n\n .dropdown[data-current-placement^='right']::part(popup) {\n transform-origin: left;\n }\n\n .dropdown__trigger {\n display: block;\n }\n\n .dropdown__panel {\n font-family: var(--syn-font-sans);\n font-size: var(--syn-font-size-medium);\n font-weight: var(--syn-font-weight-normal);\n box-shadow: var(--syn-shadow-large);\n border-radius: var(--syn-border-radius-medium);\n pointer-events: none;\n }\n\n .dropdown--open .dropdown__panel {\n display: block;\n pointer-events: all;\n }\n\n /* When users slot a menu, make sure it conforms to the popup's auto-size */\n ::slotted(syn-menu) {\n max-width: var(--auto-size-available-width) !important;\n max-height: var(--auto-size-available-height) !important;\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AACA,SAAS,WAAW;AAEpB,IAAO,0BAAQ;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-item/menu-item.custom.styles.ts"],
|
|
4
|
-
"sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n :host {\n /* Custom override for hiding the checkmark in menus it is not needed */\n --display-checkmark: flex;\n\n /**\n * Default size settings for menu-item\n * This prepares the custom sizes that we will add later on\n * @see https://github.com/synergy-design-system/design/issues/277\n */\n --menuitem-inset-border-horizontal: var(--syn-spacing-2x-small);\n --menuitem-inset-border-vertical: calc(var(--syn-spacing-x-small) - 1px);\n --menuitem-min-height: var(--syn-input-height-medium);\n --menuitem-padding: var(--syn-input-spacing-medium);\n --menuitem-font-size: var(--syn-input-font-size-medium);\n --menuitem-icon-size: var(--syn-spacing-large);\n }\n\n .menu-item {\n align-items: center;\n\n /*\n * #1127: Brand2025 defines a small gap between options\n * and rounded corners. We achieve that using an border\n * that simulates the gap using the menu background color.\n */\n border: solid var(--syn-panel-background-color);\n\n /* Border Radius needs to be increased to cover the outline */\n border-radius: calc(var(--syn-focus-ring-border-radius) + var(--menuitem-inset-border-vertical));\n border-width: var(--menuitem-inset-border-horizontal) var(--menuitem-inset-border-vertical);\n color: var(--syn-option-color);\n font-size: var(--menuitem-font-size);\n\n /* Height is dependent on line-height of .option__label, which does not fit completely to layout */\n min-height: var(--menuitem-min-height, var(--syn-input-height-medium));\n padding: 0 calc(var(--menuitem-padding) - var(--menuitem-inset-border-vertical));\n }\n\n :host(:focus-visible) .menu-item {\n background-color: var(--syn-option-background-color-active);\n }\n\n /** #429: Use token for opacity */\n .menu-item.menu-item--disabled {\n opacity: var(--syn-opacity-50);\n }\n\n /**\n * Handling for slotted prefix and suffix\n */\n .menu-item .menu-item__prefix::slotted(*) {\n margin-inline-end: var(--syn-spacing-small);\n }\n\n .menu-item .menu-item__suffix::slotted(*) {\n margin-inline-start: var(--syn-spacing-small);\n }\n\n /**\n * Set the default font size to make icons appear correct\n */\n .menu-item .menu-item__prefix::slotted(syn-icon),\n .menu-item .menu-item__suffix::slotted(syn-icon) {\n color: var(--syn-option-icon-color);\n font-size: var(--syn-font-size-x-large);\n }\n\n :host(:hover) .menu-item .menu-item__prefix::slotted(syn-icon),\n :host(:hover) .menu-item__suffix::slotted(syn-icon) {\n color: var(--syn-option-icon-color-hover);\n }\n\n :host(:focus-visible) .menu-item .menu-item__prefix::slotted(syn-icon),\n :host(:focus-visible) .menu-item .menu-item__suffix::slotted(syn-icon) {\n color: var(--syn-option-icon-color-active);\n }\n\n /* Adjust background and text color for focused elements */\n /* stylelint-disable selector-not-notation, plugin/no-unsupported-browser-features */\n :host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item,\n .menu-item--submenu-expanded {\n background-color: var(--syn-option-background-color-hover);\n color: var(--syn-option-color-hover);\n }\n /* stylelint-enable selector-not-notation, plugin/no-unsupported-browser-features */\n\n /**\n * Adjust the size of icons\n */\n .menu-item .menu-item__chevron,\n .menu-item .menu-item__check {\n display: var(--display-checkmark);\n font-size: var(--syn-font-size-x-large);\n width: var(--syn-font-size-x-large);\n }\n\n /**\n * This makes sure the chevron does not take any space if we do not have children\n */\n .menu-item .menu-item__chevron {\n display: none;\n margin-inline-start: var(--syn-spacing-small);\n }\n\n .menu-item .menu-item__check {\n color: var(--syn-option-check-color);\n margin-inline-end: var(--syn-spacing-small);\n }\n\n /**\n * When in loading state, do not show the checkmark as it would bleed through\n */\n .menu-item--loading .menu-item__check {\n visibility: hidden;\n }\n\n /**\n * Make sure the checkbox is also visible when the item is active\n */\n :host(:focus-visible) .menu-item--checked .menu-item__check {\n color: var(--syn-option-check-color-active);\n }\n\n :host(:hover) .menu-item--checked .menu-item__check {\n color: var(--syn-option-check-color-hover);\n }\n\n /**\n * Special handling for the submenu chevron:\n * We are using the \"chevron-down\" icon per default as\n * we do not want all chevrons to be part of the bundle\n * Therefore, we have to transform it into the right direction\n */\n .menu-item .menu-item__chevron syn-icon {\n transform: rotate(-90deg);\n }\n\n .menu-item--rtl .menu-item__chevron syn-icon {\n transform: rotate(90deg);\n }\n\n .menu-item.menu-item--loading *:not(syn-spinner) {\n opacity: var(--syn-opacity-50);\n }\n\n /**\n * Make sure to show the chevron if there are children\n */\n .menu-item--has-submenu .menu-item__chevron {\n display: flex;\n }\n\n /**\n * Adjustments for the spinner in loading state\n */\n .menu-item--loading syn-spinner {\n --track-width: 2px;\n\n color: var(--syn-interactive-emphasis-color);\n font-size: var(--syn-font-size-medium);\n left: calc(var(--menuitem-padding) - var(--menuitem-inset-border-vertical));\n }\n\n /**\n * Highlight checked items\n */\n .menu-item--checked .menu-item__label {\n font-weight: var(--syn-font-weight-semibold);\n }\n\n /* Needed if we do not show the checkmark */\n :host(:not([type=\"checkmark\"]):not([loading])) .menu-item__label {\n min-height: var(--syn-font-size-x-large);\n }\n\n /* #1131: Make sure that slotted menus do show the correct border radius */\n syn-popup::part(popup) {\n border-radius: var(--syn-input-border-radius-medium);\n }\n\n /**\n * #1009: Adjust the position for submenus when they are opened to the left, too.\n * This works because the data-current-placement attribute is set on the popup accordingly.\n * We do not use the actual placement attribute, because it does not update when the placement changes\n */\n syn-popup[data-current-placement^=\"left\"]::part(popup) {\n margin-left: calc(-1 * var(--submenu-offset));\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,kCAAQ;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;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;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,24 +0,0 @@
|
|
|
1
|
-
// src/components/menu/menu.styles.ts
|
|
2
|
-
import { css } from "lit";
|
|
3
|
-
var menu_styles_default = css`
|
|
4
|
-
/* stylelint-disable */
|
|
5
|
-
:host {
|
|
6
|
-
display: block;
|
|
7
|
-
position: relative;
|
|
8
|
-
background: var(--syn-panel-background-color);
|
|
9
|
-
border: solid var(--syn-panel-border-width) var(--syn-panel-border-color);
|
|
10
|
-
border-radius: var(--syn-border-radius-medium);
|
|
11
|
-
padding: var(--syn-spacing-x-small) 0;
|
|
12
|
-
overflow: auto;
|
|
13
|
-
overscroll-behavior: none;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
::slotted(syn-divider) {
|
|
17
|
-
--spacing: var(--syn-spacing-x-small);
|
|
18
|
-
}
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
menu_styles_default
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=chunk.V37RYGE7.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/menu/menu.styles.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\nimport { css } from 'lit';\n\nexport default css`\n\t/* stylelint-disable */\n :host {\n display: block;\n position: relative;\n background: var(--syn-panel-background-color);\n border: solid var(--syn-panel-border-width) var(--syn-panel-border-color);\n border-radius: var(--syn-border-radius-medium);\n padding: var(--syn-spacing-x-small) 0;\n overflow: auto;\n overscroll-behavior: none;\n }\n\n ::slotted(syn-divider) {\n --spacing: var(--syn-spacing-x-small);\n }\n`;\n"],
|
|
5
|
-
"mappings": ";AACA,SAAS,WAAW;AAEpB,IAAO,sBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|