77 lines
5.7 KiB
JavaScript
77 lines
5.7 KiB
JavaScript
import{A as M,bB as O,r as p,D as H,t as K,a3 as D,u as P,_,b as B,e as b,x as i,g as h,E as N,d as G,k as j,ec as L,j as $,ba as I,I as W,n as Y,h as v,be as q}from"./index-d09e121c.js";import{u as J}from"./Eye-9a6c6460.js";const Q={name:String,value:{type:[String,Number,Boolean],default:"on"},checked:{type:Boolean,default:void 0},defaultChecked:Boolean,disabled:{type:Boolean,default:void 0},label:String,size:String,onUpdateChecked:[Function,Array],"onUpdate:checked":[Function,Array],checkedValue:{type:Boolean,default:void 0}},X=M("n-radio-group");function Z(o){const e=O(o,{mergedSize(a){const{size:r}=o;if(r!==void 0)return r;if(n){const{mergedSizeRef:{value:c}}=n;if(c!==void 0)return c}return a?a.mergedSize.value:"medium"},mergedDisabled(a){return!!(o.disabled||n!=null&&n.disabledRef.value||a!=null&&a.disabled.value)}}),{mergedSizeRef:l,mergedDisabledRef:d}=e,s=p(null),x=p(null),n=H(X,null),u=p(o.defaultChecked),t=K(o,"checked"),g=J(t,u),m=D(()=>n?n.valueRef.value===o.value:g.value),k=D(()=>{const{name:a}=o;if(a!==void 0)return a;if(n)return n.nameRef.value}),f=p(!1);function R(){if(n){const{doUpdateValue:a}=n,{value:r}=o;_(a,r)}else{const{onUpdateChecked:a,"onUpdate:checked":r}=o,{nTriggerFormInput:c,nTriggerFormChange:y}=e;a&&_(a,!0),r&&_(r,!0),c(),y(),u.value=!0}}function C(){d.value||m.value||R()}function w(){C()}function S(){f.value=!1}function z(){f.value=!0}return{mergedClsPrefix:n?n.mergedClsPrefixRef:P(o).mergedClsPrefixRef,inputRef:s,labelRef:x,mergedName:k,mergedDisabled:d,uncontrolledChecked:u,renderSafeChecked:m,focus:f,mergedSize:l,handleRadioInputChange:w,handleRadioInputBlur:S,handleRadioInputFocus:z}}const ee=B("radio",`
|
||
line-height: var(--n-label-line-height);
|
||
outline: none;
|
||
position: relative;
|
||
user-select: none;
|
||
-webkit-user-select: none;
|
||
display: inline-flex;
|
||
align-items: flex-start;
|
||
flex-wrap: nowrap;
|
||
font-size: var(--n-font-size);
|
||
word-break: break-word;
|
||
`,[b("checked",[i("dot",`
|
||
background-color: var(--n-color-active);
|
||
`)]),i("dot-wrapper",`
|
||
position: relative;
|
||
flex-shrink: 0;
|
||
flex-grow: 0;
|
||
width: var(--n-radio-size);
|
||
`),B("radio-input",`
|
||
position: absolute;
|
||
border: 0;
|
||
border-radius: inherit;
|
||
left: 0;
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
opacity: 0;
|
||
z-index: 1;
|
||
cursor: pointer;
|
||
`),i("dot",`
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 0;
|
||
transform: translateY(-50%);
|
||
height: var(--n-radio-size);
|
||
width: var(--n-radio-size);
|
||
background: var(--n-color);
|
||
box-shadow: var(--n-box-shadow);
|
||
border-radius: 50%;
|
||
transition:
|
||
background-color .3s var(--n-bezier),
|
||
box-shadow .3s var(--n-bezier);
|
||
`,[h("&::before",`
|
||
content: "";
|
||
opacity: 0;
|
||
position: absolute;
|
||
left: 4px;
|
||
top: 4px;
|
||
height: calc(100% - 8px);
|
||
width: calc(100% - 8px);
|
||
border-radius: 50%;
|
||
transform: scale(.8);
|
||
background: var(--n-dot-color-active);
|
||
transition:
|
||
opacity .3s var(--n-bezier),
|
||
background-color .3s var(--n-bezier),
|
||
transform .3s var(--n-bezier);
|
||
`),b("checked",{boxShadow:"var(--n-box-shadow-active)"},[h("&::before",`
|
||
opacity: 1;
|
||
transform: scale(1);
|
||
`)])]),i("label",`
|
||
color: var(--n-text-color);
|
||
padding: var(--n-label-padding);
|
||
font-weight: var(--n-label-font-weight);
|
||
display: inline-block;
|
||
transition: color .3s var(--n-bezier);
|
||
`),N("disabled",`
|
||
cursor: pointer;
|
||
`,[h("&:hover",[i("dot",{boxShadow:"var(--n-box-shadow-hover)"})]),b("focus",[h("&:not(:active)",[i("dot",{boxShadow:"var(--n-box-shadow-focus)"})])])]),b("disabled",`
|
||
cursor: not-allowed;
|
||
`,[i("dot",{boxShadow:"var(--n-box-shadow-disabled)",backgroundColor:"var(--n-color-disabled)"},[h("&::before",{backgroundColor:"var(--n-dot-color-disabled)"}),b("checked",`
|
||
opacity: 1;
|
||
`)]),i("label",{color:"var(--n-text-color-disabled)"}),B("radio-input",`
|
||
cursor: not-allowed;
|
||
`)])]),oe=Object.assign(Object.assign({},j.props),Q),re=G({name:"Radio",props:oe,setup(o){const e=Z(o),l=j("Radio","-radio",ee,L,o,e.mergedClsPrefix),d=$(()=>{const{mergedSize:{value:g}}=e,{common:{cubicBezierEaseInOut:m},self:{boxShadow:k,boxShadowActive:f,boxShadowDisabled:R,boxShadowFocus:C,boxShadowHover:w,color:S,colorDisabled:z,colorActive:a,textColor:r,textColorDisabled:c,dotColorActive:y,dotColorDisabled:A,labelPadding:F,labelLineHeight:U,labelFontWeight:E,[I("fontSize",g)]:T,[I("radioSize",g)]:V}}=l.value;return{"--n-bezier":m,"--n-label-line-height":U,"--n-label-font-weight":E,"--n-box-shadow":k,"--n-box-shadow-active":f,"--n-box-shadow-disabled":R,"--n-box-shadow-focus":C,"--n-box-shadow-hover":w,"--n-color":S,"--n-color-active":a,"--n-color-disabled":z,"--n-dot-color-active":y,"--n-dot-color-disabled":A,"--n-font-size":T,"--n-radio-size":V,"--n-text-color":r,"--n-text-color-disabled":c,"--n-label-padding":F}}),{inlineThemeDisabled:s,mergedClsPrefixRef:x,mergedRtlRef:n}=P(o),u=W("Radio",n,x),t=s?Y("radio",$(()=>e.mergedSize.value[0]),d,o):void 0;return Object.assign(e,{rtlEnabled:u,cssVars:s?void 0:d,themeClass:t==null?void 0:t.themeClass,onRender:t==null?void 0:t.onRender})},render(){const{$slots:o,mergedClsPrefix:e,onRender:l,label:d}=this;return l==null||l(),v("label",{class:[`${e}-radio`,this.themeClass,{[`${e}-radio--rtl`]:this.rtlEnabled,[`${e}-radio--disabled`]:this.mergedDisabled,[`${e}-radio--checked`]:this.renderSafeChecked,[`${e}-radio--focus`]:this.focus}],style:this.cssVars},v("input",{ref:"inputRef",type:"radio",class:`${e}-radio-input`,value:this.value,name:this.mergedName,checked:this.renderSafeChecked,disabled:this.mergedDisabled,onChange:this.handleRadioInputChange,onFocus:this.handleRadioInputFocus,onBlur:this.handleRadioInputBlur}),v("div",{class:`${e}-radio__dot-wrapper`}," ",v("div",{class:[`${e}-radio__dot`,this.renderSafeChecked&&`${e}-radio__dot--checked`]})),q(o.default,s=>!s&&!d?null:v("div",{ref:"labelRef",class:`${e}-radio__label`},s||d)))}});export{re as _,X as r};
|
||
//# sourceMappingURL=Radio-98617d26.js.map
|