@infineon/infineon-design-system-stencil 30.13.0 → 30.14.0--canary.1702.e26663ab9415c93f7bc9deca9a5632932ea6a2cc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"names":["radioButtonCss","IfxRadioButtonStyle0","RadioButton","constructor","hostRef","this","disabled","error","size","internalChecked","hasSlot","isChecked","componentWillLoad","checked","slot","el","innerHTML","handleRadioButtonClick","event","stopPropagation","inputElement","click","ifxChange","emit","handleChange","target","name","render","h","key","value","class","onClick","bind","tabIndex","type","hidden","ref","e"],"sources":["src/components/radio-button/radio-button.scss?tag=ifx-radio-button","src/components/radio-button/radio-button.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.radioButton__container {\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n padding: 0px;\n gap: tokens.$ifxSpace100;\n cursor: pointer;\n font-family: var(--ifx-font-family);\n\n &.m .radioButton__wrapper {\n width: tokens.$ifxSize300;\n height: tokens.$ifxSize300;\n }\n\n .radioButton__wrapper {\n width: tokens.$ifxSize250;\n height: tokens.$ifxSize250;\n position: relative;\n display: block;\n border-radius: 50%;\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid #575352;\n\n &:focus {\n outline: none;\n\n &::before {\n content: '';\n position: absolute;\n width: calc(100% + 4px);\n height: calc(100% + 4px);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border: 2px solid tokens.$ifxColorOcean500;\n border-radius: 50%;\n }\n }\n\n .radioButton__wrapper-mark {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: #0A8276;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n border-color: tokens.$ifxColorBaseTransparent;\n }\n\n &:hover {\n background-color: tokens.$ifxColorEngineering200;\n }\n\n &.disabled {\n background-color: #BFBBBB;\n border-color: #BFBBBB;\n\n &.error {\n\n &:hover,\n &:focus-visible {\n border-color: #CD002F;\n }\n }\n }\n\n &.checked {\n border-color: #0A8276;\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 10px;\n height: 10px;\n background-color: #0A8276;\n border-radius: 50%;\n }\n\n &.disabled::after {\n background-color: #BFBBBB;\n }\n\n\n &:hover {\n border-color: tokens.$ifxColorOcean600;\n\n & .radioButton__wrapper-mark {\n background-color: tokens.$ifxColorOcean600;\n }\n }\n\n &.disabled {\n background-color: tokens.$ifxColorBaseWhite;\n border-color: #BFBBBB;\n\n &.disabled::after {\n background-color: #BFBBBB;\n }\n\n & .radioButton__wrapper-mark {\n background-color: #BFBBBB;\n }\n }\n }\n\n &.error:not(.disabled) {\n border-color: #CD002F;\n\n &:hover,\n &:focus-visible {\n border-color: #CD002F;\n }\n }\n }\n\n .label {\n display: flex;\n align-items: center;\n height: tokens.$ifxSize250;\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n color: tokens.$ifxColorBaseBlack;\n flex: none;\n order: 1;\n flex-grow: 0;\n\n &.label-m {\n height: tokens.$ifxSize300;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n }\n\n &.disabled {\n color: #BFBBBB;\n }\n\n\n\n &:hover {\n cursor: pointer;\n }\n }\n}","import { Component, h, Prop, Element, State, Event, EventEmitter, Listen, Method } from '@stencil/core';\n \n\n@Component({\n tag: 'ifx-radio-button',\n styleUrl: 'radio-button.scss',\n shadow: false,\n formAssociated: false\n})\nexport class RadioButton {\n @Element() el;\n @Prop() disabled: boolean = false;\n @Prop() value: string;\n @Prop() error: boolean = false;\n @Prop() size: \"s\" | \"m\" = \"s\";\n @Prop() name: string;\n @Prop() checked: boolean;\n @State() internalChecked: boolean = false;\n @State() hasSlot: boolean = true;\n\n @State() inputElement: HTMLInputElement;\n\n @Event({ eventName: 'ifxChange' }) ifxChange: EventEmitter;\n\n /**\n * @returns whether the radio button is checked.\n */\n @Method()\n async isChecked(): Promise<boolean> {\n return this.internalChecked;\n }\n \n componentWillLoad() {\n if (this.checked) this.internalChecked = this.checked;\n const slot = this.el.innerHTML;\n if (slot) {\n this.hasSlot = true;\n } else this.hasSlot = false;\n }\n\n\n /**\n * Click the hidden input element to let it handle the state\n * and emit ifxChange event.\n */\n handleRadioButtonClick(event: PointerEvent) {\n if (this.disabled) {\n event.stopPropagation();\n return;\n }\n\n this.inputElement.click();\n this.internalChecked = this.inputElement.checked;\n this.ifxChange.emit(this.internalChecked);\n }\n\n /**\n * Listen to all change events.\n * Needed to get informed when another button of the group gets chcked \n * and this one needs to become unchecked. \n * \n * @param event \n */\n @Listen('change', { target: 'window' }) \n handleChange(event: Event) {\n const target = event.target as HTMLInputElement;\n if (target.name === this.name) {\n this.internalChecked = this.inputElement.checked;\n }\n }\n\n render() {\n return (\n <div\n aria-label='a radio button' aria-value={this.value} aria-disabled={this.disabled}\n class={`radioButton__container ${this.size} ${this.disabled ? 'disabled' : ''}`}\n onClick={this.handleRadioButtonClick.bind(this)}\n >\n <div\n class={`radioButton__wrapper \n ${this.internalChecked ? 'checked' : ''} \n ${this.disabled ? 'disabled' : ''} \n ${this.error ? 'error' : ''}`}\n tabIndex={this.disabled ? -1 : 0}\n >\n {this.internalChecked && <div class=\"radioButton__wrapper-mark\"></div>}\n </div>\n {this.hasSlot && (\n <div class={`label ${this.size === \"m\" ? \"label-m\" : \"\"} ${this.disabled ? 'disabled' : ''}`}>\n <slot />\n </div>\n )}\n <input\n type=\"radio\" \n hidden \n ref={el => this.inputElement = el as HTMLInputElement} \n name={this.name} \n value={this.value}\n checked={this.internalChecked} \n disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}></input>\n </div>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAiB,y5FACvB,MAAAC,EAAeD,E,MCQFE,EAAW,MANxB,WAAAC,CAAAC,G,+CAQUC,KAAAC,SAAoB,MAEpBD,KAAAE,MAAiB,MACjBF,KAAAG,KAAkB,IAGjBH,KAAAI,gBAA2B,MAC3BJ,KAAAK,QAAmB,I,CAU5B,eAAMC,GACJ,OAAON,KAAKI,e,CAGd,iBAAAG,GACE,GAAIP,KAAKQ,QAASR,KAAKI,gBAAkBJ,KAAKQ,QAC9C,MAAMC,EAAOT,KAAKU,GAAGC,UACrB,GAAIF,EAAM,CACRT,KAAKK,QAAU,I,MACVL,KAAKK,QAAU,K,CAQxB,sBAAAO,CAAuBC,GACrB,GAAIb,KAAKC,SAAU,CACjBY,EAAMC,kBACN,M,CAGFd,KAAKe,aAAaC,QAClBhB,KAAKI,gBAAkBJ,KAAKe,aAAaP,QACzCR,KAAKiB,UAAUC,KAAKlB,KAAKI,gB,CAW3B,YAAAe,CAAaN,GACX,MAAMO,EAASP,EAAMO,OACrB,GAAIA,EAAOC,OAASrB,KAAKqB,KAAM,CAC7BrB,KAAKI,gBAAkBJ,KAAKe,aAAaP,O,EAI7C,MAAAc,GACE,OACEC,EAAA,OAAAC,IAAA,wDACa,iBAAgB,aAAaxB,KAAKyB,MAAK,gBAAiBzB,KAAKC,SACxEyB,MAAO,0BAA0B1B,KAAKG,QAAQH,KAAKC,SAAW,WAAa,KAC3E0B,QAAS3B,KAAKY,uBAAuBgB,KAAK5B,OAE1CuB,EAAA,OAAAC,IAAA,2CACEE,MAAO,oCACL1B,KAAKI,gBAAkB,UAAY,kBACnCJ,KAAKC,SAAW,WAAa,kBAC7BD,KAAKE,MAAQ,QAAU,KACzB2B,SAAU7B,KAAKC,UAAY,EAAI,GAE9BD,KAAKI,iBAAmBmB,EAAA,OAAAC,IAAA,2CAAKE,MAAM,+BAErC1B,KAAKK,SACJkB,EAAA,OAAAC,IAAA,2CAAKE,MAAO,SAAS1B,KAAKG,OAAS,IAAM,UAAY,MAAMH,KAAKC,SAAW,WAAa,MACtFsB,EAAA,QAAAC,IAAA,8CAGJD,EAAA,SAAAC,IAAA,2CACEM,KAAK,QACLC,OAAM,KACNC,IAAKtB,GAAMV,KAAKe,aAAeL,EAC/BW,KAAMrB,KAAKqB,KACXI,MAAOzB,KAAKyB,MACZjB,QAASR,KAAKI,gBACdH,SAAUD,KAAKC,SACf0B,QAAUM,GAAMA,EAAEnB,oB","ignoreList":[]}