@ionic/core
Version:
Base components for Ionic
4 lines • 5.42 kB
JavaScript
/*!
* (C) Ionic http://ionicframework.com - MIT License
*/
import{d as t,H as i,i as e,h as o,f as r,t as s}from"./p-Ct2aBEue.js";import{d as n}from"./p-B4IBdPVJ.js";import{c as a}from"./p-DJztqcrH.js";import{b as d}from"./p-HthJZjZ6.js";const l=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.ionChange=e(this,"ionChange",7),this.ionValueChange=e(this,"ionValueChange",7),this.inputId="ion-rg-"+h++,this.helperTextId=`${this.inputId}-helper-text`,this.errorTextId=`${this.inputId}-error-text`,this.labelId=`${this.inputId}-lbl`,this.isInvalid=!1,this.allowEmptySelection=!1,this.name=this.inputId,this.setRadioTabindex=t=>{const i=this.getRadios(),e=i.find((t=>!t.disabled)),o=i.find((i=>i.value===t&&!i.disabled));if(!e&&!o)return;const r=o||e;for(const t of i)t.setButtonTabindex(t===r?0:-1)},this.onClick=t=>{t.preventDefault();const i=t.target&&t.target.closest("ion-radio");if(i&&!i.disabled){const e=i.value;e!==this.value?(this.value=e,this.emitValueChange(t)):this.allowEmptySelection&&(this.value=void 0,this.emitValueChange(t))}}}valueChanged(t){this.setRadioTabindex(t),this.ionValueChange.emit({value:t})}componentDidLoad(){this.valueChanged(this.value)}async connectedCallback(){const t=this.el.querySelector("ion-list-header")||this.el.querySelector("ion-item-divider");if(t){const i=this.label=t.querySelector("ion-label");i&&(this.labelId=i.id=this.name+"-lbl")}"undefined"!=typeof MutationObserver&&(this.validationObserver=new MutationObserver((()=>{const t=a(this.el);this.isInvalid!==t&&(this.isInvalid=t,Promise.resolve().then((()=>{this.hintTextId=this.getHintTextId()})))})),this.validationObserver.observe(this.el,{attributes:!0,attributeFilter:["class"]})),this.isInvalid=a(this.el)}componentWillLoad(){this.hintTextId=this.getHintTextId()}disconnectedCallback(){this.validationObserver&&(this.validationObserver.disconnect(),this.validationObserver=void 0)}getRadios(){return Array.from(this.el.querySelectorAll("ion-radio"))}emitValueChange(t){const{value:i}=this;this.ionChange.emit({value:i,event:t})}onKeydown(t){const i=!!this.el.closest("ion-select-popover")||!!this.el.closest("ion-select-modal");if(t.target&&!this.el.contains(t.target))return;const e=this.getRadios().filter((t=>!t.disabled));if(t.target&&e.includes(t.target)){const o=e.findIndex((i=>i===t.target)),r=e[o];let s;if(["ArrowDown","ArrowRight"].includes(t.key)&&(s=o===e.length-1?e[0]:e[o+1]),["ArrowUp","ArrowLeft"].includes(t.key)&&(s=0===o?e[e.length-1]:e[o-1]),s&&e.includes(s)&&(s.setFocus(t),i||(this.value=s.value,this.emitValueChange(t))),[" "].includes(t.key)){const i=this.value;this.value=this.allowEmptySelection&&void 0!==this.value?void 0:r.value,(i!==this.value||this.allowEmptySelection)&&this.emitValueChange(t),t.preventDefault()}if("Enter"===t.key&&i&&!t.repeat){const i=this.value;this.value=r.value,i!==this.value&&this.emitValueChange(t),t.preventDefault()}}}async setFocus(){const t=this.getRadios().find((t=>-1!==t.tabIndex));t?.setFocus()}renderHintText(){const{helperText:t,errorText:i,helperTextId:e,errorTextId:r,isInvalid:s}=this;if(t||i)return o("div",{class:"radio-group-top"},o("div",{id:e,class:"helper-text","aria-live":"polite"},s?null:t),o("div",{id:r,class:"error-text",role:"alert"},s?i:null))}getHintTextId(){const{helperText:t,errorText:i,helperTextId:e,errorTextId:o,isInvalid:r}=this;return r&&i?o:t?e:void 0}render(){const{label:t,labelId:i,el:e,name:s,value:a}=this,l=d(this);return n(!0,e,s,a,!1),o(r,{key:"8d926a17e800adf0184274215c9689c96a8d6dfd",role:"radiogroup","aria-labelledby":t?i:null,"aria-describedby":this.hintTextId,"aria-invalid":this.isInvalid?"true":void 0,onClick:this.onClick,class:l},this.renderHintText(),o("slot",{key:"2ff891123d5971a581b70d0886d23a074358c2dc"}))}get el(){return this}static get watchers(){return{value:[{valueChanged:0}]}}static get style(){return{ios:"ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}",md:"ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}"}}},[292,"ion-radio-group",{allowEmptySelection:[4,"allow-empty-selection"],compareWith:[1,"compare-with"],name:[1],value:[1032],helperText:[1,"helper-text"],errorText:[1,"error-text"],isInvalid:[32],hintTextId:[32],setFocus:[64]},[[4,"keydown","onKeydown"]],{value:[{valueChanged:0}]}]);let h=0;function p(){"undefined"!=typeof customElements&&["ion-radio-group"].forEach((t=>{"ion-radio-group"===t&&(customElements.get(s(t))||customElements.define(s(t),l))}))}export{l as R,p as d}