Files
2026-10-27 22:40:37 +07:00

36 lines
4.0 KiB
JavaScript

import{Cn as e,Pt as t,U as n,W as r,Zt as i,at as a,ct as o,f as s,jt as c,m as l,nt as u,ot as d,rt as f,st as p,xt as m,yn as h}from"./client-Be0b5AZU.js";import{t as g}from"./use-merged-state-DltLwRXB.js";import{c as _,l as v}from"./_plugin-vue_export-helper-C_Iw6R3j.js";import{n as y}from"./use-form-item-DRm_M51j.js";import{Q as b}from"./index-DpxjEbFc.js";function x(e){let{railColor:t}=e;return{itemColor:t,itemColorActive:`#FFCC33`,sizeSmall:`16px`,sizeMedium:`20px`,sizeLarge:`24px`}}var S={name:`Rate`,common:s,self:x},C=()=>t(`svg`,{viewBox:`0 0 512 512`},t(`path`,{d:`M394 480a16 16 0 01-9.39-3L256 383.76 127.39 477a16 16 0 01-24.55-18.08L153 310.35 23 221.2a16 16 0 019-29.2h160.38l48.4-148.95a16 16 0 0130.44 0l48.4 149H480a16 16 0 019.05 29.2L359 310.35l50.13 148.53A16 16 0 01394 480z`})),w=f(`rate`,{display:`inline-flex`,flexWrap:`nowrap`},[u(`&:hover`,[a(`item`,`
transition:
transform .1s var(--n-bezier),
color .3s var(--n-bezier);
`)]),a(`item`,`
position: relative;
display: flex;
transition:
transform .1s var(--n-bezier),
color .3s var(--n-bezier);
transform: scale(1);
font-size: var(--n-item-size);
color: var(--n-item-color);
`,[u(`&:not(:first-child)`,`
margin-left: 6px;
`),d(`active`,`
color: var(--n-item-color-active);
`)]),p(`readonly`,`
cursor: pointer;
`,[a(`item`,[u(`&:hover`,`
transform: scale(1.05);
`),u(`&:active`,`
transform: scale(0.96);
`)])]),a(`half`,`
display: flex;
transition: inherit;
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 50%;
overflow: hidden;
color: rgba(255, 255, 255, 0);
`,[d(`active`,`
color: var(--n-item-color-active);
`)])]),T=c({name:`Rate`,props:Object.assign(Object.assign({},l.props),{allowHalf:Boolean,count:{type:Number,default:5},value:Number,defaultValue:{type:Number,default:null},readonly:Boolean,size:[String,Number],clearable:Boolean,color:String,onClear:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),setup(t){let{mergedClsPrefixRef:i,inlineThemeDisabled:a,mergedComponentPropsRef:s}=r(t),c=l(`Rate`,`-rate`,w,S,t,i),u=e(t,`value`),d=h(t.defaultValue),f=h(null),p=y(t,{mergedSize(e){if(t.size!==void 0)return t.size;if(e)return e.mergedSize.value;let n=s?.value?.Rate?.size;return n===void 0?`medium`:n}}),b=g(u,d);function x(e){let{"onUpdate:value":n,onUpdateValue:r}=t,{nTriggerFormChange:i,nTriggerFormInput:a}=p;n&&_(n,e),r&&_(r,e),d.value=e,i(),a()}function C(e,n){return t.allowHalf?n.offsetX>=Math.floor(n.currentTarget.offsetWidth/2)?e+1:e+.5:e+1}let T=!1;function E(e,t){T||(f.value=C(e,t))}function D(){f.value=null}function O(e,n){var r;let{clearable:i}=t,a=C(e,n);i&&a===b.value?(T=!0,(r=t.onClear)==null||r.call(t),f.value=null,x(null)):x(a)}function k(){T=!1}let{mergedSizeRef:A}=p,j=m(()=>{let e=A.value,{self:t}=c.value;return typeof e==`number`?`${e}px`:t[o(`size`,e)]}),M=m(()=>{let{common:{cubicBezierEaseInOut:e},self:n}=c.value,{itemColor:r,itemColorActive:i}=n,{color:a}=t;return{"--n-bezier":e,"--n-item-color":r,"--n-item-color-active":a||i,"--n-item-size":j.value}}),N=a?n(`rate`,m(()=>{let e=j.value,{color:n}=t,r=``;return e&&(r+=e[0]),n&&(r+=v(n)),r}),M,t):void 0;return{mergedClsPrefix:i,mergedValue:b,hoverIndex:f,handleMouseMove:E,handleClick:O,handleMouseLeave:D,handleMouseEnterSomeStar:k,cssVars:a?void 0:M,themeClass:N?.themeClass,onRender:N?.onRender}},render(){let{readonly:e,hoverIndex:n,mergedValue:r,mergedClsPrefix:a,onRender:o,$slots:{default:s}}=this;return o?.(),t(`div`,{class:[`${a}-rate`,{[`${a}-rate--readonly`]:e},this.themeClass],style:this.cssVars,onMouseleave:this.handleMouseLeave},i(this.count,(i,o)=>{let c=s?s({index:o}):t(b,{clsPrefix:a},{default:C}),l=n===null?o+1<=(r||0):o+1<=n;return t(`div`,{key:o,class:[`${a}-rate__item`,l&&`${a}-rate__item--active`],onClick:e?void 0:e=>{this.handleClick(o,e)},onMouseenter:this.handleMouseEnterSomeStar,onMousemove:e?void 0:e=>{this.handleMouseMove(o,e)}},c,this.allowHalf?t(`div`,{class:[`${a}-rate__half`,{[`${a}-rate__half--active`]:!l&&n!==null?o+.5<=n:o+.5<=(r||0)}]},c):null)}))}});export{T as t};